@grafana/sql 13.0.0-23742865281 → 13.0.0-23743013136

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/dist/cjs/ResponseParser.cjs.map +1 -1
  2. package/dist/cjs/SQLVariableEditor.cjs.map +1 -1
  3. package/dist/cjs/SQLVariableSupport.cjs.map +1 -1
  4. package/dist/cjs/SQLVariableUtils.cjs.map +1 -1
  5. package/dist/cjs/components/ConfirmModal.cjs.map +1 -1
  6. package/dist/cjs/components/DatasetSelector.cjs.map +1 -1
  7. package/dist/cjs/components/QueryEditor.cjs.map +1 -1
  8. package/dist/cjs/components/QueryEditorLazy.cjs.map +1 -1
  9. package/dist/cjs/components/QueryHeader.cjs.map +1 -1
  10. package/dist/cjs/components/TableSelector.cjs.map +1 -1
  11. package/dist/cjs/components/configuration/ConnectionLimits.cjs.map +1 -1
  12. package/dist/cjs/components/configuration/Divider.cjs.map +1 -1
  13. package/dist/cjs/components/configuration/MaxLifetimeField.cjs.map +1 -1
  14. package/dist/cjs/components/configuration/MaxOpenConnectionsField.cjs.map +1 -1
  15. package/dist/cjs/components/configuration/TLSSecretsConfig.cjs.map +1 -1
  16. package/dist/cjs/components/configuration/useMigrateDatabaseFields.cjs.map +1 -1
  17. package/dist/cjs/components/query-editor-raw/QueryEditorRaw.cjs.map +1 -1
  18. package/dist/cjs/components/query-editor-raw/QueryToolbox.cjs.map +1 -1
  19. package/dist/cjs/components/query-editor-raw/QueryValidator.cjs.map +1 -1
  20. package/dist/cjs/components/query-editor-raw/RawEditor.cjs.map +1 -1
  21. package/dist/cjs/components/visual-query-builder/AwesomeQueryBuilder.cjs +2 -2
  22. package/dist/cjs/components/visual-query-builder/AwesomeQueryBuilder.cjs.map +1 -1
  23. package/dist/cjs/components/visual-query-builder/GroupByRow.cjs.map +1 -1
  24. package/dist/cjs/components/visual-query-builder/OrderByRow.cjs.map +1 -1
  25. package/dist/cjs/components/visual-query-builder/Preview.cjs.map +1 -1
  26. package/dist/cjs/components/visual-query-builder/SQLGroupByRow.cjs.map +1 -1
  27. package/dist/cjs/components/visual-query-builder/SQLOrderByRow.cjs.map +1 -1
  28. package/dist/cjs/components/visual-query-builder/SQLWhereRow.cjs.map +1 -1
  29. package/dist/cjs/components/visual-query-builder/SelectColumn.cjs.map +1 -1
  30. package/dist/cjs/components/visual-query-builder/SelectCustomFunctionParameters.cjs.map +1 -1
  31. package/dist/cjs/components/visual-query-builder/SelectFunctionParameters.cjs.map +1 -1
  32. package/dist/cjs/components/visual-query-builder/SelectRow.cjs.map +1 -1
  33. package/dist/cjs/components/visual-query-builder/VisualEditor.cjs.map +1 -1
  34. package/dist/cjs/components/visual-query-builder/WhereRow.cjs.map +1 -1
  35. package/dist/cjs/constants.cjs.map +1 -1
  36. package/dist/cjs/datasource/SqlDatasource.cjs.map +1 -1
  37. package/dist/cjs/defaults.cjs.map +1 -1
  38. package/dist/cjs/loadResources.cjs.map +1 -1
  39. package/dist/cjs/types.cjs.map +1 -1
  40. package/dist/cjs/utils/getColumnsWithIndices.cjs.map +1 -1
  41. package/dist/cjs/utils/logging.cjs.map +1 -1
  42. package/dist/cjs/utils/migration.cjs.map +1 -1
  43. package/dist/cjs/utils/sql.utils.cjs.map +1 -1
  44. package/dist/cjs/utils/testHelpers.cjs.map +1 -1
  45. package/dist/cjs/utils/useSqlChange.cjs.map +1 -1
  46. package/dist/esm/ResponseParser.mjs.map +1 -1
  47. package/dist/esm/SQLVariableEditor.mjs.map +1 -1
  48. package/dist/esm/SQLVariableSupport.mjs.map +1 -1
  49. package/dist/esm/SQLVariableUtils.mjs.map +1 -1
  50. package/dist/esm/components/ConfirmModal.mjs.map +1 -1
  51. package/dist/esm/components/DatasetSelector.mjs.map +1 -1
  52. package/dist/esm/components/QueryEditor.mjs.map +1 -1
  53. package/dist/esm/components/QueryEditorLazy.mjs.map +1 -1
  54. package/dist/esm/components/QueryHeader.mjs.map +1 -1
  55. package/dist/esm/components/TableSelector.mjs.map +1 -1
  56. package/dist/esm/components/configuration/ConnectionLimits.mjs.map +1 -1
  57. package/dist/esm/components/configuration/Divider.mjs.map +1 -1
  58. package/dist/esm/components/configuration/MaxLifetimeField.mjs.map +1 -1
  59. package/dist/esm/components/configuration/MaxOpenConnectionsField.mjs.map +1 -1
  60. package/dist/esm/components/configuration/TLSSecretsConfig.mjs.map +1 -1
  61. package/dist/esm/components/configuration/useMigrateDatabaseFields.mjs.map +1 -1
  62. package/dist/esm/components/query-editor-raw/QueryEditorRaw.mjs.map +1 -1
  63. package/dist/esm/components/query-editor-raw/QueryToolbox.mjs.map +1 -1
  64. package/dist/esm/components/query-editor-raw/QueryValidator.mjs.map +1 -1
  65. package/dist/esm/components/query-editor-raw/RawEditor.mjs.map +1 -1
  66. package/dist/esm/components/visual-query-builder/AwesomeQueryBuilder.mjs +2 -2
  67. package/dist/esm/components/visual-query-builder/AwesomeQueryBuilder.mjs.map +1 -1
  68. package/dist/esm/components/visual-query-builder/GroupByRow.mjs.map +1 -1
  69. package/dist/esm/components/visual-query-builder/OrderByRow.mjs.map +1 -1
  70. package/dist/esm/components/visual-query-builder/Preview.mjs.map +1 -1
  71. package/dist/esm/components/visual-query-builder/SQLGroupByRow.mjs.map +1 -1
  72. package/dist/esm/components/visual-query-builder/SQLOrderByRow.mjs.map +1 -1
  73. package/dist/esm/components/visual-query-builder/SQLWhereRow.mjs.map +1 -1
  74. package/dist/esm/components/visual-query-builder/SelectColumn.mjs.map +1 -1
  75. package/dist/esm/components/visual-query-builder/SelectCustomFunctionParameters.mjs.map +1 -1
  76. package/dist/esm/components/visual-query-builder/SelectFunctionParameters.mjs.map +1 -1
  77. package/dist/esm/components/visual-query-builder/SelectRow.mjs.map +1 -1
  78. package/dist/esm/components/visual-query-builder/VisualEditor.mjs.map +1 -1
  79. package/dist/esm/components/visual-query-builder/WhereRow.mjs.map +1 -1
  80. package/dist/esm/constants.mjs.map +1 -1
  81. package/dist/esm/datasource/SqlDatasource.mjs.map +1 -1
  82. package/dist/esm/defaults.mjs.map +1 -1
  83. package/dist/esm/loadResources.mjs.map +1 -1
  84. package/dist/esm/types.mjs.map +1 -1
  85. package/dist/esm/utils/getColumnsWithIndices.mjs.map +1 -1
  86. package/dist/esm/utils/logging.mjs.map +1 -1
  87. package/dist/esm/utils/migration.mjs.map +1 -1
  88. package/dist/esm/utils/sql.utils.mjs.map +1 -1
  89. package/dist/esm/utils/testHelpers.mjs.map +1 -1
  90. package/dist/esm/utils/useSqlChange.mjs.map +1 -1
  91. package/dist/types/ResponseParser.d.ts +1 -1
  92. package/dist/types/SQLVariableEditor.d.ts +2 -2
  93. package/dist/types/SQLVariableSupport.d.ts +3 -3
  94. package/dist/types/SQLVariableUtils.d.ts +1 -1
  95. package/dist/types/components/DatasetSelector.d.ts +2 -2
  96. package/dist/types/components/ErrorBoundary.d.ts +1 -1
  97. package/dist/types/components/QueryEditor.d.ts +4 -4
  98. package/dist/types/components/QueryHeader.d.ts +2 -2
  99. package/dist/types/components/SqlComponents.testHelpers.d.ts +3 -3
  100. package/dist/types/components/TableSelector.d.ts +2 -2
  101. package/dist/types/components/configuration/ConnectionLimits.d.ts +2 -2
  102. package/dist/types/components/configuration/MaxLifetimeField.d.ts +1 -1
  103. package/dist/types/components/configuration/MaxOpenConnectionsField.d.ts +1 -1
  104. package/dist/types/components/configuration/TLSSecretsConfig.d.ts +1 -1
  105. package/dist/types/components/configuration/useMigrateDatabaseFields.d.ts +2 -2
  106. package/dist/types/components/query-editor-raw/QueryEditorRaw.d.ts +2 -2
  107. package/dist/types/components/query-editor-raw/QueryToolbox.d.ts +1 -1
  108. package/dist/types/components/query-editor-raw/QueryValidator.d.ts +2 -2
  109. package/dist/types/components/query-editor-raw/RawEditor.d.ts +1 -1
  110. package/dist/types/components/visual-query-builder/AwesomeQueryBuilder.d.ts +1 -1
  111. package/dist/types/components/visual-query-builder/GroupByRow.d.ts +2 -2
  112. package/dist/types/components/visual-query-builder/OrderByRow.d.ts +2 -2
  113. package/dist/types/components/visual-query-builder/SQLGroupByRow.d.ts +3 -3
  114. package/dist/types/components/visual-query-builder/SQLOrderByRow.d.ts +3 -3
  115. package/dist/types/components/visual-query-builder/SQLWhereRow.d.ts +3 -3
  116. package/dist/types/components/visual-query-builder/SelectColumn.d.ts +1 -1
  117. package/dist/types/components/visual-query-builder/SelectCustomFunctionParameters.d.ts +2 -2
  118. package/dist/types/components/visual-query-builder/SelectFunctionParameters.d.ts +2 -2
  119. package/dist/types/components/visual-query-builder/SelectRow.d.ts +2 -2
  120. package/dist/types/components/visual-query-builder/VisualEditor.d.ts +1 -1
  121. package/dist/types/components/visual-query-builder/WhereRow.d.ts +2 -2
  122. package/dist/types/constants.d.ts +1 -1
  123. package/dist/types/datasource/SqlDatasource.d.ts +4 -4
  124. package/dist/types/defaults.d.ts +1 -1
  125. package/dist/types/loadResources.d.ts +1 -1
  126. package/dist/types/types.d.ts +4 -4
  127. package/dist/types/utils/getColumnsWithIndices.d.ts +2 -2
  128. package/dist/types/utils/logging.d.ts +1 -1
  129. package/dist/types/utils/migration.d.ts +2 -2
  130. package/dist/types/utils/sql.utils.d.ts +3 -3
  131. package/dist/types/utils/testHelpers.d.ts +1 -1
  132. package/dist/types/utils/useSqlChange.d.ts +1 -1
  133. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"QueryValidator.cjs","sources":["../../../../src/components/query-editor-raw/QueryValidator.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { useState, useMemo, useEffect } from 'react';\nimport { useAsyncFn, useDebounce } from 'react-use';\n\nimport { formattedValueToString, getValueFormat, TimeRange } from '@grafana/data';\nimport { Trans } from '@grafana/i18n';\nimport { Icon, Spinner, useTheme2 } from '@grafana/ui';\n\nimport { DB, SQLQuery, ValidationResults } from '../../types';\n\nexport interface QueryValidatorProps {\n db: DB;\n query: SQLQuery;\n range?: TimeRange;\n onValidate: (isValid: boolean) => void;\n}\n\nexport function QueryValidator({ db, query, onValidate, range }: QueryValidatorProps) {\n const [validationResult, setValidationResult] = useState<ValidationResults | null>();\n const theme = useTheme2();\n const valueFormatter = useMemo(() => getValueFormat('bytes'), []);\n\n const styles = useMemo(() => {\n return {\n error: css({\n color: theme.colors.error.text,\n fontSize: theme.typography.bodySmall.fontSize,\n fontFamily: theme.typography.fontFamilyMonospace,\n }),\n valid: css({\n color: theme.colors.success.text,\n }),\n info: css({\n color: theme.colors.text.secondary,\n }),\n };\n }, [theme]);\n\n const [state, validateQuery] = useAsyncFn(\n async (q: SQLQuery) => {\n if (q.rawSql?.trim() === '') {\n return null;\n }\n\n return await db.validateQuery(q, range);\n },\n [db]\n );\n\n const [,] = useDebounce(\n async () => {\n const result = await validateQuery(query);\n if (result) {\n setValidationResult(result);\n }\n\n return null;\n },\n 1000,\n [query, validateQuery]\n );\n\n useEffect(() => {\n if (validationResult?.isError) {\n onValidate(false);\n }\n if (validationResult?.isValid) {\n onValidate(true);\n }\n }, [validationResult, onValidate]);\n\n if (!state.value && !state.loading) {\n return null;\n }\n\n const error = state.value?.error ? processErrorMessage(state.value.error) : '';\n\n return (\n <>\n {state.loading && (\n <div className={styles.info}>\n <Spinner inline={true} size=\"xs\" />{' '}\n <Trans i18nKey=\"grafana-sql.components.query-validator.validating-query\">Validating query...</Trans>\n </div>\n )}\n {!state.loading && state.value && (\n <>\n <>\n {state.value.isValid && state.value.statistics && (\n <div className={styles.valid}>\n <Trans\n i18nKey=\"grafana-sql.components.query-validator.query-will-process\"\n values={{ bytes: formattedValueToString(valueFormatter(state.value.statistics.TotalBytesProcessed)) }}\n >\n <Icon name=\"check\" /> This query will process <strong>{'{{bytes}}'}</strong> when run.\n </Trans>\n </div>\n )}\n </>\n\n <>{state.value.isError && <div className={styles.error}>{error}</div>}</>\n </>\n )}\n </>\n );\n}\n\nfunction processErrorMessage(error: string) {\n const splat = error.split(':');\n if (splat.length > 2) {\n return splat.slice(2).join(':');\n }\n return error;\n}\n"],"names":["useState","useTheme2","useMemo","getValueFormat","css","useAsyncFn","_a","useDebounce","useEffect","jsxs","Fragment","jsx","Spinner","Trans","formattedValueToString","Icon"],"mappings":"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"}
