@grafana/scenes 6.5.0 → 6.5.1--canary.1077.13964702348.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 (275) hide show
  1. package/dist/esm/behaviors/ActWhenVariableChanged.js.map +1 -1
  2. package/dist/esm/behaviors/CursorSync.js +3 -21
  3. package/dist/esm/behaviors/CursorSync.js.map +1 -1
  4. package/dist/esm/behaviors/LiveNowTimer.js +3 -2
  5. package/dist/esm/behaviors/LiveNowTimer.js.map +1 -1
  6. package/dist/esm/behaviors/SceneQueryController.js +7 -37
  7. package/dist/esm/behaviors/SceneQueryController.js.map +1 -1
  8. package/dist/esm/behaviors/SceneRenderProfiler.js +10 -17
  9. package/dist/esm/behaviors/SceneRenderProfiler.js.map +1 -1
  10. package/dist/esm/components/EmbeddedScene.js +1 -12
  11. package/dist/esm/components/EmbeddedScene.js.map +1 -1
  12. package/dist/esm/components/NestedScene.js +23 -30
  13. package/dist/esm/components/NestedScene.js.map +1 -1
  14. package/dist/esm/components/SceneApp/SceneApp.js +1 -11
  15. package/dist/esm/components/SceneApp/SceneApp.js.map +1 -1
  16. package/dist/esm/components/SceneApp/SceneAppPage.js +28 -47
  17. package/dist/esm/components/SceneApp/SceneAppPage.js.map +1 -1
  18. package/dist/esm/components/SceneApp/SceneAppPageView.js +14 -20
  19. package/dist/esm/components/SceneApp/SceneAppPageView.js.map +1 -1
  20. package/dist/esm/components/SceneApp/utils.js +2 -18
  21. package/dist/esm/components/SceneApp/utils.js.map +1 -1
  22. package/dist/esm/components/SceneByFrameRepeater.js +1 -3
  23. package/dist/esm/components/SceneByFrameRepeater.js.map +1 -1
  24. package/dist/esm/components/SceneByVariableRepeater.js +1 -3
  25. package/dist/esm/components/SceneByVariableRepeater.js.map +1 -1
  26. package/dist/esm/components/SceneCanvasText.js +1 -4
  27. package/dist/esm/components/SceneCanvasText.js.map +1 -1
  28. package/dist/esm/components/SceneControlsSpacer.js +1 -3
  29. package/dist/esm/components/SceneControlsSpacer.js.map +1 -1
  30. package/dist/esm/components/SceneDebugger/DebugDetails.js +11 -24
  31. package/dist/esm/components/SceneDebugger/DebugDetails.js.map +1 -1
  32. package/dist/esm/components/SceneDebugger/DebugTreeNode.js +2 -14
  33. package/dist/esm/components/SceneDebugger/DebugTreeNode.js.map +1 -1
  34. package/dist/esm/components/SceneDebugger/SceneDebugger.js +1 -29
  35. package/dist/esm/components/SceneDebugger/SceneDebugger.js.map +1 -1
  36. package/dist/esm/components/SceneReactObject.js +1 -17
  37. package/dist/esm/components/SceneReactObject.js.map +1 -1
  38. package/dist/esm/components/SceneRefreshPicker.js +23 -38
  39. package/dist/esm/components/SceneRefreshPicker.js.map +1 -1
  40. package/dist/esm/components/SceneTimePicker.js +27 -29
  41. package/dist/esm/components/SceneTimePicker.js.map +1 -1
  42. package/dist/esm/components/SceneTimeRangeCompare.js +36 -50
  43. package/dist/esm/components/SceneTimeRangeCompare.js.map +1 -1
  44. package/dist/esm/components/SceneToolbarButton.js +10 -14
  45. package/dist/esm/components/SceneToolbarButton.js.map +1 -1
  46. package/dist/esm/components/VizPanel/VizPanel.js +20 -29
  47. package/dist/esm/components/VizPanel/VizPanel.js.map +1 -1
  48. package/dist/esm/components/VizPanel/VizPanelExploreButton.js +17 -13
  49. package/dist/esm/components/VizPanel/VizPanelExploreButton.js.map +1 -1
  50. package/dist/esm/components/VizPanel/VizPanelMenu.js +18 -20
  51. package/dist/esm/components/VizPanel/VizPanelMenu.js.map +1 -1
  52. package/dist/esm/components/VizPanel/VizPanelRenderer.js +92 -122
  53. package/dist/esm/components/VizPanel/VizPanelRenderer.js.map +1 -1
  54. package/dist/esm/components/VizPanel/VizPanelSeriesLimit.js +7 -15
  55. package/dist/esm/components/VizPanel/VizPanelSeriesLimit.js.map +1 -1
  56. package/dist/esm/components/VizPanel/colorSeriesConfigFactory.js +15 -29
  57. package/dist/esm/components/VizPanel/colorSeriesConfigFactory.js.map +1 -1
  58. package/dist/esm/components/VizPanel/registerRuntimePanelPlugin.js +3 -21
  59. package/dist/esm/components/VizPanel/registerRuntimePanelPlugin.js.map +1 -1
  60. package/dist/esm/components/VizPanel/seriesVisibilityConfigFactory.js +22 -34
  61. package/dist/esm/components/VizPanel/seriesVisibilityConfigFactory.js.map +1 -1
  62. package/dist/esm/components/layout/CSSGrid/SceneCSSGridLayout.js +8 -40
  63. package/dist/esm/components/layout/CSSGrid/SceneCSSGridLayout.js.map +1 -1
  64. package/dist/esm/components/layout/LazyLoader.js +2 -35
  65. package/dist/esm/components/layout/LazyLoader.js.map +1 -1
  66. package/dist/esm/components/layout/SceneFlexLayout.js +3 -13
  67. package/dist/esm/components/layout/SceneFlexLayout.js.map +1 -1
  68. package/dist/esm/components/layout/grid/SceneGridItem.js +1 -3
  69. package/dist/esm/components/layout/grid/SceneGridItem.js.map +1 -1
  70. package/dist/esm/components/layout/grid/SceneGridLayout.js +26 -26
  71. package/dist/esm/components/layout/grid/SceneGridLayout.js.map +1 -1
  72. package/dist/esm/components/layout/grid/SceneGridLayoutRenderer.js +88 -104
  73. package/dist/esm/components/layout/grid/SceneGridLayoutRenderer.js.map +1 -1
  74. package/dist/esm/components/layout/grid/SceneGridRow.js +15 -48
  75. package/dist/esm/components/layout/grid/SceneGridRow.js.map +1 -1
  76. package/dist/esm/components/layout/grid/constants.js.map +1 -1
  77. package/dist/esm/components/layout/grid/types.js.map +1 -1
  78. package/dist/esm/components/layout/grid/utils.js +3 -21
  79. package/dist/esm/components/layout/grid/utils.js.map +1 -1
  80. package/dist/esm/components/layout/split/SplitLayout.js.map +1 -1
  81. package/dist/esm/components/layout/split/SplitLayoutRenderer.js +11 -14
  82. package/dist/esm/components/layout/split/SplitLayoutRenderer.js.map +1 -1
  83. package/dist/esm/components/layout/split/Splitter.js +60 -58
  84. package/dist/esm/components/layout/split/Splitter.js.map +1 -1
  85. package/dist/esm/core/PanelBuilders/FieldConfigBuilder.js +46 -23
  86. package/dist/esm/core/PanelBuilders/FieldConfigBuilder.js.map +1 -1
  87. package/dist/esm/core/PanelBuilders/FieldConfigBuilders.js +8 -8
  88. package/dist/esm/core/PanelBuilders/FieldConfigBuilders.js.map +1 -1
  89. package/dist/esm/core/PanelBuilders/FieldConfigOverridesBuilder.js.map +1 -1
  90. package/dist/esm/core/PanelBuilders/PanelOptionsBuilder.js +3 -0
  91. package/dist/esm/core/PanelBuilders/PanelOptionsBuilder.js.map +1 -1
  92. package/dist/esm/core/PanelBuilders/PanelOptionsBuilders.js +28 -28
  93. package/dist/esm/core/PanelBuilders/PanelOptionsBuilders.js.map +1 -1
  94. package/dist/esm/core/PanelBuilders/StandardFieldConfigBuilders.js.map +1 -1
  95. package/dist/esm/core/PanelBuilders/VizConfigBuilder.js +39 -0
  96. package/dist/esm/core/PanelBuilders/VizConfigBuilder.js.map +1 -1
  97. package/dist/esm/core/PanelBuilders/VizConfigBuilders.js +32 -32
  98. package/dist/esm/core/PanelBuilders/VizConfigBuilders.js.map +1 -1
  99. package/dist/esm/core/PanelBuilders/VizPanelBuilder.js +82 -21
  100. package/dist/esm/core/PanelBuilders/VizPanelBuilder.js.map +1 -1
  101. package/dist/esm/core/PanelBuilders/index.js +32 -32
  102. package/dist/esm/core/PanelBuilders/index.js.map +1 -1
  103. package/dist/esm/core/SceneComponentWrapper.js +4 -38
  104. package/dist/esm/core/SceneComponentWrapper.js.map +1 -1
  105. package/dist/esm/core/SceneDataNode.js +4 -19
  106. package/dist/esm/core/SceneDataNode.js.map +1 -1
  107. package/dist/esm/core/SceneObjectBase.js +55 -17
  108. package/dist/esm/core/SceneObjectBase.js.map +1 -1
  109. package/dist/esm/core/SceneObjectRef.js +7 -18
  110. package/dist/esm/core/SceneObjectRef.js.map +1 -1
  111. package/dist/esm/core/SceneScopesBridge.js +15 -0
  112. package/dist/esm/core/SceneScopesBridge.js.map +1 -1
  113. package/dist/esm/core/SceneTimeRange.js +9 -17
  114. package/dist/esm/core/SceneTimeRange.js.map +1 -1
  115. package/dist/esm/core/SceneTimeRangeTransformerBase.js.map +1 -1
  116. package/dist/esm/core/SceneTimeZoneOverride.js +7 -23
  117. package/dist/esm/core/SceneTimeZoneOverride.js.map +1 -1
  118. package/dist/esm/core/events.js.map +1 -1
  119. package/dist/esm/core/sceneGraph/getQueryController.js.map +1 -1
  120. package/dist/esm/core/sceneGraph/getTimeRange.js.map +1 -1
  121. package/dist/esm/core/sceneGraph/index.js +1 -1
  122. package/dist/esm/core/sceneGraph/index.js.map +1 -1
  123. package/dist/esm/core/sceneGraph/sceneGraph.js.map +1 -1
  124. package/dist/esm/core/sceneGraph/utils.js +1 -17
  125. package/dist/esm/core/sceneGraph/utils.js.map +1 -1
  126. package/dist/esm/core/types.js.map +1 -1
  127. package/dist/esm/index.js +6 -5
  128. package/dist/esm/index.js.map +1 -1
  129. package/dist/esm/querying/DataLayersMerger.js.map +1 -1
  130. package/dist/esm/querying/DataProviderProxy.js.map +1 -1
  131. package/dist/esm/querying/ExtraQueryProvider.js.map +1 -1
  132. package/dist/esm/querying/RuntimeDataSource.js.map +1 -1
  133. package/dist/esm/querying/SceneDataLayerSet.js +9 -24
  134. package/dist/esm/querying/SceneDataLayerSet.js.map +1 -1
  135. package/dist/esm/querying/SceneDataTransformer.js +11 -24
  136. package/dist/esm/querying/SceneDataTransformer.js.map +1 -1
  137. package/dist/esm/querying/SceneQueryRunner.js +44 -33
  138. package/dist/esm/querying/SceneQueryRunner.js.map +1 -1
  139. package/dist/esm/querying/extraQueryProcessingOperator.js +3 -21
  140. package/dist/esm/querying/extraQueryProcessingOperator.js.map +1 -1
  141. package/dist/esm/querying/getEnrichedDataRequest.js.map +1 -1
  142. package/dist/esm/querying/layers/SceneDataLayerBase.js +16 -19
  143. package/dist/esm/querying/layers/SceneDataLayerBase.js.map +1 -1
  144. package/dist/esm/querying/layers/SceneDataLayerControls.js +15 -21
  145. package/dist/esm/querying/layers/SceneDataLayerControls.js.map +1 -1
  146. package/dist/esm/querying/layers/annotations/AnnotationsDataLayer.js +12 -30
  147. package/dist/esm/querying/layers/annotations/AnnotationsDataLayer.js.map +1 -1
  148. package/dist/esm/querying/layers/annotations/filterAnnotations.js +6 -23
  149. package/dist/esm/querying/layers/annotations/filterAnnotations.js.map +1 -1
  150. package/dist/esm/querying/layers/annotations/standardAnnotationQuery.js +19 -29
  151. package/dist/esm/querying/layers/annotations/standardAnnotationQuery.js.map +1 -1
  152. package/dist/esm/querying/layers/annotations/standardAnnotationsSupport.js +14 -34
  153. package/dist/esm/querying/layers/annotations/standardAnnotationsSupport.js.map +1 -1
  154. package/dist/esm/querying/layers/annotations/utils.js +1 -17
  155. package/dist/esm/querying/layers/annotations/utils.js.map +1 -1
  156. package/dist/esm/querying/registerQueryWithController.js.map +1 -1
  157. package/dist/esm/services/SceneObjectUrlSyncConfig.js.map +1 -1
  158. package/dist/esm/services/UniqueUrlKeyMapper.js.map +1 -1
  159. package/dist/esm/services/UrlSyncContextProvider.js.map +1 -1
  160. package/dist/esm/services/UrlSyncManager.js +11 -19
  161. package/dist/esm/services/UrlSyncManager.js.map +1 -1
  162. package/dist/esm/services/useUrlSync.js.map +1 -1
  163. package/dist/esm/services/utils.js.map +1 -1
  164. package/dist/esm/utils/ControlsLabel.js +23 -47
  165. package/dist/esm/utils/ControlsLabel.js.map +1 -1
  166. package/dist/esm/utils/LoadingIndicator.js +11 -10
  167. package/dist/esm/utils/LoadingIndicator.js.map +1 -1
  168. package/dist/esm/utils/SafeSerializableSceneObject.js +7 -18
  169. package/dist/esm/utils/SafeSerializableSceneObject.js.map +1 -1
  170. package/dist/esm/utils/compatibility/setWindowGrafanaSceneContext.js.map +1 -1
  171. package/dist/esm/utils/date.js.map +1 -1
  172. package/dist/esm/utils/evaluateTimeRange.js.map +1 -1
  173. package/dist/esm/utils/explore.js.map +1 -1
  174. package/dist/esm/utils/getCompareSeriesRefId.js.map +1 -1
  175. package/dist/esm/utils/getDataSource.js.map +1 -1
  176. package/dist/esm/utils/getMessageFromError.js.map +1 -1
  177. package/dist/esm/utils/metricTree.js.map +1 -1
  178. package/dist/esm/utils/parseUrlParam.js.map +1 -1
  179. package/dist/esm/utils/utils.js.map +1 -1
  180. package/dist/esm/utils/wrapInSafeSerializableSceneObject.js.map +1 -1
  181. package/dist/esm/utils/writeSceneLog.js.map +1 -1
  182. package/dist/esm/variables/VariableDependencyConfig.js +9 -0
  183. package/dist/esm/variables/VariableDependencyConfig.js.map +1 -1
  184. package/dist/esm/variables/VariableValueRecorder.js.map +1 -1
  185. package/dist/esm/variables/adhoc/AdHocFilterBuilder.js +13 -12
  186. package/dist/esm/variables/adhoc/AdHocFilterBuilder.js.map +1 -1
  187. package/dist/esm/variables/adhoc/AdHocFilterRenderer.js +129 -142
  188. package/dist/esm/variables/adhoc/AdHocFilterRenderer.js.map +1 -1
  189. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js +84 -91
  190. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js.map +1 -1
  191. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js +1 -6
  192. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js.map +1 -1
  193. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +195 -194
  194. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js.map +1 -1
  195. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +34 -28
  196. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js.map +1 -1
  197. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js +28 -65
  198. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js.map +1 -1
  199. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js +29 -43
  200. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js.map +1 -1
  201. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js +2 -1
  202. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js.map +1 -1
  203. package/dist/esm/variables/adhoc/AdHocFiltersCombobox/utils.js.map +1 -1
  204. package/dist/esm/variables/adhoc/AdHocFiltersVariable.js +43 -55
  205. package/dist/esm/variables/adhoc/AdHocFiltersVariable.js.map +1 -1
  206. package/dist/esm/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js.map +1 -1
  207. package/dist/esm/variables/adhoc/getAdHocFiltersFromScopes.js +1 -0
  208. package/dist/esm/variables/adhoc/getAdHocFiltersFromScopes.js.map +1 -1
  209. package/dist/esm/variables/adhoc/getAdhocOptionSearcher.js.map +1 -1
  210. package/dist/esm/variables/adhoc/patchGetAdhocFilters.js.map +1 -1
  211. package/dist/esm/variables/components/VariableValueControl.js +9 -6
  212. package/dist/esm/variables/components/VariableValueControl.js.map +1 -1
  213. package/dist/esm/variables/components/VariableValueInput.js +13 -10
  214. package/dist/esm/variables/components/VariableValueInput.js.map +1 -1
  215. package/dist/esm/variables/components/VariableValueSelect.js +90 -115
  216. package/dist/esm/variables/components/VariableValueSelect.js.map +1 -1
  217. package/dist/esm/variables/components/VariableValueSelectors.js +20 -37
  218. package/dist/esm/variables/components/VariableValueSelectors.js.map +1 -1
  219. package/dist/esm/variables/components/getOptionSearcher.js +1 -1
  220. package/dist/esm/variables/components/getOptionSearcher.js.map +1 -1
  221. package/dist/esm/variables/constants.js.map +1 -1
  222. package/dist/esm/variables/filter.js +6 -1
  223. package/dist/esm/variables/filter.js.map +1 -1
  224. package/dist/esm/variables/getEnrichedFiltersRequest.js.map +1 -1
  225. package/dist/esm/variables/groupby/GroupByVariable.js +106 -112
  226. package/dist/esm/variables/groupby/GroupByVariable.js.map +1 -1
  227. package/dist/esm/variables/groupby/GroupByVariableUrlSyncHandler.js.map +1 -1
  228. package/dist/esm/variables/groupby/findActiveGroupByVariablesByUid.js.map +1 -1
  229. package/dist/esm/variables/interpolation/ScopedVarsVariable.js.map +1 -1
  230. package/dist/esm/variables/interpolation/defaults.js.map +1 -1
  231. package/dist/esm/variables/interpolation/fieldAccessorCache.js.map +1 -1
  232. package/dist/esm/variables/interpolation/formatRegistry.js.map +1 -1
  233. package/dist/esm/variables/interpolation/sceneInterpolator.js.map +1 -1
  234. package/dist/esm/variables/lookupVariable.js.map +1 -1
  235. package/dist/esm/variables/macros/AllVariablesMacro.js.map +1 -1
  236. package/dist/esm/variables/macros/contextMacros.js.map +1 -1
  237. package/dist/esm/variables/macros/dataMacros.js.map +1 -1
  238. package/dist/esm/variables/macros/index.js.map +1 -1
  239. package/dist/esm/variables/macros/templateProxies.js +4 -21
  240. package/dist/esm/variables/macros/templateProxies.js.map +1 -1
  241. package/dist/esm/variables/macros/timeMacros.js.map +1 -1
  242. package/dist/esm/variables/macros/types.js.map +1 -1
  243. package/dist/esm/variables/macros/urlMacros.js.map +1 -1
  244. package/dist/esm/variables/sets/SceneVariableSet.js +44 -0
  245. package/dist/esm/variables/sets/SceneVariableSet.js.map +1 -1
  246. package/dist/esm/variables/types.js.map +1 -1
  247. package/dist/esm/variables/utils.js.map +1 -1
  248. package/dist/esm/variables/variants/ConstantVariable.js +4 -23
  249. package/dist/esm/variables/variants/ConstantVariable.js.map +1 -1
  250. package/dist/esm/variables/variants/CustomVariable.js +4 -19
  251. package/dist/esm/variables/variants/CustomVariable.js.map +1 -1
  252. package/dist/esm/variables/variants/DataSourceVariable.js +4 -19
  253. package/dist/esm/variables/variants/DataSourceVariable.js.map +1 -1
  254. package/dist/esm/variables/variants/IntervalVariable.js +17 -29
  255. package/dist/esm/variables/variants/IntervalVariable.js.map +1 -1
  256. package/dist/esm/variables/variants/LocalValueVariable.js +8 -23
  257. package/dist/esm/variables/variants/LocalValueVariable.js.map +1 -1
  258. package/dist/esm/variables/variants/MultiValueVariable.js +16 -0
  259. package/dist/esm/variables/variants/MultiValueVariable.js.map +1 -1
  260. package/dist/esm/variables/variants/TestVariable.js +5 -19
  261. package/dist/esm/variables/variants/TestVariable.js.map +1 -1
  262. package/dist/esm/variables/variants/TextBoxVariable.js +5 -22
  263. package/dist/esm/variables/variants/TextBoxVariable.js.map +1 -1
  264. package/dist/esm/variables/variants/guards.js.map +1 -1
  265. package/dist/esm/variables/variants/query/QueryVariable.js +8 -20
  266. package/dist/esm/variables/variants/query/QueryVariable.js.map +1 -1
  267. package/dist/esm/variables/variants/query/createQueryVariableRunner.js +6 -23
  268. package/dist/esm/variables/variants/query/createQueryVariableRunner.js.map +1 -1
  269. package/dist/esm/variables/variants/query/guards.js.map +1 -1
  270. package/dist/esm/variables/variants/query/toMetricFindValues.js.map +1 -1
  271. package/dist/esm/variables/variants/query/utils.js.map +1 -1
  272. package/dist/index.d.ts +36 -6
  273. package/dist/index.js +2035 -2791
  274. package/dist/index.js.map +1 -1
  275. package/package.json +9 -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":";;AAIA,MAAM,sCAAyC,GAAA,CAAA;AAC/C,MAAM,kDAAqD,GAAA,CAAA;AAC3D,MAAM,oBAAuB,GAAA,CAAA;AACtB,MAAM,qBAAwB,GAAA;AAC9B,MAAM,wBAA2B,GAAA;AACjC,MAAM,yCAA4C,GAAA;AAClD,MAAM,0BAA6B,GAAA;AAEnC,MAAM,sBAAsB,CAAC,OAAA,KAClC,OAAQ,CAAA,OAAA,CAAiC,CAAC,MAAY,KAAA,MAAA,CAAO,OAAU,GAAA,CAAC,QAAQ,GAAG,MAAA,CAAO,OAAO,CAAI,GAAA,CAAC,MAAM,CAAE;AAEzG,MAAM,0BAA6B,GAAA,CACxC,OACA,EAAA,OAAA,EACA,kBACG,KAAA;AAnBL,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAoBE,EAAA,IAAI,cAAiB,GAAA,GAAA;AACrB,EAAA,MAAM,aAAa,EAAC;AACpB,EAAA,MAAM,kBAAkB,EAAC;AAEzB,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,OAAA,CAAQ,QAAQ,CAAK,EAAA,EAAA;AAGvC,IAAA,UAAA,CAAW,KAAK,IAAI,CAAA;AAIpB,IAAA,IAAA,CAAI,EAAQ,GAAA,OAAA,CAAA,CAAC,CAAT,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAY,OAAS,EAAA;AACvB,MAAA,eAAA,CAAgB,KAAK,CAAC,CAAA;AAAA;AAExB,IAAI,IAAA,KAAA,GAAA,CAAQ,EAAQ,GAAA,CAAA,EAAA,GAAA,OAAA,CAAA,CAAC,CAAE,CAAA,KAAA,KAAX,YAAoB,OAAQ,CAAA,CAAC,CAAE,CAAA,KAAA,KAA/B,IAAwC,GAAA,EAAA,GAAA,EAAA;AACpD,IAAA,IAAI,eAAkB,GAAA,sCAAA;AACtB,IACE,IAAA,KAAA,CAAM,MAAS,GAAA,sCAAA,GAAA,CAAA,CAAA,CACd,EAAQ,GAAA,OAAA,CAAA,CAAC,EAAE,WAAX,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAwB,MAAU,KAAA,CAAA,IAAK,kDACxC,EAAA;AACA,MAAQ,KAAA,GAAA,OAAA,CAAQ,CAAC,CAAE,CAAA,WAAA;AACnB,MAAkB,eAAA,GAAA,kDAAA;AAAA;AAIpB,IAAM,MAAA,aAAA,GAAA,CACH,OAAQ,CAAA,CAAC,CAAE,CAAA,QAAA,GAAW,KAAM,CAAA,MAAA,GAAS,EAAK,GAAA,KAAA,CAAM,MAAU,IAAA,eAAA,GAAkB,oBAAuB,GAAA,CAAA;AACtG,IAAA,IAAI,gBAAgB,cAAgB,EAAA;AAClC,MAAiB,cAAA,GAAA,aAAA;AAAA;AACnB;AAGF,EAAQ,OAAA,CAAA,OAAA,GAAU,CAAC,GAAG,UAAU,CAAA;AAChC,EAAmB,kBAAA,CAAA,OAAA,GAAU,CAAC,GAAG,eAAe,CAAA;AAChD,EAAO,OAAA,cAAA;AACT;AAEA,MAAM,gBAAmB,GAAA;AAAA,EACvB,GAAK,EAAA,UAAA;AAAA,EACL,QAAU,EAAA,OAAA;AAAA,EACV,KAAO,EAAA;AACT,CAAA;AAEO,MAAM,wBAAwB,CACnC,eAAA,EACA,YACA,EAAA,oBAAA,EACA,SACA,gCAEA,KAAA,eAAA;AAAA,EACE,iBAAiB,eAAe,CAAA;AAAA,EAChC,YAAA;AAAA,EACA,eAAA,KAAoB,UAAU,oBAAuB,GAAA,MAAA;AAAA,EACrD,OAAA;AAAA,EACA;AACF;AAEK,MAAM,kBAAkB,CAC7B,eAAA,EACA,YACA,EAAA,oBAAA,EACA,SACA,gCACG,KAAA;AACH,EAAA,YAAA,CAAa,eAAe,CAAA;AAE5B,EAAA,oBAAA,IAAA,IAAA,GAAA,MAAA,GAAA,oBAAA,CAAuB,MAAW,EAAA,gCAAA,CAAA;AAElC,EAAW,UAAA,CAAA,MAAM,mCAAS,KAAO,EAAA,CAAA;AACnC;AAEO,MAAM,8BAA8B,CAAC;AAAA,EAC1C,eAAA;AAAA,EACA,IAAA;AAAA,EACA,MAAA;AAAA,EACA,oBAAA;AAAA,EACA;AACF,CAMsC,KAAA;AAxGtC,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAyGE,EAAA,IAAI,oBAAoB,KAAO,EAAA;AAC7B,IAAO,OAAA;AAAA,MACL,KAAK,IAAK,CAAA,KAAA;AAAA,MACV,QAAU,EAAA,IAAA,CAAK,KAAQ,GAAA,IAAA,CAAK,QAAQ,IAAK,CAAA,KAAA;AAAA,MACzC,MAAM,IAAM,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAA;AAAA,KACd;AAAA;AAEF,EAAA,IAAI,oBAAoB,OAAS,EAAA;AAC/B,IAAI,IAAA,IAAA,CAAK,YAAY,gBAAkB,EAAA;AACrC,MAAO,OAAA,gBAAA,CAAiB,MAAM,MAAM,CAAA;AAAA;AAEtC,IAAO,OAAA;AAAA,MACL,OAAO,IAAK,CAAA,KAAA;AAAA,MACZ,aAAa,CAAC,IAAA,CAAK,QAAQ,IAAK,CAAA,KAAA,GAAQ,KAAK,KAAM;AAAA,KACrD;AAAA;AAGF,EAAA,IAAI,oBAAoB,UAAY,EAAA;AAElC,IAAI,IAAA,oBAAA,CAAqB,OAAO,QAAQ,CAAA,IAAK,CAAC,oBAAqB,CAAA,IAAA,CAAK,KAAM,CAAG,EAAA;AAE/E,MAAA,oBAAA,CAAqB,EAAE,CAAA;AAEvB,MAAO,OAAA;AAAA,QACL,UAAU,IAAK,CAAA,KAAA;AAAA,QACf,WAAA,EAAa,CAAC,CAAA,CAAA,EAAA,GAAA,MAAA,CAAO,WAAP,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAqB,CAAM,CAAA,MAAA,CAAA,EAAA,GAAA,MAAA,CAAO,MAAP,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAgB,CAAM,CAAA,CAAA,IAAA,MAAA,CAAO,KAAK,CAAA;AAAA,QAC3E,MAAQ,EAAA;AAAA,OACV;AAAA;AAIF,IAAI,IAAA,oBAAA,CAAqB,KAAK,KAAM,CAAA,IAAK,CAAC,oBAAqB,CAAA,MAAA,CAAO,QAAQ,CAAG,EAAA;AAC/E,MAAM,MAAA,WAAA,GAAc,CAAC,CAAA,CAAA,EAAA,GAAA,MAAA,CAAO,WAAP,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAqB,CAAM,CAAA,MAAA,CAAA,EAAA,GAAA,MAAA,CAAO,MAAP,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAgB,CAAM,CAAA,CAAA,IAAA,MAAA,CAAO,KAAK,CAAA;AAClF,MAAM,MAAA,MAAA,GAAS,CAAC,MAAA,CAAO,KAAK,CAAA;AAG5B,MAAI,IAAA,MAAA,CAAO,CAAC,CAAG,EAAA;AACb,QAAqB,oBAAA,CAAA;AAAA,UACnB;AAAA,YACE,KAAA,EAAO,OAAO,CAAC,CAAA;AAAA,YACf,KAAO,EAAA,CAAA,EAAA,GAAA,WAAA,IAAA,IAAA,GAAA,MAAA,GAAA,WAAA,CAAc,CAAd,CAAA,KAAA,IAAA,GAAA,EAAA,GAAoB,OAAO,CAAC;AAAA;AACrC,SACD,CAAA;AAAA;AAIH,MAAO,OAAA;AAAA,QACL,UAAU,IAAK,CAAA,KAAA;AAAA,QACf,WAAA;AAAA,QACA;AAAA,OACF;AAAA;AACF;AAIF,EAAO,OAAA;AAAA,IACL,CAAC,eAAe,GAAG,IAAK,CAAA;AAAA,GAC1B;AACF;AAEA,MAAM,iBAAoB,GAAA,wBAAA;AAEnB,MAAM,mBAAsB,GAAA,CACjC,MACA,EAAA,eAAA,EACA,kBACA,WACG,KAAA;AA5KL,EAAA,IAAA,EAAA;AA6KE,EAAA,IAAI,oBAAoB,KAAO,EAAA;AAC7B,IAAO,OAAA,iBAAA;AAAA;AAET,EAAA,IAAI,oBAAoB,OAAS,EAAA;AAC/B,IAAA,IAAI,gBAAkB,EAAA;AACpB,MAAO,OAAA,aAAA;AAAA;AAET,IAAO,OAAA,CAAA,CAAA,EAAA,GAAA,MAAA,CAAO,WAAP,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAqB,CAAM,CAAA,KAAA,EAAA;AAAA;AAGpC,EAAO,OAAA,MAAA,CAAO,eAAe,CAAK,IAAA,CAAC,cAAc,CAAG,EAAA,MAAA,CAAO,eAAe,CAAC,CAAK,CAAA,GAAA,iBAAA;AAClF;AAEO,MAAM,sCAAsC,CAAC;AAAA,EAClD,mBAAA;AAAA,EACA,IAAA;AAAA,EACA,eAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAMM,KAAA;AAtMN,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAuME,EAAI,IAAA,mBAAA,IAAuB,CAAC,oBAAA,CAAqB,IAAK,CAAA,KAAA,IAAS,EAAE,CAAK,IAAA,gBAAA,CAAiB,eAAe,CAAA,KAAM,OAAS,EAAA;AACnH,IAAc,aAAA,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,gBAAR,IAAsB,GAAA,MAAA,GAAA,EAAA,CAAA,CAAA,CAAA,KAAtB,YAA4B,MAAQ,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAA,KAAA,KAApC,YAA6C,EAAE,CAAA;AAAA,GACxD,MAAA;AACL,IAAA,aAAA,CAAc,EAAE,CAAA;AAAA;AAEpB;;;;"}
