@grafana/plugin-ui 0.15.0 → 0.16.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 (285) hide show
  1. package/README.md +33 -0
  2. package/dist/cjs/index.cjs +16178 -5188
  3. package/dist/cjs/index.cjs.map +1 -1
  4. package/dist/cjs/index.d.cts +387 -1
  5. package/dist/esm/_virtual/index.js +3 -5
  6. package/dist/esm/_virtual/index.js.map +1 -1
  7. package/dist/esm/async-query-data/DatasourceWithAsyncBackend.js +1 -1
  8. package/dist/esm/async-query-data/RunQueryButtons.js +5 -5
  9. package/dist/esm/async-query-data/RunQueryButtons.js.map +1 -1
  10. package/dist/esm/components/ConfigEditor/AdvancedSettings/AdvancedHttpSettings.js +1 -1
  11. package/dist/esm/components/ConfigEditor/Auth/Auth.js +1 -1
  12. package/dist/esm/components/ConfigEditor/Auth/auth-method/AuthMethodSettings.js +4 -4
  13. package/dist/esm/components/ConfigEditor/Auth/auth-method/AuthMethodSettings.js.map +1 -1
  14. package/dist/esm/components/ConfigEditor/Auth/auth-method/BasicAuth.js +1 -1
  15. package/dist/esm/components/ConfigEditor/Auth/custom-headers/CustomHeader.js +1 -1
  16. package/dist/esm/components/ConfigEditor/Auth/custom-headers/CustomHeaders.js +3 -3
  17. package/dist/esm/components/ConfigEditor/Auth/custom-headers/CustomHeaders.js.map +1 -1
  18. package/dist/esm/components/ConfigEditor/Auth/tls/SelfSignedCertificate.js +1 -1
  19. package/dist/esm/components/ConfigEditor/Auth/tls/SkipTLSVerification.js +1 -1
  20. package/dist/esm/components/ConfigEditor/Auth/tls/TLSClientAuth.js +1 -1
  21. package/dist/esm/components/ConfigEditor/Auth/tls/TLSSettings.js +1 -1
  22. package/dist/esm/components/ConfigEditor/Auth/tls/TLSSettingsSection.js +1 -1
  23. package/dist/esm/components/ConfigEditor/Auth/types.js +1 -1
  24. package/dist/esm/components/ConfigEditor/Auth/utils.js +1 -1
  25. package/dist/esm/components/ConfigEditor/ConfigSection/ConfigDescriptionLink.js +1 -1
  26. package/dist/esm/components/ConfigEditor/ConfigSection/ConfigSection.js +1 -1
  27. package/dist/esm/components/ConfigEditor/ConfigSection/ConfigSubSection.js +1 -1
  28. package/dist/esm/components/ConfigEditor/ConfigSection/GenericConfigSection.js +2 -2
  29. package/dist/esm/components/ConfigEditor/ConfigSection/GenericConfigSection.js.map +1 -1
  30. package/dist/esm/components/ConfigEditor/Connection/ConnectionSettings.js +1 -1
  31. package/dist/esm/components/ConfigEditor/DataSourceDescription.js +1 -1
  32. package/dist/esm/components/ConfigEditor/SecureSocksProxyToggle.js +1 -1
  33. package/dist/esm/components/CustomHeadersSettings/CustomHeadersSettings.js +2 -2
  34. package/dist/esm/components/CustomHeadersSettings/CustomHeadersSettings.js.map +1 -1
  35. package/dist/esm/components/DataLinks/DataLink.js +3 -3
  36. package/dist/esm/components/DataLinks/DataLink.js.map +1 -1
  37. package/dist/esm/components/DataLinks/DataLinks.js +1 -1
  38. package/dist/esm/components/DataSourcePicker/DataSourcePicker.js +2 -2
  39. package/dist/esm/components/DataSourcePicker/DataSourcePicker.js.map +1 -1
  40. package/dist/esm/components/DatePicker/DatePicker.js +3 -3
  41. package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
  42. package/dist/esm/components/DatePickerWithInput/DatePickerWithInput.js +2 -2
  43. package/dist/esm/components/DatePickerWithInput/DatePickerWithInput.js.map +1 -1
  44. package/dist/esm/components/DebounceInput/DebounceInput.js +4 -4
  45. package/dist/esm/components/DebounceInput/DebounceInput.js.map +1 -1
  46. package/dist/esm/components/Plugins/PluginSignatureBadge.js +1 -1
  47. package/dist/esm/components/QueryEditor/AccessoryButton.js +1 -1
  48. package/dist/esm/components/QueryEditor/CatalogSelector.js +5 -5
  49. package/dist/esm/components/QueryEditor/CatalogSelector.js.map +1 -1
  50. package/dist/esm/components/QueryEditor/ConfirmModal.js +3 -3
  51. package/dist/esm/components/QueryEditor/ConfirmModal.js.map +1 -1
  52. package/dist/esm/components/QueryEditor/DatasetSelector.js +2 -2
  53. package/dist/esm/components/QueryEditor/DatasetSelector.js.map +1 -1
  54. package/dist/esm/components/QueryEditor/EditorField.js +1 -1
  55. package/dist/esm/components/QueryEditor/EditorFieldGroup.js +1 -1
  56. package/dist/esm/components/QueryEditor/EditorHeader.js +1 -1
  57. package/dist/esm/components/QueryEditor/EditorList.js +2 -2
  58. package/dist/esm/components/QueryEditor/EditorList.js.map +1 -1
  59. package/dist/esm/components/QueryEditor/EditorRow.js +1 -1
  60. package/dist/esm/components/QueryEditor/EditorRows.js +1 -1
  61. package/dist/esm/components/QueryEditor/EditorStack.js +1 -1
  62. package/dist/esm/components/QueryEditor/EditorSwitch.js +1 -1
  63. package/dist/esm/components/QueryEditor/FlexItem.js +1 -1
  64. package/dist/esm/components/QueryEditor/InlineSelect.js +2 -2
  65. package/dist/esm/components/QueryEditor/InlineSelect.js.map +1 -1
  66. package/dist/esm/components/QueryEditor/InputGroup.js +4 -4
  67. package/dist/esm/components/QueryEditor/InputGroup.js.map +1 -1
  68. package/dist/esm/components/QueryEditor/QueryEditor.js +6 -6
  69. package/dist/esm/components/QueryEditor/QueryEditor.js.map +1 -1
  70. package/dist/esm/components/QueryEditor/QueryHeader.js +4 -4
  71. package/dist/esm/components/QueryEditor/QueryHeader.js.map +1 -1
  72. package/dist/esm/components/QueryEditor/RunQueryButton.js +1 -1
  73. package/dist/esm/components/QueryEditor/Space.js +1 -1
  74. package/dist/esm/components/QueryEditor/TableSelector.js +1 -1
  75. package/dist/esm/components/QueryEditor/query-editor-raw/QueryEditorRaw.js +4 -4
  76. package/dist/esm/components/QueryEditor/query-editor-raw/QueryEditorRaw.js.map +1 -1
  77. package/dist/esm/components/QueryEditor/query-editor-raw/QueryToolbox.js +3 -3
  78. package/dist/esm/components/QueryEditor/query-editor-raw/QueryToolbox.js.map +1 -1
  79. package/dist/esm/components/QueryEditor/query-editor-raw/QueryValidator.js +5 -5
  80. package/dist/esm/components/QueryEditor/query-editor-raw/QueryValidator.js.map +1 -1
  81. package/dist/esm/components/QueryEditor/query-editor-raw/RawEditor.js +3 -3
  82. package/dist/esm/components/QueryEditor/query-editor-raw/RawEditor.js.map +1 -1
  83. package/dist/esm/components/QueryEditor/types.js +1 -1
  84. package/dist/esm/components/QueryEditor/utils/useSqlChange.js +2 -2
  85. package/dist/esm/components/QueryEditor/utils/useSqlChange.js.map +1 -1
  86. package/dist/esm/components/QueryEditor/visual-query-builder/AwesomeQueryBuilder.js +1 -1
  87. package/dist/esm/components/QueryEditor/visual-query-builder/EditorField.js +1 -1
  88. package/dist/esm/components/QueryEditor/visual-query-builder/EditorRow.js +1 -1
  89. package/dist/esm/components/QueryEditor/visual-query-builder/EditorRows.js +1 -1
  90. package/dist/esm/components/QueryEditor/visual-query-builder/GroupByRow.js +2 -2
  91. package/dist/esm/components/QueryEditor/visual-query-builder/GroupByRow.js.map +1 -1
  92. package/dist/esm/components/QueryEditor/visual-query-builder/OrderByRow.js +5 -5
  93. package/dist/esm/components/QueryEditor/visual-query-builder/OrderByRow.js.map +1 -1
  94. package/dist/esm/components/QueryEditor/visual-query-builder/Preview.js +1 -1
  95. package/dist/esm/components/QueryEditor/visual-query-builder/SQLGroupByRow.js +1 -1
  96. package/dist/esm/components/QueryEditor/visual-query-builder/SQLOrderByRow.js +1 -1
  97. package/dist/esm/components/QueryEditor/visual-query-builder/SQLSelectRow.js +1 -1
  98. package/dist/esm/components/QueryEditor/visual-query-builder/SQLWhereRow.js +1 -1
  99. package/dist/esm/components/QueryEditor/visual-query-builder/SelectRow.js +5 -5
  100. package/dist/esm/components/QueryEditor/visual-query-builder/SelectRow.js.map +1 -1
  101. package/dist/esm/components/QueryEditor/visual-query-builder/VisualEditor.js +1 -1
  102. package/dist/esm/components/QueryEditor/visual-query-builder/WhereRow.js +6 -6
  103. package/dist/esm/components/QueryEditor/visual-query-builder/WhereRow.js.map +1 -1
  104. package/dist/esm/components/QueryEditorRow/QueryEditorRow.js +1 -1
  105. package/dist/esm/components/SQLEditor/components/SQLEditor.js +6 -6
  106. package/dist/esm/components/SQLEditor/components/SQLEditor.js.map +1 -1
  107. package/dist/esm/components/SQLEditor/hooks/useLatestCallback.js +4 -4
  108. package/dist/esm/components/SQLEditor/hooks/useLatestCallback.js.map +1 -1
  109. package/dist/esm/components/Segment/Segment.js +4 -4
  110. package/dist/esm/components/Segment/Segment.js.map +1 -1
  111. package/dist/esm/components/VisualQueryBuilder/components/LabelFilterItem.js +5 -5
  112. package/dist/esm/components/VisualQueryBuilder/components/LabelFilterItem.js.map +1 -1
  113. package/dist/esm/components/VisualQueryBuilder/components/LabelFilters.js +3 -3
  114. package/dist/esm/components/VisualQueryBuilder/components/LabelFilters.js.map +1 -1
  115. package/dist/esm/components/VisualQueryBuilder/components/OperationEditor.js +1 -1
  116. package/dist/esm/components/VisualQueryBuilder/components/OperationEditorBody.js +4 -4
  117. package/dist/esm/components/VisualQueryBuilder/components/OperationEditorBody.js.map +1 -1
  118. package/dist/esm/components/VisualQueryBuilder/components/OperationExplainedBox.js +1 -1
  119. package/dist/esm/components/VisualQueryBuilder/components/OperationHeader.js +3 -3
  120. package/dist/esm/components/VisualQueryBuilder/components/OperationHeader.js.map +1 -1
  121. package/dist/esm/components/VisualQueryBuilder/components/OperationInfoButton.js +3 -3
  122. package/dist/esm/components/VisualQueryBuilder/components/OperationInfoButton.js.map +1 -1
  123. package/dist/esm/components/VisualQueryBuilder/components/OperationList.js +2 -2
  124. package/dist/esm/components/VisualQueryBuilder/components/OperationList.js.map +1 -1
  125. package/dist/esm/components/VisualQueryBuilder/components/OperationListExplained.js +1 -1
  126. package/dist/esm/components/VisualQueryBuilder/components/OperationParamEditor.js +1 -1
  127. package/dist/esm/components/VisualQueryBuilder/components/OperationsEditorRow.js +1 -1
  128. package/dist/esm/components/VisualQueryBuilder/components/QueryBuilderHints.js +2 -2
  129. package/dist/esm/components/VisualQueryBuilder/components/QueryBuilderHints.js.map +1 -1
  130. package/dist/esm/components/VisualQueryBuilder/components/QueryEditorModeToggle.js +1 -1
  131. package/dist/esm/components/VisualQueryBuilder/components/QueryHeaderSwitch.js +2 -2
  132. package/dist/esm/components/VisualQueryBuilder/components/QueryHeaderSwitch.js.map +1 -1
  133. package/dist/esm/components/VisualQueryBuilder/components/QueryOptionGroup.js +1 -1
  134. package/dist/esm/components/VisualQueryBuilder/components/RawQuery.js +1 -1
  135. package/dist/esm/components/VisualQueryBuilder/types.js +1 -1
  136. package/dist/esm/hooks/useDebounce.js +3 -3
  137. package/dist/esm/hooks/useDebounce.js.map +1 -1
  138. package/dist/esm/index.d.ts +387 -1
  139. package/dist/esm/index.js +2 -0
  140. package/dist/esm/index.js.map +1 -1
  141. package/dist/esm/schema/registry/alertmanager.schema.json.js +77 -0
  142. package/dist/esm/schema/registry/alertmanager.schema.json.js.map +1 -0
  143. package/dist/esm/schema/registry/cloudwatch.schema.json.js +384 -0
  144. package/dist/esm/schema/registry/cloudwatch.schema.json.js.map +1 -0
  145. package/dist/esm/schema/registry/elasticsearch.schema.json.js +287 -0
  146. package/dist/esm/schema/registry/elasticsearch.schema.json.js.map +1 -0
  147. package/dist/esm/schema/registry/grafana-amazonprometheus-datasource.schema.json.js +166 -0
  148. package/dist/esm/schema/registry/grafana-amazonprometheus-datasource.schema.json.js.map +1 -0
  149. package/dist/esm/schema/registry/grafana-appdynamics-datasource.schema.json.js +145 -0
  150. package/dist/esm/schema/registry/grafana-appdynamics-datasource.schema.json.js.map +1 -0
  151. package/dist/esm/schema/registry/grafana-astradb-datasource.schema.json.js +123 -0
  152. package/dist/esm/schema/registry/grafana-astradb-datasource.schema.json.js.map +1 -0
  153. package/dist/esm/schema/registry/grafana-athena-datasource.schema.json.js +158 -0
  154. package/dist/esm/schema/registry/grafana-athena-datasource.schema.json.js.map +1 -0
  155. package/dist/esm/schema/registry/grafana-azure-data-explorer-datasource.schema.json.js +204 -0
  156. package/dist/esm/schema/registry/grafana-azure-data-explorer-datasource.schema.json.js.map +1 -0
  157. package/dist/esm/schema/registry/grafana-azure-monitor-datasource.schema.json.js +294 -0
  158. package/dist/esm/schema/registry/grafana-azure-monitor-datasource.schema.json.js.map +1 -0
  159. package/dist/esm/schema/registry/grafana-azuredevops-datasource.schema.json.js +101 -0
  160. package/dist/esm/schema/registry/grafana-azuredevops-datasource.schema.json.js.map +1 -0
  161. package/dist/esm/schema/registry/grafana-azureprometheus-datasource.schema.json.js +125 -0
  162. package/dist/esm/schema/registry/grafana-azureprometheus-datasource.schema.json.js.map +1 -0
  163. package/dist/esm/schema/registry/grafana-bigquery-datasource.schema.json.js +508 -0
  164. package/dist/esm/schema/registry/grafana-bigquery-datasource.schema.json.js.map +1 -0
  165. package/dist/esm/schema/registry/grafana-clickhouse-datasource.schema.json.js +1400 -0
  166. package/dist/esm/schema/registry/grafana-clickhouse-datasource.schema.json.js.map +1 -0
  167. package/dist/esm/schema/registry/grafana-cockroachdb-datasource.schema.json.js +302 -0
  168. package/dist/esm/schema/registry/grafana-cockroachdb-datasource.schema.json.js.map +1 -0
  169. package/dist/esm/schema/registry/grafana-databricks-datasource.schema.json.js +291 -0
  170. package/dist/esm/schema/registry/grafana-databricks-datasource.schema.json.js.map +1 -0
  171. package/dist/esm/schema/registry/grafana-datadog-datasource.schema.json.js +155 -0
  172. package/dist/esm/schema/registry/grafana-datadog-datasource.schema.json.js.map +1 -0
  173. package/dist/esm/schema/registry/grafana-dynatrace-datasource.schema.json.js +179 -0
  174. package/dist/esm/schema/registry/grafana-dynatrace-datasource.schema.json.js.map +1 -0
  175. package/dist/esm/schema/registry/grafana-falconlogscale-datasource.schema.json.js +134 -0
  176. package/dist/esm/schema/registry/grafana-falconlogscale-datasource.schema.json.js.map +1 -0
  177. package/dist/esm/schema/registry/grafana-github-datasource.schema.json.js +156 -0
  178. package/dist/esm/schema/registry/grafana-github-datasource.schema.json.js.map +1 -0
  179. package/dist/esm/schema/registry/grafana-gitlab-datasource.schema.json.js +84 -0
  180. package/dist/esm/schema/registry/grafana-gitlab-datasource.schema.json.js.map +1 -0
  181. package/dist/esm/schema/registry/grafana-googlesheets-datasource.schema.json.js +231 -0
  182. package/dist/esm/schema/registry/grafana-googlesheets-datasource.schema.json.js.map +1 -0
  183. package/dist/esm/schema/registry/grafana-honeycomb-datasource.schema.json.js +87 -0
  184. package/dist/esm/schema/registry/grafana-honeycomb-datasource.schema.json.js.map +1 -0
  185. package/dist/esm/schema/registry/grafana-iot-sitewise-datasource.schema.json.js +159 -0
  186. package/dist/esm/schema/registry/grafana-iot-sitewise-datasource.schema.json.js.map +1 -0
  187. package/dist/esm/schema/registry/grafana-jira-datasource.schema.json.js +188 -0
  188. package/dist/esm/schema/registry/grafana-jira-datasource.schema.json.js.map +1 -0
  189. package/dist/esm/schema/registry/grafana-looker-datasource.schema.json.js +82 -0
  190. package/dist/esm/schema/registry/grafana-looker-datasource.schema.json.js.map +1 -0
  191. package/dist/esm/schema/registry/grafana-mongodb-datasource.schema.json.js +278 -0
  192. package/dist/esm/schema/registry/grafana-mongodb-datasource.schema.json.js.map +1 -0
  193. package/dist/esm/schema/registry/grafana-mqtt-datasource.schema.json.js +168 -0
  194. package/dist/esm/schema/registry/grafana-mqtt-datasource.schema.json.js.map +1 -0
  195. package/dist/esm/schema/registry/grafana-newrelic-datasource.schema.json.js +129 -0
  196. package/dist/esm/schema/registry/grafana-newrelic-datasource.schema.json.js.map +1 -0
  197. package/dist/esm/schema/registry/grafana-odbc-datasource.schema.json.js +56 -0
  198. package/dist/esm/schema/registry/grafana-odbc-datasource.schema.json.js.map +1 -0
  199. package/dist/esm/schema/registry/grafana-opensearch-datasource.schema.json.js +212 -0
  200. package/dist/esm/schema/registry/grafana-opensearch-datasource.schema.json.js.map +1 -0
  201. package/dist/esm/schema/registry/grafana-oracle-datasource.schema.json.js +186 -0
  202. package/dist/esm/schema/registry/grafana-oracle-datasource.schema.json.js.map +1 -0
  203. package/dist/esm/schema/registry/grafana-pagerduty-datasource.schema.json.js +85 -0
  204. package/dist/esm/schema/registry/grafana-pagerduty-datasource.schema.json.js.map +1 -0
  205. package/dist/esm/schema/registry/grafana-postgresql-datasource.schema.json.js +411 -0
  206. package/dist/esm/schema/registry/grafana-postgresql-datasource.schema.json.js.map +1 -0
  207. package/dist/esm/schema/registry/grafana-pyroscope-datasource.schema.json.js +41 -0
  208. package/dist/esm/schema/registry/grafana-pyroscope-datasource.schema.json.js.map +1 -0
  209. package/dist/esm/schema/registry/grafana-redshift-datasource.schema.json.js +201 -0
  210. package/dist/esm/schema/registry/grafana-redshift-datasource.schema.json.js.map +1 -0
  211. package/dist/esm/schema/registry/grafana-salesforce-datasource.schema.json.js +201 -0
  212. package/dist/esm/schema/registry/grafana-salesforce-datasource.schema.json.js.map +1 -0
  213. package/dist/esm/schema/registry/grafana-saphana-datasource.schema.json.js +208 -0
  214. package/dist/esm/schema/registry/grafana-saphana-datasource.schema.json.js.map +1 -0
  215. package/dist/esm/schema/registry/grafana-sentry-datasource.schema.json.js +94 -0
  216. package/dist/esm/schema/registry/grafana-sentry-datasource.schema.json.js.map +1 -0
  217. package/dist/esm/schema/registry/grafana-servicenow-datasource.schema.json.js +179 -0
  218. package/dist/esm/schema/registry/grafana-servicenow-datasource.schema.json.js.map +1 -0
  219. package/dist/esm/schema/registry/grafana-snowflake-datasource.schema.json.js +304 -0
  220. package/dist/esm/schema/registry/grafana-snowflake-datasource.schema.json.js.map +1 -0
  221. package/dist/esm/schema/registry/grafana-splunk-datasource.schema.json.js +319 -0
  222. package/dist/esm/schema/registry/grafana-splunk-datasource.schema.json.js.map +1 -0
  223. package/dist/esm/schema/registry/grafana-splunkobservability-datasource.schema.json.js +90 -0
  224. package/dist/esm/schema/registry/grafana-splunkobservability-datasource.schema.json.js.map +1 -0
  225. package/dist/esm/schema/registry/grafana-strava-datasource.schema.json.js +74 -0
  226. package/dist/esm/schema/registry/grafana-strava-datasource.schema.json.js.map +1 -0
  227. package/dist/esm/schema/registry/grafana-sumologic-datasource.schema.json.js +102 -0
  228. package/dist/esm/schema/registry/grafana-sumologic-datasource.schema.json.js.map +1 -0
  229. package/dist/esm/schema/registry/grafana-surrealdb-datasource.schema.json.js +92 -0
  230. package/dist/esm/schema/registry/grafana-surrealdb-datasource.schema.json.js.map +1 -0
  231. package/dist/esm/schema/registry/grafana-timestream-datasource.schema.json.js +145 -0
  232. package/dist/esm/schema/registry/grafana-timestream-datasource.schema.json.js.map +1 -0
  233. package/dist/esm/schema/registry/grafana-wavefront-datasource.schema.json.js +80 -0
  234. package/dist/esm/schema/registry/grafana-wavefront-datasource.schema.json.js.map +1 -0
  235. package/dist/esm/schema/registry/grafana-x-ray-datasource.schema.json.js +112 -0
  236. package/dist/esm/schema/registry/grafana-x-ray-datasource.schema.json.js.map +1 -0
  237. package/dist/esm/schema/registry/grafana-yugabyte-datasource.schema.json.js +114 -0
  238. package/dist/esm/schema/registry/grafana-yugabyte-datasource.schema.json.js.map +1 -0
  239. package/dist/esm/schema/registry/graphite.schema.json.js +104 -0
  240. package/dist/esm/schema/registry/graphite.schema.json.js.map +1 -0
  241. package/dist/esm/schema/registry/index.js +27 -0
  242. package/dist/esm/schema/registry/index.js.map +1 -0
  243. package/dist/esm/schema/registry/influxdb.schema.json.js +717 -0
  244. package/dist/esm/schema/registry/influxdb.schema.json.js.map +1 -0
  245. package/dist/esm/schema/registry/jaeger.schema.json.js +59 -0
  246. package/dist/esm/schema/registry/jaeger.schema.json.js.map +1 -0
  247. package/dist/esm/schema/registry/loki.schema.json.js +545 -0
  248. package/dist/esm/schema/registry/loki.schema.json.js.map +1 -0
  249. package/dist/esm/schema/registry/marcusolsson-csv-datasource.schema.json.js +45 -0
  250. package/dist/esm/schema/registry/marcusolsson-csv-datasource.schema.json.js.map +1 -0
  251. package/dist/esm/schema/registry/marcusolsson-json-datasource.schema.json.js +36 -0
  252. package/dist/esm/schema/registry/marcusolsson-json-datasource.schema.json.js.map +1 -0
  253. package/dist/esm/schema/registry/mssql.schema.json.js +292 -0
  254. package/dist/esm/schema/registry/mssql.schema.json.js.map +1 -0
  255. package/dist/esm/schema/registry/mysql.schema.json.js +304 -0
  256. package/dist/esm/schema/registry/mysql.schema.json.js.map +1 -0
  257. package/dist/esm/schema/registry/opentsdb.schema.json.js +113 -0
  258. package/dist/esm/schema/registry/opentsdb.schema.json.js.map +1 -0
  259. package/dist/esm/schema/registry/prometheus.schema.json.js +783 -0
  260. package/dist/esm/schema/registry/prometheus.schema.json.js.map +1 -0
  261. package/dist/esm/schema/registry/stackdriver.schema.json.js +224 -0
  262. package/dist/esm/schema/registry/stackdriver.schema.json.js.map +1 -0
  263. package/dist/esm/schema/registry/staticRegistry.js +135 -0
  264. package/dist/esm/schema/registry/staticRegistry.js.map +1 -0
  265. package/dist/esm/schema/registry/tempo.schema.json.js +664 -0
  266. package/dist/esm/schema/registry/tempo.schema.json.js.map +1 -0
  267. package/dist/esm/schema/registry/zipkin.schema.json.js +40 -0
  268. package/dist/esm/schema/registry/zipkin.schema.json.js.map +1 -0
  269. package/package.json +12 -8
  270. package/dist/esm/_virtual/_commonjsHelpers.js +0 -6
  271. package/dist/esm/_virtual/_commonjsHelpers.js.map +0 -1
  272. package/dist/esm/_virtual/index2.js +0 -6
  273. package/dist/esm/_virtual/index2.js.map +0 -1
  274. package/dist/esm/_virtual/index3.js +0 -4
  275. package/dist/esm/_virtual/index3.js.map +0 -1
  276. package/dist/esm/_virtual/react.development.js +0 -4
  277. package/dist/esm/_virtual/react.development.js.map +0 -1
  278. package/dist/esm/_virtual/react.production.min.js +0 -4
  279. package/dist/esm/_virtual/react.production.min.js.map +0 -1
  280. package/dist/esm/node_modules/react/cjs/react.development.js +0 -2752
  281. package/dist/esm/node_modules/react/cjs/react.development.js.map +0 -1
  282. package/dist/esm/node_modules/react/cjs/react.production.min.js +0 -39
  283. package/dist/esm/node_modules/react/cjs/react.production.min.js.map +0 -1
  284. package/dist/esm/node_modules/react/index.js +0 -20
  285. package/dist/esm/node_modules/react/index.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import React from '../../../_virtual/index.js';