1
+ {"version":3,"file":"QueryValidator.cjs","sources":["../../../../src/components/query-editor-raw/QueryValidator.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { useState, useMemo, useEffect } from 'react';\nimport { useAsyncFn, useDebounce } from 'react-use';\n\nimport { formattedValueToString, getValueFormat, type TimeRange } from '@grafana/data';\nimport { Trans } from '@grafana/i18n';\nimport { Icon, Spinner, useTheme2 } from '@grafana/ui';\n\nimport { type DB, type SQLQuery, type ValidationResults } from '../../types';\n\nexport interface QueryValidatorProps {\n db: DB;\n query: SQLQuery;\n range?: TimeRange;\n onValidate: (isValid: boolean) => void;\n}\n\nexport function QueryValidator({ db, query, onValidate, range }: QueryValidatorProps) {\n const [validationResult, setValidationResult] = useState<ValidationResults | null>();\n const theme = useTheme2();\n const valueFormatter = useMemo(() => getValueFormat('bytes'), []);\n\n const styles = useMemo(() => {\n return {\n error: css({\n color: theme.colors.error.text,\n fontSize: theme.typography.bodySmall.fontSize,\n fontFamily: theme.typography.fontFamilyMonospace,\n }),\n valid: css({\n color: theme.colors.success.text,\n }),\n info: css({\n color: theme.colors.text.secondary,\n }),\n };\n }, [theme]);\n\n const [state, validateQuery] = useAsyncFn(\n async (q: SQLQuery) => {\n if (q.rawSql?.trim() === '') {\n return null;\n }\n\n return await db.validateQuery(q, range);\n },\n [db]\n );\n\n const [,] = useDebounce(\n async () => {\n const result = await validateQuery(query);\n if (result) {\n setValidationResult(result);\n }\n\n return null;\n },\n 1000,\n [query, validateQuery]\n );\n\n useEffect(() => {\n if (validationResult?.isError) {\n onValidate(false);\n }\n if (validationResult?.isValid) {\n onValidate(true);\n }\n }, [validationResult, onValidate]);\n\n if (!state.value && !state.loading) {\n return null;\n }\n\n const error = state.value?.error ? processErrorMessage(state.value.error) : '';\n\n return (\n <>\n {state.loading && (\n <div className={styles.info}>\n <Spinner inline={true} size=\"xs\" />{' '}\n <Trans i18nKey=\"grafana-sql.components.query-validator.validating-query\">Validating query...</Trans>\n </div>\n )}\n {!state.loading && state.value && (\n <>\n <>\n {state.value.isValid && state.value.statistics && (\n <div className={styles.valid}>\n <Trans\n i18nKey=\"grafana-sql.components.query-validator.query-will-process\"\n values={{ bytes: formattedValueToString(valueFormatter(state.value.statistics.TotalBytesProcessed)) }}\n >\n <Icon name=\"check\" /> This query will process <strong>{'{{bytes}}'}</strong> when run.\n </Trans>\n </div>\n )}\n </>\n\n <>{state.value.isError && <div className={styles.error}>{error}</div>}</>\n </>\n )}\n </>\n );\n}\n\nfunction processErrorMessage(error: string) {\n const splat = error.split(':');\n if (splat.length > 2) {\n return splat.slice(2).join(':');\n }\n return error;\n}\n"],"names":["useState","useTheme2","useMemo","getValueFormat","css","useAsyncFn","_a","useDebounce","useEffect","jsxs","Fragment","jsx","Spinner","Trans","formattedValueToString","Icon"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"RawEditor.cjs","sources":["../../../../src/components/query-editor-raw/RawEditor.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { useMemo, useState } from 'react';\nimport { useMeasure } from 'react-use';\nimport AutoSizer from 'react-virtualized-auto-sizer';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { Trans, t } from '@grafana/i18n';\nimport { reportInteraction } from '@grafana/runtime';\nimport { Modal, useStyles2, useTheme2 } from '@grafana/ui';\n\nimport { SQLQuery, QueryEditorProps } from '../../types';\n\nimport { QueryEditorRaw } from './QueryEditorRaw';\nimport { QueryToolbox } from './QueryToolbox';\n\ninterface RawEditorProps extends Omit<QueryEditorProps, 'onChange'> {\n onRunQuery: () => void;\n onChange: (q: SQLQuery, processQuery: boolean) => void;\n onValidate: (isValid: boolean) => void;\n queryToValidate: SQLQuery;\n}\n\nexport function RawEditor({ db, query, onChange, onRunQuery, onValidate, queryToValidate, range }: RawEditorProps) {\n const theme = useTheme2();\n const styles = useStyles2(getStyles);\n const [isExpanded, setIsExpanded] = useState(false);\n const [toolboxRef, toolboxMeasure] = useMeasure<HTMLDivElement>();\n const [editorRef, editorMeasure] = useMeasure<HTMLDivElement>();\n\n const editorLanguageDefinition = useMemo(() => db.getEditorLanguageDefinition(), [db]);\n\n const renderQueryEditor = (width?: number, height?: number) => {\n return (\n <QueryEditorRaw\n editorLanguageDefinition={editorLanguageDefinition}\n query={query}\n width={width}\n height={height ? height - toolboxMeasure.height : undefined}\n onChange={onChange}\n >\n {({ formatQuery }) => {\n return (\n <div ref={toolboxRef}>\n <QueryToolbox\n db={db}\n query={queryToValidate}\n onValidate={onValidate}\n onFormatCode={formatQuery}\n showTools\n range={range}\n onExpand={setIsExpanded}\n isExpanded={isExpanded}\n />\n </div>\n );\n }}\n </QueryEditorRaw>\n );\n };\n\n const renderEditor = (standalone = false) => {\n return standalone ? (\n <AutoSizer>\n {({ width, height }) => {\n return renderQueryEditor(width, height);\n }}\n </AutoSizer>\n ) : (\n <div ref={editorRef}>{renderQueryEditor()}</div>\n );\n };\n\n const renderPlaceholder = () => {\n return (\n <div\n style={{\n width: editorMeasure.width,\n height: editorMeasure.height,\n background: theme.colors.background.primary,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <Trans i18nKey=\"grafana-sql.components.raw-editor.render-placeholder.editing-in-expanded-code-editor\">\n Editing in expanded code editor\n </Trans>\n </div>\n );\n };\n\n return (\n <>\n {isExpanded ? renderPlaceholder() : renderEditor()}\n {isExpanded && (\n <Modal\n title={t('grafana-sql.components.raw-editor.title-query-num', 'Query {{queryNum}}', {\n queryNum: query.refId,\n })}\n closeOnBackdropClick={false}\n closeOnEscape={false}\n className={styles.modal}\n contentClassName={styles.modalContent}\n isOpen={isExpanded}\n onDismiss={() => {\n reportInteraction('grafana_sql_editor_expand', {\n datasource: query.datasource?.type,\n expanded: false,\n });\n setIsExpanded(false);\n }}\n >\n {renderEditor(true)}\n </Modal>\n )}\n </>\n );\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n modal: css({\n width: '95vw',\n height: '95vh',\n }),\n modalContent: css({\n height: '100%',\n paddingTop: 0,\n }),\n };\n}\n"],"names":["useTheme2","useStyles2","useState","useMeasure","useMemo","jsx","QueryEditorRaw","QueryToolbox","AutoSizer","Trans","jsxs","Fragment","Modal","t","reportInteraction","css"],"mappings":"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"}
1
+ {"version":3,"file":"RawEditor.cjs","sources":["../../../../src/components/query-editor-raw/RawEditor.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { useMemo, useState } from 'react';\nimport { useMeasure } from 'react-use';\nimport AutoSizer from 'react-virtualized-auto-sizer';\n\nimport { type GrafanaTheme2 } from '@grafana/data';\nimport { Trans, t } from '@grafana/i18n';\nimport { reportInteraction } from '@grafana/runtime';\nimport { Modal, useStyles2, useTheme2 } from '@grafana/ui';\n\nimport { type SQLQuery, type QueryEditorProps } from '../../types';\n\nimport { QueryEditorRaw } from './QueryEditorRaw';\nimport { QueryToolbox } from './QueryToolbox';\n\ninterface RawEditorProps extends Omit<QueryEditorProps, 'onChange'> {\n onRunQuery: () => void;\n onChange: (q: SQLQuery, processQuery: boolean) => void;\n onValidate: (isValid: boolean) => void;\n queryToValidate: SQLQuery;\n}\n\nexport function RawEditor({ db, query, onChange, onRunQuery, onValidate, queryToValidate, range }: RawEditorProps) {\n const theme = useTheme2();\n const styles = useStyles2(getStyles);\n const [isExpanded, setIsExpanded] = useState(false);\n const [toolboxRef, toolboxMeasure] = useMeasure<HTMLDivElement>();\n const [editorRef, editorMeasure] = useMeasure<HTMLDivElement>();\n\n const editorLanguageDefinition = useMemo(() => db.getEditorLanguageDefinition(), [db]);\n\n const renderQueryEditor = (width?: number, height?: number) => {\n return (\n <QueryEditorRaw\n editorLanguageDefinition={editorLanguageDefinition}\n query={query}\n width={width}\n height={height ? height - toolboxMeasure.height : undefined}\n onChange={onChange}\n >\n {({ formatQuery }) => {\n return (\n <div ref={toolboxRef}>\n <QueryToolbox\n db={db}\n query={queryToValidate}\n onValidate={onValidate}\n onFormatCode={formatQuery}\n showTools\n range={range}\n onExpand={setIsExpanded}\n isExpanded={isExpanded}\n />\n </div>\n );\n }}\n </QueryEditorRaw>\n );\n };\n\n const renderEditor = (standalone = false) => {\n return standalone ? (\n <AutoSizer>\n {({ width, height }) => {\n return renderQueryEditor(width, height);\n }}\n </AutoSizer>\n ) : (\n <div ref={editorRef}>{renderQueryEditor()}</div>\n );\n };\n\n const renderPlaceholder = () => {\n return (\n <div\n style={{\n width: editorMeasure.width,\n height: editorMeasure.height,\n background: theme.colors.background.primary,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <Trans i18nKey=\"grafana-sql.components.raw-editor.render-placeholder.editing-in-expanded-code-editor\">\n Editing in expanded code editor\n </Trans>\n </div>\n );\n };\n\n return (\n <>\n {isExpanded ? renderPlaceholder() : renderEditor()}\n {isExpanded && (\n <Modal\n title={t('grafana-sql.components.raw-editor.title-query-num', 'Query {{queryNum}}', {\n queryNum: query.refId,\n })}\n closeOnBackdropClick={false}\n closeOnEscape={false}\n className={styles.modal}\n contentClassName={styles.modalContent}\n isOpen={isExpanded}\n onDismiss={() => {\n reportInteraction('grafana_sql_editor_expand', {\n datasource: query.datasource?.type,\n expanded: false,\n });\n setIsExpanded(false);\n }}\n >\n {renderEditor(true)}\n </Modal>\n )}\n </>\n );\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n modal: css({\n width: '95vw',\n height: '95vh',\n }),\n modalContent: css({\n height: '100%',\n paddingTop: 0,\n }),\n };\n}\n"],"names":["useTheme2","useStyles2","useState","useMeasure","useMemo","jsx","QueryEditorRaw","QueryToolbox","AutoSizer","Trans","jsxs","Fragment","Modal","t","reportInteraction","css"],"mappings":";;;;;;;;;;;;;;;;;;;;AAsBO,SAAS,SAAA,CAAU,EAAE,EAAA,EAAI,KAAA,EAAO,UAAU,UAAA,EAAY,UAAA,EAAY,eAAA,EAAiB,KAAA,EAAM,EAAmB;AACjH,EAAA,MAAM,QAAQA,YAAA,EAAU;AACxB,EAAA,MAAM,MAAA,GAASC,cAAW,SAAS,CAAA;AACnC,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIC,eAAS,KAAK,CAAA;AAClD,EAAA,MAAM,CAAC,UAAA,EAAY,cAAc,CAAA,GAAIC,mBAAA,EAA2B;AAChE,EAAA,MAAM,CAAC,SAAA,EAAW,aAAa,CAAA,GAAIA,mBAAA,EAA2B;AAE9D,EAAA,MAAM,wBAAA,GAA2BC,cAAQ,MAAM,EAAA,CAAG,6BAA4B,EAAG,CAAC,EAAE,CAAC,CAAA;AAErF,EAAA,MAAM,iBAAA,GAAoB,CAAC,KAAA,EAAgB,MAAA,KAAoB;AAC7D,IAAA,uBACEC,cAAA;AAAA,MAACC,6BAAA;AAAA,MAAA;AAAA,QACC,wBAAA;AAAA,QACA,KAAA;AAAA,QACA,KAAA;AAAA,QACA,MAAA,EAAQ,MAAA,GAAS,MAAA,GAAS,cAAA,CAAe,MAAA,GAAS,KAAA,CAAA;AAAA,QAClD,QAAA;AAAA,QAEC,QAAA,EAAA,CAAC,EAAE,WAAA,EAAY,KAAM;AACpB,UAAA,uBACED,cAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,UAAA,EACR,QAAA,kBAAAA,cAAA;AAAA,YAACE,yBAAA;AAAA,YAAA;AAAA,cACC,EAAA;AAAA,cACA,KAAA,EAAO,eAAA;AAAA,cACP,UAAA;AAAA,cACA,YAAA,EAAc,WAAA;AAAA,cACd,SAAA,EAAS,IAAA;AAAA,cACT,KAAA;AAAA,cACA,QAAA,EAAU,aAAA;AAAA,cACV;AAAA;AAAA,WACF,EACF,CAAA;AAAA,QAEJ;AAAA;AAAA,KACF;AAAA,EAEJ,CAAA;AAEA,EAAA,MAAM,YAAA,GAAe,CAAC,UAAA,GAAa,KAAA,KAAU;AAC3C,IAAA,OAAO,6BACLF,cAAA,CAACG,0BAAA,EAAA,EACE,WAAC,EAAE,KAAA,EAAO,QAAO,KAAM;AACtB,MAAA,OAAO,iBAAA,CAAkB,OAAO,MAAM,CAAA;AAAA,IACxC,GACF,CAAA,mBAEAH,cAAA,CAAC,SAAI,GAAA,EAAK,SAAA,EAAY,6BAAkB,EAAE,CAAA;AAAA,EAE9C,CAAA;AAEA,EAAA,MAAM,oBAAoB,MAAM;AAC9B,IAAA,uBACEA,cAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO;AAAA,UACL,OAAO,aAAA,CAAc,KAAA;AAAA,UACrB,QAAQ,aAAA,CAAc,MAAA;AAAA,UACtB,UAAA,EAAY,KAAA,CAAM,MAAA,CAAO,UAAA,CAAW,OAAA;AAAA,UACpC,OAAA,EAAS,MAAA;AAAA,UACT,UAAA,EAAY,QAAA;AAAA,UACZ,cAAA,EAAgB;AAAA,SAClB;AAAA,QAEA,QAAA,kBAAAA,cAAA,CAACI,UAAA,EAAA,EAAM,OAAA,EAAQ,sFAAA,EAAuF,QAAA,EAAA,iCAAA,EAEtG;AAAA;AAAA,KACF;AAAA,EAEJ,CAAA;AAEA,EAAA,uBACEC,eAAA,CAAAC,mBAAA,EAAA,EACG,QAAA,EAAA;AAAA,IAAA,UAAA,GAAa,iBAAA,KAAsB,YAAA,EAAa;AAAA,IAChD,UAAA,oBACCN,cAAA;AAAA,MAACO,QAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAOC,MAAA,CAAE,mDAAA,EAAqD,oBAAA,EAAsB;AAAA,UAClF,UAAU,KAAA,CAAM;AAAA,SACjB,CAAA;AAAA,QACD,oBAAA,EAAsB,KAAA;AAAA,QACtB,aAAA,EAAe,KAAA;AAAA,QACf,WAAW,MAAA,CAAO,KAAA;AAAA,QAClB,kBAAkB,MAAA,CAAO,YAAA;AAAA,QACzB,MAAA,EAAQ,UAAA;AAAA,QACR,WAAW,MAAM;AAxG3B,UAAA,IAAA,EAAA;AAyGY,UAAAC,yBAAA,CAAkB,2BAAA,EAA6B;AAAA,YAC7C,UAAA,EAAA,CAAY,EAAA,GAAA,KAAA,CAAM,UAAA,KAAN,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAkB,IAAA;AAAA,YAC9B,QAAA,EAAU;AAAA,WACX,CAAA;AACD,UAAA,aAAA,CAAc,KAAK,CAAA;AAAA,QACrB,CAAA;AAAA,QAEC,uBAAa,IAAI;AAAA;AAAA;AACpB,GAAA,EAEJ,CAAA;AAEJ;AAEA,SAAS,UAAU,KAAA,EAAsB;AACvC,EAAA,OAAO;AAAA,IACL,OAAOC,OAAA,CAAI;AAAA,MACT,KAAA,EAAO,MAAA;AAAA,MACP,MAAA,EAAQ;AAAA,KACT,CAAA;AAAA,IACD,cAAcA,OAAA,CAAI;AAAA,MAChB,MAAA,EAAQ,MAAA;AAAA,MACR,UAAA,EAAY;AAAA,KACb;AAAA,GACH;AACF;;;;"}
@@ -117,7 +117,7 @@ const settings = {
117
117
  );
118
118
  },
119
119
  // This is the component that renders fields
