@grafana/plugin-ui 0.13.1 → 0.14.1-dsconfig.0d5c985
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.
- package/dist/cjs/index.cjs +2918 -364
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.d.cts +565 -39
- package/dist/cjs/test-utils.cjs +2 -2
- package/dist/cjs/test-utils.cjs.map +1 -1
- package/dist/cjs/test-utils.d.cts +1 -1
- package/dist/esm/components/ConfigEditor/AdvancedSettings/AdvancedHttpSettings.js.map +1 -1
- package/dist/esm/components/ConfigEditor/Auth/Auth.js.map +1 -1
- package/dist/esm/components/ConfigEditor/Auth/auth-method/AuthMethodSettings.js +4 -4
- package/dist/esm/components/ConfigEditor/Auth/auth-method/AuthMethodSettings.js.map +1 -1
- package/dist/esm/components/ConfigEditor/Auth/auth-method/BasicAuth.js.map +1 -1
- package/dist/esm/components/ConfigEditor/Auth/custom-headers/CustomHeader.js.map +1 -1
- package/dist/esm/components/ConfigEditor/Auth/custom-headers/CustomHeaders.js +1 -1
- package/dist/esm/components/ConfigEditor/Auth/custom-headers/CustomHeaders.js.map +1 -1
- package/dist/esm/components/ConfigEditor/Auth/styles.js.map +1 -1
- package/dist/esm/components/ConfigEditor/Auth/tls/SelfSignedCertificate.js +1 -1
- package/dist/esm/components/ConfigEditor/Auth/tls/SelfSignedCertificate.js.map +1 -1
- package/dist/esm/components/ConfigEditor/Auth/tls/SkipTLSVerification.js.map +1 -1
- package/dist/esm/components/ConfigEditor/Auth/tls/TLSClientAuth.js +3 -3
- package/dist/esm/components/ConfigEditor/Auth/tls/TLSClientAuth.js.map +1 -1
- package/dist/esm/components/ConfigEditor/Auth/tls/TLSSettings.js.map +1 -1
- package/dist/esm/components/ConfigEditor/Auth/tls/TLSSettingsSection.js.map +1 -1
- package/dist/esm/components/ConfigEditor/Auth/types.js.map +1 -1
- package/dist/esm/components/ConfigEditor/Auth/utils.js +3 -3
- package/dist/esm/components/ConfigEditor/Auth/utils.js.map +1 -1
- package/dist/esm/components/ConfigEditor/ConfigSection/ConfigDescriptionLink.js +2 -2
- package/dist/esm/components/ConfigEditor/ConfigSection/ConfigDescriptionLink.js.map +1 -1
- package/dist/esm/components/ConfigEditor/ConfigSection/ConfigSection.js.map +1 -1
- package/dist/esm/components/ConfigEditor/ConfigSection/ConfigSubSection.js.map +1 -1
- package/dist/esm/components/ConfigEditor/ConfigSection/GenericConfigSection.js.map +1 -1
- package/dist/esm/components/ConfigEditor/Connection/ConnectionSettings.js +1 -1
- package/dist/esm/components/ConfigEditor/Connection/ConnectionSettings.js.map +1 -1
- package/dist/esm/components/ConfigEditor/DataSourceDescription.js.map +1 -1
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/AuthorizationHeaderField.js +53 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/AuthorizationHeaderField.js.map +1 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/ComplexFieldNote.js +24 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/ComplexFieldNote.js.map +1 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/DatasourceConfigWizard.js +229 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/DatasourceConfigWizard.js.map +1 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/IndexedPairEditor.js +124 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/IndexedPairEditor.js.map +1 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/PdcFieldNote.js +34 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/PdcFieldNote.js.map +1 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/SchemaField.js +60 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/SchemaField.js.map +1 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/SecureFieldInput.js +61 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/SecureFieldInput.js.map +1 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/SidebarNav.js +54 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/SidebarNav.js.map +1 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/StringArrayInput.js +84 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/StringArrayInput.js.map +1 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/TabLayout.js +176 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/TabLayout.js.map +1 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/fieldUtils.js +88 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/fieldUtils.js.map +1 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/renderFieldInput.js +106 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/renderFieldInput.js.map +1 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/tabStyles.js +241 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/tabStyles.js.map +1 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/useDatasourceConfigForm.js +284 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/useDatasourceConfigForm.js.map +1 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/wizardStyles.js +124 -0
- package/dist/esm/components/ConfigEditor/DatasourceConfigWizard/wizardStyles.js.map +1 -0
- package/dist/esm/components/ConfigEditor/SecureSocksProxyToggle.js.map +1 -1
- package/dist/esm/components/CustomHeadersSettings/CustomHeadersSettings.js +11 -11
- package/dist/esm/components/CustomHeadersSettings/CustomHeadersSettings.js.map +1 -1
- package/dist/esm/components/DataLinks/DataLink.js +4 -4
- package/dist/esm/components/DataLinks/DataLink.js.map +1 -1
- package/dist/esm/components/DataLinks/DataLinks.js +3 -3
- package/dist/esm/components/DataLinks/DataLinks.js.map +1 -1
- package/dist/esm/components/DataSourcePicker/DataSourcePicker.js +8 -8
- package/dist/esm/components/DataSourcePicker/DataSourcePicker.js.map +1 -1
- package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/esm/components/DatePicker/styles.js +2 -2
- package/dist/esm/components/DatePicker/styles.js.map +1 -1
- package/dist/esm/components/DatePickerWithInput/DatePickerWithInput.js.map +1 -1
- package/dist/esm/components/DatePickerWithInput/styles.js +2 -2
- package/dist/esm/components/DatePickerWithInput/styles.js.map +1 -1
- package/dist/esm/components/DebounceInput/DebounceInput.js.map +1 -1
- package/dist/esm/components/Plugins/PluginSignatureBadge.js.map +1 -1
- package/dist/esm/components/QueryEditor/AccessoryButton.js.map +1 -1
- package/dist/esm/components/QueryEditor/CatalogSelector.js +1 -1
- package/dist/esm/components/QueryEditor/CatalogSelector.js.map +1 -1
- package/dist/esm/components/QueryEditor/ConfirmModal.js +1 -1
- package/dist/esm/components/QueryEditor/ConfirmModal.js.map +1 -1
- package/dist/esm/components/QueryEditor/DatasetSelector.js +1 -1
- package/dist/esm/components/QueryEditor/DatasetSelector.js.map +1 -1
- package/dist/esm/components/QueryEditor/EditorField.js +5 -5
- package/dist/esm/components/QueryEditor/EditorField.js.map +1 -1
- package/dist/esm/components/QueryEditor/EditorFieldGroup.js.map +1 -1
- package/dist/esm/components/QueryEditor/EditorHeader.js +2 -2
- package/dist/esm/components/QueryEditor/EditorHeader.js.map +1 -1
- package/dist/esm/components/QueryEditor/EditorList.js.map +1 -1
- package/dist/esm/components/QueryEditor/EditorRow.js +4 -4
- package/dist/esm/components/QueryEditor/EditorRow.js.map +1 -1
- package/dist/esm/components/QueryEditor/EditorRows.js +2 -2
- package/dist/esm/components/QueryEditor/EditorRows.js.map +1 -1
- package/dist/esm/components/QueryEditor/EditorStack.js +1 -1
- package/dist/esm/components/QueryEditor/EditorStack.js.map +1 -1
- package/dist/esm/components/QueryEditor/EditorSwitch.js +2 -2
- package/dist/esm/components/QueryEditor/EditorSwitch.js.map +1 -1
- package/dist/esm/components/QueryEditor/FlexItem.js.map +1 -1
- package/dist/esm/components/QueryEditor/InlineSelect.js +1 -1
- package/dist/esm/components/QueryEditor/InlineSelect.js.map +1 -1
- package/dist/esm/components/QueryEditor/InputGroup.js +2 -2
- package/dist/esm/components/QueryEditor/InputGroup.js.map +1 -1
- package/dist/esm/components/QueryEditor/QueryEditor.js +10 -8
- package/dist/esm/components/QueryEditor/QueryEditor.js.map +1 -1
- package/dist/esm/components/QueryEditor/QueryHeader.js +20 -20
- package/dist/esm/components/QueryEditor/QueryHeader.js.map +1 -1
- package/dist/esm/components/QueryEditor/RunQueryButton.js +1 -1
- package/dist/esm/components/QueryEditor/RunQueryButton.js.map +1 -1
- package/dist/esm/components/QueryEditor/Space.js +2 -2
- package/dist/esm/components/QueryEditor/Space.js.map +1 -1
- package/dist/esm/components/QueryEditor/TableSelector.js +0 -1
- package/dist/esm/components/QueryEditor/TableSelector.js.map +1 -1
- package/dist/esm/components/QueryEditor/defaults.js +7 -7
- package/dist/esm/components/QueryEditor/defaults.js.map +1 -1
- package/dist/esm/components/QueryEditor/expressions.js.map +1 -1
- package/dist/esm/components/QueryEditor/query-editor-raw/QueryEditorRaw.js +10 -2
- package/dist/esm/components/QueryEditor/query-editor-raw/QueryEditorRaw.js.map +1 -1
- package/dist/esm/components/QueryEditor/query-editor-raw/QueryToolbox.js +7 -2
- package/dist/esm/components/QueryEditor/query-editor-raw/QueryToolbox.js.map +1 -1
- package/dist/esm/components/QueryEditor/query-editor-raw/QueryValidator.js +4 -4
- package/dist/esm/components/QueryEditor/query-editor-raw/QueryValidator.js.map +1 -1
- package/dist/esm/components/QueryEditor/query-editor-raw/RawEditor.js +14 -4
- package/dist/esm/components/QueryEditor/query-editor-raw/RawEditor.js.map +1 -1
- package/dist/esm/components/QueryEditor/types.js +0 -1
- package/dist/esm/components/QueryEditor/types.js.map +1 -1
- package/dist/esm/components/QueryEditor/utils/formatSQL.js +15 -4
- package/dist/esm/components/QueryEditor/utils/formatSQL.js.map +1 -1
- package/dist/esm/components/QueryEditor/utils/sql.utils.js +8 -8
- package/dist/esm/components/QueryEditor/utils/sql.utils.js.map +1 -1
- package/dist/esm/components/QueryEditor/utils/useSqlChange.js.map +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/AwesomeQueryBuilder.js +26 -27
- package/dist/esm/components/QueryEditor/visual-query-builder/AwesomeQueryBuilder.js.map +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/EditorField.js +3 -3
- package/dist/esm/components/QueryEditor/visual-query-builder/EditorField.js.map +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/EditorRow.js +2 -2
- package/dist/esm/components/QueryEditor/visual-query-builder/EditorRow.js.map +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/EditorRows.js.map +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/GroupByRow.js +2 -2
- package/dist/esm/components/QueryEditor/visual-query-builder/GroupByRow.js.map +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/OrderByRow.js +4 -4
- package/dist/esm/components/QueryEditor/visual-query-builder/OrderByRow.js.map +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/Preview.js +4 -4
- package/dist/esm/components/QueryEditor/visual-query-builder/Preview.js.map +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/SQLGroupByRow.js +0 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/SQLGroupByRow.js.map +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/SQLOrderByRow.js +2 -3
- package/dist/esm/components/QueryEditor/visual-query-builder/SQLOrderByRow.js.map +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/SQLSelectRow.js +0 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/SQLSelectRow.js.map +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/SQLWhereRow.js +0 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/SQLWhereRow.js.map +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/SelectRow.js +9 -9
- package/dist/esm/components/QueryEditor/visual-query-builder/SelectRow.js.map +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/VisualEditor.js +10 -2
- package/dist/esm/components/QueryEditor/visual-query-builder/VisualEditor.js.map +1 -1
- package/dist/esm/components/QueryEditor/visual-query-builder/WhereRow.js.map +1 -1
- package/dist/esm/components/QueryEditorRow/QueryEditorRow.js.map +1 -1
- package/dist/esm/components/SQLEditor/components/SQLEditor.js +13 -13
- package/dist/esm/components/SQLEditor/components/SQLEditor.js.map +1 -1
- package/dist/esm/components/SQLEditor/hooks/useLatestCallback.js +1 -1
- package/dist/esm/components/SQLEditor/hooks/useLatestCallback.js.map +1 -1
- package/dist/esm/components/SQLEditor/mocks/Monaco.js.map +1 -1
- package/dist/esm/components/SQLEditor/mocks/TextModel.js.map +1 -1
- package/dist/esm/components/SQLEditor/mocks/queries/multiLineFullQuery.js.map +1 -1
- package/dist/esm/components/SQLEditor/mocks/queries/multiLineFullQueryWithAggregation.js.map +1 -1
- package/dist/esm/components/SQLEditor/mocks/queries/multiLineMultipleColumns.js.map +1 -1
- package/dist/esm/components/SQLEditor/mocks/queries/singleLineEmptyQuery.js.map +1 -1
- package/dist/esm/components/SQLEditor/mocks/queries/singleLineFullQuery.js.map +1 -1
- package/dist/esm/components/SQLEditor/mocks/queries/singleLineFullQueryWithAggregation.js.map +1 -1
- package/dist/esm/components/SQLEditor/mocks/queries/singleLineMultipleColumns.js.map +1 -1
- package/dist/esm/components/SQLEditor/mocks/queries/singleLineTwoQueries.js.map +1 -1
- package/dist/esm/components/SQLEditor/mocks/queries/singleLineTwoQueriesWithAggregation.js.map +1 -1
- package/dist/esm/components/SQLEditor/standardSql/definition.js +0 -6
- package/dist/esm/components/SQLEditor/standardSql/definition.js.map +1 -1
- package/dist/esm/components/SQLEditor/standardSql/getStandardSuggestions.js +2 -2
- package/dist/esm/components/SQLEditor/standardSql/getStandardSuggestions.js.map +1 -1
- package/dist/esm/components/SQLEditor/standardSql/getStatementPosition.js +5 -4
- package/dist/esm/components/SQLEditor/standardSql/getStatementPosition.js.map +1 -1
- package/dist/esm/components/SQLEditor/standardSql/language.js.map +1 -1
- package/dist/esm/components/SQLEditor/standardSql/macros.js.map +1 -1
- package/dist/esm/components/SQLEditor/standardSql/standardSQLCompletionItemProvider.js +2 -2
- package/dist/esm/components/SQLEditor/standardSql/standardSQLCompletionItemProvider.js.map +1 -1
- package/dist/esm/components/SQLEditor/standardSql/standardSuggestionsRegistry.js +1 -1
- package/dist/esm/components/SQLEditor/standardSql/standardSuggestionsRegistry.js.map +1 -1
- package/dist/esm/components/SQLEditor/standardSql/statementPositionResolversRegistry.js +27 -26
- package/dist/esm/components/SQLEditor/standardSql/statementPositionResolversRegistry.js.map +1 -1
- package/dist/esm/components/SQLEditor/standardSql/suggestionsKindRegistry.js +1 -1
- package/dist/esm/components/SQLEditor/standardSql/suggestionsKindRegistry.js.map +1 -1
- package/dist/esm/components/SQLEditor/test-utils/index.js.map +1 -1
- package/dist/esm/components/SQLEditor/test-utils/statementPosition.js.map +1 -1
- package/dist/esm/components/SQLEditor/types.js +1 -17
- package/dist/esm/components/SQLEditor/types.js.map +1 -1
- package/dist/esm/components/SQLEditor/utils/LinkedToken.js +8 -8
- package/dist/esm/components/SQLEditor/utils/LinkedToken.js.map +1 -1
- package/dist/esm/components/SQLEditor/utils/commands.js.map +1 -1
- package/dist/esm/components/SQLEditor/utils/debugger.js +1 -1
- package/dist/esm/components/SQLEditor/utils/debugger.js.map +1 -1
- package/dist/esm/components/SQLEditor/utils/getSuggestionKind.js.map +1 -1
- package/dist/esm/components/SQLEditor/utils/linkedTokenBuilder.js +3 -3
- package/dist/esm/components/SQLEditor/utils/linkedTokenBuilder.js.map +1 -1
- package/dist/esm/components/SQLEditor/utils/toCompletionItem.js +1 -1
- package/dist/esm/components/SQLEditor/utils/toCompletionItem.js.map +1 -1
- package/dist/esm/components/SQLEditor/utils/tokenType.js +18 -0
- package/dist/esm/components/SQLEditor/utils/tokenType.js.map +1 -0
- package/dist/esm/components/SQLEditor/utils/tokenUtils.js +10 -10
- package/dist/esm/components/SQLEditor/utils/tokenUtils.js.map +1 -1
- package/dist/esm/components/Segment/Segment.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/QueryModellerBase.js +2 -2
- package/dist/esm/components/VisualQueryBuilder/QueryModellerBase.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/LabelFilterItem.js +11 -11
- package/dist/esm/components/VisualQueryBuilder/components/LabelFilterItem.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/LabelFilters.js +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/LabelFilters.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/OperationEditor.js +4 -4
- package/dist/esm/components/VisualQueryBuilder/components/OperationEditor.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/OperationEditorBody.js +3 -3
- package/dist/esm/components/VisualQueryBuilder/components/OperationEditorBody.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/OperationExplainedBox.js +3 -3
- package/dist/esm/components/VisualQueryBuilder/components/OperationExplainedBox.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/OperationHeader.js +2 -2
- package/dist/esm/components/VisualQueryBuilder/components/OperationHeader.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/OperationInfoButton.js +2 -2
- package/dist/esm/components/VisualQueryBuilder/components/OperationInfoButton.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/OperationList.js +4 -4
- package/dist/esm/components/VisualQueryBuilder/components/OperationList.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/OperationListExplained.js +2 -2
- package/dist/esm/components/VisualQueryBuilder/components/OperationListExplained.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/OperationParamEditor.js +6 -6
- package/dist/esm/components/VisualQueryBuilder/components/OperationParamEditor.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/OperationsEditorRow.js +3 -3
- package/dist/esm/components/VisualQueryBuilder/components/OperationsEditorRow.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/QueryBuilderHints.js +8 -8
- package/dist/esm/components/VisualQueryBuilder/components/QueryBuilderHints.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/QueryEditorModeToggle.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/QueryHeaderSwitch.js +3 -3
- package/dist/esm/components/VisualQueryBuilder/components/QueryHeaderSwitch.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/QueryOptionGroup.js +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/QueryOptionGroup.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/components/RawQuery.js +2 -2
- package/dist/esm/components/VisualQueryBuilder/components/RawQuery.js.map +1 -1
- package/dist/esm/components/VisualQueryBuilder/types.js.map +1 -1
- package/dist/esm/datasource/SqlDatasource.js +14 -14
- package/dist/esm/datasource/SqlDatasource.js.map +1 -1
- package/dist/esm/datasource/constants.js.map +1 -1
- package/dist/esm/datasource/schema/config.js +235 -0
- package/dist/esm/datasource/schema/config.js.map +1 -0
- package/dist/esm/datasource/schema/datasource.js +228 -0
- package/dist/esm/datasource/schema/datasource.js.map +1 -0
- package/dist/esm/datasource/schema/llmHints.js +54 -0
- package/dist/esm/datasource/schema/llmHints.js.map +1 -0
- package/dist/esm/datasource/schema/provisioningYaml.js +358 -0
- package/dist/esm/datasource/schema/provisioningYaml.js.map +1 -0
- package/dist/esm/hooks/useDebounce.js.map +1 -1
- package/dist/esm/index.d.ts +565 -39
- package/dist/esm/index.js +7 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/test/mocks/DataQuery.js.map +1 -1
- package/dist/esm/test/mocks/Datasource.js +1 -1
- package/dist/esm/test/mocks/Datasource.js.map +1 -1
- package/dist/esm/test/mocks/Plugin.js +1 -1
- package/dist/esm/test/mocks/Plugin.js.map +1 -1
- package/dist/esm/test/mocks/QueryEditorProps.js.map +1 -1
- package/dist/esm/test/mocks/utils.js +2 -2
- package/dist/esm/test/mocks/utils.js.map +1 -1
- package/dist/esm/test-utils.d.ts +1 -1
- package/package.json +23 -20
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sources":["../../../../src/components/SQLEditor/types.ts"],"sourcesContent":["import { type Monaco, type monacoTypes } from '@grafana/ui';\nimport { type SQLMonarchLanguage, type StatementPositionResolver, type SuggestionsResolver } from './standardSql/types';\nimport { type LinkedToken } from './utils/LinkedToken';\n\n/**\n * Provides a context for suggestions resolver\n * @alpha\n */\nexport interface PositionContext {\n position: monacoTypes.IPosition;\n kind: SuggestionKind[];\n statementPosition: StatementPosition[];\n currentToken: LinkedToken | null;\n range: monacoTypes.IRange;\n}\n\nexport type CustomSuggestion = Partial<monacoTypes.languages.CompletionItem> & { label: string };\n\nexport interface CustomSuggestionKind {\n id: string;\n suggestionsResolver: SuggestionsResolver;\n applyTo?: Array<StatementPosition | string>;\n overrideDefault?: boolean;\n}\n\nexport interface CustomStatementPlacement {\n id: string;\n name?: string;\n resolve: StatementPositionResolver;\n overrideDefault?: boolean;\n}\nexport type StatementPlacementProvider = () => CustomStatementPlacement[];\nexport type SuggestionKindProvider = () => CustomSuggestionKind[];\n\nexport interface ColumnDefinition {\n name: string;\n type?: string;\n description?: string;\n // Text used for autocomplete. If not provided name is used.\n completion?: string;\n}\n\nexport interface SchemaDefinition {\n name: string;\n // Text used for autocomplete. If not provided name is used.\n completion?: string;\n}\n\nexport interface TableDefinition {\n name: string;\n // Text used for autocomplete. If not provided name is used.\n completion?: string;\n}\n\nexport interface Operator {\n id: string;\n operator: string;\n type: OperatorType;\n description?: string;\n}\n\nexport interface TableIdentifier {\n table?: string;\n schema?: string;\n catalog?: string;\n}\n\nexport interface SQLCompletionItemProvider\n extends Omit<monacoTypes.languages.CompletionItemProvider, 'provideCompletionItems'> {\n /**\n * Allows dialect specific functions to be added to the completion list.\n * @alpha\n */\n supportedFunctions?: () => Array<{\n id: string;\n name: string;\n description?: string;\n }>;\n\n /**\n * Allows dialect specific operators to be added to the completion list.\n * @alpha\n */\n supportedOperators?: () => Array<{\n id: string;\n operator: string;\n type: OperatorType;\n description?: string;\n }>;\n\n supportedMacros?: () => Array<{\n id: string;\n text: string;\n type: MacroType;\n args: string[];\n description?: string;\n }>;\n\n /**\n * Allows custom suggestion kinds to be defined and correlate them with <Custom>StatementPosition.\n * @alpha\n */\n customSuggestionKinds?: SuggestionKindProvider;\n\n /**\n * Allows custom statement placement definition.\n * @alpha\n */\n customStatementPlacement?: StatementPlacementProvider;\n\n /**\n * Allows providing a custom function for resolving schemas.\n * It's up to the consumer to decide whether the schemas are resolved via API calls or preloaded in the query editor(i.e. full db schema is preloaded).\n * @alpha\n */\n schemas?: {\n resolve: () => Promise<SchemaDefinition[]>;\n };\n\n /**\n * Allows providing a custom function for resolving db tables.\n * It's up to the consumer to decide whether the columns are resolved via API calls or preloaded in the query editor(i.e. full db schema is preloaded).\n * @alpha\n */\n tables?: {\n resolve: (TableIdentifier: TableIdentifier | null) => Promise<TableDefinition[]>;\n // Allows providing a custom function for calculating the table name from the query. If not specified a default implementation is used.\n parseName?: (token: LinkedToken | null | undefined) => TableIdentifier;\n };\n /**\n * Allows providing a custom function for resolving table.\n * It's up to the consumer to decide whether the columns are resolved via API calls or preloaded in the query editor(i.e. full db schema is preloaded).\n * @alpha\n */\n columns?: {\n resolve: (identifier?: TableIdentifier) => Promise<ColumnDefinition[]>;\n };\n\n /**\n * TODO: Not sure whether or not we need this. Would like to avoid this kind of flexibility.\n * @alpha\n */\n provideCompletionItems?: (\n model: monacoTypes.editor.ITextModel,\n position: monacoTypes.Position,\n context: monacoTypes.languages.CompletionContext,\n token: monacoTypes.CancellationToken,\n positionContext: PositionContext // Decorates original provideCompletionItems function with our custom statement position context\n ) => monacoTypes.languages.CompletionList;\n}\n\nexport type LanguageCompletionProvider = (m: Monaco, l?: SQLMonarchLanguage) => SQLCompletionItemProvider;\n\nexport enum OperatorType {\n Comparison,\n Logical,\n}\n\nexport enum MacroType {\n Value,\n Filter,\n Group,\n Column,\n Table,\n}\n\nexport enum TokenType {\n Parenthesis = 'delimiter.parenthesis.sql',\n Whitespace = 'white.sql',\n Keyword = 'keyword.sql',\n Delimiter = 'delimiter.sql',\n Operator = 'operator.sql',\n Identifier = 'identifier.sql',\n IdentifierQuote = 'identifier.quote.sql',\n Type = 'type.sql',\n Function = 'predefined.sql',\n Number = 'number.sql',\n String = 'string.sql',\n Variable = 'variable.sql',\n}\n\nexport enum StatementPosition {\n Unknown = 'unknown',\n SelectKeyword = 'selectKeyword',\n WithKeyword = 'withKeyword',\n AfterSelectKeyword = 'afterSelectKeyword',\n AfterSelectArguments = 'afterSelectArguments',\n AfterSelectFuncFirstArgument = 'afterSelectFuncFirstArgument',\n SelectAlias = 'selectAlias',\n AfterFromKeyword = 'afterFromKeyword',\n AfterTable = 'afterTable',\n SchemaFuncFirstArgument = 'schemaFuncFirstArgument',\n SchemaFuncExtraArgument = 'schemaFuncExtraArgument',\n FromKeyword = 'fromKeyword',\n AfterFrom = 'afterFrom',\n WhereKeyword = 'whereKeyword',\n WhereComparisonOperator = 'whereComparisonOperator',\n WhereValue = 'whereValue',\n AfterWhereFunctionArgument = 'afterWhereFunctionArgument',\n AfterGroupByFunctionArgument = 'afterGroupByFunctionArgument',\n AfterWhereValue = 'afterWhereValue',\n AfterGroupByKeywords = 'afterGroupByKeywords',\n AfterGroupBy = 'afterGroupBy',\n AfterOrderByKeywords = 'afterOrderByKeywords',\n AfterOrderByFunction = 'afterOrderByFunction',\n AfterOrderByDirection = 'afterOrderByDirection',\n AfterIsOperator = 'afterIsOperator',\n AfterIsNotOperator = 'afterIsNotOperator',\n AfterSchema = 'afterSchema',\n}\n\nexport enum SuggestionKind {\n Schemas = 'schemas',\n Tables = 'tables',\n Columns = 'columns',\n SelectKeyword = 'selectKeyword',\n WithKeyword = 'withKeyword',\n FunctionsWithArguments = 'functionsWithArguments',\n FromKeyword = 'fromKeyword',\n WhereKeyword = 'whereKeyword',\n GroupByKeywords = 'groupByKeywords',\n OrderByKeywords = 'orderByKeywords',\n FunctionsWithoutArguments = 'functionsWithoutArguments',\n LimitKeyword = 'limitKeyword',\n SortOrderDirectionKeyword = 'sortOrderDirectionKeyword',\n ComparisonOperators = 'comparisonOperators',\n LogicalOperators = 'logicalOperators',\n SelectMacro = 'selectMacro',\n TableMacro = 'tableMacro',\n FilterMacro = 'filterMacro',\n GroupMacro = 'groupMacro',\n BoolValues = 'boolValues',\n NullValue = 'nullValue',\n NotKeyword = 'notKeyword',\n TemplateVariables = 'templateVariables',\n StarWildCard = 'starWildCard',\n}\n\n// TODO: export from grafana/ui\nexport enum CompletionItemPriority {\n High = 'a',\n MediumHigh = 'd',\n Medium = 'g',\n MediumLow = 'k',\n Low = 'q',\n}\n\nexport enum CompletionItemKind {\n Method = 0,\n Function = 1,\n Constructor = 2,\n Field = 3,\n Variable = 4,\n Class = 5,\n Struct = 6,\n Interface = 7,\n Module = 8,\n Property = 9,\n Event = 10,\n Operator = 11,\n Unit = 12,\n Value = 13,\n Constant = 14,\n Enum = 15,\n EnumMember = 16,\n Keyword = 17,\n Text = 18,\n Color = 19,\n File = 20,\n Reference = 21,\n Customcolor = 22,\n Folder = 23,\n TypeParameter = 24,\n User = 25,\n Issue = 26,\n Snippet = 27,\n}\n\nexport enum CompletionItemInsertTextRule {\n KeepWhitespace = 1,\n InsertAsSnippet = 4,\n}\n\nexport enum SQLEditorMode {\n Builder = 'builder',\n Code = 'code',\n}\n"],"names":["OperatorType","MacroType","TokenType","StatementPosition","SuggestionKind","CompletionItemPriority","CompletionItemKind","CompletionItemInsertTextRule","SQLEditorMode"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../../../../src/components/SQLEditor/types.ts"],"sourcesContent":["import { type Monaco, type monacoTypes } from '@grafana/ui';\nimport { type LinkedToken } from './utils/LinkedToken';\n\n/**\n * Provides a context for suggestions resolver\n * @alpha\n */\nexport interface PositionContext {\n position: monacoTypes.IPosition;\n kind: SuggestionKind[];\n statementPosition: StatementPosition[];\n currentToken: LinkedToken | null;\n range: monacoTypes.IRange;\n}\n\nexport type CustomSuggestion = Partial<monacoTypes.languages.CompletionItem> & { label: string };\n\nexport interface CustomSuggestionKind {\n id: string;\n suggestionsResolver: SuggestionsResolver;\n applyTo?: Array<StatementPosition | string>;\n overrideDefault?: boolean;\n}\n\nexport interface CustomStatementPlacement {\n id: string;\n name?: string;\n resolve: StatementPositionResolver;\n overrideDefault?: boolean;\n}\nexport type StatementPlacementProvider = () => CustomStatementPlacement[];\nexport type SuggestionKindProvider = () => CustomSuggestionKind[];\n\nexport interface ColumnDefinition {\n name: string;\n type?: string;\n description?: string;\n // Text used for autocomplete. If not provided name is used.\n completion?: string;\n}\n\nexport interface SchemaDefinition {\n name: string;\n // Text used for autocomplete. If not provided name is used.\n completion?: string;\n}\n\nexport interface TableDefinition {\n name: string;\n // Text used for autocomplete. If not provided name is used.\n completion?: string;\n}\n\nexport interface Operator {\n id: string;\n operator: string;\n type: OperatorType;\n description?: string;\n}\n\nexport interface TableIdentifier {\n table?: string;\n schema?: string;\n catalog?: string;\n}\n\nexport interface SQLCompletionItemProvider\n extends Omit<monacoTypes.languages.CompletionItemProvider, 'provideCompletionItems'> {\n /**\n * Allows dialect specific functions to be added to the completion list.\n * @alpha\n */\n supportedFunctions?: () => Array<{\n id: string;\n name: string;\n description?: string;\n }>;\n\n /**\n * Allows dialect specific operators to be added to the completion list.\n * @alpha\n */\n supportedOperators?: () => Array<{\n id: string;\n operator: string;\n type: OperatorType;\n description?: string;\n }>;\n\n supportedMacros?: () => Array<{\n id: string;\n text: string;\n type: MacroType;\n args: string[];\n description?: string;\n }>;\n\n /**\n * Allows custom suggestion kinds to be defined and correlate them with <Custom>StatementPosition.\n * @alpha\n */\n customSuggestionKinds?: SuggestionKindProvider;\n\n /**\n * Allows custom statement placement definition.\n * @alpha\n */\n customStatementPlacement?: StatementPlacementProvider;\n\n /**\n * Allows providing a custom function for resolving schemas.\n * It's up to the consumer to decide whether the schemas are resolved via API calls or preloaded in the query editor(i.e. full db schema is preloaded).\n * @alpha\n */\n schemas?: {\n resolve: () => Promise<SchemaDefinition[]>;\n };\n\n /**\n * Allows providing a custom function for resolving db tables.\n * It's up to the consumer to decide whether the columns are resolved via API calls or preloaded in the query editor(i.e. full db schema is preloaded).\n * @alpha\n */\n tables?: {\n resolve: (TableIdentifier: TableIdentifier | null) => Promise<TableDefinition[]>;\n // Allows providing a custom function for calculating the table name from the query. If not specified a default implementation is used.\n parseName?: (token: LinkedToken | null | undefined) => TableIdentifier;\n };\n /**\n * Allows providing a custom function for resolving table.\n * It's up to the consumer to decide whether the columns are resolved via API calls or preloaded in the query editor(i.e. full db schema is preloaded).\n * @alpha\n */\n columns?: {\n resolve: (identifier?: TableIdentifier) => Promise<ColumnDefinition[]>;\n };\n\n /**\n * TODO: Not sure whether or not we need this. Would like to avoid this kind of flexibility.\n * @alpha\n */\n provideCompletionItems?: (\n model: monacoTypes.editor.ITextModel,\n position: monacoTypes.Position,\n context: monacoTypes.languages.CompletionContext,\n token: monacoTypes.CancellationToken,\n positionContext: PositionContext // Decorates original provideCompletionItems function with our custom statement position context\n ) => monacoTypes.languages.CompletionList;\n}\n\nexport interface SQLMonarchLanguage extends monacoTypes.languages.IMonarchLanguage {\n keywords?: string[];\n builtinFunctions?: string[];\n\n /* Example: AND, OR, LIKE */\n logicalOperators?: string[];\n /* Example: >, <>, = */\n comparisonOperators?: string[];\n\n /** Used by basic languages in the monaco registry **/\n operators?: string[];\n}\n\nexport type StatementPositionResolver = (\n currentToken: LinkedToken | null,\n previousKeyword: LinkedToken | null,\n previousNonWhiteSpace: LinkedToken | null,\n previousIsSlash: Boolean\n) => Boolean;\n\nexport type SuggestionsResolver = <T extends PositionContext = PositionContext>(\n positionContext: T\n) => Promise<CustomSuggestion[]>;\n\nexport type LanguageCompletionProvider = (m: Monaco, l?: SQLMonarchLanguage) => SQLCompletionItemProvider;\n\nexport interface LanguageDefinition extends monacoTypes.languages.ILanguageExtensionPoint {\n loader?: (module: any) => Promise<{\n language: SQLMonarchLanguage;\n conf: monacoTypes.languages.LanguageConfiguration;\n }>;\n // Provides API for customizing the autocomplete\n completionProvider?: (m: Monaco, language: SQLMonarchLanguage) => SQLCompletionItemProvider;\n // Function that returns a formatted query\n formatter?: (q: string) => string;\n}\n\nexport enum OperatorType {\n Comparison,\n Logical,\n}\n\nexport enum MacroType {\n Value,\n Filter,\n Group,\n Column,\n Table,\n}\n\nexport { TokenType } from './utils/tokenType';\n\nexport enum StatementPosition {\n Unknown = 'unknown',\n SelectKeyword = 'selectKeyword',\n WithKeyword = 'withKeyword',\n AfterSelectKeyword = 'afterSelectKeyword',\n AfterSelectArguments = 'afterSelectArguments',\n AfterSelectFuncFirstArgument = 'afterSelectFuncFirstArgument',\n SelectAlias = 'selectAlias',\n AfterFromKeyword = 'afterFromKeyword',\n AfterTable = 'afterTable',\n SchemaFuncFirstArgument = 'schemaFuncFirstArgument',\n SchemaFuncExtraArgument = 'schemaFuncExtraArgument',\n FromKeyword = 'fromKeyword',\n AfterFrom = 'afterFrom',\n WhereKeyword = 'whereKeyword',\n WhereComparisonOperator = 'whereComparisonOperator',\n WhereValue = 'whereValue',\n AfterWhereFunctionArgument = 'afterWhereFunctionArgument',\n AfterGroupByFunctionArgument = 'afterGroupByFunctionArgument',\n AfterWhereValue = 'afterWhereValue',\n AfterGroupByKeywords = 'afterGroupByKeywords',\n AfterGroupBy = 'afterGroupBy',\n AfterOrderByKeywords = 'afterOrderByKeywords',\n AfterOrderByFunction = 'afterOrderByFunction',\n AfterOrderByDirection = 'afterOrderByDirection',\n AfterIsOperator = 'afterIsOperator',\n AfterIsNotOperator = 'afterIsNotOperator',\n AfterSchema = 'afterSchema',\n}\n\nexport enum SuggestionKind {\n Schemas = 'schemas',\n Tables = 'tables',\n Columns = 'columns',\n SelectKeyword = 'selectKeyword',\n WithKeyword = 'withKeyword',\n FunctionsWithArguments = 'functionsWithArguments',\n FromKeyword = 'fromKeyword',\n WhereKeyword = 'whereKeyword',\n GroupByKeywords = 'groupByKeywords',\n OrderByKeywords = 'orderByKeywords',\n FunctionsWithoutArguments = 'functionsWithoutArguments',\n LimitKeyword = 'limitKeyword',\n SortOrderDirectionKeyword = 'sortOrderDirectionKeyword',\n ComparisonOperators = 'comparisonOperators',\n LogicalOperators = 'logicalOperators',\n SelectMacro = 'selectMacro',\n TableMacro = 'tableMacro',\n FilterMacro = 'filterMacro',\n GroupMacro = 'groupMacro',\n BoolValues = 'boolValues',\n NullValue = 'nullValue',\n NotKeyword = 'notKeyword',\n TemplateVariables = 'templateVariables',\n StarWildCard = 'starWildCard',\n}\n\n// TODO: export from grafana/ui\nexport enum CompletionItemPriority {\n High = 'a',\n MediumHigh = 'd',\n Medium = 'g',\n MediumLow = 'k',\n Low = 'q',\n}\n\nexport enum CompletionItemKind {\n Method = 0,\n Function = 1,\n Constructor = 2,\n Field = 3,\n Variable = 4,\n Class = 5,\n Struct = 6,\n Interface = 7,\n Module = 8,\n Property = 9,\n Event = 10,\n Operator = 11,\n Unit = 12,\n Value = 13,\n Constant = 14,\n Enum = 15,\n EnumMember = 16,\n Keyword = 17,\n Text = 18,\n Color = 19,\n File = 20,\n Reference = 21,\n Customcolor = 22,\n Folder = 23,\n TypeParameter = 24,\n User = 25,\n Issue = 26,\n Snippet = 27,\n}\n\nexport enum CompletionItemInsertTextRule {\n KeepWhitespace = 1,\n InsertAsSnippet = 4,\n}\n\nexport enum SQLEditorMode {\n Builder = 'builder',\n Code = 'code',\n}\n"],"names":["OperatorType","MacroType","StatementPosition","SuggestionKind","CompletionItemPriority","CompletionItemKind","CompletionItemInsertTextRule","SQLEditorMode"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import '@grafana/ui';
|
|
2
|
-
import { TokenType } from '
|
|
2
|
+
import { TokenType } from './tokenType.js';
|
|
3
3
|
|
|
4
4
|
class LinkedToken {
|
|
5
5
|
constructor(type, value, range, previous, next) {
|
|
@@ -44,7 +44,7 @@ class LinkedToken {
|
|
|
44
44
|
}
|
|
45
45
|
is(type, value) {
|
|
46
46
|
const isType = this.type === type;
|
|
47
|
-
return value !==
|
|
47
|
+
return value !== void 0 ? isType && compareTokenWithValue(type, this, value) : isType;
|
|
48
48
|
}
|
|
49
49
|
getPreviousNonWhiteSpaceToken() {
|
|
50
50
|
let curr = this.previous;
|
|
@@ -60,7 +60,7 @@ class LinkedToken {
|
|
|
60
60
|
let curr = this.previous;
|
|
61
61
|
while (curr != null) {
|
|
62
62
|
const isType = curr.type === type;
|
|
63
|
-
if (value !==
|
|
63
|
+
if (value !== void 0 ? isType && compareTokenWithValue(type, curr, value) : isType) {
|
|
64
64
|
return curr;
|
|
65
65
|
}
|
|
66
66
|
curr = curr.previous;
|
|
@@ -71,12 +71,12 @@ class LinkedToken {
|
|
|
71
71
|
let tokens = [];
|
|
72
72
|
let curr = this.previous;
|
|
73
73
|
while (curr != null) {
|
|
74
|
-
if (ignoreTypes.some((t) => t === (curr == null ?
|
|
74
|
+
if (ignoreTypes.some((t) => t === (curr == null ? void 0 : curr.type))) {
|
|
75
75
|
curr = curr.previous;
|
|
76
76
|
continue;
|
|
77
77
|
}
|
|
78
78
|
const isType = curr.type === type;
|
|
79
|
-
if (value !==
|
|
79
|
+
if (value !== void 0 ? isType && compareTokenWithValue(type, curr, value) : isType) {
|
|
80
80
|
return tokens;
|
|
81
81
|
}
|
|
82
82
|
if (!curr.isWhiteSpace()) {
|
|
@@ -90,12 +90,12 @@ class LinkedToken {
|
|
|
90
90
|
let tokens = [];
|
|
91
91
|
let curr = this.next;
|
|
92
92
|
while (curr != null) {
|
|
93
|
-
if (ignoreTypes.some((t) => t === (curr == null ?
|
|
93
|
+
if (ignoreTypes.some((t) => t === (curr == null ? void 0 : curr.type))) {
|
|
94
94
|
curr = curr.next;
|
|
95
95
|
continue;
|
|
96
96
|
}
|
|
97
97
|
const isType = curr.type === type;
|
|
98
|
-
if (value !==
|
|
98
|
+
if (value !== void 0 ? isType && compareTokenWithValue(type, curr, value) : isType) {
|
|
99
99
|
return tokens;
|
|
100
100
|
}
|
|
101
101
|
if (!curr.isWhiteSpace()) {
|
|
@@ -129,7 +129,7 @@ class LinkedToken {
|
|
|
129
129
|
let curr = this.next;
|
|
130
130
|
while (curr != null) {
|
|
131
131
|
const isType = curr.type === type;
|
|
132
|
-
if (value !==
|
|
132
|
+
if (value !== void 0 ? isType && compareTokenWithValue(type, curr, value) : isType) {
|
|
133
133
|
return curr;
|
|
134
134
|
}
|
|
135
135
|
curr = curr.next;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinkedToken.js","sources":["../../../../../src/components/SQLEditor/utils/LinkedToken.ts"],"sourcesContent":["import { type monacoTypes } from '@grafana/ui';\nimport { TokenType } from '
|
|
1
|
+
{"version":3,"file":"LinkedToken.js","sources":["../../../../../src/components/SQLEditor/utils/LinkedToken.ts"],"sourcesContent":["import { type monacoTypes } from '@grafana/ui';\nimport { TokenType } from './tokenType';\n\nexport class LinkedToken {\n constructor(\n public type: string,\n public value: string,\n public range: monacoTypes.IRange,\n public previous: LinkedToken | null,\n public next: LinkedToken | null\n ) {}\n\n isKeyword(): boolean {\n return this.type === TokenType.Keyword;\n }\n\n isWhiteSpace(): boolean {\n return this.type === TokenType.Whitespace;\n }\n\n isParenthesis(): boolean {\n return this.type === TokenType.Parenthesis;\n }\n\n isIdentifier(): boolean {\n return this.type === TokenType.Identifier;\n }\n\n isString(): boolean {\n return this.type === TokenType.String;\n }\n\n isNumber(): boolean {\n return this.type === TokenType.Number;\n }\n\n isDoubleQuotedString(): boolean {\n return this.type === TokenType.Type;\n }\n\n isVariable(): boolean {\n return this.type === TokenType.Variable;\n }\n\n isFunction(): boolean {\n return this.type === TokenType.Function;\n }\n\n isOperator(): boolean {\n return this.type === TokenType.Operator;\n }\n\n isTemplateVariable(): boolean {\n return this.type === TokenType.Variable;\n }\n\n is(type: TokenType, value?: string | number | boolean): boolean {\n const isType = this.type === type;\n\n return value !== undefined ? isType && compareTokenWithValue(type, this, value) : isType;\n }\n\n getPreviousNonWhiteSpaceToken(): LinkedToken | null {\n let curr = this.previous;\n while (curr != null) {\n if (!curr.isWhiteSpace()) {\n return curr;\n }\n curr = curr.previous;\n }\n return null;\n }\n\n getPreviousOfType(type: TokenType, value?: string): LinkedToken | null {\n let curr = this.previous;\n while (curr != null) {\n const isType = curr.type === type;\n\n if (value !== undefined ? isType && compareTokenWithValue(type, curr, value) : isType) {\n return curr;\n }\n curr = curr.previous;\n }\n return null;\n }\n\n getPreviousUntil(type: TokenType, ignoreTypes: TokenType[], value?: string): LinkedToken[] | null {\n let tokens: LinkedToken[] = [];\n let curr = this.previous;\n while (curr != null) {\n if (ignoreTypes.some((t) => t === curr?.type)) {\n curr = curr.previous;\n continue;\n }\n\n const isType = curr.type === type;\n\n if (value !== undefined ? isType && compareTokenWithValue(type, curr, value) : isType) {\n return tokens;\n }\n if (!curr.isWhiteSpace()) {\n tokens.push(curr);\n }\n curr = curr.previous;\n }\n\n return tokens;\n }\n\n getNextUntil(type: TokenType, ignoreTypes: TokenType[], value?: string): LinkedToken[] | null {\n let tokens: LinkedToken[] = [];\n let curr = this.next;\n while (curr != null) {\n if (ignoreTypes.some((t) => t === curr?.type)) {\n curr = curr.next;\n continue;\n }\n\n const isType = curr.type === type;\n\n if (value !== undefined ? isType && compareTokenWithValue(type, curr, value) : isType) {\n return tokens;\n }\n if (!curr.isWhiteSpace()) {\n tokens.push(curr);\n }\n curr = curr.next;\n }\n\n return tokens;\n }\n\n getPreviousKeyword(): LinkedToken | null {\n let curr = this.previous;\n while (curr != null) {\n if (curr.isKeyword()) {\n return curr;\n }\n curr = curr.previous;\n }\n return null;\n }\n\n getNextNonWhiteSpaceToken(): LinkedToken | null {\n let curr = this.next;\n while (curr != null) {\n if (!curr.isWhiteSpace()) {\n return curr;\n }\n curr = curr.next;\n }\n return null;\n }\n\n getNextOfType(type: TokenType, value?: string): LinkedToken | null {\n let curr = this.next;\n while (curr != null) {\n const isType = curr.type === type;\n\n if (value !== undefined ? isType && compareTokenWithValue(type, curr, value) : isType) {\n return curr;\n }\n curr = curr.next;\n }\n return null;\n }\n}\n\nfunction compareTokenWithValue(type: TokenType, token: LinkedToken, value: string | number | boolean) {\n return type === TokenType.Keyword || type === TokenType.Operator\n ? token.value.toLowerCase() === value.toString().toLowerCase()\n : token.value === value;\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sources":["../../../../../src/components/SQLEditor/utils/commands.ts"],"sourcesContent":["export const TRIGGER_SUGGEST = {\n id: 'editor.action.triggerSuggest',\n title: '',\n};\n"],"names":[],"mappings":"AAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"commands.js","sources":["../../../../../src/components/SQLEditor/utils/commands.ts"],"sourcesContent":["export const TRIGGER_SUGGEST = {\n id: 'editor.action.triggerSuggest',\n title: '',\n};\n"],"names":[],"mappings":"AAAO,MAAM,eAAA,GAAkB;AAAA,EAC7B,EAAA,EAAI,8BAAA;AAAA,EACJ,KAAA,EAAO;AACT;;;;"}
|
|
@@ -7,7 +7,7 @@ let sqlEditorLog = () => {
|
|
|
7
7
|
if (attachDebugger && createLogger) {
|
|
8
8
|
sqlEditorLogger = createLogger("SQLEditor");
|
|
9
9
|
sqlEditorLog = sqlEditorLogger.logger;
|
|
10
|
-
attachDebugger("sqleditor",
|
|
10
|
+
attachDebugger("sqleditor", void 0, sqlEditorLogger);
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
export { sqlEditorLog, sqlEditorLogger };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debugger.js","sources":["../../../../../src/components/SQLEditor/utils/debugger.ts"],"sourcesContent":["import { attachDebugger, createLogger } from '@grafana/ui';\n\nlet sqlEditorLogger = { logger: () => {} };\nlet sqlEditorLog: (...t: any[]) => void = () => {};\n\nif (attachDebugger && createLogger) {\n sqlEditorLogger = createLogger('SQLEditor');\n sqlEditorLog = sqlEditorLogger.logger;\n attachDebugger('sqleditor', undefined, sqlEditorLogger as any);\n}\n\nexport { sqlEditorLog, sqlEditorLogger };\n"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"debugger.js","sources":["../../../../../src/components/SQLEditor/utils/debugger.ts"],"sourcesContent":["import { attachDebugger, createLogger } from '@grafana/ui';\n\nlet sqlEditorLogger = { logger: () => {} };\nlet sqlEditorLog: (...t: any[]) => void = () => {};\n\nif (attachDebugger && createLogger) {\n sqlEditorLogger = createLogger('SQLEditor');\n sqlEditorLog = sqlEditorLogger.logger;\n attachDebugger('sqleditor', undefined, sqlEditorLogger as any);\n}\n\nexport { sqlEditorLog, sqlEditorLogger };\n"],"names":[],"mappings":";;AAEA,IAAI,eAAA,GAAkB,EAAE,MAAA,EAAQ,MAAM;AAAC,CAAA;AACvC,IAAI,eAAsC,MAAM;AAAC;AAEjD,IAAI,kBAAkB,YAAA,EAAc;AAClC,EAAA,eAAA,GAAkB,aAAa,WAAW,CAAA;AAC1C,EAAA,YAAA,GAAe,eAAA,CAAgB,MAAA;AAC/B,EAAA,cAAA,CAAe,WAAA,EAAa,QAAW,eAAsB,CAAA;AAC/D;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSuggestionKind.js","sources":["../../../../../src/components/SQLEditor/utils/getSuggestionKind.ts"],"sourcesContent":["import { type Registry } from '@grafana/data';\nimport { type SuggestionKindRegistryItem } from '../standardSql/suggestionsKindRegistry';\nimport { type StatementPosition, type SuggestionKind } from '../types';\n\n/**\n * Given statement positions, returns list of suggestion kinds that apply to those positions.\n */\nexport function getSuggestionKinds(\n statementPosition: StatementPosition[],\n suggestionsKindRegistry: Registry<SuggestionKindRegistryItem>\n): SuggestionKind[] {\n let result: SuggestionKind[] = [];\n for (let i = 0; i < statementPosition.length; i++) {\n const exists = suggestionsKindRegistry.getIfExists(statementPosition[i]);\n if (exists) {\n result = result.concat(exists.kind);\n }\n }\n\n return result;\n}\n"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"getSuggestionKind.js","sources":["../../../../../src/components/SQLEditor/utils/getSuggestionKind.ts"],"sourcesContent":["import { type Registry } from '@grafana/data';\nimport { type SuggestionKindRegistryItem } from '../standardSql/suggestionsKindRegistry';\nimport { type StatementPosition, type SuggestionKind } from '../types';\n\n/**\n * Given statement positions, returns list of suggestion kinds that apply to those positions.\n */\nexport function getSuggestionKinds(\n statementPosition: StatementPosition[],\n suggestionsKindRegistry: Registry<SuggestionKindRegistryItem>\n): SuggestionKind[] {\n let result: SuggestionKind[] = [];\n for (let i = 0; i < statementPosition.length; i++) {\n const exists = suggestionsKindRegistry.getIfExists(statementPosition[i]);\n if (exists) {\n result = result.concat(exists.kind);\n }\n }\n\n return result;\n}\n"],"names":[],"mappings":";;;AAOO,SAAS,kBAAA,CACd,mBACA,uBAAA,EACkB;AAClB,EAAA,IAAI,SAA2B,EAAC;AAChC,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,iBAAA,CAAkB,QAAQ,CAAA,EAAA,EAAK;AACjD,IAAA,MAAM,MAAA,GAAS,uBAAA,CAAwB,WAAA,CAAY,iBAAA,CAAkB,CAAC,CAAC,CAAA;AACvE,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,MAAA,GAAS,MAAA,CAAO,MAAA,CAAO,MAAA,CAAO,IAAI,CAAA;AAAA,IACpC;AAAA,EACF;AAEA,EAAA,OAAO,MAAA;AACT;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { TokenType } from '../types.js';
|
|
2
|
-
import { LinkedToken } from './LinkedToken.js';
|
|
3
1
|
import '@grafana/ui';
|
|
2
|
+
import { LinkedToken } from './LinkedToken.js';
|
|
3
|
+
import { TokenType } from './tokenType.js';
|
|
4
4
|
|
|
5
5
|
function linkedTokenBuilder(monaco, model, position, languageId = "sql") {
|
|
6
6
|
var _a;
|
|
@@ -14,7 +14,7 @@ function linkedTokenBuilder(monaco, model, position, languageId = "sql") {
|
|
|
14
14
|
offset: 0,
|
|
15
15
|
type: TokenType.Whitespace,
|
|
16
16
|
language: languageId,
|
|
17
|
-
_tokenBrand:
|
|
17
|
+
_tokenBrand: void 0
|
|
18
18
|
};
|
|
19
19
|
tokens.push(token);
|
|
20
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linkedTokenBuilder.js","sources":["../../../../../src/components/SQLEditor/utils/linkedTokenBuilder.ts"],"sourcesContent":["import type { monacoTypes } from '@grafana/ui';\nimport { TokenType } from '../types';\nimport { LinkedToken } from './LinkedToken';\nimport { type Monaco } from './types';\n\nexport function linkedTokenBuilder(\n monaco: Monaco,\n model: monacoTypes.editor.ITextModel,\n position: monacoTypes.IPosition,\n languageId = 'sql'\n) {\n let current: LinkedToken | null = null;\n let previous: LinkedToken | null = null;\n const tokensPerLine = monaco.editor.tokenize(model.getValue() ?? '', languageId);\n for (let lineIndex = 0; lineIndex < tokensPerLine.length; lineIndex++) {\n const tokens = tokensPerLine[lineIndex];\n // In case position is first column in new line, add empty whitespace token so that links are not broken\n if (!tokens.length && previous) {\n const token: monacoTypes.Token = {\n offset: 0,\n type: TokenType.Whitespace,\n language: languageId,\n _tokenBrand: undefined,\n };\n tokens.push(token);\n }\n\n for (let columnIndex = 0; columnIndex < tokens.length; columnIndex++) {\n const token = tokens[columnIndex];\n let endColumn =\n tokens.length > columnIndex + 1 ? tokens[columnIndex + 1].offset + 1 : model.getLineLength(lineIndex + 1) + 1;\n\n const range: monacoTypes.IRange = {\n startLineNumber: lineIndex + 1,\n startColumn: token.offset === 0 ? 0 : token.offset + 1,\n endLineNumber: lineIndex + 1,\n endColumn,\n };\n\n const value = model.getValueInRange(range);\n const sqlToken: LinkedToken = new LinkedToken(token.type, value, range, previous, null);\n\n if (monaco.Range.containsPosition(range, position)) {\n current = sqlToken;\n }\n\n if (previous) {\n previous.next = sqlToken;\n }\n previous = sqlToken;\n }\n }\n return current;\n}\n"],"names":[],"mappings":";;;;AAKO,SAAS,
|
|
1
|
+
{"version":3,"file":"linkedTokenBuilder.js","sources":["../../../../../src/components/SQLEditor/utils/linkedTokenBuilder.ts"],"sourcesContent":["import type { monacoTypes } from '@grafana/ui';\nimport { TokenType } from '../types';\nimport { LinkedToken } from './LinkedToken';\nimport { type Monaco } from './types';\n\nexport function linkedTokenBuilder(\n monaco: Monaco,\n model: monacoTypes.editor.ITextModel,\n position: monacoTypes.IPosition,\n languageId = 'sql'\n) {\n let current: LinkedToken | null = null;\n let previous: LinkedToken | null = null;\n const tokensPerLine = monaco.editor.tokenize(model.getValue() ?? '', languageId);\n for (let lineIndex = 0; lineIndex < tokensPerLine.length; lineIndex++) {\n const tokens = tokensPerLine[lineIndex];\n // In case position is first column in new line, add empty whitespace token so that links are not broken\n if (!tokens.length && previous) {\n const token: monacoTypes.Token = {\n offset: 0,\n type: TokenType.Whitespace,\n language: languageId,\n _tokenBrand: undefined,\n };\n tokens.push(token);\n }\n\n for (let columnIndex = 0; columnIndex < tokens.length; columnIndex++) {\n const token = tokens[columnIndex];\n let endColumn =\n tokens.length > columnIndex + 1 ? tokens[columnIndex + 1].offset + 1 : model.getLineLength(lineIndex + 1) + 1;\n\n const range: monacoTypes.IRange = {\n startLineNumber: lineIndex + 1,\n startColumn: token.offset === 0 ? 0 : token.offset + 1,\n endLineNumber: lineIndex + 1,\n endColumn,\n };\n\n const value = model.getValueInRange(range);\n const sqlToken: LinkedToken = new LinkedToken(token.type, value, range, previous, null);\n\n if (monaco.Range.containsPosition(range, position)) {\n current = sqlToken;\n }\n\n if (previous) {\n previous.next = sqlToken;\n }\n previous = sqlToken;\n }\n }\n return current;\n}\n"],"names":[],"mappings":";;;;AAKO,SAAS,kBAAA,CACd,MAAA,EACA,KAAA,EACA,QAAA,EACA,aAAa,KAAA,EACb;AAVF,EAAA,IAAA,EAAA;AAWE,EAAA,IAAI,OAAA,GAA8B,IAAA;AAClC,EAAA,IAAI,QAAA,GAA+B,IAAA;AACnC,EAAA,MAAM,aAAA,GAAgB,OAAO,MAAA,CAAO,QAAA,CAAA,CAAS,WAAM,QAAA,EAAS,KAAf,IAAA,GAAA,EAAA,GAAoB,EAAA,EAAI,UAAU,CAAA;AAC/E,EAAA,KAAA,IAAS,SAAA,GAAY,CAAA,EAAG,SAAA,GAAY,aAAA,CAAc,QAAQ,SAAA,EAAA,EAAa;AACrE,IAAA,MAAM,MAAA,GAAS,cAAc,SAAS,CAAA;AAEtC,IAAA,IAAI,CAAC,MAAA,CAAO,MAAA,IAAU,QAAA,EAAU;AAC9B,MAAA,MAAM,KAAA,GAA2B;AAAA,QAC/B,MAAA,EAAQ,CAAA;AAAA,QACR,MAAM,SAAA,CAAU,UAAA;AAAA,QAChB,QAAA,EAAU,UAAA;AAAA,QACV,WAAA,EAAa;AAAA,OACf;AACA,MAAA,MAAA,CAAO,KAAK,KAAK,CAAA;AAAA,IACnB;AAEA,IAAA,KAAA,IAAS,WAAA,GAAc,CAAA,EAAG,WAAA,GAAc,MAAA,CAAO,QAAQ,WAAA,EAAA,EAAe;AACpE,MAAA,MAAM,KAAA,GAAQ,OAAO,WAAW,CAAA;AAChC,MAAA,IAAI,SAAA,GACF,MAAA,CAAO,MAAA,GAAS,WAAA,GAAc,IAAI,MAAA,CAAO,WAAA,GAAc,CAAC,CAAA,CAAE,SAAS,CAAA,GAAI,KAAA,CAAM,aAAA,CAAc,SAAA,GAAY,CAAC,CAAA,GAAI,CAAA;AAE9G,MAAA,MAAM,KAAA,GAA4B;AAAA,QAChC,iBAAiB,SAAA,GAAY,CAAA;AAAA,QAC7B,aAAa,KAAA,CAAM,MAAA,KAAW,CAAA,GAAI,CAAA,GAAI,MAAM,MAAA,GAAS,CAAA;AAAA,QACrD,eAAe,SAAA,GAAY,CAAA;AAAA,QAC3B;AAAA,OACF;AAEA,MAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,eAAA,CAAgB,KAAK,CAAA;AACzC,MAAA,MAAM,QAAA,GAAwB,IAAI,WAAA,CAAY,KAAA,CAAM,MAAM,KAAA,EAAO,KAAA,EAAO,UAAU,IAAI,CAAA;AAEtF,MAAA,IAAI,MAAA,CAAO,KAAA,CAAM,gBAAA,CAAiB,KAAA,EAAO,QAAQ,CAAA,EAAG;AAClD,QAAA,OAAA,GAAU,QAAA;AAAA,MACZ;AAEA,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,QAAA,CAAS,IAAA,GAAO,QAAA;AAAA,MAClB;AACA,MAAA,QAAA,GAAW,QAAA;AAAA,IACb;AAAA,EACF;AACA,EAAA,OAAO,OAAA;AACT;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toCompletionItem.js","sources":["../../../../../src/components/SQLEditor/utils/toCompletionItem.ts"],"sourcesContent":["import { type monacoTypes } from '@grafana/ui';\nimport { CompletionItemKind, CompletionItemPriority } from '../types';\n\nexport const toCompletionItem = (\n value: string,\n range: monacoTypes.IRange,\n rest: Partial<monacoTypes.languages.CompletionItem> = {}\n) => {\n const item: monacoTypes.languages.CompletionItem = {\n label: value,\n insertText: value,\n kind: CompletionItemKind.Field,\n sortText: CompletionItemPriority.Medium,\n range,\n ...rest,\n };\n return item;\n};\n"],"names":[],"mappings":";;;AAGO,MAAM,mBAAmB,CAC9B,KAAA,EACA,
|
|
1
|
+
{"version":3,"file":"toCompletionItem.js","sources":["../../../../../src/components/SQLEditor/utils/toCompletionItem.ts"],"sourcesContent":["import { type monacoTypes } from '@grafana/ui';\nimport { CompletionItemKind, CompletionItemPriority } from '../types';\n\nexport const toCompletionItem = (\n value: string,\n range: monacoTypes.IRange,\n rest: Partial<monacoTypes.languages.CompletionItem> = {}\n) => {\n const item: monacoTypes.languages.CompletionItem = {\n label: value,\n insertText: value,\n kind: CompletionItemKind.Field,\n sortText: CompletionItemPriority.Medium,\n range,\n ...rest,\n };\n return item;\n};\n"],"names":[],"mappings":";;;AAGO,MAAM,mBAAmB,CAC9B,KAAA,EACA,KAAA,EACA,IAAA,GAAsD,EAAC,KACpD;AACH,EAAA,MAAM,IAAA,GAA6C;AAAA,IACjD,KAAA,EAAO,KAAA;AAAA,IACP,UAAA,EAAY,KAAA;AAAA,IACZ,MAAM,kBAAA,CAAmB,KAAA;AAAA,IACzB,UAAU,sBAAA,CAAuB,MAAA;AAAA,IACjC,KAAA;AAAA,IACA,GAAG;AAAA,GACL;AACA,EAAA,OAAO,IAAA;AACT;;;;"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
var TokenType = /* @__PURE__ */ ((TokenType2) => {
|
|
2
|
+
TokenType2["Parenthesis"] = "delimiter.parenthesis.sql";
|
|
3
|
+
TokenType2["Whitespace"] = "white.sql";
|
|
4
|
+
TokenType2["Keyword"] = "keyword.sql";
|
|
5
|
+
TokenType2["Delimiter"] = "delimiter.sql";
|
|
6
|
+
TokenType2["Operator"] = "operator.sql";
|
|
7
|
+
TokenType2["Identifier"] = "identifier.sql";
|
|
8
|
+
TokenType2["IdentifierQuote"] = "identifier.quote.sql";
|
|
9
|
+
TokenType2["Type"] = "type.sql";
|
|
10
|
+
TokenType2["Function"] = "predefined.sql";
|
|
11
|
+
TokenType2["Number"] = "number.sql";
|
|
12
|
+
TokenType2["String"] = "string.sql";
|
|
13
|
+
TokenType2["Variable"] = "variable.sql";
|
|
14
|
+
return TokenType2;
|
|
15
|
+
})(TokenType || {});
|
|
16
|
+
|
|
17
|
+
export { TokenType };
|
|
18
|
+
//# sourceMappingURL=tokenType.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenType.js","sources":["../../../../../src/components/SQLEditor/utils/tokenType.ts"],"sourcesContent":["export enum TokenType {\n Parenthesis = 'delimiter.parenthesis.sql',\n Whitespace = 'white.sql',\n Keyword = 'keyword.sql',\n Delimiter = 'delimiter.sql',\n Operator = 'operator.sql',\n Identifier = 'identifier.sql',\n IdentifierQuote = 'identifier.quote.sql',\n Type = 'type.sql',\n Function = 'predefined.sql',\n Number = 'number.sql',\n String = 'string.sql',\n Variable = 'variable.sql',\n}\n"],"names":["TokenType"],"mappings":"AAAO,IAAK,SAAA,qBAAAA,UAAAA,KAAL;AACL,EAAAA,WAAA,aAAA,CAAA,GAAc,2BAAA;AACd,EAAAA,WAAA,YAAA,CAAA,GAAa,WAAA;AACb,EAAAA,WAAA,SAAA,CAAA,GAAU,aAAA;AACV,EAAAA,WAAA,WAAA,CAAA,GAAY,eAAA;AACZ,EAAAA,WAAA,UAAA,CAAA,GAAW,cAAA;AACX,EAAAA,WAAA,YAAA,CAAA,GAAa,gBAAA;AACb,EAAAA,WAAA,iBAAA,CAAA,GAAkB,sBAAA;AAClB,EAAAA,WAAA,MAAA,CAAA,GAAO,UAAA;AACP,EAAAA,WAAA,UAAA,CAAA,GAAW,gBAAA;AACX,EAAAA,WAAA,QAAA,CAAA,GAAS,YAAA;AACT,EAAAA,WAAA,QAAA,CAAA,GAAS,YAAA;AACT,EAAAA,WAAA,UAAA,CAAA,GAAW,cAAA;AAZD,EAAA,OAAAA,UAAAA;AAAA,CAAA,EAAA,SAAA,IAAA,EAAA;;;;"}
|
|
@@ -1,34 +1,34 @@
|
|
|
1
1
|
import { FROM, SELECT } from '../standardSql/language.js';
|
|
2
|
-
import { TokenType } from '../types.js';
|
|
3
2
|
import '@grafana/ui';
|
|
3
|
+
import { TokenType } from './tokenType.js';
|
|
4
4
|
|
|
5
5
|
const getSelectToken = (currentToken) => {
|
|
6
6
|
var _a;
|
|
7
|
-
return (_a = currentToken == null ?
|
|
7
|
+
return (_a = currentToken == null ? void 0 : currentToken.getPreviousOfType(TokenType.Keyword, SELECT)) != null ? _a : null;
|
|
8
8
|
};
|
|
9
9
|
const getFromKeywordToken = (currentToken) => {
|
|
10
10
|
const selectToken = getSelectToken(currentToken);
|
|
11
|
-
return selectToken == null ?
|
|
11
|
+
return selectToken == null ? void 0 : selectToken.getNextOfType(TokenType.Keyword, FROM);
|
|
12
12
|
};
|
|
13
13
|
const getTableToken = (currentToken) => {
|
|
14
14
|
var _a;
|
|
15
15
|
const fromToken = getFromKeywordToken(currentToken);
|
|
16
|
-
const nextNonWhiteSpace = fromToken == null ?
|
|
17
|
-
if (nextNonWhiteSpace == null ?
|
|
16
|
+
const nextNonWhiteSpace = fromToken == null ? void 0 : fromToken.getNextNonWhiteSpaceToken();
|
|
17
|
+
if (nextNonWhiteSpace == null ? void 0 : nextNonWhiteSpace.isVariable()) {
|
|
18
18
|
return null;
|
|
19
|
-
} else if ((nextNonWhiteSpace == null ?
|
|
19
|
+
} else if ((nextNonWhiteSpace == null ? void 0 : nextNonWhiteSpace.isKeyword()) && ((_a = nextNonWhiteSpace.next) == null ? void 0 : _a.is(TokenType.Parenthesis, "("))) {
|
|
20
20
|
return null;
|
|
21
21
|
} else {
|
|
22
22
|
return nextNonWhiteSpace;
|
|
23
23
|
}
|
|
24
24
|
};
|
|
25
25
|
const defaultTableNameParser = (token) => {
|
|
26
|
-
const parts = token == null ?
|
|
27
|
-
if ((parts == null ?
|
|
26
|
+
const parts = token == null ? void 0 : token.value.split(".");
|
|
27
|
+
if ((parts == null ? void 0 : parts.length) === 1) {
|
|
28
28
|
return { table: parts[0] };
|
|
29
|
-
} else if ((parts == null ?
|
|
29
|
+
} else if ((parts == null ? void 0 : parts.length) === 2) {
|
|
30
30
|
return { schema: parts[0], table: parts[1] };
|
|
31
|
-
} else if ((parts == null ?
|
|
31
|
+
} else if ((parts == null ? void 0 : parts.length) === 3) {
|
|
32
32
|
return { catalog: parts[0], schema: parts[1], table: parts[2] };
|
|
33
33
|
}
|
|
34
34
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokenUtils.js","sources":["../../../../../src/components/SQLEditor/utils/tokenUtils.ts"],"sourcesContent":["import { FROM, SCHEMA, SELECT } from '../standardSql/language';\nimport { TokenType } from '../types';\nimport { type LinkedToken } from './LinkedToken';\n\nexport const getSelectToken = (currentToken: LinkedToken | null) =>\n currentToken?.getPreviousOfType(TokenType.Keyword, SELECT) ?? null;\n\nexport const getSelectStatisticToken = (currentToken: LinkedToken | null) => {\n const assumedStatisticToken = getSelectToken(currentToken)?.getNextNonWhiteSpaceToken();\n return assumedStatisticToken?.isVariable() || assumedStatisticToken?.isFunction() ? assumedStatisticToken : null;\n};\n\nexport const getMetricNameToken = (currentToken: LinkedToken | null) => {\n // statistic function is followed by `(` and then an argument\n const assumedMetricNameToken = getSelectStatisticToken(currentToken)?.next?.next;\n return assumedMetricNameToken?.isVariable() || assumedMetricNameToken?.isIdentifier() ? assumedMetricNameToken : null;\n};\n\nexport const getFromKeywordToken = (currentToken: LinkedToken | null) => {\n const selectToken = getSelectToken(currentToken);\n return selectToken?.getNextOfType(TokenType.Keyword, FROM);\n};\n\nexport const getNamespaceToken = (currentToken: LinkedToken | null) => {\n const fromToken = getFromKeywordToken(currentToken);\n const nextNonWhiteSpace = fromToken?.getNextNonWhiteSpaceToken();\n\n if (\n nextNonWhiteSpace?.isDoubleQuotedString() ||\n (nextNonWhiteSpace?.isVariable() && nextNonWhiteSpace?.value.toUpperCase() !== SCHEMA)\n ) {\n // schema is not used\n return nextNonWhiteSpace;\n } else if (nextNonWhiteSpace?.isKeyword() && nextNonWhiteSpace.next?.is(TokenType.Parenthesis, '(')) {\n // schema is specified\n const assumedNamespaceToken = nextNonWhiteSpace.next?.next;\n if (assumedNamespaceToken?.isDoubleQuotedString() || assumedNamespaceToken?.isVariable()) {\n return assumedNamespaceToken;\n }\n }\n return null;\n};\nexport const getTableToken = (currentToken: LinkedToken | null) => {\n const fromToken = getFromKeywordToken(currentToken);\n const nextNonWhiteSpace = fromToken?.getNextNonWhiteSpaceToken();\n if (nextNonWhiteSpace?.isVariable()) {\n // TODO: resolve column from variable?\n return null;\n } else if (nextNonWhiteSpace?.isKeyword() && nextNonWhiteSpace.next?.is(TokenType.Parenthesis, '(')) {\n return null;\n } else {\n return nextNonWhiteSpace;\n }\n};\n\nexport const defaultTableNameParser = (token: LinkedToken | null | undefined) => {\n const parts = token?.value.split('.');\n\n if (parts?.length === 1) {\n return { table: parts[0] };\n } else if (parts?.length === 2) {\n return { schema: parts[0], table: parts[1] };\n } else if (parts?.length === 3) {\n return { catalog: parts[0], schema: parts[1], table: parts[2] };\n }\n\n return null;\n};\n"],"names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"tokenUtils.js","sources":["../../../../../src/components/SQLEditor/utils/tokenUtils.ts"],"sourcesContent":["import { FROM, SCHEMA, SELECT } from '../standardSql/language';\nimport { TokenType } from '../types';\nimport { type LinkedToken } from './LinkedToken';\n\nexport const getSelectToken = (currentToken: LinkedToken | null) =>\n currentToken?.getPreviousOfType(TokenType.Keyword, SELECT) ?? null;\n\nexport const getSelectStatisticToken = (currentToken: LinkedToken | null) => {\n const assumedStatisticToken = getSelectToken(currentToken)?.getNextNonWhiteSpaceToken();\n return assumedStatisticToken?.isVariable() || assumedStatisticToken?.isFunction() ? assumedStatisticToken : null;\n};\n\nexport const getMetricNameToken = (currentToken: LinkedToken | null) => {\n // statistic function is followed by `(` and then an argument\n const assumedMetricNameToken = getSelectStatisticToken(currentToken)?.next?.next;\n return assumedMetricNameToken?.isVariable() || assumedMetricNameToken?.isIdentifier() ? assumedMetricNameToken : null;\n};\n\nexport const getFromKeywordToken = (currentToken: LinkedToken | null) => {\n const selectToken = getSelectToken(currentToken);\n return selectToken?.getNextOfType(TokenType.Keyword, FROM);\n};\n\nexport const getNamespaceToken = (currentToken: LinkedToken | null) => {\n const fromToken = getFromKeywordToken(currentToken);\n const nextNonWhiteSpace = fromToken?.getNextNonWhiteSpaceToken();\n\n if (\n nextNonWhiteSpace?.isDoubleQuotedString() ||\n (nextNonWhiteSpace?.isVariable() && nextNonWhiteSpace?.value.toUpperCase() !== SCHEMA)\n ) {\n // schema is not used\n return nextNonWhiteSpace;\n } else if (nextNonWhiteSpace?.isKeyword() && nextNonWhiteSpace.next?.is(TokenType.Parenthesis, '(')) {\n // schema is specified\n const assumedNamespaceToken = nextNonWhiteSpace.next?.next;\n if (assumedNamespaceToken?.isDoubleQuotedString() || assumedNamespaceToken?.isVariable()) {\n return assumedNamespaceToken;\n }\n }\n return null;\n};\nexport const getTableToken = (currentToken: LinkedToken | null) => {\n const fromToken = getFromKeywordToken(currentToken);\n const nextNonWhiteSpace = fromToken?.getNextNonWhiteSpaceToken();\n if (nextNonWhiteSpace?.isVariable()) {\n // TODO: resolve column from variable?\n return null;\n } else if (nextNonWhiteSpace?.isKeyword() && nextNonWhiteSpace.next?.is(TokenType.Parenthesis, '(')) {\n return null;\n } else {\n return nextNonWhiteSpace;\n }\n};\n\nexport const defaultTableNameParser = (token: LinkedToken | null | undefined) => {\n const parts = token?.value.split('.');\n\n if (parts?.length === 1) {\n return { table: parts[0] };\n } else if (parts?.length === 2) {\n return { schema: parts[0], table: parts[1] };\n } else if (parts?.length === 3) {\n return { catalog: parts[0], schema: parts[1], table: parts[2] };\n }\n\n return null;\n};\n"],"names":[],"mappings":";;;;AAIO,MAAM,cAAA,GAAiB,CAAC,YAAA,KAAkC;AAJjE,EAAA,IAAA,EAAA;AAKE,EAAA,OAAA,CAAA,EAAA,GAAA,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAc,iBAAA,CAAkB,SAAA,CAAU,OAAA,EAAS,MAAA,CAAA,KAAnD,IAAA,GAAA,EAAA,GAA8D,IAAA;AAAA;AAazD,MAAM,mBAAA,GAAsB,CAAC,YAAA,KAAqC;AACvE,EAAA,MAAM,WAAA,GAAc,eAAe,YAAY,CAAA;AAC/C,EAAA,OAAO,WAAA,IAAA,IAAA,GAAA,MAAA,GAAA,WAAA,CAAa,aAAA,CAAc,SAAA,CAAU,OAAA,EAAS,IAAA,CAAA;AACvD;AAqBO,MAAM,aAAA,GAAgB,CAAC,YAAA,KAAqC;AA1CnE,EAAA,IAAA,EAAA;AA2CE,EAAA,MAAM,SAAA,GAAY,oBAAoB,YAAY,CAAA;AAClD,EAAA,MAAM,oBAAoB,SAAA,IAAA,IAAA,GAAA,MAAA,GAAA,SAAA,CAAW,yBAAA,EAAA;AACrC,EAAA,IAAI,uDAAmB,UAAA,EAAA,EAAc;AAEnC,IAAA,OAAO,IAAA;AAAA,EACT,CAAA,MAAA,IAAA,CAAW,uDAAmB,SAAA,EAAA,MAAA,CAAe,EAAA,GAAA,iBAAA,CAAkB,SAAlB,IAAA,GAAA,MAAA,GAAA,EAAA,CAAwB,EAAA,CAAG,SAAA,CAAU,WAAA,EAAa,GAAA,CAAA,CAAA,EAAM;AACnG,IAAA,OAAO,IAAA;AAAA,EACT,CAAA,MAAO;AACL,IAAA,OAAO,iBAAA;AAAA,EACT;AACF;AAEO,MAAM,sBAAA,GAAyB,CAAC,KAAA,KAA0C;AAC/E,EAAA,MAAM,KAAA,GAAQ,KAAA,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAO,KAAA,CAAM,KAAA,CAAM,GAAA,CAAA;AAEjC,EAAA,IAAA,CAAI,KAAA,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAO,YAAW,CAAA,EAAG;AACvB,IAAA,OAAO,EAAE,KAAA,EAAO,KAAA,CAAM,CAAC,CAAA,EAAE;AAAA,EAC3B,CAAA,MAAA,IAAA,CAAW,KAAA,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAO,MAAA,MAAW,CAAA,EAAG;AAC9B,IAAA,OAAO,EAAE,QAAQ,KAAA,CAAM,CAAC,GAAG,KAAA,EAAO,KAAA,CAAM,CAAC,CAAA,EAAE;AAAA,EAC7C,CAAA,MAAA,IAAA,CAAW,KAAA,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAO,MAAA,MAAW,CAAA,EAAG;AAC9B,IAAA,OAAO,EAAE,OAAA,EAAS,KAAA,CAAM,CAAC,CAAA,EAAG,MAAA,EAAQ,KAAA,CAAM,CAAC,CAAA,EAAG,KAAA,EAAO,KAAA,CAAM,CAAC,CAAA,EAAE;AAAA,EAChE;AAEA,EAAA,OAAO,IAAA;AACT;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Segment.js","sources":["../../../../src/components/Segment/Segment.tsx"],"sourcesContent":["import React, { useEffect, type ComponentProps, useState } from 'react';\nimport { Segment as GrafanaSegment } from '@grafana/ui';\nimport { type SelectableValue } from '@grafana/data';\nimport { useDebounce } from '../../hooks/useDebounce';\n\nexport interface SegmentProps<T> extends Omit<ComponentProps<typeof GrafanaSegment<T>>, 'onChange'> {\n value: T;\n onDebounce: (debouncedSegment?: T) => void;\n delay?: number;\n}\n\nexport function Segment<T>(props: SegmentProps<T>) {\n const { delay, onDebounce, value, options, ...rest } = props;\n const [input, setInput] = useState(value);\n\n const debouncedSegment = useDebounce(input, delay);\n\n // TODO: We should fix the exhaustive-deps rule\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(() => onDebounce(debouncedSegment), [debouncedSegment]);\n useEffect(() => setInput(value), [value]);\n\n return (\n <GrafanaSegment\n options={options}\n onChange={(ev: SelectableValue<T>) => setInput(ev.value!)}\n value={input}\n {...rest}\n />\n );\n}\n"],"names":["GrafanaSegment"],"mappings":";;;;;AAWO,SAAS,QAAW,
|
|
1
|
+
{"version":3,"file":"Segment.js","sources":["../../../../src/components/Segment/Segment.tsx"],"sourcesContent":["import React, { useEffect, type ComponentProps, useState } from 'react';\nimport { Segment as GrafanaSegment } from '@grafana/ui';\nimport { type SelectableValue } from '@grafana/data';\nimport { useDebounce } from '../../hooks/useDebounce';\n\nexport interface SegmentProps<T> extends Omit<ComponentProps<typeof GrafanaSegment<T>>, 'onChange'> {\n value: T;\n onDebounce: (debouncedSegment?: T) => void;\n delay?: number;\n}\n\nexport function Segment<T>(props: SegmentProps<T>) {\n const { delay, onDebounce, value, options, ...rest } = props;\n const [input, setInput] = useState(value);\n\n const debouncedSegment = useDebounce(input, delay);\n\n // TODO: We should fix the exhaustive-deps rule\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(() => onDebounce(debouncedSegment), [debouncedSegment]);\n useEffect(() => setInput(value), [value]);\n\n return (\n <GrafanaSegment\n options={options}\n onChange={(ev: SelectableValue<T>) => setInput(ev.value!)}\n value={input}\n {...rest}\n />\n );\n}\n"],"names":["GrafanaSegment"],"mappings":";;;;;AAWO,SAAS,QAAW,KAAA,EAAwB;AACjD,EAAA,MAAM,EAAE,KAAA,EAAO,UAAA,EAAY,OAAO,OAAA,EAAS,GAAG,MAAK,GAAI,KAAA;AACvD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAS,KAAK,CAAA;AAExC,EAAA,MAAM,gBAAA,GAAmB,WAAA,CAAY,KAAA,EAAO,KAAK,CAAA;AAIjD,EAAA,SAAA,CAAU,MAAM,UAAA,CAAW,gBAAgB,CAAA,EAAG,CAAC,gBAAgB,CAAC,CAAA;AAChE,EAAA,SAAA,CAAU,MAAM,QAAA,CAAS,KAAK,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAExC,EAAA,uBACE,KAAA,CAAA,aAAA;AAAA,IAACA,SAAA;AAAA,IAAA;AAAA,MACC,OAAA;AAAA,MACA,QAAA,EAAU,CAAC,EAAA,KAA2B,QAAA,CAAS,GAAG,KAAM,CAAA;AAAA,MACxD,KAAA,EAAO,KAAA;AAAA,MACN,GAAG;AAAA;AAAA,GACN;AAEJ;;;;"}
|
|
@@ -30,8 +30,8 @@ class QueryModellerBase {
|
|
|
30
30
|
hasBinaryOp(query) {
|
|
31
31
|
return query.operations.find((op) => {
|
|
32
32
|
const def = this.getOperationDefinition(op.id);
|
|
33
|
-
return (def == null ?
|
|
34
|
-
}) !==
|
|
33
|
+
return (def == null ? void 0 : def.category) === BINARY_OPERATIONS_KEY;
|
|
34
|
+
}) !== void 0;
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryModellerBase.js","sources":["../../../../src/components/VisualQueryBuilder/QueryModellerBase.ts"],"sourcesContent":["import { Registry } from '@grafana/data';\n\nimport {\n BINARY_OPERATIONS_KEY,\n type VisualQuery,\n type VisualQueryBinary,\n type QueryBuilderLabelFilter,\n type QueryBuilderOperation,\n type VisualQueryModeller,\n type QueryBuilderOperationDefinition,\n} from './types';\n\nexport abstract class QueryModellerBase implements VisualQueryModeller {\n protected operationsRegistry: Registry<QueryBuilderOperationDefinition>;\n private categories: string[] = [];\n innerQueryPlaceholder: string;\n\n constructor(operationDefinitions: QueryBuilderOperationDefinition[], innerQueryPlaceholder?: string) {\n this.operationsRegistry = new Registry<QueryBuilderOperationDefinition>(() => operationDefinitions);\n this.innerQueryPlaceholder = innerQueryPlaceholder || '<query>';\n }\n\n protected setOperationCategories(categories: string[]) {\n this.categories = categories;\n }\n\n abstract renderOperations(queryString: string, operations: QueryBuilderOperation[]): string;\n\n abstract renderBinaryQueries(queryString: string, binaryQueries?: Array<VisualQueryBinary<VisualQuery>>): string;\n\n abstract renderLabels(labels: QueryBuilderLabelFilter[]): string;\n\n abstract renderQuery(query: VisualQuery, nested?: boolean): string;\n\n getOperationsForCategory(category: string) {\n return this.operationsRegistry.list().filter((op) => op.category === category && !op.hideFromList);\n }\n\n getAlternativeOperations(key: string) {\n return this.operationsRegistry.list().filter((op) => op.alternativesKey && op.alternativesKey === key);\n }\n\n getCategories() {\n return this.categories;\n }\n\n getOperationDefinition(id: string): QueryBuilderOperationDefinition | undefined {\n return this.operationsRegistry.getIfExists(id);\n }\n\n hasBinaryOp(query: VisualQuery): boolean {\n return (\n query.operations.find((op) => {\n const def = this.getOperationDefinition(op.id);\n return def?.category === BINARY_OPERATIONS_KEY;\n }) !== undefined\n );\n }\n}\n"],"names":[],"mappings":";;;;;;AAYO,MAAe,
|
|
1
|
+
{"version":3,"file":"QueryModellerBase.js","sources":["../../../../src/components/VisualQueryBuilder/QueryModellerBase.ts"],"sourcesContent":["import { Registry } from '@grafana/data';\n\nimport {\n BINARY_OPERATIONS_KEY,\n type VisualQuery,\n type VisualQueryBinary,\n type QueryBuilderLabelFilter,\n type QueryBuilderOperation,\n type VisualQueryModeller,\n type QueryBuilderOperationDefinition,\n} from './types';\n\nexport abstract class QueryModellerBase implements VisualQueryModeller {\n protected operationsRegistry: Registry<QueryBuilderOperationDefinition>;\n private categories: string[] = [];\n innerQueryPlaceholder: string;\n\n constructor(operationDefinitions: QueryBuilderOperationDefinition[], innerQueryPlaceholder?: string) {\n this.operationsRegistry = new Registry<QueryBuilderOperationDefinition>(() => operationDefinitions);\n this.innerQueryPlaceholder = innerQueryPlaceholder || '<query>';\n }\n\n protected setOperationCategories(categories: string[]) {\n this.categories = categories;\n }\n\n abstract renderOperations(queryString: string, operations: QueryBuilderOperation[]): string;\n\n abstract renderBinaryQueries(queryString: string, binaryQueries?: Array<VisualQueryBinary<VisualQuery>>): string;\n\n abstract renderLabels(labels: QueryBuilderLabelFilter[]): string;\n\n abstract renderQuery(query: VisualQuery, nested?: boolean): string;\n\n getOperationsForCategory(category: string) {\n return this.operationsRegistry.list().filter((op) => op.category === category && !op.hideFromList);\n }\n\n getAlternativeOperations(key: string) {\n return this.operationsRegistry.list().filter((op) => op.alternativesKey && op.alternativesKey === key);\n }\n\n getCategories() {\n return this.categories;\n }\n\n getOperationDefinition(id: string): QueryBuilderOperationDefinition | undefined {\n return this.operationsRegistry.getIfExists(id);\n }\n\n hasBinaryOp(query: VisualQuery): boolean {\n return (\n query.operations.find((op) => {\n const def = this.getOperationDefinition(op.id);\n return def?.category === BINARY_OPERATIONS_KEY;\n }) !== undefined\n );\n }\n}\n"],"names":[],"mappings":";;;;;;AAYO,MAAe,iBAAA,CAAiD;AAAA,EAKrE,WAAA,CAAY,sBAAyD,qBAAA,EAAgC;AAJrG,IAAA,aAAA,CAAA,IAAA,EAAU,oBAAA,CAAA;AACV,IAAA,aAAA,CAAA,IAAA,EAAQ,cAAuB,EAAC,CAAA;AAChC,IAAA,aAAA,CAAA,IAAA,EAAA,uBAAA,CAAA;AAGE,IAAA,IAAA,CAAK,kBAAA,GAAqB,IAAI,QAAA,CAA0C,MAAM,oBAAoB,CAAA;AAClG,IAAA,IAAA,CAAK,wBAAwB,qBAAA,IAAyB,SAAA;AAAA,EACxD;AAAA,EAEU,uBAAuB,UAAA,EAAsB;AACrD,IAAA,IAAA,CAAK,UAAA,GAAa,UAAA;AAAA,EACpB;AAAA,EAUA,yBAAyB,QAAA,EAAkB;AACzC,IAAA,OAAO,IAAA,CAAK,kBAAA,CAAmB,IAAA,EAAK,CAAE,MAAA,CAAO,CAAC,EAAA,KAAO,EAAA,CAAG,QAAA,KAAa,QAAA,IAAY,CAAC,EAAA,CAAG,YAAY,CAAA;AAAA,EACnG;AAAA,EAEA,yBAAyB,GAAA,EAAa;AACpC,IAAA,OAAO,IAAA,CAAK,kBAAA,CAAmB,IAAA,EAAK,CAAE,MAAA,CAAO,CAAC,EAAA,KAAO,EAAA,CAAG,eAAA,IAAmB,EAAA,CAAG,eAAA,KAAoB,GAAG,CAAA;AAAA,EACvG;AAAA,EAEA,aAAA,GAAgB;AACd,IAAA,OAAO,IAAA,CAAK,UAAA;AAAA,EACd;AAAA,EAEA,uBAAuB,EAAA,EAAyD;AAC9E,IAAA,OAAO,IAAA,CAAK,kBAAA,CAAmB,WAAA,CAAY,EAAE,CAAA;AAAA,EAC/C;AAAA,EAEA,YAAY,KAAA,EAA6B;AACvC,IAAA,OACE,KAAA,CAAM,UAAA,CAAW,IAAA,CAAK,CAAC,EAAA,KAAO;AAC5B,MAAA,MAAM,GAAA,GAAM,IAAA,CAAK,sBAAA,CAAuB,EAAA,CAAG,EAAE,CAAA;AAC7C,MAAA,OAAA,CAAO,2BAAK,QAAA,MAAa,qBAAA;AAAA,IAC3B,CAAC,CAAA,KAAM,MAAA;AAAA,EAEX;AACF;;;;"}
|
|
@@ -26,7 +26,7 @@ function LabelFilterItem({
|
|
|
26
26
|
const [labelValuesMenuOpen, setLabelValuesMenuOpen] = useState(false);
|
|
27
27
|
const isMultiSelect = (operator = item.op) => {
|
|
28
28
|
var _a2;
|
|
29
|
-
return (_a2 = operators.find((op) => op.label === operator)) == null ?
|
|
29
|
+
return (_a2 = operators.find((op) => op.label === operator)) == null ? void 0 : _a2.isMultiValue;
|
|
30
30
|
};
|
|
31
31
|
const getSelectOptionsFromString = (item2) => {
|
|
32
32
|
if (item2) {
|
|
@@ -39,12 +39,12 @@ function LabelFilterItem({
|
|
|
39
39
|
};
|
|
40
40
|
const getOptions = () => {
|
|
41
41
|
const labelValues = state.labelValues ? [...state.labelValues] : [];
|
|
42
|
-
const selectedOptions = getSelectOptionsFromString(item == null ?
|
|
42
|
+
const selectedOptions = getSelectOptionsFromString(item == null ? void 0 : item.value).map(toOption);
|
|
43
43
|
return uniqBy([...selectedOptions, ...labelValues], "value");
|
|
44
44
|
};
|
|
45
45
|
const isConflicting = isConflictingLabelFilter(item, items);
|
|
46
46
|
const { current: id } = useRef(v4());
|
|
47
|
-
return /* @__PURE__ */ React.createElement("div", { "data-testid": "visual-query-builder-dimensions-filter-item" }, /* @__PURE__ */ React.createElement(InlineField, { error: CONFLICTING_LABEL_FILTER_ERROR_MESSAGE, invalid: isConflicting ? true :
|
|
47
|
+
return /* @__PURE__ */ React.createElement("div", { "data-testid": "visual-query-builder-dimensions-filter-item" }, /* @__PURE__ */ React.createElement(InlineField, { error: CONFLICTING_LABEL_FILTER_ERROR_MESSAGE, invalid: isConflicting ? true : void 0 }, /* @__PURE__ */ React.createElement(InputGroup, null, /* @__PURE__ */ React.createElement(
|
|
48
48
|
Select,
|
|
49
49
|
{
|
|
50
50
|
placeholder: "Select label",
|
|
@@ -57,7 +57,7 @@ function LabelFilterItem({
|
|
|
57
57
|
setState({ isLoadingLabelNames: true });
|
|
58
58
|
const labelNames = await onGetLabelNames(item);
|
|
59
59
|
setLabelNamesMenuOpen(true);
|
|
60
|
-
setState({ labelNames, isLoadingLabelNames:
|
|
60
|
+
setState({ labelNames, isLoadingLabelNames: void 0 });
|
|
61
61
|
},
|
|
62
62
|
onCloseMenu: () => {
|
|
63
63
|
setLabelNamesMenuOpen(false);
|
|
@@ -89,7 +89,7 @@ function LabelFilterItem({
|
|
|
89
89
|
onChange({
|
|
90
90
|
...item,
|
|
91
91
|
op: change.value,
|
|
92
|
-
value: isMultiSelect(change.value) ? item.value : getSelectOptionsFromString(item == null ?
|
|
92
|
+
value: isMultiSelect(change.value) ? item.value : getSelectOptionsFromString(item == null ? void 0 : item.value)[0]
|
|
93
93
|
});
|
|
94
94
|
}
|
|
95
95
|
},
|
|
@@ -102,7 +102,7 @@ function LabelFilterItem({
|
|
|
102
102
|
"data-testid": selectors.components.QueryBuilder.valueSelect,
|
|
103
103
|
inputId: `visual-query-builder-dimensions-filter-item-value-${id}`,
|
|
104
104
|
width: "auto",
|
|
105
|
-
value: isMultiSelect() ? getSelectOptionsFromString(item == null ?
|
|
105
|
+
value: isMultiSelect() ? getSelectOptionsFromString(item == null ? void 0 : item.value).map(toOption) : getSelectOptionsFromString(item == null ? void 0 : item.value).map(toOption)[0],
|
|
106
106
|
allowCustomValue: true,
|
|
107
107
|
onOpenMenu: async () => {
|
|
108
108
|
setState({ isLoadingLabelValues: true });
|
|
@@ -110,7 +110,7 @@ function LabelFilterItem({
|
|
|
110
110
|
setState({
|
|
111
111
|
...state,
|
|
112
112
|
labelValues,
|
|
113
|
-
isLoadingLabelValues:
|
|
113
|
+
isLoadingLabelValues: void 0
|
|
114
114
|
});
|
|
115
115
|
setLabelValuesMenuOpen(true);
|
|
116
116
|
},
|
|
@@ -134,9 +134,9 @@ function LabelFilterItem({
|
|
|
134
134
|
if (change2.value) {
|
|
135
135
|
return change2.value;
|
|
136
136
|
} else {
|
|
137
|
-
return
|
|
137
|
+
return void 0;
|
|
138
138
|
}
|
|
139
|
-
}).filter((val) => val !==
|
|
139
|
+
}).filter((val) => val !== void 0).join(multiValueSeparator);
|
|
140
140
|
onChange({ ...item, value: changes, op: (_b = item.op) != null ? _b : defaultOp });
|
|
141
141
|
}
|
|
142
142
|
},
|
|
@@ -163,10 +163,10 @@ function isConflictingLabelFilter(newLabel, labels) {
|
|
|
163
163
|
);
|
|
164
164
|
const conflict = candidates.some((candidate) => {
|
|
165
165
|
var _a, _b;
|
|
166
|
-
if (operationIsNegative && ((_a = candidate == null ?
|
|
166
|
+
if (operationIsNegative && ((_a = candidate == null ? void 0 : candidate.op) == null ? void 0 : _a.toString().startsWith("!")) === false) {
|
|
167
167
|
return true;
|
|
168
168
|
}
|
|
169
|
-
if (operationIsNegative === false && ((_b = candidate == null ?
|
|
169
|
+
if (operationIsNegative === false && ((_b = candidate == null ? void 0 : candidate.op) == null ? void 0 : _b.toString().startsWith("!"))) {
|
|
170
170
|
return true;
|
|
171
171
|
}
|
|
172
172
|
return false;
|