@@ -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);
@@ -165,6 +147,11 @@ class AdHocFiltersVariable extends SceneObjectBase {
165
147
  this.publishEvent(new SceneVariableValueChangedEvent(this), true);
166
148
  }
167
149
  }
150
+ /**
151
+ * Updates the variable's `filters` and `filterExpression` state.
152
+ * If `skipPublish` option is true, this will not emit the `SceneVariableValueChangedEvent`,
153
+ * allowing consumers to update the filters without triggering dependent data providers.
154
+ */
168
155
  updateFilters(filters, options) {
169
156
  var _a, _b;
170
157
  let filterExpressionChanged = false;
@@ -213,21 +200,21 @@ class AdHocFiltersVariable extends SceneObjectBase {
213
200
  update.originalValue = void 0;
214
201
  }
215
202
  const updatedBaseFilters = (_a = baseFilters == null ? void 0 : baseFilters.map((f) => {
216
- return f === filter ? __spreadValues(__spreadValues({}, f), update) : f;
203
+ return f === filter ? { ...f, ...update } : f;
217
204
  })) != null ? _a : [];
218
205
  this.setState({ baseFilters: updatedBaseFilters });
219
206
  return;
220
207
  }
221
208
  if (filter === _wip) {
222
209
  if ("value" in update && update["value"] !== "") {
223
- this.setState({ filters: [...filters, __spreadValues(__spreadValues({}, _wip), update)], _wip: void 0 });
210
+ this.setState({ filters: [...filters, { ..._wip, ...update }], _wip: void 0 });
224
211
  } else {
225
- this.setState({ _wip: __spreadValues(__spreadValues({}, filter), update) });
212
+ this.setState({ _wip: { ...filter, ...update } });
226
213
  }
227
214
  return;
228
215
  }