120
- renderField: function Field2(fieldProps) {
120
+ renderField: function Field(fieldProps) {
121
121
  var _a;
122
122
  const fields = ((_a = fieldProps == null ? void 0 : fieldProps.config) == null ? void 0 : _a.fields) || {};
123
123
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -161,7 +161,7 @@ const settings = {
161
161
  );
162
162
  },
163
163
  // This is the component used for the fields operator selector
164
- renderOperator: function Operator2(operatorProps) {
164
+ renderOperator: function Operator(operatorProps) {
165
165
  return /* @__PURE__ */ jsxRuntime.jsx(
166
166
  ui$1.Select,
167
167
  {
@@ -1 +1 @@
1
- {"version":3,"file":"AwesomeQueryBuilder.cjs","sources":["../../../../src/components/visual-query-builder/AwesomeQueryBuilder.tsx"],"sourcesContent":["import {\n BaseOperator,\n BasicConfig,\n Config,\n Field,\n ImmutableList,\n JsonTree,\n Operator,\n OperatorOptionsI,\n Settings,\n Utils,\n ValueSource,\n WidgetProps,\n Widgets,\n} from '@react-awesome-query-builder/ui';\nimport { isString } from 'lodash';\n\nimport { dateTime, toOption } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { t } from '@grafana/i18n';\nimport { Button, DateTimePicker, Input, Select } from '@grafana/ui';\n\nconst buttonLabels = {\n add: 'Add',\n remove: 'Remove',\n};\n\nexport const emptyInitTree: JsonTree = {\n id: Utils.uuid(),\n type: 'group',\n};\n\nconst TIME_FILTER = 'timeFilter';\nconst macros = [TIME_FILTER];\n\n// Widgets are the components rendered for each field type see the docs for more info\n// https://github.com/ukrbublik/react-awesome-query-builder/blob/master/CONFIG.adoc#configwidgets\nexport const widgets: Widgets = {\n ...BasicConfig.widgets,\n text: {\n ...BasicConfig.widgets.text,\n factory: function TextInput(props: WidgetProps) {\n return (\n <Input\n value={props?.value || ''}\n placeholder={props?.placeholder}\n onChange={(e) => props?.setValue(e.currentTarget.value)}\n />\n );\n },\n },\n number: {\n ...BasicConfig.widgets.number,\n factory: function NumberInput(props: WidgetProps) {\n return (\n <Input\n value={props?.value}\n placeholder={props?.placeholder}\n type=\"number\"\n onChange={(e) => props?.setValue(Number.parseInt(e.currentTarget.value, 10))}\n />\n );\n },\n },\n datetime: {\n ...BasicConfig.widgets.datetime,\n factory: function DateTimeInput(props: WidgetProps) {\n if (props?.operator === Op.MACROS) {\n return (\n <Select\n id={props.id}\n aria-label={t('grafana-sql.components.widgets.aria-label-macros-value-selector', 'Macros value selector')}\n menuShouldPortal\n options={macros.map(toOption)}\n value={props?.value}\n onChange={(val) => props.setValue(val.value)}\n />\n );\n }\n const dateValue = dateTime(props?.value).isValid() ? dateTime(props?.value).utc() : undefined;\n return (\n <DateTimePicker\n onChange={(e) => {\n props?.setValue(e?.format(BasicConfig.widgets.datetime.valueFormat));\n }}\n date={dateValue}\n />\n );\n },\n // Function for formatting widget’s value in SQL WHERE query.\n sqlFormatValue: (val, field, widget, operator, operatorDefinition, rightFieldDef) => {\n if (operator === Op.MACROS) {\n if (macros.includes(val)) {\n return val;\n }\n return undefined;\n }\n\n // This is just satisfying the type checker, this should never happen\n if (\n typeof BasicConfig.widgets.datetime.sqlFormatValue === 'string' ||\n typeof BasicConfig.widgets.datetime.sqlFormatValue === 'object'\n ) {\n return undefined;\n }\n const func = BasicConfig.widgets.datetime.sqlFormatValue;\n // We need to pass the ctx to this function this way so *this* is correct\n return func?.call(BasicConfig.ctx, val, field, widget, operator, operatorDefinition, rightFieldDef) || '';\n },\n },\n};\n\n// Settings are the configuration options for the query builder see the docs for more info\n// https://github.com/ukrbublik/react-awesome-query-builder/blob/master/CONFIG.adoc#configsettings\nexport const settings: Settings = {\n ...BasicConfig.settings,\n canRegroup: false,\n maxNesting: 1,\n canReorder: false,\n showNot: false,\n addRuleLabel: buttonLabels.add,\n deleteLabel: buttonLabels.remove,\n // This is the component that renders conjunctions (logical operators)\n renderConjs: function Conjunctions(conjProps) {\n return (\n <Select\n id={conjProps?.id}\n aria-label={t('grafana-sql.components.settings.aria-label-conjunction', 'Conjunction')}\n data-testid={selectors.components.SQLQueryEditor.filterConjunction}\n menuShouldPortal\n options={conjProps?.conjunctionOptions ? Object.keys(conjProps?.conjunctionOptions).map(toOption) : undefined}\n value={conjProps?.selectedConjunction}\n onChange={(val) => conjProps?.setConjunction(val.value!)}\n />\n );\n },\n // This is the component that renders fields\n renderField: function Field(fieldProps) {\n const fields = fieldProps?.config?.fields || {};\n return (\n <Select\n id={fieldProps?.id}\n width={25}\n aria-label={t('grafana-sql.components.settings.aria-label-field', 'Field')}\n data-testid={selectors.components.SQLQueryEditor.filterField}\n menuShouldPortal\n options={fieldProps?.items.map((f) => {\n // @ts-ignore\n const icon = fields[f.key].mainWidgetProps?.customProps?.icon;\n return {\n label: f.label,\n value: f.key,\n icon,\n };\n })}\n value={fieldProps?.selectedKey}\n onChange={(val) => {\n fieldProps?.setField(val.label!);\n }}\n />\n );\n },\n // This is the component used for the Add/Remove buttons\n renderButton: function RAQBButton(buttonProps) {\n return (\n <Button\n type=\"button\"\n aria-label={t('grafana-sql.components.settings.title-button-filter', '{{ buttonLabel }} filter', {\n buttonLabel: buttonProps?.label,\n })}\n onClick={buttonProps?.onClick}\n variant=\"secondary\"\n size=\"md\"\n icon={buttonProps?.label === buttonLabels.add ? 'plus' : 'times'}\n />\n );\n },\n // This is the component used for the fields operator selector\n renderOperator: function Operator(operatorProps) {\n return (\n <Select\n options={operatorProps?.items.map((op) => ({ label: op.label, value: op.key }))}\n aria-label={t('grafana-sql.components.settings.aria-label-operator', 'Operator')}\n data-testid={selectors.components.SQLQueryEditor.filterOperator}\n menuShouldPortal\n value={operatorProps?.selectedKey}\n onChange={(val) => {\n operatorProps?.setField(val.value || '');\n }}\n />\n );\n },\n};\n\n// add IN / NOT IN operators to text to support multi-value variables\nconst enum Op {\n IN = 'select_any_in',\n NOT_IN = 'select_not_any_in',\n MACROS = 'macros',\n}\nconst customOperators = getCustomOperators(BasicConfig);\nconst textWidget = BasicConfig.types.text.widgets.text;\nconst opers = [...(textWidget.operators || []), Op.IN, Op.NOT_IN];\nconst customTextWidget = {\n ...textWidget,\n operators: opers,\n};\n\nconst customTypes = {\n ...BasicConfig.types,\n text: {\n ...BasicConfig.types.text,\n widgets: {\n ...BasicConfig.types.text.widgets,\n text: customTextWidget,\n },\n },\n datetime: {\n ...BasicConfig.types.datetime,\n widgets: {\n ...BasicConfig.types.datetime.widgets,\n datetime: {\n ...BasicConfig.types.datetime.widgets.datetime,\n operators: [Op.MACROS, ...(BasicConfig.types.datetime.widgets.datetime.operators || [])],\n },\n },\n },\n};\n\n// This is the configuration for the query builder that doesn't include the fields but all the other configuration for the UI\n// Fields should be added dynamically based on returned data\n// See the doc for more info https://github.com/ukrbublik/react-awesome-query-builder/blob/master/CONFIG.adoc\nexport const raqbConfig: Config = {\n ...BasicConfig,\n widgets,\n settings,\n operators: customOperators,\n types: customTypes,\n};\n\nexport type { Config };\n\nconst noop = () => '';\n\nfunction getCustomOperators(config: BasicConfig) {\n const { ...supportedOperators } = config.operators;\n\n // IN operator expects array, override IN formatter for multi-value variables\n const sqlFormatInOp = supportedOperators[Op.IN].sqlFormatOp?.bind(config.ctx) || noop;\n const formatInOp = supportedOperators[Op.IN].formatOp?.bind(config.ctx) || noop;\n const customSqlInFormatter = (\n field: string,\n op: string,\n value: string | string[] | ImmutableList<string>,\n valueSrc: ValueSource | undefined,\n valueType: string | undefined,\n opDef: Operator | undefined,\n operatorOptions: OperatorOptionsI | undefined,\n fieldDef: Field | undefined\n ) => {\n return sqlFormatInOp(field, op, splitIfString(value), valueSrc, valueType, opDef, operatorOptions, fieldDef);\n };\n\n // NOT IN operator expects array, override NOT IN formatter for multi-value variables\n const sqlFormatNotInOp = supportedOperators[Op.NOT_IN].sqlFormatOp?.bind(config.ctx) || noop;\n const formatNotInOp = supportedOperators[Op.NOT_IN].formatOp?.bind(config.ctx) || noop;\n const customSqlNotInFormatter = (\n field: string,\n op: string,\n value: string | string[] | ImmutableList<string>,\n valueSrc: ValueSource | undefined,\n valueType: string | undefined,\n opDef: Operator | undefined,\n operatorOptions: OperatorOptionsI | undefined,\n fieldDef: Field | undefined\n ) => {\n return sqlFormatNotInOp(field, op, splitIfString(value), valueSrc, valueType, opDef, operatorOptions, fieldDef);\n };\n\n const customOperators: Record<string, BaseOperator> = {\n ...supportedOperators,\n [Op.IN]: {\n ...supportedOperators[Op.IN],\n formatOp: (\n field: string,\n op: string,\n value: string | string[] | ImmutableList<string>,\n valueSrc?: ValueSource\n ) => {\n return formatInOp(field, op, splitIfString(value), valueSrc);\n },\n sqlFormatOp: customSqlInFormatter,\n },\n [Op.NOT_IN]: {\n ...supportedOperators[Op.NOT_IN],\n formatOp: (\n field: string,\n op: string,\n value: string | string[] | ImmutableList<string>,\n valueSrc?: ValueSource\n ) => {\n return formatNotInOp(field, op, splitIfString(value), valueSrc);\n },\n sqlFormatOp: customSqlNotInFormatter,\n },\n [Op.MACROS]: {\n label: t('grafana-sql.components.get-custom-operators.custom-operators.label.macros', 'Macros'),\n sqlFormatOp: (field: string, _operator: string, value: string | string[] | ImmutableList<string>) => {\n if (value === TIME_FILTER) {\n return `$__timeFilter(${field})`;\n }\n throw new Error('Invalid macro');\n },\n },\n };\n\n return customOperators;\n}\n\n// value: string | List<string> but AQB uses a different version of Immutable\nfunction splitIfString(value: string | string[] | ImmutableList<string>) {\n if (isString(value)) {\n return value.split(',');\n }\n return value;\n}\n"],"names":["Utils","BasicConfig","jsx","Input","Select","t","toOption","dateTime","DateTimePicker","selectors","Field","_a","Button","Operator","Op","customOperators","isString"],"mappings":"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"}
1
+ {"version":3,"file":"AwesomeQueryBuilder.cjs","sources":["../../../../src/components/visual-query-builder/AwesomeQueryBuilder.tsx"],"sourcesContent":["import {\n type BaseOperator,\n BasicConfig,\n type Config,\n type Field,\n type ImmutableList,\n type JsonTree,\n type Operator,\n type OperatorOptionsI,\n type Settings,\n Utils,\n type ValueSource,\n type WidgetProps,\n type Widgets,\n} from '@react-awesome-query-builder/ui';\nimport { isString } from 'lodash';\n\nimport { dateTime, toOption } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { t } from '@grafana/i18n';\nimport { Button, DateTimePicker, Input, Select } from '@grafana/ui';\n\nconst buttonLabels = {\n add: 'Add',\n remove: 'Remove',\n};\n\nexport const emptyInitTree: JsonTree = {\n id: Utils.uuid(),\n type: 'group',\n};\n\nconst TIME_FILTER = 'timeFilter';\nconst macros = [TIME_FILTER];\n\n// Widgets are the components rendered for each field type see the docs for more info\n// https://github.com/ukrbublik/react-awesome-query-builder/blob/master/CONFIG.adoc#configwidgets\nexport const widgets: Widgets = {\n ...BasicConfig.widgets,\n text: {\n ...BasicConfig.widgets.text,\n factory: function TextInput(props: WidgetProps) {\n return (\n <Input\n value={props?.value || ''}\n placeholder={props?.placeholder}\n onChange={(e) => props?.setValue(e.currentTarget.value)}\n />\n );\n },\n },\n number: {\n ...BasicConfig.widgets.number,\n factory: function NumberInput(props: WidgetProps) {\n return (\n <Input\n value={props?.value}\n placeholder={props?.placeholder}\n type=\"number\"\n onChange={(e) => props?.setValue(Number.parseInt(e.currentTarget.value, 10))}\n />\n );\n },\n },\n datetime: {\n ...BasicConfig.widgets.datetime,\n factory: function DateTimeInput(props: WidgetProps) {\n if (props?.operator === Op.MACROS) {\n return (\n <Select\n id={props.id}\n aria-label={t('grafana-sql.components.widgets.aria-label-macros-value-selector', 'Macros value selector')}\n menuShouldPortal\n options={macros.map(toOption)}\n value={props?.value}\n onChange={(val) => props.setValue(val.value)}\n />\n );\n }\n const dateValue = dateTime(props?.value).isValid() ? dateTime(props?.value).utc() : undefined;\n return (\n <DateTimePicker\n onChange={(e) => {\n props?.setValue(e?.format(BasicConfig.widgets.datetime.valueFormat));\n }}\n date={dateValue}\n />\n );\n },\n // Function for formatting widget’s value in SQL WHERE query.\n sqlFormatValue: (val, field, widget, operator, operatorDefinition, rightFieldDef) => {\n if (operator === Op.MACROS) {\n if (macros.includes(val)) {\n return val;\n }\n return undefined;\n }\n\n // This is just satisfying the type checker, this should never happen\n if (\n typeof BasicConfig.widgets.datetime.sqlFormatValue === 'string' ||\n typeof BasicConfig.widgets.datetime.sqlFormatValue === 'object'\n ) {\n return undefined;\n }\n const func = BasicConfig.widgets.datetime.sqlFormatValue;\n // We need to pass the ctx to this function this way so *this* is correct\n return func?.call(BasicConfig.ctx, val, field, widget, operator, operatorDefinition, rightFieldDef) || '';\n },\n },\n};\n\n// Settings are the configuration options for the query builder see the docs for more info\n// https://github.com/ukrbublik/react-awesome-query-builder/blob/master/CONFIG.adoc#configsettings\nexport const settings: Settings = {\n ...BasicConfig.settings,\n canRegroup: false,\n maxNesting: 1,\n canReorder: false,\n showNot: false,\n addRuleLabel: buttonLabels.add,\n deleteLabel: buttonLabels.remove,\n // This is the component that renders conjunctions (logical operators)\n renderConjs: function Conjunctions(conjProps) {\n return (\n <Select\n id={conjProps?.id}\n aria-label={t('grafana-sql.components.settings.aria-label-conjunction', 'Conjunction')}\n data-testid={selectors.components.SQLQueryEditor.filterConjunction}\n menuShouldPortal\n options={conjProps?.conjunctionOptions ? Object.keys(conjProps?.conjunctionOptions).map(toOption) : undefined}\n value={conjProps?.selectedConjunction}\n onChange={(val) => conjProps?.setConjunction(val.value!)}\n />\n );\n },\n // This is the component that renders fields\n renderField: function Field(fieldProps) {\n const fields = fieldProps?.config?.fields || {};\n return (\n <Select\n id={fieldProps?.id}\n width={25}\n aria-label={t('grafana-sql.components.settings.aria-label-field', 'Field')}\n data-testid={selectors.components.SQLQueryEditor.filterField}\n menuShouldPortal\n options={fieldProps?.items.map((f) => {\n // @ts-ignore\n const icon = fields[f.key].mainWidgetProps?.customProps?.icon;\n return {\n label: f.label,\n value: f.key,\n icon,\n };\n })}\n value={fieldProps?.selectedKey}\n onChange={(val) => {\n fieldProps?.setField(val.label!);\n }}\n />\n );\n },\n // This is the component used for the Add/Remove buttons\n renderButton: function RAQBButton(buttonProps) {\n return (\n <Button\n type=\"button\"\n aria-label={t('grafana-sql.components.settings.title-button-filter', '{{ buttonLabel }} filter', {\n buttonLabel: buttonProps?.label,\n })}\n onClick={buttonProps?.onClick}\n variant=\"secondary\"\n size=\"md\"\n icon={buttonProps?.label === buttonLabels.add ? 'plus' : 'times'}\n />\n );\n },\n // This is the component used for the fields operator selector\n renderOperator: function Operator(operatorProps) {\n return (\n <Select\n options={operatorProps?.items.map((op) => ({ label: op.label, value: op.key }))}\n aria-label={t('grafana-sql.components.settings.aria-label-operator', 'Operator')}\n data-testid={selectors.components.SQLQueryEditor.filterOperator}\n menuShouldPortal\n value={operatorProps?.selectedKey}\n onChange={(val) => {\n operatorProps?.setField(val.value || '');\n }}\n />\n );\n },\n};\n\n// add IN / NOT IN operators to text to support multi-value variables\nconst enum Op {\n IN = 'select_any_in',\n NOT_IN = 'select_not_any_in',\n MACROS = 'macros',\n}\nconst customOperators = getCustomOperators(BasicConfig);\nconst textWidget = BasicConfig.types.text.widgets.text;\nconst opers = [...(textWidget.operators || []), Op.IN, Op.NOT_IN];\nconst customTextWidget = {\n ...textWidget,\n operators: opers,\n};\n\nconst customTypes = {\n ...BasicConfig.types,\n text: {\n ...BasicConfig.types.text,\n widgets: {\n ...BasicConfig.types.text.widgets,\n text: customTextWidget,\n },\n },\n datetime: {\n ...BasicConfig.types.datetime,\n widgets: {\n ...BasicConfig.types.datetime.widgets,\n datetime: {\n ...BasicConfig.types.datetime.widgets.datetime,\n operators: [Op.MACROS, ...(BasicConfig.types.datetime.widgets.datetime.operators || [])],\n },\n },\n },\n};\n\n// This is the configuration for the query builder that doesn't include the fields but all the other configuration for the UI\n// Fields should be added dynamically based on returned data\n// See the doc for more info https://github.com/ukrbublik/react-awesome-query-builder/blob/master/CONFIG.adoc\nexport const raqbConfig: Config = {\n ...BasicConfig,\n widgets,\n settings,\n operators: customOperators,\n types: customTypes,\n};\n\nexport type { Config };\n\nconst noop = () => '';\n\nfunction getCustomOperators(config: BasicConfig) {\n const { ...supportedOperators } = config.operators;\n\n // IN operator expects array, override IN formatter for multi-value variables\n const sqlFormatInOp = supportedOperators[Op.IN].sqlFormatOp?.bind(config.ctx) || noop;\n const formatInOp = supportedOperators[Op.IN].formatOp?.bind(config.ctx) || noop;\n const customSqlInFormatter = (\n field: string,\n op: string,\n value: string | string[] | ImmutableList<string>,\n valueSrc: ValueSource | undefined,\n valueType: string | undefined,\n opDef: Operator | undefined,\n operatorOptions: OperatorOptionsI | undefined,\n fieldDef: Field | undefined\n ) => {\n return sqlFormatInOp(field, op, splitIfString(value), valueSrc, valueType, opDef, operatorOptions, fieldDef);\n };\n\n // NOT IN operator expects array, override NOT IN formatter for multi-value variables\n const sqlFormatNotInOp = supportedOperators[Op.NOT_IN].sqlFormatOp?.bind(config.ctx) || noop;\n const formatNotInOp = supportedOperators[Op.NOT_IN].formatOp?.bind(config.ctx) || noop;\n const customSqlNotInFormatter = (\n field: string,\n op: string,\n value: string | string[] | ImmutableList<string>,\n valueSrc: ValueSource | undefined,\n valueType: string | undefined,\n opDef: Operator | undefined,\n operatorOptions: OperatorOptionsI | undefined,\n fieldDef: Field | undefined\n ) => {\n return sqlFormatNotInOp(field, op, splitIfString(value), valueSrc, valueType, opDef, operatorOptions, fieldDef);\n };\n\n const customOperators: Record<string, BaseOperator> = {\n ...supportedOperators,\n [Op.IN]: {\n ...supportedOperators[Op.IN],\n formatOp: (\n field: string,\n op: string,\n value: string | string[] | ImmutableList<string>,\n valueSrc?: ValueSource\n ) => {\n return formatInOp(field, op, splitIfString(value), valueSrc);\n },\n sqlFormatOp: customSqlInFormatter,\n },\n [Op.NOT_IN]: {\n ...supportedOperators[Op.NOT_IN],\n formatOp: (\n field: string,\n op: string,\n value: string | string[] | ImmutableList<string>,\n valueSrc?: ValueSource\n ) => {\n return formatNotInOp(field, op, splitIfString(value), valueSrc);\n },\n sqlFormatOp: customSqlNotInFormatter,\n },\n [Op.MACROS]: {\n label: t('grafana-sql.components.get-custom-operators.custom-operators.label.macros', 'Macros'),\n sqlFormatOp: (field: string, _operator: string, value: string | string[] | ImmutableList<string>) => {\n if (value === TIME_FILTER) {\n return `$__timeFilter(${field})`;\n }\n throw new Error('Invalid macro');\n },\n },\n };\n\n return customOperators;\n}\n\n// value: string | List<string> but AQB uses a different version of Immutable\nfunction splitIfString(value: string | string[] | ImmutableList<string>) {\n if (isString(value)) {\n return value.split(',');\n }\n return value;\n}\n"],"names":["Utils","BasicConfig","jsx","Input","Select","t","toOption","dateTime","DateTimePicker","selectors","_a","Button","Op","customOperators","isString"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"GroupByRow.cjs","sources":["../../../../src/components/visual-query-builder/GroupByRow.tsx"],"sourcesContent":["import { useCallback } from 'react';\n\nimport { SelectableValue, toOption } from '@grafana/data';\nimport { t } from '@grafana/i18n';\nimport { AccessoryButton, EditorList, InputGroup } from '@grafana/plugin-ui';\nimport { Select } from '@grafana/ui';\n\nimport { QueryEditorGroupByExpression } from '../../expressions';\nimport { SQLExpression } from '../../types';\nimport { setGroupByField } from '../../utils/sql.utils';\n\ninterface GroupByRowProps {\n sql: SQLExpression;\n onSqlChange: (sql: SQLExpression) => void;\n columns?: Array<SelectableValue<string>>;\n}\n\nexport function GroupByRow({ sql, columns, onSqlChange }: GroupByRowProps) {\n const onGroupByChange = useCallback(\n (item: Array<Partial<QueryEditorGroupByExpression>>) => {\n // As new (empty object) items come in, we need to make sure they have the correct type\n const cleaned = item.map((v) => setGroupByField(v.property?.name));\n const newSql = { ...sql, groupBy: cleaned };\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n return (\n <EditorList\n items={sql.groupBy!}\n onChange={onGroupByChange}\n renderItem={makeRenderColumn({\n options: columns,\n })}\n />\n );\n}\n\nfunction makeRenderColumn({ options }: { options?: Array<SelectableValue<string>> }) {\n const renderColumn = function (\n item: Partial<QueryEditorGroupByExpression>,\n onChangeItem: (item: QueryEditorGroupByExpression) => void,\n onDeleteItem: () => void\n ) {\n return (\n <InputGroup>\n <Select\n value={item.property?.name ? toOption(item.property.name) : null}\n aria-label={t('grafana-sql.components.make-render-column.render-column.aria-label-group-by', 'Group by')}\n options={options}\n menuShouldPortal\n onChange={({ value }) => value && onChangeItem(setGroupByField(value))}\n />\n <AccessoryButton\n aria-label={t(\n 'grafana-sql.components.make-render-column.render-column.title-remove-group-by-column',\n 'Remove group by column'\n )}\n icon=\"times\"\n variant=\"secondary\"\n onClick={onDeleteItem}\n />\n </InputGroup>\n );\n };\n return renderColumn;\n}\n"],"names":["useCallback","setGroupByField","jsx","EditorList","InputGroup","Select","toOption","t","AccessoryButton"],"mappings":";;;;;;;;;;;;;AAiBO,SAAS,UAAA,CAAW,EAAE,GAAA,EAAK,OAAA,EAAS,aAAY,EAAoB;AACzE,EAAA,MAAM,eAAA,GAAkBA,iBAAA;AAAA,IACtB,CAAC,IAAA,KAAuD;AAEtD,MAAA,MAAM,OAAA,GAAU,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,KAAG;AArBnC,QAAA,IAAA,EAAA;AAqBsC,QAAA,OAAAC,yBAAA,CAAA,CAAgB,EAAA,GAAA,CAAA,CAAE,QAAA,KAAF,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAY,IAAI,CAAA;AAAA,MAAA,CAAC,CAAA;AACjE,MAAA,MAAM,MAAA,GAAS,EAAE,GAAG,GAAA,EAAK,SAAS,OAAA,EAAQ;AAC1C,MAAA,WAAA,CAAY,MAAM,CAAA;AAAA,IACpB,CAAA;AAAA,IACA,CAAC,aAAa,GAAG;AAAA,GACnB;AAEA,EAAA,uBACEC,cAAA;AAAA,IAACC,mBAAA;AAAA,IAAA;AAAA,MACC,OAAO,GAAA,CAAI,OAAA;AAAA,MACX,QAAA,EAAU,eAAA;AAAA,MACV,YAAY,gBAAA,CAAiB;AAAA,QAC3B,OAAA,EAAS;AAAA,OACV;AAAA;AAAA,GACH;AAEJ;AAEA,SAAS,gBAAA,CAAiB,EAAE,OAAA,EAAQ,EAAiD;AACnF,EAAA,MAAM,YAAA,GAAe,SACnB,IAAA,EACA,YAAA,EACA,YAAA,EACA;AA5CJ,IAAA,IAAA,EAAA;AA6CI,IAAA,uCACGC,mBAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAF,cAAA;AAAA,QAACG,SAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAA,CAAA,CAAO,UAAK,QAAA,KAAL,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAe,QAAOC,aAAA,CAAS,IAAA,CAAK,QAAA,CAAS,IAAI,CAAA,GAAI,IAAA;AAAA,UAC5D,YAAA,EAAYC,MAAA,CAAE,6EAAA,EAA+E,UAAU,CAAA;AAAA,UACvG,OAAA;AAAA,UACA,gBAAA,EAAgB,IAAA;AAAA,UAChB,QAAA,EAAU,CAAC,EAAE,KAAA,OAAY,KAAA,IAAS,YAAA,CAAaN,yBAAA,CAAgB,KAAK,CAAC;AAAA;AAAA,OACvE;AAAA,sBACAC,cAAA;AAAA,QAACM,wBAAA;AAAA,QAAA;AAAA,UACC,YAAA,EAAYD,MAAA;AAAA,YACV,sFAAA;AAAA,YACA;AAAA,WACF;AAAA,UACA,IAAA,EAAK,OAAA;AAAA,UACL,OAAA,EAAQ,WAAA;AAAA,UACR,OAAA,EAAS;AAAA;AAAA;AACX,KAAA,EACF,CAAA;AAAA,EAEJ,CAAA;AACA,EAAA,OAAO,YAAA;AACT;;;;"}
1
+ {"version":3,"file":"GroupByRow.cjs","sources":["../../../../src/components/visual-query-builder/GroupByRow.tsx"],"sourcesContent":["import { useCallback } from 'react';\n\nimport { type SelectableValue, toOption } from '@grafana/data';\nimport { t } from '@grafana/i18n';\nimport { AccessoryButton, EditorList, InputGroup } from '@grafana/plugin-ui';\nimport { Select } from '@grafana/ui';\n\nimport { type QueryEditorGroupByExpression } from '../../expressions';\nimport { type SQLExpression } from '../../types';\nimport { setGroupByField } from '../../utils/sql.utils';\n\ninterface GroupByRowProps {\n sql: SQLExpression;\n onSqlChange: (sql: SQLExpression) => void;\n columns?: Array<SelectableValue<string>>;\n}\n\nexport function GroupByRow({ sql, columns, onSqlChange }: GroupByRowProps) {\n const onGroupByChange = useCallback(\n (item: Array<Partial<QueryEditorGroupByExpression>>) => {\n // As new (empty object) items come in, we need to make sure they have the correct type\n const cleaned = item.map((v) => setGroupByField(v.property?.name));\n const newSql = { ...sql, groupBy: cleaned };\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n return (\n <EditorList\n items={sql.groupBy!}\n onChange={onGroupByChange}\n renderItem={makeRenderColumn({\n options: columns,\n })}\n />\n );\n}\n\nfunction makeRenderColumn({ options }: { options?: Array<SelectableValue<string>> }) {\n const renderColumn = function (\n item: Partial<QueryEditorGroupByExpression>,\n onChangeItem: (item: QueryEditorGroupByExpression) => void,\n onDeleteItem: () => void\n ) {\n return (\n <InputGroup>\n <Select\n value={item.property?.name ? toOption(item.property.name) : null}\n aria-label={t('grafana-sql.components.make-render-column.render-column.aria-label-group-by', 'Group by')}\n options={options}\n menuShouldPortal\n onChange={({ value }) => value && onChangeItem(setGroupByField(value))}\n />\n <AccessoryButton\n aria-label={t(\n 'grafana-sql.components.make-render-column.render-column.title-remove-group-by-column',\n 'Remove group by column'\n )}\n icon=\"times\"\n variant=\"secondary\"\n onClick={onDeleteItem}\n />\n </InputGroup>\n );\n };\n return renderColumn;\n}\n"],"names":["useCallback","setGroupByField","jsx","EditorList","InputGroup","Select","toOption","t","AccessoryButton"],"mappings":";;;;;;;;;;;;;AAiBO,SAAS,UAAA,CAAW,EAAE,GAAA,EAAK,OAAA,EAAS,aAAY,EAAoB;AACzE,EAAA,MAAM,eAAA,GAAkBA,iBAAA;AAAA,IACtB,CAAC,IAAA,KAAuD;AAEtD,MAAA,MAAM,OAAA,GAAU,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,KAAG;AArBnC,QAAA,IAAA,EAAA;AAqBsC,QAAA,OAAAC,yBAAA,CAAA,CAAgB,EAAA,GAAA,CAAA,CAAE,QAAA,KAAF,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAY,IAAI,CAAA;AAAA,MAAA,CAAC,CAAA;AACjE,MAAA,MAAM,MAAA,GAAS,EAAE,GAAG,GAAA,EAAK,SAAS,OAAA,EAAQ;AAC1C,MAAA,WAAA,CAAY,MAAM,CAAA;AAAA,IACpB,CAAA;AAAA,IACA,CAAC,aAAa,GAAG;AAAA,GACnB;AAEA,EAAA,uBACEC,cAAA;AAAA,IAACC,mBAAA;AAAA,IAAA;AAAA,MACC,OAAO,GAAA,CAAI,OAAA;AAAA,MACX,QAAA,EAAU,eAAA;AAAA,MACV,YAAY,gBAAA,CAAiB;AAAA,QAC3B,OAAA,EAAS;AAAA,OACV;AAAA;AAAA,GACH;AAEJ;AAEA,SAAS,gBAAA,CAAiB,EAAE,OAAA,EAAQ,EAAiD;AACnF,EAAA,MAAM,YAAA,GAAe,SACnB,IAAA,EACA,YAAA,EACA,YAAA,EACA;AA5CJ,IAAA,IAAA,EAAA;AA6CI,IAAA,uCACGC,mBAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAF,cAAA;AAAA,QAACG,SAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAA,CAAA,CAAO,UAAK,QAAA,KAAL,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAe,QAAOC,aAAA,CAAS,IAAA,CAAK,QAAA,CAAS,IAAI,CAAA,GAAI,IAAA;AAAA,UAC5D,YAAA,EAAYC,MAAA,CAAE,6EAAA,EAA+E,UAAU,CAAA;AAAA,UACvG,OAAA;AAAA,UACA,gBAAA,EAAgB,IAAA;AAAA,UAChB,QAAA,EAAU,CAAC,EAAE,KAAA,OAAY,KAAA,IAAS,YAAA,CAAaN,yBAAA,CAAgB,KAAK,CAAC;AAAA;AAAA,OACvE;AAAA,sBACAC,cAAA;AAAA,QAACM,wBAAA;AAAA,QAAA;AAAA,UACC,YAAA,EAAYD,MAAA;AAAA,YACV,sFAAA;AAAA,YACA;AAAA,WACF;AAAA,UACA,IAAA,EAAK,OAAA;AAAA,UACL,OAAA,EAAQ,WAAA;AAAA,UACR,OAAA,EAAS;AAAA;AAAA;AACX,KAAA,EACF,CAAA;AAAA,EAEJ,CAAA;AACA,EAAA,OAAO,YAAA;AACT;;;;"}
@@ -1 +1 @@
1
- {"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 { 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 { 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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"}
1
+ {"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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Preview.cjs","sources":["../../../../src/components/visual-query-builder/Preview.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { useCopyToClipboard } from 'react-use';\n\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { Trans, t } from '@grafana/i18n';\nimport { reportInteraction } from '@grafana/runtime';\nimport { CodeEditor, Field, IconButton, useStyles2 } from '@grafana/ui';\n\nimport { formatSQL } from '../../utils/formatSQL';\n\ntype PreviewProps = {\n rawSql: string;\n datasourceType?: string;\n};\n\nexport function Preview({ rawSql, datasourceType }: PreviewProps) {\n // TODO: use zero index to give feedback about copy success\n const [_, copyToClipboard] = useCopyToClipboard();\n const styles = useStyles2(getStyles);\n\n const copyPreview = (rawSql: string) => {\n copyToClipboard(rawSql);\n reportInteraction('grafana_sql_preview_copied', {\n datasource: datasourceType,\n });\n };\n\n const labelElement = (\n <div className={styles.labelWrapper}>\n <span className={styles.label}>\n <Trans i18nKey=\"grafana-sql.components.preview.label-element.preview\">Preview</Trans>\n </span>\n <IconButton\n tooltip={t('grafana-sql.components.preview.label-element.tooltip-copy-to-clipboard', 'Copy to clipboard')}\n onClick={() => copyPreview(rawSql)}\n name=\"copy\"\n />\n </div>\n );\n\n return (\n <Field label={labelElement} className={styles.grow}>\n <CodeEditor\n language=\"sql\"\n height={80}\n value={formatSQL(rawSql)}\n monacoOptions={{ scrollbar: { vertical: 'hidden' }, scrollBeyondLastLine: false }}\n readOnly={true}\n showMiniMap={false}\n />\n </Field>\n );\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n grow: css({ flexGrow: 1 }),\n label: css({ fontSize: 12, fontWeight: theme.typography.fontWeightMedium }),\n labelWrapper: css({ display: 'flex', justifyContent: 'space-between', paddingBottom: theme.spacing(0.5) }),\n };\n}\n"],"names":["useCopyToClipboard","useStyles2","rawSql","reportInteraction","jsxs","jsx","Trans","IconButton","t","Field","CodeEditor","formatSQL","css"],"mappings":";;;;;;;;;;;;;AAeO,SAAS,OAAA,CAAQ,EAAE,MAAA,EAAQ,cAAA,EAAe,EAAiB;AAEhE,EAAA,MAAM,CAAC,CAAA,EAAG,eAAe,CAAA,GAAIA,2BAAA,EAAmB;AAChD,EAAA,MAAM,MAAA,GAASC,cAAW,SAAS,CAAA;AAEnC,EAAA,MAAM,WAAA,GAAc,CAACC,OAAAA,KAAmB;AACtC,IAAA,eAAA,CAAgBA,OAAM,CAAA;AACtB,IAAAC,yBAAA,CAAkB,4BAAA,EAA8B;AAAA,MAC9C,UAAA,EAAY;AAAA,KACb,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,MAAM,YAAA,mBACJC,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,OAAO,YAAA,EACrB,QAAA,EAAA;AAAA,oBAAAC,cAAA,CAAC,MAAA,EAAA,EAAK,WAAW,MAAA,CAAO,KAAA,EACtB,yCAACC,UAAA,EAAA,EAAM,OAAA,EAAQ,sDAAA,EAAuD,QAAA,EAAA,SAAA,EAAO,CAAA,EAC/E,CAAA;AAAA,oBACAD,cAAA;AAAA,MAACE,aAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAASC,MAAA,CAAE,wEAAA,EAA0E,mBAAmB,CAAA;AAAA,QACxG,OAAA,EAAS,MAAM,WAAA,CAAY,MAAM,CAAA;AAAA,QACjC,IAAA,EAAK;AAAA;AAAA;AACP,GAAA,EACF,CAAA;AAGF,EAAA,sCACGC,QAAA,EAAA,EAAM,KAAA,EAAO,YAAA,EAAc,SAAA,EAAW,OAAO,IAAA,EAC5C,QAAA,kBAAAJ,cAAA;AAAA,IAACK,aAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAS,KAAA;AAAA,MACT,MAAA,EAAQ,EAAA;AAAA,MACR,KAAA,EAAOC,oBAAU,MAAM,CAAA;AAAA,MACvB,aAAA,EAAe,EAAE,SAAA,EAAW,EAAE,UAAU,QAAA,EAAS,EAAG,sBAAsB,KAAA,EAAM;AAAA,MAChF,QAAA,EAAU,IAAA;AAAA,MACV,WAAA,EAAa;AAAA;AAAA,GACf,EACF,CAAA;AAEJ;AAEA,SAAS,UAAU,KAAA,EAAsB;AACvC,EAAA,OAAO;AAAA,IACL,IAAA,EAAMC,OAAA,CAAI,EAAE,QAAA,EAAU,GAAG,CAAA;AAAA,IACzB,KAAA,EAAOA,QAAI,EAAE,QAAA,EAAU,IAAI,UAAA,EAAY,KAAA,CAAM,UAAA,CAAW,gBAAA,EAAkB,CAAA;AAAA,IAC1E,YAAA,EAAcA,OAAA,CAAI,EAAE,OAAA,EAAS,MAAA,EAAQ,cAAA,EAAgB,eAAA,EAAiB,aAAA,EAAe,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA,EAAG;AAAA,GAC3G;AACF;;;;"}
1
+ {"version":3,"file":"Preview.cjs","sources":["../../../../src/components/visual-query-builder/Preview.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { useCopyToClipboard } from 'react-use';\n\nimport { type GrafanaTheme2 } from '@grafana/data';\nimport { Trans, t } from '@grafana/i18n';\nimport { reportInteraction } from '@grafana/runtime';\nimport { CodeEditor, Field, IconButton, useStyles2 } from '@grafana/ui';\n\nimport { formatSQL } from '../../utils/formatSQL';\n\ntype PreviewProps = {\n rawSql: string;\n datasourceType?: string;\n};\n\nexport function Preview({ rawSql, datasourceType }: PreviewProps) {\n // TODO: use zero index to give feedback about copy success\n const [_, copyToClipboard] = useCopyToClipboard();\n const styles = useStyles2(getStyles);\n\n const copyPreview = (rawSql: string) => {\n copyToClipboard(rawSql);\n reportInteraction('grafana_sql_preview_copied', {\n datasource: datasourceType,\n });\n };\n\n const labelElement = (\n <div className={styles.labelWrapper}>\n <span className={styles.label}>\n <Trans i18nKey=\"grafana-sql.components.preview.label-element.preview\">Preview</Trans>\n </span>\n <IconButton\n tooltip={t('grafana-sql.components.preview.label-element.tooltip-copy-to-clipboard', 'Copy to clipboard')}\n onClick={() => copyPreview(rawSql)}\n name=\"copy\"\n />\n </div>\n );\n\n return (\n <Field label={labelElement} className={styles.grow}>\n <CodeEditor\n language=\"sql\"\n height={80}\n value={formatSQL(rawSql)}\n monacoOptions={{ scrollbar: { vertical: 'hidden' }, scrollBeyondLastLine: false }}\n readOnly={true}\n showMiniMap={false}\n />\n </Field>\n );\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n grow: css({ flexGrow: 1 }),\n label: css({ fontSize: 12, fontWeight: theme.typography.fontWeightMedium }),\n labelWrapper: css({ display: 'flex', justifyContent: 'space-between', paddingBottom: theme.spacing(0.5) }),\n };\n}\n"],"names":["useCopyToClipboard","useStyles2","rawSql","reportInteraction","jsxs","jsx","Trans","IconButton","t","Field","CodeEditor","formatSQL","css"],"mappings":";;;;;;;;;;;;;AAeO,SAAS,OAAA,CAAQ,EAAE,MAAA,EAAQ,cAAA,EAAe,EAAiB;AAEhE,EAAA,MAAM,CAAC,CAAA,EAAG,eAAe,CAAA,GAAIA,2BAAA,EAAmB;AAChD,EAAA,MAAM,MAAA,GAASC,cAAW,SAAS,CAAA;AAEnC,EAAA,MAAM,WAAA,GAAc,CAACC,OAAAA,KAAmB;AACtC,IAAA,eAAA,CAAgBA,OAAM,CAAA;AACtB,IAAAC,yBAAA,CAAkB,4BAAA,EAA8B;AAAA,MAC9C,UAAA,EAAY;AAAA,KACb,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,MAAM,YAAA,mBACJC,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,OAAO,YAAA,EACrB,QAAA,EAAA;AAAA,oBAAAC,cAAA,CAAC,MAAA,EAAA,EAAK,WAAW,MAAA,CAAO,KAAA,EACtB,yCAACC,UAAA,EAAA,EAAM,OAAA,EAAQ,sDAAA,EAAuD,QAAA,EAAA,SAAA,EAAO,CAAA,EAC/E,CAAA;AAAA,oBACAD,cAAA;AAAA,MAACE,aAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAASC,MAAA,CAAE,wEAAA,EAA0E,mBAAmB,CAAA;AAAA,QACxG,OAAA,EAAS,MAAM,WAAA,CAAY,MAAM,CAAA;AAAA,QACjC,IAAA,EAAK;AAAA;AAAA;AACP,GAAA,EACF,CAAA;AAGF,EAAA,sCACGC,QAAA,EAAA,EAAM,KAAA,EAAO,YAAA,EAAc,SAAA,EAAW,OAAO,IAAA,EAC5C,QAAA,kBAAAJ,cAAA;AAAA,IAACK,aAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAS,KAAA;AAAA,MACT,MAAA,EAAQ,EAAA;AAAA,MACR,KAAA,EAAOC,oBAAU,MAAM,CAAA;AAAA,MACvB,aAAA,EAAe,EAAE,SAAA,EAAW,EAAE,UAAU,QAAA,EAAS,EAAG,sBAAsB,KAAA,EAAM;AAAA,MAChF,QAAA,EAAU,IAAA;AAAA,MACV,WAAA,EAAa;AAAA;AAAA,GACf,EACF,CAAA;AAEJ;AAEA,SAAS,UAAU,KAAA,EAAsB;AACvC,EAAA,OAAO;AAAA,IACL,IAAA,EAAMC,OAAA,CAAI,EAAE,QAAA,EAAU,GAAG,CAAA;AAAA,IACzB,KAAA,EAAOA,QAAI,EAAE,QAAA,EAAU,IAAI,UAAA,EAAY,KAAA,CAAM,UAAA,CAAW,gBAAA,EAAkB,CAAA;AAAA,IAC1E,YAAA,EAAcA,OAAA,CAAI,EAAE,OAAA,EAAS,MAAA,EAAQ,cAAA,EAAgB,eAAA,EAAiB,aAAA,EAAe,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA,EAAG;AAAA,GAC3G;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"SQLGroupByRow.cjs","sources":["../../../../src/components/visual-query-builder/SQLGroupByRow.tsx"],"sourcesContent":["import { SelectableValue } from '@grafana/data';\n\nimport { QueryWithDefaults } from '../../defaults';\nimport { DB, SQLQuery } from '../../types';\nimport { getColumnsWithIndices } from '../../utils/getColumnsWithIndices';\nimport { useSqlChange } from '../../utils/useSqlChange';\n\nimport { GroupByRow } from './GroupByRow';\n\ninterface SQLGroupByRowProps {\n fields: SelectableValue[];\n query: QueryWithDefaults;\n onQueryChange: (query: SQLQuery) => void;\n db: DB;\n}\n\nexport function SQLGroupByRow({ fields, query, onQueryChange, db }: SQLGroupByRowProps) {\n const { onSqlChange } = useSqlChange({ query, onQueryChange, db });\n let columnsWithIndices: SelectableValue[] = getColumnsWithIndices(query, fields);\n return <GroupByRow columns={columnsWithIndices} sql={query.sql!} onSqlChange={onSqlChange} />;\n}\n"],"names":["useSqlChange","getColumnsWithIndices","GroupByRow"],"mappings":";;;;;;;;;;AAgBO,SAAS,cAAc,EAAE,MAAA,EAAQ,KAAA,EAAO,aAAA,EAAe,IAAG,EAAuB;AACtF,EAAA,MAAM,EAAE,aAAY,GAAIA,yBAAA,CAAa,EAAE,KAAA,EAAO,aAAA,EAAe,IAAI,CAAA;AACjE,EAAA,IAAI,kBAAA,GAAwCC,2CAAA,CAAsB,KAAA,EAAO,MAAM,CAAA;AAC/E,EAAA,sCAAQC,qBAAA,EAAA,EAAW,OAAA,EAAS,oBAAoB,GAAA,EAAK,KAAA,CAAM,KAAM,WAAA,EAA0B,CAAA;AAC7F;;;;"}
1
+ {"version":3,"file":"SQLGroupByRow.cjs","sources":["../../../../src/components/visual-query-builder/SQLGroupByRow.tsx"],"sourcesContent":["import { type SelectableValue } from '@grafana/data';\n\nimport { type QueryWithDefaults } from '../../defaults';\nimport { type DB, type SQLQuery } from '../../types';\nimport { getColumnsWithIndices } from '../../utils/getColumnsWithIndices';\nimport { useSqlChange } from '../../utils/useSqlChange';\n\nimport { GroupByRow } from './GroupByRow';\n\ninterface SQLGroupByRowProps {\n fields: SelectableValue[];\n query: QueryWithDefaults;\n onQueryChange: (query: SQLQuery) => void;\n db: DB;\n}\n\nexport function SQLGroupByRow({ fields, query, onQueryChange, db }: SQLGroupByRowProps) {\n const { onSqlChange } = useSqlChange({ query, onQueryChange, db });\n let columnsWithIndices: SelectableValue[] = getColumnsWithIndices(query, fields);\n return <GroupByRow columns={columnsWithIndices} sql={query.sql!} onSqlChange={onSqlChange} />;\n}\n"],"names":["useSqlChange","getColumnsWithIndices","GroupByRow"],"mappings":";;;;;;;;;;AAgBO,SAAS,cAAc,EAAE,MAAA,EAAQ,KAAA,EAAO,aAAA,EAAe,IAAG,EAAuB;AACtF,EAAA,MAAM,EAAE,aAAY,GAAIA,yBAAA,CAAa,EAAE,KAAA,EAAO,aAAA,EAAe,IAAI,CAAA;AACjE,EAAA,IAAI,kBAAA,GAAwCC,2CAAA,CAAsB,KAAA,EAAO,MAAM,CAAA;AAC/E,EAAA,sCAAQC,qBAAA,EAAA,EAAW,OAAA,EAAS,oBAAoB,GAAA,EAAK,KAAA,CAAM,KAAM,WAAA,EAA0B,CAAA;AAC7F;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"SQLOrderByRow.cjs","sources":["../../../../src/components/visual-query-builder/SQLOrderByRow.tsx"],"sourcesContent":["import { SelectableValue } from '@grafana/data';\n\nimport { QueryWithDefaults } from '../../defaults';\nimport { DB, SQLQuery } from '../../types';\nimport { getColumnsWithIndices } from '../../utils/getColumnsWithIndices';\nimport { useSqlChange } from '../../utils/useSqlChange';\n\nimport { OrderByRow } from './OrderByRow';\n\ntype SQLOrderByRowProps = {\n fields: SelectableValue[];\n query: QueryWithDefaults;\n onQueryChange: (query: SQLQuery) => void;\n db: DB;\n};\n\nexport function SQLOrderByRow({ fields, query, onQueryChange, db }: SQLOrderByRowProps) {\n const { onSqlChange } = useSqlChange({ query, onQueryChange, db });\n let columnsWithIndices: SelectableValue[] = getColumnsWithIndices(query, fields);\n return <OrderByRow sql={query.sql!} onSqlChange={onSqlChange} columns={columnsWithIndices} />;\n}\n"],"names":["useSqlChange","getColumnsWithIndices","OrderByRow"],"mappings":";;;;;;;;;;AAgBO,SAAS,cAAc,EAAE,MAAA,EAAQ,KAAA,EAAO,aAAA,EAAe,IAAG,EAAuB;AACtF,EAAA,MAAM,EAAE,aAAY,GAAIA,yBAAA,CAAa,EAAE,KAAA,EAAO,aAAA,EAAe,IAAI,CAAA;AACjE,EAAA,IAAI,kBAAA,GAAwCC,2CAAA,CAAsB,KAAA,EAAO,MAAM,CAAA;AAC/E,EAAA,sCAAQC,qBAAA,EAAA,EAAW,GAAA,EAAK,MAAM,GAAA,EAAM,WAAA,EAA0B,SAAS,kBAAA,EAAoB,CAAA;AAC7F;;;;"}
1
+ {"version":3,"file":"SQLOrderByRow.cjs","sources":["../../../../src/components/visual-query-builder/SQLOrderByRow.tsx"],"sourcesContent":["import { type SelectableValue } from '@grafana/data';\n\nimport { type QueryWithDefaults } from '../../defaults';\nimport { type DB, type SQLQuery } from '../../types';\nimport { getColumnsWithIndices } from '../../utils/getColumnsWithIndices';\nimport { useSqlChange } from '../../utils/useSqlChange';\n\nimport { OrderByRow } from './OrderByRow';\n\ntype SQLOrderByRowProps = {\n fields: SelectableValue[];\n query: QueryWithDefaults;\n onQueryChange: (query: SQLQuery) => void;\n db: DB;\n};\n\nexport function SQLOrderByRow({ fields, query, onQueryChange, db }: SQLOrderByRowProps) {\n const { onSqlChange } = useSqlChange({ query, onQueryChange, db });\n let columnsWithIndices: SelectableValue[] = getColumnsWithIndices(query, fields);\n return <OrderByRow sql={query.sql!} onSqlChange={onSqlChange} columns={columnsWithIndices} />;\n}\n"],"names":["useSqlChange","getColumnsWithIndices","OrderByRow"],"mappings":";;;;;;;;;;AAgBO,SAAS,cAAc,EAAE,MAAA,EAAQ,KAAA,EAAO,aAAA,EAAe,IAAG,EAAuB;AACtF,EAAA,MAAM,EAAE,aAAY,GAAIA,yBAAA,CAAa,EAAE,KAAA,EAAO,aAAA,EAAe,IAAI,CAAA;AACjE,EAAA,IAAI,kBAAA,GAAwCC,2CAAA,CAAsB,KAAA,EAAO,MAAM,CAAA;AAC/E,EAAA,sCAAQC,qBAAA,EAAA,EAAW,GAAA,EAAK,MAAM,GAAA,EAAM,WAAA,EAA0B,SAAS,kBAAA,EAAoB,CAAA;AAC7F;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"SQLWhereRow.cjs","sources":["../../../../src/components/visual-query-builder/SQLWhereRow.tsx"],"sourcesContent":["import { useAsync } from 'react-use';\n\nimport { SelectableValue, TypedVariableModel } from '@grafana/data';\nimport { getTemplateSrv } from '@grafana/runtime';\n\nimport { QueryWithDefaults } from '../../defaults';\nimport { DB, SQLExpression, SQLQuery, SQLSelectableValue } from '../../types';\nimport { useSqlChange } from '../../utils/useSqlChange';\n\nimport { Config } from './AwesomeQueryBuilder';\nimport { WhereRow } from './WhereRow';\n\ninterface WhereRowProps {\n query: QueryWithDefaults;\n fields: SelectableValue[];\n onQueryChange: (query: SQLQuery) => void;\n db: DB;\n}\n\nexport function SQLWhereRow({ query, fields, onQueryChange, db }: WhereRowProps) {\n const state = useAsync(async () => {\n return mapFieldsToTypes(fields);\n }, [fields]);\n\n const { onSqlChange } = useSqlChange({ query, onQueryChange, db });\n\n return (\n <WhereRow\n // TODO: fix key that's used to force clean render or SQLWhereRow - otherwise it doesn't render operators correctly\n key={JSON.stringify(state.value)}\n config={{ fields: state.value || {} }}\n sql={query.sql!}\n onSqlChange={(val: SQLExpression) => {\n const templateVars = getTemplateSrv().getVariables();\n\n removeQuotesForMultiVariables(val, templateVars);\n\n onSqlChange(val);\n }}\n />\n );\n}\n\n// needed for awesome query builder\nfunction mapFieldsToTypes(columns: SQLSelectableValue[]) {\n const fields: Config['fields'] = {};\n for (const col of columns) {\n fields[col.value] = {\n type: col.raqbFieldType || 'text',\n valueSources: ['value'],\n mainWidgetProps: { customProps: { icon: col.icon } },\n };\n }\n return fields;\n}\n\nexport function removeQuotesForMultiVariables(val: SQLExpression, templateVars: TypedVariableModel[]) {\n const multiVariableInWhereString = (tv: TypedVariableModel) =>\n 'multi' in tv &&\n tv.multi &&\n (val.whereString?.includes(`\\${${tv.name}}`) || val.whereString?.includes(`$${tv.name}`));\n\n if (templateVars.some((tv) => multiVariableInWhereString(tv))) {\n val.whereString = val.whereString?.replaceAll(\"')\", ')');\n val.whereString = val.whereString?.replaceAll(\"('\", '(');\n }\n}\n"],"names":["useAsync","useSqlChange","jsx","WhereRow","getTemplateSrv","_a","_b"],"mappings":";;;;;;;;;;;AAmBO,SAAS,YAAY,EAAE,KAAA,EAAO,MAAA,EAAQ,aAAA,EAAe,IAAG,EAAkB;AAC/E,EAAA,MAAM,KAAA,GAAQA,kBAAS,YAAY;AACjC,IAAA,OAAO,iBAAiB,MAAM,CAAA;AAAA,EAChC,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,MAAM,EAAE,aAAY,GAAIC,yBAAA,CAAa,EAAE,KAAA,EAAO,aAAA,EAAe,IAAI,CAAA;AAEjE,EAAA,uBACEC,cAAA;AAAA,IAACC,iBAAA;AAAA,IAAA;AAAA,MAGC,QAAQ,EAAE,MAAA,EAAQ,KAAA,CAAM,KAAA,IAAS,EAAC,EAAE;AAAA,MACpC,KAAK,KAAA,CAAM,GAAA;AAAA,MACX,WAAA,EAAa,CAAC,GAAA,KAAuB;AACnC,QAAA,MAAM,YAAA,GAAeC,sBAAA,EAAe,CAAE,YAAA,EAAa;AAEnD,QAAA,6BAAA,CAA8B,KAAK,YAAY,CAAA;AAE/C,QAAA,WAAA,CAAY,GAAG,CAAA;AAAA,MACjB;AAAA,KAAA;AAAA,IATK,IAAA,CAAK,SAAA,CAAU,KAAA,CAAM,KAAK;AAAA,GAUjC;AAEJ;AAGA,SAAS,iBAAiB,OAAA,EAA+B;AACvD,EAAA,MAAM,SAA2B,EAAC;AAClC,EAAA,KAAA,MAAW,OAAO,OAAA,EAAS;AACzB,IAAA,MAAA,CAAO,GAAA,CAAI,KAAK,CAAA,GAAI;AAAA,MAClB,IAAA,EAAM,IAAI,aAAA,IAAiB,MAAA;AAAA,MAC3B,YAAA,EAAc,CAAC,OAAO,CAAA;AAAA,MACtB,iBAAiB,EAAE,WAAA,EAAa,EAAE,IAAA,EAAM,GAAA,CAAI,MAAK;AAAE,KACrD;AAAA,EACF;AACA,EAAA,OAAO,MAAA;AACT;AAEO,SAAS,6BAAA,CAA8B,KAAoB,YAAA,EAAoC;AAxDtG,EAAA,IAAA,EAAA,EAAA,EAAA;AAyDE,EAAA,MAAM,0BAAA,GAA6B,CAAC,EAAA,KAAwB;AAzD9D,IAAA,IAAAC,GAAAA,EAAAC,GAAAA;AA0DI,IAAA,OAAA,OAAA,IAAW,EAAA,IACX,GAAG,KAAA,KAAA,CAAA,CACFD,GAAAA,GAAA,IAAI,WAAA,KAAJ,IAAA,GAAA,KAAA,CAAA,GAAAA,IAAiB,QAAA,CAAS,CAAA,GAAA,EAAM,GAAG,IAAI,CAAA,CAAA,CAAA,CAAA,MAAA,CAAQC,MAAA,GAAA,CAAI,WAAA,KAAJ,gBAAAA,GAAAA,CAAiB,QAAA,CAAS,CAAA,CAAA,EAAI,EAAA,CAAG,IAAI,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,EAAA,CAAA;AAEvF,EAAA,IAAI,aAAa,IAAA,CAAK,CAAC,OAAO,0BAAA,CAA2B,EAAE,CAAC,CAAA,EAAG;AAC7D,IAAA,GAAA,CAAI,WAAA,GAAA,CAAc,EAAA,GAAA,GAAA,CAAI,WAAA,KAAJ,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAiB,WAAW,IAAA,EAAM,GAAA,CAAA;AACpD,IAAA,GAAA,CAAI,WAAA,GAAA,CAAc,EAAA,GAAA,GAAA,CAAI,WAAA,KAAJ,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAiB,WAAW,IAAA,EAAM,GAAA,CAAA;AAAA,EACtD;AACF;;;;;"}
1
+ {"version":3,"file":"SQLWhereRow.cjs","sources":["../../../../src/components/visual-query-builder/SQLWhereRow.tsx"],"sourcesContent":["import { useAsync } from 'react-use';\n\nimport { type SelectableValue, type TypedVariableModel } from '@grafana/data';\nimport { getTemplateSrv } from '@grafana/runtime';\n\nimport { type QueryWithDefaults } from '../../defaults';\nimport { type DB, type SQLExpression, type SQLQuery, type SQLSelectableValue } from '../../types';\nimport { useSqlChange } from '../../utils/useSqlChange';\n\nimport { type Config } from './AwesomeQueryBuilder';\nimport { WhereRow } from './WhereRow';\n\ninterface WhereRowProps {\n query: QueryWithDefaults;\n fields: SelectableValue[];\n onQueryChange: (query: SQLQuery) => void;\n db: DB;\n}\n\nexport function SQLWhereRow({ query, fields, onQueryChange, db }: WhereRowProps) {\n const state = useAsync(async () => {\n return mapFieldsToTypes(fields);\n }, [fields]);\n\n const { onSqlChange } = useSqlChange({ query, onQueryChange, db });\n\n return (\n <WhereRow\n // TODO: fix key that's used to force clean render or SQLWhereRow - otherwise it doesn't render operators correctly\n key={JSON.stringify(state.value)}\n config={{ fields: state.value || {} }}\n sql={query.sql!}\n onSqlChange={(val: SQLExpression) => {\n const templateVars = getTemplateSrv().getVariables();\n\n removeQuotesForMultiVariables(val, templateVars);\n\n onSqlChange(val);\n }}\n />\n );\n}\n\n// needed for awesome query builder\nfunction mapFieldsToTypes(columns: SQLSelectableValue[]) {\n const fields: Config['fields'] = {};\n for (const col of columns) {\n fields[col.value] = {\n type: col.raqbFieldType || 'text',\n valueSources: ['value'],\n mainWidgetProps: { customProps: { icon: col.icon } },\n };\n }\n return fields;\n}\n\nexport function removeQuotesForMultiVariables(val: SQLExpression, templateVars: TypedVariableModel[]) {\n const multiVariableInWhereString = (tv: TypedVariableModel) =>\n 'multi' in tv &&\n tv.multi &&\n (val.whereString?.includes(`\\${${tv.name}}`) || val.whereString?.includes(`$${tv.name}`));\n\n if (templateVars.some((tv) => multiVariableInWhereString(tv))) {\n val.whereString = val.whereString?.replaceAll(\"')\", ')');\n val.whereString = val.whereString?.replaceAll(\"('\", '(');\n }\n}\n"],"names":["useAsync","useSqlChange","jsx","WhereRow","getTemplateSrv","_a","_b"],"mappings":";;;;;;;;;;;AAmBO,SAAS,YAAY,EAAE,KAAA,EAAO,MAAA,EAAQ,aAAA,EAAe,IAAG,EAAkB;AAC/E,EAAA,MAAM,KAAA,GAAQA,kBAAS,YAAY;AACjC,IAAA,OAAO,iBAAiB,MAAM,CAAA;AAAA,EAChC,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,MAAM,EAAE,aAAY,GAAIC,yBAAA,CAAa,EAAE,KAAA,EAAO,aAAA,EAAe,IAAI,CAAA;AAEjE,EAAA,uBACEC,cAAA;AAAA,IAACC,iBAAA;AAAA,IAAA;AAAA,MAGC,QAAQ,EAAE,MAAA,EAAQ,KAAA,CAAM,KAAA,IAAS,EAAC,EAAE;AAAA,MACpC,KAAK,KAAA,CAAM,GAAA;AAAA,MACX,WAAA,EAAa,CAAC,GAAA,KAAuB;AACnC,QAAA,MAAM,YAAA,GAAeC,sBAAA,EAAe,CAAE,YAAA,EAAa;AAEnD,QAAA,6BAAA,CAA8B,KAAK,YAAY,CAAA;AAE/C,QAAA,WAAA,CAAY,GAAG,CAAA;AAAA,MACjB;AAAA,KAAA;AAAA,IATK,IAAA,CAAK,SAAA,CAAU,KAAA,CAAM,KAAK;AAAA,GAUjC;AAEJ;AAGA,SAAS,iBAAiB,OAAA,EAA+B;AACvD,EAAA,MAAM,SAA2B,EAAC;AAClC,EAAA,KAAA,MAAW,OAAO,OAAA,EAAS;AACzB,IAAA,MAAA,CAAO,GAAA,CAAI,KAAK,CAAA,GAAI;AAAA,MAClB,IAAA,EAAM,IAAI,aAAA,IAAiB,MAAA;AAAA,MAC3B,YAAA,EAAc,CAAC,OAAO,CAAA;AAAA,MACtB,iBAAiB,EAAE,WAAA,EAAa,EAAE,IAAA,EAAM,GAAA,CAAI,MAAK;AAAE,KACrD;AAAA,EACF;AACA,EAAA,OAAO,MAAA;AACT;AAEO,SAAS,6BAAA,CAA8B,KAAoB,YAAA,EAAoC;AAxDtG,EAAA,IAAA,EAAA,EAAA,EAAA;AAyDE,EAAA,MAAM,0BAAA,GAA6B,CAAC,EAAA,KAAwB;AAzD9D,IAAA,IAAAC,GAAAA,EAAAC,GAAAA;AA0DI,IAAA,OAAA,OAAA,IAAW,EAAA,IACX,GAAG,KAAA,KAAA,CAAA,CACFD,GAAAA,GAAA,IAAI,WAAA,KAAJ,IAAA,GAAA,KAAA,CAAA,GAAAA,IAAiB,QAAA,CAAS,CAAA,GAAA,EAAM,GAAG,IAAI,CAAA,CAAA,CAAA,CAAA,MAAA,CAAQC,MAAA,GAAA,CAAI,WAAA,KAAJ,gBAAAA,GAAAA,CAAiB,QAAA,CAAS,CAAA,CAAA,EAAI,EAAA,CAAG,IAAI,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,EAAA,CAAA;AAEvF,EAAA,IAAI,aAAa,IAAA,CAAK,CAAC,OAAO,0BAAA,CAA2B,EAAE,CAAC,CAAA,EAAG;AAC7D,IAAA,GAAA,CAAI,WAAA,GAAA,CAAc,EAAA,GAAA,GAAA,CAAI,WAAA,KAAJ,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAiB,WAAW,IAAA,EAAM,GAAA,CAAA;AACpD,IAAA,GAAA,CAAI,WAAA,GAAA,CAAc,EAAA,GAAA,GAAA,CAAI,WAAA,KAAJ,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAiB,WAAW,IAAA,EAAM,GAAA,CAAA;AAAA,EACtD;AACF;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"SelectColumn.cjs","sources":["../../../../src/components/visual-query-builder/SelectColumn.tsx"],"sourcesContent":["import { useId } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { t } from '@grafana/i18n';\nimport { EditorField } from '@grafana/plugin-ui';\nimport { Select } from '@grafana/ui';\n\ninterface Props {\n columns: Array<SelectableValue<string>>;\n onParameterChange: (value?: string) => void;\n value: SelectableValue<string> | null;\n}\n\nexport function SelectColumn({ columns, onParameterChange, value }: Props) {\n const selectInputId = useId();\n\n return (\n <EditorField label={t('grafana-sql.components.select-column.label-column', 'Column')} width={25}>\n <Select\n value={value}\n data-testid={selectors.components.SQLQueryEditor.selectColumn}\n inputId={selectInputId}\n menuShouldPortal\n options={[{ label: '*', value: '*' }, ...columns]}\n allowCustomValue\n onChange={(s) => onParameterChange(s.value)}\n />\n </EditorField>\n );\n}\n"],"names":["useId","jsx","EditorField","t","Select","selectors"],"mappings":";;;;;;;;;;;;AAcO,SAAS,YAAA,CAAa,EAAE,OAAA,EAAS,iBAAA,EAAmB,OAAM,EAAU;AACzE,EAAA,MAAM,gBAAgBA,WAAA,EAAM;AAE5B,EAAA,uBACEC,cAAA,CAACC,wBAAY,KAAA,EAAOC,MAAA,CAAE,qDAAqD,QAAQ,CAAA,EAAG,OAAO,EAAA,EAC3F,QAAA,kBAAAF,cAAA;AAAA,IAACG,SAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,aAAA,EAAaC,sBAAA,CAAU,UAAA,CAAW,cAAA,CAAe,YAAA;AAAA,MACjD,OAAA,EAAS,aAAA;AAAA,MACT,gBAAA,EAAgB,IAAA;AAAA,MAChB,OAAA,EAAS,CAAC,EAAE,KAAA,EAAO,KAAK,KAAA,EAAO,GAAA,EAAI,EAAG,GAAG,OAAO,CAAA;AAAA,MAChD,gBAAA,EAAgB,IAAA;AAAA,MAChB,QAAA,EAAU,CAAC,CAAA,KAAM,iBAAA,CAAkB,EAAE,KAAK;AAAA;AAAA,GAC5C,EACF,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"SelectColumn.cjs","sources":["../../../../src/components/visual-query-builder/SelectColumn.tsx"],"sourcesContent":["import { useId } from 'react';\n\nimport { type SelectableValue } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { t } from '@grafana/i18n';\nimport { EditorField } from '@grafana/plugin-ui';\nimport { Select } from '@grafana/ui';\n\ninterface Props {\n columns: Array<SelectableValue<string>>;\n onParameterChange: (value?: string) => void;\n value: SelectableValue<string> | null;\n}\n\nexport function SelectColumn({ columns, onParameterChange, value }: Props) {\n const selectInputId = useId();\n\n return (\n <EditorField label={t('grafana-sql.components.select-column.label-column', 'Column')} width={25}>\n <Select\n value={value}\n data-testid={selectors.components.SQLQueryEditor.selectColumn}\n inputId={selectInputId}\n menuShouldPortal\n options={[{ label: '*', value: '*' }, ...columns]}\n allowCustomValue\n onChange={(s) => onParameterChange(s.value)}\n />\n </EditorField>\n );\n}\n"],"names":["useId","jsx","EditorField","t","Select","selectors"],"mappings":";;;;;;;;;;;;AAcO,SAAS,YAAA,CAAa,EAAE,OAAA,EAAS,iBAAA,EAAmB,OAAM,EAAU;AACzE,EAAA,MAAM,gBAAgBA,WAAA,EAAM;AAE5B,EAAA,uBACEC,cAAA,CAACC,wBAAY,KAAA,EAAOC,MAAA,CAAE,qDAAqD,QAAQ,CAAA,EAAG,OAAO,EAAA,EAC3F,QAAA,kBAAAF,cAAA;AAAA,IAACG,SAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,aAAA,EAAaC,sBAAA,CAAU,UAAA,CAAW,cAAA,CAAe,YAAA;AAAA,MACjD,OAAA,EAAS,aAAA;AAAA,MACT,gBAAA,EAAgB,IAAA;AAAA,MAChB,OAAA,EAAS,CAAC,EAAE,KAAA,EAAO,KAAK,KAAA,EAAO,GAAA,EAAI,EAAG,GAAG,OAAO,CAAA;AAAA,MAChD,gBAAA,EAAgB,IAAA;AAAA,MAChB,QAAA,EAAU,CAAC,CAAA,KAAM,iBAAA,CAAkB,EAAE,KAAK;AAAA;AAAA,GAC5C,EACF,CAAA;AAEJ;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"SelectCustomFunctionParameters.cjs","sources":["../../../../src/components/visual-query-builder/SelectCustomFunctionParameters.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { useCallback } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { t } from '@grafana/i18n';\nimport { Button, InlineLabel, Input, Stack, useStyles2 } from '@grafana/ui';\n\nimport { QueryEditorExpressionType } from '../../expressions';\nimport { SQLExpression, SQLQuery } from '../../types';\nimport { getColumnValue } from '../../utils/sql.utils';\n\nimport { SelectColumn } from './SelectColumn';\n\ninterface Props {\n columns: Array<SelectableValue<string>>;\n query: SQLQuery;\n onSqlChange: (sql: SQLExpression) => void;\n onParameterChange: (index: number) => (value?: string) => void;\n currentColumnIndex: number;\n}\n\nexport function SelectCustomFunctionParameters({\n columns,\n query,\n onSqlChange,\n onParameterChange,\n currentColumnIndex,\n}: Props) {\n const styles = useStyles2(getStyles);\n const macroOrFunction = query.sql?.columns?.[currentColumnIndex];\n\n const addParameter = useCallback(\n (index: number) => {\n const item = query.sql?.columns?.[index];\n if (!item) {\n return;\n }\n\n item.parameters = item.parameters\n ? [...item.parameters, { type: QueryEditorExpressionType.FunctionParameter, name: '' }]\n : [];\n\n const newSql: SQLExpression = {\n ...query.sql,\n columns: query.sql?.columns?.map((c, i) => (i === index ? item : c)),\n };\n\n onSqlChange(newSql);\n },\n [onSqlChange, query.sql]\n );\n\n const removeParameter = useCallback(\n (columnIndex: number, index: number) => {\n const item = query.sql?.columns?.[columnIndex];\n if (!item?.parameters) {\n return;\n }\n item.parameters = item.parameters?.filter((_, i) => i !== index);\n\n const newSql: SQLExpression = {\n ...query.sql,\n columns: query.sql?.columns?.map((c, i) => (i === columnIndex ? item : c)),\n };\n\n onSqlChange(newSql);\n },\n [onSqlChange, query.sql]\n );\n\n function renderParameters(columnIndex: number) {\n if (!macroOrFunction?.parameters || macroOrFunction.parameters.length <= 1) {\n return null;\n }\n\n const paramComponents = macroOrFunction.parameters.map((param, index) => {\n // Skip the first parameter as it is the column name\n if (index === 0) {\n return null;\n }\n\n return (\n <Stack key={index} gap={2}>\n <InlineLabel className={styles.label}>,</InlineLabel>\n <Input\n onChange={(e) => onParameterChange(index)(e.currentTarget.value)}\n value={param.name}\n aria-label={t(\n 'grafana-sql.components.select-custom-function-parameters.aria-label-parameter',\n 'Parameter {{index}} for column {{columnIndex}}',\n { index, columnIndex }\n )}\n data-testid={selectors.components.SQLQueryEditor.selectInputParameter}\n addonAfter={\n <Button\n aria-label={t(\n 'grafana-sql.components.select-custom-function-parameters.render-parameters.params.title-remove-parameter',\n 'Remove parameter'\n )}\n type=\"button\"\n icon=\"times\"\n variant=\"secondary\"\n size=\"md\"\n onClick={() => removeParameter(columnIndex, index)}\n />\n }\n />\n </Stack>\n );\n });\n return paramComponents;\n }\n\n return (\n <>\n <InlineLabel className={styles.label}>(</InlineLabel>\n <SelectColumn\n columns={columns}\n onParameterChange={(s) => onParameterChange(0)(s)}\n value={getColumnValue(macroOrFunction?.parameters?.[0])}\n />\n {renderParameters(currentColumnIndex)}\n <Button\n type=\"button\"\n onClick={() => addParameter(currentColumnIndex)}\n variant=\"secondary\"\n size=\"md\"\n icon=\"plus\"\n aria-label={t('grafana-sql.components.select-custom-function-parameters.title-add-parameter', 'Add parameter')}\n />\n <InlineLabel className={styles.label}>)</InlineLabel>\n </>\n );\n}\n\nconst getStyles = () => {\n return {\n label: css({\n padding: 0,\n margin: 0,\n width: 'unset',\n }),\n };\n};\n"],"names":["useStyles2","useCallback","_a","_b","_c","QueryEditorExpressionType","jsxs","Stack","jsx","InlineLabel","Input","t","selectors","Button","Fragment","SelectColumn","getColumnValue","css"],"mappings":"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"}
1
+ {"version":3,"file":"SelectCustomFunctionParameters.cjs","sources":["../../../../src/components/visual-query-builder/SelectCustomFunctionParameters.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { useCallback } from 'react';\n\nimport { type SelectableValue } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { t } from '@grafana/i18n';\nimport { Button, InlineLabel, Input, Stack, useStyles2 } from '@grafana/ui';\n\nimport { QueryEditorExpressionType } from '../../expressions';\nimport { type SQLExpression, type SQLQuery } from '../../types';\nimport { getColumnValue } from '../../utils/sql.utils';\n\nimport { SelectColumn } from './SelectColumn';\n\ninterface Props {\n columns: Array<SelectableValue<string>>;\n query: SQLQuery;\n onSqlChange: (sql: SQLExpression) => void;\n onParameterChange: (index: number) => (value?: string) => void;\n currentColumnIndex: number;\n}\n\nexport function SelectCustomFunctionParameters({\n columns,\n query,\n onSqlChange,\n onParameterChange,\n currentColumnIndex,\n}: Props) {\n const styles = useStyles2(getStyles);\n const macroOrFunction = query.sql?.columns?.[currentColumnIndex];\n\n const addParameter = useCallback(\n (index: number) => {\n const item = query.sql?.columns?.[index];\n if (!item) {\n return;\n }\n\n item.parameters = item.parameters\n ? [...item.parameters, { type: QueryEditorExpressionType.FunctionParameter, name: '' }]\n : [];\n\n const newSql: SQLExpression = {\n ...query.sql,\n columns: query.sql?.columns?.map((c, i) => (i === index ? item : c)),\n };\n\n onSqlChange(newSql);\n },\n [onSqlChange, query.sql]\n );\n\n const removeParameter = useCallback(\n (columnIndex: number, index: number) => {\n const item = query.sql?.columns?.[columnIndex];\n if (!item?.parameters) {\n return;\n }\n item.parameters = item.parameters?.filter((_, i) => i !== index);\n\n const newSql: SQLExpression = {\n ...query.sql,\n columns: query.sql?.columns?.map((c, i) => (i === columnIndex ? item : c)),\n };\n\n onSqlChange(newSql);\n },\n [onSqlChange, query.sql]\n );\n\n function renderParameters(columnIndex: number) {\n if (!macroOrFunction?.parameters || macroOrFunction.parameters.length <= 1) {\n return null;\n }\n\n const paramComponents = macroOrFunction.parameters.map((param, index) => {\n // Skip the first parameter as it is the column name\n if (index === 0) {\n return null;\n }\n\n return (\n <Stack key={index} gap={2}>\n <InlineLabel className={styles.label}>,</InlineLabel>\n <Input\n onChange={(e) => onParameterChange(index)(e.currentTarget.value)}\n value={param.name}\n aria-label={t(\n 'grafana-sql.components.select-custom-function-parameters.aria-label-parameter',\n 'Parameter {{index}} for column {{columnIndex}}',\n { index, columnIndex }\n )}\n data-testid={selectors.components.SQLQueryEditor.selectInputParameter}\n addonAfter={\n <Button\n aria-label={t(\n 'grafana-sql.components.select-custom-function-parameters.render-parameters.params.title-remove-parameter',\n 'Remove parameter'\n )}\n type=\"button\"\n icon=\"times\"\n variant=\"secondary\"\n size=\"md\"\n onClick={() => removeParameter(columnIndex, index)}\n />\n }\n />\n </Stack>\n );\n });\n return paramComponents;\n }\n\n return (\n <>\n <InlineLabel className={styles.label}>(</InlineLabel>\n <SelectColumn\n columns={columns}\n onParameterChange={(s) => onParameterChange(0)(s)}\n value={getColumnValue(macroOrFunction?.parameters?.[0])}\n />\n {renderParameters(currentColumnIndex)}\n <Button\n type=\"button\"\n onClick={() => addParameter(currentColumnIndex)}\n variant=\"secondary\"\n size=\"md\"\n icon=\"plus\"\n aria-label={t('grafana-sql.components.select-custom-function-parameters.title-add-parameter', 'Add parameter')}\n />\n <InlineLabel className={styles.label}>)</InlineLabel>\n </>\n );\n}\n\nconst getStyles = () => {\n return {\n label: css({\n padding: 0,\n margin: 0,\n width: 'unset',\n }),\n };\n};\n"],"names":["useStyles2","useCallback","_a","_b","_c","QueryEditorExpressionType","jsxs","Stack","jsx","InlineLabel","Input","t","selectors","Button","Fragment","SelectColumn","getColumnValue","css"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SelectFunctionParameters.cjs","sources":["../../../../src/components/visual-query-builder/SelectFunctionParameters.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { useCallback, useEffect, useId, useState } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { EditorField } from '@grafana/plugin-ui';\nimport { InlineLabel, Input, Select, Stack, useStyles2 } from '@grafana/ui';\n\nimport { QueryEditorExpressionType } from '../../expressions';\nimport { DB, SQLExpression, SQLQuery } from '../../types';\nimport { getColumnValue } from '../../utils/sql.utils';\n\nimport { SelectColumn } from './SelectColumn';\nimport { SelectCustomFunctionParameters } from './SelectCustomFunctionParameters';\n\ninterface Props {\n query: SQLQuery;\n onSqlChange: (sql: SQLExpression) => void;\n currentColumnIndex: number;\n db: DB;\n columns: Array<SelectableValue<string>>;\n}\n\nexport function SelectFunctionParameters({ query, onSqlChange, currentColumnIndex, db, columns }: Props) {\n const selectInputId = useId();\n const macroOrFunction = query.sql?.columns?.[currentColumnIndex];\n const styles = useStyles2(getStyles);\n const func = db.functions().find((f) => f.name === macroOrFunction?.name);\n\n const [fieldsFromFunction, setFieldsFromFunction] = useState<Array<Array<SelectableValue<string>>>>([]);\n\n useEffect(() => {\n const getFieldsFromFunction = async () => {\n if (!func) {\n return;\n }\n const options: Array<Array<SelectableValue<string>>> = [];\n for (const param of func.parameters ?? []) {\n if (param.options) {\n options.push(await param.options(query));\n } else {\n options.push([]);\n }\n }\n setFieldsFromFunction(options);\n };\n getFieldsFromFunction();\n\n // It is fine to ignore the warning here and omit the query object\n // only table property is used in the query object and whenever table changes the component is re-rendered\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [macroOrFunction?.name]);\n\n const onParameterChange = useCallback(\n (index: number, keepIndex?: boolean) => (s: string | undefined) => {\n const item = query.sql?.columns?.[currentColumnIndex];\n if (!item) {\n return;\n }\n if (!item.parameters) {\n item.parameters = [];\n }\n if (item.parameters[index] === undefined) {\n item.parameters[index] = { type: QueryEditorExpressionType.FunctionParameter, name: s };\n } else if (s == null && keepIndex) {\n // Remove value from index\n item.parameters = item.parameters.map((p, i) => (i === index ? { ...p, name: '' } : p));\n // Remove the last empty parameter\n if (item.parameters[item.parameters.length - 1]?.name === '') {\n item.parameters = item.parameters.filter((p) => p.name !== '');\n }\n } else if (s == null) {\n item.parameters = item.parameters.filter((_, i) => i !== index);\n } else {\n item.parameters = item.parameters.map((p, i) => (i === index ? { ...p, name: s } : p));\n }\n\n const newSql: SQLExpression = {\n ...query.sql,\n columns: query.sql?.columns?.map((c, i) => (i === currentColumnIndex ? item : c)),\n };\n\n onSqlChange(newSql);\n },\n [currentColumnIndex, onSqlChange, query.sql]\n );\n\n function renderParametersWithFunctions() {\n if (!func?.parameters) {\n return null;\n }\n\n return func?.parameters.map((funcParam, index) => {\n return (\n <Stack key={index} alignItems=\"flex-end\" gap={2}>\n <EditorField label={funcParam.name} width={25} optional={!funcParam.required}>\n <>\n {funcParam.options ? (\n <Select\n value={getColumnValue(macroOrFunction?.parameters![index])}\n options={fieldsFromFunction?.[index]}\n data-testid={selectors.components.SQLQueryEditor.selectFunctionParameter(funcParam.name)}\n inputId={selectInputId}\n menuShouldPortal\n allowCustomValue\n isClearable\n onChange={(s) => onParameterChange(index, true)(s?.value)}\n />\n ) : (\n <Input\n onChange={(e) => onParameterChange(index, true)(e.currentTarget.value)}\n value={macroOrFunction?.parameters![index]?.name}\n data-testid={selectors.components.SQLQueryEditor.selectInputParameter}\n />\n )}\n </>\n </EditorField>\n {func.parameters!.length !== index + 1 && <InlineLabel className={styles.label}>,</InlineLabel>}\n </Stack>\n );\n });\n }\n\n // This means that no function is selected, we render a column selector\n if (macroOrFunction?.name === undefined) {\n return (\n <SelectColumn\n columns={columns}\n onParameterChange={(s) => onParameterChange(0)(s)}\n value={getColumnValue(macroOrFunction?.parameters?.[0])}\n />\n );\n }\n\n // If the function is not found, that means that it might be a custom value\n // we let the user add any number of parameters\n if (!func) {\n return (\n <SelectCustomFunctionParameters\n query={query}\n onSqlChange={onSqlChange}\n currentColumnIndex={currentColumnIndex}\n columns={columns}\n onParameterChange={onParameterChange}\n />\n );\n }\n\n // Else we render the function parameters based on the provided settings\n return (\n <>\n <InlineLabel className={styles.label}>(</InlineLabel>\n {renderParametersWithFunctions()}\n <InlineLabel className={styles.label}>)</InlineLabel>\n </>\n );\n}\n\nconst getStyles = () => {\n return {\n label: css({\n padding: 0,\n margin: 0,\n width: 'unset',\n }),\n };\n};\n"],"names":["useId","useStyles2","useState","useEffect","_a","useCallback","_b","_c","QueryEditorExpressionType","jsxs","Stack","jsx","EditorField","Fragment","Select","getColumnValue","selectors","Input","InlineLabel","SelectColumn","SelectCustomFunctionParameters","css"],"mappings":"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"}
1
+ {"version":3,"file":"SelectFunctionParameters.cjs","sources":["../../../../src/components/visual-query-builder/SelectFunctionParameters.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { useCallback, useEffect, useId, useState } from 'react';\n\nimport { type SelectableValue } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { EditorField } from '@grafana/plugin-ui';\nimport { InlineLabel, Input, Select, Stack, useStyles2 } from '@grafana/ui';\n\nimport { QueryEditorExpressionType } from '../../expressions';\nimport { type DB, type SQLExpression, type SQLQuery } from '../../types';\nimport { getColumnValue } from '../../utils/sql.utils';\n\nimport { SelectColumn } from './SelectColumn';\nimport { SelectCustomFunctionParameters } from './SelectCustomFunctionParameters';\n\ninterface Props {\n query: SQLQuery;\n onSqlChange: (sql: SQLExpression) => void;\n currentColumnIndex: number;\n db: DB;\n columns: Array<SelectableValue<string>>;\n}\n\nexport function SelectFunctionParameters({ query, onSqlChange, currentColumnIndex, db, columns }: Props) {\n const selectInputId = useId();\n const macroOrFunction = query.sql?.columns?.[currentColumnIndex];\n const styles = useStyles2(getStyles);\n const func = db.functions().find((f) => f.name === macroOrFunction?.name);\n\n const [fieldsFromFunction, setFieldsFromFunction] = useState<Array<Array<SelectableValue<string>>>>([]);\n\n useEffect(() => {\n const getFieldsFromFunction = async () => {\n if (!func) {\n return;\n }\n const options: Array<Array<SelectableValue<string>>> = [];\n for (const param of func.parameters ?? []) {\n if (param.options) {\n options.push(await param.options(query));\n } else {\n options.push([]);\n }\n }\n setFieldsFromFunction(options);\n };\n getFieldsFromFunction();\n\n // It is fine to ignore the warning here and omit the query object\n // only table property is used in the query object and whenever table changes the component is re-rendered\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [macroOrFunction?.name]);\n\n const onParameterChange = useCallback(\n (index: number, keepIndex?: boolean) => (s: string | undefined) => {\n const item = query.sql?.columns?.[currentColumnIndex];\n if (!item) {\n return;\n }\n if (!item.parameters) {\n item.parameters = [];\n }\n if (item.parameters[index] === undefined) {\n item.parameters[index] = { type: QueryEditorExpressionType.FunctionParameter, name: s };\n } else if (s == null && keepIndex) {\n // Remove value from index\n item.parameters = item.parameters.map((p, i) => (i === index ? { ...p, name: '' } : p));\n // Remove the last empty parameter\n if (item.parameters[item.parameters.length - 1]?.name === '') {\n item.parameters = item.parameters.filter((p) => p.name !== '');\n }\n } else if (s == null) {\n item.parameters = item.parameters.filter((_, i) => i !== index);\n } else {\n item.parameters = item.parameters.map((p, i) => (i === index ? { ...p, name: s } : p));\n }\n\n const newSql: SQLExpression = {\n ...query.sql,\n columns: query.sql?.columns?.map((c, i) => (i === currentColumnIndex ? item : c)),\n };\n\n onSqlChange(newSql);\n },\n [currentColumnIndex, onSqlChange, query.sql]\n );\n\n function renderParametersWithFunctions() {\n if (!func?.parameters) {\n return null;\n }\n\n return func?.parameters.map((funcParam, index) => {\n return (\n <Stack key={index} alignItems=\"flex-end\" gap={2}>\n <EditorField label={funcParam.name} width={25} optional={!funcParam.required}>\n <>\n {funcParam.options ? (\n <Select\n value={getColumnValue(macroOrFunction?.parameters![index])}\n options={fieldsFromFunction?.[index]}\n data-testid={selectors.components.SQLQueryEditor.selectFunctionParameter(funcParam.name)}\n inputId={selectInputId}\n menuShouldPortal\n allowCustomValue\n isClearable\n onChange={(s) => onParameterChange(index, true)(s?.value)}\n />\n ) : (\n <Input\n onChange={(e) => onParameterChange(index, true)(e.currentTarget.value)}\n value={macroOrFunction?.parameters![index]?.name}\n data-testid={selectors.components.SQLQueryEditor.selectInputParameter}\n />\n )}\n </>\n </EditorField>\n {func.parameters!.length !== index + 1 && <InlineLabel className={styles.label}>,</InlineLabel>}\n </Stack>\n );\n });\n }\n\n // This means that no function is selected, we render a column selector\n if (macroOrFunction?.name === undefined) {\n return (\n <SelectColumn\n columns={columns}\n onParameterChange={(s) => onParameterChange(0)(s)}\n value={getColumnValue(macroOrFunction?.parameters?.[0])}\n />\n );\n }\n\n // If the function is not found, that means that it might be a custom value\n // we let the user add any number of parameters\n if (!func) {\n return (\n <SelectCustomFunctionParameters\n query={query}\n onSqlChange={onSqlChange}\n currentColumnIndex={currentColumnIndex}\n columns={columns}\n onParameterChange={onParameterChange}\n />\n );\n }\n\n // Else we render the function parameters based on the provided settings\n return (\n <>\n <InlineLabel className={styles.label}>(</InlineLabel>\n {renderParametersWithFunctions()}\n <InlineLabel className={styles.label}>)</InlineLabel>\n </>\n );\n}\n\nconst getStyles = () => {\n return {\n label: css({\n padding: 0,\n margin: 0,\n width: 'unset',\n }),\n };\n};\n"],"names":["useId","useStyles2","useState","useEffect","_a","useCallback","_b","_c","QueryEditorExpressionType","jsxs","Stack","jsx","EditorField","Fragment","Select","getColumnValue","selectors","Input","InlineLabel","SelectColumn","SelectCustomFunctionParameters","css"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SelectRow.cjs","sources":["../../../../src/components/visual-query-builder/SelectRow.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { uniqueId } from 'lodash';\nimport { useCallback } from 'react';\n\nimport { SelectableValue, toOption } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { t } from '@grafana/i18n';\nimport { EditorField } from '@grafana/plugin-ui';\nimport { Button, Select, Stack, useStyles2 } from '@grafana/ui';\n\nimport { QueryEditorExpressionType, QueryEditorFunctionExpression } from '../../expressions';\nimport { DB, QueryFormat, SQLExpression, SQLQuery } from '../../types';\nimport { createFunctionField } from '../../utils/sql.utils';\nimport { useSqlChange } from '../../utils/useSqlChange';\n\nimport { SelectFunctionParameters } from './SelectFunctionParameters';\n\ninterface SelectRowProps {\n query: SQLQuery;\n onQueryChange: (sql: SQLQuery) => void;\n db: DB;\n columns: Array<SelectableValue<string>>;\n}\n\nexport function SelectRow({ query, onQueryChange, db, columns }: SelectRowProps) {\n const styles = useStyles2(getStyles);\n const { onSqlChange } = useSqlChange({ query, onQueryChange, db });\n const timeSeriesAliasOpts: Array<SelectableValue<string>> = [];\n\n // Add necessary alias options for time series format\n // when that format has been selected\n if (query.format === QueryFormat.Timeseries) {\n timeSeriesAliasOpts.push({ label: t('grafana-sql.components.select-row.label.time', 'time'), value: 'time' });\n timeSeriesAliasOpts.push({ label: t('grafana-sql.components.select-row.label.value', 'value'), value: 'value' });\n }\n\n const onAggregationChange = useCallback(\n (item: QueryEditorFunctionExpression, index: number) => (aggregation: SelectableValue<string>) => {\n const newItem = {\n ...item,\n name: aggregation?.value,\n parameters: [\n { type: QueryEditorExpressionType.FunctionParameter as const, name: item.parameters?.[0]?.name || '' },\n ],\n };\n const newSql: SQLExpression = {\n ...query.sql,\n columns: query.sql?.columns?.map((c, i) => (i === index ? newItem : c)),\n };\n\n onSqlChange(newSql);\n },\n [onSqlChange, query.sql]\n );\n\n const onAliasChange = useCallback(\n (item: QueryEditorFunctionExpression, index: number) => (alias: SelectableValue<string>) => {\n let newItem = { ...item };\n\n if (alias !== null) {\n newItem = { ...item, alias: `\"${alias?.value?.trim()}\"` };\n } else {\n delete newItem.alias;\n }\n\n const newSql: SQLExpression = {\n ...query.sql,\n columns: query.sql?.columns?.map((c, i) => (i === index ? newItem : c)),\n };\n\n onSqlChange(newSql);\n },\n [onSqlChange, query.sql]\n );\n\n const removeColumn = useCallback(\n (index: number) => () => {\n const clone = [...(query.sql?.columns || [])];\n clone.splice(index, 1);\n const newSql: SQLExpression = {\n ...query.sql,\n columns: clone,\n };\n onSqlChange(newSql);\n },\n [onSqlChange, query.sql]\n );\n\n const addColumn = useCallback(() => {\n const newSql: SQLExpression = { ...query.sql, columns: [...(query.sql?.columns || []), createFunctionField()] };\n onSqlChange(newSql);\n }, [onSqlChange, query.sql]);\n\n const aggregateOptions = () => {\n const options: Array<SelectableValue<string>> = [\n {\n label: t('grafana-sql.components.select-row.aggregate-options.options.label.aggregations', 'Aggregations'),\n options: [],\n },\n { label: t('grafana-sql.components.select-row.aggregate-options.options.label.macros', 'Macros'), options: [] },\n ];\n for (const func of db.functions()) {\n // Create groups for macros\n if (func.name.startsWith('$__')) {\n options[1].options.push({ label: func.name, value: func.name });\n } else {\n options[0].options.push({ label: func.name, value: func.name });\n }\n }\n return options;\n };\n\n return (\n <Stack gap={2} wrap=\"wrap\" direction=\"column\">\n {query.sql?.columns?.map((item, index) => (\n <div key={index}>\n <Stack gap={2} alignItems=\"end\">\n <EditorField\n label={t('grafana-sql.components.select-row.label-data-operations', 'Data operations')}\n optional\n width={25}\n >\n <Select\n value={item.name ? toOption(item.name) : null}\n inputId={`select-aggregation-${index}-${uniqueId()}`}\n data-testid={selectors.components.SQLQueryEditor.selectAggregation}\n isClearable\n menuShouldPortal\n allowCustomValue\n options={aggregateOptions()}\n onChange={onAggregationChange(item, index)}\n />\n </EditorField>\n\n <SelectFunctionParameters\n currentColumnIndex={index}\n columns={columns}\n onSqlChange={onSqlChange}\n query={query}\n db={db}\n />\n\n <EditorField label={t('grafana-sql.components.select-row.label-alias', 'Alias')} optional width={15}>\n <Select\n value={item.alias ? toOption(item.alias) : null}\n inputId={`select-alias-${index}-${uniqueId()}`}\n data-testid={selectors.components.SQLQueryEditor.selectAlias}\n options={timeSeriesAliasOpts}\n onChange={onAliasChange(item, index)}\n isClearable\n menuShouldPortal\n allowCustomValue\n />\n </EditorField>\n <Button\n aria-label={t('grafana-sql.components.select-row.title-remove-column', 'Remove column')}\n type=\"button\"\n icon=\"trash-alt\"\n variant=\"secondary\"\n size=\"md\"\n onClick={removeColumn(index)}\n />\n </Stack>\n </div>\n ))}\n <Button\n type=\"button\"\n onClick={addColumn}\n variant=\"secondary\"\n aria-label={t('grafana-sql.components.select-row.title-add-column', 'Add column')}\n size=\"md\"\n icon=\"plus\"\n className={styles.addButton}\n />\n </Stack>\n );\n}\n\nconst getStyles = () => {\n return {\n addButton: css({ alignSelf: 'flex-start' }),\n label: css({\n padding: 0,\n margin: 0,\n width: 'unset',\n }),\n };\n};\n"],"names":["useStyles2","useSqlChange","QueryFormat","t","useCallback","_a","_b","QueryEditorExpressionType","createFunctionField","Stack","jsx","jsxs","EditorField","Select","toOption","uniqueId","selectors","SelectFunctionParameters","Button","css"],"mappings":"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"}
1
+ {"version":3,"file":"SelectRow.cjs","sources":["../../../../src/components/visual-query-builder/SelectRow.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { uniqueId } from 'lodash';\nimport { useCallback } from 'react';\n\nimport { type SelectableValue, toOption } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { t } from '@grafana/i18n';\nimport { EditorField } from '@grafana/plugin-ui';\nimport { Button, Select, Stack, useStyles2 } from '@grafana/ui';\n\nimport { QueryEditorExpressionType, type QueryEditorFunctionExpression } from '../../expressions';\nimport { type DB, QueryFormat, type SQLExpression, type SQLQuery } from '../../types';\nimport { createFunctionField } from '../../utils/sql.utils';\nimport { useSqlChange } from '../../utils/useSqlChange';\n\nimport { SelectFunctionParameters } from './SelectFunctionParameters';\n\ninterface SelectRowProps {\n query: SQLQuery;\n onQueryChange: (sql: SQLQuery) => void;\n db: DB;\n columns: Array<SelectableValue<string>>;\n}\n\nexport function SelectRow({ query, onQueryChange, db, columns }: SelectRowProps) {\n const styles = useStyles2(getStyles);\n const { onSqlChange } = useSqlChange({ query, onQueryChange, db });\n const timeSeriesAliasOpts: Array<SelectableValue<string>> = [];\n\n // Add necessary alias options for time series format\n // when that format has been selected\n if (query.format === QueryFormat.Timeseries) {\n timeSeriesAliasOpts.push({ label: t('grafana-sql.components.select-row.label.time', 'time'), value: 'time' });\n timeSeriesAliasOpts.push({ label: t('grafana-sql.components.select-row.label.value', 'value'), value: 'value' });\n }\n\n const onAggregationChange = useCallback(\n (item: QueryEditorFunctionExpression, index: number) => (aggregation: SelectableValue<string>) => {\n const newItem = {\n ...item,\n name: aggregation?.value,\n parameters: [\n { type: QueryEditorExpressionType.FunctionParameter as const, name: item.parameters?.[0]?.name || '' },\n ],\n };\n const newSql: SQLExpression = {\n ...query.sql,\n columns: query.sql?.columns?.map((c, i) => (i === index ? newItem : c)),\n };\n\n onSqlChange(newSql);\n },\n [onSqlChange, query.sql]\n );\n\n const onAliasChange = useCallback(\n (item: QueryEditorFunctionExpression, index: number) => (alias: SelectableValue<string>) => {\n let newItem = { ...item };\n\n if (alias !== null) {\n newItem = { ...item, alias: `\"${alias?.value?.trim()}\"` };\n } else {\n delete newItem.alias;\n }\n\n const newSql: SQLExpression = {\n ...query.sql,\n columns: query.sql?.columns?.map((c, i) => (i === index ? newItem : c)),\n };\n\n onSqlChange(newSql);\n },\n [onSqlChange, query.sql]\n );\n\n const removeColumn = useCallback(\n (index: number) => () => {\n const clone = [...(query.sql?.columns || [])];\n clone.splice(index, 1);\n const newSql: SQLExpression = {\n ...query.sql,\n columns: clone,\n };\n onSqlChange(newSql);\n },\n [onSqlChange, query.sql]\n );\n\n const addColumn = useCallback(() => {\n const newSql: SQLExpression = { ...query.sql, columns: [...(query.sql?.columns || []), createFunctionField()] };\n onSqlChange(newSql);\n }, [onSqlChange, query.sql]);\n\n const aggregateOptions = () => {\n const options: Array<SelectableValue<string>> = [\n {\n label: t('grafana-sql.components.select-row.aggregate-options.options.label.aggregations', 'Aggregations'),\n options: [],\n },\n { label: t('grafana-sql.components.select-row.aggregate-options.options.label.macros', 'Macros'), options: [] },\n ];\n for (const func of db.functions()) {\n // Create groups for macros\n if (func.name.startsWith('$__')) {\n options[1].options.push({ label: func.name, value: func.name });\n } else {\n options[0].options.push({ label: func.name, value: func.name });\n }\n }\n return options;\n };\n\n return (\n <Stack gap={2} wrap=\"wrap\" direction=\"column\">\n {query.sql?.columns?.map((item, index) => (\n <div key={index}>\n <Stack gap={2} alignItems=\"end\">\n <EditorField\n label={t('grafana-sql.components.select-row.label-data-operations', 'Data operations')}\n optional\n width={25}\n >\n <Select\n value={item.name ? toOption(item.name) : null}\n inputId={`select-aggregation-${index}-${uniqueId()}`}\n data-testid={selectors.components.SQLQueryEditor.selectAggregation}\n isClearable\n menuShouldPortal\n allowCustomValue\n options={aggregateOptions()}\n onChange={onAggregationChange(item, index)}\n />\n </EditorField>\n\n <SelectFunctionParameters\n currentColumnIndex={index}\n columns={columns}\n onSqlChange={onSqlChange}\n query={query}\n db={db}\n />\n\n <EditorField label={t('grafana-sql.components.select-row.label-alias', 'Alias')} optional width={15}>\n <Select\n value={item.alias ? toOption(item.alias) : null}\n inputId={`select-alias-${index}-${uniqueId()}`}\n data-testid={selectors.components.SQLQueryEditor.selectAlias}\n options={timeSeriesAliasOpts}\n onChange={onAliasChange(item, index)}\n isClearable\n menuShouldPortal\n allowCustomValue\n />\n </EditorField>\n <Button\n aria-label={t('grafana-sql.components.select-row.title-remove-column', 'Remove column')}\n type=\"button\"\n icon=\"trash-alt\"\n variant=\"secondary\"\n size=\"md\"\n onClick={removeColumn(index)}\n />\n </Stack>\n </div>\n ))}\n <Button\n type=\"button\"\n onClick={addColumn}\n variant=\"secondary\"\n aria-label={t('grafana-sql.components.select-row.title-add-column', 'Add column')}\n size=\"md\"\n icon=\"plus\"\n className={styles.addButton}\n />\n </Stack>\n );\n}\n\nconst getStyles = () => {\n return {\n addButton: css({ alignSelf: 'flex-start' }),\n label: css({\n padding: 0,\n margin: 0,\n width: 'unset',\n }),\n };\n};\n"],"names":["useStyles2","useSqlChange","QueryFormat","t","useCallback","_a","_b","QueryEditorExpressionType","createFunctionField","Stack","jsx","jsxs","EditorField","Select","toOption","uniqueId","selectors","SelectFunctionParameters","Button","css"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"VisualEditor.cjs","sources":["../../../../src/components/visual-query-builder/VisualEditor.tsx"],"sourcesContent":["import { useAsync } from 'react-use';\n\nimport { t } from '@grafana/i18n';\nimport { EditorRows, EditorRow, EditorField } from '@grafana/plugin-ui';\n\nimport { DB, QueryEditorProps, QueryRowFilter } from '../../types';\nimport { QueryToolbox } from '../query-editor-raw/QueryToolbox';\n\nimport { Preview } from './Preview';\nimport { SQLGroupByRow } from './SQLGroupByRow';\nimport { SQLOrderByRow } from './SQLOrderByRow';\nimport { SQLWhereRow } from './SQLWhereRow';\nimport { SelectRow } from './SelectRow';\n\ninterface VisualEditorProps extends QueryEditorProps {\n db: DB;\n queryRowFilter: QueryRowFilter;\n onValidate: (isValid: boolean) => void;\n}\n\nexport const VisualEditor = ({ query, db, queryRowFilter, onChange, onValidate, range }: VisualEditorProps) => {\n const state = useAsync(async () => {\n const fields = await db.fields(query);\n return fields;\n }, [db, query.dataset, query.table]);\n\n return (\n <>\n <EditorRows>\n <EditorRow>\n <SelectRow columns={state.value || []} query={query} onQueryChange={onChange} db={db} />\n </EditorRow>\n {queryRowFilter.filter && (\n <EditorRow>\n <EditorField\n label={t('grafana-sql.components.visual-editor.label-filter-by-column-value', 'Filter by column value')}\n optional\n >\n <SQLWhereRow fields={state.value || []} query={query} onQueryChange={onChange} db={db} />\n </EditorField>\n </EditorRow>\n )}\n {queryRowFilter.group && (\n <EditorRow>\n <EditorField label={t('grafana-sql.components.visual-editor.label-group-by-column', 'Group by column')}>\n <SQLGroupByRow fields={state.value || []} query={query} onQueryChange={onChange} db={db} />\n </EditorField>\n </EditorRow>\n )}\n {queryRowFilter.order && (\n <EditorRow>\n <SQLOrderByRow fields={state.value || []} query={query} onQueryChange={onChange} db={db} />\n </EditorRow>\n )}\n {queryRowFilter.preview && query.rawSql && (\n <EditorRow>\n <Preview rawSql={query.rawSql} datasourceType={query.datasource?.type} />\n </EditorRow>\n )}\n </EditorRows>\n <QueryToolbox db={db} query={query} onValidate={onValidate} range={range} />\n </>\n );\n};\n"],"names":["useAsync","jsxs","Fragment","EditorRows","jsx","EditorRow","SelectRow","EditorField","t","SQLWhereRow","SQLGroupByRow","SQLOrderByRow","Preview","QueryToolbox"],"mappings":";;;;;;;;;;;;;;;;AAoBO,MAAM,YAAA,GAAe,CAAC,EAAE,KAAA,EAAO,IAAI,cAAA,EAAgB,QAAA,EAAU,UAAA,EAAY,KAAA,EAAM,KAAyB;AApB/G,EAAA,IAAA,EAAA;AAqBE,EAAA,MAAM,KAAA,GAAQA,kBAAS,YAAY;AACjC,IAAA,MAAM,MAAA,GAAS,MAAM,EAAA,CAAG,MAAA,CAAO,KAAK,CAAA;AACpC,IAAA,OAAO,MAAA;AAAA,EACT,GAAG,CAAC,EAAA,EAAI,MAAM,OAAA,EAAS,KAAA,CAAM,KAAK,CAAC,CAAA;AAEnC,EAAA,uBACEC,eAAA,CAAAC,mBAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAD,eAAA,CAACE,mBAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAC,cAAA,CAACC,kBAAA,EAAA,EACC,QAAA,kBAAAD,cAAA,CAACE,mBAAA,EAAA,EAAU,OAAA,EAAS,KAAA,CAAM,KAAA,IAAS,EAAC,EAAG,KAAA,EAAc,aAAA,EAAe,QAAA,EAAU,EAAA,EAAQ,CAAA,EACxF,CAAA;AAAA,MACC,cAAA,CAAe,MAAA,oBACdF,cAAA,CAACC,kBAAA,EAAA,EACC,QAAA,kBAAAD,cAAA;AAAA,QAACG,oBAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAOC,MAAA,CAAE,mEAAA,EAAqE,wBAAwB,CAAA;AAAA,UACtG,QAAA,EAAQ,IAAA;AAAA,UAER,QAAA,kBAAAJ,cAAA,CAACK,uBAAA,EAAA,EAAY,MAAA,EAAQ,KAAA,CAAM,KAAA,IAAS,EAAC,EAAG,KAAA,EAAc,aAAA,EAAe,QAAA,EAAU,EAAA,EAAQ;AAAA;AAAA,OACzF,EACF,CAAA;AAAA,MAED,cAAA,CAAe,yBACdL,cAAA,CAACC,kBAAA,EAAA,EACC,yCAACE,oBAAA,EAAA,EAAY,KAAA,EAAOC,MAAA,CAAE,4DAAA,EAA8D,iBAAiB,CAAA,EACnG,yCAACE,2BAAA,EAAA,EAAc,MAAA,EAAQ,KAAA,CAAM,KAAA,IAAS,EAAC,EAAG,OAAc,aAAA,EAAe,QAAA,EAAU,EAAA,EAAQ,CAAA,EAC3F,CAAA,EACF,CAAA;AAAA,MAED,cAAA,CAAe,KAAA,oBACdN,cAAA,CAACC,kBAAA,EAAA,EACC,yCAACM,2BAAA,EAAA,EAAc,MAAA,EAAQ,KAAA,CAAM,KAAA,IAAS,EAAC,EAAG,KAAA,EAAc,aAAA,EAAe,QAAA,EAAU,IAAQ,CAAA,EAC3F,CAAA;AAAA,MAED,eAAe,OAAA,IAAW,KAAA,CAAM,MAAA,oBAC/BP,cAAA,CAACC,sBACC,QAAA,kBAAAD,cAAA,CAACQ,eAAA,EAAA,EAAQ,MAAA,EAAQ,KAAA,CAAM,QAAQ,cAAA,EAAA,CAAgB,EAAA,GAAA,KAAA,CAAM,UAAA,KAAN,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAkB,MAAM,CAAA,EACzE;AAAA,KAAA,EAEJ,CAAA;AAAA,oBACAR,cAAA,CAACS,yBAAA,EAAA,EAAa,EAAA,EAAQ,KAAA,EAAc,YAAwB,KAAA,EAAc;AAAA,GAAA,EAC5E,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"VisualEditor.cjs","sources":["../../../../src/components/visual-query-builder/VisualEditor.tsx"],"sourcesContent":["import { useAsync } from 'react-use';\n\nimport { t } from '@grafana/i18n';\nimport { EditorRows, EditorRow, EditorField } from '@grafana/plugin-ui';\n\nimport { type DB, type QueryEditorProps, type QueryRowFilter } from '../../types';\nimport { QueryToolbox } from '../query-editor-raw/QueryToolbox';\n\nimport { Preview } from './Preview';\nimport { SQLGroupByRow } from './SQLGroupByRow';\nimport { SQLOrderByRow } from './SQLOrderByRow';\nimport { SQLWhereRow } from './SQLWhereRow';\nimport { SelectRow } from './SelectRow';\n\ninterface VisualEditorProps extends QueryEditorProps {\n db: DB;\n queryRowFilter: QueryRowFilter;\n onValidate: (isValid: boolean) => void;\n}\n\nexport const VisualEditor = ({ query, db, queryRowFilter, onChange, onValidate, range }: VisualEditorProps) => {\n const state = useAsync(async () => {\n const fields = await db.fields(query);\n return fields;\n }, [db, query.dataset, query.table]);\n\n return (\n <>\n <EditorRows>\n <EditorRow>\n <SelectRow columns={state.value || []} query={query} onQueryChange={onChange} db={db} />\n </EditorRow>\n {queryRowFilter.filter && (\n <EditorRow>\n <EditorField\n label={t('grafana-sql.components.visual-editor.label-filter-by-column-value', 'Filter by column value')}\n optional\n >\n <SQLWhereRow fields={state.value || []} query={query} onQueryChange={onChange} db={db} />\n </EditorField>\n </EditorRow>\n )}\n {queryRowFilter.group && (\n <EditorRow>\n <EditorField label={t('grafana-sql.components.visual-editor.label-group-by-column', 'Group by column')}>\n <SQLGroupByRow fields={state.value || []} query={query} onQueryChange={onChange} db={db} />\n </EditorField>\n </EditorRow>\n )}\n {queryRowFilter.order && (\n <EditorRow>\n <SQLOrderByRow fields={state.value || []} query={query} onQueryChange={onChange} db={db} />\n </EditorRow>\n )}\n {queryRowFilter.preview && query.rawSql && (\n <EditorRow>\n <Preview rawSql={query.rawSql} datasourceType={query.datasource?.type} />\n </EditorRow>\n )}\n </EditorRows>\n <QueryToolbox db={db} query={query} onValidate={onValidate} range={range} />\n </>\n );\n};\n"],"names":["useAsync","jsxs","Fragment","EditorRows","jsx","EditorRow","SelectRow","EditorField","t","SQLWhereRow","SQLGroupByRow","SQLOrderByRow","Preview","QueryToolbox"],"mappings":";;;;;;;;;;;;;;;;AAoBO,MAAM,YAAA,GAAe,CAAC,EAAE,KAAA,EAAO,IAAI,cAAA,EAAgB,QAAA,EAAU,UAAA,EAAY,KAAA,EAAM,KAAyB;AApB/G,EAAA,IAAA,EAAA;AAqBE,EAAA,MAAM,KAAA,GAAQA,kBAAS,YAAY;AACjC,IAAA,MAAM,MAAA,GAAS,MAAM,EAAA,CAAG,MAAA,CAAO,KAAK,CAAA;AACpC,IAAA,OAAO,MAAA;AAAA,EACT,GAAG,CAAC,EAAA,EAAI,MAAM,OAAA,EAAS,KAAA,CAAM,KAAK,CAAC,CAAA;AAEnC,EAAA,uBACEC,eAAA,CAAAC,mBAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAD,eAAA,CAACE,mBAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAC,cAAA,CAACC,kBAAA,EAAA,EACC,QAAA,kBAAAD,cAAA,CAACE,mBAAA,EAAA,EAAU,OAAA,EAAS,KAAA,CAAM,KAAA,IAAS,EAAC,EAAG,KAAA,EAAc,aAAA,EAAe,QAAA,EAAU,EAAA,EAAQ,CAAA,EACxF,CAAA;AAAA,MACC,cAAA,CAAe,MAAA,oBACdF,cAAA,CAACC,kBAAA,EAAA,EACC,QAAA,kBAAAD,cAAA;AAAA,QAACG,oBAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAOC,MAAA,CAAE,mEAAA,EAAqE,wBAAwB,CAAA;AAAA,UACtG,QAAA,EAAQ,IAAA;AAAA,UAER,QAAA,kBAAAJ,cAAA,CAACK,uBAAA,EAAA,EAAY,MAAA,EAAQ,KAAA,CAAM,KAAA,IAAS,EAAC,EAAG,KAAA,EAAc,aAAA,EAAe,QAAA,EAAU,EAAA,EAAQ;AAAA;AAAA,OACzF,EACF,CAAA;AAAA,MAED,cAAA,CAAe,yBACdL,cAAA,CAACC,kBAAA,EAAA,EACC,yCAACE,oBAAA,EAAA,EAAY,KAAA,EAAOC,MAAA,CAAE,4DAAA,EAA8D,iBAAiB,CAAA,EACnG,yCAACE,2BAAA,EAAA,EAAc,MAAA,EAAQ,KAAA,CAAM,KAAA,IAAS,EAAC,EAAG,OAAc,aAAA,EAAe,QAAA,EAAU,EAAA,EAAQ,CAAA,EAC3F,CAAA,EACF,CAAA;AAAA,MAED,cAAA,CAAe,KAAA,oBACdN,cAAA,CAACC,kBAAA,EAAA,EACC,yCAACM,2BAAA,EAAA,EAAc,MAAA,EAAQ,KAAA,CAAM,KAAA,IAAS,EAAC,EAAG,KAAA,EAAc,aAAA,EAAe,QAAA,EAAU,IAAQ,CAAA,EAC3F,CAAA;AAAA,MAED,eAAe,OAAA,IAAW,KAAA,CAAM,MAAA,oBAC/BP,cAAA,CAACC,sBACC,QAAA,kBAAAD,cAAA,CAACQ,eAAA,EAAA,EAAQ,MAAA,EAAQ,KAAA,CAAM,QAAQ,cAAA,EAAA,CAAgB,EAAA,GAAA,KAAA,CAAM,UAAA,KAAN,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAkB,MAAM,CAAA,EACzE;AAAA,KAAA,EAEJ,CAAA;AAAA,oBACAR,cAAA,CAACS,yBAAA,EAAA,EAAa,EAAA,EAAQ,KAAA,EAAc,YAAwB,KAAA,EAAc;AAAA,GAAA,EAC5E,CAAA;AAEJ;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"WhereRow.cjs","sources":["../../../../src/components/visual-query-builder/WhereRow.tsx"],"sourcesContent":["import { injectGlobal } from '@emotion/css';\nimport { Builder, Config, ImmutableTree, Query, Utils } from '@react-awesome-query-builder/ui';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { SQLExpression } from '../../types';\n\nimport { emptyInitTree, raqbConfig } from './AwesomeQueryBuilder';\n\ninterface SQLBuilderWhereRowProps {\n sql: SQLExpression;\n onSqlChange: (sql: SQLExpression) => void;\n config?: Partial<Config>;\n}\n\nexport function WhereRow({ sql, config, onSqlChange }: SQLBuilderWhereRowProps) {\n const [tree, setTree] = useState<ImmutableTree>();\n const configWithDefaults = useMemo(() => ({ ...raqbConfig, ...config }), [config]);\n\n useEffect(() => {\n // Set the initial tree\n if (!tree) {\n const initTree = Utils.checkTree(Utils.loadTree(sql.whereJsonTree ?? emptyInitTree), configWithDefaults);\n setTree(initTree);\n }\n }, [configWithDefaults, sql.whereJsonTree, tree]);\n\n useEffect(() => {\n if (!sql.whereJsonTree) {\n setTree(Utils.checkTree(Utils.loadTree(emptyInitTree), configWithDefaults));\n }\n }, [configWithDefaults, sql.whereJsonTree]);\n\n const onTreeChange = useCallback(\n (changedTree: ImmutableTree, config: Config) => {\n setTree(changedTree);\n const newSql = {\n ...sql,\n whereJsonTree: Utils.getTree(changedTree),\n whereString: Utils.sqlFormat(changedTree, config),\n };\n\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n if (!tree) {\n return null;\n }\n\n return (\n <Query\n {...configWithDefaults}\n value={tree}\n onChange={onTreeChange}\n renderBuilder={(props) => <Builder {...props} />}\n />\n );\n}\n\nfunction flex(direction: string) {\n return `\n display: flex;\n gap: 8px;\n flex-direction: ${direction};`;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-expressions\ninjectGlobal`\n .group--header {\n ${flex('row')}\n }\n\n .group-or-rule {\n ${flex('column')}\n .rule {\n flex-direction: row;\n }\n }\n\n .rule--body {\n ${flex('row')}\n }\n\n .group--children {\n ${flex('column')}\n }\n\n .group--conjunctions:empty {\n display: none;\n }\n`;\n"],"names":["useState","useMemo","raqbConfig","useEffect","Utils","emptyInitTree","useCallback","config","jsx","Query","Builder","injectGlobal"],"mappings":";;;;;;;;;;;AAcO,SAAS,QAAA,CAAS,EAAE,GAAA,EAAK,MAAA,EAAQ,aAAY,EAA4B;AAC9E,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIA,cAAA,EAAwB;AAChD,EAAA,MAAM,kBAAA,GAAqBC,aAAA,CAAQ,OAAO,EAAE,GAAGC,8BAAA,EAAY,GAAG,MAAA,EAAO,CAAA,EAAI,CAAC,MAAM,CAAC,CAAA;AAEjF,EAAAC,eAAA,CAAU,MAAM;AAlBlB,IAAA,IAAA,EAAA;AAoBI,IAAA,IAAI,CAAC,IAAA,EAAM;AACT,MAAA,MAAM,QAAA,GAAWC,QAAA,CAAM,SAAA,CAAUA,QAAA,CAAM,QAAA,CAAA,CAAS,SAAI,aAAA,KAAJ,IAAA,GAAA,EAAA,GAAqBC,iCAAa,CAAA,EAAG,kBAAkB,CAAA;AACvG,MAAA,OAAA,CAAQ,QAAQ,CAAA;AAAA,IAClB;AAAA,EACF,GAAG,CAAC,kBAAA,EAAoB,GAAA,CAAI,aAAA,EAAe,IAAI,CAAC,CAAA;AAEhD,EAAAF,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,IAAI,aAAA,EAAe;AACtB,MAAA,OAAA,CAAQC,SAAM,SAAA,CAAUA,QAAA,CAAM,SAASC,iCAAa,CAAA,EAAG,kBAAkB,CAAC,CAAA;AAAA,IAC5E;AAAA,EACF,CAAA,EAAG,CAAC,kBAAA,EAAoB,GAAA,CAAI,aAAa,CAAC,CAAA;AAE1C,EAAA,MAAM,YAAA,GAAeC,iBAAA;AAAA,IACnB,CAAC,aAA4BC,OAAAA,KAAmB;AAC9C,MAAA,OAAA,CAAQ,WAAW,CAAA;AACnB,MAAA,MAAM,MAAA,GAAS;AAAA,QACb,GAAG,GAAA;AAAA,QACH,aAAA,EAAeH,QAAA,CAAM,OAAA,CAAQ,WAAW,CAAA;AAAA,QACxC,WAAA,EAAaA,QAAA,CAAM,SAAA,CAAU,WAAA,EAAaG,OAAM;AAAA,OAClD;AAEA,MAAA,WAAA,CAAY,MAAM,CAAA;AAAA,IACpB,CAAA;AAAA,IACA,CAAC,aAAa,GAAG;AAAA,GACnB;AAEA,EAAA,IAAI,CAAC,IAAA,EAAM;AACT,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACEC,cAAA;AAAA,IAACC,QAAA;AAAA,IAAA;AAAA,MACE,GAAG,kBAAA;AAAA,MACJ,KAAA,EAAO,IAAA;AAAA,MACP,QAAA,EAAU,YAAA;AAAA,MACV,eAAe,CAAC,KAAA,qBAAUD,cAAA,CAACE,UAAA,EAAA,EAAS,GAAG,KAAA,EAAO;AAAA;AAAA,GAChD;AAEJ;AAEA,SAAS,KAAK,SAAA,EAAmB;AAC/B,EAAA,OAAO;AAAA;AAAA;AAAA,oBAAA,EAGa,SAAS,CAAA,CAAA,CAAA;AAC/B;AAGAC,gBAAA;AAAA;AAAA,IAAA,EAEM,IAAA,CAAK,KAAK,CAAC;AAAA;;AAAA;AAAA,IAAA,EAIX,IAAA,CAAK,QAAQ,CAAC;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA,IAAA,EAOd,IAAA,CAAK,KAAK,CAAC;AAAA;;AAAA;AAAA,IAAA,EAIX,IAAA,CAAK,QAAQ,CAAC;AAAA;;AAAA;AAAA;AAAA;AAAA,CAAA;;;;"}
1
+ {"version":3,"file":"WhereRow.cjs","sources":["../../../../src/components/visual-query-builder/WhereRow.tsx"],"sourcesContent":["import { injectGlobal } from '@emotion/css';\nimport { Builder, type Config, type ImmutableTree, Query, Utils } from '@react-awesome-query-builder/ui';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { type SQLExpression } from '../../types';\n\nimport { emptyInitTree, raqbConfig } from './AwesomeQueryBuilder';\n\ninterface SQLBuilderWhereRowProps {\n sql: SQLExpression;\n onSqlChange: (sql: SQLExpression) => void;\n config?: Partial<Config>;\n}\n\nexport function WhereRow({ sql, config, onSqlChange }: SQLBuilderWhereRowProps) {\n const [tree, setTree] = useState<ImmutableTree>();\n const configWithDefaults = useMemo(() => ({ ...raqbConfig, ...config }), [config]);\n\n useEffect(() => {\n // Set the initial tree\n if (!tree) {\n const initTree = Utils.checkTree(Utils.loadTree(sql.whereJsonTree ?? emptyInitTree), configWithDefaults);\n setTree(initTree);\n }\n }, [configWithDefaults, sql.whereJsonTree, tree]);\n\n useEffect(() => {\n if (!sql.whereJsonTree) {\n setTree(Utils.checkTree(Utils.loadTree(emptyInitTree), configWithDefaults));\n }\n }, [configWithDefaults, sql.whereJsonTree]);\n\n const onTreeChange = useCallback(\n (changedTree: ImmutableTree, config: Config) => {\n setTree(changedTree);\n const newSql = {\n ...sql,\n whereJsonTree: Utils.getTree(changedTree),\n whereString: Utils.sqlFormat(changedTree, config),\n };\n\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n if (!tree) {\n return null;\n }\n\n return (\n <Query\n {...configWithDefaults}\n value={tree}\n onChange={onTreeChange}\n renderBuilder={(props) => <Builder {...props} />}\n />\n );\n}\n\nfunction flex(direction: string) {\n return `\n display: flex;\n gap: 8px;\n flex-direction: ${direction};`;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-expressions\ninjectGlobal`\n .group--header {\n ${flex('row')}\n }\n\n .group-or-rule {\n ${flex('column')}\n .rule {\n flex-direction: row;\n }\n }\n\n .rule--body {\n ${flex('row')}\n }\n\n .group--children {\n ${flex('column')}\n }\n\n .group--conjunctions:empty {\n display: none;\n }\n`;\n"],"names":["useState","useMemo","raqbConfig","useEffect","Utils","emptyInitTree","useCallback","config","jsx","Query","Builder","injectGlobal"],"mappings":";;;;;;;;;;;AAcO,SAAS,QAAA,CAAS,EAAE,GAAA,EAAK,MAAA,EAAQ,aAAY,EAA4B;AAC9E,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIA,cAAA,EAAwB;AAChD,EAAA,MAAM,kBAAA,GAAqBC,aAAA,CAAQ,OAAO,EAAE,GAAGC,8BAAA,EAAY,GAAG,MAAA,EAAO,CAAA,EAAI,CAAC,MAAM,CAAC,CAAA;AAEjF,EAAAC,eAAA,CAAU,MAAM;AAlBlB,IAAA,IAAA,EAAA;AAoBI,IAAA,IAAI,CAAC,IAAA,EAAM;AACT,MAAA,MAAM,QAAA,GAAWC,QAAA,CAAM,SAAA,CAAUA,QAAA,CAAM,QAAA,CAAA,CAAS,SAAI,aAAA,KAAJ,IAAA,GAAA,EAAA,GAAqBC,iCAAa,CAAA,EAAG,kBAAkB,CAAA;AACvG,MAAA,OAAA,CAAQ,QAAQ,CAAA;AAAA,IAClB;AAAA,EACF,GAAG,CAAC,kBAAA,EAAoB,GAAA,CAAI,aAAA,EAAe,IAAI,CAAC,CAAA;AAEhD,EAAAF,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,IAAI,aAAA,EAAe;AACtB,MAAA,OAAA,CAAQC,SAAM,SAAA,CAAUA,QAAA,CAAM,SAASC,iCAAa,CAAA,EAAG,kBAAkB,CAAC,CAAA;AAAA,IAC5E;AAAA,EACF,CAAA,EAAG,CAAC,kBAAA,EAAoB,GAAA,CAAI,aAAa,CAAC,CAAA;AAE1C,EAAA,MAAM,YAAA,GAAeC,iBAAA;AAAA,IACnB,CAAC,aAA4BC,OAAAA,KAAmB;AAC9C,MAAA,OAAA,CAAQ,WAAW,CAAA;AACnB,MAAA,MAAM,MAAA,GAAS;AAAA,QACb,GAAG,GAAA;AAAA,QACH,aAAA,EAAeH,QAAA,CAAM,OAAA,CAAQ,WAAW,CAAA;AAAA,QACxC,WAAA,EAAaA,QAAA,CAAM,SAAA,CAAU,WAAA,EAAaG,OAAM;AAAA,OAClD;AAEA,MAAA,WAAA,CAAY,MAAM,CAAA;AAAA,IACpB,CAAA;AAAA,IACA,CAAC,aAAa,GAAG;AAAA,GACnB;AAEA,EAAA,IAAI,CAAC,IAAA,EAAM;AACT,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACEC,cAAA;AAAA,IAACC,QAAA;AAAA,IAAA;AAAA,MACE,GAAG,kBAAA;AAAA,MACJ,KAAA,EAAO,IAAA;AAAA,MACP,QAAA,EAAU,YAAA;AAAA,MACV,eAAe,CAAC,KAAA,qBAAUD,cAAA,CAACE,UAAA,EAAA,EAAS,GAAG,KAAA,EAAO;AAAA;AAAA,GAChD;AAEJ;AAEA,SAAS,KAAK,SAAA,EAAmB;AAC/B,EAAA,OAAO;AAAA;AAAA;AAAA,oBAAA,EAGa,SAAS,CAAA,CAAA,CAAA;AAC/B;AAGAC,gBAAA;AAAA;AAAA,IAAA,EAEM,IAAA,CAAK,KAAK,CAAC;AAAA;;AAAA;AAAA,IAAA,EAIX,IAAA,CAAK,QAAQ,CAAC;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA,IAAA,EAOd,IAAA,CAAK,KAAK,CAAC;AAAA;;AAAA;AAAA,IAAA,EAIX,IAAA,CAAK,QAAQ,CAAC;AAAA;;AAAA;AAAA;AAAA;AAAA,CAAA;;;;"}