1
+ import React from 'react';
2
2
  import { css } from '@emotion/css';
3
3
  import '@grafana/data';
4
4
  import { useStyles2 } from '@grafana/ui';
@@ -1,4 +1,4 @@
1
- import React from '../../../_virtual/index.js';
1
+ import React from 'react';
2
2
  import { EditorStack } from '../EditorStack.js';
3
3
 
4
4
  const EditorRows = ({ children }) => {
@@ -1,4 +1,4 @@
1
- import React, { r as reactExports } from '../../../_virtual/index.js';
1
+ import React, { useCallback } from 'react';
2
2
  import { toOption } from '@grafana/data';
3
3
  import '../types.js';
4
4
  import { setGroupByField } from '../utils/sql.utils.js';
@@ -8,7 +8,7 @@ import { AccessoryButton } from '../AccessoryButton.js';
8
8
  import { InputGroup } from '../InputGroup.js';
9
9
 
10
10
  function GroupByRow({ sql, columns, onSqlChange }) {
11
- const onGroupByChange = reactExports.useCallback(
11
+ const onGroupByChange = useCallback(
12
12
  (item) => {
13
13
  const cleaned = item.map((v) => {
14
14
  var _a;
@@ -1 +1 @@
1
- {"version":3,"file":"GroupByRow.js","sources":["../../../../../src/components/QueryEditor/visual-query-builder/GroupByRow.tsx"],"sourcesContent":["import React, { useCallback } from 'react';\nimport { type SelectableValue, toOption } from '@grafana/data';\nimport { type SQLExpression } from '../types';\nimport { type QueryEditorGroupByExpression } from '../expressions';\nimport { setGroupByField } from '../utils/sql.utils';\nimport { EditorList } from '../EditorList';\nimport { Select } from '@grafana/ui';\nimport { AccessoryButton } from '../AccessoryButton';\nimport { InputGroup } from '../InputGroup';\n\ninterface GroupByRowProps {\n sql: SQLExpression;\n onSqlChange: (sql: SQLExpression) => void;\n columns?: Array<SelectableValue<string>>;\n}\n\nexport function GroupByRow({ sql, columns, onSqlChange }: GroupByRowProps) {\n const onGroupByChange = useCallback(\n (item: Array<Partial<QueryEditorGroupByExpression>>) => {\n // As new (empty object) items come in, we need to make sure they have the correct type\n const cleaned = item.map((v) => setGroupByField(v.property?.name));\n const newSql = { ...sql, groupBy: cleaned };\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n return (\n <EditorList\n items={sql.groupBy!}\n onChange={onGroupByChange}\n renderItem={makeRenderColumn({\n options: columns,\n })}\n />\n );\n}\n\nfunction makeRenderColumn({ options }: { options?: Array<SelectableValue<string>> }) {\n const renderColumn = function (\n item: Partial<QueryEditorGroupByExpression>,\n onChangeItem: (item: QueryEditorGroupByExpression) => void,\n onDeleteItem: () => void\n ) {\n return (\n <InputGroup>\n <Select\n value={item.property?.name ? toOption(item.property.name) : null}\n aria-label=\"Group by\"\n options={options}\n menuShouldPortal\n onChange={({ value }) => value && onChangeItem(setGroupByField(value))}\n />\n <AccessoryButton aria-label=\"Remove group by column\" icon=\"times\" variant=\"secondary\" onClick={onDeleteItem} />\n </InputGroup>\n );\n };\n return renderColumn;\n}\n"],"names":["useCallback"],"mappings":";;;;;;;;;AAgBO,SAAS,UAAW,CAAA,EAAE,GAAK,EAAA,OAAA,EAAS,aAAgC,EAAA;AACzE,EAAA,MAAM,eAAkB,GAAAA,wBAAA;AAAA,IACtB,CAAC,IAAuD,KAAA;AAEtD,MAAA,MAAM,OAAU,GAAA,IAAA,CAAK,GAAI,CAAA,CAAC,CAAG,KAAA;AApBnC,QAAA,IAAA,EAAA;AAoBsC,QAAgB,OAAA,eAAA,CAAA,CAAA,EAAA,GAAA,CAAA,CAAE,QAAF,KAAA,IAAA,GAAA,SAAA,GAAA,EAAA,CAAY,IAAI,CAAA;AAAA,OAAC,CAAA;AACjE,MAAA,MAAM,MAAS,GAAA,EAAE,GAAG,GAAA,EAAK,SAAS,OAAQ,EAAA;AAC1C,MAAA,WAAA,CAAY,MAAM,CAAA;AAAA,KACpB;AAAA,IACA,CAAC,aAAa,GAAG;AAAA,GACnB;AAEA,EACE,uBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,OAAO,GAAI,CAAA,OAAA;AAAA,MACX,QAAU,EAAA,eAAA;AAAA,MACV,YAAY,gBAAiB,CAAA;AAAA,QAC3B,OAAS,EAAA;AAAA,OACV;AAAA;AAAA,GACH;AAEJ;AAEA,SAAS,gBAAA,CAAiB,EAAE,OAAA,EAAyD,EAAA;AACnF,EAAA,MAAM,YAAe,GAAA,SACnB,IACA,EAAA,YAAA,EACA,YACA,EAAA;AA3CJ,IAAA,IAAA,EAAA;AA4CI,IAAA,2CACG,UACC,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAA,CAAA,CAAO,UAAK,QAAL,KAAA,IAAA,GAAA,SAAA,GAAA,EAAA,CAAe,QAAO,QAAS,CAAA,IAAA,CAAK,QAAS,CAAA,IAAI,CAAI,GAAA,IAAA;AAAA,QAC5D,YAAW,EAAA,UAAA;AAAA,QACX,OAAA;AAAA,QACA,gBAAgB,EAAA,IAAA;AAAA,QAChB,QAAA,EAAU,CAAC,EAAE,KAAA,OAAY,KAAS,IAAA,YAAA,CAAa,eAAgB,CAAA,KAAK,CAAC;AAAA;AAAA,KACvE,kBACC,KAAA,CAAA,aAAA,CAAA,eAAA,EAAA,EAAgB,YAAW,EAAA,wBAAA,EAAyB,IAAK,EAAA,OAAA,EAAQ,OAAQ,EAAA,WAAA,EAAY,OAAS,EAAA,YAAA,EAAc,CAC/G,CAAA;AAAA,GAEJ;AACA,EAAO,OAAA,YAAA;AACT;;;;"}
1
+ {"version":3,"file":"GroupByRow.js","sources":["../../../../../src/components/QueryEditor/visual-query-builder/GroupByRow.tsx"],"sourcesContent":["import React, { useCallback } from 'react';\nimport { type SelectableValue, toOption } from '@grafana/data';\nimport { type SQLExpression } from '../types';\nimport { type QueryEditorGroupByExpression } from '../expressions';\nimport { setGroupByField } from '../utils/sql.utils';\nimport { EditorList } from '../EditorList';\nimport { Select } from '@grafana/ui';\nimport { AccessoryButton } from '../AccessoryButton';\nimport { InputGroup } from '../InputGroup';\n\ninterface GroupByRowProps {\n sql: SQLExpression;\n onSqlChange: (sql: SQLExpression) => void;\n columns?: Array<SelectableValue<string>>;\n}\n\nexport function GroupByRow({ sql, columns, onSqlChange }: GroupByRowProps) {\n const onGroupByChange = useCallback(\n (item: Array<Partial<QueryEditorGroupByExpression>>) => {\n // As new (empty object) items come in, we need to make sure they have the correct type\n const cleaned = item.map((v) => setGroupByField(v.property?.name));\n const newSql = { ...sql, groupBy: cleaned };\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n return (\n <EditorList\n items={sql.groupBy!}\n onChange={onGroupByChange}\n renderItem={makeRenderColumn({\n options: columns,\n })}\n />\n );\n}\n\nfunction makeRenderColumn({ options }: { options?: Array<SelectableValue<string>> }) {\n const renderColumn = function (\n item: Partial<QueryEditorGroupByExpression>,\n onChangeItem: (item: QueryEditorGroupByExpression) => void,\n onDeleteItem: () => void\n ) {\n return (\n <InputGroup>\n <Select\n value={item.property?.name ? toOption(item.property.name) : null}\n aria-label=\"Group by\"\n options={options}\n menuShouldPortal\n onChange={({ value }) => value && onChangeItem(setGroupByField(value))}\n />\n <AccessoryButton aria-label=\"Remove group by column\" icon=\"times\" variant=\"secondary\" onClick={onDeleteItem} />\n </InputGroup>\n );\n };\n return renderColumn;\n}\n"],"names":[],"mappings":";;;;;;;;;AAgBO,SAAS,UAAW,CAAA,EAAE,GAAK,EAAA,OAAA,EAAS,aAAgC,EAAA;AACzE,EAAA,MAAM,eAAkB,GAAA,WAAA;AAAA,IACtB,CAAC,IAAuD,KAAA;AAEtD,MAAA,MAAM,OAAU,GAAA,IAAA,CAAK,GAAI,CAAA,CAAC,CAAG,KAAA;AApBnC,QAAA,IAAA,EAAA;AAoBsC,QAAgB,OAAA,eAAA,CAAA,CAAA,EAAA,GAAA,CAAA,CAAE,QAAF,KAAA,IAAA,GAAA,SAAA,GAAA,EAAA,CAAY,IAAI,CAAA;AAAA,OAAC,CAAA;AACjE,MAAA,MAAM,MAAS,GAAA,EAAE,GAAG,GAAA,EAAK,SAAS,OAAQ,EAAA;AAC1C,MAAA,WAAA,CAAY,MAAM,CAAA;AAAA,KACpB;AAAA,IACA,CAAC,aAAa,GAAG;AAAA,GACnB;AAEA,EACE,uBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,OAAO,GAAI,CAAA,OAAA;AAAA,MACX,QAAU,EAAA,eAAA;AAAA,MACV,YAAY,gBAAiB,CAAA;AAAA,QAC3B,OAAS,EAAA;AAAA,OACV;AAAA;AAAA,GACH;AAEJ;AAEA,SAAS,gBAAA,CAAiB,EAAE,OAAA,EAAyD,EAAA;AACnF,EAAA,MAAM,YAAe,GAAA,SACnB,IACA,EAAA,YAAA,EACA,YACA,EAAA;AA3CJ,IAAA,IAAA,EAAA;AA4CI,IAAA,2CACG,UACC,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAA,CAAA,CAAO,UAAK,QAAL,KAAA,IAAA,GAAA,SAAA,GAAA,EAAA,CAAe,QAAO,QAAS,CAAA,IAAA,CAAK,QAAS,CAAA,IAAI,CAAI,GAAA,IAAA;AAAA,QAC5D,YAAW,EAAA,UAAA;AAAA,QACX,OAAA;AAAA,QACA,gBAAgB,EAAA,IAAA;AAAA,QAChB,QAAA,EAAU,CAAC,EAAE,KAAA,OAAY,KAAS,IAAA,YAAA,CAAa,eAAgB,CAAA,KAAK,CAAC;AAAA;AAAA,KACvE,kBACC,KAAA,CAAA,aAAA,CAAA,eAAA,EAAA,EAAgB,YAAW,EAAA,wBAAA,EAAyB,IAAK,EAAA,OAAA,EAAQ,OAAQ,EAAA,WAAA,EAAY,OAAS,EAAA,YAAA,EAAc,CAC/G,CAAA;AAAA,GAEJ;AACA,EAAO,OAAA,YAAA;AACT;;;;"}
@@ -1,5 +1,5 @@
1
1
  import { uniqueId } from 'lodash';
2
- import React, { r as reactExports } from '../../../_virtual/index.js';
2
+ import React, { useCallback } from 'react';
3
3
  import { toOption } from '@grafana/data';
4
4
  import { Select, RadioButtonGroup, Input } from '@grafana/ui';
5
5
  import '../types.js';
@@ -14,28 +14,28 @@ const sortOrderOptions = [
14
14
  ];
15
15
  function OrderByRow({ sql, onSqlChange, columns, showOffset }) {
16
16
  var _a, _b;
17
- const onSortOrderChange = reactExports.useCallback(
17
+ const onSortOrderChange = useCallback(
18
18
  (item) => {
19
19
  const newSql = { ...sql, orderByDirection: item };
20
20
  onSqlChange(newSql);
21
21
  },
22
22
  [onSqlChange, sql]
23
23
  );
24
- const onLimitChange = reactExports.useCallback(
24
+ const onLimitChange = useCallback(
25
25
  (event) => {
26
26
  const newSql = { ...sql, limit: Number.parseInt(event.currentTarget.value, 10) };
27
27
  onSqlChange(newSql);
28
28
  },
29
29
  [onSqlChange, sql]
30
30
  );
31
- const onOffsetChange = reactExports.useCallback(
31
+ const onOffsetChange = useCallback(
32
32
  (event) => {
33
33
  const newSql = { ...sql, offset: Number.parseInt(event.currentTarget.value, 10) };
34
34
  onSqlChange(newSql);
35
35
  },
36
36
  [onSqlChange, sql]
37
37
  );
38
- const onOrderByChange = reactExports.useCallback(
38
+ const onOrderByChange = useCallback(
39
39
  (item) => {
40
40
  const newSql = { ...sql, orderBy: setPropertyField(item == null ? undefined : item.value) };
41
41
  if (item === null) {
@@ -1 +1 @@
1
- {"version":3,"file":"OrderByRow.js","sources":["../../../../../src/components/QueryEditor/visual-query-builder/OrderByRow.tsx"],"sourcesContent":["import { uniqueId } from 'lodash';\nimport React, { useCallback } from 'react';\nimport { type SelectableValue, toOption } from '@grafana/data';\nimport { Input, RadioButtonGroup, Select } from '@grafana/ui';\nimport { type SQLExpression } from '../types';\nimport { setPropertyField } from '../utils/sql.utils';\nimport { Space } from '../Space';\nimport { EditorField } from '../EditorField';\nimport { InputGroup } from '../InputGroup';\n\ntype OrderByRowProps = {\n sql: SQLExpression;\n onSqlChange: (sql: SQLExpression) => void;\n columns?: Array<SelectableValue<string>>;\n showOffset?: boolean;\n};\n\nconst sortOrderOptions = [\n { description: 'Sort by ascending', value: 'ASC', icon: 'sort-amount-up' } as const,\n { description: 'Sort by descending', value: 'DESC', icon: 'sort-amount-down' } as const,\n];\n\nexport function OrderByRow({ sql, onSqlChange, columns, showOffset }: OrderByRowProps) {\n const onSortOrderChange = useCallback(\n (item: 'ASC' | 'DESC') => {\n const newSql: SQLExpression = { ...sql, orderByDirection: item };\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n const onLimitChange = useCallback(\n (event: React.FormEvent<HTMLInputElement>) => {\n const newSql: SQLExpression = { ...sql, limit: Number.parseInt(event.currentTarget.value, 10) };\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n const onOffsetChange = useCallback(\n (event: React.FormEvent<HTMLInputElement>) => {\n const newSql: SQLExpression = { ...sql, offset: Number.parseInt(event.currentTarget.value, 10) };\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n const onOrderByChange = useCallback(\n (item: SelectableValue<string>) => {\n const newSql: SQLExpression = { ...sql, orderBy: setPropertyField(item?.value) };\n if (item === null) {\n newSql.orderByDirection = undefined;\n }\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n return (\n <>\n <EditorField label=\"Order by\" width={25}>\n <InputGroup>\n <Select\n aria-label=\"Order by\"\n options={columns}\n value={sql.orderBy?.property.name ? toOption(sql.orderBy.property.name) : null}\n isClearable\n menuShouldPortal\n onChange={onOrderByChange}\n />\n\n <Space h={1.5} />\n\n <RadioButtonGroup\n options={sortOrderOptions}\n disabled={!sql?.orderBy?.property.name}\n value={sql.orderByDirection}\n onChange={onSortOrderChange}\n />\n </InputGroup>\n </EditorField>\n <EditorField label=\"Limit\" optional width={25}>\n <Input type=\"number\" min={0} id={uniqueId('limit-')} value={sql.limit || ''} onChange={onLimitChange} />\n </EditorField>\n {showOffset && (\n <EditorField label=\"Offset\" optional width={25}>\n <Input type=\"number\" id={uniqueId('offset-')} value={sql.offset || ''} onChange={onOffsetChange} />\n </EditorField>\n )}\n </>\n );\n}\n"],"names":["useCallback"],"mappings":"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"}
1
+ {"version":3,"file":"OrderByRow.js","sources":["../../../../../src/components/QueryEditor/visual-query-builder/OrderByRow.tsx"],"sourcesContent":["import { uniqueId } from 'lodash';\nimport React, { useCallback } from 'react';\nimport { type SelectableValue, toOption } from '@grafana/data';\nimport { Input, RadioButtonGroup, Select } from '@grafana/ui';\nimport { type SQLExpression } from '../types';\nimport { setPropertyField } from '../utils/sql.utils';\nimport { Space } from '../Space';\nimport { EditorField } from '../EditorField';\nimport { InputGroup } from '../InputGroup';\n\ntype OrderByRowProps = {\n sql: SQLExpression;\n onSqlChange: (sql: SQLExpression) => void;\n columns?: Array<SelectableValue<string>>;\n showOffset?: boolean;\n};\n\nconst sortOrderOptions = [\n { description: 'Sort by ascending', value: 'ASC', icon: 'sort-amount-up' } as const,\n { description: 'Sort by descending', value: 'DESC', icon: 'sort-amount-down' } as const,\n];\n\nexport function OrderByRow({ sql, onSqlChange, columns, showOffset }: OrderByRowProps) {\n const onSortOrderChange = useCallback(\n (item: 'ASC' | 'DESC') => {\n const newSql: SQLExpression = { ...sql, orderByDirection: item };\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n const onLimitChange = useCallback(\n (event: React.FormEvent<HTMLInputElement>) => {\n const newSql: SQLExpression = { ...sql, limit: Number.parseInt(event.currentTarget.value, 10) };\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n const onOffsetChange = useCallback(\n (event: React.FormEvent<HTMLInputElement>) => {\n const newSql: SQLExpression = { ...sql, offset: Number.parseInt(event.currentTarget.value, 10) };\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n const onOrderByChange = useCallback(\n (item: SelectableValue<string>) => {\n const newSql: SQLExpression = { ...sql, orderBy: setPropertyField(item?.value) };\n if (item === null) {\n newSql.orderByDirection = undefined;\n }\n onSqlChange(newSql);\n },\n [onSqlChange, sql]\n );\n\n return (\n <>\n <EditorField label=\"Order by\" width={25}>\n <InputGroup>\n <Select\n aria-label=\"Order by\"\n options={columns}\n value={sql.orderBy?.property.name ? toOption(sql.orderBy.property.name) : null}\n isClearable\n menuShouldPortal\n onChange={onOrderByChange}\n />\n\n <Space h={1.5} />\n\n <RadioButtonGroup\n options={sortOrderOptions}\n disabled={!sql?.orderBy?.property.name}\n value={sql.orderByDirection}\n onChange={onSortOrderChange}\n />\n </InputGroup>\n </EditorField>\n <EditorField label=\"Limit\" optional width={25}>\n <Input type=\"number\" min={0} id={uniqueId('limit-')} value={sql.limit || ''} onChange={onLimitChange} />\n </EditorField>\n {showOffset && (\n <EditorField label=\"Offset\" optional width={25}>\n <Input type=\"number\" id={uniqueId('offset-')} value={sql.offset || ''} onChange={onOffsetChange} />\n </EditorField>\n )}\n </>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import React from '../../../_virtual/index.js';
1
+ import React from 'react';
2
2
  import { css } from '@emotion/css';
3
3
  import { useCopyToClipboard } from 'react-use';
4
4
  import '@grafana/data';
@@ -1,4 +1,4 @@
1
- import React from '../../../_virtual/index.js';
1
+ import React from 'react';
2
2
  import '@grafana/data';
3
3
  import { GroupByRow } from './GroupByRow.js';
4
4
  import '../types.js';
@@ -1,4 +1,4 @@
1
- import React from '../../../_virtual/index.js';
1
+ import React from 'react';
2
2
  import '@grafana/data';
3
3
  import { OrderByRow } from './OrderByRow.js';
4
4
  import '../types.js';
@@ -1,4 +1,4 @@
1
- import React from '../../../_virtual/index.js';
1
+ import React from 'react';
2
2
  import { useAsync } from 'react-use';
3
3
  import { toOption } from '@grafana/data';
4
4
  import { SelectRow } from './SelectRow.js';
@@ -1,4 +1,4 @@
1
- import React from '../../../_virtual/index.js';
1
+ import React from 'react';
2
2
  import { useAsync } from 'react-use';
3
3
  import '@grafana/data';
4
4
  import './AwesomeQueryBuilder.js';
@@ -1,6 +1,6 @@
1
1
  import { css } from '@emotion/css';
2
2
  import { uniqueId } from 'lodash';
3
- import React, { r as reactExports } from '../../../_virtual/index.js';
3
+ import React, { useCallback } from 'react';
4
4
  import { toOption } from '@grafana/data';
5
5
  import { useStyles2, Select, Button } from '@grafana/ui';
6
6
  import { EditorField } from '../EditorField.js';
@@ -14,7 +14,7 @@ function SelectRow({ sql, columns, onSqlChange, functions }) {
14
14
  var _a;
15
15
  const styles = useStyles2(getStyles);
16
16
  const columnsWithAsterisk = [asteriskValue, ...columns || []];
17
- const onColumnChange = reactExports.useCallback(
17
+ const onColumnChange = useCallback(
18
18
  (item, index) => (column) => {
19
19
  var _a2, _b;
20
20
  let modifiedItem = { ...item };
@@ -33,7 +33,7 @@ function SelectRow({ sql, columns, onSqlChange, functions }) {
33
33
  },
34
34
  [onSqlChange, sql]
35
35
  );
36
- const onAggregationChange = reactExports.useCallback(
36
+ const onAggregationChange = useCallback(
37
37
  (item, index) => (aggregation) => {
38
38
  var _a2;
39
39
  const newItem = {
@@ -48,7 +48,7 @@ function SelectRow({ sql, columns, onSqlChange, functions }) {
48
48
  },
49
49
  [onSqlChange, sql]
50
50
  );
51
- const removeColumn = reactExports.useCallback(
51
+ const removeColumn = useCallback(
52
52
  (index) => () => {
53
53
  const clone = [...sql.columns];
54
54
  clone.splice(index, 1);
@@ -60,7 +60,7 @@ function SelectRow({ sql, columns, onSqlChange, functions }) {
60
60
  },
61
61
  [onSqlChange, sql]
62
62
  );
63
- const addColumn = reactExports.useCallback(() => {
63
+ const addColumn = useCallback(() => {
64
64
  const newSql = { ...sql, columns: [...sql.columns, createFunctionField()] };
65
65
  onSqlChange(newSql);
66
66
  }, [onSqlChange, sql]);
@@ -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":["useCallback","_a"],"mappings":";;;;;;;;;;;AAkBA,MAAM,aAAgB,GAAA,EAAE,KAAO,EAAA,GAAA,EAAK,OAAO,GAAI,EAAA;AAExC,SAAS,UAAU,EAAE,GAAA,EAAK,OAAS,EAAA,WAAA,EAAa,WAA6B,EAAA;AApBpF,EAAA,IAAA,EAAA;AAqBE,EAAM,MAAA,MAAA,GAAS,WAAW,SAAS,CAAA;AACnC,EAAA,MAAM,sBAAsB,CAAC,aAAA,EAAe,GAAI,OAAA,IAAW,EAAG,CAAA;AAE9D,EAAA,MAAM,cAAiB,GAAAA,wBAAA;AAAA,IACrB,CAAC,IAAA,EAAqC,KAAkB,KAAA,CAAC,MAAoC,KAAA;AAzBjG,MAAA,IAAAC,GAAA,EAAA,EAAA;AA0BM,MAAI,IAAA,YAAA,GAAe,EAAE,GAAG,IAAK,EAAA;AAC7B,MAAA,IAAI,GAACA,GAAA,GAAA,IAAA,CAAK,UAAL,KAAA,IAAA,GAAA,SAAA,GAAAA,IAAiB,MAAQ,CAAA,EAAA;AAC5B,QAAa,YAAA,CAAA,UAAA,GAAa,CAAC,EAAE,IAAA,EAAM,0BAA0B,iBAAmB,EAAA,IAAA,EAAM,MAAO,CAAA,KAAA,EAAgB,CAAA;AAAA,OACxG,MAAA;AACL,QAAa,YAAA,CAAA,UAAA,GAAa,KAAK,UAAW,CAAA,GAAA;AAAA,UAAI,CAAC,CAAA,KAC7C,CAAE,CAAA,IAAA,KAAS,yBAA0B,CAAA,iBAAA,GAAoB,EAAE,GAAG,CAAG,EAAA,IAAA,EAAM,MAAO,CAAA,KAAA,EAAU,GAAA;AAAA,SAC1F;AAAA;AAGF,MAAA,MAAM,MAAwB,GAAA;AAAA,QAC5B,GAAG,GAAA;AAAA,QACH,OAAA,EAAA,CAAS,EAAI,GAAA,GAAA,CAAA,OAAA,KAAJ,IAAa,GAAA,SAAA,GAAA,EAAA,CAAA,GAAA,CAAI,CAAC,CAAG,EAAA,CAAA,KAAO,CAAM,KAAA,KAAA,GAAQ,YAAe,GAAA,CAAA;AAAA,OACpE;AAEA,MAAA,WAAA,CAAY,MAAM,CAAA;AAAA,KACpB;AAAA,IACA,CAAC,aAAa,GAAG;AAAA,GACnB;AAEA,EAAA,MAAM,mBAAsB,GAAAD,wBAAA;AAAA,IAC1B,CAAC,IAAA,EAAqC,KAAkB,KAAA,CAAC,WAAyC,KAAA;AA9CtG,MAAAC,IAAAA,GAAAA;AA+CM,MAAA,MAAM,OAAU,GAAA;AAAA,QACd,GAAG,IAAA;AAAA,QACH,MAAM,WAAa,IAAA,IAAA,GAAA,SAAA,GAAA,WAAA,CAAA;AAAA,OACrB;AACA,MAAA,MAAM,MAAwB,GAAA;AAAA,QAC5B,GAAG,GAAA;AAAA,QACH,OAASA,EAAAA,CAAAA,GAAAA,GAAA,GAAI,CAAA,OAAA,KAAJ,IAAAA,GAAAA,SAAAA,GAAAA,GAAAA,CAAa,GAAI,CAAA,CAAC,CAAG,EAAA,CAAA,KAAO,CAAM,KAAA,KAAA,GAAQ,OAAU,GAAA,CAAA;AAAA,OAC/D;AAEA,MAAA,WAAA,CAAY,MAAM,CAAA;AAAA,KACpB;AAAA,IACA,CAAC,aAAa,GAAG;AAAA,GACnB;AAEA,EAAA,MAAM,YAAe,GAAAD,wBAAA;AAAA,IACnB,CAAC,UAAkB,MAAM;AACvB,MAAA,MAAM,KAAQ,GAAA,CAAC,GAAG,GAAA,CAAI,OAAQ,CAAA;AAC9B,MAAM,KAAA,CAAA,MAAA,CAAO,OAAO,CAAC,CAAA;AACrB,MAAA,MAAM,MAAwB,GAAA;AAAA,QAC5B,GAAG,GAAA;AAAA,QACH,OAAS,EAAA;AAAA,OACX;AACA,MAAA,WAAA,CAAY,MAAM,CAAA;AAAA,KACpB;AAAA,IACA,CAAC,aAAa,GAAG;AAAA,GACnB;AAEA,EAAM,MAAA,SAAA,GAAYA,yBAAY,MAAM;AAClC,IAAM,MAAA,MAAA,GAAwB,EAAE,GAAG,GAAK,EAAA,OAAA,EAAS,CAAC,GAAG,GAAI,CAAA,OAAA,EAAU,mBAAoB,EAAC,CAAE,EAAA;AAC1F,IAAA,WAAA,CAAY,MAAM,CAAA;AAAA,GACjB,EAAA,CAAC,WAAa,EAAA,GAAG,CAAC,CAAA;AAErB,EAAA,uBACG,KAAA,CAAA,aAAA,CAAA,WAAA,EAAA,EAAY,GAAK,EAAA,CAAA,EAAG,UAAW,EAAA,KAAA,EAAM,SAAU,EAAA,QAAA,EAAA,EAAA,CAC7C,EAAI,GAAA,GAAA,CAAA,OAAA,KAAJ,IAAa,GAAA,SAAA,GAAA,EAAA,CAAA,GAAA,CAAI,CAAC,IAAM,EAAA,KAAA,qBACtB,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAI,GAAK,EAAA,KAAA,EAAA,kBACP,KAAA,CAAA,aAAA,CAAA,WAAA,EAAA,EAAY,GAAK,EAAA,CAAA,EAAG,UAAW,EAAA,KAAA,EAAA,kBAC7B,KAAA,CAAA,aAAA,CAAA,WAAA,EAAA,EAAY,KAAM,EAAA,QAAA,EAAS,OAAO,EACjC,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,eAAe,IAAI,CAAA;AAAA,MAC1B,OAAS,EAAA,mBAAA;AAAA,MACT,OAAS,EAAA,CAAA,cAAA,EAAiB,KAAK,CAAA,CAAA,EAAI,UAAU,CAAA,CAAA;AAAA,MAC7C,gBAAgB,EAAA,IAAA;AAAA,MAChB,gBAAgB,EAAA,IAAA;AAAA,MAChB,QAAA,EAAU,cAAe,CAAA,IAAA,EAAM,KAAK;AAAA;AAAA,GAExC,mBAEC,KAAA,CAAA,aAAA,CAAA,WAAA,EAAA,EAAY,OAAM,aAAc,EAAA,QAAA,EAAQ,IAAC,EAAA,KAAA,EAAO,EAC/C,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,OAAO,IAAK,CAAA,IAAA,GAAO,QAAS,CAAA,IAAA,CAAK,IAAI,CAAI,GAAA,IAAA;AAAA,MACzC,OAAS,EAAA,CAAA,mBAAA,EAAsB,KAAK,CAAA,CAAA,EAAI,UAAU,CAAA,CAAA;AAAA,MAClD,WAAW,EAAA,IAAA;AAAA,MACX,gBAAgB,EAAA,IAAA;AAAA,MAChB,gBAAgB,EAAA,IAAA;AAAA,MAChB,OAAS,EAAA,SAAA;AAAA,MACT,QAAA,EAAU,mBAAoB,CAAA,IAAA,EAAM,KAAK;AAAA;AAAA,GAE7C,CACA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,YAAW,EAAA,QAAA;AAAA,MACX,IAAK,EAAA,QAAA;AAAA,MACL,IAAK,EAAA,WAAA;AAAA,MACL,OAAQ,EAAA,WAAA;AAAA,MACR,IAAK,EAAA,IAAA;AAAA,MACL,OAAA,EAAS,aAAa,KAAK;AAAA;AAAA,GAE/B,CACF,CAEF,CAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,IAAK,EAAA,QAAA;AAAA,MACL,OAAS,EAAA,SAAA;AAAA,MACT,OAAQ,EAAA,WAAA;AAAA,MACR,IAAK,EAAA,IAAA;AAAA,MACL,IAAK,EAAA,MAAA;AAAA,MACL,YAAW,EAAA,KAAA;AAAA,MACX,WAAW,MAAO,CAAA;AAAA;AAAA,GAEtB,CAAA;AAEJ;AAEA,MAAM,YAAY,MAAM;AACtB,EAAA,OAAO,EAAE,SAAW,EAAA,GAAA,CAAI,EAAE,SAAW,EAAA,YAAA,EAAc,CAAE,EAAA;AACvD,CAAA;AAEA,SAAS,cAAA,CAAe,EAAE,UAAA,EAA6E,EAAA;AACrG,EAAA,MAAM,SAAS,UAAY,IAAA,IAAA,GAAA,SAAA,GAAA,UAAA,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA,CAAA,CAAE,SAAS,yBAA0B,CAAA,iBAAA,CAAA;AAC5E,EAAA,IAAI,oCAAQ,IAAM,EAAA;AAChB,IAAO,OAAA,QAAA,CAAS,OAAO,IAAI,CAAA;AAAA;AAE7B,EAAO,OAAA,IAAA;AACT;;;;"}
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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"}
@@ -1,4 +1,4 @@
1
- import React from '../../../_virtual/index.js';
1
+ import React from 'react';
2
2
  import { useAsync } from 'react-use';
3
3
  import '../types.js';
4
4
  import { QueryToolbox } from '../query-editor-raw/QueryToolbox.js';
@@ -1,25 +1,25 @@
1
1
  import { injectGlobal } from '@emotion/css';
2
- import React, { r as reactExports } from '../../../_virtual/index.js';
2
+ import React, { useState, useMemo, useEffect, useCallback } from 'react';
3
3
  import { Utils, Query, Builder } from '@react-awesome-query-builder/ui';
4
4
  import '../types.js';
5
5
  import { raqbConfig, emptyInitTree } from './AwesomeQueryBuilder.js';
6
6
 
7
7
  function WhereRow({ sql, config, onSqlChange }) {
8
- const [tree, setTree] = reactExports.useState();
9
- const configWithDefaults = reactExports.useMemo(() => ({ ...raqbConfig, ...config }), [config]);
10
- reactExports.useEffect(() => {
8
+ const [tree, setTree] = useState();
9
+ const configWithDefaults = useMemo(() => ({ ...raqbConfig, ...config }), [config]);
10
+ useEffect(() => {
11
11
  var _a;
12
12
  if (!tree) {
13
13
  const initTree = Utils.checkTree(Utils.loadTree((_a = sql.whereJsonTree) != null ? _a : emptyInitTree), configWithDefaults);
14
14
  setTree(initTree);
15
15
  }
16
16
  }, [configWithDefaults, sql.whereJsonTree, tree]);
17
- reactExports.useEffect(() => {
17
+ useEffect(() => {
18
18
  if (!sql.whereJsonTree) {
19
19
  setTree(Utils.checkTree(Utils.loadTree(emptyInitTree), configWithDefaults));
20
20
  }
21
21
  }, [configWithDefaults, sql.whereJsonTree]);
22
- const onTreeChange = reactExports.useCallback(
22
+ const onTreeChange = useCallback(
23
23
  (changedTree, config2) => {
24
24
  setTree(changedTree);
25
25
  const newSql = {
@@ -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":["useState","useMemo","useEffect","useCallback","config"],"mappings":";;;;;;AAYO,SAAS,QAAS,CAAA,EAAE,GAAK,EAAA,MAAA,EAAQ,aAAwC,EAAA;AAC9E,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIA,qBAAwB,EAAA;AAChD,EAAM,MAAA,kBAAA,GAAqBC,oBAAQ,CAAA,OAAO,EAAE,GAAG,UAAY,EAAA,GAAG,MAAO,EAAA,CAAA,EAAI,CAAC,MAAM,CAAC,CAAA;AAEjF,EAAAC,sBAAA,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,EAAAA,sBAAA,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,GAAAC,wBAAA;AAAA,IACnB,CAAC,aAA4BC,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
+ {"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,4 +1,4 @@
1
- import React from '../../_virtual/index.js';
1
+ import React from 'react';
2
2
 
3
3
  const QueryEditorRow = (props) => {
4
4
  var _a, _b;
@@ -1,5 +1,5 @@
1
1
  import { CodeEditor } from '@grafana/ui';
2
- import React, { r as reactExports } from '../../../_virtual/index.js';
2
+ 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';
@@ -29,16 +29,16 @@ const SQLEditor = ({
29
29
  width,
30
30
  height
31
31
  }) => {
32
- const monacoRef = reactExports.useRef(null);
33
- const langUid = reactExports.useRef();
32
+ const monacoRef = useRef(null);
33
+ const langUid = useRef();
34
34
  const stableOnChange = useLatestCallback(onChange);
35
- const id = reactExports.useMemo(() => {
35
+ const id = useMemo(() => {
36
36
  const uid = v4();
37
37
  const id2 = `${language.id}-${uid}`;
38
38
  langUid.current = id2;
39
39
  return id2;
40
40
  }, [language.id]);
41
- reactExports.useEffect(() => {
41
+ useEffect(() => {
42
42
  return () => {
43
43
  if (langUid.current) {
44
44
  INSTANCE_CACHE.delete(langUid.current);
@@ -46,7 +46,7 @@ const SQLEditor = ({
46
46
  sqlEditorLog(`Removing instance cache ${langUid.current}`, false, INSTANCE_CACHE);
47
47
  };
48
48
  }, []);
49
- const formatQuery = reactExports.useCallback(() => {
49
+ const formatQuery = useCallback(() => {
50
50
  if (monacoRef.current) {
51
51
  monacoRef.current.getAction("editor.action.formatDocument").run();
52
52
  }
@@ -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 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":["useRef","useMemo","id","useEffect","useCallback","_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":";;;;;;;;;;;;;;;;;;;AAoCA,MAAM,qBAAwB,GAAA,KAAA;AAuB9B,MAAM,eAAA,uBAAsB,GAAgC,EAAA;AAC5D,MAAM,cAAA,uBAAqB,GAA+C,EAAA;AAEnE,MAAM,YAAY,CAAC;AAAA,EACxB,QAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA,GAAW,EAAE,EAAA,EAAI,qBAAsB,EAAA;AAAA,EACvC,KAAA;AAAA,EACA;AACF,CAAsB,KAAA;AACpB,EAAM,MAAA,SAAA,GAAY,OAAwD,IAAI,CAAA;AAC9E,EAAA,MAAM,UAAU,MAAe,EAAA;AAC/B,EAAM,MAAA,cAAA,GAAiB,kBAAkB,QAAQ,CAAA;AAGjD,EAAM,MAAA,EAAA,GAAK,QAAQ,MAAM;AACvB,IAAA,MAAM,MAAM,EAAG,EAAA;AACf,IAAA,MAAMA,GAAK,GAAA,CAAA,EAAG,QAAS,CAAA,EAAE,IAAI,GAAG,CAAA,CAAA;AAChC,IAAA,OAAA,CAAQ,OAAUA,GAAAA,GAAAA;AAClB,IAAOA,OAAAA,GAAAA;AAAA,GACN,EAAA,CAAC,QAAS,CAAA,EAAE,CAAC,CAAA;AAEhB,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,QAAQ,OAAS,EAAA;AACnB,QAAe,cAAA,CAAA,MAAA,CAAO,QAAQ,OAAO,CAAA;AAAA;AAEvC,MAAA,YAAA,CAAa,CAA2B,wBAAA,EAAA,OAAA,CAAQ,OAAO,CAAA,CAAA,EAAI,OAAO,cAAc,CAAA;AAAA,KAClF;AAAA,GACF,EAAG,EAAE,CAAA;AAEL,EAAM,MAAA,WAAA,GAAc,YAAY,MAAM;AACpC,IAAA,IAAI,UAAU,OAAS,EAAA;AACrB,MAAA,SAAA,CAAU,OAAQ,CAAA,SAAA,CAAU,8BAA8B,CAAA,CAAE,GAAI,EAAA;AAAA;AAClE,GACF,EAAG,EAAE,CAAA;AAEL,EAAM,MAAA,SAAA,GAAY,CAAC,IAAiB,KAAA;AAClC,IAAkB,cAAA,IAAA,cAAA,CAAe,MAAM,KAAK,CAAA;AAC5C,IAAA,MAAA,IAAU,OAAO,IAAI,CAAA;AAAA,GACvB;AAEA,EAAA,uBACG,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAI,KAAO,EAAA,EAAE,OACZ,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,QAAQ,MAAU,IAAA,OAAA;AAAA,MAElB,KAAO,EAAA,KAAA,GAAQ,CAAG,EAAA,KAAA,GAAQ,CAAC,CAAO,EAAA,CAAA,GAAA,SAAA;AAAA,MAClC,QAAU,EAAA,EAAA;AAAA,MACV,KAAO,EAAA,KAAA;AAAA,MACP,MAAQ,EAAA,SAAA;AAAA,MACR,WAAa,EAAA,KAAA;AAAA,MACb,eAAiB,EAAA,IAAA;AAAA,MAEjB,gBAAA,EAAkB,CAAC,MAAA,EAAQ,CAAM,KAAA;AAC/B,QAAA,SAAA,CAAU,OAAU,GAAA,MAAA;AACpB,QAAO,MAAA,CAAA,uBAAA,CAAwB,CAAC,CAAM,KAAA;AACpC,UAAM,MAAA,IAAA,GAAO,OAAO,QAAS,EAAA;AAE7B,UAAA,IAAI,cAAgB,EAAA;AAClB,YAAA,cAAA,CAAe,MAAM,KAAK,CAAA;AAAA;AAC5B,SACD,CAAA;AAED,QAAA,MAAA,CAAO,WAAW,CAAE,CAAA,MAAA,CAAO,UAAU,CAAE,CAAA,OAAA,CAAQ,OAAO,MAAM;AAC1D,UAAM,MAAA,IAAA,GAAO,OAAO,QAAS,EAAA;AAE7B,UAAA,IAAI,cAAgB,EAAA;AAClB,YAAA,cAAA,CAAe,MAAM,IAAI,CAAA;AAAA;AAC3B,SACD,CAAA;AAED,QAAO,MAAA,CAAA,OAAA,CAAQ,CAAC,CAAM,KAAA;AAEpB,UAAI,IAAA,CAAA,CAAE,YAAY,EAAI,EAAA;AACpB,YAAA,MAAA,CAAO,QAAQ,eAAgB,CAAA,EAAA,EAAI,eAAgB,CAAA,EAAA,EAAI,EAAE,CAAA;AAAA;AAC3D,SACD,CAAA;AACD,QAA+B,8BAAA,CAAA,CAAA,EAAG,UAAU,EAAE,CAAA;AAAA;AAChD;AAAA,KAED,QAAY,IAAA,QAAA,CAAS,EAAE,WAAA,EAAa,CACvC,CAAA;AAEJ;AAUA,MAAM,eAAA,GAAkB,CAAC,MAAA,EAAgB,sBAAmE,KAAA;AAC1G,EAAA,IAAA,CAAI,sBAAwB,IAAA,IAAA,GAAA,SAAA,GAAA,sBAAA,CAAA,EAAA,MAAO,qBAAyB,IAAA,CAAC,uBAAuB,MAAQ,EAAA;AAC1F,IAAA,YAAA,CAAa,CAAqB,kBAAA,EAAA,sBAAA,IAAA,IAAA,GAAA,SAAA,GAAA,sBAAA,CAAwB,EAAE,CAAA,sBAAA,CAAA,EAA0B,KAAK,CAAA;AAC3F,IAAM,MAAA,QAAA,GAAW,MAAO,CAAA,SAAA,CAAU,YAAa,EAAA;AAC/C,IAAM,MAAA,MAAA,GAAS,SAAS,IAAK,CAAA,CAAC,EAAE,EAAG,EAAA,KAAM,EAAO,MAAA,sBAAA,IAAA,IAAA,GAAA,SAAA,GAAA,sBAAA,CAAwB,EAAE,CAAA,CAAA;AAC1E,IAAA,IAAI,CAAC,MAAQ,EAAA;AACX,MAAA,MAAM,KAAM,CAAA,CAAA,wBAAA,EAA2B,sBAAwB,IAAA,IAAA,GAAA,SAAA,GAAA,sBAAA,CAAA,EAAE,CAAE,CAAA,CAAA;AAAA;AAGrE,IAAA,OAAO,EAAE,kBAAoB,EAAA,gCAAA,EAAkC,GAAG,MAAA,EAAQ,GAAG,sBAAuB,EAAA;AAAA;AAGtG,EAAO,OAAA;AAAA,IACL,GAAG,6BAAA;AAAA,IACH,GAAG;AAAA,GACL;AACF,CAAA;AAEO,MAAM,8BAAiC,GAAA,OAAO,MAAgB,EAAA,CAAA,EAAuB,GAAgB,KAAA;AAC1G,EAAM,MAAA,kBAAA,GAAqB,eAAgB,CAAA,MAAA,EAAQ,CAAC,CAAA;AACpD,EAAI,IAAA,CAAC,mBAAmB,MAAQ,EAAA;AAC9B,IAAA;AAAA;AAEF,EAAA,MAAM,EAAE,QAAU,EAAA,IAAA,KAAS,MAAM,kBAAA,CAAmB,OAAO,MAAM,CAAA;AACjE,EAAA,MAAA,CAAO,SAAU,CAAA,QAAA,CAAS,EAAE,EAAA,EAAI,KAAK,CAAA;AACrC,EAAA,MAAA,CAAO,UAAU,wBAAyB,CAAA,GAAA,EAAK,EAAE,GAAG,UAAU,CAAA;AAC9D,EAAA,MAAA,CAAO,UAAU,wBAAyB,CAAA,GAAA,EAAK,EAAE,GAAG,MAAM,CAAA;AAE1D,EAAA,IAAI,mBAAmB,SAAW,EAAA;AAChC,IAAO,MAAA,CAAA,SAAA,CAAU,uCAAuC,GAAK,EAAA;AAAA,MAC3D,8BAAA,EAAgC,CAAC,KAAU,KAAA;AAzLjD,QAAA,IAAA,EAAA;AA0LQ,QAAA,MAAM,SAAY,GAAA,CAAA,EAAA,GAAA,CAAA,CAAE,SAAF,KAAA,IAAA,GAAA,SAAA,GAAA,EAAA,CAAA,IAAA,CAAA,CAAA,EAAc,MAAM,QAAS,EAAA,CAAA;AAC/C,QAAO,OAAA;AAAA,UACL;AAAA,YACE,KAAA,EAAO,MAAM,iBAAkB,EAAA;AAAA,YAC/B,MAAM,SAAa,IAAA;AAAA;AACrB,SACF;AAAA;AACF,KACD,CAAA;AAAA;AAGH,EAAA,IAAI,mBAAmB,kBAAoB,EAAA;AACzC,IAAA,MAAM,cAAiB,GAAA,kBAAA,CAAmB,kBAAmB,CAAA,MAAA,EAAQ,QAAQ,CAAA;AAC7E,IAAyB,wBAAA,CAAA,CAAA,CAAE,EAAI,EAAA,GAAA,EAAK,cAAc,CAAA;AAClD,IAAA,MAAM,6BAAgC,GAAA,eAAA,CAAgB,GAAI,CAAA,CAAA,CAAE,EAAE,CAAA;AAC9D,IAAM,MAAA,2BAAA,GAA8B,cAAe,CAAA,GAAA,CAAI,GAAG,CAAA;AAE1D,IAAA,MAAM,kBAA6F,GAAA,OACjG,KACA,EAAA,QAAA,EACA,SACA,KACG,KAAA;AACH,MAAA,MAAM,YAAe,GAAA,kBAAA,CAAmB,MAAQ,EAAA,KAAA,EAAO,UAAU,GAAG,CAAA;AACpE,MAAA,MAAM,iBAAoB,GAAA,oBAAA,CAAqB,YAAc,EAAA,6BAAA,CAA8B,iBAAiB,CAAA;AAC5G,MAAA,MAAM,IAAO,GAAA,kBAAA,CAAmB,iBAAmB,EAAA,6BAAA,CAA8B,eAAe,CAAA;AAEhG,MAAa,YAAA,CAAA,oBAAA,EAAsB,OAAO,iBAAiB,CAAA;AAC3D,MAAa,YAAA,CAAA,kBAAA,EAAoB,OAAO,IAAI,CAAA;AAE5C,MAAA,MAAM,GAAuB,GAAA;AAAA,QAC3B,QAAA;AAAA,QACA,YAAA;AAAA,QACA,iBAAA;AAAA,QACA,IAAA;AAAA,QACA,KAAO,EAAA,MAAA,CAAO,KAAM,CAAA,aAAA,CAAc,QAAQ;AAAA,OAC5C;AAEA,MAAA,MAAM,iBAAiB,MAAM,sBAAA,CAAuB,QAAQ,YAAc,EAAA,IAAA,EAAM,KAAK,2BAA2B,CAAA;AAEhH,MAAO,OAAA;AAAA,QACL,WAAa,EAAA;AAAA,OACf;AAAA,KACF;AAEA,IAAO,MAAA,CAAA,SAAA,CAAU,+BAA+B,GAAK,EAAA;AAAA,MACnD,GAAG,cAAA;AAAA,MACH,sBAAwB,EAAA;AAAA,KACzB,CAAA;AAAA;AAEL;AAEA,SAAS,wBAAA,CAAyB,EAAY,EAAA,GAAA,EAAa,cAA2C,EAAA;AA9OtG,EAAA,IAAA,EAAA;AA+OE,EAAA,IAAI,CAAC,eAAA,CAAgB,GAAI,CAAA,EAAE,CAAG,EAAA;AAC5B,IAAA,4BAAA,CAA6B,EAAE,CAAA;AAAA;AAGjC,EAAM,MAAA,kBAAA,GAAqB,eAAgB,CAAA,GAAA,CAAI,EAAE,CAAA;AAEjD,EAAA,IAAI,CAAC,cAAA,CAAe,GAAI,CAAA,GAAG,CAAG,EAAA;AAC5B,IAAe,cAAA,CAAA,GAAA;AAAA,MACb,GAAA;AAAA,MACA,IAAI,QAAA;AAAA,QACF,wBAAwB,kBAAmB,CAAA,SAAA,EAAW,kBAAmB,CAAA,SAAA,EAAW,mBAAmB,MAAM;AAAA;AAC/G,KACF;AAAA;AAGF,EAAM,MAAA,2BAAA,GAA8B,cAAe,CAAA,GAAA,CAAI,GAAG,CAAA;AAE1D,EAAA,IAAI,eAAe,kBAAoB,EAAA;AACrC,IAAW,KAAA,MAAA,IAAA,IAAQ,cAAe,CAAA,kBAAA,EAAsB,EAAA;AACtD,MAAA,MAAM,MAAS,GAAA,kBAAA,CAAmB,SAAU,CAAA,WAAA,CAAY,KAAK,EAAE,CAAA;AAC/D,MAAA,IAAI,CAAC,MAAQ,EAAA;AACX,QAAmB,kBAAA,CAAA,SAAA,CAAU,SAAS,IAAI,CAAA;AAAA;AAC5C;AACF;AAGF,EAAA,IAAI,eAAe,kBAAoB,EAAA;AACrC,IAAW,KAAA,MAAA,EAAA,IAAM,cAAe,CAAA,kBAAA,EAAsB,EAAA;AACpD,MAAA,MAAM,MAAS,GAAA,kBAAA,CAAmB,SAAU,CAAA,WAAA,CAAY,GAAG,EAAE,CAAA;AAC7D,MAAA,IAAI,CAAC,MAAQ,EAAA;AACX,QAAmB,kBAAA,CAAA,SAAA,CAAU,SAAS,EAAE,GAAG,IAAI,IAAM,EAAA,EAAA,CAAG,IAAI,CAAA;AAAA;AAC9D;AACF;AAGF,EAAA,IAAI,eAAe,eAAiB,EAAA;AAClC,IAAW,KAAA,MAAA,KAAA,IAAS,cAAe,CAAA,eAAA,EAAmB,EAAA;AACpD,MAAA,MAAM,MAAS,GAAA,kBAAA,CAAmB,MAAO,CAAA,WAAA,CAAY,MAAM,EAAE,CAAA;AAC7D,MAAA,IAAI,CAAC,MAAQ,EAAA;AACX,QAAmB,kBAAA,CAAA,MAAA,CAAO,SAAS,EAAE,GAAG,OAAO,IAAM,EAAA,KAAA,CAAM,IAAI,CAAA;AAAA;AACjE;AACF;AAGF,EAAA,IAAI,eAAe,wBAA0B,EAAA;AAC3C,IAAW,KAAA,MAAA,SAAA,IAAa,cAAe,CAAA,wBAAA,EAA4B,EAAA;AACjE,MAAA,MAAM,MAAS,GAAA,kBAAA,CAAmB,iBAAkB,CAAA,WAAA,CAAY,UAAU,EAAE,CAAA;AAC5E,MAAA,IAAI,CAAC,MAAQ,EAAA;AACX,QAAA,kBAAA,CAAmB,kBAAkB,QAAS,CAAA;AAAA,UAC5C,GAAG,SAAA;AAAA,UACH,IAAI,SAAU,CAAA,EAAA;AAAA,UACd,MAAM,SAAU,CAAA;AAAA,SACjB,CAAA;AACD,QAAA,kBAAA,CAAmB,gBAAgB,QAAS,CAAA;AAAA,UAC1C,IAAI,SAAU,CAAA,EAAA;AAAA,UACd,MAAM,SAAU,CAAA,EAAA;AAAA,UAChB,MAAM;AAAC,SACR,CAAA;AAAA,OACI,MAAA;AAEL,QAAA,MAAM,cAAc,MAAO,CAAA,OAAA;AAC3B,QAAO,MAAA,CAAA,OAAA,GAAU,IAAI,IAAS,KAAA;AAC5B,UAAA,MAAM,GAAM,GAAA,SAAA,CAAU,OAAQ,CAAA,GAAG,IAAI,CAAA;AACrC,UAAA,IAAI,UAAU,eAAiB,EAAA;AAC7B,YAAO,OAAA,GAAA;AAAA;AAET,UAAM,MAAA,IAAA,GAAO,WAAY,CAAA,GAAG,IAAI,CAAA;AAChC,UAAA,OAAO,IAAQ,IAAA,GAAA;AAAA,SACjB;AAAA;AACF;AACF;AAGF,EAAA,IAAI,eAAe,qBAAuB,EAAA;AACxC,IAAW,KAAA,MAAA,IAAA,IAAQ,cAAe,CAAA,qBAAA,EAAyB,EAAA;AACzD,MAAA,CAAA,EAAA,GAAA,IAAA,CAAK,OAAL,KAAA,IAAA,GAAA,SAAA,GAAA,EAAA,CAAc,OAAQ,CAAA,CAAC,OAAY,KAAA;AACjC,QAAA,MAAM,MAAS,GAAA,kBAAA,CAAmB,eAAgB,CAAA,WAAA,CAAY,OAAO,CAAA;AACrE,QAAA,IAAI,MAAQ,EAAA;AAEV,UAAA,IAAI,OAAO,IAAK,CAAA,OAAA,CAAQ,IAAK,CAAA,EAAoB,MAAM,EAAI,EAAA;AACzD,YAAO,MAAA,CAAA,IAAA,CAAK,IAAK,CAAA,IAAA,CAAK,EAAoB,CAAA;AAAA;AAC5C;AACF,OACF,CAAA;AAEA,MAAA,IAAI,KAAK,eAAiB,EAAA;AACxB,QAAA,MAAM,WAAc,GAAA,2BAAA,CAA4B,GAAI,CAAA,IAAA,CAAK,EAAE,CAAA;AAC3D,QAAA,IAAI,gBAAgB,SAAW,EAAA;AAC7B,UAAA,WAAA,CAAY,cAAc,IAAK,CAAA,mBAAA;AAC/B,UAAA;AAAA;AACF;AAGF,MAAA,2BAAA,CAA4B,QAAS,CAAA;AAAA,QACnC,IAAI,IAAK,CAAA,EAAA;AAAA,QACT,MAAM,IAAK,CAAA,EAAA;AAAA,QACX,aAAa,IAAK,CAAA;AAAA,OACnB,CAAA;AAAA;AACH;AAGF,EAAA,IAAI,eAAe,OAAS,EAAA;AAC1B,IAAA,MAAM,WAAc,GAAA,2BAAA,CAA4B,GAAI,CAAA,cAAA,CAAe,OAAO,CAAA;AAC1E,IAAA,MAAM,IAAI,WAAY,CAAA,WAAA;AACtB,IAAY,WAAA,CAAA,WAAA,GAAc,OAAO,GAAA,EAAK,CAAM,KAAA;AAC1C,MAAA,MAAM,eAAkB,GAAA,MAAM,CAAE,CAAA,GAAA,EAAK,CAAC,CAAA;AACtC,MAAI,IAAA,CAAC,eAAe,OAAS,EAAA;AAC3B,QAAO,OAAA,CAAC,GAAG,eAAe,CAAA;AAAA;AAE5B,MAAA,MAAM,aAAgB,GAAA,MAAM,cAAe,CAAA,OAAA,CAAQ,OAAQ,EAAA;AAC3D,MAAA,MAAM,2BAA8B,GAAA,aAAA,CAAc,GAAI,CAAA,CAAC,CAAG,KAAA;AA7VhE,QAAAC,IAAAA,GAAAA;AA6VoE,QAAA,OAAA;AAAA,UAC5D,OAAO,CAAE,CAAA,IAAA;AAAA,UACT,UAAA,EAAY,IAAGA,GAAA,GAAA,CAAA,CAAE,eAAF,IAAAA,GAAAA,GAAAA,GAAgB,EAAE,IAAI,CAAA,CAAA,CAAA;AAAA,UACrC,OAAS,EAAA,eAAA;AAAA,UACT,MAAM,kBAAmB,CAAA,MAAA;AAAA;AAAA,UACzB,UAAU,sBAAuB,CAAA;AAAA,SACnC;AAAA,OAAE,CAAA;AACF,MAAA,OAAO,CAAC,GAAG,eAAiB,EAAA,GAAG,2BAA2B,CAAA;AAAA,KAC5D;AAAA;AAGF,EAAA,IAAI,eAAe,MAAQ,EAAA;AACzB,IAAA,MAAM,WAAc,GAAA,2BAAA,CAA4B,GAAI,CAAA,cAAA,CAAe,MAAM,CAAA;AACzE,IAAA,MAAM,IAAI,WAAY,CAAA,WAAA;AACtB,IAAY,WAAA,CAAA,WAAA,GAAc,OAAO,GAAA,EAAK,CAAM,KAAA;AA3WhD,MAAA,IAAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AA4WM,MAAA,MAAM,CAAI,GAAA,MAAM,CAAE,CAAA,GAAA,EAAK,CAAC,CAAA;AACxB,MAAM,MAAA,UAAA,GAAa,aAAc,CAAA,GAAA,CAAI,YAAY,CAAA;AACjD,MAAM,MAAA,eAAA,GAAA,CAAkB,MAAAA,GAAA,GAAA,cAAA,CAAe,WAAf,IAAAA,GAAAA,SAAAA,GAAAA,GAAAA,CAAuB,cAAvB,IAAoC,GAAA,EAAA,GAAA,sBAAA;AAE5D,MAAM,MAAA,eAAA,GAAkB,gBAAgB,UAAU,CAAA;AAElD,MAAA,MAAM,EAAO,GAAA,CAAA,CAAA,EAAA,GAAA,OAAA,CAAM,EAAe,GAAA,CAAA,EAAA,GAAA,cAAA,CAAA,MAAA,KAAf,IAAuB,GAAA,SAAA,GAAA,EAAA,CAAA,OAAA,KAAvB,IAAiC,GAAA,SAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,eAAA,CAAA,CAAA,KAAvC,IAA4D,GAAA,EAAA,GAAA,EAAI,EAAA,GAAA,CAAI,CAAC,CAAG,KAAA;AAlX3F,QAAAA,IAAAA,GAAAA;AAkX+F,QAAA,OAAA;AAAA,UACvF,OAAO,CAAE,CAAA,IAAA;AAAA;AAAA,UAET,UAAY,EAAA,CAAA,EAAA,CAAGA,GAAA,GAAA,CAAA,CAAE,eAAF,IAAAA,GAAAA,GAAAA,GAAgB,CAAE,CAAA,IAAI,GAAG,CAAE,CAAA,UAAA,KAAe,CAAE,CAAA,IAAA,GAAO,QAAQ,EAAE,CAAA,CAAA;AAAA,UAC5E,iBAAiB,4BAA6B,CAAA,eAAA;AAAA,UAC9C,OAAS,EAAA,eAAA;AAAA,UACT,MAAM,kBAAmB,CAAA,KAAA;AAAA,UACzB,UAAU,sBAAuB,CAAA;AAAA,SACnC;AAAA,OAAE,CAAA;AACF,MAAA,OAAO,CAAC,GAAG,CAAG,EAAA,GAAG,EAAE,CAAA;AAAA,KACrB;AAAA;AAGF,EAAA,IAAI,eAAe,OAAS,EAAA;AAC1B,IAAA,MAAM,WAAc,GAAA,2BAAA,CAA4B,GAAI,CAAA,cAAA,CAAe,OAAO,CAAA;AAC1E,IAAA,MAAM,IAAI,WAAY,CAAA,WAAA;AACtB,IAAY,WAAA,CAAA,WAAA,GAAc,OAAO,GAAA,EAAK,CAAM,KAAA;AAlYhD,MAAA,IAAAA,GAAA,EAAA,EAAA,EAAA,EAAA;AAmYM,MAAA,MAAM,CAAI,GAAA,MAAM,CAAE,CAAA,GAAA,EAAK,CAAC,CAAA;AACxB,MAAM,MAAA,UAAA,GAAa,aAAc,CAAA,GAAA,CAAI,YAAY,CAAA;AACjD,MAAI,IAAA,eAAA;AACJ,MAAM,MAAA,eAAA,GAAA,CAAkB,MAAAA,GAAA,GAAA,cAAA,CAAe,WAAf,IAAAA,GAAAA,SAAAA,GAAAA,GAAAA,CAAuB,cAAvB,IAAoC,GAAA,EAAA,GAAA,sBAAA;AAE5D,MAAI,IAAA,UAAA,IAAc,WAAW,KAAO,EAAA;AAClC,QAAA,eAAA,GAAkB,gBAAgB,UAAU,CAAA;AAAA;AAG9C,MAAA,IAAI,KAAyB,EAAC;AAC9B,MAAA,IAAI,eAAiB,EAAA;AACnB,QAAA,MAAM,OAAU,GAAA,OAAA,CAAM,EAAe,GAAA,cAAA,CAAA,OAAA,KAAf,sBAAwB,OAAS,CAAA,eAAA,CAAA,CAAA;AACvD,QAAA,EAAA,GAAK,OACD,GAAA,OAAA,CAAQ,GAAsB,CAAA,CAAC,CAAG,KAAA;AAhZ9C,UAAAA,IAAAA,GAAAA;AAgZkD,UAAA,OAAA;AAAA,YACpC,OAAO,CAAE,CAAA,IAAA;AAAA,YACT,aAAYA,GAAA,GAAA,CAAA,CAAE,UAAF,KAAA,IAAA,GAAAA,MAAgB,CAAE,CAAA,IAAA;AAAA,YAC9B,MAAM,kBAAmB,CAAA,KAAA;AAAA,YACzB,UAAU,sBAAuB,CAAA,IAAA;AAAA,YACjC,QAAQ,CAAE,CAAA,IAAA;AAAA,YACV,eAAe,CAAE,CAAA;AAAA,WACnB;AAAA,SAAE,IACF,EAAC;AAAA;AAEP,MAAA,OAAO,CAAC,GAAG,CAAG,EAAA,GAAG,EAAE,CAAA;AAAA,KACrB;AAAA;AAEJ;AAKA,SAAS,6BAA6B,EAAY,EAAA;AAChD,EAAA,IAAI,CAAC,eAAA,CAAgB,GAAI,CAAA,EAAE,CAAG,EAAA;AAC5B,IAAA,eAAA,CAAgB,IAAI,EAAI,EAAA;AAAA,MACtB,SAAA,EAAW,IAAI,QAAS,EAAA;AAAA,MACxB,SAAA,EAAW,IAAI,QAAS,EAAA;AAAA,MACxB,eAAA,EAAiB,IAAI,QAAA,CAAS,2BAA2B,CAAA;AAAA,MACzD,iBAAA,EAAmB,IAAI,QAAA,CAAS,8BAA8B,CAAA;AAAA,MAC9D,MAAA,EAAQ,IAAI,QAAS;AAAA,KACtB,CAAA;AAAA;AAGH,EAAO,OAAA,eAAA,CAAgB,IAAI,EAAE,CAAA;AAC/B;;;;"}
@@ -1,12 +1,12 @@
1
- import { r as reactExports } from '../../../_virtual/index.js';
1
+ import { useRef, useEffect, useMemo } from 'react';
2
2
 
3
3
  function useLatestCallback(callback) {
4
- const ref = reactExports.useRef(callback);
5
- reactExports.useEffect(() => {
4
+ const ref = useRef(callback);
5
+ useEffect(() => {
6
6
  ref.current = callback;
7
7
  });
8
8
  const hasCallback = Boolean(callback);
9
- return reactExports.useMemo(
9
+ return useMemo(
10
10
  () => hasCallback ? (...args) => ref.current(...args) : undefined,
11
11
  [hasCallback]
12
12
  );
@@ -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":["useRef","useEffect","useMemo"],"mappings":";;AASO,SAAS,kBAAyD,QAAwC,EAAA;AAC/G,EAAM,MAAA,GAAA,GAAMA,oBAAO,QAAQ,CAAA;AAE3B,EAAAC,sBAAA,CAAU,MAAM;AACd,IAAA,GAAA,CAAI,OAAU,GAAA,QAAA;AAAA,GACf,CAAA;AAED,EAAM,MAAA,WAAA,GAAc,QAAQ,QAAQ,CAAA;AAEpC,EAAO,OAAAC,oBAAA;AAAA,IACL,MAAO,cAAgB,CAAI,GAAA,IAAA,KAAwB,IAAI,OAAS,CAAA,GAAG,IAAI,CAAW,GAAA,SAAA;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,14 +1,14 @@
1
- import React, { r as reactExports } from '../../_virtual/index.js';
1
+ import React, { useState, useEffect } from 'react';
2
2
  import { Segment as Segment$1 } from '@grafana/ui';
3
3
  import '@grafana/data';
4
4
  import { useDebounce } from '../../hooks/useDebounce.js';
5
5
 
6
6
  function Segment(props) {
7
7
  const { delay, onDebounce, value, options, ...rest } = props;
8
- const [input, setInput] = reactExports.useState(value);
8
+ const [input, setInput] = useState(value);
9
9
  const debouncedSegment = useDebounce(input, delay);
10
- reactExports.useEffect(() => onDebounce(debouncedSegment), [debouncedSegment]);
11
- reactExports.useEffect(() => setInput(value), [value]);
10
+ useEffect(() => onDebounce(debouncedSegment), [debouncedSegment]);
11
+ useEffect(() => setInput(value), [value]);
12
12
  return /* @__PURE__ */ React.createElement(
13
13
  Segment$1,
14
14
  {
@@ -1 +1 @@
1
- {"version":3,"file":"Segment.js","sources":["../../../../src/components/Segment/Segment.tsx"],"sourcesContent":["import React, { useEffect, type ComponentProps, useState } from 'react';\nimport { Segment as GrafanaSegment } from '@grafana/ui';\nimport { type SelectableValue } from '@grafana/data';\nimport { useDebounce } from '../../hooks/useDebounce';\n\nexport interface SegmentProps<T> extends Omit<ComponentProps<typeof GrafanaSegment<T>>, 'onChange'> {\n value: T;\n onDebounce: (debouncedSegment?: T) => void;\n delay?: number;\n}\n\nexport function Segment<T>(props: SegmentProps<T>) {\n const { delay, onDebounce, value, options, ...rest } = props;\n const [input, setInput] = useState(value);\n\n const debouncedSegment = useDebounce(input, delay);\n\n // TODO: We should fix the exhaustive-deps rule\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(() => onDebounce(debouncedSegment), [debouncedSegment]);\n useEffect(() => setInput(value), [value]);\n\n return (\n <GrafanaSegment\n options={options}\n onChange={(ev: SelectableValue<T>) => setInput(ev.value!)}\n value={input}\n {...rest}\n />\n );\n}\n"],"names":["useState","useEffect","GrafanaSegment"],"mappings":";;;;;AAWO,SAAS,QAAW,KAAwB,EAAA;AACjD,EAAA,MAAM,EAAE,KAAO,EAAA,UAAA,EAAY,OAAO,OAAS,EAAA,GAAG,MAAS,GAAA,KAAA;AACvD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,sBAAS,KAAK,CAAA;AAExC,EAAM,MAAA,gBAAA,GAAmB,WAAY,CAAA,KAAA,EAAO,KAAK,CAAA;AAIjD,EAAAC,sBAAA,CAAU,MAAM,UAAW,CAAA,gBAAgB,CAAG,EAAA,CAAC,gBAAgB,CAAC,CAAA;AAChE,EAAAA,sBAAA,CAAU,MAAM,QAAS,CAAA,KAAK,CAAG,EAAA,CAAC,KAAK,CAAC,CAAA;AAExC,EACE,uBAAA,KAAA,CAAA,aAAA;AAAA,IAACC,SAAA;AAAA,IAAA;AAAA,MACC,OAAA;AAAA,MACA,QAAU,EAAA,CAAC,EAA2B,KAAA,QAAA,CAAS,GAAG,KAAM,CAAA;AAAA,MACxD,KAAO,EAAA,KAAA;AAAA,MACN,GAAG;AAAA;AAAA,GACN;AAEJ;;;;"}
1
+ {"version":3,"file":"Segment.js","sources":["../../../../src/components/Segment/Segment.tsx"],"sourcesContent":["import React, { useEffect, type ComponentProps, useState } from 'react';\nimport { Segment as GrafanaSegment } from '@grafana/ui';\nimport { type SelectableValue } from '@grafana/data';\nimport { useDebounce } from '../../hooks/useDebounce';\n\nexport interface SegmentProps<T> extends Omit<ComponentProps<typeof GrafanaSegment<T>>, 'onChange'> {\n value: T;\n onDebounce: (debouncedSegment?: T) => void;\n delay?: number;\n}\n\nexport function Segment<T>(props: SegmentProps<T>) {\n const { delay, onDebounce, value, options, ...rest } = props;\n const [input, setInput] = useState(value);\n\n const debouncedSegment = useDebounce(input, delay);\n\n // TODO: We should fix the exhaustive-deps rule\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(() => onDebounce(debouncedSegment), [debouncedSegment]);\n useEffect(() => setInput(value), [value]);\n\n return (\n <GrafanaSegment\n options={options}\n onChange={(ev: SelectableValue<T>) => setInput(ev.value!)}\n value={input}\n {...rest}\n />\n );\n}\n"],"names":["GrafanaSegment"],"mappings":";;;;;AAWO,SAAS,QAAW,KAAwB,EAAA;AACjD,EAAA,MAAM,EAAE,KAAO,EAAA,UAAA,EAAY,OAAO,OAAS,EAAA,GAAG,MAAS,GAAA,KAAA;AACvD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAS,KAAK,CAAA;AAExC,EAAM,MAAA,gBAAA,GAAmB,WAAY,CAAA,KAAA,EAAO,KAAK,CAAA;AAIjD,EAAA,SAAA,CAAU,MAAM,UAAW,CAAA,gBAAgB,CAAG,EAAA,CAAC,gBAAgB,CAAC,CAAA;AAChE,EAAA,SAAA,CAAU,MAAM,QAAS,CAAA,KAAK,CAAG,EAAA,CAAC,KAAK,CAAC,CAAA;AAExC,EACE,uBAAA,KAAA,CAAA,aAAA;AAAA,IAACA,SAAA;AAAA,IAAA;AAAA,MACC,OAAA;AAAA,MACA,QAAU,EAAA,CAAC,EAA2B,KAAA,QAAA,CAAS,GAAG,KAAM,CAAA;AAAA,MACxD,KAAO,EAAA,KAAA;AAAA,MACN,GAAG;AAAA;AAAA,GACN;AAEJ;;;;"}
@@ -1,5 +1,5 @@
1
1
  import { uniqBy } from 'lodash';
2
- import React, { r as reactExports } from '../../../_virtual/index.js';
2
+ import React, { useState, useRef } from 'react';
3
3
  import { v4 } from 'uuid';
4
4
  import { toOption } from '@grafana/data';
5
5
  import { selectors } from '@grafana/e2e-selectors';
@@ -21,9 +21,9 @@ function LabelFilterItem({
21
21
  multiValueSeparator = "|"
22
22
  }) {
23
23
  var _a;
24
- const [state, setState] = reactExports.useState({});
25
- const [labelNamesMenuOpen, setLabelNamesMenuOpen] = reactExports.useState(false);
26
- const [labelValuesMenuOpen, setLabelValuesMenuOpen] = reactExports.useState(false);
24
+ const [state, setState] = useState({});
25
+ const [labelNamesMenuOpen, setLabelNamesMenuOpen] = useState(false);
26
+ const [labelValuesMenuOpen, setLabelValuesMenuOpen] = useState(false);
27
27
  const isMultiSelect = (operator = item.op) => {
28
28
  var _a2;
29
29
  return (_a2 = operators.find((op) => op.label === operator)) == null ? undefined : _a2.isMultiValue;
@@ -43,7 +43,7 @@ function LabelFilterItem({
43
43
  return uniqBy([...selectedOptions, ...labelValues], "value");
44
44
  };
45
45
  const isConflicting = isConflictingLabelFilter(item, items);
46
- const { current: id } = reactExports.useRef(v4());
46
+ const { current: id } = useRef(v4());
47
47
  return /* @__PURE__ */ React.createElement("div", { "data-testid": "visual-query-builder-dimensions-filter-item" }, /* @__PURE__ */ React.createElement(InlineField, { error: CONFLICTING_LABEL_FILTER_ERROR_MESSAGE, invalid: isConflicting ? true : undefined }, /* @__PURE__ */ React.createElement(InputGroup, null, /* @__PURE__ */ React.createElement(
48
48
  Select,
49
49
  {