@grafana/plugin-ui 0.14.0-dev.1 → 0.14.0

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 (341) hide show
  1. package/README.md +9 -3
  2. package/dist/cjs/index.cjs +3382 -353
  3. package/dist/cjs/index.cjs.map +1 -1
  4. package/dist/cjs/index.d.cts +102 -39
  5. package/dist/cjs/test-utils.cjs +7881 -62
  6. package/dist/cjs/test-utils.cjs.map +1 -1
  7. package/dist/cjs/test-utils.d.cts +24 -24
  8. package/dist/esm/_virtual/chance.js +6 -0
  9. package/dist/esm/_virtual/chance.js.map +1 -0
  10. package/dist/esm/_virtual/chance2.js +4 -0
  11. package/dist/esm/_virtual/chance2.js.map +1 -0
  12. package/dist/esm/_virtual/index.js +6 -0
  13. package/dist/esm/_virtual/index.js.map +1 -0
  14. package/dist/esm/_virtual/re.js +4 -0
  15. package/dist/esm/_virtual/re.js.map +1 -0
  16. package/dist/esm/async-query-data/DatasourceWithAsyncBackend.js +155 -0
  17. package/dist/esm/async-query-data/DatasourceWithAsyncBackend.js.map +1 -0
  18. package/dist/esm/async-query-data/RunQueryButtons.js +52 -0
  19. package/dist/esm/async-query-data/RunQueryButtons.js.map +1 -0
  20. package/dist/esm/async-query-data/requestLooper.js +74 -0
  21. package/dist/esm/async-query-data/requestLooper.js.map +1 -0
  22. package/dist/esm/components/ConfigEditor/AdvancedSettings/AdvancedHttpSettings.js.map +1 -1
  23. package/dist/esm/components/ConfigEditor/Auth/Auth.js.map +1 -1
  24. package/dist/esm/components/ConfigEditor/Auth/auth-method/AuthMethodSettings.js +4 -4
  25. package/dist/esm/components/ConfigEditor/Auth/auth-method/AuthMethodSettings.js.map +1 -1
  26. package/dist/esm/components/ConfigEditor/Auth/auth-method/BasicAuth.js.map +1 -1
  27. package/dist/esm/components/ConfigEditor/Auth/custom-headers/CustomHeader.js.map +1 -1
  28. package/dist/esm/components/ConfigEditor/Auth/custom-headers/CustomHeaders.js +1 -1
  29. package/dist/esm/components/ConfigEditor/Auth/custom-headers/CustomHeaders.js.map +1 -1
  30. package/dist/esm/components/ConfigEditor/Auth/styles.js.map +1 -1
  31. package/dist/esm/components/ConfigEditor/Auth/tls/SelfSignedCertificate.js +1 -1
  32. package/dist/esm/components/ConfigEditor/Auth/tls/SelfSignedCertificate.js.map +1 -1
  33. package/dist/esm/components/ConfigEditor/Auth/tls/SkipTLSVerification.js.map +1 -1
  34. package/dist/esm/components/ConfigEditor/Auth/tls/TLSClientAuth.js +3 -3
  35. package/dist/esm/components/ConfigEditor/Auth/tls/TLSClientAuth.js.map +1 -1
  36. package/dist/esm/components/ConfigEditor/Auth/tls/TLSSettings.js.map +1 -1
  37. package/dist/esm/components/ConfigEditor/Auth/tls/TLSSettingsSection.js.map +1 -1
  38. package/dist/esm/components/ConfigEditor/Auth/types.js.map +1 -1
  39. package/dist/esm/components/ConfigEditor/Auth/utils.js +3 -3
  40. package/dist/esm/components/ConfigEditor/Auth/utils.js.map +1 -1
  41. package/dist/esm/components/ConfigEditor/ConfigSection/ConfigDescriptionLink.js +2 -2
  42. package/dist/esm/components/ConfigEditor/ConfigSection/ConfigDescriptionLink.js.map +1 -1
  43. package/dist/esm/components/ConfigEditor/ConfigSection/ConfigSection.js.map +1 -1
  44. package/dist/esm/components/ConfigEditor/ConfigSection/ConfigSubSection.js.map +1 -1
  45. package/dist/esm/components/ConfigEditor/ConfigSection/GenericConfigSection.js.map +1 -1
  46. package/dist/esm/components/ConfigEditor/Connection/ConnectionSettings.js +1 -1
  47. package/dist/esm/components/ConfigEditor/Connection/ConnectionSettings.js.map +1 -1
  48. package/dist/esm/components/ConfigEditor/DataSourceDescription.js.map +1 -1
  49. package/dist/esm/components/ConfigEditor/SecureSocksProxyToggle.js.map +1 -1
  50. package/dist/esm/components/CustomHeadersSettings/CustomHeadersSettings.js +11 -11
  51. package/dist/esm/components/CustomHeadersSettings/CustomHeadersSettings.js.map +1 -1
  52. package/dist/esm/components/DataLinks/DataLink.js +4 -4
  53. package/dist/esm/components/DataLinks/DataLink.js.map +1 -1
  54. package/dist/esm/components/DataLinks/DataLinks.js +3 -3
  55. package/dist/esm/components/DataLinks/DataLinks.js.map +1 -1
  56. package/dist/esm/components/DataSourcePicker/DataSourcePicker.js +8 -8
  57. package/dist/esm/components/DataSourcePicker/DataSourcePicker.js.map +1 -1
  58. package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
  59. package/dist/esm/components/DatePicker/styles.js +2 -2
  60. package/dist/esm/components/DatePicker/styles.js.map +1 -1
  61. package/dist/esm/components/DatePickerWithInput/DatePickerWithInput.js.map +1 -1
  62. package/dist/esm/components/DatePickerWithInput/styles.js +2 -2
  63. package/dist/esm/components/DatePickerWithInput/styles.js.map +1 -1
  64. package/dist/esm/components/DebounceInput/DebounceInput.js.map +1 -1
  65. package/dist/esm/components/Plugins/PluginSignatureBadge.js.map +1 -1
  66. package/dist/esm/components/QueryEditor/AccessoryButton.js.map +1 -1
  67. package/dist/esm/components/QueryEditor/CatalogSelector.js +1 -1
  68. package/dist/esm/components/QueryEditor/CatalogSelector.js.map +1 -1
  69. package/dist/esm/components/QueryEditor/ConfirmModal.js +1 -1
  70. package/dist/esm/components/QueryEditor/ConfirmModal.js.map +1 -1
  71. package/dist/esm/components/QueryEditor/DatasetSelector.js +1 -1
  72. package/dist/esm/components/QueryEditor/DatasetSelector.js.map +1 -1
  73. package/dist/esm/components/QueryEditor/EditorField.js +5 -5
  74. package/dist/esm/components/QueryEditor/EditorField.js.map +1 -1
  75. package/dist/esm/components/QueryEditor/EditorFieldGroup.js.map +1 -1
  76. package/dist/esm/components/QueryEditor/EditorHeader.js +2 -2
  77. package/dist/esm/components/QueryEditor/EditorHeader.js.map +1 -1
  78. package/dist/esm/components/QueryEditor/EditorList.js.map +1 -1
  79. package/dist/esm/components/QueryEditor/EditorRow.js +4 -4
  80. package/dist/esm/components/QueryEditor/EditorRow.js.map +1 -1
  81. package/dist/esm/components/QueryEditor/EditorRows.js +2 -2
  82. package/dist/esm/components/QueryEditor/EditorRows.js.map +1 -1
  83. package/dist/esm/components/QueryEditor/EditorStack.js +1 -1
  84. package/dist/esm/components/QueryEditor/EditorStack.js.map +1 -1
  85. package/dist/esm/components/QueryEditor/EditorSwitch.js +2 -2
  86. package/dist/esm/components/QueryEditor/EditorSwitch.js.map +1 -1
  87. package/dist/esm/components/QueryEditor/FlexItem.js.map +1 -1
  88. package/dist/esm/components/QueryEditor/InlineSelect.js +1 -1
  89. package/dist/esm/components/QueryEditor/InlineSelect.js.map +1 -1
  90. package/dist/esm/components/QueryEditor/InputGroup.js +2 -2
  91. package/dist/esm/components/QueryEditor/InputGroup.js.map +1 -1
  92. package/dist/esm/components/QueryEditor/QueryEditor.js +10 -8
  93. package/dist/esm/components/QueryEditor/QueryEditor.js.map +1 -1
  94. package/dist/esm/components/QueryEditor/QueryHeader.js +20 -20
  95. package/dist/esm/components/QueryEditor/QueryHeader.js.map +1 -1
  96. package/dist/esm/components/QueryEditor/RunQueryButton.js +1 -1
  97. package/dist/esm/components/QueryEditor/RunQueryButton.js.map +1 -1
  98. package/dist/esm/components/QueryEditor/Space.js +2 -2
  99. package/dist/esm/components/QueryEditor/Space.js.map +1 -1
  100. package/dist/esm/components/QueryEditor/TableSelector.js +0 -1
  101. package/dist/esm/components/QueryEditor/TableSelector.js.map +1 -1
  102. package/dist/esm/components/QueryEditor/defaults.js +7 -7
  103. package/dist/esm/components/QueryEditor/defaults.js.map +1 -1
  104. package/dist/esm/components/QueryEditor/expressions.js.map +1 -1
  105. package/dist/esm/components/QueryEditor/query-editor-raw/QueryEditorRaw.js +10 -2
  106. package/dist/esm/components/QueryEditor/query-editor-raw/QueryEditorRaw.js.map +1 -1
  107. package/dist/esm/components/QueryEditor/query-editor-raw/QueryToolbox.js +7 -2
  108. package/dist/esm/components/QueryEditor/query-editor-raw/QueryToolbox.js.map +1 -1
  109. package/dist/esm/components/QueryEditor/query-editor-raw/QueryValidator.js +4 -4
  110. package/dist/esm/components/QueryEditor/query-editor-raw/QueryValidator.js.map +1 -1
  111. package/dist/esm/components/QueryEditor/query-editor-raw/RawEditor.js +14 -4
  112. package/dist/esm/components/QueryEditor/query-editor-raw/RawEditor.js.map +1 -1
  113. package/dist/esm/components/QueryEditor/types.js +0 -1
  114. package/dist/esm/components/QueryEditor/types.js.map +1 -1
  115. package/dist/esm/components/QueryEditor/utils/formatSQL.js +15 -4
  116. package/dist/esm/components/QueryEditor/utils/formatSQL.js.map +1 -1
  117. package/dist/esm/components/QueryEditor/utils/sql.utils.js +8 -8
  118. package/dist/esm/components/QueryEditor/utils/sql.utils.js.map +1 -1
  119. package/dist/esm/components/QueryEditor/utils/useSqlChange.js.map +1 -1
  120. package/dist/esm/components/QueryEditor/visual-query-builder/AwesomeQueryBuilder.js +27 -26
  121. package/dist/esm/components/QueryEditor/visual-query-builder/AwesomeQueryBuilder.js.map +1 -1
  122. package/dist/esm/components/QueryEditor/visual-query-builder/EditorField.js +3 -3
  123. package/dist/esm/components/QueryEditor/visual-query-builder/EditorField.js.map +1 -1
  124. package/dist/esm/components/QueryEditor/visual-query-builder/EditorRow.js +2 -2
  125. package/dist/esm/components/QueryEditor/visual-query-builder/EditorRow.js.map +1 -1
  126. package/dist/esm/components/QueryEditor/visual-query-builder/EditorRows.js.map +1 -1
  127. package/dist/esm/components/QueryEditor/visual-query-builder/GroupByRow.js +2 -2
  128. package/dist/esm/components/QueryEditor/visual-query-builder/GroupByRow.js.map +1 -1
  129. package/dist/esm/components/QueryEditor/visual-query-builder/OrderByRow.js +4 -4
  130. package/dist/esm/components/QueryEditor/visual-query-builder/OrderByRow.js.map +1 -1
  131. package/dist/esm/components/QueryEditor/visual-query-builder/Preview.js +4 -4
  132. package/dist/esm/components/QueryEditor/visual-query-builder/Preview.js.map +1 -1
  133. package/dist/esm/components/QueryEditor/visual-query-builder/SQLGroupByRow.js +0 -1
  134. package/dist/esm/components/QueryEditor/visual-query-builder/SQLGroupByRow.js.map +1 -1
  135. package/dist/esm/components/QueryEditor/visual-query-builder/SQLOrderByRow.js +2 -3
  136. package/dist/esm/components/QueryEditor/visual-query-builder/SQLOrderByRow.js.map +1 -1
  137. package/dist/esm/components/QueryEditor/visual-query-builder/SQLSelectRow.js +0 -1
  138. package/dist/esm/components/QueryEditor/visual-query-builder/SQLSelectRow.js.map +1 -1
  139. package/dist/esm/components/QueryEditor/visual-query-builder/SQLWhereRow.js +0 -1
  140. package/dist/esm/components/QueryEditor/visual-query-builder/SQLWhereRow.js.map +1 -1
  141. package/dist/esm/components/QueryEditor/visual-query-builder/SelectRow.js +9 -9
  142. package/dist/esm/components/QueryEditor/visual-query-builder/SelectRow.js.map +1 -1
  143. package/dist/esm/components/QueryEditor/visual-query-builder/VisualEditor.js +10 -2
  144. package/dist/esm/components/QueryEditor/visual-query-builder/VisualEditor.js.map +1 -1
  145. package/dist/esm/components/QueryEditor/visual-query-builder/WhereRow.js.map +1 -1
  146. package/dist/esm/components/QueryEditorRow/QueryEditorRow.js.map +1 -1
  147. package/dist/esm/components/SQLEditor/components/SQLEditor.js +13 -13
  148. package/dist/esm/components/SQLEditor/components/SQLEditor.js.map +1 -1
  149. package/dist/esm/components/SQLEditor/hooks/useLatestCallback.js +1 -1
  150. package/dist/esm/components/SQLEditor/hooks/useLatestCallback.js.map +1 -1
  151. package/dist/esm/components/SQLEditor/mocks/Monaco.js.map +1 -1
  152. package/dist/esm/components/SQLEditor/mocks/TextModel.js.map +1 -1
  153. package/dist/esm/components/SQLEditor/mocks/queries/multiLineFullQuery.js.map +1 -1
  154. package/dist/esm/components/SQLEditor/mocks/queries/multiLineFullQueryWithAggregation.js.map +1 -1
  155. package/dist/esm/components/SQLEditor/mocks/queries/multiLineMultipleColumns.js.map +1 -1
  156. package/dist/esm/components/SQLEditor/mocks/queries/singleLineEmptyQuery.js.map +1 -1
  157. package/dist/esm/components/SQLEditor/mocks/queries/singleLineFullQuery.js.map +1 -1
  158. package/dist/esm/components/SQLEditor/mocks/queries/singleLineFullQueryWithAggregation.js.map +1 -1
  159. package/dist/esm/components/SQLEditor/mocks/queries/singleLineMultipleColumns.js.map +1 -1
  160. package/dist/esm/components/SQLEditor/mocks/queries/singleLineTwoQueries.js.map +1 -1
  161. package/dist/esm/components/SQLEditor/mocks/queries/singleLineTwoQueriesWithAggregation.js.map +1 -1
  162. package/dist/esm/components/SQLEditor/standardSql/definition.js +0 -6
  163. package/dist/esm/components/SQLEditor/standardSql/definition.js.map +1 -1
  164. package/dist/esm/components/SQLEditor/standardSql/getStandardSuggestions.js +2 -2
  165. package/dist/esm/components/SQLEditor/standardSql/getStandardSuggestions.js.map +1 -1
  166. package/dist/esm/components/SQLEditor/standardSql/getStatementPosition.js +5 -4
  167. package/dist/esm/components/SQLEditor/standardSql/getStatementPosition.js.map +1 -1
  168. package/dist/esm/components/SQLEditor/standardSql/language.js.map +1 -1
  169. package/dist/esm/components/SQLEditor/standardSql/macros.js.map +1 -1
  170. package/dist/esm/components/SQLEditor/standardSql/standardSQLCompletionItemProvider.js +2 -2
  171. package/dist/esm/components/SQLEditor/standardSql/standardSQLCompletionItemProvider.js.map +1 -1
  172. package/dist/esm/components/SQLEditor/standardSql/standardSuggestionsRegistry.js +1 -1
  173. package/dist/esm/components/SQLEditor/standardSql/standardSuggestionsRegistry.js.map +1 -1
  174. package/dist/esm/components/SQLEditor/standardSql/statementPositionResolversRegistry.js +27 -26
  175. package/dist/esm/components/SQLEditor/standardSql/statementPositionResolversRegistry.js.map +1 -1
  176. package/dist/esm/components/SQLEditor/standardSql/suggestionsKindRegistry.js +1 -1
  177. package/dist/esm/components/SQLEditor/standardSql/suggestionsKindRegistry.js.map +1 -1
  178. package/dist/esm/components/SQLEditor/test-utils/index.js.map +1 -1
  179. package/dist/esm/components/SQLEditor/test-utils/statementPosition.js.map +1 -1
  180. package/dist/esm/components/SQLEditor/types.js +1 -17
  181. package/dist/esm/components/SQLEditor/types.js.map +1 -1
  182. package/dist/esm/components/SQLEditor/utils/LinkedToken.js +8 -8
  183. package/dist/esm/components/SQLEditor/utils/LinkedToken.js.map +1 -1
  184. package/dist/esm/components/SQLEditor/utils/commands.js.map +1 -1
  185. package/dist/esm/components/SQLEditor/utils/debugger.js +1 -1
  186. package/dist/esm/components/SQLEditor/utils/debugger.js.map +1 -1
  187. package/dist/esm/components/SQLEditor/utils/getSuggestionKind.js.map +1 -1
  188. package/dist/esm/components/SQLEditor/utils/linkedTokenBuilder.js +3 -3
  189. package/dist/esm/components/SQLEditor/utils/linkedTokenBuilder.js.map +1 -1
  190. package/dist/esm/components/SQLEditor/utils/toCompletionItem.js +1 -1
  191. package/dist/esm/components/SQLEditor/utils/toCompletionItem.js.map +1 -1
  192. package/dist/esm/components/SQLEditor/utils/tokenType.js +18 -0
  193. package/dist/esm/components/SQLEditor/utils/tokenType.js.map +1 -0
  194. package/dist/esm/components/SQLEditor/utils/tokenUtils.js +10 -10
  195. package/dist/esm/components/SQLEditor/utils/tokenUtils.js.map +1 -1
  196. package/dist/esm/components/Segment/Segment.js.map +1 -1
  197. package/dist/esm/components/VisualQueryBuilder/QueryModellerBase.js +2 -2
  198. package/dist/esm/components/VisualQueryBuilder/QueryModellerBase.js.map +1 -1
  199. package/dist/esm/components/VisualQueryBuilder/components/LabelFilterItem.js +11 -11
  200. package/dist/esm/components/VisualQueryBuilder/components/LabelFilterItem.js.map +1 -1
  201. package/dist/esm/components/VisualQueryBuilder/components/LabelFilters.js +1 -1
  202. package/dist/esm/components/VisualQueryBuilder/components/LabelFilters.js.map +1 -1
  203. package/dist/esm/components/VisualQueryBuilder/components/OperationEditor.js +4 -4
  204. package/dist/esm/components/VisualQueryBuilder/components/OperationEditor.js.map +1 -1
  205. package/dist/esm/components/VisualQueryBuilder/components/OperationEditorBody.js +3 -3
  206. package/dist/esm/components/VisualQueryBuilder/components/OperationEditorBody.js.map +1 -1
  207. package/dist/esm/components/VisualQueryBuilder/components/OperationExplainedBox.js +3 -3
  208. package/dist/esm/components/VisualQueryBuilder/components/OperationExplainedBox.js.map +1 -1
  209. package/dist/esm/components/VisualQueryBuilder/components/OperationHeader.js +2 -2
  210. package/dist/esm/components/VisualQueryBuilder/components/OperationHeader.js.map +1 -1
  211. package/dist/esm/components/VisualQueryBuilder/components/OperationInfoButton.js +2 -2
  212. package/dist/esm/components/VisualQueryBuilder/components/OperationInfoButton.js.map +1 -1
  213. package/dist/esm/components/VisualQueryBuilder/components/OperationList.js +4 -4
  214. package/dist/esm/components/VisualQueryBuilder/components/OperationList.js.map +1 -1
  215. package/dist/esm/components/VisualQueryBuilder/components/OperationListExplained.js +2 -2
  216. package/dist/esm/components/VisualQueryBuilder/components/OperationListExplained.js.map +1 -1
  217. package/dist/esm/components/VisualQueryBuilder/components/OperationParamEditor.js +6 -6
  218. package/dist/esm/components/VisualQueryBuilder/components/OperationParamEditor.js.map +1 -1
  219. package/dist/esm/components/VisualQueryBuilder/components/OperationsEditorRow.js +3 -3
  220. package/dist/esm/components/VisualQueryBuilder/components/OperationsEditorRow.js.map +1 -1
  221. package/dist/esm/components/VisualQueryBuilder/components/QueryBuilderHints.js +8 -8
  222. package/dist/esm/components/VisualQueryBuilder/components/QueryBuilderHints.js.map +1 -1
  223. package/dist/esm/components/VisualQueryBuilder/components/QueryEditorModeToggle.js.map +1 -1
  224. package/dist/esm/components/VisualQueryBuilder/components/QueryHeaderSwitch.js +3 -3
  225. package/dist/esm/components/VisualQueryBuilder/components/QueryHeaderSwitch.js.map +1 -1
  226. package/dist/esm/components/VisualQueryBuilder/components/QueryOptionGroup.js +1 -1
  227. package/dist/esm/components/VisualQueryBuilder/components/QueryOptionGroup.js.map +1 -1
  228. package/dist/esm/components/VisualQueryBuilder/components/RawQuery.js +2 -2
  229. package/dist/esm/components/VisualQueryBuilder/components/RawQuery.js.map +1 -1
  230. package/dist/esm/components/VisualQueryBuilder/types.js.map +1 -1
  231. package/dist/esm/datasource/SqlDatasource.js +14 -14
  232. package/dist/esm/datasource/SqlDatasource.js.map +1 -1
  233. package/dist/esm/datasource/constants.js.map +1 -1
  234. package/dist/esm/hooks/useDebounce.js.map +1 -1
  235. package/dist/esm/index.d.ts +102 -39
  236. package/dist/esm/index.js +5 -1
  237. package/dist/esm/index.js.map +1 -1
  238. package/dist/esm/node_modules/chance/chance.js +7820 -0
  239. package/dist/esm/node_modules/chance/chance.js.map +1 -0
  240. package/dist/esm/node_modules/semver/classes/comparator.js +160 -0
  241. package/dist/esm/node_modules/semver/classes/comparator.js.map +1 -0
  242. package/dist/esm/node_modules/semver/classes/range.js +575 -0
  243. package/dist/esm/node_modules/semver/classes/range.js.map +1 -0
  244. package/dist/esm/node_modules/semver/classes/semver.js +349 -0
  245. package/dist/esm/node_modules/semver/classes/semver.js.map +1 -0
  246. package/dist/esm/node_modules/semver/functions/clean.js +20 -0
  247. package/dist/esm/node_modules/semver/functions/clean.js.map +1 -0
  248. package/dist/esm/node_modules/semver/functions/cmp.js +71 -0
  249. package/dist/esm/node_modules/semver/functions/cmp.js.map +1 -0
  250. package/dist/esm/node_modules/semver/functions/coerce.js +76 -0
  251. package/dist/esm/node_modules/semver/functions/coerce.js.map +1 -0
  252. package/dist/esm/node_modules/semver/functions/compare-build.js +21 -0
  253. package/dist/esm/node_modules/semver/functions/compare-build.js.map +1 -0
  254. package/dist/esm/node_modules/semver/functions/compare-loose.js +17 -0
  255. package/dist/esm/node_modules/semver/functions/compare-loose.js.map +1 -0
  256. package/dist/esm/node_modules/semver/functions/compare.js +19 -0
  257. package/dist/esm/node_modules/semver/functions/compare.js.map +1 -0
  258. package/dist/esm/node_modules/semver/functions/diff.js +72 -0
  259. package/dist/esm/node_modules/semver/functions/diff.js.map +1 -0
  260. package/dist/esm/node_modules/semver/functions/eq.js +17 -0
  261. package/dist/esm/node_modules/semver/functions/eq.js.map +1 -0
  262. package/dist/esm/node_modules/semver/functions/gt.js +17 -0
  263. package/dist/esm/node_modules/semver/functions/gt.js.map +1 -0
  264. package/dist/esm/node_modules/semver/functions/gte.js +17 -0
  265. package/dist/esm/node_modules/semver/functions/gte.js.map +1 -0
  266. package/dist/esm/node_modules/semver/functions/inc.js +33 -0
  267. package/dist/esm/node_modules/semver/functions/inc.js.map +1 -0
  268. package/dist/esm/node_modules/semver/functions/lt.js +17 -0
  269. package/dist/esm/node_modules/semver/functions/lt.js.map +1 -0
  270. package/dist/esm/node_modules/semver/functions/lte.js +17 -0
  271. package/dist/esm/node_modules/semver/functions/lte.js.map +1 -0
  272. package/dist/esm/node_modules/semver/functions/major.js +17 -0
  273. package/dist/esm/node_modules/semver/functions/major.js.map +1 -0
  274. package/dist/esm/node_modules/semver/functions/minor.js +17 -0
  275. package/dist/esm/node_modules/semver/functions/minor.js.map +1 -0
  276. package/dist/esm/node_modules/semver/functions/neq.js +17 -0
  277. package/dist/esm/node_modules/semver/functions/neq.js.map +1 -0
  278. package/dist/esm/node_modules/semver/functions/parse.js +30 -0
  279. package/dist/esm/node_modules/semver/functions/parse.js.map +1 -0
  280. package/dist/esm/node_modules/semver/functions/patch.js +17 -0
  281. package/dist/esm/node_modules/semver/functions/patch.js.map +1 -0
  282. package/dist/esm/node_modules/semver/functions/prerelease.js +20 -0
  283. package/dist/esm/node_modules/semver/functions/prerelease.js.map +1 -0
  284. package/dist/esm/node_modules/semver/functions/rcompare.js +17 -0
  285. package/dist/esm/node_modules/semver/functions/rcompare.js.map +1 -0
  286. package/dist/esm/node_modules/semver/functions/rsort.js +17 -0
  287. package/dist/esm/node_modules/semver/functions/rsort.js.map +1 -0
  288. package/dist/esm/node_modules/semver/functions/satisfies.js +24 -0
  289. package/dist/esm/node_modules/semver/functions/satisfies.js.map +1 -0
  290. package/dist/esm/node_modules/semver/functions/sort.js +17 -0
  291. package/dist/esm/node_modules/semver/functions/sort.js.map +1 -0
  292. package/dist/esm/node_modules/semver/functions/valid.js +20 -0
  293. package/dist/esm/node_modules/semver/functions/valid.js.map +1 -0
  294. package/dist/esm/node_modules/semver/index.js +143 -0
  295. package/dist/esm/node_modules/semver/index.js.map +1 -0
  296. package/dist/esm/node_modules/semver/internal/constants.js +47 -0
  297. package/dist/esm/node_modules/semver/internal/constants.js.map +1 -0
  298. package/dist/esm/node_modules/semver/internal/debug.js +21 -0
  299. package/dist/esm/node_modules/semver/internal/debug.js.map +1 -0
  300. package/dist/esm/node_modules/semver/internal/identifiers.js +39 -0
  301. package/dist/esm/node_modules/semver/internal/identifiers.js.map +1 -0
  302. package/dist/esm/node_modules/semver/internal/lrucache.js +52 -0
  303. package/dist/esm/node_modules/semver/internal/lrucache.js.map +1 -0
  304. package/dist/esm/node_modules/semver/internal/parse-options.js +27 -0
  305. package/dist/esm/node_modules/semver/internal/parse-options.js.map +1 -0
  306. package/dist/esm/node_modules/semver/internal/re.js +238 -0
  307. package/dist/esm/node_modules/semver/internal/re.js.map +1 -0
  308. package/dist/esm/node_modules/semver/ranges/gtr.js +18 -0
  309. package/dist/esm/node_modules/semver/ranges/gtr.js.map +1 -0
  310. package/dist/esm/node_modules/semver/ranges/intersects.js +21 -0
  311. package/dist/esm/node_modules/semver/ranges/intersects.js.map +1 -0
  312. package/dist/esm/node_modules/semver/ranges/ltr.js +18 -0
  313. package/dist/esm/node_modules/semver/ranges/ltr.js.map +1 -0
  314. package/dist/esm/node_modules/semver/ranges/max-satisfying.js +40 -0
  315. package/dist/esm/node_modules/semver/ranges/max-satisfying.js.map +1 -0
  316. package/dist/esm/node_modules/semver/ranges/min-satisfying.js +39 -0
  317. package/dist/esm/node_modules/semver/ranges/min-satisfying.js.map +1 -0
  318. package/dist/esm/node_modules/semver/ranges/min-version.js +77 -0
  319. package/dist/esm/node_modules/semver/ranges/min-version.js.map +1 -0
  320. package/dist/esm/node_modules/semver/ranges/outside.js +101 -0
  321. package/dist/esm/node_modules/semver/ranges/outside.js.map +1 -0
  322. package/dist/esm/node_modules/semver/ranges/simplify.js +62 -0
  323. package/dist/esm/node_modules/semver/ranges/simplify.js.map +1 -0
  324. package/dist/esm/node_modules/semver/ranges/subset.js +264 -0
  325. package/dist/esm/node_modules/semver/ranges/subset.js.map +1 -0
  326. package/dist/esm/node_modules/semver/ranges/to-comparators.js +22 -0
  327. package/dist/esm/node_modules/semver/ranges/to-comparators.js.map +1 -0
  328. package/dist/esm/node_modules/semver/ranges/valid.js +25 -0
  329. package/dist/esm/node_modules/semver/ranges/valid.js.map +1 -0
  330. package/dist/esm/test/mocks/DataQuery.js +5 -5
  331. package/dist/esm/test/mocks/DataQuery.js.map +1 -1
  332. package/dist/esm/test/mocks/Datasource.js +22 -22
  333. package/dist/esm/test/mocks/Datasource.js.map +1 -1
  334. package/dist/esm/test/mocks/Plugin.js +30 -30
  335. package/dist/esm/test/mocks/Plugin.js.map +1 -1
  336. package/dist/esm/test/mocks/QueryEditorProps.js +6 -6
  337. package/dist/esm/test/mocks/QueryEditorProps.js.map +1 -1
  338. package/dist/esm/test/mocks/utils.js +5 -5
  339. package/dist/esm/test/mocks/utils.js.map +1 -1
  340. package/dist/esm/test-utils.d.ts +24 -24
  341. package/package.json +77 -68
