@grafana/plugin-ui 0.10.9 → 0.11.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 (183) hide show
  1. package/dist/cjs/index.cjs +1799 -1325
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/cjs/index.d.cts +94 -46
  4. package/dist/esm/components/ConfigEditor/AdvancedSettings/AdvancedHttpSettings.js +42 -38
  5. package/dist/esm/components/ConfigEditor/AdvancedSettings/AdvancedHttpSettings.js.map +1 -1
  6. package/dist/esm/components/ConfigEditor/Auth/Auth.js +19 -14
  7. package/dist/esm/components/ConfigEditor/Auth/Auth.js.map +1 -1
  8. package/dist/esm/components/ConfigEditor/Auth/auth-method/AuthMethodSettings.js +19 -15
  9. package/dist/esm/components/ConfigEditor/Auth/auth-method/AuthMethodSettings.js.map +1 -1
  10. package/dist/esm/components/ConfigEditor/Auth/auth-method/BasicAuth.js +52 -49
  11. package/dist/esm/components/ConfigEditor/Auth/auth-method/BasicAuth.js.map +1 -1
  12. package/dist/esm/components/ConfigEditor/Auth/custom-headers/CustomHeader.js +59 -55
  13. package/dist/esm/components/ConfigEditor/Auth/custom-headers/CustomHeader.js.map +1 -1
  14. package/dist/esm/components/ConfigEditor/Auth/custom-headers/CustomHeaders.js +20 -17
  15. package/dist/esm/components/ConfigEditor/Auth/custom-headers/CustomHeaders.js.map +1 -1
  16. package/dist/esm/components/ConfigEditor/Auth/tls/SelfSignedCertificate.js +28 -28
  17. package/dist/esm/components/ConfigEditor/Auth/tls/SelfSignedCertificate.js.map +1 -1
  18. package/dist/esm/components/ConfigEditor/Auth/tls/SkipTLSVerification.js +2 -2
  19. package/dist/esm/components/ConfigEditor/Auth/tls/SkipTLSVerification.js.map +1 -1
  20. package/dist/esm/components/ConfigEditor/Auth/tls/TLSClientAuth.js +84 -82
  21. package/dist/esm/components/ConfigEditor/Auth/tls/TLSClientAuth.js.map +1 -1
  22. package/dist/esm/components/ConfigEditor/Auth/tls/TLSSettings.js +10 -7
  23. package/dist/esm/components/ConfigEditor/Auth/tls/TLSSettings.js.map +1 -1
  24. package/dist/esm/components/ConfigEditor/Auth/tls/TLSSettingsSection.js +8 -2
  25. package/dist/esm/components/ConfigEditor/Auth/tls/TLSSettingsSection.js.map +1 -1
  26. package/dist/esm/components/ConfigEditor/Auth/utils.js +2 -1
  27. package/dist/esm/components/ConfigEditor/Auth/utils.js.map +1 -1
  28. package/dist/esm/components/ConfigEditor/ConfigSection/ConfigDescriptionLink.js +14 -11
  29. package/dist/esm/components/ConfigEditor/ConfigSection/ConfigDescriptionLink.js.map +1 -1
  30. package/dist/esm/components/ConfigEditor/ConfigSection/ConfigSection.js +2 -2
  31. package/dist/esm/components/ConfigEditor/ConfigSection/ConfigSection.js.map +1 -1
  32. package/dist/esm/components/ConfigEditor/ConfigSection/ConfigSubSection.js +2 -2
  33. package/dist/esm/components/ConfigEditor/ConfigSection/ConfigSubSection.js.map +1 -1
  34. package/dist/esm/components/ConfigEditor/ConfigSection/GenericConfigSection.js +19 -11
  35. package/dist/esm/components/ConfigEditor/ConfigSection/GenericConfigSection.js.map +1 -1
  36. package/dist/esm/components/ConfigEditor/Connection/ConnectionSettings.js +24 -19
  37. package/dist/esm/components/ConfigEditor/Connection/ConnectionSettings.js.map +1 -1
  38. package/dist/esm/components/ConfigEditor/DataSourceDescription.js +12 -2
  39. package/dist/esm/components/ConfigEditor/DataSourceDescription.js.map +1 -1
  40. package/dist/esm/components/ConfigEditor/SecureSocksProxyToggle.js +24 -20
  41. package/dist/esm/components/ConfigEditor/SecureSocksProxyToggle.js.map +1 -1
  42. package/dist/esm/components/CustomHeadersSettings/CustomHeadersSettings.js +69 -60
  43. package/dist/esm/components/CustomHeadersSettings/CustomHeadersSettings.js.map +1 -1
  44. package/dist/esm/components/DataLinks/DataLink.js +104 -89
  45. package/dist/esm/components/DataLinks/DataLink.js.map +1 -1
  46. package/dist/esm/components/DataLinks/DataLinks.js +48 -41
  47. package/dist/esm/components/DataLinks/DataLinks.js.map +1 -1
  48. package/dist/esm/components/DataSourcePicker/DataSourcePicker.js +9 -4
  49. package/dist/esm/components/DataSourcePicker/DataSourcePicker.js.map +1 -1
  50. package/dist/esm/components/DatePicker/DatePicker.js +6 -5
  51. package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
  52. package/dist/esm/components/DatePickerWithInput/DatePickerWithInput.js +19 -15
  53. package/dist/esm/components/DatePickerWithInput/DatePickerWithInput.js.map +1 -1
  54. package/dist/esm/components/DebounceInput/DebounceInput.js +6 -5
  55. package/dist/esm/components/DebounceInput/DebounceInput.js.map +1 -1
  56. package/dist/esm/components/Plugins/PluginSignatureBadge.js +3 -2
  57. package/dist/esm/components/Plugins/PluginSignatureBadge.js.map +1 -1
  58. package/dist/esm/components/QueryEditor/AccessoryButton.js +2 -2
  59. package/dist/esm/components/QueryEditor/AccessoryButton.js.map +1 -1
  60. package/dist/esm/components/QueryEditor/CatalogSelector.js +54 -0
  61. package/dist/esm/components/QueryEditor/CatalogSelector.js.map +1 -0
  62. package/dist/esm/components/QueryEditor/ConfirmModal.js +18 -8
  63. package/dist/esm/components/QueryEditor/ConfirmModal.js.map +1 -1
  64. package/dist/esm/components/QueryEditor/DatasetSelector.js +3 -2
  65. package/dist/esm/components/QueryEditor/DatasetSelector.js.map +1 -1
  66. package/dist/esm/components/QueryEditor/EditorField.js +11 -3
  67. package/dist/esm/components/QueryEditor/EditorField.js.map +1 -1
  68. package/dist/esm/components/QueryEditor/EditorFieldGroup.js +2 -2
  69. package/dist/esm/components/QueryEditor/EditorFieldGroup.js.map +1 -1
  70. package/dist/esm/components/QueryEditor/EditorHeader.js +2 -2
  71. package/dist/esm/components/QueryEditor/EditorHeader.js.map +1 -1
  72. package/dist/esm/components/QueryEditor/EditorList.js +11 -7
  73. package/dist/esm/components/QueryEditor/EditorList.js.map +1 -1
  74. package/dist/esm/components/QueryEditor/EditorRow.js +2 -2
  75. package/dist/esm/components/QueryEditor/EditorRow.js.map +1 -1
  76. package/dist/esm/components/QueryEditor/EditorRows.js +2 -2
  77. package/dist/esm/components/QueryEditor/EditorRows.js.map +1 -1
  78. package/dist/esm/components/QueryEditor/EditorStack.js +2 -2
  79. package/dist/esm/components/QueryEditor/EditorStack.js.map +1 -1
  80. package/dist/esm/components/QueryEditor/EditorSwitch.js +3 -2
  81. package/dist/esm/components/QueryEditor/EditorSwitch.js.map +1 -1
  82. package/dist/esm/components/QueryEditor/FlexItem.js +2 -2
  83. package/dist/esm/components/QueryEditor/FlexItem.js.map +1 -1
  84. package/dist/esm/components/QueryEditor/InlineSelect.js +12 -4
  85. package/dist/esm/components/QueryEditor/InlineSelect.js.map +1 -1
  86. package/dist/esm/components/QueryEditor/InputGroup.js +3 -2
  87. package/dist/esm/components/QueryEditor/InputGroup.js.map +1 -1
  88. package/dist/esm/components/QueryEditor/QueryEditor.js +44 -37
  89. package/dist/esm/components/QueryEditor/QueryEditor.js.map +1 -1
  90. package/dist/esm/components/QueryEditor/QueryHeader.js +172 -95
  91. package/dist/esm/components/QueryEditor/QueryHeader.js.map +1 -1
  92. package/dist/esm/components/QueryEditor/RunQueryButton.js +13 -9
  93. package/dist/esm/components/QueryEditor/RunQueryButton.js.map +1 -1
  94. package/dist/esm/components/QueryEditor/SchemaSelector.js +56 -0
  95. package/dist/esm/components/QueryEditor/SchemaSelector.js.map +1 -0
  96. package/dist/esm/components/QueryEditor/Space.js +2 -2
  97. package/dist/esm/components/QueryEditor/Space.js.map +1 -1
  98. package/dist/esm/components/QueryEditor/TableSelector.js +21 -7
  99. package/dist/esm/components/QueryEditor/TableSelector.js.map +1 -1
  100. package/dist/esm/components/QueryEditor/query-editor-raw/QueryEditorRaw.js +6 -5
  101. package/dist/esm/components/QueryEditor/query-editor-raw/QueryEditorRaw.js.map +1 -1
  102. package/dist/esm/components/QueryEditor/query-editor-raw/QueryToolbox.js +26 -18
  103. package/dist/esm/components/QueryEditor/query-editor-raw/QueryToolbox.js.map +1 -1
  104. package/dist/esm/components/QueryEditor/query-editor-raw/QueryValidator.js +19 -2
  105. package/dist/esm/components/QueryEditor/query-editor-raw/QueryValidator.js.map +1 -1
  106. package/dist/esm/components/QueryEditor/query-editor-raw/RawEditor.js +42 -38
  107. package/dist/esm/components/QueryEditor/query-editor-raw/RawEditor.js.map +1 -1
  108. package/dist/esm/components/QueryEditor/types.js +1 -0
  109. package/dist/esm/components/QueryEditor/types.js.map +1 -1
  110. package/dist/esm/components/QueryEditor/visual-query-builder/AwesomeQueryBuilder.js +8 -8
  111. package/dist/esm/components/QueryEditor/visual-query-builder/AwesomeQueryBuilder.js.map +1 -1
  112. package/dist/esm/components/QueryEditor/visual-query-builder/EditorField.js +11 -3
  113. package/dist/esm/components/QueryEditor/visual-query-builder/EditorField.js.map +1 -1
  114. package/dist/esm/components/QueryEditor/visual-query-builder/EditorRow.js +2 -2
  115. package/dist/esm/components/QueryEditor/visual-query-builder/EditorRow.js.map +1 -1
  116. package/dist/esm/components/QueryEditor/visual-query-builder/EditorRows.js +2 -2
  117. package/dist/esm/components/QueryEditor/visual-query-builder/EditorRows.js.map +1 -1
  118. package/dist/esm/components/QueryEditor/visual-query-builder/GroupByRow.js +16 -12
  119. package/dist/esm/components/QueryEditor/visual-query-builder/GroupByRow.js.map +1 -1
  120. package/dist/esm/components/QueryEditor/visual-query-builder/OrderByRow.js +29 -20
  121. package/dist/esm/components/QueryEditor/visual-query-builder/OrderByRow.js.map +1 -1
  122. package/dist/esm/components/QueryEditor/visual-query-builder/Preview.js +7 -4
  123. package/dist/esm/components/QueryEditor/visual-query-builder/Preview.js.map +1 -1
  124. package/dist/esm/components/QueryEditor/visual-query-builder/SQLGroupByRow.js +2 -2
  125. package/dist/esm/components/QueryEditor/visual-query-builder/SQLGroupByRow.js.map +1 -1
  126. package/dist/esm/components/QueryEditor/visual-query-builder/SQLOrderByRow.js +2 -2
  127. package/dist/esm/components/QueryEditor/visual-query-builder/SQLOrderByRow.js.map +1 -1
  128. package/dist/esm/components/QueryEditor/visual-query-builder/SQLSelectRow.js +2 -2
  129. package/dist/esm/components/QueryEditor/visual-query-builder/SQLSelectRow.js.map +1 -1
  130. package/dist/esm/components/QueryEditor/visual-query-builder/SQLWhereRow.js +4 -4
  131. package/dist/esm/components/QueryEditor/visual-query-builder/SQLWhereRow.js.map +1 -1
  132. package/dist/esm/components/QueryEditor/visual-query-builder/SelectRow.js +52 -44
  133. package/dist/esm/components/QueryEditor/visual-query-builder/SelectRow.js.map +1 -1
  134. package/dist/esm/components/QueryEditor/visual-query-builder/VisualEditor.js +11 -2
  135. package/dist/esm/components/QueryEditor/visual-query-builder/VisualEditor.js.map +1 -1
  136. package/dist/esm/components/QueryEditor/visual-query-builder/WhereRow.js +4 -3
  137. package/dist/esm/components/QueryEditor/visual-query-builder/WhereRow.js.map +1 -1
  138. package/dist/esm/components/QueryEditorRow/QueryEditorRow.js +6 -2
  139. package/dist/esm/components/QueryEditorRow/QueryEditorRow.js.map +1 -1
  140. package/dist/esm/components/SQLEditor/components/SQLEditor.js +40 -34
  141. package/dist/esm/components/SQLEditor/components/SQLEditor.js.map +1 -1
  142. package/dist/esm/components/SQLEditor/hooks/useLatestCallback.js +16 -0
  143. package/dist/esm/components/SQLEditor/hooks/useLatestCallback.js.map +1 -0
  144. package/dist/esm/components/SQLEditor/standardSql/definition.js +1 -0
  145. package/dist/esm/components/SQLEditor/standardSql/definition.js.map +1 -1
  146. package/dist/esm/components/Segment/Segment.js +4 -3
  147. package/dist/esm/components/Segment/Segment.js.map +1 -1
  148. package/dist/esm/components/VisualQueryBuilder/components/LabelFilterItem.js +105 -99
  149. package/dist/esm/components/VisualQueryBuilder/components/LabelFilterItem.js.map +1 -1
  150. package/dist/esm/components/VisualQueryBuilder/components/LabelFilters.js +28 -27
  151. package/dist/esm/components/VisualQueryBuilder/components/LabelFilters.js.map +1 -1
  152. package/dist/esm/components/VisualQueryBuilder/components/OperationEditor.js +31 -26
  153. package/dist/esm/components/VisualQueryBuilder/components/OperationEditor.js.map +1 -1
  154. package/dist/esm/components/VisualQueryBuilder/components/OperationEditorBody.js +70 -55
  155. package/dist/esm/components/VisualQueryBuilder/components/OperationEditorBody.js.map +1 -1
  156. package/dist/esm/components/VisualQueryBuilder/components/OperationExplainedBox.js +11 -2
  157. package/dist/esm/components/VisualQueryBuilder/components/OperationExplainedBox.js.map +1 -1
  158. package/dist/esm/components/VisualQueryBuilder/components/OperationHeader.js +75 -62
  159. package/dist/esm/components/VisualQueryBuilder/components/OperationHeader.js.map +1 -1
  160. package/dist/esm/components/VisualQueryBuilder/components/OperationInfoButton.js +39 -28
  161. package/dist/esm/components/VisualQueryBuilder/components/OperationInfoButton.js.map +1 -1
  162. package/dist/esm/components/VisualQueryBuilder/components/OperationList.js +38 -31
  163. package/dist/esm/components/VisualQueryBuilder/components/OperationList.js.map +1 -1
  164. package/dist/esm/components/VisualQueryBuilder/components/OperationListExplained.js +15 -14
  165. package/dist/esm/components/VisualQueryBuilder/components/OperationListExplained.js.map +1 -1
  166. package/dist/esm/components/VisualQueryBuilder/components/OperationParamEditor.js +35 -31
  167. package/dist/esm/components/VisualQueryBuilder/components/OperationParamEditor.js.map +1 -1
  168. package/dist/esm/components/VisualQueryBuilder/components/OperationsEditorRow.js +3 -2
  169. package/dist/esm/components/VisualQueryBuilder/components/OperationsEditorRow.js.map +1 -1
  170. package/dist/esm/components/VisualQueryBuilder/components/QueryBuilderHints.js +12 -9
  171. package/dist/esm/components/VisualQueryBuilder/components/QueryBuilderHints.js.map +1 -1
  172. package/dist/esm/components/VisualQueryBuilder/components/QueryEditorModeToggle.js +2 -2
  173. package/dist/esm/components/VisualQueryBuilder/components/QueryEditorModeToggle.js.map +1 -1
  174. package/dist/esm/components/VisualQueryBuilder/components/QueryHeaderSwitch.js +6 -2
  175. package/dist/esm/components/VisualQueryBuilder/components/QueryHeaderSwitch.js.map +1 -1
  176. package/dist/esm/components/VisualQueryBuilder/components/QueryOptionGroup.js +20 -12
  177. package/dist/esm/components/VisualQueryBuilder/components/QueryOptionGroup.js.map +1 -1
  178. package/dist/esm/components/VisualQueryBuilder/components/RawQuery.js +2 -2
  179. package/dist/esm/components/VisualQueryBuilder/components/RawQuery.js.map +1 -1
  180. package/dist/esm/index.d.ts +94 -46
  181. package/dist/esm/index.js +4 -0
  182. package/dist/esm/index.js.map +1 -1
  183. package/package.json +1 -1
