@grafana/scenes 6.6.0 → 6.6.2--canary.1085.14204884960.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 (276) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/esm/behaviors/ActWhenVariableChanged.js.map +1 -1
  3. package/dist/esm/behaviors/CursorSync.js +3 -21
  4. package/dist/esm/behaviors/CursorSync.js.map +1 -1
  5. package/dist/esm/behaviors/LiveNowTimer.js +3 -2
  6. package/dist/esm/behaviors/LiveNowTimer.js.map +1 -1
  7. package/dist/esm/behaviors/SceneQueryController.js +7 -37
  8. package/dist/esm/behaviors/SceneQueryController.js.map +1 -1
  9. package/dist/esm/behaviors/SceneRenderProfiler.js +10 -17
  10. package/dist/esm/behaviors/SceneRenderProfiler.js.map +1 -1
  11. package/dist/esm/components/EmbeddedScene.js +1 -12
  12. package/dist/esm/components/EmbeddedScene.js.map +1 -1
  13. package/dist/esm/components/NestedScene.js +23 -30
  14. package/dist/esm/components/NestedScene.js.map +1 -1
  15. package/dist/esm/components/SceneApp/SceneApp.js +1 -11
  16. package/dist/esm/components/SceneApp/SceneApp.js.map +1 -1
  17. package/dist/esm/components/SceneApp/SceneAppPage.js +28 -47
  18. package/dist/esm/components/SceneApp/SceneAppPage.js.map +1 -1
  19. package/dist/esm/components/SceneApp/SceneAppPageView.js +14 -20
  20. package/dist/esm/components/SceneApp/SceneAppPageView.js.map +1 -1
  21. package/dist/esm/components/SceneApp/utils.js +2 -18
  22. package/dist/esm/components/SceneApp/utils.js.map +1 -1
  23. package/dist/esm/components/SceneByFrameRepeater.js +1 -3
  24. package/dist/esm/components/SceneByFrameRepeater.js.map +1 -1
  25. package/dist/esm/components/SceneByVariableRepeater.js +1 -3
  26. package/dist/esm/components/SceneByVariableRepeater.js.map +1 -1
  27. package/dist/esm/components/SceneCanvasText.js +1 -4
  28. package/dist/esm/components/SceneCanvasText.js.map +1 -1
  29. package/dist/esm/components/SceneControlsSpacer.js +1 -3
  30. package/dist/esm/components/SceneControlsSpacer.js.map +1 -1
  31. package/dist/esm/components/SceneDebugger/DebugDetails.js +11 -24
  32. package/dist/esm/components/SceneDebugger/DebugDetails.js.map +1 -1
  33. package/dist/esm/components/SceneDebugger/DebugTreeNode.js +2 -14
  34. package/dist/esm/components/SceneDebugger/DebugTreeNode.js.map +1 -1
  35. package/dist/esm/components/SceneDebugger/SceneDebugger.js +1 -29
  36. package/dist/esm/components/SceneDebugger/SceneDebugger.js.map +1 -1
  37. package/dist/esm/components/SceneReactObject.js +1 -17
  38. package/dist/esm/components/SceneReactObject.js.map +1 -1
  39. package/dist/esm/components/SceneRefreshPicker.js +23 -38
  40. package/dist/esm/components/SceneRefreshPicker.js.map +1 -1
  41. package/dist/esm/components/SceneTimePicker.js +27 -29
  42. package/dist/esm/components/SceneTimePicker.js.map +1 -1
  43. package/dist/esm/components/SceneTimeRangeCompare.js +36 -50
  44. package/dist/esm/components/SceneTimeRangeCompare.js.map +1 -1
  45. package/dist/esm/components/SceneToolbarButton.js +10 -14
  46. package/dist/esm/components/SceneToolbarButton.js.map +1 -1
  47. package/dist/esm/components/VizPanel/VizPanel.js +20 -29
  48. package/dist/esm/components/VizPanel/VizPanel.js.map +1 -1
  49. package/dist/esm/components/VizPanel/VizPanelExploreButton.js +17 -13
  50. package/dist/esm/components/VizPanel/VizPanelExploreButton.js.map +1 -1
  51. package/dist/esm/components/VizPanel/VizPanelMenu.js +18 -20
  52. package/dist/esm/components/VizPanel/VizPanelMenu.js.map +1 -1
  53. package/dist/esm/components/VizPanel/VizPanelRenderer.js +92 -122
  54. package/dist/esm/components/VizPanel/VizPanelRenderer.js.map +1 -1
  55. package/dist/esm/components/VizPanel/VizPanelSeriesLimit.js +7 -15
  56. package/dist/esm/components/VizPanel/VizPanelSeriesLimit.js.map +1 -1
  57. package/dist/esm/components/VizPanel/colorSeriesConfigFactory.js +15 -29
  58. package/dist/esm/components/VizPanel/colorSeriesConfigFactory.js.map +1 -1
  59. package/dist/esm/components/VizPanel/registerRuntimePanelPlugin.js +3 -21
  60. package/dist/esm/components/VizPanel/registerRuntimePanelPlugin.js.map +1 -1
  61. package/dist/esm/components/VizPanel/seriesVisibilityConfigFactory.js +22 -34
  62. package/dist/esm/components/VizPanel/seriesVisibilityConfigFactory.js.map +1 -1
  63. package/dist/esm/components/layout/CSSGrid/SceneCSSGridLayout.js +8 -40
  64. package/dist/esm/components/layout/CSSGrid/SceneCSSGridLayout.js.map +1 -1
  65. package/dist/esm/components/layout/LazyLoader.js +2 -35
  66. package/dist/esm/components/layout/LazyLoader.js.map +1 -1
  67. package/dist/esm/components/layout/SceneFlexLayout.js +3 -13
  68. package/dist/esm/components/layout/SceneFlexLayout.js.map +1 -1
  69. package/dist/esm/components/layout/grid/SceneGridItem.js +1 -3
  70. package/dist/esm/components/layout/grid/SceneGridItem.js.map +1 -1
  71. package/dist/esm/components/layout/grid/SceneGridLayout.js +26 -26
  72. package/dist/esm/components/layout/grid/SceneGridLayout.js.map +1 -1
  73. package/dist/esm/components/layout/grid/SceneGridLayoutRenderer.js +88 -104
  74. package/dist/esm/components/layout/grid/SceneGridLayoutRenderer.js.map +1 -1
  75. package/dist/esm/components/layout/grid/SceneGridRow.js +15 -48
  76. package/dist/esm/components/layout/grid/SceneGridRow.js.map +1 -1
  77. package/dist/esm/components/layout/grid/constants.js.map +1 -1
  78. package/dist/esm/components/layout/grid/types.js.map +1 -1
  79. package/dist/esm/components/layout/grid/utils.js +3 -21
  80. package/dist/esm/components/layout/grid/utils.js.map +1 -1
  81. package/dist/esm/components/layout/split/SplitLayout.js.map +1 -1
  82. package/dist/esm/components/layout/split/SplitLayoutRenderer.js +11 -14
  83. package/dist/esm/components/layout/split/SplitLayoutRenderer.js.map +1 -1
  84. package/dist/esm/components/layout/split/Splitter.js +60 -58
  85. package/dist/esm/components/layout/split/Splitter.js.map +1 -1
  86. package/dist/esm/core/PanelBuilders/FieldConfigBuilder.js +46 -23
  87. package/dist/esm/core/PanelBuilders/FieldConfigBuilder.js.map +1 -1
  88. package/dist/esm/core/PanelBuilders/FieldConfigBuilders.js +8 -8
  89. package/dist/esm/core/PanelBuilders/FieldConfigBuilders.js.map +1 -1
  90. package/dist/esm/core/PanelBuilders/FieldConfigOverridesBuilder.js.map +1 -1
  91. package/dist/esm/core/PanelBuilders/PanelOptionsBuilder.js +3 -0
  92. package/dist/esm/core/PanelBuilders/PanelOptionsBuilder.js.map +1 -1
  93. package/dist/esm/core/PanelBuilders/PanelOptionsBuilders.js +28 -28
  94. package/dist/esm/core/PanelBuilders/PanelOptionsBuilders.js.map +1 -1
  95. package/dist/esm/core/PanelBuilders/StandardFieldConfigBuilders.js.map +1 -1
  96. package/dist/esm/core/PanelBuilders/VizConfigBuilder.js +39 -0
  97. package/dist/esm/core/PanelBuilders/VizConfigBuilder.js.map +1 -1
  98. package/dist/esm/core/PanelBuilders/VizConfigBuilders.js +32 -32
  99. package/dist/esm/core/PanelBuilders/VizConfigBuilders.js.map +1 -1
  100. package/dist/esm/core/PanelBuilders/VizPanelBuilder.js +82 -21
  101. package/dist/esm/core/PanelBuilders/VizPanelBuilder.js.map +1 -1
  102. package/dist/esm/core/PanelBuilders/index.js +32 -32
  103. package/dist/esm/core/PanelBuilders/index.js.map +1 -1
  104. package/dist/esm/core/SceneComponentWrapper.js +4 -38
  105. package/dist/esm/core/SceneComponentWrapper.js.map +1 -1
  106. package/dist/esm/core/SceneDataNode.js +4 -19
  107. package/dist/esm/core/SceneDataNode.js.map +1 -1
  108. package/dist/esm/core/SceneObjectBase.js +55 -17
  109. package/dist/esm/core/SceneObjectBase.js.map +1 -1
  110. package/dist/esm/core/SceneObjectRef.js +7 -18
  111. package/dist/esm/core/SceneObjectRef.js.map +1 -1
  112. package/dist/esm/core/SceneScopesBridge.js +14 -0
  113. package/dist/esm/core/SceneScopesBridge.js.map +1 -1
  114. package/dist/esm/core/SceneTimeRange.js +9 -17
  115. package/dist/esm/core/SceneTimeRange.js.map +1 -1
  116. package/dist/esm/core/SceneTimeRangeTransformerBase.js.map +1 -1
  117. package/dist/esm/core/SceneTimeZoneOverride.js +7 -23
  118. package/dist/esm/core/SceneTimeZoneOverride.js.map +1 -1
  119. package/dist/esm/core/events.js.map +1 -1
  120. package/dist/esm/core/sceneGraph/getQueryController.js.map +1 -1
  121. package/dist/esm/core/sceneGraph/getTimeRange.js.map +1 -1
  122. package/dist/esm/core/sceneGraph/index.js +1 -1
  123. package/dist/esm/core/sceneGraph/index.js.map +1 -1
  124. package/dist/esm/core/sceneGraph/sceneGraph.js.map +1 -1
  125. package/dist/esm/core/sceneGraph/utils.js +1 -17
  126. package/dist/esm/core/sceneGraph/utils.js.map +1 -1
  127. package/dist/esm/core/types.js.map +1 -1
  128. package/dist/esm/index.js +6 -5
  129. package/dist/esm/index.js.map +1 -1
  130. package/dist/esm/querying/DataLayersMerger.js.map +1 -1
  131. package/dist/esm/querying/DataProviderProxy.js.map +1 -1
  132. package/dist/esm/querying/ExtraQueryProvider.js.map +1 -1
  133. package/dist/esm/querying/RuntimeDataSource.js.map +1 -1
  134. package/dist/esm/querying/SceneDataLayerSet.js +9 -24
  135. package/dist/esm/querying/SceneDataLayerSet.js.map +1 -1
  136. package/dist/esm/querying/SceneDataTransformer.js +11 -24
  137. package/dist/esm/querying/SceneDataTransformer.js.map +1 -1
  138. package/dist/esm/querying/SceneQueryRunner.js +44 -33
  139. package/dist/esm/querying/SceneQueryRunner.js.map +1 -1
  140. package/dist/esm/querying/extraQueryProcessingOperator.js +3 -21
  141. package/dist/esm/querying/extraQueryProcessingOperator.js.map +1 -1
  142. package/dist/esm/querying/getEnrichedDataRequest.js.map +1 -1
  143. package/dist/esm/querying/layers/SceneDataLayerBase.js +16 -19
  144. package/dist/esm/querying/layers/SceneDataLayerBase.js.map +1 -1
  145. package/dist/esm/querying/layers/SceneDataLayerControls.js +15 -21
  146. package/dist/esm/querying/layers/SceneDataLayerControls.js.map +1 -1
  147. package/dist/esm/querying/layers/annotations/AnnotationsDataLayer.js +12 -30
  148. package/dist/esm/querying/layers/annotations/AnnotationsDataLayer.js.map +1 -1
  149. package/dist/esm/querying/layers/annotations/filterAnnotations.js +6 -23
  150. package/dist/esm/querying/layers/annotations/filterAnnotations.js.map +1 -1
  151. package/dist/esm/querying/layers/annotations/standardAnnotationQuery.js +19 -29
  152. package/dist/esm/querying/layers/annotations/standardAnnotationQuery.js.map +1 -1
  153. package/dist/esm/querying/layers/annotations/standardAnnotationsSupport.js +14 -34
  154. package/dist/esm/querying/layers/annotations/standardAnnotationsSupport.js.map +1 -1
  155. package/dist/esm/querying/layers/annotations/utils.js +1 -17
  156. package/dist/esm/querying/layers/annotations/utils.js.map +1 -1
  157. package/dist/esm/querying/registerQueryWithController.js.map +1 -1
  158. package/dist/esm/services/SceneObjectUrlSyncConfig.js.map +1 -1
  159. package/dist/esm/services/UniqueUrlKeyMapper.js.map +1 -1
  160. package/dist/esm/services/UrlSyncContextProvider.js.map +1 -1
  161. package/dist/esm/services/UrlSyncManager.js +11 -19
  162. package/dist/esm/services/UrlSyncManager.js.map +1 -1
  163. package/dist/esm/services/useUrlSync.js.map +1 -1
  164. package/dist/esm/services/utils.js.map +1 -1
  165. package/dist/esm/utils/ControlsLabel.js +23 -47
  166. package/dist/esm/utils/ControlsLabel.js.map +1 -1
  167. package/dist/esm/utils/LoadingIndicator.js +11 -10
  168. package/dist/esm/utils/LoadingIndicator.js.map +1 -1
  169. package/dist/esm/utils/SafeSerializableSceneObject.js +7 -18
  170. package/dist/esm/utils/SafeSerializableSceneObject.js.map +1 -1
  171. package/dist/esm/utils/compatibility/setWindowGrafanaSceneContext.js.map +1 -1
  172. package/dist/esm/utils/date.js.map +1 -1
  173. package/dist/esm/utils/evaluateTimeRange.js.map +1 -1
  174. package/dist/esm/utils/explore.js.map +1 -1
  175. package/dist/esm/utils/getCompareSeriesRefId.js.map +1 -1
  176. package/dist/esm/utils/getDataSource.js.map +1 -1
  177. package/dist/esm/utils/getMessageFromError.js.map +1 -1
  178. package/dist/esm/utils/metricTree.js.map +1 -1
  179. package/dist/esm/utils/parseUrlParam.js.map +1 -1
  180. package/dist/esm/utils/utils.js.map +1 -1
  181. package/dist/esm/utils/wrapInSafeSerializableSceneObject.js.map +1 -1
  182. package/dist/esm/utils/writeSceneLog.js.map +1 -1
  183. package/dist/esm/variables/VariableDependencyConfig.js +9 -0
  184. package/dist/esm/variables/VariableDependencyConfig.js.map +1 -1
  185. package/dist/esm/variables/VariableValueRecorder.js.map +1 -1
  186. package/dist/esm/variables/adhoc/AdHocFilterBuilder.js +13 -12
  187. package/dist/esm/variables/adhoc/AdHocFilterBuilder.js.map +1 -1
  188. package/dist/esm/variables/adhoc/AdHocFilterRenderer.js +129 -142
  189. package/dist/esm/variables/adhoc/AdHocFilterRenderer.js.map +1 -1
  190. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js +84 -91
  191. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js.map +1 -1
  192. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js +1 -6
  193. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js.map +1 -1
  194. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +195 -194
  195. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js.map +1 -1
  196. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +34 -28
  197. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js.map +1 -1
  198. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js +28 -65
  199. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js.map +1 -1
  200. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js +29 -43
  201. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js.map +1 -1
  202. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js +2 -1
  203. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js.map +1 -1
  204. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/utils.js.map +1 -1
  205. package/dist/esm/variables/adhoc/AdHocFiltersVariable.js +56 -73
  206. package/dist/esm/variables/adhoc/AdHocFiltersVariable.js.map +1 -1
  207. package/dist/esm/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js.map +1 -1
  208. package/dist/esm/variables/adhoc/getAdHocFiltersFromScopes.js +1 -0
  209. package/dist/esm/variables/adhoc/getAdHocFiltersFromScopes.js.map +1 -1
  210. package/dist/esm/variables/adhoc/getAdhocOptionSearcher.js.map +1 -1
  211. package/dist/esm/variables/adhoc/patchGetAdhocFilters.js.map +1 -1
  212. package/dist/esm/variables/components/VariableValueControl.js +9 -6
  213. package/dist/esm/variables/components/VariableValueControl.js.map +1 -1
  214. package/dist/esm/variables/components/VariableValueInput.js +13 -10
  215. package/dist/esm/variables/components/VariableValueInput.js.map +1 -1
  216. package/dist/esm/variables/components/VariableValueSelect.js +90 -115
  217. package/dist/esm/variables/components/VariableValueSelect.js.map +1 -1
  218. package/dist/esm/variables/components/VariableValueSelectors.js +20 -37
  219. package/dist/esm/variables/components/VariableValueSelectors.js.map +1 -1
  220. package/dist/esm/variables/components/getOptionSearcher.js +1 -1
  221. package/dist/esm/variables/components/getOptionSearcher.js.map +1 -1
  222. package/dist/esm/variables/constants.js.map +1 -1
  223. package/dist/esm/variables/filter.js +6 -1
  224. package/dist/esm/variables/filter.js.map +1 -1
  225. package/dist/esm/variables/getEnrichedFiltersRequest.js.map +1 -1
  226. package/dist/esm/variables/groupby/GroupByVariable.js +106 -112
  227. package/dist/esm/variables/groupby/GroupByVariable.js.map +1 -1
  228. package/dist/esm/variables/groupby/GroupByVariableUrlSyncHandler.js.map +1 -1
  229. package/dist/esm/variables/groupby/findActiveGroupByVariablesByUid.js.map +1 -1
  230. package/dist/esm/variables/interpolation/ScopedVarsVariable.js.map +1 -1
  231. package/dist/esm/variables/interpolation/defaults.js.map +1 -1
  232. package/dist/esm/variables/interpolation/fieldAccessorCache.js.map +1 -1
  233. package/dist/esm/variables/interpolation/formatRegistry.js.map +1 -1
  234. package/dist/esm/variables/interpolation/sceneInterpolator.js.map +1 -1
  235. package/dist/esm/variables/lookupVariable.js.map +1 -1
  236. package/dist/esm/variables/macros/AllVariablesMacro.js.map +1 -1
  237. package/dist/esm/variables/macros/contextMacros.js.map +1 -1
  238. package/dist/esm/variables/macros/dataMacros.js.map +1 -1
  239. package/dist/esm/variables/macros/index.js.map +1 -1
  240. package/dist/esm/variables/macros/templateProxies.js +4 -21
  241. package/dist/esm/variables/macros/templateProxies.js.map +1 -1
  242. package/dist/esm/variables/macros/timeMacros.js.map +1 -1
  243. package/dist/esm/variables/macros/types.js.map +1 -1
  244. package/dist/esm/variables/macros/urlMacros.js.map +1 -1
  245. package/dist/esm/variables/sets/SceneVariableSet.js +44 -0
  246. package/dist/esm/variables/sets/SceneVariableSet.js.map +1 -1
  247. package/dist/esm/variables/types.js.map +1 -1
  248. package/dist/esm/variables/utils.js.map +1 -1
  249. package/dist/esm/variables/variants/ConstantVariable.js +4 -23
  250. package/dist/esm/variables/variants/ConstantVariable.js.map +1 -1
  251. package/dist/esm/variables/variants/CustomVariable.js +4 -19
  252. package/dist/esm/variables/variants/CustomVariable.js.map +1 -1
  253. package/dist/esm/variables/variants/DataSourceVariable.js +4 -19
  254. package/dist/esm/variables/variants/DataSourceVariable.js.map +1 -1
  255. package/dist/esm/variables/variants/IntervalVariable.js +17 -29
  256. package/dist/esm/variables/variants/IntervalVariable.js.map +1 -1
  257. package/dist/esm/variables/variants/LocalValueVariable.js +8 -23
  258. package/dist/esm/variables/variants/LocalValueVariable.js.map +1 -1
  259. package/dist/esm/variables/variants/MultiValueVariable.js +16 -0
  260. package/dist/esm/variables/variants/MultiValueVariable.js.map +1 -1
  261. package/dist/esm/variables/variants/TestVariable.js +5 -19
  262. package/dist/esm/variables/variants/TestVariable.js.map +1 -1
  263. package/dist/esm/variables/variants/TextBoxVariable.js +5 -22
  264. package/dist/esm/variables/variants/TextBoxVariable.js.map +1 -1
  265. package/dist/esm/variables/variants/guards.js.map +1 -1
  266. package/dist/esm/variables/variants/query/QueryVariable.js +8 -20
  267. package/dist/esm/variables/variants/query/QueryVariable.js.map +1 -1
  268. package/dist/esm/variables/variants/query/createQueryVariableRunner.js +6 -23
  269. package/dist/esm/variables/variants/query/createQueryVariableRunner.js.map +1 -1
  270. package/dist/esm/variables/variants/query/guards.js.map +1 -1
  271. package/dist/esm/variables/variants/query/toMetricFindValues.js.map +1 -1
  272. package/dist/esm/variables/variants/query/utils.js.map +1 -1
  273. package/dist/index.d.ts +36 -7
  274. package/dist/index.js +2048 -2810
  275. package/dist/index.js.map +1 -1
  276. package/package.json +8 -9
