{"version":3,"file":"OrderByRow.cjs","sources":["../../../../src/components/visual-query-builder/OrderByRow.tsx"],"sourcesContent":["import { uniqueId } from 'lodash';\nimport { useCallback } from 'react';\nimport * as React from 'react';\n\nimport { type SelectableValue, toOption } from '@grafana/data';\nimport { t } from '@grafana/i18n';\nimport { EditorField, InputGroup } from '@grafana/plugin-ui';\nimport { Input, RadioButtonGroup, Select, Space } from '@grafana/ui';\n\nimport { type SQLExpression } from '../../types';\nimport { setPropertyField } from '../../utils/sql.utils';\n\ntype OrderByRowProps = {\n  sql: SQLExpression;\n  onSqlChange: (sql: SQLExpression) => void;\n  columns?: Array<SelectableValue<string>>;\n  showOffset?: boolean;\n};\n\nconst sortOrderOptions = [\n  { description: 'Sort by ascending', value: 'ASC', icon: 'sort-amount-up' } as const,\n  { description: 'Sort by descending', value: 'DESC', icon: 'sort-amount-down' } as const,\n];\n\nexport function OrderByRow({ sql, onSqlChange, columns, showOffset }: OrderByRowProps) {\n  const onSortOrderChange = useCallback(\n    (item: 'ASC' | 'DESC') => {\n      const newSql: SQLExpression = { ...sql, orderByDirection: item };\n      onSqlChange(newSql);\n    },\n    [onSqlChange, sql]\n  );\n\n  const onLimitChange = useCallback(\n    (event: React.FormEvent<HTMLInputElement>) => {\n      const newSql: SQLExpression = { ...sql, limit: Number.parseInt(event.currentTarget.value, 10) };\n      onSqlChange(newSql);\n    },\n    [onSqlChange, sql]\n  );\n\n  const onOffsetChange = useCallback(\n    (event: React.FormEvent<HTMLInputElement>) => {\n      const newSql: SQLExpression = { ...sql, offset: Number.parseInt(event.currentTarget.value, 10) };\n      onSqlChange(newSql);\n    },\n    [onSqlChange, sql]\n  );\n\n  const onOrderByChange = useCallback(\n    (item: SelectableValue<string>) => {\n      const newSql: SQLExpression = { ...sql, orderBy: setPropertyField(item?.value) };\n      if (item === null) {\n        newSql.orderByDirection = undefined;\n      }\n      onSqlChange(newSql);\n    },\n    [onSqlChange, sql]\n  );\n\n  return (\n    <>\n      <EditorField label={t('grafana-sql.components.order-by-row.label-order-by', 'Order by')} width={25}>\n        <InputGroup>\n          <Select\n            aria-label={t('grafana-sql.components.order-by-row.aria-label-order-by', 'Order by')}\n            options={columns}\n            value={sql.orderBy?.property.name ? toOption(sql.orderBy.property.name) : null}\n            isClearable\n            menuShouldPortal\n            onChange={onOrderByChange}\n          />\n\n          <Space h={1.5} />\n\n          <RadioButtonGroup\n            options={sortOrderOptions}\n            disabled={!sql?.orderBy?.property.name}\n            value={sql.orderByDirection}\n            onChange={onSortOrderChange}\n          />\n        </InputGroup>\n      </EditorField>\n      <EditorField label={t('grafana-sql.components.order-by-row.label-limit', 'Limit')} optional width={25}>\n        <Input type=\"number\" min={0} id={uniqueId('limit-')} value={sql.limit || ''} onChange={onLimitChange} />\n      </EditorField>\n      {showOffset && (\n        <EditorField label={t('grafana-sql.components.order-by-row.label-offset', 'Offset')} optional width={25}>\n          <Input type=\"number\" id={uniqueId('offset-')} value={sql.offset || ''} onChange={onOffsetChange} />\n        </EditorField>\n      )}\n    </>\n  );\n}\n"],"names":["useCallback","setPropertyField","jsxs","Fragment","jsx","EditorField","t","InputGroup","Select","toOption","Space","RadioButtonGroup","Input","uniqueId"],"mappings":"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"}