@@ -1,4 +1,5 @@
1
- import React__default, { useEffect } from 'react';
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { useEffect } from 'react';
2
3
  import { useAsync } from 'react-use';
3
4
  import '@grafana/data';
4
5
  import { Select } from '@grafana/ui';
@@ -38,7 +39,7 @@ const DatasetSelector = ({
38
39
  }
39
40
  }
40
41
  }, [state.value, value, applyDefault, onChange]);
41
- return /* @__PURE__ */ React__default.createElement(
42
+ return /* @__PURE__ */ jsx(
42
43
  Select,
43
44
  {
44
45
  inputId,
@@ -1 +1 @@
1
- {"version":3,"file":"DatasetSelector.js","sources":["../../../../src/components/QueryEditor/DatasetSelector.tsx"],"sourcesContent":["import React, { useEffect } from 'react';\nimport { useAsync } from 'react-use';\n\nimport { type SelectableValue } from '@grafana/data';\nimport { Select } from '@grafana/ui';\n\nimport { type DB, type ResourceSelectorProps, toOption } from './types';\n\ninterface DatasetSelectorProps extends ResourceSelectorProps {\n db: DB;\n dataset: string;\n value: string | null;\n applyDefault?: boolean;\n disabled?: boolean;\n onChange: (v: SelectableValue) => void;\n inputId?: string;\n}\n\nexport const DatasetSelector = ({\n db,\n dataset,\n value,\n onChange,\n disabled,\n className,\n applyDefault,\n inputId,\n}: DatasetSelectorProps) => {\n const state = useAsync(async () => {\n if (dataset) {\n onChange(toOption(dataset));\n return [toOption(dataset)];\n }\n\n const datasets = await db.datasets();\n return datasets.map(toOption);\n }, []);\n\n useEffect(() => {\n if (!applyDefault) {\n return;\n }\n // Set default dataset when values are fetched\n if (!value) {\n if (state.value && state.value[0]) {\n onChange(state.value[0]);\n }\n } else {\n if (state.value && state.value.find((v) => v.value === value) === undefined) {\n // if value is set and newly fetched values does not contain selected value\n if (state.value.length > 0) {\n onChange(state.value[0]);\n }\n }\n }\n }, [state.value, value, applyDefault, onChange]);\n\n return (\n <Select\n inputId={inputId}\n className={className}\n aria-label=\"Dataset selector\"\n value={value}\n options={state.value}\n onChange={onChange}\n disabled={disabled}\n isLoading={state.loading}\n menuShouldPortal={true}\n />\n );\n};\n"],"names":["React"],"mappings":";;;;;;AAkBO,MAAM,kBAAkB,CAAC;AAAA,EAC9B,EAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAA4B,KAAA;AAC1B,EAAM,MAAA,KAAA,GAAQ,SAAS,YAAY;AACjC,IAAA,IAAI,OAAS,EAAA;AACX,MAAS,QAAA,CAAA,QAAA,CAAS,OAAO,CAAC,CAAA;AAC1B,MAAO,OAAA,CAAC,QAAS,CAAA,OAAO,CAAC,CAAA;AAAA;AAG3B,IAAM,MAAA,QAAA,GAAW,MAAM,EAAA,CAAG,QAAS,EAAA;AACnC,IAAO,OAAA,QAAA,CAAS,IAAI,QAAQ,CAAA;AAAA,GAC9B,EAAG,EAAE,CAAA;AAEL,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,YAAc,EAAA;AACjB,MAAA;AAAA;AAGF,IAAA,IAAI,CAAC,KAAO,EAAA;AACV,MAAA,IAAI,KAAM,CAAA,KAAA,IAAS,KAAM,CAAA,KAAA,CAAM,CAAC,CAAG,EAAA;AACjC,QAAS,QAAA,CAAA,KAAA,CAAM,KAAM,CAAA,CAAC,CAAC,CAAA;AAAA;AACzB,KACK,MAAA;AACL,MAAI,IAAA,KAAA,CAAM,KAAS,IAAA,KAAA,CAAM,KAAM,CAAA,IAAA,CAAK,CAAC,CAAA,KAAM,CAAE,CAAA,KAAA,KAAU,KAAK,CAAA,KAAM,SAAW,EAAA;AAE3E,QAAI,IAAA,KAAA,CAAM,KAAM,CAAA,MAAA,GAAS,CAAG,EAAA;AAC1B,UAAS,QAAA,CAAA,KAAA,CAAM,KAAM,CAAA,CAAC,CAAC,CAAA;AAAA;AACzB;AACF;AACF,KACC,CAAC,KAAA,CAAM,OAAO,KAAO,EAAA,YAAA,EAAc,QAAQ,CAAC,CAAA;AAE/C,EACE,uBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,OAAA;AAAA,MACA,SAAA;AAAA,MACA,YAAW,EAAA,kBAAA;AAAA,MACX,KAAA;AAAA,MACA,SAAS,KAAM,CAAA,KAAA;AAAA,MACf,QAAA;AAAA,MACA,QAAA;AAAA,MACA,WAAW,KAAM,CAAA,OAAA;AAAA,MACjB,gBAAkB,EAAA;AAAA;AAAA,GACpB;AAEJ;;;;"}
1
+ {"version":3,"file":"DatasetSelector.js","sources":["../../../../src/components/QueryEditor/DatasetSelector.tsx"],"sourcesContent":["import { useEffect } from 'react';\nimport { useAsync } from 'react-use';\n\nimport { type SelectableValue } from '@grafana/data';\nimport { Select } from '@grafana/ui';\n\nimport { type DB, type ResourceSelectorProps, toOption } from './types';\n\ninterface DatasetSelectorProps extends ResourceSelectorProps {\n db: DB;\n dataset: string;\n value: string | null;\n applyDefault?: boolean;\n disabled?: boolean;\n onChange: (v: SelectableValue) => void;\n inputId?: string;\n}\n\nexport const DatasetSelector = ({\n db,\n dataset,\n value,\n onChange,\n disabled,\n className,\n applyDefault,\n inputId,\n}: DatasetSelectorProps) => {\n const state = useAsync(async () => {\n if (dataset) {\n onChange(toOption(dataset));\n return [toOption(dataset)];\n }\n\n const datasets = await db.datasets();\n return datasets.map(toOption);\n }, []);\n\n useEffect(() => {\n if (!applyDefault) {\n return;\n }\n // Set default dataset when values are fetched\n if (!value) {\n if (state.value && state.value[0]) {\n onChange(state.value[0]);\n }\n } else {\n if (state.value && state.value.find((v) => v.value === value) === undefined) {\n // if value is set and newly fetched values does not contain selected value\n if (state.value.length > 0) {\n onChange(state.value[0]);\n }\n }\n }\n }, [state.value, value, applyDefault, onChange]);\n\n return (\n <Select\n inputId={inputId}\n className={className}\n aria-label=\"Dataset selector\"\n value={value}\n options={state.value}\n onChange={onChange}\n disabled={disabled}\n isLoading={state.loading}\n menuShouldPortal={true}\n />\n );\n};\n"],"names":[],"mappings":";;;;;;;AAkBO,MAAM,kBAAkB,CAAC;AAAA,EAC9B,EAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAA4B,KAAA;AAC1B,EAAM,MAAA,KAAA,GAAQ,SAAS,YAAY;AACjC,IAAA,IAAI,OAAS,EAAA;AACX,MAAS,QAAA,CAAA,QAAA,CAAS,OAAO,CAAC,CAAA;AAC1B,MAAO,OAAA,CAAC,QAAS,CAAA,OAAO,CAAC,CAAA;AAAA;AAG3B,IAAM,MAAA,QAAA,GAAW,MAAM,EAAA,CAAG,QAAS,EAAA;AACnC,IAAO,OAAA,QAAA,CAAS,IAAI,QAAQ,CAAA;AAAA,GAC9B,EAAG,EAAE,CAAA;AAEL,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,YAAc,EAAA;AACjB,MAAA;AAAA;AAGF,IAAA,IAAI,CAAC,KAAO,EAAA;AACV,MAAA,IAAI,KAAM,CAAA,KAAA,IAAS,KAAM,CAAA,KAAA,CAAM,CAAC,CAAG,EAAA;AACjC,QAAS,QAAA,CAAA,KAAA,CAAM,KAAM,CAAA,CAAC,CAAC,CAAA;AAAA;AACzB,KACK,MAAA;AACL,MAAI,IAAA,KAAA,CAAM,KAAS,IAAA,KAAA,CAAM,KAAM,CAAA,IAAA,CAAK,CAAC,CAAA,KAAM,CAAE,CAAA,KAAA,KAAU,KAAK,CAAA,KAAM,SAAW,EAAA;AAE3E,QAAI,IAAA,KAAA,CAAM,KAAM,CAAA,MAAA,GAAS,CAAG,EAAA;AAC1B,UAAS,QAAA,CAAA,KAAA,CAAM,KAAM,CAAA,CAAC,CAAC,CAAA;AAAA;AACzB;AACF;AACF,KACC,CAAC,KAAA,CAAM,OAAO,KAAO,EAAA,YAAA,EAAc,QAAQ,CAAC,CAAA;AAE/C,EACE,uBAAA,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,OAAA;AAAA,MACA,SAAA;AAAA,MACA,YAAW,EAAA,kBAAA;AAAA,MACX,KAAA;AAAA,MACA,SAAS,KAAM,CAAA,KAAA;AAAA,MACf,QAAA;AAAA,MACA,QAAA;AAAA,MACA,WAAW,KAAM,CAAA,OAAA;AAAA,MACjB,gBAAkB,EAAA;AAAA;AAAA,GACpB;AAEJ;;;;"}
@@ -1,5 +1,6 @@
1
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
1
2
  import { css } from '@emotion/css';
2
- import React__default from 'react';
3
+ import 'react';
3
4
  import '@grafana/data';
4
5
  import { useStyles2, ReactUtils, Tooltip, Icon, Space, Field } from '@grafana/ui';
5
6
 
@@ -8,8 +9,15 @@ const EditorField = (props) => {
8
9
  const { label, optional, tooltip, tooltipInteractive, children, width, ...fieldProps } = props;
9
10
  const styles = useStyles2(getStyles, width);
10
11
  const childInputId = (fieldProps == null ? undefined : fieldProps.htmlFor) || ((_a = ReactUtils) == null ? undefined : _a.getChildId(children));
11
- const labelEl = /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement("label", { className: styles.label, htmlFor: childInputId }, label, optional && /* @__PURE__ */ React__default.createElement("span", { className: styles.optional }, " - optional"), tooltip && /* @__PURE__ */ React__default.createElement(Tooltip, { placement: "top", content: tooltip, theme: "info", interactive: tooltipInteractive }, /* @__PURE__ */ React__default.createElement(Icon, { tabIndex: 0, name: "info-circle", size: "sm", className: styles.icon }))), /* @__PURE__ */ React__default.createElement(Space, { v: 0.5 }));
12
- return /* @__PURE__ */ React__default.createElement("div", { className: styles.root }, /* @__PURE__ */ React__default.createElement(Field, { className: styles.field, label: labelEl, ...fieldProps }, children));
12
+ const labelEl = /* @__PURE__ */ jsxs(Fragment, { children: [
13
+ /* @__PURE__ */ jsxs("label", { className: styles.label, htmlFor: childInputId, children: [
14
+ label,
15
+ optional && /* @__PURE__ */ jsx("span", { className: styles.optional, children: " - optional" }),
16
+ tooltip && /* @__PURE__ */ jsx(Tooltip, { placement: "top", content: tooltip, theme: "info", interactive: tooltipInteractive, children: /* @__PURE__ */ jsx(Icon, { tabIndex: 0, name: "info-circle", size: "sm", className: styles.icon }) })
17
+ ] }),
18
+ /* @__PURE__ */ jsx(Space, { v: 0.5 })
19
+ ] });
20
+ return /* @__PURE__ */ jsx("div", { className: styles.root, children: /* @__PURE__ */ jsx(Field, { className: styles.field, label: labelEl, ...fieldProps, children }) });
13
21
  };
14
22
  const getStyles = (theme, width) => {
15
23
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"EditorField.js","sources":["../../../../src/components/QueryEditor/EditorField.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport React, { type ComponentProps } from 'react';\n\nimport { type GrafanaTheme2 } from '@grafana/data';\nimport { Field, Icon, type PopoverContent, ReactUtils, Space, Tooltip, useStyles2 } from '@grafana/ui';\n\ninterface EditorFieldProps extends ComponentProps<typeof Field> {\n label: string;\n children: React.ReactElement;\n width?: number | string;\n optional?: boolean;\n tooltip?: PopoverContent;\n tooltipInteractive?: boolean;\n}\nexport const EditorField = (props: EditorFieldProps) => {\n const { label, optional, tooltip, tooltipInteractive, children, width, ...fieldProps } = props;\n\n const styles = useStyles2(getStyles, width);\n\n // Null check for backward compatibility\n const childInputId = fieldProps?.htmlFor || ReactUtils?.getChildId(children);\n\n const labelEl = (\n <>\n <label className={styles.label} htmlFor={childInputId}>\n {label}\n {optional && <span className={styles.optional}> - optional</span>}\n {tooltip && (\n <Tooltip placement=\"top\" content={tooltip} theme=\"info\" interactive={tooltipInteractive}>\n <Icon tabIndex={0} name=\"info-circle\" size=\"sm\" className={styles.icon} />\n </Tooltip>\n )}\n </label>\n <Space v={0.5} />\n </>\n );\n\n return (\n <div className={styles.root}>\n <Field className={styles.field} label={labelEl} {...fieldProps}>\n {children}\n </Field>\n </div>\n );\n};\n\nconst getStyles = (theme: GrafanaTheme2, width?: number | string) => {\n return {\n root: css({\n minWidth: theme.spacing(width ?? 0),\n }),\n label: css({\n fontSize: 12,\n fontWeight: theme.typography.fontWeightMedium,\n }),\n optional: css({\n fontStyle: 'italic',\n color: theme.colors.text.secondary,\n }),\n field: css({\n marginBottom: 0, // GrafanaUI/Field has a bottom margin which we must remove\n }),\n icon: css({\n color: theme.colors.text.secondary,\n marginLeft: theme.spacing(1),\n ':hover': {\n color: theme.colors.text.primary,\n },\n }),\n };\n};\n"],"names":["React"],"mappings":";;;;;AAca,MAAA,WAAA,GAAc,CAAC,KAA4B,KAAA;AAdxD,EAAA,IAAA,EAAA;AAeE,EAAM,MAAA,EAAE,OAAO,QAAU,EAAA,OAAA,EAAS,oBAAoB,QAAU,EAAA,KAAA,EAAO,GAAG,UAAA,EAAe,GAAA,KAAA;AAEzF,EAAM,MAAA,MAAA,GAAS,UAAW,CAAA,SAAA,EAAW,KAAK,CAAA;AAG1C,EAAA,MAAM,YAAe,GAAA,CAAA,UAAA,IAAA,IAAA,GAAA,SAAA,GAAA,UAAA,CAAY,OAAW,MAAA,CAAA,EAAA,GAAA,UAAA,KAAA,IAAA,GAAA,SAAA,GAAA,EAAA,CAAY,UAAW,CAAA,QAAA,CAAA,CAAA;AAEnE,EAAM,MAAA,OAAA,+FAEDA,cAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAM,WAAW,MAAO,CAAA,KAAA,EAAO,SAAS,YACtC,EAAA,EAAA,KAAA,EACA,4BAAaA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAK,WAAW,MAAO,CAAA,QAAA,EAAA,EAAU,aAAW,CACzD,EAAA,OAAA,oBACEA,cAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAQ,SAAU,EAAA,KAAA,EAAM,SAAS,OAAS,EAAA,KAAA,EAAM,QAAO,WAAa,EAAA,kBAAA,EAAA,+CAClE,IAAK,EAAA,EAAA,QAAA,EAAU,CAAG,EAAA,IAAA,EAAK,aAAc,EAAA,IAAA,EAAK,MAAK,SAAW,EAAA,MAAA,CAAO,MAAM,CAC1E,CAEJ,mBACCA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAM,CAAG,EAAA,GAAA,EAAK,CACjB,CAAA;AAGF,EAAA,uBACGA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAI,SAAW,EAAA,MAAA,CAAO,wBACpBA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAM,SAAW,EAAA,MAAA,CAAO,OAAO,KAAO,EAAA,OAAA,EAAU,GAAG,UAAA,EAAA,EACjD,QACH,CACF,CAAA;AAEJ;AAEA,MAAM,SAAA,GAAY,CAAC,KAAA,EAAsB,KAA4B,KAAA;AACnE,EAAO,OAAA;AAAA,IACL,MAAM,GAAI,CAAA;AAAA,MACR,QAAU,EAAA,KAAA,CAAM,OAAQ,CAAA,KAAA,IAAA,IAAA,GAAA,KAAA,GAAS,CAAC;AAAA,KACnC,CAAA;AAAA,IACD,OAAO,GAAI,CAAA;AAAA,MACT,QAAU,EAAA,EAAA;AAAA,MACV,UAAA,EAAY,MAAM,UAAW,CAAA;AAAA,KAC9B,CAAA;AAAA,IACD,UAAU,GAAI,CAAA;AAAA,MACZ,SAAW,EAAA,QAAA;AAAA,MACX,KAAA,EAAO,KAAM,CAAA,MAAA,CAAO,IAAK,CAAA;AAAA,KAC1B,CAAA;AAAA,IACD,OAAO,GAAI,CAAA;AAAA,MACT,YAAc,EAAA;AAAA;AAAA,KACf,CAAA;AAAA,IACD,MAAM,GAAI,CAAA;AAAA,MACR,KAAA,EAAO,KAAM,CAAA,MAAA,CAAO,IAAK,CAAA,SAAA;AAAA,MACzB,UAAA,EAAY,KAAM,CAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,MAC3B,QAAU,EAAA;AAAA,QACR,KAAA,EAAO,KAAM,CAAA,MAAA,CAAO,IAAK,CAAA;AAAA;AAC3B,KACD;AAAA,GACH;AACF,CAAA;;;;"}
1
+ {"version":3,"file":"EditorField.js","sources":["../../../../src/components/QueryEditor/EditorField.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { type ComponentProps } from 'react';\n\nimport { type GrafanaTheme2 } from '@grafana/data';\nimport { Field, Icon, type PopoverContent, ReactUtils, Space, Tooltip, useStyles2 } from '@grafana/ui';\n\ninterface EditorFieldProps extends ComponentProps<typeof Field> {\n label: string;\n children: React.ReactElement;\n width?: number | string;\n optional?: boolean;\n tooltip?: PopoverContent;\n tooltipInteractive?: boolean;\n}\nexport const EditorField = (props: EditorFieldProps) => {\n const { label, optional, tooltip, tooltipInteractive, children, width, ...fieldProps } = props;\n\n const styles = useStyles2(getStyles, width);\n\n // Null check for backward compatibility\n const childInputId = fieldProps?.htmlFor || ReactUtils?.getChildId(children);\n\n const labelEl = (\n <>\n <label className={styles.label} htmlFor={childInputId}>\n {label}\n {optional && <span className={styles.optional}> - optional</span>}\n {tooltip && (\n <Tooltip placement=\"top\" content={tooltip} theme=\"info\" interactive={tooltipInteractive}>\n <Icon tabIndex={0} name=\"info-circle\" size=\"sm\" className={styles.icon} />\n </Tooltip>\n )}\n </label>\n <Space v={0.5} />\n </>\n );\n\n return (\n <div className={styles.root}>\n <Field className={styles.field} label={labelEl} {...fieldProps}>\n {children}\n </Field>\n </div>\n );\n};\n\nconst getStyles = (theme: GrafanaTheme2, width?: number | string) => {\n return {\n root: css({\n minWidth: theme.spacing(width ?? 0),\n }),\n label: css({\n fontSize: 12,\n fontWeight: theme.typography.fontWeightMedium,\n }),\n optional: css({\n fontStyle: 'italic',\n color: theme.colors.text.secondary,\n }),\n field: css({\n marginBottom: 0, // GrafanaUI/Field has a bottom margin which we must remove\n }),\n icon: css({\n color: theme.colors.text.secondary,\n marginLeft: theme.spacing(1),\n ':hover': {\n color: theme.colors.text.primary,\n },\n }),\n };\n};\n"],"names":[],"mappings":";;;;;;AAca,MAAA,WAAA,GAAc,CAAC,KAA4B,KAAA;AAdxD,EAAA,IAAA,EAAA;AAeE,EAAM,MAAA,EAAE,OAAO,QAAU,EAAA,OAAA,EAAS,oBAAoB,QAAU,EAAA,KAAA,EAAO,GAAG,UAAA,EAAe,GAAA,KAAA;AAEzF,EAAM,MAAA,MAAA,GAAS,UAAW,CAAA,SAAA,EAAW,KAAK,CAAA;AAG1C,EAAA,MAAM,YAAe,GAAA,CAAA,UAAA,IAAA,IAAA,GAAA,SAAA,GAAA,UAAA,CAAY,OAAW,MAAA,CAAA,EAAA,GAAA,UAAA,KAAA,IAAA,GAAA,SAAA,GAAA,EAAA,CAAY,UAAW,CAAA,QAAA,CAAA,CAAA;AAEnE,EAAA,MAAM,0BAEF,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,OAAM,EAAA,EAAA,SAAA,EAAW,MAAO,CAAA,KAAA,EAAO,SAAS,YACtC,EAAA,QAAA,EAAA;AAAA,MAAA,KAAA;AAAA,MACA,4BAAa,GAAA,CAAA,MAAA,EAAA,EAAK,SAAW,EAAA,MAAA,CAAO,UAAU,QAAW,EAAA,aAAA,EAAA,CAAA;AAAA,MACzD,OAAA,wBACE,OAAQ,EAAA,EAAA,SAAA,EAAU,OAAM,OAAS,EAAA,OAAA,EAAS,KAAM,EAAA,MAAA,EAAO,WAAa,EAAA,kBAAA,EACnE,8BAAC,IAAK,EAAA,EAAA,QAAA,EAAU,GAAG,IAAK,EAAA,aAAA,EAAc,MAAK,IAAK,EAAA,SAAA,EAAW,MAAO,CAAA,IAAA,EAAM,CAC1E,EAAA;AAAA,KAEJ,EAAA,CAAA;AAAA,oBACA,GAAA,CAAC,KAAM,EAAA,EAAA,CAAA,EAAG,GAAK,EAAA;AAAA,GACjB,EAAA,CAAA;AAGF,EAAA,uBACG,GAAA,CAAA,KAAA,EAAA,EAAI,SAAW,EAAA,MAAA,CAAO,MACrB,QAAC,kBAAA,GAAA,CAAA,KAAA,EAAA,EAAM,SAAW,EAAA,MAAA,CAAO,OAAO,KAAO,EAAA,OAAA,EAAU,GAAG,UAAA,EACjD,UACH,CACF,EAAA,CAAA;AAEJ;AAEA,MAAM,SAAA,GAAY,CAAC,KAAA,EAAsB,KAA4B,KAAA;AACnE,EAAO,OAAA;AAAA,IACL,MAAM,GAAI,CAAA;AAAA,MACR,QAAU,EAAA,KAAA,CAAM,OAAQ,CAAA,KAAA,IAAA,IAAA,GAAA,KAAA,GAAS,CAAC;AAAA,KACnC,CAAA;AAAA,IACD,OAAO,GAAI,CAAA;AAAA,MACT,QAAU,EAAA,EAAA;AAAA,MACV,UAAA,EAAY,MAAM,UAAW,CAAA;AAAA,KAC9B,CAAA;AAAA,IACD,UAAU,GAAI,CAAA;AAAA,MACZ,SAAW,EAAA,QAAA;AAAA,MACX,KAAA,EAAO,KAAM,CAAA,MAAA,CAAO,IAAK,CAAA;AAAA,KAC1B,CAAA;AAAA,IACD,OAAO,GAAI,CAAA;AAAA,MACT,YAAc,EAAA;AAAA;AAAA,KACf,CAAA;AAAA,IACD,MAAM,GAAI,CAAA;AAAA,MACR,KAAA,EAAO,KAAM,CAAA,MAAA,CAAO,IAAK,CAAA,SAAA;AAAA,MACzB,UAAA,EAAY,KAAM,CAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,MAC3B,QAAU,EAAA;AAAA,QACR,KAAA,EAAO,KAAM,CAAA,MAAA,CAAO,IAAK,CAAA;AAAA;AAC3B,KACD;AAAA,GACH;AACF,CAAA;;;;"}
@@ -1,8 +1,8 @@
1
- import React__default from 'react';
1
+ import { jsx } from 'react/jsx-runtime';
2
2
  import { EditorStack } from './EditorStack.js';
3
3
 
4
4
  const EditorFieldGroup = ({ children }) => {
5
- return /* @__PURE__ */ React__default.createElement(EditorStack, { gap: 1 }, children);
5
+ return /* @__PURE__ */ jsx(EditorStack, { gap: 1, children });
6
6
  };
7
7
 
8
8
  export { EditorFieldGroup };
@@ -1 +1 @@
1
- {"version":3,"file":"EditorFieldGroup.js","sources":["../../../../src/components/QueryEditor/EditorFieldGroup.tsx"],"sourcesContent":["import React from 'react';\nimport { EditorStack } from './EditorStack';\n\ninterface EditorFieldGroupProps {\n children?: React.ReactNode;\n}\n\nexport const EditorFieldGroup = ({ children }: EditorFieldGroupProps) => {\n return <EditorStack gap={1}>{children}</EditorStack>;\n};\n"],"names":["React"],"mappings":";;;AAOO,MAAM,gBAAmB,GAAA,CAAC,EAAE,QAAA,EAAsC,KAAA;AACvE,EAAA,uBAAQA,cAAA,CAAA,aAAA,CAAA,WAAA,EAAA,EAAY,GAAK,EAAA,CAAA,EAAA,EAAI,QAAS,CAAA;AACxC;;;;"}
1
+ {"version":3,"file":"EditorFieldGroup.js","sources":["../../../../src/components/QueryEditor/EditorFieldGroup.tsx"],"sourcesContent":["import { EditorStack } from './EditorStack';\n\ninterface EditorFieldGroupProps {\n children?: React.ReactNode;\n}\n\nexport const EditorFieldGroup = ({ children }: EditorFieldGroupProps) => {\n return <EditorStack gap={1}>{children}</EditorStack>;\n};\n"],"names":[],"mappings":";;;AAMO,MAAM,gBAAmB,GAAA,CAAC,EAAE,QAAA,EAAsC,KAAA;AACvE,EAAA,uBAAQ,GAAA,CAAA,WAAA,EAAA,EAAY,GAAK,EAAA,CAAA,EAAI,QAAS,EAAA,CAAA;AACxC;;;;"}
@@ -1,11 +1,11 @@
1
+ import { jsx } from 'react/jsx-runtime';
1
2
  import { css } from '@emotion/css';
2
- import React__default from 'react';
3
3
  import '@grafana/data';
4
4
  import { useStyles2 } from '@grafana/ui';
5
5
 
6
6
  const EditorHeader = ({ children }) => {
7
7
  const styles = useStyles2(getStyles);
8
- return /* @__PURE__ */ React__default.createElement("div", { className: styles.root }, children);
8
+ return /* @__PURE__ */ jsx("div", { className: styles.root, children });
9
9
  };
10
10
  const getStyles = (theme) => ({
11
11
  root: css({
@@ -1 +1 @@
1
- {"version":3,"file":"EditorHeader.js","sources":["../../../../src/components/QueryEditor/EditorHeader.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport React from 'react';\n\nimport { type GrafanaTheme2 } from '@grafana/data';\nimport { useStyles2 } from '@grafana/ui';\n\ninterface EditorHeaderProps {\n children?: React.ReactNode;\n}\n\nexport const EditorHeader = ({ children }: EditorHeaderProps) => {\n const styles = useStyles2(getStyles);\n\n return <div className={styles.root}>{children}</div>;\n};\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n root: css({\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n gap: theme.spacing(3),\n minHeight: theme.spacing(4),\n }),\n});\n"],"names":["React"],"mappings":";;;;;AAUO,MAAM,YAAe,GAAA,CAAC,EAAE,QAAA,EAAkC,KAAA;AAC/D,EAAM,MAAA,MAAA,GAAS,WAAW,SAAS,CAAA;AAEnC,EAAA,uBAAQA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAI,SAAW,EAAA,MAAA,CAAO,QAAO,QAAS,CAAA;AAChD;AAEA,MAAM,SAAA,GAAY,CAAC,KAA0B,MAAA;AAAA,EAC3C,MAAM,GAAI,CAAA;AAAA,IACR,OAAS,EAAA,MAAA;AAAA,IACT,QAAU,EAAA,MAAA;AAAA,IACV,UAAY,EAAA,QAAA;AAAA,IACZ,GAAA,EAAK,KAAM,CAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,IACpB,SAAA,EAAW,KAAM,CAAA,OAAA,CAAQ,CAAC;AAAA,GAC3B;AACH,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"EditorHeader.js","sources":["../../../../src/components/QueryEditor/EditorHeader.tsx"],"sourcesContent":["import { css } from '@emotion/css';\n\nimport { type GrafanaTheme2 } from '@grafana/data';\nimport { useStyles2 } from '@grafana/ui';\n\ninterface EditorHeaderProps {\n children?: React.ReactNode;\n}\n\nexport const EditorHeader = ({ children }: EditorHeaderProps) => {\n const styles = useStyles2(getStyles);\n\n return <div className={styles.root}>{children}</div>;\n};\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n root: css({\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n gap: theme.spacing(3),\n minHeight: theme.spacing(4),\n }),\n});\n"],"names":[],"mappings":";;;;;AASO,MAAM,YAAe,GAAA,CAAC,EAAE,QAAA,EAAkC,KAAA;AAC/D,EAAM,MAAA,MAAA,GAAS,WAAW,SAAS,CAAA;AAEnC,EAAA,uBAAQ,GAAA,CAAA,KAAA,EAAA,EAAI,SAAW,EAAA,MAAA,CAAO,MAAO,QAAS,EAAA,CAAA;AAChD;AAEA,MAAM,SAAA,GAAY,CAAC,KAA0B,MAAA;AAAA,EAC3C,MAAM,GAAI,CAAA;AAAA,IACR,OAAS,EAAA,MAAA;AAAA,IACT,QAAU,EAAA,MAAA;AAAA,IACV,UAAY,EAAA,QAAA;AAAA,IACZ,GAAA,EAAK,KAAM,CAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,IACpB,SAAA,EAAW,KAAM,CAAA,OAAA,CAAQ,CAAC;AAAA,GAC3B;AACH,CAAA,CAAA;;;;"}
@@ -1,8 +1,9 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { forwardRef } from 'react';
1
3
  import { Button } from '@grafana/ui';
2
- import React__default from 'react';
3
4
  import { EditorStack } from './EditorStack.js';
4
5
 
5
- const EditorList = React__default.forwardRef(function EditorList2({ items, renderItem, onChange }, ref) {
6
+ const EditorList = forwardRef(function EditorList2({ items, renderItem, onChange }, ref) {
6
7
  const onAddItem = () => {
7
8
  const newItems = [...items, {}];
8
9
  onChange(newItems);
@@ -17,11 +18,14 @@ const EditorList = React__default.forwardRef(function EditorList2({ items, rende
17
18
  newItems.splice(itemIndex, 1);
18
19
  onChange(newItems);
19
20
  };
20
- return /* @__PURE__ */ React__default.createElement(EditorStack, null, items.map((item, index) => /* @__PURE__ */ React__default.createElement("div", { key: index }, renderItem(
21
- item,
22
- (newItem) => onChangeItem(index, newItem),
23
- () => onDeleteItem(index)
24
- ))), /* @__PURE__ */ React__default.createElement(Button, { ref, onClick: onAddItem, variant: "secondary", size: "md", icon: "plus", "aria-label": "Add", type: "button" }));
21
+ return /* @__PURE__ */ jsxs(EditorStack, { children: [
22
+ items.map((item, index) => /* @__PURE__ */ jsx("div", { children: renderItem(
23
+ item,
24
+ (newItem) => onChangeItem(index, newItem),
25
+ () => onDeleteItem(index)
26
+ ) }, index)),
27
+ /* @__PURE__ */ jsx(Button, { ref, onClick: onAddItem, variant: "secondary", size: "md", icon: "plus", "aria-label": "Add", type: "button" })
28
+ ] });
25
29
  });
26
30
 
27
31
  export { EditorList };
@@ -1 +1 @@
1
- {"version":3,"file":"EditorList.js","sources":["../../../../src/components/QueryEditor/EditorList.tsx"],"sourcesContent":["import { Button } from '@grafana/ui';\nimport React from 'react';\nimport { EditorStack } from './EditorStack';\n\ninterface EditorListProps<T> {\n items: Array<Partial<T>>;\n renderItem: (\n item: Partial<T>,\n onChangeItem: (item: Partial<T>) => void,\n onDeleteItem: () => void\n ) => React.ReactElement;\n onChange: (items: Array<Partial<T>>) => void;\n}\n\nexport const EditorList = React.forwardRef(function EditorList<T>(\n { items, renderItem, onChange }: EditorListProps<T>,\n ref: React.Ref<HTMLButtonElement>\n) {\n const onAddItem = () => {\n const newItems = [...items, {}];\n\n onChange(newItems);\n };\n\n const onChangeItem = (itemIndex: number, newItem: Partial<T>) => {\n const newItems = [...items];\n newItems[itemIndex] = newItem;\n onChange(newItems);\n };\n\n const onDeleteItem = (itemIndex: number) => {\n const newItems = [...items];\n newItems.splice(itemIndex, 1);\n onChange(newItems);\n };\n return (\n <EditorStack>\n {items.map((item, index) => (\n <div key={index}>\n {renderItem(\n item,\n (newItem) => onChangeItem(index, newItem),\n () => onDeleteItem(index)\n )}\n </div>\n ))}\n <Button ref={ref} onClick={onAddItem} variant=\"secondary\" size=\"md\" icon=\"plus\" aria-label=\"Add\" type=\"button\" />\n </EditorStack>\n );\n});\n"],"names":["React","EditorList"],"mappings":";;;;AAca,MAAA,UAAA,GAAaA,cAAM,CAAA,UAAA,CAAW,SAASC,WAAAA,CAClD,EAAE,KAAO,EAAA,UAAA,EAAY,QAAS,EAAA,EAC9B,GACA,EAAA;AACA,EAAA,MAAM,YAAY,MAAM;AACtB,IAAA,MAAM,QAAW,GAAA,CAAC,GAAG,KAAA,EAAO,EAAE,CAAA;AAE9B,IAAA,QAAA,CAAS,QAAQ,CAAA;AAAA,GACnB;AAEA,EAAM,MAAA,YAAA,GAAe,CAAC,SAAA,EAAmB,OAAwB,KAAA;AAC/D,IAAM,MAAA,QAAA,GAAW,CAAC,GAAG,KAAK,CAAA;AAC1B,IAAA,QAAA,CAAS,SAAS,CAAI,GAAA,OAAA;AACtB,IAAA,QAAA,CAAS,QAAQ,CAAA;AAAA,GACnB;AAEA,EAAM,MAAA,YAAA,GAAe,CAAC,SAAsB,KAAA;AAC1C,IAAM,MAAA,QAAA,GAAW,CAAC,GAAG,KAAK,CAAA;AAC1B,IAAS,QAAA,CAAA,MAAA,CAAO,WAAW,CAAC,CAAA;AAC5B,IAAA,QAAA,CAAS,QAAQ,CAAA;AAAA,GACnB;AACA,EACE,uBAAAD,cAAA,CAAA,aAAA,CAAC,WACE,EAAA,IAAA,EAAA,KAAA,CAAM,GAAI,CAAA,CAAC,MAAM,KAChB,qBAAAA,cAAA,CAAA,aAAA,CAAC,KAAI,EAAA,EAAA,GAAA,EAAK,KACP,EAAA,EAAA,UAAA;AAAA,IACC,IAAA;AAAA,IACA,CAAC,OAAA,KAAY,YAAa,CAAA,KAAA,EAAO,OAAO,CAAA;AAAA,IACxC,MAAM,aAAa,KAAK;AAAA,GAE5B,CACD,CAAA,+CACA,MAAO,EAAA,EAAA,GAAA,EAAU,SAAS,SAAW,EAAA,OAAA,EAAQ,WAAY,EAAA,IAAA,EAAK,MAAK,IAAK,EAAA,MAAA,EAAO,cAAW,KAAM,EAAA,IAAA,EAAK,UAAS,CACjH,CAAA;AAEJ,CAAC;;;;"}
1
+ {"version":3,"file":"EditorList.js","sources":["../../../../src/components/QueryEditor/EditorList.tsx"],"sourcesContent":["import { type ReactElement, type Ref, forwardRef } from 'react';\nimport { Button } from '@grafana/ui';\n\nimport { EditorStack } from './EditorStack';\n\ninterface EditorListProps<T> {\n items: Array<Partial<T>>;\n renderItem: (item: Partial<T>, onChangeItem: (item: Partial<T>) => void, onDeleteItem: () => void) => ReactElement;\n onChange: (items: Array<Partial<T>>) => void;\n}\n\nexport const EditorList = forwardRef(function EditorList<T>(\n { items, renderItem, onChange }: EditorListProps<T>,\n ref: Ref<HTMLButtonElement>\n) {\n const onAddItem = () => {\n const newItems = [...items, {}];\n\n onChange(newItems);\n };\n\n const onChangeItem = (itemIndex: number, newItem: Partial<T>) => {\n const newItems = [...items];\n newItems[itemIndex] = newItem;\n onChange(newItems);\n };\n\n const onDeleteItem = (itemIndex: number) => {\n const newItems = [...items];\n newItems.splice(itemIndex, 1);\n onChange(newItems);\n };\n return (\n <EditorStack>\n {items.map((item, index) => (\n <div key={index}>\n {renderItem(\n item,\n (newItem) => onChangeItem(index, newItem),\n () => onDeleteItem(index)\n )}\n </div>\n ))}\n <Button ref={ref} onClick={onAddItem} variant=\"secondary\" size=\"md\" icon=\"plus\" aria-label=\"Add\" type=\"button\" />\n </EditorStack>\n );\n});\n"],"names":["EditorList"],"mappings":";;;;;AAWa,MAAA,UAAA,GAAa,WAAW,SAASA,WAAAA,CAC5C,EAAE,KAAO,EAAA,UAAA,EAAY,QAAS,EAAA,EAC9B,GACA,EAAA;AACA,EAAA,MAAM,YAAY,MAAM;AACtB,IAAA,MAAM,QAAW,GAAA,CAAC,GAAG,KAAA,EAAO,EAAE,CAAA;AAE9B,IAAA,QAAA,CAAS,QAAQ,CAAA;AAAA,GACnB;AAEA,EAAM,MAAA,YAAA,GAAe,CAAC,SAAA,EAAmB,OAAwB,KAAA;AAC/D,IAAM,MAAA,QAAA,GAAW,CAAC,GAAG,KAAK,CAAA;AAC1B,IAAA,QAAA,CAAS,SAAS,CAAI,GAAA,OAAA;AACtB,IAAA,QAAA,CAAS,QAAQ,CAAA;AAAA,GACnB;AAEA,EAAM,MAAA,YAAA,GAAe,CAAC,SAAsB,KAAA;AAC1C,IAAM,MAAA,QAAA,GAAW,CAAC,GAAG,KAAK,CAAA;AAC1B,IAAS,QAAA,CAAA,MAAA,CAAO,WAAW,CAAC,CAAA;AAC5B,IAAA,QAAA,CAAS,QAAQ,CAAA;AAAA,GACnB;AACA,EAAA,4BACG,WACE,EAAA,EAAA,QAAA,EAAA;AAAA,IAAA,KAAA,CAAM,GAAI,CAAA,CAAC,IAAM,EAAA,KAAA,yBACf,KACE,EAAA,EAAA,QAAA,EAAA,UAAA;AAAA,MACC,IAAA;AAAA,MACA,CAAC,OAAA,KAAY,YAAa,CAAA,KAAA,EAAO,OAAO,CAAA;AAAA,MACxC,MAAM,aAAa,KAAK;AAAA,KAC1B,EAAA,EALQ,KAMV,CACD,CAAA;AAAA,oBACA,GAAA,CAAA,MAAA,EAAA,EAAO,GAAU,EAAA,OAAA,EAAS,WAAW,OAAQ,EAAA,WAAA,EAAY,IAAK,EAAA,IAAA,EAAK,IAAK,EAAA,MAAA,EAAO,YAAW,EAAA,KAAA,EAAM,MAAK,QAAS,EAAA;AAAA,GACjH,EAAA,CAAA;AAEJ,CAAC;;;;"}
@@ -1,12 +1,12 @@
1
+ import { jsx } from 'react/jsx-runtime';
1
2
  import { css } from '@emotion/css';
2
- import React__default from 'react';
3
3
  import '@grafana/data';
4
4
  import { useStyles2 } from '@grafana/ui';
5
5
  import { EditorStack } from './EditorStack.js';
6
6
 
7
7
  const EditorRow = ({ children }) => {
8
8
  const styles = useStyles2(getStyles);
9
- return /* @__PURE__ */ React__default.createElement("div", { className: styles.root }, /* @__PURE__ */ React__default.createElement(EditorStack, { gap: 2 }, children));
9
+ return /* @__PURE__ */ jsx("div", { className: styles.root, children: /* @__PURE__ */ jsx(EditorStack, { gap: 2, children }) });
10
10
  };
11
11
  const getStyles = (theme) => {
12
12
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"EditorRow.js","sources":["../../../../src/components/QueryEditor/EditorRow.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport React from 'react';\n\nimport { type GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '@grafana/ui';\nimport { EditorStack } from './EditorStack';\n\ninterface EditorRowProps {\n children?: React.ReactNode;\n}\n\nexport const EditorRow = ({ children }: EditorRowProps) => {\n const styles = useStyles2(getStyles);\n\n return (\n <div className={styles.root}>\n <EditorStack gap={2}>{children}</EditorStack>\n </div>\n );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n root: css({\n padding: theme.spacing(1),\n backgroundColor: theme.colors.background.secondary,\n borderRadius: theme.shape.radius.default,\n }),\n };\n};\n"],"names":["React"],"mappings":";;;;;;AAYO,MAAM,SAAY,GAAA,CAAC,EAAE,QAAA,EAA+B,KAAA;AACzD,EAAM,MAAA,MAAA,GAAS,WAAW,SAAS,CAAA;AAEnC,EACE,uBAAAA,cAAA,CAAA,aAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAW,MAAO,CAAA,IAAA,EAAA,+CACpB,WAAY,EAAA,EAAA,GAAA,EAAK,CAAI,EAAA,EAAA,QAAS,CACjC,CAAA;AAEJ;AAEA,MAAM,SAAA,GAAY,CAAC,KAAyB,KAAA;AAC1C,EAAO,OAAA;AAAA,IACL,MAAM,GAAI,CAAA;AAAA,MACR,OAAA,EAAS,KAAM,CAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,MACxB,eAAA,EAAiB,KAAM,CAAA,MAAA,CAAO,UAAW,CAAA,SAAA;AAAA,MACzC,YAAA,EAAc,KAAM,CAAA,KAAA,CAAM,MAAO,CAAA;AAAA,KAClC;AAAA,GACH;AACF,CAAA;;;;"}
1
+ {"version":3,"file":"EditorRow.js","sources":["../../../../src/components/QueryEditor/EditorRow.tsx"],"sourcesContent":["import { css } from '@emotion/css';\n\nimport { type GrafanaTheme2 } from '@grafana/data';\n\nimport { useStyles2 } from '@grafana/ui';\nimport { EditorStack } from './EditorStack';\n\ninterface EditorRowProps {\n children?: React.ReactNode;\n}\n\nexport const EditorRow = ({ children }: EditorRowProps) => {\n const styles = useStyles2(getStyles);\n\n return (\n <div className={styles.root}>\n <EditorStack gap={2}>{children}</EditorStack>\n </div>\n );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => {\n return {\n root: css({\n padding: theme.spacing(1),\n backgroundColor: theme.colors.background.secondary,\n borderRadius: theme.shape.radius.default,\n }),\n };\n};\n"],"names":[],"mappings":";;;;;;AAWO,MAAM,SAAY,GAAA,CAAC,EAAE,QAAA,EAA+B,KAAA;AACzD,EAAM,MAAA,MAAA,GAAS,WAAW,SAAS,CAAA;AAEnC,EACE,uBAAA,GAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAW,MAAO,CAAA,IAAA,EACrB,8BAAC,WAAY,EAAA,EAAA,GAAA,EAAK,CAAI,EAAA,QAAA,EAAS,CACjC,EAAA,CAAA;AAEJ;AAEA,MAAM,SAAA,GAAY,CAAC,KAAyB,KAAA;AAC1C,EAAO,OAAA;AAAA,IACL,MAAM,GAAI,CAAA;AAAA,MACR,OAAA,EAAS,KAAM,CAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,MACxB,eAAA,EAAiB,KAAM,CAAA,MAAA,CAAO,UAAW,CAAA,SAAA;AAAA,MACzC,YAAA,EAAc,KAAM,CAAA,KAAA,CAAM,MAAO,CAAA;AAAA,KAClC;AAAA,GACH;AACF,CAAA;;;;"}
@@ -1,8 +1,8 @@
1
- import React__default from 'react';
1
+ import { jsx } from 'react/jsx-runtime';
2
2
  import { EditorStack } from './EditorStack.js';
3
3
 
4
4
  const EditorRows = ({ children }) => {
5
- return /* @__PURE__ */ React__default.createElement(EditorStack, { gap: 0.5, direction: "column" }, children);
5
+ return /* @__PURE__ */ jsx(EditorStack, { gap: 0.5, direction: "column", children });
6
6
  };
7
7
 
8
8
  export { EditorRows };
@@ -1 +1 @@
1
- {"version":3,"file":"EditorRows.js","sources":["../../../../src/components/QueryEditor/EditorRows.tsx"],"sourcesContent":["import React from 'react';\nimport { EditorStack } from './EditorStack';\n\ninterface EditorRowsProps {\n children?: React.ReactNode;\n}\n\nexport const EditorRows = ({ children }: EditorRowsProps) => {\n return (\n <EditorStack gap={0.5} direction=\"column\">\n {children}\n </EditorStack>\n );\n};\n"],"names":[],"mappings":";;;AAOO,MAAM,UAAa,GAAA,CAAC,EAAE,QAAA,EAAgC,KAAA;AAC3D,EAAA,oDACG,WAAY,EAAA,EAAA,GAAA,EAAK,GAAK,EAAA,SAAA,EAAU,YAC9B,QACH,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"EditorRows.js","sources":["../../../../src/components/QueryEditor/EditorRows.tsx"],"sourcesContent":["import { EditorStack } from './EditorStack';\n\ninterface EditorRowsProps {\n children?: React.ReactNode;\n}\n\nexport const EditorRows = ({ children }: EditorRowsProps) => {\n return (\n <EditorStack gap={0.5} direction=\"column\">\n {children}\n </EditorStack>\n );\n};\n"],"names":[],"mappings":";;;AAMO,MAAM,UAAa,GAAA,CAAC,EAAE,QAAA,EAAgC,KAAA;AAC3D,EAAA,2BACG,WAAY,EAAA,EAAA,GAAA,EAAK,GAAK,EAAA,SAAA,EAAU,UAC9B,QACH,EAAA,CAAA;AAEJ;;;;"}
@@ -1,10 +1,10 @@
1
- import React__default from 'react';
1
+ import { jsx } from 'react/jsx-runtime';
2
2
  import { Stack } from '@grafana/ui';
3
3
  import '@grafana/data';
4
4
 
5
5
  const EditorStack = ({ children, wrap: wrapItems = true, ...props }) => {
6
6
  var _a, _b;
7
- return /* @__PURE__ */ React__default.createElement(Stack, { wrap: wrapItems ? "wrap" : undefined, direction: (_a = props.direction) != null ? _a : "row", gap: (_b = props.gap) != null ? _b : 2, ...props }, children);
7
+ return /* @__PURE__ */ jsx(Stack, { wrap: wrapItems ? "wrap" : undefined, direction: (_a = props.direction) != null ? _a : "row", gap: (_b = props.gap) != null ? _b : 2, ...props, children });
8
8
  };
9
9
 
10
10
  export { EditorStack };
@@ -1 +1 @@
1
- {"version":3,"file":"EditorStack.js","sources":["../../../../src/components/QueryEditor/EditorStack.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Stack } from '@grafana/ui';\nimport { type ThemeSpacingTokens } from '@grafana/data';\n\nexport type Direction = 'row' | 'row-reverse' | 'column' | 'column-reverse';\nexport type AlignItems =\n | 'stretch'\n | 'flex-start'\n | 'flex-end'\n | 'center'\n | 'baseline'\n | 'start'\n | 'end'\n | 'self-start'\n | 'self-end';\n\ninterface StackProps {\n children?: React.ReactNode;\n direction?: Direction;\n alignItems?: AlignItems;\n wrap?: boolean;\n gap?: ThemeSpacingTokens;\n}\n\nexport const EditorStack = ({ children, wrap: wrapItems = true, ...props }: StackProps) => {\n return (\n <Stack wrap={wrapItems ? 'wrap' : undefined} direction={props.direction ?? 'row'} gap={props.gap ?? 2} {...props}>\n {children}\n </Stack>\n );\n};\n"],"names":[],"mappings":";;;;AAyBa,MAAA,WAAA,GAAc,CAAC,EAAE,QAAA,EAAU,MAAM,SAAY,GAAA,IAAA,EAAM,GAAG,KAAA,EAAwB,KAAA;AAzB3F,EAAA,IAAA,EAAA,EAAA,EAAA;AA0BE,EAAA,oDACG,KAAM,EAAA,EAAA,IAAA,EAAM,YAAY,MAAS,GAAA,SAAA,EAAW,YAAW,EAAM,GAAA,KAAA,CAAA,SAAA,KAAN,IAAmB,GAAA,EAAA,GAAA,KAAA,EAAO,MAAK,EAAM,GAAA,KAAA,CAAA,GAAA,KAAN,YAAa,CAAI,EAAA,GAAG,SACxG,QACH,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"EditorStack.js","sources":["../../../../src/components/QueryEditor/EditorStack.tsx"],"sourcesContent":["import { Stack } from '@grafana/ui';\nimport { type ThemeSpacingTokens } from '@grafana/data';\n\nexport type Direction = 'row' | 'row-reverse' | 'column' | 'column-reverse';\nexport type AlignItems =\n | 'stretch'\n | 'flex-start'\n | 'flex-end'\n | 'center'\n | 'baseline'\n | 'start'\n | 'end'\n | 'self-start'\n | 'self-end';\n\ninterface StackProps {\n children?: React.ReactNode;\n direction?: Direction;\n alignItems?: AlignItems;\n wrap?: boolean;\n gap?: ThemeSpacingTokens;\n}\n\nexport const EditorStack = ({ children, wrap: wrapItems = true, ...props }: StackProps) => {\n return (\n <Stack wrap={wrapItems ? 'wrap' : undefined} direction={props.direction ?? 'row'} gap={props.gap ?? 2} {...props}>\n {children}\n </Stack>\n );\n};\n"],"names":[],"mappings":";;;;AAuBa,MAAA,WAAA,GAAc,CAAC,EAAE,QAAA,EAAU,MAAM,SAAY,GAAA,IAAA,EAAM,GAAG,KAAA,EAAwB,KAAA;AAvB3F,EAAA,IAAA,EAAA,EAAA,EAAA;AAwBE,EAAA,2BACG,KAAM,EAAA,EAAA,IAAA,EAAM,YAAY,MAAS,GAAA,SAAA,EAAW,YAAW,EAAM,GAAA,KAAA,CAAA,SAAA,KAAN,IAAmB,GAAA,EAAA,GAAA,KAAA,EAAO,MAAK,EAAM,GAAA,KAAA,CAAA,GAAA,KAAN,YAAa,CAAI,EAAA,GAAG,OACxG,QACH,EAAA,CAAA;AAEJ;;;;"}
@@ -1,10 +1,11 @@
1
+ import { jsx } from 'react/jsx-runtime';
1
2
  import { css } from '@emotion/css';
2
3
  import { Switch } from '@grafana/ui';
3
- import React__default from 'react';
4
+ import 'react';
4
5
 
5
6
  const EditorSwitch = (props) => {
6
7
  const styles = getStyles();
7
- return /* @__PURE__ */ React__default.createElement("div", { className: styles.switch }, /* @__PURE__ */ React__default.createElement(Switch, { ...props }));
8
+ return /* @__PURE__ */ jsx("div", { className: styles.switch, children: /* @__PURE__ */ jsx(Switch, { ...props }) });
8
9
  };
9
10
  const getStyles = () => {
10
11
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"EditorSwitch.js","sources":["../../../../src/components/QueryEditor/EditorSwitch.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { Switch } from '@grafana/ui';\nimport React, { type ComponentProps } from 'react';\n\n// Wrapper component around <Switch /> that properly aligns it in <EditorField />\nexport const EditorSwitch = (props: ComponentProps<typeof Switch>) => {\n const styles = getStyles();\n\n return (\n <div className={styles.switch}>\n <Switch {...props} />\n </div>\n );\n};\n\nconst getStyles = () => {\n return {\n switch: css({\n display: 'flex',\n alignItems: 'center',\n minHeight: 30,\n }),\n };\n};\n"],"names":["React"],"mappings":";;;;AAKa,MAAA,YAAA,GAAe,CAAC,KAAyC,KAAA;AACpE,EAAA,MAAM,SAAS,SAAU,EAAA;AAEzB,EACE,uBAAAA,cAAA,CAAA,aAAA,CAAC,SAAI,SAAW,EAAA,MAAA,CAAO,0BACpBA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAQ,GAAG,KAAA,EAAO,CACrB,CAAA;AAEJ;AAEA,MAAM,YAAY,MAAM;AACtB,EAAO,OAAA;AAAA,IACL,QAAQ,GAAI,CAAA;AAAA,MACV,OAAS,EAAA,MAAA;AAAA,MACT,UAAY,EAAA,QAAA;AAAA,MACZ,SAAW,EAAA;AAAA,KACZ;AAAA,GACH;AACF,CAAA;;;;"}
1
+ {"version":3,"file":"EditorSwitch.js","sources":["../../../../src/components/QueryEditor/EditorSwitch.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { Switch } from '@grafana/ui';\nimport { type ComponentProps } from 'react';\n\n// Wrapper component around <Switch /> that properly aligns it in <EditorField />\nexport const EditorSwitch = (props: ComponentProps<typeof Switch>) => {\n const styles = getStyles();\n\n return (\n <div className={styles.switch}>\n <Switch {...props} />\n </div>\n );\n};\n\nconst getStyles = () => {\n return {\n switch: css({\n display: 'flex',\n alignItems: 'center',\n minHeight: 30,\n }),\n };\n};\n"],"names":[],"mappings":";;;;;AAKa,MAAA,YAAA,GAAe,CAAC,KAAyC,KAAA;AACpE,EAAA,MAAM,SAAS,SAAU,EAAA;AAEzB,EACE,uBAAA,GAAA,CAAC,SAAI,SAAW,EAAA,MAAA,CAAO,QACrB,QAAC,kBAAA,GAAA,CAAA,MAAA,EAAA,EAAQ,GAAG,KAAA,EAAO,CACrB,EAAA,CAAA;AAEJ;AAEA,MAAM,YAAY,MAAM;AACtB,EAAO,OAAA;AAAA,IACL,QAAQ,GAAI,CAAA;AAAA,MACV,OAAS,EAAA,MAAA;AAAA,MACT,UAAY,EAAA,QAAA;AAAA,MACZ,SAAW,EAAA;AAAA,KACZ;AAAA,GACH;AACF,CAAA;;;;"}
@@ -1,7 +1,7 @@
1
- import React__default from 'react';
1
+ import { jsx } from 'react/jsx-runtime';
2
2
 
3
3
  const FlexItem = ({ grow, shrink }) => {
4
- return /* @__PURE__ */ React__default.createElement("div", { style: { display: "block", flexGrow: grow, flexShrink: shrink } });
4
+ return /* @__PURE__ */ jsx("div", { style: { display: "block", flexGrow: grow, flexShrink: shrink } });
5
5
  };
6
6
 
7
7
  export { FlexItem };
@@ -1 +1 @@
1
- {"version":3,"file":"FlexItem.js","sources":["../../../../src/components/QueryEditor/FlexItem.tsx"],"sourcesContent":["import React from 'react';\n\ninterface FlexItemProps {\n grow?: number;\n shrink?: number;\n}\n\nexport const FlexItem = ({ grow, shrink }: FlexItemProps) => {\n return <div style={{ display: 'block', flexGrow: grow, flexShrink: shrink }} />;\n};\n"],"names":["React"],"mappings":";;AAOO,MAAM,QAAW,GAAA,CAAC,EAAE,IAAA,EAAM,QAA4B,KAAA;AAC3D,EAAO,uBAAAA,cAAA,CAAA,aAAA,CAAC,KAAI,EAAA,EAAA,KAAA,EAAO,EAAE,OAAA,EAAS,SAAS,QAAU,EAAA,IAAA,EAAM,UAAY,EAAA,MAAA,EAAU,EAAA,CAAA;AAC/E;;;;"}
1
+ {"version":3,"file":"FlexItem.js","sources":["../../../../src/components/QueryEditor/FlexItem.tsx"],"sourcesContent":["interface FlexItemProps {\n grow?: number;\n shrink?: number;\n}\n\nexport const FlexItem = ({ grow, shrink }: FlexItemProps) => {\n return <div style={{ display: 'block', flexGrow: grow, flexShrink: shrink }} />;\n};\n"],"names":[],"mappings":";;AAKO,MAAM,QAAW,GAAA,CAAC,EAAE,IAAA,EAAM,QAA4B,KAAA;AAC3D,EAAO,uBAAA,GAAA,CAAC,KAAI,EAAA,EAAA,KAAA,EAAO,EAAE,OAAA,EAAS,SAAS,QAAU,EAAA,IAAA,EAAM,UAAY,EAAA,MAAA,EAAU,EAAA,CAAA;AAC/E;;;;"}
@@ -1,5 +1,6 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
1
2
  import { css, cx } from '@emotion/css';
2
- import React__default, { useState } from 'react';
3
+ import { useState } from 'react';
3
4
  import '@grafana/data';
4
5
  import { useStyles2, Select, SelectContainer as SelectContainer$1 } from '@grafana/ui';
5
6
 
@@ -11,17 +12,24 @@ function InlineSelect({ label: labelProp, ...props }) {
11
12
  ValueContainer,
12
13
  SingleValue: ValueContainer
13
14
  };
14
- return /* @__PURE__ */ React__default.createElement("div", { className: styles.root }, labelProp && /* @__PURE__ */ React__default.createElement("label", { className: styles.label, htmlFor: id }, labelProp, ":", "\xA0"), /* @__PURE__ */ React__default.createElement(Select, { openMenuOnFocus: true, inputId: id, ...props, components }));
15
+ return /* @__PURE__ */ jsxs("div", { className: styles.root, children: [
16
+ labelProp && /* @__PURE__ */ jsxs("label", { className: styles.label, htmlFor: id, children: [
17
+ labelProp,
18
+ ":",
19
+ "\xA0"
20
+ ] }),
21
+ /* @__PURE__ */ jsx(Select, { openMenuOnFocus: true, inputId: id, ...props, components })
22
+ ] });
15
23
  }
16
24
  const SelectContainer = (props) => {
17
25
  const { children } = props;
18
26
  const styles = useStyles2(getSelectStyles);
19
- return /* @__PURE__ */ React__default.createElement(SelectContainer$1, { ...props, className: cx(props.className, styles.container) }, children);
27
+ return /* @__PURE__ */ jsx(SelectContainer$1, { ...props, className: cx(props.className, styles.container), children });
20
28
  };
21
29
  const ValueContainer = (props) => {
22
30
  const { className, children } = props;
23
31
  const styles = useStyles2(getSelectStyles);
24
- return /* @__PURE__ */ React__default.createElement("div", { className: cx(className, styles.valueContainer) }, children);
32
+ return /* @__PURE__ */ jsx("div", { className: cx(className, styles.valueContainer), children });
25
33
  };
26
34
  const getSelectStyles = (theme) => ({
27
35
  root: css({
@@ -1 +1 @@
1
- {"version":3,"file":"InlineSelect.js","sources":["../../../../src/components/QueryEditor/InlineSelect.tsx"],"sourcesContent":["import { css, cx } from '@emotion/css';\nimport React, { useState } from 'react';\nimport { type GroupBase } from 'react-select';\n\nimport { type GrafanaTheme2 } from '@grafana/data';\nimport {\n Select,\n type SelectCommonProps,\n type SelectContainerProps,\n SelectContainer as BaseSelectContainer,\n useStyles2,\n} from '@grafana/ui';\n\ninterface InlineSelectProps<T> extends SelectCommonProps<T> {\n label?: string;\n}\n\nexport function InlineSelect<T>({ label: labelProp, ...props }: InlineSelectProps<T>) {\n const [id] = useState(() => Math.random().toString(16).slice(2));\n const styles = useStyles2(getSelectStyles);\n const components = {\n SelectContainer,\n ValueContainer,\n SingleValue: ValueContainer,\n };\n\n return (\n <div className={styles.root}>\n {labelProp && (\n <label className={styles.label} htmlFor={id}>\n {labelProp}\n {':'}&nbsp;\n </label>\n )}\n <Select openMenuOnFocus inputId={id} {...props} components={components} />\n </div>\n );\n}\n\nconst SelectContainer = <Option, isMulti extends boolean, Group extends GroupBase<Option>>(\n props: SelectContainerProps<Option, isMulti, Group>\n) => {\n const { children } = props;\n\n const styles = useStyles2(getSelectStyles);\n\n return (\n <BaseSelectContainer {...props} className={cx(props.className, styles.container)}>\n {children}\n </BaseSelectContainer>\n );\n};\n\nconst ValueContainer = <Option, isMulti extends boolean, Group extends GroupBase<Option>>(\n props: SelectContainerProps<Option, isMulti, Group>\n) => {\n const { className, children } = props;\n const styles = useStyles2(getSelectStyles);\n\n return <div className={cx(className, styles.valueContainer)}>{children}</div>;\n};\n\nconst getSelectStyles = (theme: GrafanaTheme2) => ({\n root: css({\n display: 'flex',\n fontSize: 12,\n alignItems: 'center',\n }),\n\n label: css({\n color: theme.colors.text.secondary,\n whiteSpace: 'nowrap',\n }),\n\n container: css({\n background: 'none',\n borderColor: 'transparent',\n }),\n\n valueContainer: css({\n display: 'flex',\n alignItems: 'center',\n flex: 'initial',\n color: theme.colors.text.secondary,\n fontSize: 12,\n }),\n});\n"],"names":["React","BaseSelectContainer"],"mappings":";;;;;AAiBO,SAAS,aAAgB,EAAE,KAAA,EAAO,SAAW,EAAA,GAAG,OAA+B,EAAA;AACpF,EAAA,MAAM,CAAC,EAAE,CAAI,GAAA,QAAA,CAAS,MAAM,IAAA,CAAK,MAAO,EAAA,CAAE,QAAS,CAAA,EAAE,CAAE,CAAA,KAAA,CAAM,CAAC,CAAC,CAAA;AAC/D,EAAM,MAAA,MAAA,GAAS,WAAW,eAAe,CAAA;AACzC,EAAA,MAAM,UAAa,GAAA;AAAA,IACjB,eAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAa,EAAA;AAAA,GACf;AAEA,EACE,uBAAAA,cAAA,CAAA,aAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAW,MAAO,CAAA,IAAA,EAAA,EACpB,SACC,oBAAAA,cAAA,CAAA,aAAA,CAAC,OAAM,EAAA,EAAA,SAAA,EAAW,MAAO,CAAA,KAAA,EAAO,OAAS,EAAA,EAAA,EAAA,EACtC,WACA,GAAI,EAAA,MACP,CAEF,kBAAAA,cAAA,CAAA,aAAA,CAAC,MAAO,EAAA,EAAA,eAAA,EAAe,IAAC,EAAA,OAAA,EAAS,EAAK,EAAA,GAAG,KAAO,EAAA,UAAA,EAAwB,CAC1E,CAAA;AAEJ;AAEA,MAAM,eAAA,GAAkB,CACtB,KACG,KAAA;AACH,EAAM,MAAA,EAAE,UAAa,GAAA,KAAA;AAErB,EAAM,MAAA,MAAA,GAAS,WAAW,eAAe,CAAA;AAEzC,EACE,uBAAAA,cAAA,CAAA,aAAA,CAACC,iBAAqB,EAAA,EAAA,GAAG,KAAO,EAAA,SAAA,EAAW,EAAG,CAAA,KAAA,CAAM,SAAW,EAAA,MAAA,CAAO,SAAS,CAAA,EAAA,EAC5E,QACH,CAAA;AAEJ,CAAA;AAEA,MAAM,cAAA,GAAiB,CACrB,KACG,KAAA;AACH,EAAM,MAAA,EAAE,SAAW,EAAA,QAAA,EAAa,GAAA,KAAA;AAChC,EAAM,MAAA,MAAA,GAAS,WAAW,eAAe,CAAA;AAEzC,EAAO,uBAAAD,cAAA,CAAA,aAAA,CAAC,SAAI,SAAW,EAAA,EAAA,CAAG,WAAW,MAAO,CAAA,cAAc,KAAI,QAAS,CAAA;AACzE,CAAA;AAEA,MAAM,eAAA,GAAkB,CAAC,KAA0B,MAAA;AAAA,EACjD,MAAM,GAAI,CAAA;AAAA,IACR,OAAS,EAAA,MAAA;AAAA,IACT,QAAU,EAAA,EAAA;AAAA,IACV,UAAY,EAAA;AAAA,GACb,CAAA;AAAA,EAED,OAAO,GAAI,CAAA;AAAA,IACT,KAAA,EAAO,KAAM,CAAA,MAAA,CAAO,IAAK,CAAA,SAAA;AAAA,IACzB,UAAY,EAAA;AAAA,GACb,CAAA;AAAA,EAED,WAAW,GAAI,CAAA;AAAA,IACb,UAAY,EAAA,MAAA;AAAA,IACZ,WAAa,EAAA;AAAA,GACd,CAAA;AAAA,EAED,gBAAgB,GAAI,CAAA;AAAA,IAClB,OAAS,EAAA,MAAA;AAAA,IACT,UAAY,EAAA,QAAA;AAAA,IACZ,IAAM,EAAA,SAAA;AAAA,IACN,KAAA,EAAO,KAAM,CAAA,MAAA,CAAO,IAAK,CAAA,SAAA;AAAA,IACzB,QAAU,EAAA;AAAA,GACX;AACH,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"InlineSelect.js","sources":["../../../../src/components/QueryEditor/InlineSelect.tsx"],"sourcesContent":["import { css, cx } from '@emotion/css';\nimport { useState } from 'react';\nimport { type GroupBase } from 'react-select';\n\nimport { type GrafanaTheme2 } from '@grafana/data';\nimport {\n Select,\n type SelectCommonProps,\n type SelectContainerProps,\n SelectContainer as BaseSelectContainer,\n useStyles2,\n} from '@grafana/ui';\n\ninterface InlineSelectProps<T> extends SelectCommonProps<T> {\n label?: string;\n}\n\nexport function InlineSelect<T>({ label: labelProp, ...props }: InlineSelectProps<T>) {\n const [id] = useState(() => Math.random().toString(16).slice(2));\n const styles = useStyles2(getSelectStyles);\n const components = {\n SelectContainer,\n ValueContainer,\n SingleValue: ValueContainer,\n };\n\n return (\n <div className={styles.root}>\n {labelProp && (\n <label className={styles.label} htmlFor={id}>\n {labelProp}\n {':'}&nbsp;\n </label>\n )}\n <Select openMenuOnFocus inputId={id} {...props} components={components} />\n </div>\n );\n}\n\nconst SelectContainer = <Option, isMulti extends boolean, Group extends GroupBase<Option>>(\n props: SelectContainerProps<Option, isMulti, Group>\n) => {\n const { children } = props;\n\n const styles = useStyles2(getSelectStyles);\n\n return (\n <BaseSelectContainer {...props} className={cx(props.className, styles.container)}>\n {children}\n </BaseSelectContainer>\n );\n};\n\nconst ValueContainer = <Option, isMulti extends boolean, Group extends GroupBase<Option>>(\n props: SelectContainerProps<Option, isMulti, Group>\n) => {\n const { className, children } = props;\n const styles = useStyles2(getSelectStyles);\n\n return <div className={cx(className, styles.valueContainer)}>{children}</div>;\n};\n\nconst getSelectStyles = (theme: GrafanaTheme2) => ({\n root: css({\n display: 'flex',\n fontSize: 12,\n alignItems: 'center',\n }),\n\n label: css({\n color: theme.colors.text.secondary,\n whiteSpace: 'nowrap',\n }),\n\n container: css({\n background: 'none',\n borderColor: 'transparent',\n }),\n\n valueContainer: css({\n display: 'flex',\n alignItems: 'center',\n flex: 'initial',\n color: theme.colors.text.secondary,\n fontSize: 12,\n }),\n});\n"],"names":["BaseSelectContainer"],"mappings":";;;;;;AAiBO,SAAS,aAAgB,EAAE,KAAA,EAAO,SAAW,EAAA,GAAG,OAA+B,EAAA;AACpF,EAAA,MAAM,CAAC,EAAE,CAAI,GAAA,QAAA,CAAS,MAAM,IAAA,CAAK,MAAO,EAAA,CAAE,QAAS,CAAA,EAAE,CAAE,CAAA,KAAA,CAAM,CAAC,CAAC,CAAA;AAC/D,EAAM,MAAA,MAAA,GAAS,WAAW,eAAe,CAAA;AACzC,EAAA,MAAM,UAAa,GAAA;AAAA,IACjB,eAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAa,EAAA;AAAA,GACf;AAEA,EAAA,uBACG,IAAA,CAAA,KAAA,EAAA,EAAI,SAAW,EAAA,MAAA,CAAO,IACpB,EAAA,QAAA,EAAA;AAAA,IAAA,SAAA,yBACE,OAAM,EAAA,EAAA,SAAA,EAAW,MAAO,CAAA,KAAA,EAAO,SAAS,EACtC,EAAA,QAAA,EAAA;AAAA,MAAA,SAAA;AAAA,MACA,GAAA;AAAA,MAAI;AAAA,KACP,EAAA,CAAA;AAAA,oBAEF,GAAA,CAAC,UAAO,eAAe,EAAA,IAAA,EAAC,SAAS,EAAK,EAAA,GAAG,OAAO,UAAwB,EAAA;AAAA,GAC1E,EAAA,CAAA;AAEJ;AAEA,MAAM,eAAA,GAAkB,CACtB,KACG,KAAA;AACH,EAAM,MAAA,EAAE,UAAa,GAAA,KAAA;AAErB,EAAM,MAAA,MAAA,GAAS,WAAW,eAAe,CAAA;AAEzC,EACE,uBAAA,GAAA,CAACA,iBAAqB,EAAA,EAAA,GAAG,KAAO,EAAA,SAAA,EAAW,EAAG,CAAA,KAAA,CAAM,SAAW,EAAA,MAAA,CAAO,SAAS,CAAA,EAC5E,QACH,EAAA,CAAA;AAEJ,CAAA;AAEA,MAAM,cAAA,GAAiB,CACrB,KACG,KAAA;AACH,EAAM,MAAA,EAAE,SAAW,EAAA,QAAA,EAAa,GAAA,KAAA;AAChC,EAAM,MAAA,MAAA,GAAS,WAAW,eAAe,CAAA;AAEzC,EAAO,uBAAA,GAAA,CAAC,SAAI,SAAW,EAAA,EAAA,CAAG,WAAW,MAAO,CAAA,cAAc,GAAI,QAAS,EAAA,CAAA;AACzE,CAAA;AAEA,MAAM,eAAA,GAAkB,CAAC,KAA0B,MAAA;AAAA,EACjD,MAAM,GAAI,CAAA;AAAA,IACR,OAAS,EAAA,MAAA;AAAA,IACT,QAAU,EAAA,EAAA;AAAA,IACV,UAAY,EAAA;AAAA,GACb,CAAA;AAAA,EAED,OAAO,GAAI,CAAA;AAAA,IACT,KAAA,EAAO,KAAM,CAAA,MAAA,CAAO,IAAK,CAAA,SAAA;AAAA,IACzB,UAAY,EAAA;AAAA,GACb,CAAA;AAAA,EAED,WAAW,GAAI,CAAA;AAAA,IACb,UAAY,EAAA,MAAA;AAAA,IACZ,WAAa,EAAA;AAAA,GACd,CAAA;AAAA,EAED,gBAAgB,GAAI,CAAA;AAAA,IAClB,OAAS,EAAA,MAAA;AAAA,IACT,UAAY,EAAA,QAAA;AAAA,IACZ,IAAM,EAAA,SAAA;AAAA,IACN,KAAA,EAAO,KAAM,CAAA,MAAA,CAAO,IAAK,CAAA,SAAA;AAAA,IACzB,QAAU,EAAA;AAAA,GACX;AACH,CAAA,CAAA;;;;"}
@@ -1,6 +1,7 @@
1
+ import { jsx } from 'react/jsx-runtime';
1
2
  import { cx, css } from '@emotion/css';
2
3
  import { useStyles2 } from '@grafana/ui';
3
- import React__default, { Children, isValidElement, cloneElement } from 'react';
4
+ import { Children, isValidElement, cloneElement } from 'react';
4
5
 
5
6
  const InputGroup = ({ children }) => {
6
7
  const styles = useStyles2(getStyles);
@@ -10,7 +11,7 @@ const InputGroup = ({ children }) => {
10
11
  }
11
12
  return child;
12
13
  });
13
- return /* @__PURE__ */ React__default.createElement("div", { className: styles.root }, modifiedChildren);
14
+ return /* @__PURE__ */ jsx("div", { className: styles.root, children: modifiedChildren });
14
15
  };
15
16
  const borderPriority = [
16
17
  "",
@@ -1 +1 @@
1
- {"version":3,"file":"InputGroup.js","sources":["../../../../src/components/QueryEditor/InputGroup.tsx"],"sourcesContent":["import { css, cx } from '@emotion/css';\nimport { useStyles2 } from '@grafana/ui';\nimport React, { Children, cloneElement, isValidElement, type ReactElement } from 'react';\n\ntype Child = string | undefined | ReactElement<{ className?: string; invalid?: unknown }>;\ninterface InputGroupProps {\n // we type the children props so we can test them later on\n children: Child | Child[];\n}\n\nexport const InputGroup = ({ children }: InputGroupProps) => {\n const styles = useStyles2(getStyles);\n\n // Find children with an invalid prop, and set a class name to raise their z-index so all\n // of the invalid border is visible\n const modifiedChildren = Children.map(children, (child) => {\n if (isValidElement(child) && child.props.invalid) {\n return cloneElement(child, { className: cx(child.props.className, styles.invalidChild) });\n }\n\n return child;\n });\n\n return <div className={styles.root}>{modifiedChildren}</div>;\n};\n\n// The later in the array the higher the priority for showing that element's border\nconst borderPriority = [\n '' as const, // lowest priority\n 'base' as const,\n 'hovered' as const,\n 'invalid' as const,\n 'focused' as const, // highest priority\n];\n\nconst getStyles = () => ({\n root: css({\n display: 'flex',\n\n // Style the direct children of the component\n '> *': {\n '&:not(:first-child)': {\n // Negative margin hides the double-border on adjacent selects\n marginLeft: -1,\n },\n\n '&:first-child': {\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0,\n },\n\n '&:last-child': {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n },\n\n '&:not(:first-child):not(:last-child)': {\n borderRadius: 0,\n },\n\n //\n position: 'relative',\n zIndex: borderPriority.indexOf('base'),\n\n // Adjacent borders are overlapping, so raise children up when hovering etc\n // so all that child's borders are visible.\n '&:hover': {\n zIndex: borderPriority.indexOf('hovered'),\n },\n '&:focus-within': {\n zIndex: borderPriority.indexOf('focused'),\n },\n },\n }),\n\n invalidChild: css({\n zIndex: borderPriority.indexOf('invalid'),\n }),\n});\n"],"names":["React"],"mappings":";;;;AAUO,MAAM,UAAa,GAAA,CAAC,EAAE,QAAA,EAAgC,KAAA;AAC3D,EAAM,MAAA,MAAA,GAAS,WAAW,SAAS,CAAA;AAInC,EAAA,MAAM,gBAAmB,GAAA,QAAA,CAAS,GAAI,CAAA,QAAA,EAAU,CAAC,KAAU,KAAA;AACzD,IAAA,IAAI,cAAe,CAAA,KAAK,CAAK,IAAA,KAAA,CAAM,MAAM,OAAS,EAAA;AAChD,MAAO,OAAA,YAAA,CAAa,KAAO,EAAA,EAAE,SAAW,EAAA,EAAA,CAAG,KAAM,CAAA,KAAA,CAAM,SAAW,EAAA,MAAA,CAAO,YAAY,CAAA,EAAG,CAAA;AAAA;AAG1F,IAAO,OAAA,KAAA;AAAA,GACR,CAAA;AAED,EAAA,uBAAQA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAI,SAAW,EAAA,MAAA,CAAO,QAAO,gBAAiB,CAAA;AACxD;AAGA,MAAM,cAAiB,GAAA;AAAA,EACrB,EAAA;AAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA;AAAA;AACF,CAAA;AAEA,MAAM,YAAY,OAAO;AAAA,EACvB,MAAM,GAAI,CAAA;AAAA,IACR,OAAS,EAAA,MAAA;AAAA;AAAA,IAGT,KAAO,EAAA;AAAA,MACL,qBAAuB,EAAA;AAAA;AAAA,QAErB,UAAY,EAAA;AAAA,OACd;AAAA,MAEA,eAAiB,EAAA;AAAA,QACf,oBAAsB,EAAA,CAAA;AAAA,QACtB,uBAAyB,EAAA;AAAA,OAC3B;AAAA,MAEA,cAAgB,EAAA;AAAA,QACd,mBAAqB,EAAA,CAAA;AAAA,QACrB,sBAAwB,EAAA;AAAA,OAC1B;AAAA,MAEA,sCAAwC,EAAA;AAAA,QACtC,YAAc,EAAA;AAAA,OAChB;AAAA;AAAA,MAGA,QAAU,EAAA,UAAA;AAAA,MACV,MAAA,EAAQ,cAAe,CAAA,OAAA,CAAQ,MAAM,CAAA;AAAA;AAAA;AAAA,MAIrC,SAAW,EAAA;AAAA,QACT,MAAA,EAAQ,cAAe,CAAA,OAAA,CAAQ,SAAS;AAAA,OAC1C;AAAA,MACA,gBAAkB,EAAA;AAAA,QAChB,MAAA,EAAQ,cAAe,CAAA,OAAA,CAAQ,SAAS;AAAA;AAC1C;AACF,GACD,CAAA;AAAA,EAED,cAAc,GAAI,CAAA;AAAA,IAChB,MAAA,EAAQ,cAAe,CAAA,OAAA,CAAQ,SAAS;AAAA,GACzC;AACH,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"InputGroup.js","sources":["../../../../src/components/QueryEditor/InputGroup.tsx"],"sourcesContent":["import { css, cx } from '@emotion/css';\nimport { useStyles2 } from '@grafana/ui';\nimport { Children, cloneElement, isValidElement, type ReactElement } from 'react';\n\ntype Child = string | undefined | ReactElement<{ className?: string; invalid?: unknown }>;\ninterface InputGroupProps {\n // we type the children props so we can test them later on\n children: Child | Child[];\n}\n\nexport const InputGroup = ({ children }: InputGroupProps) => {\n const styles = useStyles2(getStyles);\n\n // Find children with an invalid prop, and set a class name to raise their z-index so all\n // of the invalid border is visible\n const modifiedChildren = Children.map(children, (child) => {\n if (isValidElement(child) && child.props.invalid) {\n return cloneElement(child, { className: cx(child.props.className, styles.invalidChild) });\n }\n\n return child;\n });\n\n return <div className={styles.root}>{modifiedChildren}</div>;\n};\n\n// The later in the array the higher the priority for showing that element's border\nconst borderPriority = [\n '' as const, // lowest priority\n 'base' as const,\n 'hovered' as const,\n 'invalid' as const,\n 'focused' as const, // highest priority\n];\n\nconst getStyles = () => ({\n root: css({\n display: 'flex',\n\n // Style the direct children of the component\n '> *': {\n '&:not(:first-child)': {\n // Negative margin hides the double-border on adjacent selects\n marginLeft: -1,\n },\n\n '&:first-child': {\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0,\n },\n\n '&:last-child': {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n },\n\n '&:not(:first-child):not(:last-child)': {\n borderRadius: 0,\n },\n\n //\n position: 'relative',\n zIndex: borderPriority.indexOf('base'),\n\n // Adjacent borders are overlapping, so raise children up when hovering etc\n // so all that child's borders are visible.\n '&:hover': {\n zIndex: borderPriority.indexOf('hovered'),\n },\n '&:focus-within': {\n zIndex: borderPriority.indexOf('focused'),\n },\n },\n }),\n\n invalidChild: css({\n zIndex: borderPriority.indexOf('invalid'),\n }),\n});\n"],"names":[],"mappings":";;;;;AAUO,MAAM,UAAa,GAAA,CAAC,EAAE,QAAA,EAAgC,KAAA;AAC3D,EAAM,MAAA,MAAA,GAAS,WAAW,SAAS,CAAA;AAInC,EAAA,MAAM,gBAAmB,GAAA,QAAA,CAAS,GAAI,CAAA,QAAA,EAAU,CAAC,KAAU,KAAA;AACzD,IAAA,IAAI,cAAe,CAAA,KAAK,CAAK,IAAA,KAAA,CAAM,MAAM,OAAS,EAAA;AAChD,MAAO,OAAA,YAAA,CAAa,KAAO,EAAA,EAAE,SAAW,EAAA,EAAA,CAAG,KAAM,CAAA,KAAA,CAAM,SAAW,EAAA,MAAA,CAAO,YAAY,CAAA,EAAG,CAAA;AAAA;AAG1F,IAAO,OAAA,KAAA;AAAA,GACR,CAAA;AAED,EAAA,uBAAQ,GAAA,CAAA,KAAA,EAAA,EAAI,SAAW,EAAA,MAAA,CAAO,MAAO,QAAiB,EAAA,gBAAA,EAAA,CAAA;AACxD;AAGA,MAAM,cAAiB,GAAA;AAAA,EACrB,EAAA;AAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA;AAAA;AACF,CAAA;AAEA,MAAM,YAAY,OAAO;AAAA,EACvB,MAAM,GAAI,CAAA;AAAA,IACR,OAAS,EAAA,MAAA;AAAA;AAAA,IAGT,KAAO,EAAA;AAAA,MACL,qBAAuB,EAAA;AAAA;AAAA,QAErB,UAAY,EAAA;AAAA,OACd;AAAA,MAEA,eAAiB,EAAA;AAAA,QACf,oBAAsB,EAAA,CAAA;AAAA,QACtB,uBAAyB,EAAA;AAAA,OAC3B;AAAA,MAEA,cAAgB,EAAA;AAAA,QACd,mBAAqB,EAAA,CAAA;AAAA,QACrB,sBAAwB,EAAA;AAAA,OAC1B;AAAA,MAEA,sCAAwC,EAAA;AAAA,QACtC,YAAc,EAAA;AAAA,OAChB;AAAA;AAAA,MAGA,QAAU,EAAA,UAAA;AAAA,MACV,MAAA,EAAQ,cAAe,CAAA,OAAA,CAAQ,MAAM,CAAA;AAAA;AAAA;AAAA,MAIrC,SAAW,EAAA;AAAA,QACT,MAAA,EAAQ,cAAe,CAAA,OAAA,CAAQ,SAAS;AAAA,OAC1C;AAAA,MACA,gBAAkB,EAAA;AAAA,QAChB,MAAA,EAAQ,cAAe,CAAA,OAAA,CAAQ,SAAS;AAAA;AAC1C;AACF,GACD,CAAA;AAAA,EAED,cAAc,GAAI,CAAA;AAAA,IAChB,MAAA,EAAQ,cAAe,CAAA,OAAA,CAAQ,SAAS;AAAA,GACzC;AACH,CAAA,CAAA;;;;"}
@@ -1,4 +1,5 @@
1
- import React__default, { useState, useEffect, useCallback } from 'react';
1
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
+ import { useState, useEffect, useCallback } from 'react';
2
3
  import { useAsync } from 'react-use';
3
4
  import '@grafana/data';
4
5
  import { applyQueryDefaults } from './defaults.js';
@@ -65,42 +66,48 @@ function SqlQueryEditor({ datasource, query, onChange, onRunQuery, range }) {
65
66
  if (loading || error) {
66
67
  return null;
67
68
  }
68
- return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(
69
- QueryHeader,
70
- {
71
- db,
72
- defaultDataset: defaultDataset || "",
73
- enableDatasets: !db.disableDatasets,
74
- onChange: onQueryHeaderChange,
75
- onRunQuery,
76
- onQueryRowChange: setQueryRowFilter,
77
- queryRowFilter,
78
- query: queryWithDefaults,
79
- isQueryRunnable,
80
- labels: (_g = datasource.getDB(datasource.id)) == null ? undefined : _g.labels
81
- }
82
- ), /* @__PURE__ */ React__default.createElement(Space, { v: 0.5 }), queryWithDefaults.editorMode !== EditorMode.Code && /* @__PURE__ */ React__default.createElement(
83
- VisualEditor,
84
- {
85
- db,
86
- query: queryWithDefaults,
87
- onChange: (q) => onQueryChange(q, false),
88
- queryRowFilter,
89
- onValidate: setIsQueryRunnable,
90
- range
91
- }
92
- ), queryWithDefaults.editorMode === EditorMode.Code && /* @__PURE__ */ React__default.createElement(
93
- RawEditor,
94
- {
95
- db,
96
- query: queryWithDefaults,
97
- queryToValidate,
98
- onChange: onQueryChange,
99
- onRunQuery,
100
- onValidate: setIsQueryRunnable,
101
- range
102
- }
103
- ));
69
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
70
+ /* @__PURE__ */ jsx(
71
+ QueryHeader,
72
+ {
73
+ db,
74
+ defaultDataset: defaultDataset || "",
75
+ enableDatasets: !db.disableDatasets,
76
+ enableCatalogs: db.disableCatalogs === false,
77
+ onChange: onQueryHeaderChange,
78
+ onRunQuery,
79
+ onQueryRowChange: setQueryRowFilter,
80
+ queryRowFilter,
81
+ query: queryWithDefaults,
82
+ isQueryRunnable,
83
+ labels: (_g = datasource.getDB(datasource.id)) == null ? undefined : _g.labels
84
+ }
85
+ ),
86
+ /* @__PURE__ */ jsx(Space, { v: 0.5 }),
87
+ queryWithDefaults.editorMode !== EditorMode.Code && /* @__PURE__ */ jsx(
88
+ VisualEditor,
89
+ {
90
+ db,
91
+ query: queryWithDefaults,
92
+ onChange: (q) => onQueryChange(q, false),
93
+ queryRowFilter,
94
+ onValidate: setIsQueryRunnable,
95
+ range
96
+ }
97
+ ),
98
+ queryWithDefaults.editorMode === EditorMode.Code && /* @__PURE__ */ jsx(
99
+ RawEditor,
100
+ {
101
+ db,
102
+ query: queryWithDefaults,
103
+ queryToValidate,
104
+ onChange: onQueryChange,
105
+ onRunQuery,
106
+ onValidate: setIsQueryRunnable,
107
+ range
108
+ }
109
+ )
110
+ ] });
104
111
  }
105
112
  const isQueryValid = (q) => {
106
113
  return Boolean(q.rawSql);
@@ -1 +1 @@
1
- {"version":3,"file":"QueryEditor.js","sources":["../../../../src/components/QueryEditor/QueryEditor.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useState } from 'react';\nimport { useAsync } from 'react-use';\n\nimport { type QueryEditorProps } from '@grafana/data';\n\nimport { applyQueryDefaults } from './defaults';\nimport { type SQLQuery, type QueryRowFilter, type SQLOptions, EditorMode } from './types';\nimport { haveColumns } from './utils/sql.utils';\n\nimport { QueryHeader } from './QueryHeader';\nimport { RawEditor } from './query-editor-raw/RawEditor';\nimport { VisualEditor } from './visual-query-builder/VisualEditor';\n\nimport { type SqlDatasource } from '../../datasource/SqlDatasource';\nimport { Space } from './Space';\n\ninterface Props extends QueryEditorProps<SqlDatasource, SQLQuery, SQLOptions> {}\n\nexport function SqlQueryEditor({ datasource, query, onChange, onRunQuery, range }: Props) {\n const [isQueryRunnable, setIsQueryRunnable] = useState(true);\n const db = datasource.getDB();\n const defaultDataset = datasource.dataset;\n\n const { loading, error } = useAsync(async () => {\n return () => {\n if (datasource.getDB(datasource.id).init !== undefined) {\n datasource.getDB(datasource.id).init!();\n }\n };\n }, [datasource]);\n\n const queryWithDefaults = applyQueryDefaults(query);\n const [queryRowFilter, setQueryRowFilter] = useState<QueryRowFilter>({\n filter: !!queryWithDefaults.sql?.whereString,\n group: !!queryWithDefaults.sql?.groupBy?.[0]?.property.name,\n order: !!queryWithDefaults.sql?.orderBy?.property.name,\n preview: true,\n });\n const [queryToValidate, setQueryToValidate] = useState(queryWithDefaults);\n\n useEffect(() => {\n return () => {\n if (datasource.getDB(datasource.id).dispose !== undefined) {\n datasource.getDB(datasource.id).dispose!();\n }\n };\n }, [datasource]);\n\n const processQuery = useCallback(\n (q: SQLQuery) => {\n if (isQueryValid(q) && onRunQuery) {\n onRunQuery();\n }\n },\n [onRunQuery]\n );\n\n const onQueryChange = (q: SQLQuery, process = true) => {\n setQueryToValidate(q);\n onChange(q);\n\n if (haveColumns(q.sql?.columns) && q.sql?.columns.some((c) => c.name) && !queryRowFilter.group) {\n setQueryRowFilter({ ...queryRowFilter, group: true });\n }\n\n if (process) {\n processQuery(q);\n }\n };\n\n const onQueryHeaderChange = (q: SQLQuery) => {\n setQueryToValidate(q);\n onChange(q);\n };\n\n if (loading || error) {\n return null;\n }\n\n return (\n <>\n <QueryHeader\n db={db}\n defaultDataset={defaultDataset || ''}\n enableDatasets={!db.disableDatasets}\n onChange={onQueryHeaderChange}\n onRunQuery={onRunQuery}\n onQueryRowChange={setQueryRowFilter}\n queryRowFilter={queryRowFilter}\n query={queryWithDefaults}\n isQueryRunnable={isQueryRunnable}\n labels={datasource.getDB(datasource.id)?.labels}\n />\n\n <Space v={0.5} />\n\n {queryWithDefaults.editorMode !== EditorMode.Code && (\n <VisualEditor\n db={db}\n query={queryWithDefaults}\n onChange={(q: SQLQuery) => onQueryChange(q, false)}\n queryRowFilter={queryRowFilter}\n onValidate={setIsQueryRunnable}\n range={range}\n />\n )}\n\n {queryWithDefaults.editorMode === EditorMode.Code && (\n <RawEditor\n db={db}\n query={queryWithDefaults}\n queryToValidate={queryToValidate}\n onChange={onQueryChange}\n onRunQuery={onRunQuery}\n onValidate={setIsQueryRunnable}\n range={range}\n />\n )}\n </>\n );\n}\n\nconst isQueryValid = (q: SQLQuery) => {\n return Boolean(q.rawSql);\n};\n"],"names":["_a","_b","React"],"mappings":"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"}
1
+ {"version":3,"file":"QueryEditor.js","sources":["../../../../src/components/QueryEditor/QueryEditor.tsx"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react';\nimport { useAsync } from 'react-use';\n\nimport { type QueryEditorProps } from '@grafana/data';\n\nimport { applyQueryDefaults } from './defaults';\nimport { type SQLQuery, type QueryRowFilter, type SQLOptions, EditorMode } from './types';\nimport { haveColumns } from './utils/sql.utils';\n\nimport { QueryHeader } from './QueryHeader';\nimport { RawEditor } from './query-editor-raw/RawEditor';\nimport { VisualEditor } from './visual-query-builder/VisualEditor';\n\nimport { type SqlDatasource } from '../../datasource/SqlDatasource';\nimport { Space } from './Space';\n\ninterface Props extends QueryEditorProps<SqlDatasource, SQLQuery, SQLOptions> {}\n\nexport function SqlQueryEditor({ datasource, query, onChange, onRunQuery, range }: Props) {\n const [isQueryRunnable, setIsQueryRunnable] = useState(true);\n const db = datasource.getDB();\n const defaultDataset = datasource.dataset;\n\n const { loading, error } = useAsync(async () => {\n return () => {\n if (datasource.getDB(datasource.id).init !== undefined) {\n datasource.getDB(datasource.id).init!();\n }\n };\n }, [datasource]);\n\n const queryWithDefaults = applyQueryDefaults(query);\n const [queryRowFilter, setQueryRowFilter] = useState<QueryRowFilter>({\n filter: !!queryWithDefaults.sql?.whereString,\n group: !!queryWithDefaults.sql?.groupBy?.[0]?.property.name,\n order: !!queryWithDefaults.sql?.orderBy?.property.name,\n preview: true,\n });\n const [queryToValidate, setQueryToValidate] = useState(queryWithDefaults);\n\n useEffect(() => {\n return () => {\n if (datasource.getDB(datasource.id).dispose !== undefined) {\n datasource.getDB(datasource.id).dispose!();\n }\n };\n }, [datasource]);\n\n const processQuery = useCallback(\n (q: SQLQuery) => {\n if (isQueryValid(q) && onRunQuery) {\n onRunQuery();\n }\n },\n [onRunQuery]\n );\n\n const onQueryChange = (q: SQLQuery, process = true) => {\n setQueryToValidate(q);\n onChange(q);\n\n if (haveColumns(q.sql?.columns) && q.sql?.columns.some((c) => c.name) && !queryRowFilter.group) {\n setQueryRowFilter({ ...queryRowFilter, group: true });\n }\n\n if (process) {\n processQuery(q);\n }\n };\n\n const onQueryHeaderChange = (q: SQLQuery) => {\n setQueryToValidate(q);\n onChange(q);\n };\n\n if (loading || error) {\n return null;\n }\n\n return (\n <>\n <QueryHeader\n db={db}\n defaultDataset={defaultDataset || ''}\n enableDatasets={!db.disableDatasets}\n enableCatalogs={db.disableCatalogs === false}\n onChange={onQueryHeaderChange}\n onRunQuery={onRunQuery}\n onQueryRowChange={setQueryRowFilter}\n queryRowFilter={queryRowFilter}\n query={queryWithDefaults}\n isQueryRunnable={isQueryRunnable}\n labels={datasource.getDB(datasource.id)?.labels}\n />\n\n <Space v={0.5} />\n\n {queryWithDefaults.editorMode !== EditorMode.Code && (\n <VisualEditor\n db={db}\n query={queryWithDefaults}\n onChange={(q: SQLQuery) => onQueryChange(q, false)}\n queryRowFilter={queryRowFilter}\n onValidate={setIsQueryRunnable}\n range={range}\n />\n )}\n\n {queryWithDefaults.editorMode === EditorMode.Code && (\n <RawEditor\n db={db}\n query={queryWithDefaults}\n queryToValidate={queryToValidate}\n onChange={onQueryChange}\n onRunQuery={onRunQuery}\n onValidate={setIsQueryRunnable}\n range={range}\n />\n )}\n </>\n );\n}\n\nconst isQueryValid = (q: SQLQuery) => {\n return Boolean(q.rawSql);\n};\n"],"names":["_a","_b"],"mappings":"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"}