@@ -1,26 +1,7 @@
1
- import { cx, css } from '@emotion/css';
1
+ import { css, cx } from '@emotion/css';
2
2
  import { useStyles2, Button, Icon } from '@grafana/ui';
3
3
  import React, { useCallback } from 'react';
4
4
 
5
- var __defProp = Object.defineProperty;
6
- var __defProps = Object.defineProperties;
7
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
8
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
9
- var __hasOwnProp = Object.prototype.hasOwnProperty;
10
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
11
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
12
- var __spreadValues = (a, b) => {
13
- for (var prop in b || (b = {}))
14
- if (__hasOwnProp.call(b, prop))
15
- __defNormalProp(a, prop, b[prop]);
16
- if (__getOwnPropSymbols)
17
- for (var prop of __getOwnPropSymbols(b)) {
18
- if (__propIsEnum.call(b, prop))
19
- __defNormalProp(a, prop, b[prop]);
20
- }
21
- return a;
22
- };
23
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
24
5
  const MultiValuePill = ({
25
6
  item,
26
7
  handleRemoveMultiValue,
@@ -61,28 +42,33 @@ const MultiValuePill = ({
61
42
  },
62
43
  [removePillHandler]
63
44
  );
64
- return /* @__PURE__ */ React.createElement("div", {
65
- className: cx(styles.basePill, styles.valuePill),
66
- onClick: editMultiValuePill,
67
- onKeyDown: editMultiValuePillWithKeyboard,
68
- tabIndex: 0,
69
- id: `${item.value}-${index}`
70
- }, (_a = item.label) != null ? _a : item.value, /* @__PURE__ */ React.createElement(Button, {
71
- onClick: removePillHandler,
72
- onKeyDownCapture: removePillHandlerWithKeyboard,
73
- fill: "text",
74
- size: "sm",
75
- variant: "secondary",
76
- className: styles.removeButton,
77
- tooltip: `Remove filter value - ${(_b = item.label) != null ? _b : item.value}`
78
- }, /* @__PURE__ */ React.createElement(Icon, {
79
- name: "times",
80
- size: "md",
81
- id: `${item.value}-${index}-close-icon`
82
- })));
45
+ return /* @__PURE__ */ React.createElement(
46
+ "div",
47
+ {
48
+ className: cx(styles.basePill, styles.valuePill),
49
+ onClick: editMultiValuePill,
50
+ onKeyDown: editMultiValuePillWithKeyboard,
51
+ tabIndex: 0,
52
+ id: `${item.value}-${index}`
53
+ },
54
+ (_a = item.label) != null ? _a : item.value,
55
+ /* @__PURE__ */ React.createElement(
56
+ Button,
57
+ {
58
+ onClick: removePillHandler,
59
+ onKeyDownCapture: removePillHandlerWithKeyboard,
60
+ fill: "text",
61
+ size: "sm",
62
+ variant: "secondary",
63
+ className: styles.removeButton,
64
+ tooltip: `Remove filter value - ${(_b = item.label) != null ? _b : item.value}`
65
+ },
66
+ /* @__PURE__ */ React.createElement(Icon, { name: "times", size: "md", id: `${item.value}-${index}-close-icon` })
67
+ )
68
+ );
83
69
  };
84
70
  const getStyles = (theme) => ({
85
- basePill: css(__spreadProps(__spreadValues({
71
+ basePill: css({
86
72
  display: "flex",
87
73
  alignItems: "center",
88
74
  background: theme.colors.action.disabledBackground,
@@ -91,10 +77,10 @@ const getStyles = (theme) => ({
91
77
  color: theme.colors.text.primary,
92
78
  overflow: "hidden",
93
79
  whiteSpace: "nowrap",
94
- minHeight: theme.spacing(2.75)
95
- }, theme.typography.bodySmall), {
80
+ minHeight: theme.spacing(2.75),
81
+ ...theme.typography.bodySmall,
96
82
  cursor: "pointer"
97
- })),
83
+ }),
98
84
  valuePill: css({
99
85
  background: theme.colors.action.selected,
100
86
  padding: theme.spacing(0.125, 0, 0.125, 1)
@@ -1 +1 @@
1
- {"version":3,"file":"MultiValuePill.js","sources":["../../../../../src/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.tsx"],"sourcesContent":["import { cx, css } from '@emotion/css';\nimport { SelectableValue, GrafanaTheme2 } from '@grafana/data';\nimport { useStyles2, Button, Icon } from '@grafana/ui';\nimport React, { useCallback } from 'react';\n\ninterface MultiValuePillProps {\n item: SelectableValue<string>;\n handleRemoveMultiValue: (item: SelectableValue<string>) => void;\n index: number;\n handleEditMultiValuePill: (value: SelectableValue<string>) => void;\n}\nexport const MultiValuePill = ({\n item,\n handleRemoveMultiValue,\n index,\n handleEditMultiValuePill,\n}: MultiValuePillProps) => {\n const styles = useStyles2(getStyles);\n\n const editMultiValuePill = useCallback(\n (e: React.SyntheticEvent) => {\n e.stopPropagation();\n e.preventDefault();\n handleEditMultiValuePill(item);\n },\n [handleEditMultiValuePill, item]\n );\n\n const editMultiValuePillWithKeyboard = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === 'Enter') {\n editMultiValuePill(e);\n }\n },\n [editMultiValuePill]\n );\n\n const removePillHandler = useCallback(\n (e: React.SyntheticEvent) => {\n e.stopPropagation();\n e.preventDefault();\n handleRemoveMultiValue(item);\n },\n [handleRemoveMultiValue, item]\n );\n\n const removePillHandlerWithKeyboard = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === 'Enter') {\n removePillHandler(e);\n }\n },\n [removePillHandler]\n );\n\n return (\n <div\n className={cx(styles.basePill, styles.valuePill)}\n onClick={editMultiValuePill}\n onKeyDown={editMultiValuePillWithKeyboard}\n tabIndex={0}\n id={`${item.value}-${index}`}\n >\n {item.label ?? item.value}\n <Button\n onClick={removePillHandler}\n onKeyDownCapture={removePillHandlerWithKeyboard}\n fill=\"text\"\n size=\"sm\"\n variant=\"secondary\"\n className={styles.removeButton}\n tooltip={`Remove filter value - ${item.label ?? item.value}`}\n >\n <Icon name=\"times\" size=\"md\" id={`${item.value}-${index}-close-icon`} />\n </Button>\n </div>\n );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n basePill: css({\n display: 'flex',\n alignItems: 'center',\n background: theme.colors.action.disabledBackground,\n border: `1px solid ${theme.colors.border.weak}`,\n padding: theme.spacing(0.125, 1, 0.125, 1),\n color: theme.colors.text.primary,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n minHeight: theme.spacing(2.75),\n ...theme.typography.bodySmall,\n cursor: 'pointer',\n }),\n valuePill: css({\n background: theme.colors.action.selected,\n padding: theme.spacing(0.125, 0, 0.125, 1),\n }),\n removeButton: css({\n marginInline: theme.spacing(0.5),\n height: '100%',\n padding: 0,\n cursor: 'pointer',\n '&:hover': {\n color: theme.colors.text.primary,\n },\n }),\n});\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MultiValuePill.js","sources":["../../../../../src/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.tsx"],"sourcesContent":["import { cx, css } from '@emotion/css';\nimport { SelectableValue, GrafanaTheme2 } from '@grafana/data';\nimport { useStyles2, Button, Icon } from '@grafana/ui';\nimport React, { useCallback } from 'react';\n\ninterface MultiValuePillProps {\n item: SelectableValue<string>;\n handleRemoveMultiValue: (item: SelectableValue<string>) => void;\n index: number;\n handleEditMultiValuePill: (value: SelectableValue<string>) => void;\n}\nexport const MultiValuePill = ({\n item,\n handleRemoveMultiValue,\n index,\n handleEditMultiValuePill,\n}: MultiValuePillProps) => {\n const styles = useStyles2(getStyles);\n\n const editMultiValuePill = useCallback(\n (e: React.SyntheticEvent) => {\n e.stopPropagation();\n e.preventDefault();\n handleEditMultiValuePill(item);\n },\n [handleEditMultiValuePill, item]\n );\n\n const editMultiValuePillWithKeyboard = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === 'Enter') {\n editMultiValuePill(e);\n }\n },\n [editMultiValuePill]\n );\n\n const removePillHandler = useCallback(\n (e: React.SyntheticEvent) => {\n e.stopPropagation();\n e.preventDefault();\n handleRemoveMultiValue(item);\n },\n [handleRemoveMultiValue, item]\n );\n\n const removePillHandlerWithKeyboard = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === 'Enter') {\n removePillHandler(e);\n }\n },\n [removePillHandler]\n );\n\n return (\n <div\n className={cx(styles.basePill, styles.valuePill)}\n onClick={editMultiValuePill}\n onKeyDown={editMultiValuePillWithKeyboard}\n tabIndex={0}\n id={`${item.value}-${index}`}\n >\n {item.label ?? item.value}\n <Button\n onClick={removePillHandler}\n onKeyDownCapture={removePillHandlerWithKeyboard}\n fill=\"text\"\n size=\"sm\"\n variant=\"secondary\"\n className={styles.removeButton}\n tooltip={`Remove filter value - ${item.label ?? item.value}`}\n >\n <Icon name=\"times\" size=\"md\" id={`${item.value}-${index}-close-icon`} />\n </Button>\n </div>\n );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n basePill: css({\n display: 'flex',\n alignItems: 'center',\n background: theme.colors.action.disabledBackground,\n border: `1px solid ${theme.colors.border.weak}`,\n padding: theme.spacing(0.125, 1, 0.125, 1),\n color: theme.colors.text.primary,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n minHeight: theme.spacing(2.75),\n ...theme.typography.bodySmall,\n cursor: 'pointer',\n }),\n valuePill: css({\n background: theme.colors.action.selected,\n padding: theme.spacing(0.125, 0, 0.125, 1),\n }),\n removeButton: css({\n marginInline: theme.spacing(0.5),\n height: '100%',\n padding: 0,\n cursor: 'pointer',\n '&:hover': {\n color: theme.colors.text.primary,\n },\n }),\n});\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { useFloating, autoUpdate, offset, flip, size, useRole, useDismiss, useListNavigation, useInteractions } from '@floating-ui/react';
1
+ import { useFloating, offset, flip, size, autoUpdate, useRole, useDismiss, useListNavigation, useInteractions } from '@floating-ui/react';
2
2
 
3
3
  const MAX_MENU_HEIGHT = 300;
4
4
  const useFloatingInteractions = ({
@@ -30,6 +30,7 @@ const useFloatingInteractions = ({
30
30
  });
31
31
  const role = useRole(context, { role: "listbox" });
32
32
  const dismiss = useDismiss(context, {
33
+ // if outside click lands on operator pill, then ignore outside click
33
34
  outsidePress: (event) => {
34
35
  var _a;
35
36
  if (event.currentTarget instanceof Element) {
@@ -1 +1 @@
1
- {"version":3,"file":"useFloatingInteractions.js","sources":["../../../../../src/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.ts"],"sourcesContent":["import {\n useFloating,\n autoUpdate,\n offset,\n useRole,\n useDismiss,\n useListNavigation,\n UseFloatingOptions,\n flip,\n size,\n UseListNavigationProps,\n useInteractions,\n} from '@floating-ui/react';\n\ntype useFloatingInteractionsProps = {\n open: UseFloatingOptions['open'];\n onOpenChange: UseFloatingOptions['onOpenChange'];\n activeIndex: UseListNavigationProps['activeIndex'];\n setActiveIndex: UseListNavigationProps['onNavigate'];\n outsidePressIdsToIgnore: string[];\n listRef: React.MutableRefObject<Array<HTMLElement | null>>;\n disabledIndicesRef: React.MutableRefObject<number[]>;\n};\n\nexport const MAX_MENU_HEIGHT = 300;\n\nexport const useFloatingInteractions = ({\n open,\n onOpenChange,\n activeIndex,\n setActiveIndex,\n outsidePressIdsToIgnore,\n listRef,\n disabledIndicesRef,\n}: useFloatingInteractionsProps) => {\n const { refs, floatingStyles, context } = useFloating<HTMLInputElement>({\n whileElementsMounted: autoUpdate,\n open,\n onOpenChange,\n placement: 'bottom-start',\n middleware: [\n offset(10),\n flip({ padding: 10 }),\n size({\n apply({ availableHeight, availableWidth, elements }) {\n // limit maxHeight and maxWidth of dropdown\n elements.floating.style.maxHeight = `${Math.min(MAX_MENU_HEIGHT, availableHeight)}px`;\n elements.floating.style.maxWidth = `${availableWidth}px`;\n },\n padding: 10,\n }),\n ],\n strategy: 'fixed',\n });\n\n const role = useRole(context, { role: 'listbox' });\n const dismiss = useDismiss(context, {\n // if outside click lands on operator pill, then ignore outside click\n outsidePress: (event) => {\n if (event.currentTarget instanceof Element) {\n const target = event.currentTarget;\n let idToCompare = target.id;\n if (target.nodeName === 'path') {\n idToCompare = target.parentElement?.id || '';\n }\n\n if (outsidePressIdsToIgnore.includes(idToCompare)) {\n return false;\n }\n }\n return true;\n },\n });\n const listNav = useListNavigation(context, {\n listRef,\n activeIndex,\n onNavigate: setActiveIndex,\n virtual: true,\n loop: true,\n disabledIndices: disabledIndicesRef.current,\n });\n\n const { getReferenceProps, getFloatingProps, getItemProps } = useInteractions([role, dismiss, listNav]);\n\n return {\n refs,\n floatingStyles,\n context,\n getReferenceProps,\n getFloatingProps,\n getItemProps,\n };\n};\n"],"names":[],"mappings":";;AAwBO,MAAM,eAAkB,GAAA,IAAA;AAExB,MAAM,0BAA0B,CAAC;AAAA,EACtC,IAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA,cAAA;AAAA,EACA,uBAAA;AAAA,EACA,OAAA;AAAA,EACA,kBAAA;AACF,CAAoC,KAAA;AAClC,EAAA,MAAM,EAAE,IAAA,EAAM,cAAgB,EAAA,OAAA,KAAY,WAA8B,CAAA;AAAA,IACtE,oBAAsB,EAAA,UAAA;AAAA,IACtB,IAAA;AAAA,IACA,YAAA;AAAA,IACA,SAAW,EAAA,cAAA;AAAA,IACX,UAAY,EAAA;AAAA,MACV,OAAO,EAAE,CAAA;AAAA,MACT,IAAK,CAAA,EAAE,OAAS,EAAA,EAAA,EAAI,CAAA;AAAA,MACpB,IAAK,CAAA;AAAA,QACH,KAAM,CAAA,EAAE,eAAiB,EAAA,cAAA,EAAgB,UAAY,EAAA;AAEnD,UAAA,QAAA,CAAS,SAAS,KAAM,CAAA,SAAA,GAAY,GAAG,IAAK,CAAA,GAAA,CAAI,iBAAiB,eAAe,CAAA,CAAA,EAAA,CAAA,CAAA;AAChF,UAAS,QAAA,CAAA,QAAA,CAAS,KAAM,CAAA,QAAA,GAAW,CAAG,EAAA,cAAA,CAAA,EAAA,CAAA,CAAA;AAAA,SACxC;AAAA,QACA,OAAS,EAAA,EAAA;AAAA,OACV,CAAA;AAAA,KACH;AAAA,IACA,QAAU,EAAA,OAAA;AAAA,GACX,CAAA,CAAA;AAED,EAAA,MAAM,OAAO,OAAQ,CAAA,OAAA,EAAS,EAAE,IAAA,EAAM,WAAW,CAAA,CAAA;AACjD,EAAM,MAAA,OAAA,GAAU,WAAW,OAAS,EAAA;AAAA,IAElC,YAAA,EAAc,CAAC,KAAU,KAAA;AA1D7B,MAAA,IAAA,EAAA,CAAA;AA2DM,MAAI,IAAA,KAAA,CAAM,yBAAyB,OAAS,EAAA;AAC1C,QAAA,MAAM,SAAS,KAAM,CAAA,aAAA,CAAA;AACrB,QAAA,IAAI,cAAc,MAAO,CAAA,EAAA,CAAA;AACzB,QAAI,IAAA,MAAA,CAAO,aAAa,MAAQ,EAAA;AAC9B,UAAc,WAAA,GAAA,CAAA,CAAA,EAAA,GAAA,MAAA,CAAO,aAAP,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAsB,EAAM,KAAA,EAAA,CAAA;AAAA,SAC5C;AAEA,QAAI,IAAA,uBAAA,CAAwB,QAAS,CAAA,WAAW,CAAG,EAAA;AACjD,UAAO,OAAA,KAAA,CAAA;AAAA,SACT;AAAA,OACF;AACA,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AAAA,GACD,CAAA,CAAA;AACD,EAAM,MAAA,OAAA,GAAU,kBAAkB,OAAS,EAAA;AAAA,IACzC,OAAA;AAAA,IACA,WAAA;AAAA,IACA,UAAY,EAAA,cAAA;AAAA,IACZ,OAAS,EAAA,IAAA;AAAA,IACT,IAAM,EAAA,IAAA;AAAA,IACN,iBAAiB,kBAAmB,CAAA,OAAA;AAAA,GACrC,CAAA,CAAA;AAED,EAAM,MAAA,EAAE,iBAAmB,EAAA,gBAAA,EAAkB,YAAa,EAAA,GAAI,gBAAgB,CAAC,IAAA,EAAM,OAAS,EAAA,OAAO,CAAC,CAAA,CAAA;AAEtG,EAAO,OAAA;AAAA,IACL,IAAA;AAAA,IACA,cAAA;AAAA,IACA,OAAA;AAAA,IACA,iBAAA;AAAA,IACA,gBAAA;AAAA,IACA,YAAA;AAAA,GACF,CAAA;AACF;;;;"}
1
+ {"version":3,"file":"useFloatingInteractions.js","sources":["../../../../../src/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.ts"],"sourcesContent":["import {\n useFloating,\n autoUpdate,\n offset,\n useRole,\n useDismiss,\n useListNavigation,\n UseFloatingOptions,\n flip,\n size,\n UseListNavigationProps,\n useInteractions,\n} from '@floating-ui/react';\n\ntype useFloatingInteractionsProps = {\n open: UseFloatingOptions['open'];\n onOpenChange: UseFloatingOptions['onOpenChange'];\n activeIndex: UseListNavigationProps['activeIndex'];\n setActiveIndex: UseListNavigationProps['onNavigate'];\n outsidePressIdsToIgnore: string[];\n listRef: React.MutableRefObject<Array<HTMLElement | null>>;\n disabledIndicesRef: React.MutableRefObject<number[]>;\n};\n\nexport const MAX_MENU_HEIGHT = 300;\n\nexport const useFloatingInteractions = ({\n open,\n onOpenChange,\n activeIndex,\n setActiveIndex,\n outsidePressIdsToIgnore,\n listRef,\n disabledIndicesRef,\n}: useFloatingInteractionsProps) => {\n const { refs, floatingStyles, context } = useFloating<HTMLInputElement>({\n whileElementsMounted: autoUpdate,\n open,\n onOpenChange,\n placement: 'bottom-start',\n middleware: [\n offset(10),\n flip({ padding: 10 }),\n size({\n apply({ availableHeight, availableWidth, elements }) {\n // limit maxHeight and maxWidth of dropdown\n elements.floating.style.maxHeight = `${Math.min(MAX_MENU_HEIGHT, availableHeight)}px`;\n elements.floating.style.maxWidth = `${availableWidth}px`;\n },\n padding: 10,\n }),\n ],\n strategy: 'fixed',\n });\n\n const role = useRole(context, { role: 'listbox' });\n const dismiss = useDismiss(context, {\n // if outside click lands on operator pill, then ignore outside click\n outsidePress: (event) => {\n if (event.currentTarget instanceof Element) {\n const target = event.currentTarget;\n let idToCompare = target.id;\n if (target.nodeName === 'path') {\n idToCompare = target.parentElement?.id || '';\n }\n\n if (outsidePressIdsToIgnore.includes(idToCompare)) {\n return false;\n }\n }\n return true;\n },\n });\n const listNav = useListNavigation(context, {\n listRef,\n activeIndex,\n onNavigate: setActiveIndex,\n virtual: true,\n loop: true,\n disabledIndices: disabledIndicesRef.current,\n });\n\n const { getReferenceProps, getFloatingProps, getItemProps } = useInteractions([role, dismiss, listNav]);\n\n return {\n refs,\n floatingStyles,\n context,\n getReferenceProps,\n getFloatingProps,\n getItemProps,\n };\n};\n"],"names":[],"mappings":";;AAwBO,MAAM,eAAkB,GAAA;AAExB,MAAM,0BAA0B,CAAC;AAAA,EACtC,IAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA,cAAA;AAAA,EACA,uBAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAoC,KAAA;AAClC,EAAA,MAAM,EAAE,IAAA,EAAM,cAAgB,EAAA,OAAA,KAAY,WAA8B,CAAA;AAAA,IACtE,oBAAsB,EAAA,UAAA;AAAA,IACtB,IAAA;AAAA,IACA,YAAA;AAAA,IACA,SAAW,EAAA,cAAA;AAAA,IACX,UAAY,EAAA;AAAA,MACV,OAAO,EAAE,CAAA;AAAA,MACT,IAAK,CAAA,EAAE,OAAS,EAAA,EAAA,EAAI,CAAA;AAAA,MACpB,IAAK,CAAA;AAAA,QACH,KAAM,CAAA,EAAE,eAAiB,EAAA,cAAA,EAAgB,UAAY,EAAA;AAEnD,UAAS,QAAA,CAAA,QAAA,CAAS,MAAM,SAAY,GAAA,CAAA,EAAG,KAAK,GAAI,CAAA,eAAA,EAAiB,eAAe,CAAC,CAAA,EAAA,CAAA;AACjF,UAAA,QAAA,CAAS,QAAS,CAAA,KAAA,CAAM,QAAW,GAAA,CAAA,EAAG,cAAc,CAAA,EAAA,CAAA;AAAA,SACtD;AAAA,QACA,OAAS,EAAA;AAAA,OACV;AAAA,KACH;AAAA,IACA,QAAU,EAAA;AAAA,GACX,CAAA;AAED,EAAA,MAAM,OAAO,OAAQ,CAAA,OAAA,EAAS,EAAE,IAAA,EAAM,WAAW,CAAA;AACjD,EAAM,MAAA,OAAA,GAAU,WAAW,OAAS,EAAA;AAAA;AAAA,IAElC,YAAA,EAAc,CAAC,KAAU,KAAA;AA1D7B,MAAA,IAAA,EAAA;AA2DM,MAAI,IAAA,KAAA,CAAM,yBAAyB,OAAS,EAAA;AAC1C,QAAA,MAAM,SAAS,KAAM,CAAA,aAAA;AACrB,QAAA,IAAI,cAAc,MAAO,CAAA,EAAA;AACzB,QAAI,IAAA,MAAA,CAAO,aAAa,MAAQ,EAAA;AAC9B,UAAc,WAAA,GAAA,CAAA,CAAA,EAAA,GAAA,MAAA,CAAO,aAAP,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAsB,EAAM,KAAA,EAAA;AAAA;AAG5C,QAAI,IAAA,uBAAA,CAAwB,QAAS,CAAA,WAAW,CAAG,EAAA;AACjD,UAAO,OAAA,KAAA;AAAA;AACT;AAEF,MAAO,OAAA,IAAA;AAAA;AACT,GACD,CAAA;AACD,EAAM,MAAA,OAAA,GAAU,kBAAkB,OAAS,EAAA;AAAA,IACzC,OAAA;AAAA,IACA,WAAA;AAAA,IACA,UAAY,EAAA,cAAA;AAAA,IACZ,OAAS,EAAA,IAAA;AAAA,IACT,IAAM,EAAA,IAAA;AAAA,IACN,iBAAiB,kBAAmB,CAAA;AAAA,GACrC,CAAA;AAED,EAAM,MAAA,EAAE,iBAAmB,EAAA,gBAAA,EAAkB,YAAa,EAAA,GAAI,gBAAgB,CAAC,IAAA,EAAM,OAAS,EAAA,OAAO,CAAC,CAAA;AAEtG,EAAO,OAAA;AAAA,IACL,IAAA;AAAA,IACA,cAAA;AAAA,IACA,OAAA;AAAA,IACA,iBAAA;AAAA,IACA,gBAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../../../src/variables/adhoc/AdHocFiltersCombobox/utils.ts"],"sourcesContent":["import { SelectableValue } from '@grafana/data';\nimport { AdHocInputType } from './AdHocFiltersCombobox';\nimport { AdHocFilterWithLabels, isMultiValueOperator, OnAddCustomValueFn } from '../AdHocFiltersVariable';\n\nconst VIRTUAL_LIST_WIDTH_ESTIMATE_MULTIPLIER = 8;\nconst VIRTUAL_LIST_DESCRIPTION_WIDTH_ESTIMATE_MULTIPLIER = 6;\nconst VIRTUAL_LIST_PADDING = 8;\nexport const VIRTUAL_LIST_OVERSCAN = 5;\nexport const VIRTUAL_LIST_ITEM_HEIGHT = 38;\nexport const VIRTUAL_LIST_ITEM_HEIGHT_WITH_DESCRIPTION = 60;\nexport const ERROR_STATE_DROPDOWN_WIDTH = 366;\n\nexport const flattenOptionGroups = (options: Array<SelectableValue<string>>) =>\n options.flatMap<SelectableValue<string>>((option) => (option.options ? [option, ...option.options] : [option]));\n\nexport const setupDropdownAccessibility = (\n options: Array<SelectableValue<string>>,\n listRef: React.MutableRefObject<Array<HTMLElement | null>>,\n disabledIndicesRef: React.MutableRefObject<number[]>\n) => {\n let maxOptionWidth = 182;\n const listRefArr = [];\n const disabledIndices = [];\n\n for (let i = 0; i < options.length; i++) {\n // listRefArr should be filled with nulls for amount of dropdown items so that\n // useNavigationList sets activeIndex correctly when navigating with arrow keys\n listRefArr.push(null);\n\n // disabledIndices are used to skip unselectable group items in dropdown when\n // navigating with arrow keys\n if (options[i]?.options) {\n disabledIndices.push(i);\n }\n let label = options[i].label ?? options[i].value ?? '';\n let multiplierToUse = VIRTUAL_LIST_WIDTH_ESTIMATE_MULTIPLIER;\n if (\n label.length * VIRTUAL_LIST_WIDTH_ESTIMATE_MULTIPLIER <\n (options[i].description?.length || 0) * VIRTUAL_LIST_DESCRIPTION_WIDTH_ESTIMATE_MULTIPLIER\n ) {\n label = options[i].description!;\n multiplierToUse = VIRTUAL_LIST_DESCRIPTION_WIDTH_ESTIMATE_MULTIPLIER;\n }\n\n // rough widthEstimate\n const widthEstimate =\n (options[i].isCustom ? label.length + 18 : label.length) * multiplierToUse + VIRTUAL_LIST_PADDING * 2;\n if (widthEstimate > maxOptionWidth) {\n maxOptionWidth = widthEstimate;\n }\n }\n\n listRef.current = [...listRefArr];\n disabledIndicesRef.current = [...disabledIndices];\n return maxOptionWidth;\n};\n\nconst nextInputTypeMap = {\n key: 'operator',\n operator: 'value',\n value: 'key',\n} as const;\n\nexport const switchToNextInputType = (\n filterInputType: AdHocInputType,\n setInputType: React.Dispatch<React.SetStateAction<AdHocInputType>>,\n handleChangeViewMode: ((event?: React.MouseEvent, shouldFocusOnFilterPill?: boolean) => void) | undefined,\n element: HTMLInputElement | null,\n shouldFocusOnPillWrapperOverride?: boolean\n) =>\n switchInputType(\n nextInputTypeMap[filterInputType],\n setInputType,\n filterInputType === 'value' ? handleChangeViewMode : undefined,\n element,\n shouldFocusOnPillWrapperOverride\n );\n\nexport const switchInputType = (\n filterInputType: AdHocInputType,\n setInputType: React.Dispatch<React.SetStateAction<AdHocInputType>>,\n handleChangeViewMode?: (event?: React.MouseEvent, shouldFocusOnFilterPill?: boolean) => void,\n element?: HTMLInputElement | null,\n shouldFocusOnPillWrapperOverride?: boolean\n) => {\n setInputType(filterInputType);\n\n handleChangeViewMode?.(undefined, shouldFocusOnPillWrapperOverride);\n\n setTimeout(() => element?.focus());\n};\n\nexport const generateFilterUpdatePayload = ({\n filterInputType,\n item,\n filter,\n setFilterMultiValues,\n onAddCustomValue,\n}: {\n filterInputType: AdHocInputType;\n item: SelectableValue<string>;\n filter: AdHocFilterWithLabels;\n setFilterMultiValues: (value: React.SetStateAction<Array<SelectableValue<string>>>) => void;\n onAddCustomValue?: OnAddCustomValueFn;\n}): Partial<AdHocFilterWithLabels> => {\n if (filterInputType === 'key') {\n return {\n key: item.value,\n keyLabel: item.label ? item.label : item.value,\n meta: item?.meta,\n };\n }\n if (filterInputType === 'value') {\n if (item.isCustom && onAddCustomValue) {\n return onAddCustomValue(item, filter);\n }\n return {\n value: item.value,\n valueLabels: [item.label ? item.label : item.value!],\n };\n }\n\n if (filterInputType === 'operator') {\n // handle values/valueLabels when switching from multi to single value operator\n if (isMultiValueOperator(filter.operator) && !isMultiValueOperator(item.value!)) {\n // reset local multi values state\n setFilterMultiValues([]);\n // update operator and reset values and valueLabels\n return {\n operator: item.value,\n valueLabels: [filter.valueLabels?.[0] || filter.values?.[0] || filter.value],\n values: undefined,\n };\n }\n\n // handle values/valueLabels when switching from single to multi value operator\n if (isMultiValueOperator(item.value!) && !isMultiValueOperator(filter.operator)) {\n const valueLabels = [filter.valueLabels?.[0] || filter.values?.[0] || filter.value];\n const values = [filter.value];\n\n // populate local multi values state\n if (values[0]) {\n setFilterMultiValues([\n {\n value: values[0],\n label: valueLabels?.[0] ?? values[0],\n },\n ]);\n }\n\n // update operator and default values and valueLabels\n return {\n operator: item.value,\n valueLabels: valueLabels,\n values: values,\n };\n }\n }\n\n // default operator update of same multi/single type\n return {\n [filterInputType]: item.value,\n };\n};\n\nconst INPUT_PLACEHOLDER = 'Filter by label values';\n\nexport const generatePlaceholder = (\n filter: AdHocFilterWithLabels,\n filterInputType: AdHocInputType,\n isMultiValueEdit: boolean,\n isAlwaysWip?: boolean\n) => {\n if (filterInputType === 'key') {\n return INPUT_PLACEHOLDER;\n }\n if (filterInputType === 'value') {\n if (isMultiValueEdit) {\n return 'Edit values';\n }\n return filter.valueLabels?.[0] || '';\n }\n\n return filter[filterInputType] && !isAlwaysWip ? `${filter[filterInputType]}` : INPUT_PLACEHOLDER;\n};\n\nexport const populateInputValueOnInputTypeSwitch = ({\n populateInputOnEdit,\n item,\n filterInputType,\n setInputValue,\n filter,\n}: {\n populateInputOnEdit: boolean | undefined;\n item: SelectableValue<string>;\n filterInputType: AdHocInputType;\n setInputValue: (value: React.SetStateAction<string>) => void;\n filter: AdHocFilterWithLabels | undefined;\n}) => {\n if (populateInputOnEdit && !isMultiValueOperator(item.value || '') && nextInputTypeMap[filterInputType] === 'value') {\n setInputValue(filter?.valueLabels?.[0] ?? filter?.value ?? '');\n } else {\n setInputValue('');\n }\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sources":["../../../../../src/variables/adhoc/AdHocFiltersCombobox/utils.ts"],"sourcesContent":["import { SelectableValue } from '@grafana/data';\nimport { AdHocInputType } from './AdHocFiltersCombobox';\nimport { AdHocFilterWithLabels, isMultiValueOperator, OnAddCustomValueFn } from '../AdHocFiltersVariable';\n\nconst VIRTUAL_LIST_WIDTH_ESTIMATE_MULTIPLIER = 8;\nconst VIRTUAL_LIST_DESCRIPTION_WIDTH_ESTIMATE_MULTIPLIER = 6;\nconst VIRTUAL_LIST_PADDING = 8;\nexport const VIRTUAL_LIST_OVERSCAN = 5;\nexport const VIRTUAL_LIST_ITEM_HEIGHT = 38;\nexport const VIRTUAL_LIST_ITEM_HEIGHT_WITH_DESCRIPTION = 60;\nexport const ERROR_STATE_DROPDOWN_WIDTH = 366;\n\nexport const flattenOptionGroups = (options: Array<SelectableValue<string>>) =>\n options.flatMap<SelectableValue<string>>((option) => (option.options ? [option, ...option.options] : [option]));\n\nexport const setupDropdownAccessibility = (\n options: Array<SelectableValue<string>>,\n listRef: React.MutableRefObject<Array<HTMLElement | null>>,\n disabledIndicesRef: React.MutableRefObject<number[]>\n) => {\n let maxOptionWidth = 182;\n const listRefArr = [];\n const disabledIndices = [];\n\n for (let i = 0; i < options.length; i++) {\n // listRefArr should be filled with nulls for amount of dropdown items so that\n // useNavigationList sets activeIndex correctly when navigating with arrow keys\n listRefArr.push(null);\n\n // disabledIndices are used to skip unselectable group items in dropdown when\n // navigating with arrow keys\n if (options[i]?.options) {\n disabledIndices.push(i);\n }\n let label = options[i].label ?? options[i].value ?? '';\n let multiplierToUse = VIRTUAL_LIST_WIDTH_ESTIMATE_MULTIPLIER;\n if (\n label.length * VIRTUAL_LIST_WIDTH_ESTIMATE_MULTIPLIER <\n (options[i].description?.length || 0) * VIRTUAL_LIST_DESCRIPTION_WIDTH_ESTIMATE_MULTIPLIER\n ) {\n label = options[i].description!;\n multiplierToUse = VIRTUAL_LIST_DESCRIPTION_WIDTH_ESTIMATE_MULTIPLIER;\n }\n\n // rough widthEstimate\n const widthEstimate =\n (options[i].isCustom ? label.length + 18 : label.length) * multiplierToUse + VIRTUAL_LIST_PADDING * 2;\n if (widthEstimate > maxOptionWidth) {\n maxOptionWidth = widthEstimate;\n }\n }\n\n listRef.current = [...listRefArr];\n disabledIndicesRef.current = [...disabledIndices];\n return maxOptionWidth;\n};\n\nconst nextInputTypeMap = {\n key: 'operator',\n operator: 'value',\n value: 'key',\n} as const;\n\nexport const switchToNextInputType = (\n filterInputType: AdHocInputType,\n setInputType: React.Dispatch<React.SetStateAction<AdHocInputType>>,\n handleChangeViewMode: ((event?: React.MouseEvent, shouldFocusOnFilterPill?: boolean) => void) | undefined,\n element: HTMLInputElement | null,\n shouldFocusOnPillWrapperOverride?: boolean\n) =>\n switchInputType(\n nextInputTypeMap[filterInputType],\n setInputType,\n filterInputType === 'value' ? handleChangeViewMode : undefined,\n element,\n shouldFocusOnPillWrapperOverride\n );\n\nexport const switchInputType = (\n filterInputType: AdHocInputType,\n setInputType: React.Dispatch<React.SetStateAction<AdHocInputType>>,\n handleChangeViewMode?: (event?: React.MouseEvent, shouldFocusOnFilterPill?: boolean) => void,\n element?: HTMLInputElement | null,\n shouldFocusOnPillWrapperOverride?: boolean\n) => {\n setInputType(filterInputType);\n\n handleChangeViewMode?.(undefined, shouldFocusOnPillWrapperOverride);\n\n setTimeout(() => element?.focus());\n};\n\nexport const generateFilterUpdatePayload = ({\n filterInputType,\n item,\n filter,\n setFilterMultiValues,\n onAddCustomValue,\n}: {\n filterInputType: AdHocInputType;\n item: SelectableValue<string>;\n filter: AdHocFilterWithLabels;\n setFilterMultiValues: (value: React.SetStateAction<Array<SelectableValue<string>>>) => void;\n onAddCustomValue?: OnAddCustomValueFn;\n}): Partial<AdHocFilterWithLabels> => {\n if (filterInputType === 'key') {\n return {\n key: item.value,\n keyLabel: item.label ? item.label : item.value,\n meta: item?.meta,\n };\n }\n if (filterInputType === 'value') {\n if (item.isCustom && onAddCustomValue) {\n return onAddCustomValue(item, filter);\n }\n return {\n value: item.value,\n valueLabels: [item.label ? item.label : item.value!],\n };\n }\n\n if (filterInputType === 'operator') {\n // handle values/valueLabels when switching from multi to single value operator\n if (isMultiValueOperator(filter.operator) && !isMultiValueOperator(item.value!)) {\n // reset local multi values state\n setFilterMultiValues([]);\n // update operator and reset values and valueLabels\n return {\n operator: item.value,\n valueLabels: [filter.valueLabels?.[0] || filter.values?.[0] || filter.value],\n values: undefined,\n };\n }\n\n // handle values/valueLabels when switching from single to multi value operator\n if (isMultiValueOperator(item.value!) && !isMultiValueOperator(filter.operator)) {\n const valueLabels = [filter.valueLabels?.[0] || filter.values?.[0] || filter.value];\n const values = [filter.value];\n\n // populate local multi values state\n if (values[0]) {\n setFilterMultiValues([\n {\n value: values[0],\n label: valueLabels?.[0] ?? values[0],\n },\n ]);\n }\n\n // update operator and default values and valueLabels\n return {\n operator: item.value,\n valueLabels: valueLabels,\n values: values,\n };\n }\n }\n\n // default operator update of same multi/single type\n return {\n [filterInputType]: item.value,\n };\n};\n\nconst INPUT_PLACEHOLDER = 'Filter by label values';\n\nexport const generatePlaceholder = (\n filter: AdHocFilterWithLabels,\n filterInputType: AdHocInputType,\n isMultiValueEdit: boolean,\n isAlwaysWip?: boolean\n) => {\n if (filterInputType === 'key') {\n return INPUT_PLACEHOLDER;\n }\n if (filterInputType === 'value') {\n if (isMultiValueEdit) {\n return 'Edit values';\n }\n return filter.valueLabels?.[0] || '';\n }\n\n return filter[filterInputType] && !isAlwaysWip ? `${filter[filterInputType]}` : INPUT_PLACEHOLDER;\n};\n\nexport const populateInputValueOnInputTypeSwitch = ({\n populateInputOnEdit,\n item,\n filterInputType,\n setInputValue,\n filter,\n}: {\n populateInputOnEdit: boolean | undefined;\n item: SelectableValue<string>;\n filterInputType: AdHocInputType;\n setInputValue: (value: React.SetStateAction<string>) => void;\n filter: AdHocFilterWithLabels | undefined;\n}) => {\n if (populateInputOnEdit && !isMultiValueOperator(item.value || '') && nextInputTypeMap[filterInputType] === 'value') {\n setInputValue(filter?.valueLabels?.[0] ?? filter?.value ?? '');\n } else {\n setInputValue('');\n }\n};\n"],"names":[],"mappings":"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"}
@@ -16,25 +16,6 @@ import { wrapInSafeSerializableSceneObject } from '../../utils/wrapInSafeSeriali
16
16
  import { isEqual } from 'lodash';
17
17
  import { getAdHocFiltersFromScopes } from './getAdHocFiltersFromScopes.js';
18
18
 
19
- var __defProp = Object.defineProperty;
20
- var __defProps = Object.defineProperties;
21
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
22
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
23
- var __hasOwnProp = Object.prototype.hasOwnProperty;
24
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
25
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
26
- var __spreadValues = (a, b) => {
27
- for (var prop in b || (b = {}))
28
- if (__hasOwnProp.call(b, prop))
29
- __defNormalProp(a, prop, b[prop]);
30
- if (__getOwnPropSymbols)
31
- for (var prop of __getOwnPropSymbols(b)) {
32
- if (__propIsEnum.call(b, prop))
33
- __defNormalProp(a, prop, b[prop]);
34
- }
35
- return a;
36
- };
37
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
38
19
  var FilterOrigin = /* @__PURE__ */ ((FilterOrigin2) => {
39
20
  FilterOrigin2["Scopes"] = "scopes";
40
21
  FilterOrigin2["Dashboards"] = "dashboards";
@@ -81,7 +62,7 @@ const OPERATORS = [
81
62
  class AdHocFiltersVariable extends SceneObjectBase {
82
63
  constructor(state) {
83
64
  var _a, _b, _c, _d, _e;
84
- super(__spreadValues({
65
+ super({
85
66
  type: "adhoc",
86
67
  name: (_a = state.name) != null ? _a : "Filters",
87
68
  filters: [],
@@ -90,8 +71,9 @@ class AdHocFiltersVariable extends SceneObjectBase {
90
71
  filterExpression: (_e = state.filterExpression) != null ? _e : renderExpression(state.expressionBuilder, [
91
72
  ...(_c = (_b = state.baseFilters) == null ? void 0 : _b.filter((filter) => filter.origin)) != null ? _c : [],
92
73
  ...(_d = state.filters) != null ? _d : []
93
- ])
94
- }, state));
74
+ ]),
75
+ ...state
76
+ });
95
77
  this._scopedVars = { __sceneObject: wrapInSafeSerializableSceneObject(this) };
96
78
  this._dataSourceSrv = getDataSourceSrv();
97
79
  this._urlSync = new AdHocFiltersVariableUrlSyncHandler(this);
@@ -119,10 +101,6 @@ class AdHocFiltersVariable extends SceneObjectBase {
119
101
  return;
120
102
  }
121
103
  const scopeFilters = getAdHocFiltersFromScopes(scopes);
122
- if (!scopeFilters.length) {
123
- this._overwriteScopes = areScopesLoading;
124
- return;
125
- }
126
104
  let finalFilters = scopeFilters;
127
105
  const scopeInjectedFilters = [];
128
106
  const remainingFilters = [];
@@ -133,21 +111,20 @@ class AdHocFiltersVariable extends SceneObjectBase {
133
111
  remainingFilters.push(filter);
134
112
  }
135
113
  });
136
- if (!this._overwriteScopes) {
137
- const editedScopeFilters = scopeInjectedFilters.filter((filter) => {
138
- var _a2;
139
- return (_a2 = filter.originalValue) == null ? void 0 : _a2.length;
140
- });
141
- const editedScopeFilterKeys = editedScopeFilters.map((filter) => filter.key);
142
- const scopeFilterKeys = scopeFilters.map((filter) => filter.key);
143
- finalFilters = [
144
- ...editedScopeFilters.filter((filter) => scopeFilterKeys.includes(filter.key)),
145
- ...scopeFilters.filter((filter) => !editedScopeFilterKeys.includes(filter.key))
146
- ];
147
- this._overwriteScopes = false;
114
+ if (!scopeFilters.length) {
115
+ return;
148
116
  }
149
- const newFilters = [...remainingFilters, ...finalFilters];
150
- this.setState({ baseFilters: newFilters });
117
+ const editedScopeFilters = scopeInjectedFilters.filter((filter) => {
118
+ var _a2;
119
+ return (_a2 = filter.originalValue) == null ? void 0 : _a2.length;
120
+ });
121
+ const editedScopeFilterKeys = editedScopeFilters.map((filter) => filter.key);
122
+ const scopeFilterKeys = scopeFilters.map((filter) => filter.key);
123
+ finalFilters = [
124
+ ...editedScopeFilters.filter((filter) => scopeFilterKeys.includes(filter.key)),
125
+ ...scopeFilters.filter((filter) => !editedScopeFilterKeys.includes(filter.key))
126
+ ];
127
+ this.setState({ baseFilters: [...remainingFilters, ...finalFilters] });
151
128
  };
152
129
  if (this.state.applyMode === "auto") {
153
130
  patchGetAdhocFilters(this);
@@ -171,6 +148,11 @@ class AdHocFiltersVariable extends SceneObjectBase {
171
148
  this.publishEvent(new SceneVariableValueChangedEvent(this), true);
172
149
  }
173
150
  }
151
+ /**
152
+ * Updates the variable's `filters` and `filterExpression` state.
153
+ * If `skipPublish` option is true, this will not emit the `SceneVariableValueChangedEvent`,
154
+ * allowing consumers to update the filters without triggering dependent data providers.
155
+ */
174
156
  updateFilters(filters, options) {
175
157
  var _a, _b;
176
158
  let filterExpressionChanged = false;
@@ -219,21 +201,21 @@ class AdHocFiltersVariable extends SceneObjectBase {
219
201
  update.originalValue = void 0;
220
202
  }
221
203
  const updatedBaseFilters = (_a = baseFilters == null ? void 0 : baseFilters.map((f) => {
222
- return f === filter ? __spreadValues(__spreadValues({}, f), update) : f;
204
+ return f === filter ? { ...f, ...update } : f;
223
205
  })) != null ? _a : [];
224
206
  this.setState({ baseFilters: updatedBaseFilters });
225
207
  return;
226
208
  }
227
209
  if (filter === _wip) {
228
210
  if ("value" in update && update["value"] !== "") {
229
- this.setState({ filters: [...filters, __spreadValues(__spreadValues({}, _wip), update)], _wip: void 0 });
211
+ this.setState({ filters: [...filters, { ..._wip, ...update }], _wip: void 0 });
230
212
  } else {
231
- this.setState({ _wip: __spreadValues(__spreadValues({}, filter), update) });
213
+ this.setState({ _wip: { ...filter, ...update } });
232
214
  }
233
215
  return;
234
216
  }
235
217
  const updatedFilters = this.state.filters.map((f) => {
236
- return f === filter ? __spreadValues(__spreadValues({}, f), update) : f;
218
+ return f === filter ? { ...f, ...update } : f;
237
219
  });
238
220
  this.setState({ filters: updatedFilters });
239
221
  }
@@ -262,9 +244,10 @@ class AdHocFiltersVariable extends SceneObjectBase {
262
244
  if (index === filterToForceIndex) {
263
245
  return [
264
246
  ...acc,
265
- __spreadProps(__spreadValues({}, f), {
247
+ {
248
+ ...f,
266
249
  forceEdit: true
267
- })
250
+ }
268
251
  ];
269
252
  }
270
253
  if (f === filter) {
@@ -283,9 +266,10 @@ class AdHocFiltersVariable extends SceneObjectBase {
283
266
  if (index === filterToForceIndex) {
284
267
  return [
285
268
  ...acc,
286
- __spreadProps(__spreadValues({}, f), {
269
+ {
270
+ ...f,
287
271
  forceEdit: true
288
- })
272
+ }
289
273
  ];
290
274
  }
291
275
  if (f === filter) {
@@ -296,6 +280,9 @@ class AdHocFiltersVariable extends SceneObjectBase {
296
280
  });
297
281
  }
298
282
  }
283
+ /**
284
+ * Get possible keys given current filters. Do not call from plugins directly
285
+ */
299
286
  async _getKeys(currentKey) {
300
287
  var _a, _b, _c, _d;
301
288
  const override = await ((_b = (_a = this.state).getTagKeysProvider) == null ? void 0 : _b.call(_a, this, currentKey));
@@ -312,12 +299,13 @@ class AdHocFiltersVariable extends SceneObjectBase {
312
299
  const otherFilters = this.state.filters.filter((f) => f.key !== currentKey).concat((_c = this.state.baseFilters) != null ? _c : []);
313
300
  const timeRange = sceneGraph.getTimeRange(this).state.value;
314
301
  const queries = this.state.useQueriesAsFilterForOptions ? getQueriesForVariables(this) : void 0;
315
- const response = await ds.getTagKeys(__spreadValues({
302
+ const response = await ds.getTagKeys({
316
303
  filters: otherFilters,
317
304
  queries,
318
305
  timeRange,
319
- scopes: (_d = this._scopesBridge) == null ? void 0 : _d.getValue()
320
- }, getEnrichedFiltersRequest(this)));
306
+ scopes: (_d = this._scopesBridge) == null ? void 0 : _d.getValue(),
307
+ ...getEnrichedFiltersRequest(this)
308
+ });
321
309
  if (responseHasError(response)) {
322
310
  this.setState({ error: response.error.message });
323
311
  }
@@ -331,6 +319,9 @@ class AdHocFiltersVariable extends SceneObjectBase {
331
319
  }
332
320
  return keys.map(toSelectableValue);
333
321
  }
322
+ /**
323
+ * Get possible key values for a specific key given current filters. Do not call from plugins directly
324
+ */
334
325
  async _getValuesFor(filter) {
335
326
  var _a, _b, _c, _d, _e;
336
327
  const override = await ((_b = (_a = this.state).getTagValuesProvider) == null ? void 0 : _b.call(_a, this, filter));
@@ -348,20 +339,23 @@ class AdHocFiltersVariable extends SceneObjectBase {
348
339
  let scopes = (_e = this._scopesBridge) == null ? void 0 : _e.getValue();
349
340
  if (filter.origin === "scopes" /* Scopes */) {
350
341
  scopes = scopes == null ? void 0 : scopes.map((scope) => {
351
- return __spreadProps(__spreadValues({}, scope), {
352
- spec: __spreadProps(__spreadValues({}, scope.spec), {
342
+ return {
343
+ ...scope,
344
+ spec: {
345
+ ...scope.spec,
353
346
  filters: scope.spec.filters.filter((f) => f.key !== filter.key)
354
- })
355
- });
347
+ }
348
+ };
356
349
  });
357
350
  }
358
- const response = await ds.getTagValues(__spreadValues({
351
+ const response = await ds.getTagValues({
359
352
  key: filter.key,
360
353
  filters: otherFilters,
361
354
  timeRange,
362
355
  queries,
363
- scopes
364
- }, getEnrichedFiltersRequest(this)));
356
+ scopes,
357
+ ...getEnrichedFiltersRequest(this)
358
+ });
365
359
  if (responseHasError(response)) {
366
360
  this.setState({ error: response.error.message });
367
361
  }
@@ -401,22 +395,9 @@ function AdHocFiltersVariableRenderer({ model }) {
401
395
  const { filters, readOnly, addFilterButtonText } = model.useState();
402
396
  const styles = useStyles2(getStyles);
403
397
  if (model.state.layout === "combobox") {
404
- return /* @__PURE__ */ React.createElement(AdHocFiltersComboboxRenderer, {
405
- model
406
- });
398
+ return /* @__PURE__ */ React.createElement(AdHocFiltersComboboxRenderer, { model });
407
399
  }
408
- return /* @__PURE__ */ React.createElement("div", {
409
- className: styles.wrapper
410
- }, filters.filter((filter) => !filter.hidden).map((filter, index) => /* @__PURE__ */ React.createElement(React.Fragment, {
411
- key: index
412
- }, /* @__PURE__ */ React.createElement(AdHocFilterRenderer, {
413
- filter,
414
- model
415
- }))), !readOnly && /* @__PURE__ */ React.createElement(AdHocFilterBuilder, {
416
- model,
417
- key: "'builder",
418
- addFilterButtonText
419
- }));
400
+ return /* @__PURE__ */ React.createElement("div", { className: styles.wrapper }, filters.filter((filter) => !filter.hidden).map((filter, index) => /* @__PURE__ */ React.createElement(React.Fragment, { key: index }, /* @__PURE__ */ React.createElement(AdHocFilterRenderer, { filter, model }))), !readOnly && /* @__PURE__ */ React.createElement(AdHocFilterBuilder, { model, key: "'builder", addFilterButtonText }));
420
401
  }
421
402
  const getStyles = (theme) => ({
422
403
  wrapper: css({
@@ -430,6 +411,8 @@ const getStyles = (theme) => ({
430
411
  function toSelectableValue(input) {
431
412
  const { text, value } = input;
432
413
  const result = {
414
+ // converting text to string due to some edge cases where it can be a number
415
+ // TODO: remove once https://github.com/grafana/grafana/issues/99021 is closed
433
416
  label: String(text),
434
417
  value: String(value != null ? value : text)
435
418
  };