229
216
  const updatedFilters = this.state.filters.map((f) => {
230
- return f === filter ? __spreadValues(__spreadValues({}, f), update) : f;
217
+ return f === filter ? { ...f, ...update } : f;
231
218
  });
232
219
  this.setState({ filters: updatedFilters });
233
220
  }
@@ -256,9 +243,10 @@ class AdHocFiltersVariable extends SceneObjectBase {
256
243
  if (index === filterToForceIndex) {
257
244
  return [
258
245
  ...acc,
259
- __spreadProps(__spreadValues({}, f), {
246
+ {
247
+ ...f,
260
248
  forceEdit: true
261
- })
249
+ }
262
250
  ];
263
251
  }
264
252
  if (f === filter) {
@@ -277,9 +265,10 @@ class AdHocFiltersVariable extends SceneObjectBase {
277
265
  if (index === filterToForceIndex) {
278
266
  return [
279
267
  ...acc,
280
- __spreadProps(__spreadValues({}, f), {
268
+ {
269
+ ...f,
281
270
  forceEdit: true
282
- })
271
+ }
283
272
  ];
284
273
  }
285
274
  if (f === filter) {
@@ -290,6 +279,9 @@ class AdHocFiltersVariable extends SceneObjectBase {
290
279
  });
291
280
  }
292
281
  }
282
+ /**
283
+ * Get possible keys given current filters. Do not call from plugins directly
284
+ */
293
285
  async _getKeys(currentKey) {
294
286
  var _a, _b, _c, _d;
295
287
  const override = await ((_b = (_a = this.state).getTagKeysProvider) == null ? void 0 : _b.call(_a, this, currentKey));
@@ -306,12 +298,13 @@ class AdHocFiltersVariable extends SceneObjectBase {
306
298
  const otherFilters = this.state.filters.filter((f) => f.key !== currentKey).concat((_c = this.state.baseFilters) != null ? _c : []);
307
299
  const timeRange = sceneGraph.getTimeRange(this).state.value;
308
300
  const queries = this.state.useQueriesAsFilterForOptions ? getQueriesForVariables(this) : void 0;
309
- const response = await ds.getTagKeys(__spreadValues({
301
+ const response = await ds.getTagKeys({
310
302
  filters: otherFilters,
311
303
  queries,
312
304
  timeRange,
313
- scopes: (_d = this._scopesBridge) == null ? void 0 : _d.getValue()
314
- }, getEnrichedFiltersRequest(this)));
305
+ scopes: (_d = this._scopesBridge) == null ? void 0 : _d.getValue(),
306
+ ...getEnrichedFiltersRequest(this)
307
+ });
315
308
  if (responseHasError(response)) {
316
309
  this.setState({ error: response.error.message });
317
310
  }
@@ -325,6 +318,9 @@ class AdHocFiltersVariable extends SceneObjectBase {
325
318
  }
326
319
  return keys.map(toSelectableValue);
327
320
  }
321
+ /**
322
+ * Get possible key values for a specific key given current filters. Do not call from plugins directly
323
+ */
328
324
  async _getValuesFor(filter) {
329
325
  var _a, _b, _c, _d, _e;
330
326
  const override = await ((_b = (_a = this.state).getTagValuesProvider) == null ? void 0 : _b.call(_a, this, filter));
@@ -342,20 +338,23 @@ class AdHocFiltersVariable extends SceneObjectBase {
342
338
  let scopes = (_e = this._scopesBridge) == null ? void 0 : _e.getValue();
343
339
  if (filter.origin === "scopes" /* Scopes */) {
344
340
  scopes = scopes == null ? void 0 : scopes.map((scope) => {
345
- return __spreadProps(__spreadValues({}, scope), {
346
- spec: __spreadProps(__spreadValues({}, scope.spec), {
341
+ return {
342
+ ...scope,
343
+ spec: {
344
+ ...scope.spec,
347
345
  filters: scope.spec.filters.filter((f) => f.key !== filter.key)
348
- })
349
- });
346
+ }
347
+ };
350
348
  });
351
349
  }
352
- const response = await ds.getTagValues(__spreadValues({
350
+ const response = await ds.getTagValues({
353
351
  key: filter.key,
354
352
  filters: otherFilters,
355
353
  timeRange,
356
354
  queries,
357
- scopes
358
- }, getEnrichedFiltersRequest(this)));
355
+ scopes,
356
+ ...getEnrichedFiltersRequest(this)
357
+ });
359
358
  if (responseHasError(response)) {
360
359
  this.setState({ error: response.error.message });
361
360
  }
@@ -395,22 +394,9 @@ function AdHocFiltersVariableRenderer({ model }) {
395
394
  const { filters, readOnly, addFilterButtonText } = model.useState();
396
395
  const styles = useStyles2(getStyles);
397
396
  if (model.state.layout === "combobox") {
398
- return /* @__PURE__ */ React.createElement(AdHocFiltersComboboxRenderer, {
399
- model
400
- });
397
+ return /* @__PURE__ */ React.createElement(AdHocFiltersComboboxRenderer, { model });
401
398
  }
402
- return /* @__PURE__ */ React.createElement("div", {
403
- className: styles.wrapper
404
- }, filters.filter((filter) => !filter.hidden).map((filter, index) => /* @__PURE__ */ React.createElement(React.Fragment, {
405
- key: index
406
- }, /* @__PURE__ */ React.createElement(AdHocFilterRenderer, {
407
- filter,
408
- model
409
- }))), !readOnly && /* @__PURE__ */ React.createElement(AdHocFilterBuilder, {
410
- model,
411
- key: "'builder",
412
- addFilterButtonText
413
- }));
399
+ 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 }));
414
400
  }
415
401
  const getStyles = (theme) => ({
416
402
  wrapper: css({
@@ -424,6 +410,8 @@ const getStyles = (theme) => ({
424
410
  function toSelectableValue(input) {
425
411
  const { text, value } = input;
426
412
  const result = {
413
+ // converting text to string due to some edge cases where it can be a number
414
+ // TODO: remove once https://github.com/grafana/grafana/issues/99021 is closed
427
415
  label: String(text),
428
416
  value: String(value != null ? value : text)
429
417
  };