@@ -12,13 +12,13 @@ import { EditorStack } from '../EditorStack.js';
12
12
  const asteriskValue = { label: "*", value: "*" };
13
13
  function SelectRow({ sql, columns, onSqlChange, functions }) {
14
14
  var _a;
15
- const styles = useStyles2(getStyles$f);
15
+ const styles = useStyles2(getStyles);
16
16
  const columnsWithAsterisk = [asteriskValue, ...columns || []];
17
17
  const onColumnChange = useCallback(
18
18
  (item, index) => (column) => {
19
19
  var _a2, _b;
20
20
  let modifiedItem = { ...item };
21
- if (!((_a2 = item.parameters) == null ? void 0 : _a2.length)) {
21
+ if (!((_a2 = item.parameters) == null ? undefined : _a2.length)) {
22
22
  modifiedItem.parameters = [{ type: QueryEditorExpressionType.FunctionParameter, name: column.value }];
23
23
  } else {
24
24
  modifiedItem.parameters = item.parameters.map(
@@ -27,7 +27,7 @@ function SelectRow({ sql, columns, onSqlChange, functions }) {
27
27
  }
28
28
  const newSql = {
29
29
  ...sql,
30
- columns: (_b = sql.columns) == null ? void 0 : _b.map((c, i) => i === index ? modifiedItem : c)
30
+ columns: (_b = sql.columns) == null ? undefined : _b.map((c, i) => i === index ? modifiedItem : c)
31
31
  };
32
32
  onSqlChange(newSql);
33
33
  },
@@ -38,11 +38,11 @@ function SelectRow({ sql, columns, onSqlChange, functions }) {
38
38
  var _a2;
39
39
  const newItem = {
40
40
  ...item,
41
- name: aggregation == null ? void 0 : aggregation.value
41
+ name: aggregation == null ? undefined : aggregation.value
42
42
  };
43
43
  const newSql = {
44
44
  ...sql,
45
- columns: (_a2 = sql.columns) == null ? void 0 : _a2.map((c, i) => i === index ? newItem : c)
45
+ columns: (_a2 = sql.columns) == null ? undefined : _a2.map((c, i) => i === index ? newItem : c)
46
46
  };
47
47
  onSqlChange(newSql);
48
48
  },
@@ -64,7 +64,7 @@ function SelectRow({ sql, columns, onSqlChange, functions }) {
64
64
  const newSql = { ...sql, columns: [...sql.columns, createFunctionField()] };
65
65
  onSqlChange(newSql);
66
66
  }, [onSqlChange, sql]);
67
- return /* @__PURE__ */ React.createElement(EditorStack, { gap: 2, alignItems: "end", direction: "column" }, (_a = sql.columns) == null ? void 0 : _a.map((item, index) => /* @__PURE__ */ React.createElement("div", { key: index }, /* @__PURE__ */ React.createElement(EditorStack, { gap: 2, alignItems: "end" }, /* @__PURE__ */ React.createElement(EditorField, { label: "Column", width: 25 }, /* @__PURE__ */ React.createElement(
67
+ return /* @__PURE__ */ React.createElement(EditorStack, { gap: 2, alignItems: "end", direction: "column" }, (_a = sql.columns) == null ? undefined : _a.map((item, index) => /* @__PURE__ */ React.createElement("div", { key: index }, /* @__PURE__ */ React.createElement(EditorStack, { gap: 2, alignItems: "end" }, /* @__PURE__ */ React.createElement(EditorField, { label: "Column", width: 25 }, /* @__PURE__ */ React.createElement(
68
68
  Select,
69
69
  {
70
70
  value: getColumnValue(item),
@@ -108,12 +108,12 @@ function SelectRow({ sql, columns, onSqlChange, functions }) {
108
108
  }
109
109
  ));
110
110
  }
111
- const getStyles$f = () => {
111
+ const getStyles = () => {
112
112
  return { addButton: css({ alignSelf: "flex-start" }) };
113
113
  };
114
114
  function getColumnValue({ parameters }) {
115
- const column = parameters == null ? void 0 : parameters.find((p) => p.type === QueryEditorExpressionType.FunctionParameter);
116
- if (column == null ? void 0 : column.name) {
115
+ const column = parameters == null ? undefined : parameters.find((p) => p.type === QueryEditorExpressionType.FunctionParameter);
116
+ if (column == null ? undefined : column.name) {
117
117
  return toOption(column.name);
118
118
  }
119
119
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"SelectRow.js","sources":["../../../../../src/components/QueryEditor/visual-query-builder/SelectRow.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { uniqueId } from 'lodash';\nimport React, { useCallback } from 'react';\nimport { type SelectableValue, toOption } from '@grafana/data';\nimport { Button, Select, useStyles2 } from '@grafana/ui';\nimport { EditorField } from '../EditorField';\nimport { type QueryEditorFunctionExpression, QueryEditorExpressionType } from '../expressions';\nimport { type SQLExpression } from '../types';\nimport { createFunctionField } from '../utils/sql.utils';\nimport { EditorStack } from '../EditorStack';\n\ninterface SelectRowProps {\n sql: SQLExpression;\n onSqlChange: (sql: SQLExpression) => void;\n columns?: Array<SelectableValue<string>>;\n functions?: Array<SelectableValue<string>>;\n}\n\nconst asteriskValue = { label: '*', value: '*' };\n\nexport function SelectRow({ sql, columns, onSqlChange, functions }: SelectRowProps) {\n const styles = useStyles2(getStyles);\n const columnsWithAsterisk = [asteriskValue, ...(columns || [])];\n\n const onColumnChange = useCallback(\n (item: QueryEditorFunctionExpression, index: number) => (column: SelectableValue<string>) => {\n let modifiedItem = { ...item };\n if (!item.parameters?.length) {\n modifiedItem.parameters = [{ type: QueryEditorExpressionType.FunctionParameter, name: column.value } as const];\n } else {\n modifiedItem.parameters = item.parameters.map((p) =>\n p.type === QueryEditorExpressionType.FunctionParameter ? { ...p, name: column.value } : p\n );\n }\n\n const newSql: SQLExpression = {\n ...sql,\n columns: sql.columns?.map((c, i) => (i === index ? modifiedItem : c)),\n };\n\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n const onAggregationChange = useCallback(\n (item: QueryEditorFunctionExpression, index: number) => (aggregation: SelectableValue<string>) => {\n const newItem = {\n ...item,\n name: aggregation?.value,\n };\n const newSql: SQLExpression = {\n ...sql,\n columns: sql.columns?.map((c, i) => (i === index ? newItem : c)),\n };\n\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n const removeColumn = useCallback(\n (index: number) => () => {\n const clone = [...sql.columns!];\n clone.splice(index, 1);\n const newSql: SQLExpression = {\n ...sql,\n columns: clone,\n };\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n const addColumn = useCallback(() => {\n const newSql: SQLExpression = { ...sql, columns: [...sql.columns!, createFunctionField()] };\n onSqlChange(newSql);\n }, [onSqlChange, sql]);\n\n return (\n <EditorStack gap={2} alignItems=\"end\" direction=\"column\">\n {sql.columns?.map((item, index) => (\n <div key={index}>\n <EditorStack gap={2} alignItems=\"end\">\n <EditorField label=\"Column\" width={25}>\n <Select\n value={getColumnValue(item)}\n options={columnsWithAsterisk}\n inputId={`select-column-${index}-${uniqueId()}`}\n menuShouldPortal\n allowCustomValue\n onChange={onColumnChange(item, index)}\n />\n </EditorField>\n\n <EditorField label=\"Aggregation\" optional width={25}>\n <Select\n value={item.name ? toOption(item.name) : null}\n inputId={`select-aggregation-${index}-${uniqueId()}`}\n isClearable\n menuShouldPortal\n allowCustomValue\n options={functions}\n onChange={onAggregationChange(item, index)}\n />\n </EditorField>\n <Button\n aria-label=\"Remove\"\n type=\"button\"\n icon=\"trash-alt\"\n variant=\"secondary\"\n size=\"md\"\n onClick={removeColumn(index)}\n />\n </EditorStack>\n </div>\n ))}\n <Button\n type=\"button\"\n onClick={addColumn}\n variant=\"secondary\"\n size=\"md\"\n icon=\"plus\"\n aria-label=\"Add\"\n className={styles.addButton}\n />\n </EditorStack>\n );\n}\n\nconst getStyles = () => {\n return { addButton: css({ alignSelf: 'flex-start' }) };\n};\n\nfunction getColumnValue({ parameters }: QueryEditorFunctionExpression): SelectableValue<string> | null {\n const column = parameters?.find((p) => p.type === QueryEditorExpressionType.FunctionParameter);\n if (column?.name) {\n return toOption(column.name);\n }\n return null;\n}\n"],"names":["getStyles","_a"],"mappings":"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"}
1
+ {"version":3,"file":"SelectRow.js","sources":["../../../../../src/components/QueryEditor/visual-query-builder/SelectRow.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { uniqueId } from 'lodash';\nimport React, { useCallback } from 'react';\nimport { type SelectableValue, toOption } from '@grafana/data';\nimport { Button, Select, useStyles2 } from '@grafana/ui';\nimport { EditorField } from '../EditorField';\nimport { type QueryEditorFunctionExpression, QueryEditorExpressionType } from '../expressions';\nimport { type SQLExpression } from '../types';\nimport { createFunctionField } from '../utils/sql.utils';\nimport { EditorStack } from '../EditorStack';\n\ninterface SelectRowProps {\n sql: SQLExpression;\n onSqlChange: (sql: SQLExpression) => void;\n columns?: Array<SelectableValue<string>>;\n functions?: Array<SelectableValue<string>>;\n}\n\nconst asteriskValue = { label: '*', value: '*' };\n\nexport function SelectRow({ sql, columns, onSqlChange, functions }: SelectRowProps) {\n const styles = useStyles2(getStyles);\n const columnsWithAsterisk = [asteriskValue, ...(columns || [])];\n\n const onColumnChange = useCallback(\n (item: QueryEditorFunctionExpression, index: number) => (column: SelectableValue<string>) => {\n let modifiedItem = { ...item };\n if (!item.parameters?.length) {\n modifiedItem.parameters = [{ type: QueryEditorExpressionType.FunctionParameter, name: column.value } as const];\n } else {\n modifiedItem.parameters = item.parameters.map((p) =>\n p.type === QueryEditorExpressionType.FunctionParameter ? { ...p, name: column.value } : p\n );\n }\n\n const newSql: SQLExpression = {\n ...sql,\n columns: sql.columns?.map((c, i) => (i === index ? modifiedItem : c)),\n };\n\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n const onAggregationChange = useCallback(\n (item: QueryEditorFunctionExpression, index: number) => (aggregation: SelectableValue<string>) => {\n const newItem = {\n ...item,\n name: aggregation?.value,\n };\n const newSql: SQLExpression = {\n ...sql,\n columns: sql.columns?.map((c, i) => (i === index ? newItem : c)),\n };\n\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n const removeColumn = useCallback(\n (index: number) => () => {\n const clone = [...sql.columns!];\n clone.splice(index, 1);\n const newSql: SQLExpression = {\n ...sql,\n columns: clone,\n };\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n const addColumn = useCallback(() => {\n const newSql: SQLExpression = { ...sql, columns: [...sql.columns!, createFunctionField()] };\n onSqlChange(newSql);\n }, [onSqlChange, sql]);\n\n return (\n <EditorStack gap={2} alignItems=\"end\" direction=\"column\">\n {sql.columns?.map((item, index) => (\n <div key={index}>\n <EditorStack gap={2} alignItems=\"end\">\n <EditorField label=\"Column\" width={25}>\n <Select\n value={getColumnValue(item)}\n options={columnsWithAsterisk}\n inputId={`select-column-${index}-${uniqueId()}`}\n menuShouldPortal\n allowCustomValue\n onChange={onColumnChange(item, index)}\n />\n </EditorField>\n\n <EditorField label=\"Aggregation\" optional width={25}>\n <Select\n value={item.name ? toOption(item.name) : null}\n inputId={`select-aggregation-${index}-${uniqueId()}`}\n isClearable\n menuShouldPortal\n allowCustomValue\n options={functions}\n onChange={onAggregationChange(item, index)}\n />\n </EditorField>\n <Button\n aria-label=\"Remove\"\n type=\"button\"\n icon=\"trash-alt\"\n variant=\"secondary\"\n size=\"md\"\n onClick={removeColumn(index)}\n />\n </EditorStack>\n </div>\n ))}\n <Button\n type=\"button\"\n onClick={addColumn}\n variant=\"secondary\"\n size=\"md\"\n icon=\"plus\"\n aria-label=\"Add\"\n className={styles.addButton}\n />\n </EditorStack>\n );\n}\n\nconst getStyles = () => {\n return { addButton: css({ alignSelf: 'flex-start' }) };\n};\n\nfunction getColumnValue({ parameters }: QueryEditorFunctionExpression): SelectableValue<string> | null {\n const column = parameters?.find((p) => p.type === QueryEditorExpressionType.FunctionParameter);\n if (column?.name) {\n return toOption(column.name);\n }\n return null;\n}\n"],"names":["_a"],"mappings":"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"}
@@ -12,12 +12,20 @@ import { EditorRow } from './EditorRow.js';
12
12
  import { EditorField } from './EditorField.js';
13
13
  import { EditorRows } from './EditorRows.js';
14
14
 
15
- const VisualEditor = ({ query, db, queryRowFilter, onChange, onValidate, range }) => {
15
+ const VisualEditor = ({
16
+ query,
17
+ db,
18
+ queryRowFilter,
19
+ onChange,
20
+ onValidate,
21
+ language = "sql",
22
+ range
23
+ }) => {
16
24
  const state = useAsync(async () => {
17
25
  const fields = await db.fields(query);
18
26
  return fields;
19
27
  }, [db, query.dataset, query.table]);
20
- return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(EditorRows, null, /* @__PURE__ */ React.createElement(EditorRow, null, /* @__PURE__ */ React.createElement(SQLSelectRow, { fields: state.value || [], query, onQueryChange: onChange, db })), queryRowFilter.filter && /* @__PURE__ */ React.createElement(EditorRow, null, /* @__PURE__ */ React.createElement(EditorField, { label: "Filter by column value", optional: true }, /* @__PURE__ */ React.createElement(SQLWhereRow, { fields: state.value || [], query, onQueryChange: onChange, db }))), queryRowFilter.group && /* @__PURE__ */ React.createElement(EditorRow, null, /* @__PURE__ */ React.createElement(EditorField, { label: "Group by column" }, /* @__PURE__ */ React.createElement(SQLGroupByRow, { fields: state.value || [], query, onQueryChange: onChange, db }))), queryRowFilter.order && /* @__PURE__ */ React.createElement(EditorRow, null, /* @__PURE__ */ React.createElement(SQLOrderByRow, { fields: state.value || [], query, onQueryChange: onChange, db })), queryRowFilter.preview && query.rawSql && /* @__PURE__ */ React.createElement(EditorRow, null, /* @__PURE__ */ React.createElement(Preview, { rawSql: query.rawSql }))), /* @__PURE__ */ React.createElement(QueryToolbox, { db, query, onValidate, range }));
28
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(EditorRows, null, /* @__PURE__ */ React.createElement(EditorRow, null, /* @__PURE__ */ React.createElement(SQLSelectRow, { fields: state.value || [], query, onQueryChange: onChange, db })), queryRowFilter.filter && /* @__PURE__ */ React.createElement(EditorRow, null, /* @__PURE__ */ React.createElement(EditorField, { label: "Filter by column value", optional: true }, /* @__PURE__ */ React.createElement(SQLWhereRow, { fields: state.value || [], query, onQueryChange: onChange, db }))), queryRowFilter.group && /* @__PURE__ */ React.createElement(EditorRow, null, /* @__PURE__ */ React.createElement(EditorField, { label: "Group by column" }, /* @__PURE__ */ React.createElement(SQLGroupByRow, { fields: state.value || [], query, onQueryChange: onChange, db }))), queryRowFilter.order && /* @__PURE__ */ React.createElement(EditorRow, null, /* @__PURE__ */ React.createElement(SQLOrderByRow, { fields: state.value || [], query, onQueryChange: onChange, db })), queryRowFilter.preview && query.rawSql && /* @__PURE__ */ React.createElement(EditorRow, null, /* @__PURE__ */ React.createElement(Preview, { rawSql: query.rawSql, language }))), /* @__PURE__ */ React.createElement(QueryToolbox, { db, query, onValidate, range }));
21
29
  };
22
30
 
23
31
  export { VisualEditor };
@@ -1 +1 @@
1
- {"version":3,"file":"VisualEditor.js","sources":["../../../../../src/components/QueryEditor/visual-query-builder/VisualEditor.tsx"],"sourcesContent":["import React from 'react';\nimport { useAsync } from 'react-use';\nimport { type DB, type QueryEditorProps, type QueryRowFilter, type SQLQuery } from '../types';\nimport { QueryToolbox } from '../query-editor-raw/QueryToolbox';\nimport { Preview } from './Preview';\nimport { SQLGroupByRow } from './SQLGroupByRow';\nimport { SQLOrderByRow } from './SQLOrderByRow';\nimport { SQLSelectRow } from './SQLSelectRow';\nimport { SQLWhereRow } from './SQLWhereRow';\nimport { type TimeRange } from '@grafana/data';\nimport { EditorRow } from './EditorRow';\nimport { EditorField } from './EditorField';\nimport { EditorRows } from './EditorRows';\n\ninterface VisualEditorProps extends QueryEditorProps {\n query: SQLQuery;\n db: DB;\n queryRowFilter: QueryRowFilter;\n onChange: (q: SQLQuery) => void;\n onValidate: (isValid: boolean) => void;\n range?: TimeRange;\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 <SQLSelectRow fields={state.value || []} query={query} onQueryChange={onChange} db={db} />\n </EditorRow>\n {queryRowFilter.filter && (\n <EditorRow>\n <EditorField label=\"Filter by column value\" optional>\n <SQLWhereRow fields={state.value || []} query={query} onQueryChange={onChange} db={db} />\n </EditorField>\n </EditorRow>\n )}\n {queryRowFilter.group && (\n <EditorRow>\n <EditorField label=\"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} />\n </EditorRow>\n )}\n </EditorRows>\n <QueryToolbox db={db} query={query} onValidate={onValidate} range={range} />\n </>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAuBO,MAAM,YAAA,GAAe,CAAC,EAAE,KAAA,EAAO,IAAI,cAAA,EAAgB,QAAA,EAAU,UAAA,EAAY,KAAA,EAAM,KAAyB;AAC7G,EAAA,MAAM,KAAA,GAAQ,SAAS,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,uBACE,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,sCACG,UAAA,EAAA,IAAA,kBACC,KAAA,CAAA,aAAA,CAAC,iCACC,KAAA,CAAA,aAAA,CAAC,YAAA,EAAA,EAAa,MAAA,EAAQ,KAAA,CAAM,KAAA,IAAS,IAAI,KAAA,EAAc,aAAA,EAAe,UAAU,EAAA,EAAQ,CAC1F,GACC,cAAA,CAAe,MAAA,oBACd,KAAA,CAAA,aAAA,CAAC,SAAA,EAAA,IAAA,kBACC,KAAA,CAAA,aAAA,CAAC,WAAA,EAAA,EAAY,OAAM,wBAAA,EAAyB,QAAA,EAAQ,wBAClD,KAAA,CAAA,aAAA,CAAC,WAAA,EAAA,EAAY,QAAQ,KAAA,CAAM,KAAA,IAAS,EAAC,EAAG,KAAA,EAAc,aAAA,EAAe,UAAU,EAAA,EAAQ,CACzF,CACF,CAAA,EAED,cAAA,CAAe,yBACd,KAAA,CAAA,aAAA,CAAC,SAAA,EAAA,IAAA,kBACC,KAAA,CAAA,aAAA,CAAC,WAAA,EAAA,EAAY,KAAA,EAAM,iBAAA,EAAA,sCAChB,aAAA,EAAA,EAAc,MAAA,EAAQ,MAAM,KAAA,IAAS,IAAI,KAAA,EAAc,aAAA,EAAe,QAAA,EAAU,EAAA,EAAQ,CAC3F,CACF,GAED,cAAA,CAAe,KAAA,wCACb,SAAA,EAAA,IAAA,kBACC,KAAA,CAAA,aAAA,CAAC,iBAAc,MAAA,EAAQ,KAAA,CAAM,KAAA,IAAS,EAAC,EAAG,KAAA,EAAc,eAAe,QAAA,EAAU,EAAA,EAAQ,CAC3F,CAAA,EAED,cAAA,CAAe,WAAW,KAAA,CAAM,MAAA,oBAC/B,KAAA,CAAA,aAAA,CAAC,SAAA,EAAA,IAAA,kBACC,KAAA,CAAA,aAAA,CAAC,OAAA,EAAA,EAAQ,QAAQ,KAAA,CAAM,MAAA,EAAQ,CACjC,CAEJ,CAAA,kBACA,KAAA,CAAA,aAAA,CAAC,gBAAa,EAAA,EAAQ,KAAA,EAAc,UAAA,EAAwB,KAAA,EAAc,CAC5E,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"VisualEditor.js","sources":["../../../../../src/components/QueryEditor/visual-query-builder/VisualEditor.tsx"],"sourcesContent":["import React from 'react';\nimport { useAsync } from 'react-use';\nimport { type DB, type QueryEditorProps, type QueryRowFilter, type SQLQuery } from '../types';\nimport { QueryToolbox } from '../query-editor-raw/QueryToolbox';\nimport { Preview } from './Preview';\nimport { SQLGroupByRow } from './SQLGroupByRow';\nimport { SQLOrderByRow } from './SQLOrderByRow';\nimport { SQLSelectRow } from './SQLSelectRow';\nimport { SQLWhereRow } from './SQLWhereRow';\nimport { type TimeRange } from '@grafana/data';\nimport { EditorRow } from './EditorRow';\nimport { EditorField } from './EditorField';\nimport { EditorRows } from './EditorRows';\nimport type { SqlLanguage } from 'sql-formatter';\n\ninterface VisualEditorProps extends QueryEditorProps {\n query: SQLQuery;\n db: DB;\n queryRowFilter: QueryRowFilter;\n onChange: (q: SQLQuery) => void;\n onValidate: (isValid: boolean) => void;\n language?: SqlLanguage;\n range?: TimeRange;\n}\n\nexport const VisualEditor = ({\n query,\n db,\n queryRowFilter,\n onChange,\n onValidate,\n language = 'sql',\n range,\n}: 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 <SQLSelectRow fields={state.value || []} query={query} onQueryChange={onChange} db={db} />\n </EditorRow>\n {queryRowFilter.filter && (\n <EditorRow>\n <EditorField label=\"Filter by column value\" optional>\n <SQLWhereRow fields={state.value || []} query={query} onQueryChange={onChange} db={db} />\n </EditorField>\n </EditorRow>\n )}\n {queryRowFilter.group && (\n <EditorRow>\n <EditorField label=\"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} language={language} />\n </EditorRow>\n )}\n </EditorRows>\n <QueryToolbox db={db} query={query} onValidate={onValidate} range={range} />\n </>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAyBO,MAAM,eAAe,CAAC;AAAA,EAC3B,KAAA;AAAA,EACA,EAAA;AAAA,EACA,cAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAW,GAAA,KAAA;AAAA,EACX;AACF,CAAyB,KAAA;AACvB,EAAM,MAAA,KAAA,GAAQ,SAAS,YAAY;AACjC,IAAA,MAAM,MAAS,GAAA,MAAM,EAAG,CAAA,MAAA,CAAO,KAAK,CAAA;AACpC,IAAO,OAAA,MAAA;AAAA,KACN,CAAC,EAAA,EAAI,MAAM,OAAS,EAAA,KAAA,CAAM,KAAK,CAAC,CAAA;AAEnC,EACE,uBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,sCACG,UACC,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,iCACE,KAAA,CAAA,aAAA,CAAA,YAAA,EAAA,EAAa,MAAQ,EAAA,KAAA,CAAM,KAAS,IAAA,IAAI,KAAc,EAAA,aAAA,EAAe,UAAU,EAAQ,EAAA,CAC1F,GACC,cAAe,CAAA,MAAA,oBACb,KAAA,CAAA,aAAA,CAAA,SAAA,EAAA,IAAA,kBACE,KAAA,CAAA,aAAA,CAAA,WAAA,EAAA,EAAY,OAAM,wBAAyB,EAAA,QAAA,EAAQ,wBACjD,KAAA,CAAA,aAAA,CAAA,WAAA,EAAA,EAAY,QAAQ,KAAM,CAAA,KAAA,IAAS,EAAC,EAAG,KAAc,EAAA,aAAA,EAAe,UAAU,EAAQ,EAAA,CACzF,CACF,CAAA,EAED,cAAe,CAAA,KAAA,wCACb,SACC,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,WAAY,EAAA,EAAA,KAAA,EAAM,iBACjB,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,iBAAc,MAAQ,EAAA,KAAA,CAAM,SAAS,EAAC,EAAG,OAAc,aAAe,EAAA,QAAA,EAAU,EAAQ,EAAA,CAC3F,CACF,CAAA,EAED,eAAe,KACd,oBAAA,KAAA,CAAA,aAAA,CAAC,iCACE,KAAA,CAAA,aAAA,CAAA,aAAA,EAAA,EAAc,QAAQ,KAAM,CAAA,KAAA,IAAS,EAAC,EAAG,KAAc,EAAA,aAAA,EAAe,UAAU,EAAQ,EAAA,CAC3F,GAED,cAAe,CAAA,OAAA,IAAW,MAAM,MAC/B,oBAAA,KAAA,CAAA,aAAA,CAAC,SACC,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,OAAQ,EAAA,EAAA,MAAA,EAAQ,MAAM,MAAQ,EAAA,QAAA,EAAoB,CACrD,CAEJ,CACA,kBAAA,KAAA,CAAA,aAAA,CAAC,gBAAa,EAAQ,EAAA,KAAA,EAAc,UAAwB,EAAA,KAAA,EAAc,CAC5E,CAAA;AAEJ;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"WhereRow.js","sources":["../../../../../src/components/QueryEditor/visual-query-builder/WhereRow.tsx"],"sourcesContent":["import { injectGlobal } from '@emotion/css';\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { Builder, type Config, type ImmutableTree, Query, Utils } from '@react-awesome-query-builder/ui';\nimport { type SQLExpression } from '../types';\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":["config"],"mappings":";;;;;;AAYO,SAAS,QAAA,CAAS,EAAE,GAAA,EAAK,MAAA,EAAQ,aAAY,EAA4B;AAC9E,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,QAAA,EAAwB;AAChD,EAAA,MAAM,kBAAA,GAAqB,OAAA,CAAQ,OAAO,EAAE,GAAG,UAAA,EAAY,GAAG,MAAA,EAAO,CAAA,EAAI,CAAC,MAAM,CAAC,CAAA;AAEjF,EAAA,SAAA,CAAU,MAAM;AAhBlB,IAAA,IAAA,EAAA;AAkBI,IAAA,IAAI,CAAC,IAAA,EAAM;AACT,MAAA,MAAM,QAAA,GAAW,KAAA,CAAM,SAAA,CAAU,KAAA,CAAM,QAAA,CAAA,CAAS,SAAI,aAAA,KAAJ,IAAA,GAAA,EAAA,GAAqB,aAAa,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,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,IAAI,aAAA,EAAe;AACtB,MAAA,OAAA,CAAQ,MAAM,SAAA,CAAU,KAAA,CAAM,SAAS,aAAa,CAAA,EAAG,kBAAkB,CAAC,CAAA;AAAA,IAC5E;AAAA,EACF,CAAA,EAAG,CAAC,kBAAA,EAAoB,GAAA,CAAI,aAAa,CAAC,CAAA;AAE1C,EAAA,MAAM,YAAA,GAAe,WAAA;AAAA,IACnB,CAAC,aAA4BA,OAAAA,KAAmB;AAC9C,MAAA,OAAA,CAAQ,WAAW,CAAA;AACnB,MAAA,MAAM,MAAA,GAAS;AAAA,QACb,GAAG,GAAA;AAAA,QACH,aAAA,EAAe,KAAA,CAAM,OAAA,CAAQ,WAAW,CAAA;AAAA,QACxC,WAAA,EAAa,KAAA,CAAM,SAAA,CAAU,WAAA,EAAaA,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,uBACE,KAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,kBAAA;AAAA,MACJ,KAAA,EAAO,IAAA;AAAA,MACP,QAAA,EAAU,YAAA;AAAA,MACV,eAAe,CAAC,KAAA,qBAAU,KAAA,CAAA,aAAA,CAAC,OAAA,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;AAGA,YAAA;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.js","sources":["../../../../../src/components/QueryEditor/visual-query-builder/WhereRow.tsx"],"sourcesContent":["import { injectGlobal } from '@emotion/css';\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { Builder, type Config, type ImmutableTree, Query, Utils } from '@react-awesome-query-builder/ui';\nimport { type SQLExpression } from '../types';\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":["config"],"mappings":";;;;;;AAYO,SAAS,QAAS,CAAA,EAAE,GAAK,EAAA,MAAA,EAAQ,aAAwC,EAAA;AAC9E,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,QAAwB,EAAA;AAChD,EAAM,MAAA,kBAAA,GAAqB,OAAQ,CAAA,OAAO,EAAE,GAAG,UAAY,EAAA,GAAG,MAAO,EAAA,CAAA,EAAI,CAAC,MAAM,CAAC,CAAA;AAEjF,EAAA,SAAA,CAAU,MAAM;AAhBlB,IAAA,IAAA,EAAA;AAkBI,IAAA,IAAI,CAAC,IAAM,EAAA;AACT,MAAM,MAAA,QAAA,GAAW,KAAM,CAAA,SAAA,CAAU,KAAM,CAAA,QAAA,CAAA,CAAS,SAAI,aAAJ,KAAA,IAAA,GAAA,EAAA,GAAqB,aAAa,CAAA,EAAG,kBAAkB,CAAA;AACvG,MAAA,OAAA,CAAQ,QAAQ,CAAA;AAAA;AAClB,KACC,CAAC,kBAAA,EAAoB,GAAI,CAAA,aAAA,EAAe,IAAI,CAAC,CAAA;AAEhD,EAAA,SAAA,CAAU,MAAM;AACd,IAAI,IAAA,CAAC,IAAI,aAAe,EAAA;AACtB,MAAA,OAAA,CAAQ,MAAM,SAAU,CAAA,KAAA,CAAM,SAAS,aAAa,CAAA,EAAG,kBAAkB,CAAC,CAAA;AAAA;AAC5E,GACC,EAAA,CAAC,kBAAoB,EAAA,GAAA,CAAI,aAAa,CAAC,CAAA;AAE1C,EAAA,MAAM,YAAe,GAAA,WAAA;AAAA,IACnB,CAAC,aAA4BA,OAAmB,KAAA;AAC9C,MAAA,OAAA,CAAQ,WAAW,CAAA;AACnB,MAAA,MAAM,MAAS,GAAA;AAAA,QACb,GAAG,GAAA;AAAA,QACH,aAAA,EAAe,KAAM,CAAA,OAAA,CAAQ,WAAW,CAAA;AAAA,QACxC,WAAa,EAAA,KAAA,CAAM,SAAU,CAAA,WAAA,EAAaA,OAAM;AAAA,OAClD;AAEA,MAAA,WAAA,CAAY,MAAM,CAAA;AAAA,KACpB;AAAA,IACA,CAAC,aAAa,GAAG;AAAA,GACnB;AAEA,EAAA,IAAI,CAAC,IAAM,EAAA;AACT,IAAO,OAAA,IAAA;AAAA;AAGT,EACE,uBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,kBAAA;AAAA,MACJ,KAAO,EAAA,IAAA;AAAA,MACP,QAAU,EAAA,YAAA;AAAA,MACV,eAAe,CAAC,KAAA,qBAAW,KAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAS,GAAG,KAAO,EAAA;AAAA;AAAA,GAChD;AAEJ;AAEA,SAAS,KAAK,SAAmB,EAAA;AAC/B,EAAO,OAAA;AAAA;AAAA;AAAA,oBAAA,EAGa,SAAS,CAAA,CAAA,CAAA;AAC/B;AAGA,YAAA;AAAA;AAAA,IAEM,EAAA,IAAA,CAAK,KAAK,CAAC;AAAA;;AAAA;AAAA,IAIX,EAAA,IAAA,CAAK,QAAQ,CAAC;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA,IAOd,EAAA,IAAA,CAAK,KAAK,CAAC;AAAA;;AAAA;AAAA,IAIX,EAAA,IAAA,CAAK,QAAQ,CAAC;AAAA;;AAAA;AAAA;AAAA;AAAA,CAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"QueryEditorRow.js","sources":["../../../../src/components/QueryEditorRow/QueryEditorRow.tsx"],"sourcesContent":["import React from 'react';\nexport interface QueryEditorRowProps {\n label?: string;\n className?: string;\n noFillEnd?: boolean;\n children?: React.ReactNode;\n}\n\nexport const QueryEditorRow = (props: QueryEditorRowProps) => {\n const className: string = props.className ?? 'width-8';\n const noFillEnd: boolean = props.noFillEnd ?? false;\n\n return (\n <div className=\"gf-form\">\n {props.label && <label className={`gf-form-label query-keyword ${className}`}>{props.label}</label>}\n {props.children}\n\n <div className={'gf-form--grow'}>{noFillEnd || <div className={'gf-form-label gf-form-label--grow'}></div>}</div>\n </div>\n );\n};\n"],"names":[],"mappings":";;AAQO,MAAM,cAAA,GAAiB,CAAC,KAAA,KAA+B;AAR9D,EAAA,IAAA,EAAA,EAAA,EAAA;AASE,EAAA,MAAM,SAAA,GAAA,CAAoB,EAAA,GAAA,KAAA,CAAM,SAAA,KAAN,IAAA,GAAA,EAAA,GAAmB,SAAA;AAC7C,EAAA,MAAM,SAAA,GAAA,CAAqB,EAAA,GAAA,KAAA,CAAM,SAAA,KAAN,IAAA,GAAA,EAAA,GAAmB,KAAA;AAE9C,EAAA,uBACE,KAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,SAAA,EAAA,EACZ,KAAA,CAAM,KAAA,oBAAS,KAAA,CAAA,aAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAW,CAAA,4BAAA,EAA+B,SAAS,CAAA,CAAA,EAAA,EAAK,KAAA,CAAM,KAAM,CAAA,EAC1F,KAAA,CAAM,QAAA,kBAEP,KAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,eAAA,EAAA,EAAkB,SAAA,oBAAa,KAAA,CAAA,aAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,mCAAA,EAAqC,CAAO,CAC7G,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"QueryEditorRow.js","sources":["../../../../src/components/QueryEditorRow/QueryEditorRow.tsx"],"sourcesContent":["import React from 'react';\nexport interface QueryEditorRowProps {\n label?: string;\n className?: string;\n noFillEnd?: boolean;\n children?: React.ReactNode;\n}\n\nexport const QueryEditorRow = (props: QueryEditorRowProps) => {\n const className: string = props.className ?? 'width-8';\n const noFillEnd: boolean = props.noFillEnd ?? false;\n\n return (\n <div className=\"gf-form\">\n {props.label && <label className={`gf-form-label query-keyword ${className}`}>{props.label}</label>}\n {props.children}\n\n <div className={'gf-form--grow'}>{noFillEnd || <div className={'gf-form-label gf-form-label--grow'}></div>}</div>\n </div>\n );\n};\n"],"names":[],"mappings":";;AAQa,MAAA,cAAA,GAAiB,CAAC,KAA+B,KAAA;AAR9D,EAAA,IAAA,EAAA,EAAA,EAAA;AASE,EAAM,MAAA,SAAA,GAAA,CAAoB,EAAM,GAAA,KAAA,CAAA,SAAA,KAAN,IAAmB,GAAA,EAAA,GAAA,SAAA;AAC7C,EAAM,MAAA,SAAA,GAAA,CAAqB,EAAM,GAAA,KAAA,CAAA,SAAA,KAAN,IAAmB,GAAA,EAAA,GAAA,KAAA;AAE9C,EACE,uBAAA,KAAA,CAAA,aAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,SACZ,EAAA,EAAA,KAAA,CAAM,KAAS,oBAAA,KAAA,CAAA,aAAA,CAAC,OAAM,EAAA,EAAA,SAAA,EAAW,CAA+B,4BAAA,EAAA,SAAS,CAAK,CAAA,EAAA,EAAA,KAAA,CAAM,KAAM,CAAA,EAC1F,KAAM,CAAA,QAAA,kBAEN,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAI,SAAW,EAAA,eAAA,EAAA,EAAkB,SAAa,oBAAA,KAAA,CAAA,aAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAW,mCAAqC,EAAA,CAAO,CAC7G,CAAA;AAEJ;;;;"}
@@ -3,7 +3,7 @@ import React, { useRef, useMemo, useEffect, useCallback } from 'react';
3
3
  import { getStatementPosition } from '../standardSql/getStatementPosition.js';
4
4
  import { getStandardSuggestions } from '../standardSql/getStandardSuggestions.js';
5
5
  import { initSuggestionsKindRegistry } from '../standardSql/suggestionsKindRegistry.js';
6
- import { SuggestionKind, CompletionItemPriority, CompletionItemKind, CompletionItemInsertTextRule } from '../types.js';
6
+ import { SuggestionKind, CompletionItemKind, CompletionItemPriority, CompletionItemInsertTextRule } from '../types.js';
7
7
  import { getSuggestionKinds } from '../utils/getSuggestionKind.js';
8
8
  import { linkedTokenBuilder } from '../utils/linkedTokenBuilder.js';
9
9
  import { getTableToken, defaultTableNameParser } from '../utils/tokenUtils.js';
@@ -59,7 +59,7 @@ const SQLEditor = ({
59
59
  CodeEditor,
60
60
  {
61
61
  height: height || "240px",
62
- width: width ? `${width - 2}px` : void 0,
62
+ width: width ? `${width - 2}px` : undefined,
63
63
  language: id,
64
64
  value: query,
65
65
  onBlur: onSqlBlur,
@@ -90,12 +90,12 @@ const SQLEditor = ({
90
90
  ), children && children({ formatQuery }));
91
91
  };
92
92
  const resolveLanguage = (monaco, languageDefinitionProp) => {
93
- if ((languageDefinitionProp == null ? void 0 : languageDefinitionProp.id) !== STANDARD_SQL_LANGUAGE && !languageDefinitionProp.loader) {
94
- sqlEditorLog(`Loading language '${languageDefinitionProp == null ? void 0 : languageDefinitionProp.id}' from Monaco registry`, false);
93
+ if ((languageDefinitionProp == null ? undefined : languageDefinitionProp.id) !== STANDARD_SQL_LANGUAGE && !languageDefinitionProp.loader) {
94
+ sqlEditorLog(`Loading language '${languageDefinitionProp == null ? undefined : languageDefinitionProp.id}' from Monaco registry`, false);
95
95
  const allLangs = monaco.languages.getLanguages();
96
- const custom = allLangs.find(({ id }) => id === (languageDefinitionProp == null ? void 0 : languageDefinitionProp.id));
96
+ const custom = allLangs.find(({ id }) => id === (languageDefinitionProp == null ? undefined : languageDefinitionProp.id));
97
97
  if (!custom) {
98
- throw Error(`Unknown Monaco language ${languageDefinitionProp == null ? void 0 : languageDefinitionProp.id}`);
98
+ throw Error(`Unknown Monaco language ${languageDefinitionProp == null ? undefined : languageDefinitionProp.id}`);
99
99
  }
100
100
  return { completionProvider: getStandardSQLCompletionProvider, ...custom, ...languageDefinitionProp };
101
101
  }
@@ -117,7 +117,7 @@ const registerLanguageAndSuggestions = async (monaco, l, lid) => {
117
117
  monaco.languages.registerDocumentFormattingEditProvider(lid, {
118
118
  provideDocumentFormattingEdits: (model) => {
119
119
  var _a;
120
- const formatted = (_a = l.formatter) == null ? void 0 : _a.call(l, model.getValue());
120
+ const formatted = (_a = l.formatter) == null ? undefined : _a.call(l, model.getValue());
121
121
  return [
122
122
  {
123
123
  range: model.getFullModelRange(),
@@ -224,7 +224,7 @@ function extendStandardRegistries(id, lid, customProvider) {
224
224
  }
225
225
  if (customProvider.customSuggestionKinds) {
226
226
  for (const kind of customProvider.customSuggestionKinds()) {
227
- (_a = kind.applyTo) == null ? void 0 : _a.forEach((applyTo) => {
227
+ (_a = kind.applyTo) == null ? undefined : _a.forEach((applyTo) => {
228
228
  const exists = languageRegistries.suggestionKinds.getIfExists(applyTo);
229
229
  if (exists) {
230
230
  if (exists.kind.indexOf(kind.id) === -1) {
@@ -234,7 +234,7 @@ function extendStandardRegistries(id, lid, customProvider) {
234
234
  });
235
235
  if (kind.overrideDefault) {
236
236
  const stbBehavior = instanceSuggestionsRegistry.get(kind.id);
237
- if (stbBehavior !== void 0) {
237
+ if (stbBehavior !== undefined) {
238
238
  stbBehavior.suggestions = kind.suggestionsResolver;
239
239
  continue;
240
240
  }
@@ -276,9 +276,9 @@ function extendStandardRegistries(id, lid, customProvider) {
276
276
  var _a2, _b, _c, _d, _e;
277
277
  const o = await s(ctx, m);
278
278
  const tableToken = getTableToken(ctx.currentToken);
279
- const tableNameParser = (_b = (_a2 = customProvider.tables) == null ? void 0 : _a2.parseName) != null ? _b : defaultTableNameParser;
279
+ const tableNameParser = (_b = (_a2 = customProvider.tables) == null ? undefined : _a2.parseName) != null ? _b : defaultTableNameParser;
280
280
  const tableIdentifier = tableNameParser(tableToken);
281
- const oo = ((_e = await ((_d = (_c = customProvider.tables) == null ? void 0 : _c.resolve) == null ? void 0 : _d.call(_c, tableIdentifier))) != null ? _e : []).map((x) => {
281
+ const oo = ((_e = await ((_d = (_c = customProvider.tables) == null ? undefined : _c.resolve) == null ? undefined : _d.call(_c, tableIdentifier))) != null ? _e : []).map((x) => {
282
282
  var _a3;
283
283
  return {
284
284
  label: x.name,
@@ -301,13 +301,13 @@ function extendStandardRegistries(id, lid, customProvider) {
301
301
  const o = await s(ctx, m);
302
302
  const tableToken = getTableToken(ctx.currentToken);
303
303
  let tableIdentifier;
304
- const tableNameParser = (_b = (_a2 = customProvider.tables) == null ? void 0 : _a2.parseName) != null ? _b : defaultTableNameParser;
304
+ const tableNameParser = (_b = (_a2 = customProvider.tables) == null ? undefined : _a2.parseName) != null ? _b : defaultTableNameParser;
305
305
  if (tableToken && tableToken.value) {
306
306
  tableIdentifier = tableNameParser(tableToken);
307
307
  }
308
308
  let oo = [];
309
309
  if (tableIdentifier) {
310
- const columns = await ((_c = customProvider.columns) == null ? void 0 : _c.resolve(tableIdentifier));
310
+ const columns = await ((_c = customProvider.columns) == null ? undefined : _c.resolve(tableIdentifier));
311
311
  oo = columns ? columns.map((x) => {
312
312
  var _a3;
313
313
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"SQLEditor.js","sources":["../../../../../src/components/SQLEditor/components/SQLEditor.tsx"],"sourcesContent":["import { CodeEditor, type Monaco, type monacoTypes } from '@grafana/ui';\nimport React, { useCallback, useEffect, useMemo, useRef } from 'react';\nimport { getStatementPosition } from '../standardSql/getStatementPosition';\nimport { getStandardSuggestions } from '../standardSql/getStandardSuggestions';\nimport { initSuggestionsKindRegistry, type SuggestionKindRegistryItem } from '../standardSql/suggestionsKindRegistry';\nimport {\n CompletionItemInsertTextRule,\n CompletionItemKind,\n CompletionItemPriority,\n type CustomSuggestion,\n type PositionContext,\n type SQLCompletionItemProvider,\n type StatementPosition,\n SuggestionKind,\n} from '../types';\nimport { getSuggestionKinds } from '../utils/getSuggestionKind';\nimport { linkedTokenBuilder } from '../utils/linkedTokenBuilder';\nimport { defaultTableNameParser, getTableToken } from '../utils/tokenUtils';\nimport { TRIGGER_SUGGEST } from '../utils/commands';\nimport { v4 } from 'uuid';\nimport { Registry } from '@grafana/data';\nimport {\n type FunctionsRegistryItem,\n type MacrosRegistryItem,\n type OperatorsRegistryItem,\n type SQLMonarchLanguage,\n type StatementPositionResolversRegistryItem,\n type SuggestionsRegistryItem,\n} from '../standardSql/types';\nimport { initStandardSuggestions } from '../standardSql/standardSuggestionsRegistry';\nimport { initStatementPositionResolvers } from '../standardSql/statementPositionResolversRegistry';\nimport { sqlEditorLog } from '../utils/debugger';\nimport standardSQLLanguageDefinition from '../standardSql/definition';\nimport { getStandardSQLCompletionProvider } from '../standardSql/standardSQLCompletionItemProvider';\nimport { useLatestCallback } from '../hooks/useLatestCallback';\n\nconst STANDARD_SQL_LANGUAGE = 'sql';\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\ninterface SQLEditorProps {\n query: string;\n /**\n * Use for inspecting the query as it changes. I.e. for validation.\n */\n onChange?: (q: string, processQuery: boolean) => void;\n onBlur?: (text: string) => void;\n language?: LanguageDefinition;\n children?: (props: { formatQuery: () => void }) => React.ReactNode;\n width?: number;\n height?: number;\n}\n\ninterface LanguageRegistries {\n functions: Registry<FunctionsRegistryItem>;\n operators: Registry<OperatorsRegistryItem>;\n suggestionKinds: Registry<SuggestionKindRegistryItem>;\n positionResolvers: Registry<StatementPositionResolversRegistryItem>;\n macros: Registry<MacrosRegistryItem>;\n}\n\nconst LANGUAGES_CACHE = new Map<string, LanguageRegistries>();\nconst INSTANCE_CACHE = new Map<string, Registry<SuggestionsRegistryItem>>();\n\nexport const SQLEditor = ({\n children,\n onBlur,\n onChange,\n query,\n language = { id: STANDARD_SQL_LANGUAGE },\n width,\n height,\n}: SQLEditorProps) => {\n const monacoRef = useRef<monacoTypes.editor.IStandaloneCodeEditor | null>(null);\n const langUid = useRef<string>();\n const stableOnChange = useLatestCallback(onChange);\n\n // create unique language id for each SQLEditor instance\n const id = useMemo(() => {\n const uid = v4();\n const id = `${language.id}-${uid}`;\n langUid.current = id;\n return id;\n }, [language.id]);\n\n useEffect(() => {\n return () => {\n if (langUid.current) {\n INSTANCE_CACHE.delete(langUid.current);\n }\n sqlEditorLog(`Removing instance cache ${langUid.current}`, false, INSTANCE_CACHE);\n };\n }, []);\n\n const formatQuery = useCallback(() => {\n if (monacoRef.current) {\n monacoRef.current.getAction('editor.action.formatDocument').run();\n }\n }, []);\n\n const onSqlBlur = (text: string) => {\n stableOnChange && stableOnChange(text, false);\n onBlur && onBlur(text);\n };\n\n return (\n <div style={{ width }}>\n <CodeEditor\n height={height || '240px'}\n // -2px to compensate for borders width\n width={width ? `${width - 2}px` : undefined}\n language={id}\n value={query}\n onBlur={onSqlBlur}\n showMiniMap={false}\n showLineNumbers={true}\n // Using onEditorDidMount instead of onBeforeEditorMount to support Grafana < 8.2.x\n onEditorDidMount={(editor, m) => {\n monacoRef.current = editor;\n editor.onDidChangeModelContent((e) => {\n const text = editor.getValue();\n // Use ref to get the latest onChange callback, avoiding stale closures\n if (stableOnChange) {\n stableOnChange(text, false);\n }\n });\n\n editor.addCommand(m.KeyMod.CtrlCmd | m.KeyCode.Enter, () => {\n const text = editor.getValue();\n // Use ref to get the latest onChange callback, avoiding stale closures\n if (stableOnChange) {\n stableOnChange(text, true);\n }\n });\n\n editor.onKeyUp((e) => {\n // keyCode 84 is . (DOT)\n if (e.keyCode === 84) {\n editor.trigger(TRIGGER_SUGGEST.id, TRIGGER_SUGGEST.id, {});\n }\n });\n registerLanguageAndSuggestions(m, language, id);\n }}\n />\n {children && children({ formatQuery })}\n </div>\n );\n};\n\n// There's three ways to define Monaco language:\n// 1. Leave language.id empty or set it to 'sql'. This will load a standard sql language definition, including syntax highlighting and tokenization for\n// common Grafana entities such as macros and template variables\n// 2. Provide a custom language and load it via the async LanguageDefinition.loader callback\n// 3. Specify a language.id that exists in the Monaco language registry. A custom completion item provider can still be provided.\n// If not, the standard SQL completion item provider will be used. See available languages here: https://github.com/microsoft/monaco-editor/tree/main/src/basic-languages\n// If a custom language is specified, its LanguageDefinition will be merged with the LanguageDefinition for standard SQL. This allows the consumer to only\n// override parts of the LanguageDefinition, such as for example the completion item provider.\nconst resolveLanguage = (monaco: Monaco, languageDefinitionProp: LanguageDefinition): LanguageDefinition => {\n if (languageDefinitionProp?.id !== STANDARD_SQL_LANGUAGE && !languageDefinitionProp.loader) {\n sqlEditorLog(`Loading language '${languageDefinitionProp?.id}' from Monaco registry`, false);\n const allLangs = monaco.languages.getLanguages();\n const custom = allLangs.find(({ id }) => id === languageDefinitionProp?.id);\n if (!custom) {\n throw Error(`Unknown Monaco language ${languageDefinitionProp?.id}`);\n }\n\n return { completionProvider: getStandardSQLCompletionProvider, ...custom, ...languageDefinitionProp };\n }\n\n return {\n ...standardSQLLanguageDefinition,\n ...languageDefinitionProp,\n };\n};\n\nexport const registerLanguageAndSuggestions = async (monaco: Monaco, l: LanguageDefinition, lid: string) => {\n const languageDefinition = resolveLanguage(monaco, l);\n if (!languageDefinition.loader) {\n return;\n }\n const { language, conf } = await languageDefinition.loader(monaco);\n monaco.languages.register({ id: lid });\n monaco.languages.setMonarchTokensProvider(lid, { ...language });\n monaco.languages.setLanguageConfiguration(lid, { ...conf });\n\n if (languageDefinition.formatter) {\n monaco.languages.registerDocumentFormattingEditProvider(lid, {\n provideDocumentFormattingEdits: (model) => {\n const formatted = l.formatter?.(model.getValue());\n return [\n {\n range: model.getFullModelRange(),\n text: formatted || '',\n },\n ];\n },\n });\n }\n\n if (languageDefinition.completionProvider) {\n const customProvider = languageDefinition.completionProvider(monaco, language);\n extendStandardRegistries(l.id, lid, customProvider);\n const languageSuggestionsRegistries = LANGUAGES_CACHE.get(l.id)!;\n const instanceSuggestionsRegistry = INSTANCE_CACHE.get(lid)!;\n\n const completionProvider: monacoTypes.languages.CompletionItemProvider['provideCompletionItems'] = async (\n model,\n position,\n context,\n token\n ) => {\n const currentToken = linkedTokenBuilder(monaco, model, position, lid);\n const statementPosition = getStatementPosition(currentToken, languageSuggestionsRegistries.positionResolvers);\n const kind = getSuggestionKinds(statementPosition, languageSuggestionsRegistries.suggestionKinds);\n\n sqlEditorLog('Statement position', false, statementPosition);\n sqlEditorLog('Suggestion kinds', false, kind);\n\n const ctx: PositionContext = {\n position,\n currentToken,\n statementPosition,\n kind,\n range: monaco.Range.fromPositions(position),\n };\n\n const stdSuggestions = await getStandardSuggestions(monaco, currentToken, kind, ctx, instanceSuggestionsRegistry);\n\n return {\n suggestions: stdSuggestions,\n };\n };\n\n monaco.languages.registerCompletionItemProvider(lid, {\n ...customProvider,\n provideCompletionItems: completionProvider,\n });\n }\n};\n\nfunction extendStandardRegistries(id: string, lid: string, customProvider: SQLCompletionItemProvider) {\n if (!LANGUAGES_CACHE.has(id)) {\n initializeLanguageRegistries(id);\n }\n\n const languageRegistries = LANGUAGES_CACHE.get(id)!;\n\n if (!INSTANCE_CACHE.has(lid)) {\n INSTANCE_CACHE.set(\n lid,\n new Registry(\n initStandardSuggestions(languageRegistries.functions, languageRegistries.operators, languageRegistries.macros)\n )\n );\n }\n\n const instanceSuggestionsRegistry = INSTANCE_CACHE.get(lid)!;\n\n if (customProvider.supportedFunctions) {\n for (const func of customProvider.supportedFunctions()) {\n const exists = languageRegistries.functions.getIfExists(func.id);\n if (!exists) {\n languageRegistries.functions.register(func);\n }\n }\n }\n\n if (customProvider.supportedOperators) {\n for (const op of customProvider.supportedOperators()) {\n const exists = languageRegistries.operators.getIfExists(op.id);\n if (!exists) {\n languageRegistries.operators.register({ ...op, name: op.id });\n }\n }\n }\n\n if (customProvider.supportedMacros) {\n for (const macro of customProvider.supportedMacros()) {\n const exists = languageRegistries.macros.getIfExists(macro.id);\n if (!exists) {\n languageRegistries.macros.register({ ...macro, name: macro.id });\n }\n }\n }\n\n if (customProvider.customStatementPlacement) {\n for (const placement of customProvider.customStatementPlacement()) {\n const exists = languageRegistries.positionResolvers.getIfExists(placement.id);\n if (!exists) {\n languageRegistries.positionResolvers.register({\n ...placement,\n id: placement.id as StatementPosition,\n name: placement.id,\n });\n languageRegistries.suggestionKinds.register({\n id: placement.id as StatementPosition,\n name: placement.id,\n kind: [],\n });\n } else {\n // Allow extension to the built-in placement resolvers\n const origResolve = exists.resolve;\n exists.resolve = (...args) => {\n const ext = placement.resolve(...args);\n if (placement.overrideDefault) {\n return ext;\n }\n const orig = origResolve(...args);\n return orig || ext;\n };\n }\n }\n }\n\n if (customProvider.customSuggestionKinds) {\n for (const kind of customProvider.customSuggestionKinds()) {\n kind.applyTo?.forEach((applyTo) => {\n const exists = languageRegistries.suggestionKinds.getIfExists(applyTo);\n if (exists) {\n // avoid duplicates\n if (exists.kind.indexOf(kind.id as SuggestionKind) === -1) {\n exists.kind.push(kind.id as SuggestionKind);\n }\n }\n });\n\n if (kind.overrideDefault) {\n const stbBehavior = instanceSuggestionsRegistry.get(kind.id);\n if (stbBehavior !== undefined) {\n stbBehavior.suggestions = kind.suggestionsResolver;\n continue;\n }\n }\n\n instanceSuggestionsRegistry.register({\n id: kind.id as SuggestionKind,\n name: kind.id,\n suggestions: kind.suggestionsResolver,\n });\n }\n }\n\n if (customProvider.schemas) {\n const stbBehavior = instanceSuggestionsRegistry.get(SuggestionKind.Schemas);\n const s = stbBehavior.suggestions;\n stbBehavior.suggestions = async (ctx, m) => {\n const standardSchemas = await s(ctx, m);\n if (!customProvider.schemas) {\n return [...standardSchemas];\n }\n const customSchemas = await customProvider.schemas.resolve();\n const customSchemaCompletionItems = customSchemas.map((x) => ({\n label: x.name,\n insertText: `${x.completion ?? x.name}.`,\n command: TRIGGER_SUGGEST,\n kind: CompletionItemKind.Module, // it's nice to differentiate schemas from tables\n sortText: CompletionItemPriority.High,\n }));\n return [...standardSchemas, ...customSchemaCompletionItems];\n };\n }\n\n if (customProvider.tables) {\n const stbBehavior = instanceSuggestionsRegistry.get(SuggestionKind.Tables);\n const s = stbBehavior.suggestions;\n stbBehavior.suggestions = async (ctx, m) => {\n const o = await s(ctx, m);\n const tableToken = getTableToken(ctx.currentToken);\n const tableNameParser = customProvider.tables?.parseName ?? defaultTableNameParser;\n\n const tableIdentifier = tableNameParser(tableToken);\n\n const oo = ((await customProvider.tables?.resolve?.(tableIdentifier)) ?? []).map((x) => ({\n label: x.name,\n // if no custom completion is provided it's safe to move cursor further in the statement\n insertText: `${x.completion ?? x.name}${x.completion === x.name ? ' $0' : ''}`,\n insertTextRules: CompletionItemInsertTextRule.InsertAsSnippet,\n command: TRIGGER_SUGGEST,\n kind: CompletionItemKind.Field,\n sortText: CompletionItemPriority.MediumHigh,\n }));\n return [...o, ...oo];\n };\n }\n\n if (customProvider.columns) {\n const stbBehavior = instanceSuggestionsRegistry.get(SuggestionKind.Columns);\n const s = stbBehavior.suggestions;\n stbBehavior.suggestions = async (ctx, m) => {\n const o = await s(ctx, m);\n const tableToken = getTableToken(ctx.currentToken);\n let tableIdentifier;\n const tableNameParser = customProvider.tables?.parseName ?? defaultTableNameParser;\n\n if (tableToken && tableToken.value) {\n tableIdentifier = tableNameParser(tableToken);\n }\n\n let oo: CustomSuggestion[] = [];\n if (tableIdentifier) {\n const columns = await customProvider.columns?.resolve!(tableIdentifier);\n oo = columns\n ? columns.map<CustomSuggestion>((x) => ({\n label: x.name,\n insertText: x.completion ?? x.name,\n kind: CompletionItemKind.Field,\n sortText: CompletionItemPriority.High,\n detail: x.type,\n documentation: x.description,\n }))\n : [];\n }\n return [...o, ...oo];\n };\n }\n}\n\n/**\n * Initializes language specific registries that are treated as singletons\n */\nfunction initializeLanguageRegistries(id: string) {\n if (!LANGUAGES_CACHE.has(id)) {\n LANGUAGES_CACHE.set(id, {\n functions: new Registry(),\n operators: new Registry(),\n suggestionKinds: new Registry(initSuggestionsKindRegistry),\n positionResolvers: new Registry(initStatementPositionResolvers),\n macros: new Registry(),\n });\n }\n\n return LANGUAGES_CACHE.get(id)!;\n}\n"],"names":["id","_a"],"mappings":"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"}
1
+ {"version":3,"file":"SQLEditor.js","sources":["../../../../../src/components/SQLEditor/components/SQLEditor.tsx"],"sourcesContent":["import { CodeEditor, type Monaco, type monacoTypes } from '@grafana/ui';\nimport React, { useCallback, useEffect, useMemo, useRef } from 'react';\nimport { getStatementPosition } from '../standardSql/getStatementPosition';\nimport { getStandardSuggestions } from '../standardSql/getStandardSuggestions';\nimport { initSuggestionsKindRegistry, type SuggestionKindRegistryItem } from '../standardSql/suggestionsKindRegistry';\nimport {\n CompletionItemInsertTextRule,\n CompletionItemKind,\n CompletionItemPriority,\n type CustomSuggestion,\n type LanguageDefinition,\n type PositionContext,\n type SQLCompletionItemProvider,\n type StatementPosition,\n SuggestionKind,\n} from '../types';\nimport { getSuggestionKinds } from '../utils/getSuggestionKind';\nimport { linkedTokenBuilder } from '../utils/linkedTokenBuilder';\nimport { defaultTableNameParser, getTableToken } from '../utils/tokenUtils';\nimport { TRIGGER_SUGGEST } from '../utils/commands';\nimport { v4 } from 'uuid';\nimport { Registry } from '@grafana/data';\nimport {\n type FunctionsRegistryItem,\n type MacrosRegistryItem,\n type OperatorsRegistryItem,\n type StatementPositionResolversRegistryItem,\n type SuggestionsRegistryItem,\n} from '../standardSql/types';\nimport { initStandardSuggestions } from '../standardSql/standardSuggestionsRegistry';\nimport { initStatementPositionResolvers } from '../standardSql/statementPositionResolversRegistry';\nimport { sqlEditorLog } from '../utils/debugger';\nimport standardSQLLanguageDefinition from '../standardSql/definition';\nimport { getStandardSQLCompletionProvider } from '../standardSql/standardSQLCompletionItemProvider';\nimport { useLatestCallback } from '../hooks/useLatestCallback';\n\nconst STANDARD_SQL_LANGUAGE = 'sql';\n\ninterface SQLEditorProps {\n query: string;\n /**\n * Use for inspecting the query as it changes. I.e. for validation.\n */\n onChange?: (q: string, processQuery: boolean) => void;\n onBlur?: (text: string) => void;\n language?: LanguageDefinition;\n children?: (props: { formatQuery: () => void }) => React.ReactNode;\n width?: number;\n height?: number;\n}\n\ninterface LanguageRegistries {\n functions: Registry<FunctionsRegistryItem>;\n operators: Registry<OperatorsRegistryItem>;\n suggestionKinds: Registry<SuggestionKindRegistryItem>;\n positionResolvers: Registry<StatementPositionResolversRegistryItem>;\n macros: Registry<MacrosRegistryItem>;\n}\n\nconst LANGUAGES_CACHE = new Map<string, LanguageRegistries>();\nconst INSTANCE_CACHE = new Map<string, Registry<SuggestionsRegistryItem>>();\n\nexport const SQLEditor = ({\n children,\n onBlur,\n onChange,\n query,\n language = { id: STANDARD_SQL_LANGUAGE },\n width,\n height,\n}: SQLEditorProps) => {\n const monacoRef = useRef<monacoTypes.editor.IStandaloneCodeEditor | null>(null);\n const langUid = useRef<string>();\n const stableOnChange = useLatestCallback(onChange);\n\n // create unique language id for each SQLEditor instance\n const id = useMemo(() => {\n const uid = v4();\n const id = `${language.id}-${uid}`;\n langUid.current = id;\n return id;\n }, [language.id]);\n\n useEffect(() => {\n return () => {\n if (langUid.current) {\n INSTANCE_CACHE.delete(langUid.current);\n }\n sqlEditorLog(`Removing instance cache ${langUid.current}`, false, INSTANCE_CACHE);\n };\n }, []);\n\n const formatQuery = useCallback(() => {\n if (monacoRef.current) {\n monacoRef.current.getAction('editor.action.formatDocument').run();\n }\n }, []);\n\n const onSqlBlur = (text: string) => {\n stableOnChange && stableOnChange(text, false);\n onBlur && onBlur(text);\n };\n\n return (\n <div style={{ width }}>\n <CodeEditor\n height={height || '240px'}\n // -2px to compensate for borders width\n width={width ? `${width - 2}px` : undefined}\n language={id}\n value={query}\n onBlur={onSqlBlur}\n showMiniMap={false}\n showLineNumbers={true}\n // Using onEditorDidMount instead of onBeforeEditorMount to support Grafana < 8.2.x\n onEditorDidMount={(editor, m) => {\n monacoRef.current = editor;\n editor.onDidChangeModelContent((e) => {\n const text = editor.getValue();\n // Use ref to get the latest onChange callback, avoiding stale closures\n if (stableOnChange) {\n stableOnChange(text, false);\n }\n });\n\n editor.addCommand(m.KeyMod.CtrlCmd | m.KeyCode.Enter, () => {\n const text = editor.getValue();\n // Use ref to get the latest onChange callback, avoiding stale closures\n if (stableOnChange) {\n stableOnChange(text, true);\n }\n });\n\n editor.onKeyUp((e) => {\n // keyCode 84 is . (DOT)\n if (e.keyCode === 84) {\n editor.trigger(TRIGGER_SUGGEST.id, TRIGGER_SUGGEST.id, {});\n }\n });\n registerLanguageAndSuggestions(m, language, id);\n }}\n />\n {children && children({ formatQuery })}\n </div>\n );\n};\n\n// There's three ways to define Monaco language:\n// 1. Leave language.id empty or set it to 'sql'. This will load a standard sql language definition, including syntax highlighting and tokenization for\n// common Grafana entities such as macros and template variables\n// 2. Provide a custom language and load it via the async LanguageDefinition.loader callback\n// 3. Specify a language.id that exists in the Monaco language registry. A custom completion item provider can still be provided.\n// If not, the standard SQL completion item provider will be used. See available languages here: https://github.com/microsoft/monaco-editor/tree/main/src/basic-languages\n// If a custom language is specified, its LanguageDefinition will be merged with the LanguageDefinition for standard SQL. This allows the consumer to only\n// override parts of the LanguageDefinition, such as for example the completion item provider.\nconst resolveLanguage = (monaco: Monaco, languageDefinitionProp: LanguageDefinition): LanguageDefinition => {\n if (languageDefinitionProp?.id !== STANDARD_SQL_LANGUAGE && !languageDefinitionProp.loader) {\n sqlEditorLog(`Loading language '${languageDefinitionProp?.id}' from Monaco registry`, false);\n const allLangs = monaco.languages.getLanguages();\n const custom = allLangs.find(({ id }) => id === languageDefinitionProp?.id);\n if (!custom) {\n throw Error(`Unknown Monaco language ${languageDefinitionProp?.id}`);\n }\n\n return { completionProvider: getStandardSQLCompletionProvider, ...custom, ...languageDefinitionProp };\n }\n\n return {\n ...standardSQLLanguageDefinition,\n ...languageDefinitionProp,\n };\n};\n\nexport const registerLanguageAndSuggestions = async (monaco: Monaco, l: LanguageDefinition, lid: string) => {\n const languageDefinition = resolveLanguage(monaco, l);\n if (!languageDefinition.loader) {\n return;\n }\n const { language, conf } = await languageDefinition.loader(monaco);\n monaco.languages.register({ id: lid });\n monaco.languages.setMonarchTokensProvider(lid, { ...language });\n monaco.languages.setLanguageConfiguration(lid, { ...conf });\n\n if (languageDefinition.formatter) {\n monaco.languages.registerDocumentFormattingEditProvider(lid, {\n provideDocumentFormattingEdits: (model) => {\n const formatted = l.formatter?.(model.getValue());\n return [\n {\n range: model.getFullModelRange(),\n text: formatted || '',\n },\n ];\n },\n });\n }\n\n if (languageDefinition.completionProvider) {\n const customProvider = languageDefinition.completionProvider(monaco, language);\n extendStandardRegistries(l.id, lid, customProvider);\n const languageSuggestionsRegistries = LANGUAGES_CACHE.get(l.id)!;\n const instanceSuggestionsRegistry = INSTANCE_CACHE.get(lid)!;\n\n const completionProvider: monacoTypes.languages.CompletionItemProvider['provideCompletionItems'] = async (\n model,\n position,\n context,\n token\n ) => {\n const currentToken = linkedTokenBuilder(monaco, model, position, lid);\n const statementPosition = getStatementPosition(currentToken, languageSuggestionsRegistries.positionResolvers);\n const kind = getSuggestionKinds(statementPosition, languageSuggestionsRegistries.suggestionKinds);\n\n sqlEditorLog('Statement position', false, statementPosition);\n sqlEditorLog('Suggestion kinds', false, kind);\n\n const ctx: PositionContext = {\n position,\n currentToken,\n statementPosition,\n kind,\n range: monaco.Range.fromPositions(position),\n };\n\n const stdSuggestions = await getStandardSuggestions(monaco, currentToken, kind, ctx, instanceSuggestionsRegistry);\n\n return {\n suggestions: stdSuggestions,\n };\n };\n\n monaco.languages.registerCompletionItemProvider(lid, {\n ...customProvider,\n provideCompletionItems: completionProvider,\n });\n }\n};\n\nfunction extendStandardRegistries(id: string, lid: string, customProvider: SQLCompletionItemProvider) {\n if (!LANGUAGES_CACHE.has(id)) {\n initializeLanguageRegistries(id);\n }\n\n const languageRegistries = LANGUAGES_CACHE.get(id)!;\n\n if (!INSTANCE_CACHE.has(lid)) {\n INSTANCE_CACHE.set(\n lid,\n new Registry(\n initStandardSuggestions(languageRegistries.functions, languageRegistries.operators, languageRegistries.macros)\n )\n );\n }\n\n const instanceSuggestionsRegistry = INSTANCE_CACHE.get(lid)!;\n\n if (customProvider.supportedFunctions) {\n for (const func of customProvider.supportedFunctions()) {\n const exists = languageRegistries.functions.getIfExists(func.id);\n if (!exists) {\n languageRegistries.functions.register(func);\n }\n }\n }\n\n if (customProvider.supportedOperators) {\n for (const op of customProvider.supportedOperators()) {\n const exists = languageRegistries.operators.getIfExists(op.id);\n if (!exists) {\n languageRegistries.operators.register({ ...op, name: op.id });\n }\n }\n }\n\n if (customProvider.supportedMacros) {\n for (const macro of customProvider.supportedMacros()) {\n const exists = languageRegistries.macros.getIfExists(macro.id);\n if (!exists) {\n languageRegistries.macros.register({ ...macro, name: macro.id });\n }\n }\n }\n\n if (customProvider.customStatementPlacement) {\n for (const placement of customProvider.customStatementPlacement()) {\n const exists = languageRegistries.positionResolvers.getIfExists(placement.id);\n if (!exists) {\n languageRegistries.positionResolvers.register({\n ...placement,\n id: placement.id as StatementPosition,\n name: placement.id,\n });\n languageRegistries.suggestionKinds.register({\n id: placement.id as StatementPosition,\n name: placement.id,\n kind: [],\n });\n } else {\n // Allow extension to the built-in placement resolvers\n const origResolve = exists.resolve;\n exists.resolve = (...args) => {\n const ext = placement.resolve(...args);\n if (placement.overrideDefault) {\n return ext;\n }\n const orig = origResolve(...args);\n return orig || ext;\n };\n }\n }\n }\n\n if (customProvider.customSuggestionKinds) {\n for (const kind of customProvider.customSuggestionKinds()) {\n kind.applyTo?.forEach((applyTo) => {\n const exists = languageRegistries.suggestionKinds.getIfExists(applyTo);\n if (exists) {\n // avoid duplicates\n if (exists.kind.indexOf(kind.id as SuggestionKind) === -1) {\n exists.kind.push(kind.id as SuggestionKind);\n }\n }\n });\n\n if (kind.overrideDefault) {\n const stbBehavior = instanceSuggestionsRegistry.get(kind.id);\n if (stbBehavior !== undefined) {\n stbBehavior.suggestions = kind.suggestionsResolver;\n continue;\n }\n }\n\n instanceSuggestionsRegistry.register({\n id: kind.id as SuggestionKind,\n name: kind.id,\n suggestions: kind.suggestionsResolver,\n });\n }\n }\n\n if (customProvider.schemas) {\n const stbBehavior = instanceSuggestionsRegistry.get(SuggestionKind.Schemas);\n const s = stbBehavior.suggestions;\n stbBehavior.suggestions = async (ctx, m) => {\n const standardSchemas = await s(ctx, m);\n if (!customProvider.schemas) {\n return [...standardSchemas];\n }\n const customSchemas = await customProvider.schemas.resolve();\n const customSchemaCompletionItems = customSchemas.map((x) => ({\n label: x.name,\n insertText: `${x.completion ?? x.name}.`,\n command: TRIGGER_SUGGEST,\n kind: CompletionItemKind.Module, // it's nice to differentiate schemas from tables\n sortText: CompletionItemPriority.High,\n }));\n return [...standardSchemas, ...customSchemaCompletionItems];\n };\n }\n\n if (customProvider.tables) {\n const stbBehavior = instanceSuggestionsRegistry.get(SuggestionKind.Tables);\n const s = stbBehavior.suggestions;\n stbBehavior.suggestions = async (ctx, m) => {\n const o = await s(ctx, m);\n const tableToken = getTableToken(ctx.currentToken);\n const tableNameParser = customProvider.tables?.parseName ?? defaultTableNameParser;\n\n const tableIdentifier = tableNameParser(tableToken);\n\n const oo = ((await customProvider.tables?.resolve?.(tableIdentifier)) ?? []).map((x) => ({\n label: x.name,\n // if no custom completion is provided it's safe to move cursor further in the statement\n insertText: `${x.completion ?? x.name}${x.completion === x.name ? ' $0' : ''}`,\n insertTextRules: CompletionItemInsertTextRule.InsertAsSnippet,\n command: TRIGGER_SUGGEST,\n kind: CompletionItemKind.Field,\n sortText: CompletionItemPriority.MediumHigh,\n }));\n return [...o, ...oo];\n };\n }\n\n if (customProvider.columns) {\n const stbBehavior = instanceSuggestionsRegistry.get(SuggestionKind.Columns);\n const s = stbBehavior.suggestions;\n stbBehavior.suggestions = async (ctx, m) => {\n const o = await s(ctx, m);\n const tableToken = getTableToken(ctx.currentToken);\n let tableIdentifier;\n const tableNameParser = customProvider.tables?.parseName ?? defaultTableNameParser;\n\n if (tableToken && tableToken.value) {\n tableIdentifier = tableNameParser(tableToken);\n }\n\n let oo: CustomSuggestion[] = [];\n if (tableIdentifier) {\n const columns = await customProvider.columns?.resolve!(tableIdentifier);\n oo = columns\n ? columns.map<CustomSuggestion>((x) => ({\n label: x.name,\n insertText: x.completion ?? x.name,\n kind: CompletionItemKind.Field,\n sortText: CompletionItemPriority.High,\n detail: x.type,\n documentation: x.description,\n }))\n : [];\n }\n return [...o, ...oo];\n };\n }\n}\n\n/**\n * Initializes language specific registries that are treated as singletons\n */\nfunction initializeLanguageRegistries(id: string) {\n if (!LANGUAGES_CACHE.has(id)) {\n LANGUAGES_CACHE.set(id, {\n functions: new Registry(),\n operators: new Registry(),\n suggestionKinds: new Registry(initSuggestionsKindRegistry),\n positionResolvers: new Registry(initStatementPositionResolvers),\n macros: new Registry(),\n });\n }\n\n return LANGUAGES_CACHE.get(id)!;\n}\n"],"names":["id","_a"],"mappings":"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"}
@@ -7,7 +7,7 @@ function useLatestCallback(callback) {
7
7
  });
8
8
  const hasCallback = Boolean(callback);
9
9
  return useMemo(
10
- () => hasCallback ? ((...args) => ref.current(...args)) : void 0,
10
+ () => hasCallback ? (...args) => ref.current(...args) : undefined,
11
11
  [hasCallback]
12
12
  );
13
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useLatestCallback.js","sources":["../../../../../src/components/SQLEditor/hooks/useLatestCallback.ts"],"sourcesContent":["import { useRef, useEffect, useMemo } from 'react';\n\n/**\n * Returns a stable callback that always calls the latest version of the provided callback.\n * Useful for avoiding stale closures in imperative APIs like Monaco editor callbacks.\n *\n * @param callback The callback function that may change between renders (can be undefined)\n * @returns A stable callback reference that always calls the latest version, or undefined if no callback provided\n */\nexport function useLatestCallback<T extends (...args: any[]) => unknown>(callback: T | undefined): T | undefined {\n const ref = useRef(callback);\n\n useEffect(() => {\n ref.current = callback;\n });\n\n const hasCallback = Boolean(callback);\n\n return useMemo(\n () => (hasCallback ? (((...args: Parameters<T>) => ref.current!(...args)) as T) : undefined),\n [hasCallback]\n );\n}\n"],"names":[],"mappings":";;AASO,SAAS,kBAAyD,QAAA,EAAwC;AAC/G,EAAA,MAAM,GAAA,GAAM,OAAO,QAAQ,CAAA;AAE3B,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,GAAA,CAAI,OAAA,GAAU,QAAA;AAAA,EAChB,CAAC,CAAA;AAED,EAAA,MAAM,WAAA,GAAc,QAAQ,QAAQ,CAAA;AAEpC,EAAA,OAAO,OAAA;AAAA,IACL,MAAO,eAAgB,CAAA,GAAI,IAAA,KAAwB,IAAI,OAAA,CAAS,GAAG,IAAI,CAAA,IAAW,MAAA;AAAA,IAClF,CAAC,WAAW;AAAA,GACd;AACF;;;;"}
1
+ {"version":3,"file":"useLatestCallback.js","sources":["../../../../../src/components/SQLEditor/hooks/useLatestCallback.ts"],"sourcesContent":["import { useRef, useEffect, useMemo } from 'react';\n\n/**\n * Returns a stable callback that always calls the latest version of the provided callback.\n * Useful for avoiding stale closures in imperative APIs like Monaco editor callbacks.\n *\n * @param callback The callback function that may change between renders (can be undefined)\n * @returns A stable callback reference that always calls the latest version, or undefined if no callback provided\n */\nexport function useLatestCallback<T extends (...args: any[]) => unknown>(callback: T | undefined): T | undefined {\n const ref = useRef(callback);\n\n useEffect(() => {\n ref.current = callback;\n });\n\n const hasCallback = Boolean(callback);\n\n return useMemo(\n () => (hasCallback ? (((...args: Parameters<T>) => ref.current!(...args)) as T) : undefined),\n [hasCallback]\n );\n}\n"],"names":[],"mappings":";;AASO,SAAS,kBAAyD,QAAwC,EAAA;AAC/G,EAAM,MAAA,GAAA,GAAM,OAAO,QAAQ,CAAA;AAE3B,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,GAAA,CAAI,OAAU,GAAA,QAAA;AAAA,GACf,CAAA;AAED,EAAM,MAAA,WAAA,GAAc,QAAQ,QAAQ,CAAA;AAEpC,EAAO,OAAA,OAAA;AAAA,IACL,MAAO,cAAgB,CAAI,GAAA,IAAA,KAAwB,IAAI,OAAS,CAAA,GAAG,IAAI,CAAW,GAAA,SAAA;AAAA,IAClF,CAAC,WAAW;AAAA,GACd;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Monaco.js","sources":["../../../../../src/components/SQLEditor/mocks/Monaco.ts"],"sourcesContent":["import { type monacoTypes } from '@grafana/ui';\n\n// Stub for the Monaco instance. Only implements the parts that are used in cloudwatch sql\nconst getMonacoMock: (\n testData: Map<string, Array<Array<Pick<monacoTypes.Token, 'language' | 'offset' | 'type'>>>>\n) => any = (testData) => ({\n editor: {\n tokenize: (value: string, languageId: string) => testData.get(value),\n },\n Range: {\n containsPosition: (range: monacoTypes.IRange, position: monacoTypes.IPosition) => {\n return (\n position.lineNumber >= range.startLineNumber &&\n position.lineNumber <= range.endLineNumber &&\n position.column >= range.startColumn &&\n position.column <= range.endColumn\n );\n },\n },\n languages: {\n CompletionItemKind: { Snippet: 2, Function: 1, Keyword: 3 },\n CompletionItemInsertTextRule: { InsertAsSnippet: 2 },\n },\n});\n\nexport { getMonacoMock };\n"],"names":[],"mappings":";;AAGA,MAAM,aAAA,GAEK,CAAC,QAAA,MAAc;AAAA,EACxB,MAAA,EAAQ;AAAA,IACN,UAAU,CAAC,KAAA,EAAe,UAAA,KAAuB,QAAA,CAAS,IAAI,KAAK;AAAA,GACrE;AAAA,EACA,KAAA,EAAO;AAAA,IACL,gBAAA,EAAkB,CAAC,KAAA,EAA2B,QAAA,KAAoC;AAChF,MAAA,OACE,QAAA,CAAS,UAAA,IAAc,KAAA,CAAM,eAAA,IAC7B,SAAS,UAAA,IAAc,KAAA,CAAM,aAAA,IAC7B,QAAA,CAAS,MAAA,IAAU,KAAA,CAAM,WAAA,IACzB,QAAA,CAAS,UAAU,KAAA,CAAM,SAAA;AAAA,IAE7B;AAAA,GACF;AAAA,EACA,SAAA,EAAW;AAAA,IACT,oBAAoB,EAAE,OAAA,EAAS,GAAG,QAAA,EAAU,CAAA,EAAG,SAAS,CAAA,EAAE;AAAA,IAC1D,4BAAA,EAA8B,EAAE,eAAA,EAAiB,CAAA;AAAE;AAEvD,CAAA;;;;"}
1
+ {"version":3,"file":"Monaco.js","sources":["../../../../../src/components/SQLEditor/mocks/Monaco.ts"],"sourcesContent":["import { type monacoTypes } from '@grafana/ui';\n\n// Stub for the Monaco instance. Only implements the parts that are used in cloudwatch sql\nconst getMonacoMock: (\n testData: Map<string, Array<Array<Pick<monacoTypes.Token, 'language' | 'offset' | 'type'>>>>\n) => any = (testData) => ({\n editor: {\n tokenize: (value: string, languageId: string) => testData.get(value),\n },\n Range: {\n containsPosition: (range: monacoTypes.IRange, position: monacoTypes.IPosition) => {\n return (\n position.lineNumber >= range.startLineNumber &&\n position.lineNumber <= range.endLineNumber &&\n position.column >= range.startColumn &&\n position.column <= range.endColumn\n );\n },\n },\n languages: {\n CompletionItemKind: { Snippet: 2, Function: 1, Keyword: 3 },\n CompletionItemInsertTextRule: { InsertAsSnippet: 2 },\n },\n});\n\nexport { getMonacoMock };\n"],"names":[],"mappings":";;AAGM,MAAA,aAAA,GAEK,CAAC,QAAc,MAAA;AAAA,EACxB,MAAQ,EAAA;AAAA,IACN,UAAU,CAAC,KAAA,EAAe,UAAuB,KAAA,QAAA,CAAS,IAAI,KAAK;AAAA,GACrE;AAAA,EACA,KAAO,EAAA;AAAA,IACL,gBAAA,EAAkB,CAAC,KAAA,EAA2B,QAAoC,KAAA;AAChF,MAAA,OACE,QAAS,CAAA,UAAA,IAAc,KAAM,CAAA,eAAA,IAC7B,SAAS,UAAc,IAAA,KAAA,CAAM,aAC7B,IAAA,QAAA,CAAS,MAAU,IAAA,KAAA,CAAM,WACzB,IAAA,QAAA,CAAS,UAAU,KAAM,CAAA,SAAA;AAAA;AAE7B,GACF;AAAA,EACA,SAAW,EAAA;AAAA,IACT,oBAAoB,EAAE,OAAA,EAAS,GAAG,QAAU,EAAA,CAAA,EAAG,SAAS,CAAE,EAAA;AAAA,IAC1D,4BAAA,EAA8B,EAAE,eAAA,EAAiB,CAAE;AAAA;AAEvD,CAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"TextModel.js","sources":["../../../../../src/components/SQLEditor/mocks/TextModel.ts"],"sourcesContent":["import { type monacoTypes } from '@grafana/ui';\n\n// Stub for monacoTypes.editor.ITextModel\nfunction TextModel(value: string) {\n return {\n getValue: function (eol?: monacoTypes.editor.EndOfLinePreference, preserveBOM?: boolean): string {\n return value;\n },\n getValueInRange: function (range: monacoTypes.IRange, eol?: monacoTypes.editor.EndOfLinePreference): string {\n const lines = value.split('\\n');\n const line = lines[range.startLineNumber - 1];\n return line.trim().slice(range.startColumn === 0 ? 0 : range.startColumn - 1, range.endColumn - 1);\n },\n getLineLength: function (lineNumber: number): number {\n const lines = value.split('\\n');\n return lines[lineNumber - 1].trim().length;\n },\n };\n}\n\nexport { TextModel };\n"],"names":[],"mappings":";;AAGA,SAAS,UAAU,KAAA,EAAe;AAChC,EAAA,OAAO;AAAA,IACL,QAAA,EAAU,SAAU,GAAA,EAA8C,WAAA,EAA+B;AAC/F,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAAA,IACA,eAAA,EAAiB,SAAU,KAAA,EAA2B,GAAA,EAAsD;AAC1G,MAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,KAAA,CAAM,IAAI,CAAA;AAC9B,MAAA,MAAM,IAAA,GAAO,KAAA,CAAM,KAAA,CAAM,eAAA,GAAkB,CAAC,CAAA;AAC5C,MAAA,OAAO,IAAA,CAAK,IAAA,EAAK,CAAE,KAAA,CAAM,KAAA,CAAM,WAAA,KAAgB,CAAA,GAAI,CAAA,GAAI,KAAA,CAAM,WAAA,GAAc,CAAA,EAAG,KAAA,CAAM,YAAY,CAAC,CAAA;AAAA,IACnG,CAAA;AAAA,IACA,aAAA,EAAe,SAAU,UAAA,EAA4B;AACnD,MAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,KAAA,CAAM,IAAI,CAAA;AAC9B,MAAA,OAAO,KAAA,CAAM,UAAA,GAAa,CAAC,CAAA,CAAE,MAAK,CAAE,MAAA;AAAA,IACtC;AAAA,GACF;AACF;;;;"}
1
+ {"version":3,"file":"TextModel.js","sources":["../../../../../src/components/SQLEditor/mocks/TextModel.ts"],"sourcesContent":["import { type monacoTypes } from '@grafana/ui';\n\n// Stub for monacoTypes.editor.ITextModel\nfunction TextModel(value: string) {\n return {\n getValue: function (eol?: monacoTypes.editor.EndOfLinePreference, preserveBOM?: boolean): string {\n return value;\n },\n getValueInRange: function (range: monacoTypes.IRange, eol?: monacoTypes.editor.EndOfLinePreference): string {\n const lines = value.split('\\n');\n const line = lines[range.startLineNumber - 1];\n return line.trim().slice(range.startColumn === 0 ? 0 : range.startColumn - 1, range.endColumn - 1);\n },\n getLineLength: function (lineNumber: number): number {\n const lines = value.split('\\n');\n return lines[lineNumber - 1].trim().length;\n },\n };\n}\n\nexport { TextModel };\n"],"names":[],"mappings":";;AAGA,SAAS,UAAU,KAAe,EAAA;AAChC,EAAO,OAAA;AAAA,IACL,QAAA,EAAU,SAAU,GAAA,EAA8C,WAA+B,EAAA;AAC/F,MAAO,OAAA,KAAA;AAAA,KACT;AAAA,IACA,eAAA,EAAiB,SAAU,KAAA,EAA2B,GAAsD,EAAA;AAC1G,MAAM,MAAA,KAAA,GAAQ,KAAM,CAAA,KAAA,CAAM,IAAI,CAAA;AAC9B,MAAA,MAAM,IAAO,GAAA,KAAA,CAAM,KAAM,CAAA,eAAA,GAAkB,CAAC,CAAA;AAC5C,MAAA,OAAO,IAAK,CAAA,IAAA,EAAO,CAAA,KAAA,CAAM,KAAM,CAAA,WAAA,KAAgB,CAAI,GAAA,CAAA,GAAI,KAAM,CAAA,WAAA,GAAc,CAAG,EAAA,KAAA,CAAM,YAAY,CAAC,CAAA;AAAA,KACnG;AAAA,IACA,aAAA,EAAe,SAAU,UAA4B,EAAA;AACnD,MAAM,MAAA,KAAA,GAAQ,KAAM,CAAA,KAAA,CAAM,IAAI,CAAA;AAC9B,MAAA,OAAO,KAAM,CAAA,UAAA,GAAa,CAAC,CAAA,CAAE,MAAO,CAAA,MAAA;AAAA;AACtC,GACF;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"multiLineFullQuery.js","sources":["../../../../../../src/components/SQLEditor/mocks/queries/multiLineFullQuery.ts"],"sourcesContent":["import { type TestQueryModel } from '../../test-utils/types';\n\nexport const multiLineFullQuery: TestQueryModel = {\n query: `SELECT column1,\n FROM table1\n\n WHERE column1 = \"value1\"\n GROUP BY column1 ORDER BY column1 DESC\n LIMIT 10;`,\n tokens: [\n [\n {\n offset: 0,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 6,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 7,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 14,\n type: 'delimiter.sql',\n language: 'sql',\n },\n {\n offset: 15,\n type: 'white.sql',\n language: 'sql',\n },\n ],\n [\n {\n offset: 0,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 4,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 5,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 11,\n type: 'white.sql',\n language: 'sql',\n },\n ],\n [\n {\n offset: 0,\n type: 'white.sql',\n language: 'sql',\n },\n ],\n [\n {\n offset: 0,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 5,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 6,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 13,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 14,\n type: 'operator.sql',\n language: 'sql',\n },\n {\n offset: 15,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 16,\n type: 'identifier.quote.sql',\n language: 'sql',\n },\n {\n offset: 17,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 23,\n type: 'identifier.quote.sql',\n language: 'sql',\n },\n {\n offset: 24,\n type: 'white.sql',\n language: 'sql',\n },\n ],\n [\n {\n offset: 0,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 5,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 6,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 8,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 9,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 16,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 17,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 22,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 23,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 25,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 26,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 33,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 34,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 38,\n type: 'white.sql',\n language: 'sql',\n },\n ],\n [\n {\n offset: 0,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 5,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 6,\n type: 'number.sql',\n language: 'sql',\n },\n {\n offset: 8,\n type: 'delimiter.sql',\n language: 'sql',\n },\n ],\n ],\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"multiLineFullQuery.js","sources":["../../../../../../src/components/SQLEditor/mocks/queries/multiLineFullQuery.ts"],"sourcesContent":["import { type TestQueryModel } from '../../test-utils/types';\n\nexport const multiLineFullQuery: TestQueryModel = {\n query: `SELECT column1,\n FROM table1\n\n WHERE column1 = \"value1\"\n GROUP BY column1 ORDER BY column1 DESC\n LIMIT 10;`,\n tokens: [\n [\n {\n offset: 0,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 6,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 7,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 14,\n type: 'delimiter.sql',\n language: 'sql',\n },\n {\n offset: 15,\n type: 'white.sql',\n language: 'sql',\n },\n ],\n [\n {\n offset: 0,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 4,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 5,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 11,\n type: 'white.sql',\n language: 'sql',\n },\n ],\n [\n {\n offset: 0,\n type: 'white.sql',\n language: 'sql',\n },\n ],\n [\n {\n offset: 0,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 5,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 6,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 13,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 14,\n type: 'operator.sql',\n language: 'sql',\n },\n {\n offset: 15,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 16,\n type: 'identifier.quote.sql',\n language: 'sql',\n },\n {\n offset: 17,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 23,\n type: 'identifier.quote.sql',\n language: 'sql',\n },\n {\n offset: 24,\n type: 'white.sql',\n language: 'sql',\n },\n ],\n [\n {\n offset: 0,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 5,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 6,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 8,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 9,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 16,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 17,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 22,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 23,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 25,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 26,\n type: 'identifier.sql',\n language: 'sql',\n },\n {\n offset: 33,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 34,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 38,\n type: 'white.sql',\n language: 'sql',\n },\n ],\n [\n {\n offset: 0,\n type: 'keyword.sql',\n language: 'sql',\n },\n {\n offset: 5,\n type: 'white.sql',\n language: 'sql',\n },\n {\n offset: 6,\n type: 'number.sql',\n language: 'sql',\n },\n {\n offset: 8,\n type: 'delimiter.sql',\n language: 'sql',\n },\n ],\n ],\n};\n"],"names":[],"mappings":"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"}