@grafana/scenes 6.7.0 → 6.8.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 (331) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/esm/components/layout/CSSGrid/SceneCSSGridItem.js +33 -0
  3. package/dist/esm/dist/esm/behaviors/CursorSync.js +76 -0
  4. package/dist/esm/dist/esm/behaviors/LiveNowTimer.js +44 -0
  5. package/dist/esm/dist/esm/behaviors/SceneQueryController.js +14 -0
  6. package/dist/esm/dist/esm/components/EmbeddedScene.js +59 -0
  7. package/dist/esm/dist/esm/components/NestedScene.js +95 -0
  8. package/dist/esm/dist/esm/components/SceneApp/SceneApp.js +27 -0
  9. package/dist/esm/dist/esm/components/SceneApp/SceneAppPage.js +176 -0
  10. package/dist/esm/dist/esm/components/SceneApp/SceneAppPageView.js +104 -0
  11. package/dist/esm/dist/esm/components/SceneApp/utils.js +42 -0
  12. package/dist/esm/dist/esm/components/SceneByFrameRepeater.js +41 -0
  13. package/dist/esm/dist/esm/components/SceneByVariableRepeater.js +55 -0
  14. package/dist/esm/dist/esm/components/SceneCanvasText.js +32 -0
  15. package/dist/esm/dist/esm/components/SceneControlsSpacer.js +17 -0
  16. package/dist/esm/dist/esm/components/SceneDebugger/DebugDetails.js +82 -0
  17. package/dist/esm/dist/esm/components/SceneDebugger/DebugTreeNode.js +72 -0
  18. package/dist/esm/dist/esm/components/SceneDebugger/SceneDebugger.js +77 -0
  19. package/dist/esm/dist/esm/components/SceneReactObject.js +34 -0
  20. package/dist/esm/dist/esm/components/SceneRefreshPicker.js +205 -0
  21. package/dist/esm/dist/esm/components/SceneTimePicker.js +139 -0
  22. package/dist/esm/dist/esm/components/SceneTimeRangeCompare.js +240 -0
  23. package/dist/esm/dist/esm/components/SceneToolbarButton.js +33 -0
  24. package/dist/esm/dist/esm/components/VizPanel/VizPanel.js +406 -0
  25. package/dist/esm/dist/esm/components/VizPanel/VizPanelExploreButton.js +44 -0
  26. package/dist/esm/dist/esm/components/VizPanel/VizPanelMenu.js +59 -0
  27. package/dist/esm/dist/esm/components/VizPanel/VizPanelRenderer.js +285 -0
  28. package/dist/esm/dist/esm/components/VizPanel/VizPanelSeriesLimit.js +45 -0
  29. package/dist/esm/dist/esm/components/VizPanel/colorSeriesConfigFactory.js +72 -0
  30. package/dist/esm/dist/esm/components/VizPanel/registerRuntimePanelPlugin.js +11 -0
  31. package/dist/esm/dist/esm/components/VizPanel/seriesVisibilityConfigFactory.js +164 -0
  32. package/dist/esm/dist/esm/components/layout/CSSGrid/SceneCSSGridLayout.js +124 -0
  33. package/dist/esm/dist/esm/components/layout/LazyLoader.js +103 -0
  34. package/dist/esm/dist/esm/components/layout/SceneFlexLayout.js +135 -0
  35. package/dist/esm/dist/esm/components/layout/grid/SceneGridItem.js +30 -0
  36. package/dist/esm/dist/esm/components/layout/grid/SceneGridLayout.js +283 -0
  37. package/dist/esm/dist/esm/components/layout/grid/SceneGridLayoutRenderer.js +178 -0
  38. package/dist/esm/dist/esm/components/layout/grid/SceneGridRow.js +190 -0
  39. package/dist/esm/dist/esm/components/layout/grid/constants.js +7 -0
  40. package/dist/esm/dist/esm/components/layout/grid/utils.js +36 -0
  41. package/dist/esm/dist/esm/components/layout/split/SplitLayout.js +17 -0
  42. package/dist/esm/dist/esm/components/layout/split/SplitLayoutRenderer.js +29 -0
  43. package/dist/esm/dist/esm/components/layout/split/Splitter.js +386 -0
  44. package/dist/esm/dist/esm/core/SceneComponentWrapper.js +57 -0
  45. package/dist/esm/dist/esm/core/SceneDataNode.js +43 -0
  46. package/dist/esm/dist/esm/core/SceneObjectBase.js +286 -0
  47. package/dist/esm/dist/esm/core/SceneObjectRef.js +32 -0
  48. package/dist/esm/dist/esm/core/SceneTimeRange.js +231 -0
  49. package/dist/esm/dist/esm/core/events.js +11 -0
  50. package/dist/esm/dist/esm/core/sceneGraph/getTimeRange.js +10 -0
  51. package/dist/esm/dist/esm/core/sceneGraph/index.js +25 -0
  52. package/dist/esm/dist/esm/core/sceneGraph/sceneGraph.js +178 -0
  53. package/dist/esm/dist/esm/core/sceneGraph/utils.js +64 -0
  54. package/dist/esm/dist/esm/core/types.js +15 -0
  55. package/dist/esm/dist/esm/querying/DataLayersMerger.js +46 -0
  56. package/dist/esm/dist/esm/querying/ExtraQueryProvider.js +6 -0
  57. package/dist/esm/dist/esm/querying/RuntimeDataSource.js +6 -0
  58. package/dist/esm/dist/esm/querying/SceneDataLayerSet.js +100 -0
  59. package/dist/esm/dist/esm/querying/SceneQueryRunner.js +468 -0
  60. package/dist/esm/dist/esm/querying/extraQueryProcessingOperator.js +46 -0
  61. package/dist/esm/dist/esm/querying/getEnrichedDataRequest.js +12 -0
  62. package/dist/esm/dist/esm/querying/layers/SceneDataLayerBase.js +112 -0
  63. package/dist/esm/dist/esm/querying/layers/SceneDataLayerControls.js +51 -0
  64. package/dist/esm/dist/esm/querying/layers/annotations/AnnotationsDataLayer.js +130 -0
  65. package/dist/esm/dist/esm/querying/layers/annotations/filterAnnotations.js +85 -0
  66. package/dist/esm/dist/esm/querying/layers/annotations/standardAnnotationQuery.js +121 -0
  67. package/dist/esm/dist/esm/querying/layers/annotations/standardAnnotationsSupport.js +211 -0
  68. package/dist/esm/dist/esm/querying/layers/annotations/utils.js +77 -0
  69. package/dist/esm/dist/esm/querying/registerQueryWithController.js +41 -0
  70. package/dist/esm/dist/esm/services/SceneObjectUrlSyncConfig.js +30 -0
  71. package/dist/esm/dist/esm/services/UniqueUrlKeyMapper.js +45 -0
  72. package/dist/esm/dist/esm/services/UrlSyncManager.js +167 -0
  73. package/dist/esm/dist/esm/services/useUrlSync.js +29 -0
  74. package/dist/esm/dist/esm/services/utils.js +71 -0
  75. package/dist/esm/dist/esm/utils/ControlsLabel.js +107 -0
  76. package/dist/esm/dist/esm/utils/LoadingIndicator.js +19 -0
  77. package/dist/esm/dist/esm/utils/SafeSerializableSceneObject.js +39 -0
  78. package/dist/esm/dist/esm/utils/compatibility/setWindowGrafanaSceneContext.js +16 -0
  79. package/dist/esm/dist/esm/utils/date.js +15 -0
  80. package/dist/esm/dist/esm/utils/evaluateTimeRange.js +16 -0
  81. package/dist/esm/dist/esm/utils/explore.js +47 -0
  82. package/dist/esm/dist/esm/utils/getCompareSeriesRefId.js +4 -0
  83. package/dist/esm/dist/esm/utils/getDataSource.js +18 -0
  84. package/dist/esm/dist/esm/utils/getMessageFromError.js +24 -0
  85. package/dist/esm/dist/esm/utils/metricTree.js +53 -0
  86. package/dist/esm/dist/esm/utils/parseUrlParam.js +41 -0
  87. package/dist/esm/dist/esm/utils/utils.js +11 -0
  88. package/dist/esm/dist/esm/utils/wrapInSafeSerializableSceneObject.js +30 -0
  89. package/dist/esm/dist/esm/utils/writeSceneLog.js +12 -0
  90. package/dist/esm/dist/esm/variables/VariableDependencyConfig.js +150 -0
  91. package/dist/esm/dist/esm/variables/VariableValueRecorder.js +71 -0
  92. package/dist/esm/dist/esm/variables/adhoc/AdHocFilterBuilder.js +24 -0
  93. package/dist/esm/dist/esm/variables/adhoc/AdHocFilterRenderer.js +303 -0
  94. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js +162 -0
  95. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js +20 -0
  96. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +640 -0
  97. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +65 -0
  98. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js +146 -0
  99. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js +114 -0
  100. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js +68 -0
  101. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/utils.js +146 -0
  102. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersVariable.js +289 -0
  103. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js +76 -0
  104. package/dist/esm/dist/esm/variables/adhoc/getAdhocOptionSearcher.js +13 -0
  105. package/dist/esm/dist/esm/variables/adhoc/patchGetAdhocFilters.js +47 -0
  106. package/dist/esm/dist/esm/variables/components/VariableValueControl.js +23 -0
  107. package/dist/esm/dist/esm/variables/components/VariableValueInput.js +33 -0
  108. package/dist/esm/dist/esm/variables/components/VariableValueSelect.js +228 -0
  109. package/dist/esm/dist/esm/variables/components/VariableValueSelectors.js +72 -0
  110. package/dist/esm/dist/esm/variables/components/getOptionSearcher.js +15 -0
  111. package/dist/esm/dist/esm/variables/constants.js +9 -0
  112. package/dist/esm/dist/esm/variables/getEnrichedFiltersRequest.js +12 -0
  113. package/dist/esm/dist/esm/variables/groupby/GroupByVariable.js +259 -0
  114. package/dist/esm/dist/esm/variables/groupby/GroupByVariableUrlSyncHandler.js +63 -0
  115. package/dist/esm/dist/esm/variables/groupby/findActiveGroupByVariablesByUid.js +13 -0
  116. package/dist/esm/dist/esm/variables/interpolation/ScopedVarsVariable.js +40 -0
  117. package/dist/esm/dist/esm/variables/interpolation/defaults.js +21 -0
  118. package/dist/esm/dist/esm/variables/interpolation/fieldAccessorCache.js +13 -0
  119. package/dist/esm/dist/esm/variables/interpolation/formatRegistry.js +296 -0
  120. package/dist/esm/dist/esm/variables/interpolation/sceneInterpolator.js +87 -0
  121. package/dist/esm/dist/esm/variables/lookupVariable.js +20 -0
  122. package/dist/esm/dist/esm/variables/macros/AllVariablesMacro.js +57 -0
  123. package/dist/esm/dist/esm/variables/macros/contextMacros.js +43 -0
  124. package/dist/esm/dist/esm/variables/macros/dataMacros.js +134 -0
  125. package/dist/esm/dist/esm/variables/macros/index.js +26 -0
  126. package/dist/esm/dist/esm/variables/macros/templateProxies.js +51 -0
  127. package/dist/esm/dist/esm/variables/macros/timeMacros.js +86 -0
  128. package/dist/esm/dist/esm/variables/macros/types.js +11 -0
  129. package/dist/esm/dist/esm/variables/macros/urlMacros.js +56 -0
  130. package/dist/esm/dist/esm/variables/sets/SceneVariableSet.js +254 -0
  131. package/dist/esm/dist/esm/variables/types.js +11 -0
  132. package/dist/esm/dist/esm/variables/utils.js +172 -0
  133. package/dist/esm/dist/esm/variables/variants/ConstantVariable.js +38 -0
  134. package/dist/esm/dist/esm/variables/variants/CustomVariable.js +60 -0
  135. package/dist/esm/dist/esm/variables/variants/DataSourceVariable.js +88 -0
  136. package/dist/esm/dist/esm/variables/variants/IntervalVariable.js +117 -0
  137. package/dist/esm/dist/esm/variables/variants/MultiValueVariable.js +295 -0
  138. package/dist/esm/dist/esm/variables/variants/TestVariable.js +117 -0
  139. package/dist/esm/dist/esm/variables/variants/TextBoxVariable.js +61 -0
  140. package/dist/esm/dist/esm/variables/variants/query/QueryVariable.js +139 -0
  141. package/dist/esm/dist/esm/variables/variants/query/createQueryVariableRunner.js +129 -0
  142. package/dist/esm/dist/esm/variables/variants/query/guards.js +28 -0
  143. package/dist/esm/dist/esm/variables/variants/query/toMetricFindValues.js +96 -0
  144. package/dist/esm/dist/esm/variables/variants/query/utils.js +124 -0
  145. package/dist/esm/index.js +1 -1
  146. package/dist/esm/index.js.map +1 -1
  147. package/dist/esm/querying/DataProviderSharer.js +39 -0
  148. package/dist/esm/src/behaviors/ActWhenVariableChanged.js +27 -0
  149. package/dist/esm/src/behaviors/CursorSync.js +76 -0
  150. package/dist/esm/src/behaviors/LiveNowTimer.js +44 -0
  151. package/dist/esm/src/behaviors/SceneQueryController.js +60 -0
  152. package/dist/esm/src/behaviors/index.js +5 -0
  153. package/dist/esm/src/components/EmbeddedScene.js +59 -0
  154. package/dist/esm/src/components/NestedScene.js +95 -0
  155. package/dist/esm/src/components/SceneApp/SceneApp.js +37 -0
  156. package/dist/esm/src/components/SceneApp/SceneAppPage.js +176 -0
  157. package/dist/esm/src/components/SceneApp/SceneAppPageView.js +104 -0
  158. package/dist/esm/src/components/SceneApp/utils.js +42 -0
  159. package/dist/esm/src/components/SceneByFrameRepeater.js +41 -0
  160. package/dist/esm/src/components/SceneByVariableRepeater.js +55 -0
  161. package/dist/esm/src/components/SceneCanvasText.js +32 -0
  162. package/dist/esm/src/components/SceneControlsSpacer.js +17 -0
  163. package/dist/esm/src/components/SceneDebugger/DebugDetails.js +82 -0
  164. package/dist/esm/src/components/SceneDebugger/DebugTreeNode.js +72 -0
  165. package/dist/esm/src/components/SceneDebugger/SceneDebugger.js +77 -0
  166. package/dist/esm/src/components/SceneReactObject.js +34 -0
  167. package/dist/esm/src/components/SceneRefreshPicker.js +205 -0
  168. package/dist/esm/src/components/SceneTimePicker.js +139 -0
  169. package/dist/esm/src/components/SceneTimeRangeCompare.js +240 -0
  170. package/dist/esm/src/components/SceneToolbarButton.js +33 -0
  171. package/dist/esm/src/components/VizPanel/VizPanel.js +406 -0
  172. package/dist/esm/src/components/VizPanel/VizPanelExploreButton.js +44 -0
  173. package/dist/esm/src/components/VizPanel/VizPanelMenu.js +59 -0
  174. package/dist/esm/src/components/VizPanel/VizPanelRenderer.js +285 -0
  175. package/dist/esm/src/components/VizPanel/VizPanelSeriesLimit.js +45 -0
  176. package/dist/esm/src/components/VizPanel/colorSeriesConfigFactory.js +72 -0
  177. package/dist/esm/src/components/VizPanel/registerRuntimePanelPlugin.js +56 -0
  178. package/dist/esm/src/components/VizPanel/seriesVisibilityConfigFactory.js +164 -0
  179. package/dist/esm/src/components/layout/CSSGrid/SceneCSSGridLayout.js +124 -0
  180. package/dist/esm/src/components/layout/LazyLoader.js +103 -0
  181. package/dist/esm/src/components/layout/SceneFlexLayout.js +135 -0
  182. package/dist/esm/src/components/layout/grid/SceneGridItem.js +30 -0
  183. package/dist/esm/src/components/layout/grid/SceneGridLayout.js +283 -0
  184. package/dist/esm/src/components/layout/grid/SceneGridLayoutRenderer.js +178 -0
  185. package/dist/esm/src/components/layout/grid/SceneGridRow.js +190 -0
  186. package/dist/esm/src/components/layout/grid/constants.js +7 -0
  187. package/dist/esm/src/components/layout/grid/utils.js +36 -0
  188. package/dist/esm/src/components/layout/split/SplitLayout.js +17 -0
  189. package/dist/esm/src/components/layout/split/SplitLayoutRenderer.js +29 -0
  190. package/dist/esm/src/components/layout/split/Splitter.js +386 -0
  191. package/dist/esm/src/core/PanelBuilders/FieldConfigBuilder.js +100 -0
  192. package/dist/esm/src/core/PanelBuilders/FieldConfigBuilders.js +75 -0
  193. package/dist/esm/src/core/PanelBuilders/FieldConfigOverridesBuilder.js +75 -0
  194. package/dist/esm/src/core/PanelBuilders/PanelOptionsBuilder.js +22 -0
  195. package/dist/esm/src/core/PanelBuilders/PanelOptionsBuilders.js +85 -0
  196. package/dist/esm/src/core/PanelBuilders/StandardFieldConfigBuilders.js +52 -0
  197. package/dist/esm/src/core/PanelBuilders/VizConfigBuilder.js +78 -0
  198. package/dist/esm/src/core/PanelBuilders/VizConfigBuilders.js +114 -0
  199. package/dist/esm/src/core/PanelBuilders/VizPanelBuilder.js +162 -0
  200. package/dist/esm/src/core/PanelBuilders/index.js +116 -0
  201. package/dist/esm/src/core/SceneComponentWrapper.js +57 -0
  202. package/dist/esm/src/core/SceneDataNode.js +43 -0
  203. package/dist/esm/src/core/SceneObjectBase.js +286 -0
  204. package/dist/esm/src/core/SceneObjectRef.js +32 -0
  205. package/dist/esm/src/core/SceneTimeRange.js +231 -0
  206. package/dist/esm/src/core/SceneTimeRangeTransformerBase.js +35 -0
  207. package/dist/esm/src/core/SceneTimeZoneOverride.js +63 -0
  208. package/dist/esm/src/core/events.js +11 -0
  209. package/dist/esm/src/core/sceneGraph/getTimeRange.js +10 -0
  210. package/dist/esm/src/core/sceneGraph/index.js +25 -0
  211. package/dist/esm/src/core/sceneGraph/sceneGraph.js +178 -0
  212. package/dist/esm/src/core/sceneGraph/utils.js +64 -0
  213. package/dist/esm/src/core/types.js +15 -0
  214. package/dist/esm/src/index.js +108 -0
  215. package/dist/esm/src/querying/DataLayersMerger.js +46 -0
  216. package/dist/esm/src/querying/DataProviderProxy.js +37 -0
  217. package/dist/esm/src/querying/DataProviderSharer.js +108 -0
  218. package/dist/esm/src/querying/ExtraQueryProvider.js +6 -0
  219. package/dist/esm/src/querying/RuntimeDataSource.js +49 -0
  220. package/dist/esm/src/querying/SceneDataLayerSet.js +100 -0
  221. package/dist/esm/src/querying/SceneDataTransformer.js +178 -0
  222. package/dist/esm/src/querying/SceneQueryRunner.js +468 -0
  223. package/dist/esm/src/querying/extraQueryProcessingOperator.js +46 -0
  224. package/dist/esm/src/querying/getEnrichedDataRequest.js +12 -0
  225. package/dist/esm/src/querying/layers/SceneDataLayerBase.js +112 -0
  226. package/dist/esm/src/querying/layers/SceneDataLayerControls.js +51 -0
  227. package/dist/esm/src/querying/layers/annotations/AnnotationsDataLayer.js +130 -0
  228. package/dist/esm/src/querying/layers/annotations/filterAnnotations.js +85 -0
  229. package/dist/esm/src/querying/layers/annotations/standardAnnotationQuery.js +121 -0
  230. package/dist/esm/src/querying/layers/annotations/standardAnnotationsSupport.js +211 -0
  231. package/dist/esm/src/querying/layers/annotations/utils.js +77 -0
  232. package/dist/esm/src/querying/layers/index.js +2 -0
  233. package/dist/esm/src/querying/registerQueryWithController.js +41 -0
  234. package/dist/esm/src/services/SceneObjectUrlSyncConfig.js +30 -0
  235. package/dist/esm/src/services/UniqueUrlKeyMapper.js +45 -0
  236. package/dist/esm/src/services/UrlSyncContextProvider.js +17 -0
  237. package/dist/esm/src/services/UrlSyncManager.js +167 -0
  238. package/dist/esm/src/services/useUrlSync.js +29 -0
  239. package/dist/esm/src/services/utils.js +75 -0
  240. package/dist/esm/src/utils/ControlsLabel.js +107 -0
  241. package/dist/esm/src/utils/LoadingIndicator.js +19 -0
  242. package/dist/esm/src/utils/SafeSerializableSceneObject.js +39 -0
  243. package/dist/esm/src/utils/compatibility/setWindowGrafanaSceneContext.js +16 -0
  244. package/dist/esm/src/utils/date.js +15 -0
  245. package/dist/esm/src/utils/evaluateTimeRange.js +16 -0
  246. package/dist/esm/src/utils/explore.js +47 -0
  247. package/dist/esm/src/utils/getCompareSeriesRefId.js +4 -0
  248. package/dist/esm/src/utils/getDataSource.js +18 -0
  249. package/dist/esm/src/utils/getMessageFromError.js +24 -0
  250. package/dist/esm/src/utils/metricTree.js +53 -0
  251. package/dist/esm/src/utils/parseUrlParam.js +41 -0
  252. package/dist/esm/src/utils/utils.js +11 -0
  253. package/dist/esm/src/utils/wrapInSafeSerializableSceneObject.js +30 -0
  254. package/dist/esm/src/utils/writeSceneLog.js +12 -0
  255. package/dist/esm/src/variables/VariableDependencyConfig.js +150 -0
  256. package/dist/esm/src/variables/VariableValueRecorder.js +71 -0
  257. package/dist/esm/src/variables/adhoc/AdHocFilterBuilder.js +24 -0
  258. package/dist/esm/src/variables/adhoc/AdHocFilterRenderer.js +303 -0
  259. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js +162 -0
  260. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js +20 -0
  261. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +640 -0
  262. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +65 -0
  263. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js +146 -0
  264. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js +114 -0
  265. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js +68 -0
  266. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/utils.js +146 -0
  267. package/dist/esm/src/variables/adhoc/AdHocFiltersVariable.js +289 -0
  268. package/dist/esm/src/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js +76 -0
  269. package/dist/esm/src/variables/adhoc/getAdhocOptionSearcher.js +13 -0
  270. package/dist/esm/src/variables/adhoc/patchGetAdhocFilters.js +47 -0
  271. package/dist/esm/src/variables/components/VariableValueControl.js +23 -0
  272. package/dist/esm/src/variables/components/VariableValueInput.js +33 -0
  273. package/dist/esm/src/variables/components/VariableValueSelect.js +228 -0
  274. package/dist/esm/src/variables/components/VariableValueSelectors.js +72 -0
  275. package/dist/esm/src/variables/components/getOptionSearcher.js +15 -0
  276. package/dist/esm/src/variables/constants.js +9 -0
  277. package/dist/esm/src/variables/getEnrichedFiltersRequest.js +12 -0
  278. package/dist/esm/src/variables/groupby/GroupByVariable.js +259 -0
  279. package/dist/esm/src/variables/groupby/GroupByVariableUrlSyncHandler.js +63 -0
  280. package/dist/esm/src/variables/groupby/findActiveGroupByVariablesByUid.js +13 -0
  281. package/dist/esm/src/variables/interpolation/ScopedVarsVariable.js +40 -0
  282. package/dist/esm/src/variables/interpolation/defaults.js +21 -0
  283. package/dist/esm/src/variables/interpolation/fieldAccessorCache.js +13 -0
  284. package/dist/esm/src/variables/interpolation/formatRegistry.js +296 -0
  285. package/dist/esm/src/variables/interpolation/sceneInterpolator.js +87 -0
  286. package/dist/esm/src/variables/lookupVariable.js +20 -0
  287. package/dist/esm/src/variables/macros/AllVariablesMacro.js +57 -0
  288. package/dist/esm/src/variables/macros/contextMacros.js +43 -0
  289. package/dist/esm/src/variables/macros/dataMacros.js +134 -0
  290. package/dist/esm/src/variables/macros/index.js +35 -0
  291. package/dist/esm/src/variables/macros/templateProxies.js +51 -0
  292. package/dist/esm/src/variables/macros/timeMacros.js +86 -0
  293. package/dist/esm/src/variables/macros/types.js +11 -0
  294. package/dist/esm/src/variables/macros/urlMacros.js +56 -0
  295. package/dist/esm/src/variables/sets/SceneVariableSet.js +254 -0
  296. package/dist/esm/src/variables/types.js +11 -0
  297. package/dist/esm/src/variables/utils.js +172 -0
  298. package/dist/esm/src/variables/variants/ConstantVariable.js +38 -0
  299. package/dist/esm/src/variables/variants/CustomVariable.js +60 -0
  300. package/dist/esm/src/variables/variants/DataSourceVariable.js +88 -0
  301. package/dist/esm/src/variables/variants/IntervalVariable.js +117 -0
  302. package/dist/esm/src/variables/variants/JsonVariable.js +193 -0
  303. package/dist/esm/src/variables/variants/LocalValueVariable.js +56 -0
  304. package/dist/esm/src/variables/variants/MultiValueVariable.js +295 -0
  305. package/dist/esm/src/variables/variants/TestVariable.js +117 -0
  306. package/dist/esm/src/variables/variants/TextBoxVariable.js +61 -0
  307. package/dist/esm/src/variables/variants/guards.js +27 -0
  308. package/dist/esm/src/variables/variants/query/QueryVariable.js +139 -0
  309. package/dist/esm/src/variables/variants/query/createQueryVariableRunner.js +129 -0
  310. package/dist/esm/src/variables/variants/query/guards.js +28 -0
  311. package/dist/esm/src/variables/variants/query/toMetricFindValues.js +96 -0
  312. package/dist/esm/src/variables/variants/query/utils.js +124 -0
  313. package/dist/esm/variables/components/VariableValueSelect.js +13 -9
  314. package/dist/esm/variables/components/VariableValueSelect.js.map +1 -1
  315. package/dist/esm/variables/variants/ConstantVariable.js +22 -0
  316. package/dist/esm/variables/variants/ConstantVariable.js.map +1 -1
  317. package/dist/esm/variables/variants/CustomVariable.js +3 -2
  318. package/dist/esm/variables/variants/CustomVariable.js.map +1 -1
  319. package/dist/esm/variables/variants/DataSourceVariable.js +3 -2
  320. package/dist/esm/variables/variants/DataSourceVariable.js.map +1 -1
  321. package/dist/esm/variables/variants/JsonVariable.js +96 -0
  322. package/dist/esm/variables/variants/TestVariable.js +3 -2
  323. package/dist/esm/variables/variants/TestVariable.js.map +1 -1
  324. package/dist/esm/variables/variants/json/JsonVariable.js +95 -0
  325. package/dist/esm/variables/variants/json/JsonVariableOptionProviders.js +70 -0
  326. package/dist/esm/variables/variants/query/QueryVariable.js +3 -2
  327. package/dist/esm/variables/variants/query/QueryVariable.js.map +1 -1
  328. package/dist/index.d.ts +14 -6
  329. package/dist/index.js +35 -13
  330. package/dist/index.js.map +1 -1
  331. package/package.json +2 -2
@@ -0,0 +1,228 @@
1
+ import { isArray } from 'lodash';
2
+ import React, { useState, useMemo, useEffect } from 'react';
3
+ import { Select, MultiSelect, useTheme2, getSelectStyles, useStyles2, Checkbox, ToggleAllState } from '@grafana/ui';
4
+ import { selectors } from '@grafana/e2e-selectors';
5
+ import { cx, css } from '@emotion/css';
6
+ import { getOptionSearcher } from './getOptionSearcher.js';
7
+
8
+ var __defProp = Object.defineProperty;
9
+ var __defProps = Object.defineProperties;
10
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
11
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
12
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
13
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
14
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
15
+ var __spreadValues = (a, b) => {
16
+ for (var prop in b || (b = {}))
17
+ if (__hasOwnProp.call(b, prop))
18
+ __defNormalProp(a, prop, b[prop]);
19
+ if (__getOwnPropSymbols)
20
+ for (var prop of __getOwnPropSymbols(b)) {
21
+ if (__propIsEnum.call(b, prop))
22
+ __defNormalProp(a, prop, b[prop]);
23
+ }
24
+ return a;
25
+ };
26
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
27
+ var __objRest = (source, exclude) => {
28
+ var target = {};
29
+ for (var prop in source)
30
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
31
+ target[prop] = source[prop];
32
+ if (source != null && __getOwnPropSymbols)
33
+ for (var prop of __getOwnPropSymbols(source)) {
34
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
35
+ target[prop] = source[prop];
36
+ }
37
+ return target;
38
+ };
39
+ const filterNoOp = () => true;
40
+ const filterAll = (v) => v.value !== "$__all";
41
+ const determineToggleAllState = (selectedValues, options) => {
42
+ if (selectedValues.length === options.filter(filterAll).length) {
43
+ return ToggleAllState.allSelected;
44
+ } else if (selectedValues.length === 0 || selectedValues.length === 1 && selectedValues[0] && selectedValues[0].value === "$__all") {
45
+ return ToggleAllState.noneSelected;
46
+ } else {
47
+ return ToggleAllState.indeterminate;
48
+ }
49
+ };
50
+ function toSelectableValue(value, label) {
51
+ return {
52
+ value,
53
+ label: label != null ? label : String(value)
54
+ };
55
+ }
56
+ function VariableValueSelect({ model }) {
57
+ const { value, text, key, options, includeAll, isReadOnly, allowCustomValue = true } = model.useState();
58
+ const [inputValue, setInputValue] = useState("");
59
+ const [hasCustomValue, setHasCustomValue] = useState(false);
60
+ const selectValue = toSelectableValue(value, String(text));
61
+ const optionSearcher = useMemo(() => getOptionSearcher(options, includeAll), [options, includeAll]);
62
+ const onInputChange = (value2, { action }) => {
63
+ if (action === "input-change") {
64
+ setInputValue(value2);
65
+ if (model.onSearchChange) {
66
+ model.onSearchChange(value2);
67
+ }
68
+ return value2;
69
+ }
70
+ return value2;
71
+ };
72
+ const filteredOptions = optionSearcher(inputValue);
73
+ const onOpenMenu = () => {
74
+ if (hasCustomValue) {
75
+ setInputValue(String(text));
76
+ }
77
+ };
78
+ const onCloseMenu = () => {
79
+ setInputValue("");
80
+ };
81
+ return /* @__PURE__ */ React.createElement(Select, {
82
+ id: key,
83
+ isValidNewOption: (inputValue2) => inputValue2.trim().length > 0,
84
+ placeholder: "Select value",
85
+ width: "auto",
86
+ disabled: isReadOnly,
87
+ value: selectValue,
88
+ inputValue,
89
+ allowCustomValue,
90
+ virtualized: true,
91
+ filterOption: filterNoOp,
92
+ tabSelectsValue: false,
93
+ onInputChange,
94
+ onOpenMenu,
95
+ onCloseMenu,
96
+ options: filteredOptions,
97
+ "data-testid": selectors.pages.Dashboard.SubMenu.submenuItemValueDropDownValueLinkTexts(`${value}`),
98
+ onChange: (newValue) => {
99
+ model.changeValueTo(newValue.value, newValue.label);
100
+ if (hasCustomValue !== newValue.__isNew__) {
101
+ setHasCustomValue(newValue.__isNew__);
102
+ }
103
+ }
104
+ });
105
+ }
106
+ function VariableValueSelectMulti({ model }) {
107
+ const {
108
+ value,
109
+ options,
110
+ key,
111
+ maxVisibleValues,
112
+ noValueOnClear,
113
+ includeAll,
114
+ isReadOnly,
115
+ allowCustomValue = true
116
+ } = model.useState();
117
+ const arrayValue = useMemo(() => isArray(value) ? value : [value], [value]);
118
+ const [uncommittedValue, setUncommittedValue] = useState(arrayValue);
119
+ const [inputValue, setInputValue] = useState("");
120
+ const optionSearcher = useMemo(() => getOptionSearcher(options, includeAll), [options, includeAll]);
121
+ useEffect(() => {
122
+ setUncommittedValue(arrayValue);
123
+ }, [arrayValue]);
124
+ const onInputChange = (value2, { action }) => {
125
+ if (action === "input-change") {
126
+ setInputValue(value2);
127
+ if (model.onSearchChange) {
128
+ model.onSearchChange(value2);
129
+ }
130
+ return value2;
131
+ }
132
+ if (action === "input-blur") {
133
+ setInputValue("");
134
+ return "";
135
+ }
136
+ return inputValue;
137
+ };
138
+ const placeholder = options.length > 0 ? "Select value" : "";
139
+ const filteredOptions = optionSearcher(inputValue);
140
+ return /* @__PURE__ */ React.createElement(MultiSelect, {
141
+ id: key,
142
+ placeholder,
143
+ width: "auto",
144
+ inputValue,
145
+ disabled: isReadOnly,
146
+ value: uncommittedValue,
147
+ noMultiValueWrap: true,
148
+ maxVisibleValues: maxVisibleValues != null ? maxVisibleValues : 5,
149
+ tabSelectsValue: false,
150
+ virtualized: true,
151
+ allowCustomValue,
152
+ toggleAllOptions: {
153
+ enabled: true,
154
+ optionsFilter: filterAll,
155
+ determineToggleAllState
156
+ },
157
+ options: filteredOptions,
158
+ closeMenuOnSelect: false,
159
+ components: { Option: OptionWithCheckbox },
160
+ isClearable: true,
161
+ hideSelectedOptions: false,
162
+ onInputChange,
163
+ onBlur: () => {
164
+ model.changeValueTo(uncommittedValue);
165
+ },
166
+ filterOption: filterNoOp,
167
+ "data-testid": selectors.pages.Dashboard.SubMenu.submenuItemValueDropDownValueLinkTexts(`${uncommittedValue}`),
168
+ onChange: (newValue, action) => {
169
+ if (action.action === "clear" && noValueOnClear) {
170
+ model.changeValueTo([]);
171
+ }
172
+ setUncommittedValue(newValue.map((x) => x.value));
173
+ }
174
+ });
175
+ }
176
+ const OptionWithCheckbox = ({
177
+ children,
178
+ data,
179
+ innerProps,
180
+ innerRef,
181
+ isFocused,
182
+ isSelected,
183
+ indeterminate,
184
+ renderOptionLabel
185
+ }) => {
186
+ var _b;
187
+ const _a = innerProps, rest = __objRest(_a, ["onMouseMove", "onMouseOver"]);
188
+ const theme = useTheme2();
189
+ const selectStyles = getSelectStyles(theme);
190
+ const optionStyles = useStyles2(getOptionStyles);
191
+ return /* @__PURE__ */ React.createElement("div", __spreadProps(__spreadValues({
192
+ ref: innerRef,
193
+ className: cx(selectStyles.option, isFocused && selectStyles.optionFocused)
194
+ }, rest), {
195
+ "data-testid": "data-testid Select option",
196
+ title: data.title
197
+ }), /* @__PURE__ */ React.createElement("div", {
198
+ className: optionStyles.checkbox
199
+ }, /* @__PURE__ */ React.createElement(Checkbox, {
200
+ indeterminate,
201
+ value: isSelected
202
+ })), /* @__PURE__ */ React.createElement("div", {
203
+ className: selectStyles.optionBody,
204
+ "data-testid": selectors.pages.Dashboard.SubMenu.submenuItemValueDropDownOptionTexts(
205
+ (_b = data.label) != null ? _b : String(data.value)
206
+ )
207
+ }, /* @__PURE__ */ React.createElement("span", null, children)));
208
+ };
209
+ OptionWithCheckbox.displayName = "SelectMenuOptions";
210
+ const getOptionStyles = (theme) => ({
211
+ checkbox: css({
212
+ marginRight: theme.spacing(2)
213
+ })
214
+ });
215
+ function renderSelectForVariable(model) {
216
+ if (model.state.isMulti) {
217
+ return /* @__PURE__ */ React.createElement(VariableValueSelectMulti, {
218
+ model
219
+ });
220
+ } else {
221
+ return /* @__PURE__ */ React.createElement(VariableValueSelect, {
222
+ model
223
+ });
224
+ }
225
+ }
226
+
227
+ export { OptionWithCheckbox, VariableValueSelect, VariableValueSelectMulti, renderSelectForVariable, toSelectableValue };
228
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmFyaWFibGVWYWx1ZVNlbGVjdC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3ZhcmlhYmxlcy9jb21wb25lbnRzL1ZhcmlhYmxlVmFsdWVTZWxlY3QudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzQXJyYXkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IFJlYWN0LCB7IFJlZkNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtcbiAgQ2hlY2tib3gsXG4gIElucHV0QWN0aW9uTWV0YSxcbiAgTXVsdGlTZWxlY3QsXG4gIFNlbGVjdCxcbiAgVG9nZ2xlQWxsU3RhdGUsXG4gIGdldFNlbGVjdFN0eWxlcyxcbiAgdXNlU3R5bGVzMixcbiAgdXNlVGhlbWUyLFxufSBmcm9tICdAZ3JhZmFuYS91aSc7XG5cbmltcG9ydCB7IFNjZW5lQ29tcG9uZW50UHJvcHMgfSBmcm9tICcuLi8uLi9jb3JlL3R5cGVzJztcbmltcG9ydCB7IE11bHRpVmFsdWVWYXJpYWJsZSB9IGZyb20gJy4uL3ZhcmlhbnRzL011bHRpVmFsdWVWYXJpYWJsZSc7XG5pbXBvcnQgeyBWYXJpYWJsZVZhbHVlLCBWYXJpYWJsZVZhbHVlU2luZ2xlIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgc2VsZWN0b3JzIH0gZnJvbSAnQGdyYWZhbmEvZTJlLXNlbGVjdG9ycyc7XG5pbXBvcnQgeyBHcmFmYW5hVGhlbWUyLCBTZWxlY3RhYmxlVmFsdWUgfSBmcm9tICdAZ3JhZmFuYS9kYXRhJztcbmltcG9ydCB7IGNzcywgY3ggfSBmcm9tICdAZW1vdGlvbi9jc3MnO1xuaW1wb3J0IHsgZ2V0T3B0aW9uU2VhcmNoZXIgfSBmcm9tICcuL2dldE9wdGlvblNlYXJjaGVyJztcblxuY29uc3QgZmlsdGVyTm9PcCA9ICgpID0+IHRydWU7XG5cbmNvbnN0IGZpbHRlckFsbCA9ICh2OiBTZWxlY3RhYmxlVmFsdWU8VmFyaWFibGVWYWx1ZVNpbmdsZT4pID0+IHYudmFsdWUgIT09ICckX19hbGwnO1xuXG5jb25zdCBkZXRlcm1pbmVUb2dnbGVBbGxTdGF0ZSA9IChcbiAgc2VsZWN0ZWRWYWx1ZXM6IEFycmF5PFNlbGVjdGFibGVWYWx1ZTxWYXJpYWJsZVZhbHVlU2luZ2xlPj4sXG4gIG9wdGlvbnM6IEFycmF5PFNlbGVjdGFibGVWYWx1ZTxWYXJpYWJsZVZhbHVlU2luZ2xlPj5cbikgPT4ge1xuICBpZiAoc2VsZWN0ZWRWYWx1ZXMubGVuZ3RoID09PSBvcHRpb25zLmZpbHRlcihmaWx0ZXJBbGwpLmxlbmd0aCkge1xuICAgIHJldHVybiBUb2dnbGVBbGxTdGF0ZS5hbGxTZWxlY3RlZDtcbiAgfSBlbHNlIGlmIChcbiAgICBzZWxlY3RlZFZhbHVlcy5sZW5ndGggPT09IDAgfHxcbiAgICAoc2VsZWN0ZWRWYWx1ZXMubGVuZ3RoID09PSAxICYmIHNlbGVjdGVkVmFsdWVzWzBdICYmIHNlbGVjdGVkVmFsdWVzWzBdLnZhbHVlID09PSAnJF9fYWxsJylcbiAgKSB7XG4gICAgcmV0dXJuIFRvZ2dsZUFsbFN0YXRlLm5vbmVTZWxlY3RlZDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gVG9nZ2xlQWxsU3RhdGUuaW5kZXRlcm1pbmF0ZTtcbiAgfVxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRvU2VsZWN0YWJsZVZhbHVlPFQ+KHZhbHVlOiBULCBsYWJlbD86IHN0cmluZyk6IFNlbGVjdGFibGVWYWx1ZTxUPiB7XG4gIHJldHVybiB7XG4gICAgdmFsdWUsXG4gICAgbGFiZWw6IGxhYmVsID8/IFN0cmluZyh2YWx1ZSksXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBWYXJpYWJsZVZhbHVlU2VsZWN0KHsgbW9kZWwgfTogU2NlbmVDb21wb25lbnRQcm9wczxNdWx0aVZhbHVlVmFyaWFibGU+KSB7XG4gIGNvbnN0IHsgdmFsdWUsIHRleHQsIGtleSwgb3B0aW9ucywgaW5jbHVkZUFsbCwgaXNSZWFkT25seSwgYWxsb3dDdXN0b21WYWx1ZSA9IHRydWUgfSA9IG1vZGVsLnVzZVN0YXRlKCk7XG4gIGNvbnN0IFtpbnB1dFZhbHVlLCBzZXRJbnB1dFZhbHVlXSA9IHVzZVN0YXRlKCcnKTtcbiAgY29uc3QgW2hhc0N1c3RvbVZhbHVlLCBzZXRIYXNDdXN0b21WYWx1ZV0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IHNlbGVjdFZhbHVlID0gdG9TZWxlY3RhYmxlVmFsdWUodmFsdWUsIFN0cmluZyh0ZXh0KSk7XG5cbiAgY29uc3Qgb3B0aW9uU2VhcmNoZXIgPSB1c2VNZW1vKCgpID0+IGdldE9wdGlvblNlYXJjaGVyKG9wdGlvbnMsIGluY2x1ZGVBbGwpLCBbb3B0aW9ucywgaW5jbHVkZUFsbF0pO1xuXG4gIGNvbnN0IG9uSW5wdXRDaGFuZ2UgPSAodmFsdWU6IHN0cmluZywgeyBhY3Rpb24gfTogSW5wdXRBY3Rpb25NZXRhKSA9PiB7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ2lucHV0LWNoYW5nZScpIHtcbiAgICAgIHNldElucHV0VmFsdWUodmFsdWUpO1xuICAgICAgaWYgKG1vZGVsLm9uU2VhcmNoQ2hhbmdlKSB7XG4gICAgICAgIG1vZGVsLm9uU2VhcmNoQ2hhbmdlISh2YWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9O1xuXG4gIGNvbnN0IGZpbHRlcmVkT3B0aW9ucyA9IG9wdGlvblNlYXJjaGVyKGlucHV0VmFsdWUpO1xuXG4gIGNvbnN0IG9uT3Blbk1lbnUgPSAoKSA9PiB7XG4gICAgaWYgKGhhc0N1c3RvbVZhbHVlKSB7XG4gICAgICBzZXRJbnB1dFZhbHVlKFN0cmluZyh0ZXh0KSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IG9uQ2xvc2VNZW51ID0gKCkgPT4ge1xuICAgIHNldElucHV0VmFsdWUoJycpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPFNlbGVjdDxWYXJpYWJsZVZhbHVlPlxuICAgICAgaWQ9e2tleX1cbiAgICAgIGlzVmFsaWROZXdPcHRpb249eyhpbnB1dFZhbHVlKSA9PiBpbnB1dFZhbHVlLnRyaW0oKS5sZW5ndGggPiAwfVxuICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgdmFsdWVcIlxuICAgICAgd2lkdGg9XCJhdXRvXCJcbiAgICAgIGRpc2FibGVkPXtpc1JlYWRPbmx5fVxuICAgICAgdmFsdWU9e3NlbGVjdFZhbHVlfVxuICAgICAgaW5wdXRWYWx1ZT17aW5wdXRWYWx1ZX1cbiAgICAgIGFsbG93Q3VzdG9tVmFsdWU9e2FsbG93Q3VzdG9tVmFsdWV9XG4gICAgICB2aXJ0dWFsaXplZFxuICAgICAgZmlsdGVyT3B0aW9uPXtmaWx0ZXJOb09wfVxuICAgICAgdGFiU2VsZWN0c1ZhbHVlPXtmYWxzZX1cbiAgICAgIG9uSW5wdXRDaGFuZ2U9e29uSW5wdXRDaGFuZ2V9XG4gICAgICBvbk9wZW5NZW51PXtvbk9wZW5NZW51fVxuICAgICAgb25DbG9zZU1lbnU9e29uQ2xvc2VNZW51fVxuICAgICAgb3B0aW9ucz17ZmlsdGVyZWRPcHRpb25zfVxuICAgICAgZGF0YS10ZXN0aWQ9e3NlbGVjdG9ycy5wYWdlcy5EYXNoYm9hcmQuU3ViTWVudS5zdWJtZW51SXRlbVZhbHVlRHJvcERvd25WYWx1ZUxpbmtUZXh0cyhgJHt2YWx1ZX1gKX1cbiAgICAgIG9uQ2hhbmdlPXsobmV3VmFsdWUpID0+IHtcbiAgICAgICAgbW9kZWwuY2hhbmdlVmFsdWVUbyhuZXdWYWx1ZS52YWx1ZSEsIG5ld1ZhbHVlLmxhYmVsISk7XG5cbiAgICAgICAgaWYgKGhhc0N1c3RvbVZhbHVlICE9PSBuZXdWYWx1ZS5fX2lzTmV3X18pIHtcbiAgICAgICAgICBzZXRIYXNDdXN0b21WYWx1ZShuZXdWYWx1ZS5fX2lzTmV3X18pO1xuICAgICAgICB9XG4gICAgICB9fVxuICAgIC8+XG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBWYXJpYWJsZVZhbHVlU2VsZWN0TXVsdGkoeyBtb2RlbCB9OiBTY2VuZUNvbXBvbmVudFByb3BzPE11bHRpVmFsdWVWYXJpYWJsZT4pIHtcbiAgY29uc3Qge1xuICAgIHZhbHVlLFxuICAgIG9wdGlvbnMsXG4gICAga2V5LFxuICAgIG1heFZpc2libGVWYWx1ZXMsXG4gICAgbm9WYWx1ZU9uQ2xlYXIsXG4gICAgaW5jbHVkZUFsbCxcbiAgICBpc1JlYWRPbmx5LFxuICAgIGFsbG93Q3VzdG9tVmFsdWUgPSB0cnVlLFxuICB9ID0gbW9kZWwudXNlU3RhdGUoKTtcbiAgY29uc3QgYXJyYXlWYWx1ZSA9IHVzZU1lbW8oKCkgPT4gKGlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdKSwgW3ZhbHVlXSk7XG4gIC8vIFRvIG5vdCB0cmlnZ2VyIHF1ZXJpZXMgb24gZXZlcnkgc2VsZWN0aW9uIHdlIHN0b3JlIHRoaXMgc3RhdGUgbG9jYWxseSBoZXJlIGFuZCBvbmx5IHVwZGF0ZSB0aGUgdmFyaWFibGUgb25CbHVyXG4gIGNvbnN0IFt1bmNvbW1pdHRlZFZhbHVlLCBzZXRVbmNvbW1pdHRlZFZhbHVlXSA9IHVzZVN0YXRlKGFycmF5VmFsdWUpO1xuICBjb25zdCBbaW5wdXRWYWx1ZSwgc2V0SW5wdXRWYWx1ZV0gPSB1c2VTdGF0ZSgnJyk7XG5cbiAgY29uc3Qgb3B0aW9uU2VhcmNoZXIgPSB1c2VNZW1vKCgpID0+IGdldE9wdGlvblNlYXJjaGVyKG9wdGlvbnMsIGluY2x1ZGVBbGwpLCBbb3B0aW9ucywgaW5jbHVkZUFsbF0pO1xuXG4gIC8vIERldGVjdCB2YWx1ZSBjaGFuZ2VzIG91dHNpZGVcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRVbmNvbW1pdHRlZFZhbHVlKGFycmF5VmFsdWUpO1xuICB9LCBbYXJyYXlWYWx1ZV0pO1xuXG4gIGNvbnN0IG9uSW5wdXRDaGFuZ2UgPSAodmFsdWU6IHN0cmluZywgeyBhY3Rpb24gfTogSW5wdXRBY3Rpb25NZXRhKSA9PiB7XG4gICAgaWYgKGFjdGlvbiA9PT0gJ2lucHV0LWNoYW5nZScpIHtcbiAgICAgIHNldElucHV0VmFsdWUodmFsdWUpO1xuICAgICAgaWYgKG1vZGVsLm9uU2VhcmNoQ2hhbmdlKSB7XG4gICAgICAgIG1vZGVsLm9uU2VhcmNoQ2hhbmdlISh2YWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKGFjdGlvbiA9PT0gJ2lucHV0LWJsdXInKSB7XG4gICAgICBzZXRJbnB1dFZhbHVlKCcnKTtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICByZXR1cm4gaW5wdXRWYWx1ZTtcbiAgfTtcblxuICBjb25zdCBwbGFjZWhvbGRlciA9IG9wdGlvbnMubGVuZ3RoID4gMCA/ICdTZWxlY3QgdmFsdWUnIDogJyc7XG4gIGNvbnN0IGZpbHRlcmVkT3B0aW9ucyA9IG9wdGlvblNlYXJjaGVyKGlucHV0VmFsdWUpO1xuXG4gIHJldHVybiAoXG4gICAgPE11bHRpU2VsZWN0PFZhcmlhYmxlVmFsdWVTaW5nbGU+XG4gICAgICBpZD17a2V5fVxuICAgICAgcGxhY2Vob2xkZXI9e3BsYWNlaG9sZGVyfVxuICAgICAgd2lkdGg9XCJhdXRvXCJcbiAgICAgIGlucHV0VmFsdWU9e2lucHV0VmFsdWV9XG4gICAgICBkaXNhYmxlZD17aXNSZWFkT25seX1cbiAgICAgIHZhbHVlPXt1bmNvbW1pdHRlZFZhbHVlfVxuICAgICAgbm9NdWx0aVZhbHVlV3JhcD17dHJ1ZX1cbiAgICAgIG1heFZpc2libGVWYWx1ZXM9e21heFZpc2libGVWYWx1ZXMgPz8gNX1cbiAgICAgIHRhYlNlbGVjdHNWYWx1ZT17ZmFsc2V9XG4gICAgICB2aXJ0dWFsaXplZFxuICAgICAgYWxsb3dDdXN0b21WYWx1ZT17YWxsb3dDdXN0b21WYWx1ZX1cbiAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgdG9nZ2xlQWxsT3B0aW9ucz17e1xuICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICBvcHRpb25zRmlsdGVyOiBmaWx0ZXJBbGwsXG4gICAgICAgIGRldGVybWluZVRvZ2dsZUFsbFN0YXRlOiBkZXRlcm1pbmVUb2dnbGVBbGxTdGF0ZSxcbiAgICAgIH19XG4gICAgICBvcHRpb25zPXtmaWx0ZXJlZE9wdGlvbnN9XG4gICAgICBjbG9zZU1lbnVPblNlbGVjdD17ZmFsc2V9XG4gICAgICBjb21wb25lbnRzPXt7IE9wdGlvbjogT3B0aW9uV2l0aENoZWNrYm94IH19XG4gICAgICBpc0NsZWFyYWJsZT17dHJ1ZX1cbiAgICAgIGhpZGVTZWxlY3RlZE9wdGlvbnM9e2ZhbHNlfVxuICAgICAgb25JbnB1dENoYW5nZT17b25JbnB1dENoYW5nZX1cbiAgICAgIG9uQmx1cj17KCkgPT4ge1xuICAgICAgICBtb2RlbC5jaGFuZ2VWYWx1ZVRvKHVuY29tbWl0dGVkVmFsdWUpO1xuICAgICAgfX1cbiAgICAgIGZpbHRlck9wdGlvbj17ZmlsdGVyTm9PcH1cbiAgICAgIGRhdGEtdGVzdGlkPXtzZWxlY3RvcnMucGFnZXMuRGFzaGJvYXJkLlN1Yk1lbnUuc3VibWVudUl0ZW1WYWx1ZURyb3BEb3duVmFsdWVMaW5rVGV4dHMoYCR7dW5jb21taXR0ZWRWYWx1ZX1gKX1cbiAgICAgIG9uQ2hhbmdlPXsobmV3VmFsdWUsIGFjdGlvbikgPT4ge1xuICAgICAgICBpZiAoYWN0aW9uLmFjdGlvbiA9PT0gJ2NsZWFyJyAmJiBub1ZhbHVlT25DbGVhcikge1xuICAgICAgICAgIG1vZGVsLmNoYW5nZVZhbHVlVG8oW10pO1xuICAgICAgICB9XG4gICAgICAgIHNldFVuY29tbWl0dGVkVmFsdWUobmV3VmFsdWUubWFwKCh4KSA9PiB4LnZhbHVlISkpO1xuICAgICAgfX1cbiAgICAvPlxuICApO1xufVxuXG5pbnRlcmZhY2UgU2VsZWN0TWVudU9wdGlvblByb3BzPFQ+IHtcbiAgaXNEaXNhYmxlZDogYm9vbGVhbjtcbiAgaXNGb2N1c2VkOiBib29sZWFuO1xuICBpc1NlbGVjdGVkOiBib29sZWFuO1xuICBpbm5lclByb3BzOiBKU1guSW50cmluc2ljRWxlbWVudHNbJ2RpdiddO1xuICBpbm5lclJlZjogUmVmQ2FsbGJhY2s8SFRNTERpdkVsZW1lbnQ+O1xuICByZW5kZXJPcHRpb25MYWJlbD86ICh2YWx1ZTogU2VsZWN0YWJsZVZhbHVlPFQ+KSA9PiBKU1guRWxlbWVudDtcbiAgZGF0YTogU2VsZWN0YWJsZVZhbHVlPFQ+O1xuICBpbmRldGVybWluYXRlOiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgT3B0aW9uV2l0aENoZWNrYm94ID0gKHtcbiAgY2hpbGRyZW4sXG4gIGRhdGEsXG4gIGlubmVyUHJvcHMsXG4gIGlubmVyUmVmLFxuICBpc0ZvY3VzZWQsXG4gIGlzU2VsZWN0ZWQsXG4gIGluZGV0ZXJtaW5hdGUsXG4gIHJlbmRlck9wdGlvbkxhYmVsLFxufTogUmVhY3QuUHJvcHNXaXRoQ2hpbGRyZW48U2VsZWN0TWVudU9wdGlvblByb3BzPHVua25vd24+PikgPT4ge1xuICAvLyBXZSBhcmUgcmVtb3Zpbmcgb25Nb3VzZU1vdmUgYW5kIG9uTW91c2VPdmVyIGZyb20gaW5uZXJQcm9wcyBiZWNhdXNlIHRoZXkgY2F1c2UgdGhlIHdob2xlXG4gIC8vIGxpc3QgdG8gcmUtcmVuZGVyIGV2ZXJ5dGltZSB0aGUgdXNlciBob3ZlcnMgb3ZlciBhbiBvcHRpb24uIFRoaXMgaXMgYSBwZXJmb3JtYW5jZSBpc3N1ZS5cbiAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9KZWRXYXRzb24vcmVhY3Qtc2VsZWN0L2lzc3Vlcy8zMTI4I2lzc3VlY29tbWVudC00NTE5MzY3NDNcbiAgY29uc3QgeyBvbk1vdXNlTW92ZSwgb25Nb3VzZU92ZXIsIC4uLnJlc3QgfSA9IGlubmVyUHJvcHM7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUyKCk7XG4gIGNvbnN0IHNlbGVjdFN0eWxlcyA9IGdldFNlbGVjdFN0eWxlcyh0aGVtZSk7XG4gIGNvbnN0IG9wdGlvblN0eWxlcyA9IHVzZVN0eWxlczIoZ2V0T3B0aW9uU3R5bGVzKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHJlZj17aW5uZXJSZWZ9XG4gICAgICBjbGFzc05hbWU9e2N4KHNlbGVjdFN0eWxlcy5vcHRpb24sIGlzRm9jdXNlZCAmJiBzZWxlY3RTdHlsZXMub3B0aW9uRm9jdXNlZCl9XG4gICAgICB7Li4ucmVzdH1cbiAgICAgIC8vIFRPRE86IHVzZSBiZWxvdyBzZWxlY3RvciBvbmNlIHdlIHVwZGF0ZSBncmFmYW5hIGRlcGVuZGVuY2llcyB0byBeMTEuMS4wXG4gICAgICAvLyBkYXRhLXRlc3RpZD17c2VsZWN0b3JzLmNvbXBvbmVudHMuU2VsZWN0Lm9wdGlvbn1cbiAgICAgIGRhdGEtdGVzdGlkPVwiZGF0YS10ZXN0aWQgU2VsZWN0IG9wdGlvblwiXG4gICAgICB0aXRsZT17ZGF0YS50aXRsZX1cbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17b3B0aW9uU3R5bGVzLmNoZWNrYm94fT5cbiAgICAgICAgPENoZWNrYm94IGluZGV0ZXJtaW5hdGU9e2luZGV0ZXJtaW5hdGV9IHZhbHVlPXtpc1NlbGVjdGVkfSAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17c2VsZWN0U3R5bGVzLm9wdGlvbkJvZHl9XG4gICAgICAgIGRhdGEtdGVzdGlkPXtzZWxlY3RvcnMucGFnZXMuRGFzaGJvYXJkLlN1Yk1lbnUuc3VibWVudUl0ZW1WYWx1ZURyb3BEb3duT3B0aW9uVGV4dHMoXG4gICAgICAgICAgZGF0YS5sYWJlbCA/PyBTdHJpbmcoZGF0YS52YWx1ZSlcbiAgICAgICAgKX1cbiAgICAgID5cbiAgICAgICAgPHNwYW4+e2NoaWxkcmVufTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuT3B0aW9uV2l0aENoZWNrYm94LmRpc3BsYXlOYW1lID0gJ1NlbGVjdE1lbnVPcHRpb25zJztcblxuY29uc3QgZ2V0T3B0aW9uU3R5bGVzID0gKHRoZW1lOiBHcmFmYW5hVGhlbWUyKSA9PiAoe1xuICBjaGVja2JveDogY3NzKHtcbiAgICBtYXJnaW5SaWdodDogdGhlbWUuc3BhY2luZygyKSxcbiAgfSksXG59KTtcblxuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlclNlbGVjdEZvclZhcmlhYmxlKG1vZGVsOiBNdWx0aVZhbHVlVmFyaWFibGUpIHtcbiAgaWYgKG1vZGVsLnN0YXRlLmlzTXVsdGkpIHtcbiAgICByZXR1cm4gPFZhcmlhYmxlVmFsdWVTZWxlY3RNdWx0aSBtb2RlbD17bW9kZWx9IC8+O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiA8VmFyaWFibGVWYWx1ZVNlbGVjdCBtb2RlbD17bW9kZWx9IC8+O1xuICB9XG59XG4iXSwibmFtZXMiOlsidmFsdWUiLCJpbnB1dFZhbHVlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXFCQSxNQUFNLGFBQWEsTUFBTSxJQUFBLENBQUE7QUFFekIsTUFBTSxTQUFZLEdBQUEsQ0FBQyxDQUE0QyxLQUFBLENBQUEsQ0FBRSxLQUFVLEtBQUEsUUFBQSxDQUFBO0FBRTNFLE1BQU0sdUJBQUEsR0FBMEIsQ0FDOUIsY0FBQSxFQUNBLE9BQ0csS0FBQTtBQUNILEVBQUEsSUFBSSxlQUFlLE1BQVcsS0FBQSxPQUFBLENBQVEsTUFBTyxDQUFBLFNBQVMsRUFBRSxNQUFRLEVBQUE7QUFDOUQsSUFBQSxPQUFPLGNBQWUsQ0FBQSxXQUFBLENBQUE7QUFBQSxHQUV0QixNQUFBLElBQUEsY0FBQSxDQUFlLE1BQVcsS0FBQSxDQUFBLElBQ3pCLGNBQWUsQ0FBQSxNQUFBLEtBQVcsQ0FBSyxJQUFBLGNBQUEsQ0FBZSxDQUFNLENBQUEsSUFBQSxjQUFBLENBQWUsQ0FBRyxDQUFBLENBQUEsS0FBQSxLQUFVLFFBQ2pGLEVBQUE7QUFDQSxJQUFBLE9BQU8sY0FBZSxDQUFBLFlBQUEsQ0FBQTtBQUFBLEdBQ2pCLE1BQUE7QUFDTCxJQUFBLE9BQU8sY0FBZSxDQUFBLGFBQUEsQ0FBQTtBQUFBLEdBQ3hCO0FBQ0YsQ0FBQSxDQUFBO0FBRWdCLFNBQUEsaUJBQUEsQ0FBcUIsT0FBVSxLQUFvQyxFQUFBO0FBQ2pGLEVBQU8sT0FBQTtBQUFBLElBQ0wsS0FBQTtBQUFBLElBQ0EsS0FBQSxFQUFPLEtBQVMsSUFBQSxJQUFB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
@@ -0,0 +1,72 @@
1
+ import React from 'react';
2
+ import { VariableHide } from '@grafana/data';
3
+ import { SceneObjectBase, useSceneObjectState } from '../../core/SceneObjectBase.js';
4
+ import { sceneGraph } from '../../core/sceneGraph/index.js';
5
+ import { ControlsLabel } from '../../utils/ControlsLabel.js';
6
+ import { css } from '@emotion/css';
7
+ import { selectors } from '@grafana/e2e-selectors';
8
+
9
+ class VariableValueSelectors extends SceneObjectBase {
10
+ }
11
+ VariableValueSelectors.Component = VariableValueSelectorsRenderer;
12
+ function VariableValueSelectorsRenderer({ model }) {
13
+ const variables = sceneGraph.getVariables(model).useState();
14
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, variables.variables.map((variable) => /* @__PURE__ */ React.createElement(VariableValueSelectWrapper, {
15
+ key: variable.state.key,
16
+ variable,
17
+ layout: model.state.layout
18
+ })));
19
+ }
20
+ function VariableValueSelectWrapper({ variable, layout, showAlways, hideLabel }) {
21
+ const state = useSceneObjectState(variable, { shouldActivateOrKeepAlive: true });
22
+ if (state.hide === VariableHide.hideVariable && !showAlways) {
23
+ return null;
24
+ }
25
+ if (layout === "vertical") {
26
+ return /* @__PURE__ */ React.createElement("div", {
27
+ className: verticalContainer,
28
+ "data-testid": selectors.pages.Dashboard.SubMenu.submenuItem
29
+ }, /* @__PURE__ */ React.createElement(VariableLabel, {
30
+ variable,
31
+ layout,
32
+ hideLabel
33
+ }), /* @__PURE__ */ React.createElement(variable.Component, {
34
+ model: variable
35
+ }));
36
+ }
37
+ return /* @__PURE__ */ React.createElement("div", {
38
+ className: containerStyle,
39
+ "data-testid": selectors.pages.Dashboard.SubMenu.submenuItem
40
+ }, /* @__PURE__ */ React.createElement(VariableLabel, {
41
+ variable,
42
+ hideLabel
43
+ }), /* @__PURE__ */ React.createElement(variable.Component, {
44
+ model: variable
45
+ }));
46
+ }
47
+ function VariableLabel({ variable, layout, hideLabel }) {
48
+ var _a;
49
+ const { state } = variable;
50
+ if (variable.state.hide === VariableHide.hideLabel || hideLabel) {
51
+ return null;
52
+ }
53
+ const elementId = `var-${state.key}`;
54
+ const labelOrName = state.label || state.name;
55
+ return /* @__PURE__ */ React.createElement(ControlsLabel, {
56
+ htmlFor: elementId,
57
+ isLoading: state.loading,
58
+ onCancel: () => {
59
+ var _a2;
60
+ return (_a2 = variable.onCancel) == null ? void 0 : _a2.call(variable);
61
+ },
62
+ label: labelOrName,
63
+ error: state.error,
64
+ layout,
65
+ description: (_a = state.description) != null ? _a : void 0
66
+ });
67
+ }
68
+ const containerStyle = css({ display: "flex" });
69
+ const verticalContainer = css({ display: "flex", flexDirection: "column" });
70
+
71
+ export { VariableValueSelectWrapper, VariableValueSelectors };
72
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmFyaWFibGVWYWx1ZVNlbGVjdG9ycy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3ZhcmlhYmxlcy9jb21wb25lbnRzL1ZhcmlhYmxlVmFsdWVTZWxlY3RvcnMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IFZhcmlhYmxlSGlkZSB9IGZyb20gJ0BncmFmYW5hL2RhdGEnO1xuXG5pbXBvcnQgeyBTY2VuZU9iamVjdEJhc2UsIHVzZVNjZW5lT2JqZWN0U3RhdGUgfSBmcm9tICcuLi8uLi9jb3JlL1NjZW5lT2JqZWN0QmFzZSc7XG5pbXBvcnQgeyBzY2VuZUdyYXBoIH0gZnJvbSAnLi4vLi4vY29yZS9zY2VuZUdyYXBoJztcbmltcG9ydCB7IENvbnRyb2xzTGF5b3V0LCBTY2VuZUNvbXBvbmVudFByb3BzLCBTY2VuZU9iamVjdFN0YXRlIH0gZnJvbSAnLi4vLi4vY29yZS90eXBlcyc7XG5pbXBvcnQgeyBTY2VuZVZhcmlhYmxlLCBTY2VuZVZhcmlhYmxlU3RhdGUgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBDb250cm9sc0xhYmVsIH0gZnJvbSAnLi4vLi4vdXRpbHMvQ29udHJvbHNMYWJlbCc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9jc3MnO1xuaW1wb3J0IHsgc2VsZWN0b3JzIH0gZnJvbSAnQGdyYWZhbmEvZTJlLXNlbGVjdG9ycyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFyaWFibGVWYWx1ZVNlbGVjdG9yc1N0YXRlIGV4dGVuZHMgU2NlbmVPYmplY3RTdGF0ZSB7XG4gIGxheW91dD86IENvbnRyb2xzTGF5b3V0O1xufVxuXG5leHBvcnQgY2xhc3MgVmFyaWFibGVWYWx1ZVNlbGVjdG9ycyBleHRlbmRzIFNjZW5lT2JqZWN0QmFzZTxWYXJpYWJsZVZhbHVlU2VsZWN0b3JzU3RhdGU+IHtcbiAgcHVibGljIHN0YXRpYyBDb21wb25lbnQgPSBWYXJpYWJsZVZhbHVlU2VsZWN0b3JzUmVuZGVyZXI7XG59XG5cbmZ1bmN0aW9uIFZhcmlhYmxlVmFsdWVTZWxlY3RvcnNSZW5kZXJlcih7IG1vZGVsIH06IFNjZW5lQ29tcG9uZW50UHJvcHM8VmFyaWFibGVWYWx1ZVNlbGVjdG9ycz4pIHtcbiAgY29uc3QgdmFyaWFibGVzID0gc2NlbmVHcmFwaC5nZXRWYXJpYWJsZXMobW9kZWwpIS51c2VTdGF0ZSgpO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHt2YXJpYWJsZXMudmFyaWFibGVzLm1hcCgodmFyaWFibGUpID0+IChcbiAgICAgICAgPFZhcmlhYmxlVmFsdWVTZWxlY3RXcmFwcGVyIGtleT17dmFyaWFibGUuc3RhdGUua2V5fSB2YXJpYWJsZT17dmFyaWFibGV9IGxheW91dD17bW9kZWwuc3RhdGUubGF5b3V0fSAvPlxuICAgICAgKSl9XG4gICAgPC8+XG4gICk7XG59XG5cbmludGVyZmFjZSBWYXJpYWJsZVNlbGVjdFByb3BzIHtcbiAgbGF5b3V0PzogQ29udHJvbHNMYXlvdXQ7XG4gIHZhcmlhYmxlOiBTY2VuZVZhcmlhYmxlO1xuICAvKiogVG8gb3ZlcnJpZGUgaGlkZSBmcm9tIFZhcmlhYmxlVmFsdWVTZWxlY3RCeU5hbWUgICovXG4gIHNob3dBbHdheXM/OiBib29sZWFuO1xuICAvKiogVG8gcHJvdmlkZSBhbiBvcHRpb24gdG8gaGlkZSB0aGUgbGFiZWwgaW4gdGhlIHZhcmlhYmxlIHZhbHVlIHNlbGVjdG9yICovXG4gIGhpZGVMYWJlbD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBWYXJpYWJsZVZhbHVlU2VsZWN0V3JhcHBlcih7IHZhcmlhYmxlLCBsYXlvdXQsIHNob3dBbHdheXMsIGhpZGVMYWJlbCB9OiBWYXJpYWJsZVNlbGVjdFByb3BzKSB7XG4gIGNvbnN0IHN0YXRlID0gdXNlU2NlbmVPYmplY3RTdGF0ZTxTY2VuZVZhcmlhYmxlU3RhdGU+KHZhcmlhYmxlLCB7IHNob3VsZEFjdGl2YXRlT3JLZWVwQWxpdmU6IHRydWUgfSk7XG5cbiAgaWYgKHN0YXRlLmhpZGUgPT09IFZhcmlhYmxlSGlkZS5oaWRlVmFyaWFibGUgJiYgIXNob3dBbHdheXMpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmIChsYXlvdXQgPT09ICd2ZXJ0aWNhbCcpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9e3ZlcnRpY2FsQ29udGFpbmVyfSBkYXRhLXRlc3RpZD17c2VsZWN0b3JzLnBhZ2VzLkRhc2hib2FyZC5TdWJNZW51LnN1Ym1lbnVJdGVtfT5cbiAgICAgICAgPFZhcmlhYmxlTGFiZWwgdmFyaWFibGU9e3ZhcmlhYmxlfSBsYXlvdXQ9e2xheW91dH0gaGlkZUxhYmVsPXtoaWRlTGFiZWx9IC8+XG4gICAgICAgIDx2YXJpYWJsZS5Db21wb25lbnQgbW9kZWw9e3ZhcmlhYmxlfSAvPlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e2NvbnRhaW5lclN0eWxlfSBkYXRhLXRlc3RpZD17c2VsZWN0b3JzLnBhZ2VzLkRhc2hib2FyZC5TdWJNZW51LnN1Ym1lbnVJdGVtfT5cbiAgICAgIDxWYXJpYWJsZUxhYmVsIHZhcmlhYmxlPXt2YXJpYWJsZX0gaGlkZUxhYmVsPXtoaWRlTGFiZWx9IC8+XG4gICAgICA8dmFyaWFibGUuQ29tcG9uZW50IG1vZGVsPXt2YXJpYWJsZX0gLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gVmFyaWFibGVMYWJlbCh7IHZhcmlhYmxlLCBsYXlvdXQsIGhpZGVMYWJlbCB9OiBWYXJpYWJsZVNlbGVjdFByb3BzKSB7XG4gIGNvbnN0IHsgc3RhdGUgfSA9IHZhcmlhYmxlO1xuXG4gIGlmICh2YXJpYWJsZS5zdGF0ZS5oaWRlID09PSBWYXJpYWJsZUhpZGUuaGlkZUxhYmVsIHx8IGhpZGVMYWJlbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgZWxlbWVudElkID0gYHZhci0ke3N0YXRlLmtleX1gO1xuICBjb25zdCBsYWJlbE9yTmFtZSA9IHN0YXRlLmxhYmVsIHx8IHN0YXRlLm5hbWU7XG5cbiAgcmV0dXJuIChcbiAgICA8Q29udHJvbHNMYWJlbFxuICAgICAgaHRtbEZvcj17ZWxlbWVudElkfVxuICAgICAgaXNMb2FkaW5nPXtzdGF0ZS5sb2FkaW5nfVxuICAgICAgb25DYW5jZWw9eygpID0+IHZhcmlhYmxlLm9uQ2FuY2VsPy4oKX1cbiAgICAgIGxhYmVsPXtsYWJlbE9yTmFtZX1cbiAgICAgIGVycm9yPXtzdGF0ZS5lcnJvcn1cbiAgICAgIGxheW91dD17bGF5b3V0fVxuICAgICAgZGVzY3JpcHRpb249e3N0YXRlLmRlc2NyaXB0aW9uID8/IHVuZGVmaW5lZH1cbiAgICAvPlxuICApO1xufVxuXG5jb25zdCBjb250YWluZXJTdHlsZSA9IGNzcyh7IGRpc3BsYXk6ICdmbGV4JyB9KTtcbmNvbnN0IHZlcnRpY2FsQ29udGFpbmVyID0gY3NzKHsgZGlzcGxheTogJ2ZsZXgnLCBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyB9KTtcbiJdLCJuYW1lcyI6WyJfYSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFnQk8sTUFBTSwrQkFBK0IsZUFBNkMsQ0FBQTtBQUV6RixDQUFBO0FBRmEsc0JBQUEsQ0FDRyxTQUFZLEdBQUEsOEJBQUEsQ0FBQTtBQUc1QixTQUFTLDhCQUFBLENBQStCLEVBQUUsS0FBQSxFQUFzRCxFQUFBO0FBQzlGLEVBQUEsTUFBTSxTQUFZLEdBQUEsVUFBQSxDQUFXLFlBQWEsQ0FBQSxLQUFLLEVBQUcsUUFBUyxFQUFBLENBQUE7QUFFM0QsRUFBQSxpRUFFSyxTQUFVLENBQUEsU0FBQSxDQUFVLEdBQUksQ0FBQSxDQUFDLDZCQUN2QixLQUFBLENBQUEsYUFBQSxDQUFBLDBCQUFBLEVBQUE7QUFBQSxJQUEyQixHQUFBLEVBQUssU0FBUyxLQUFNLENBQUEsR0FBQTtBQUFBLElBQUssUUFBQTtBQUFBLElBQW9CLE1BQUEsRUFBUSxNQUFNLEtBQU0sQ0FBQSxNQUFBO0FBQUEs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
@@ -0,0 +1,15 @@
1
+ import { ALL_VARIABLE_VALUE, ALL_VARIABLE_TEXT } from '../constants.js';
2
+ import { getFuzzySearcher } from '../utils.js';
3
+
4
+ function getOptionSearcher(options, includeAll = false) {
5
+ let allOptions = options;
6
+ if (includeAll) {
7
+ allOptions = [{ value: ALL_VARIABLE_VALUE, label: ALL_VARIABLE_TEXT }, ...allOptions];
8
+ }
9
+ const haystack = allOptions.map((o) => o.label);
10
+ const fuzzySearch = getFuzzySearcher(haystack);
11
+ return (search) => fuzzySearch(search).map((i) => allOptions[i]);
12
+ }
13
+
14
+ export { getOptionSearcher };
15
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0T3B0aW9uU2VhcmNoZXIuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy92YXJpYWJsZXMvY29tcG9uZW50cy9nZXRPcHRpb25TZWFyY2hlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWYXJpYWJsZVZhbHVlT3B0aW9uIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgQUxMX1ZBUklBQkxFX1RFWFQsIEFMTF9WQVJJQUJMRV9WQUxVRSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBnZXRGdXp6eVNlYXJjaGVyIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0T3B0aW9uU2VhcmNoZXIob3B0aW9uczogVmFyaWFibGVWYWx1ZU9wdGlvbltdLCBpbmNsdWRlQWxsID0gZmFsc2UpIHtcbiAgbGV0IGFsbE9wdGlvbnMgPSBvcHRpb25zO1xuXG4gIGlmIChpbmNsdWRlQWxsKSB7XG4gICAgYWxsT3B0aW9ucyA9IFt7IHZhbHVlOiBBTExfVkFSSUFCTEVfVkFMVUUsIGxhYmVsOiBBTExfVkFSSUFCTEVfVEVYVCB9LCAuLi5hbGxPcHRpb25zXTtcbiAgfVxuXG4gIGNvbnN0IGhheXN0YWNrID0gYWxsT3B0aW9ucy5tYXAoKG8pID0+IG8ubGFiZWwpO1xuICBjb25zdCBmdXp6eVNlYXJjaCA9IGdldEZ1enp5U2VhcmNoZXIoaGF5c3RhY2spO1xuXG4gIHJldHVybiAoc2VhcmNoOiBzdHJpbmcpID0+IGZ1enp5U2VhcmNoKHNlYXJjaCkubWFwKChpKSA9PiBhbGxPcHRpb25zW2ldKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFJZ0IsU0FBQSxpQkFBQSxDQUFrQixPQUFnQyxFQUFBLFVBQUEsR0FBYSxLQUFPLEVBQUE7QUFDcEYsRUFBQSxJQUFJLFVBQWEsR0FBQSxPQUFBLENBQUE7QUFFakIsRUFBQSxJQUFJLFVBQVksRUFBQTtBQUNkLElBQWEsVUFBQSxHQUFBLENBQUMsRUFBRSxLQUFPLEVBQUEsa0JBQUEsRUFBb0IsT0FBTyxpQkFBa0IsRUFBQSxFQUFHLEdBQUcsVUFBVSxDQUFBLENBQUE7QUFBQSxHQUN0RjtBQUVBLEVBQUEsTUFBTSxXQUFXLFVBQVcsQ0FBQSxHQUFBLENBQUksQ0FBQyxDQUFBLEtBQU0sRUFBRSxLQUFLLENBQUEsQ0FBQTtBQUM5QyxFQUFNLE1BQUEsV0FBQSxHQUFjLGlCQUFpQixRQUFRLENBQUEsQ0FBQTtBQUU3QyxFQUFPLE9BQUEsQ0FBQyxXQUFtQixXQUFZLENBQUEsTUFBTSxFQUFFLEdBQUksQ0FBQSxDQUFDLENBQU0sS0FBQSxVQUFBLENBQVcsQ0FBRSxDQUFBLENBQUEsQ0FBQTtBQUN6RTs7OzsifQ==
@@ -0,0 +1,9 @@
1
+ const ALL_VARIABLE_TEXT = "All";
2
+ const ALL_VARIABLE_VALUE = "$__all";
3
+ const AUTO_VARIABLE_TEXT = "Auto";
4
+ const AUTO_VARIABLE_VALUE = "$__auto";
5
+ const VARIABLE_REGEX = /\$(\w+)|\[\[(\w+?)(?::(\w+))?\]\]|\${(\w+)(?:\.([^:^\}]+))?(?::([^\}]+))?}/g;
6
+ const SEARCH_FILTER_VARIABLE = "__searchFilter";
7
+
8
+ export { ALL_VARIABLE_TEXT, ALL_VARIABLE_VALUE, AUTO_VARIABLE_TEXT, AUTO_VARIABLE_VALUE, SEARCH_FILTER_VARIABLE, VARIABLE_REGEX };
9
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdmFyaWFibGVzL2NvbnN0YW50cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgQUxMX1ZBUklBQkxFX1RFWFQgPSAnQWxsJztcbmV4cG9ydCBjb25zdCBBTExfVkFSSUFCTEVfVkFMVUUgPSAnJF9fYWxsJztcbmV4cG9ydCBjb25zdCBOT05FX1ZBUklBQkxFX1RFWFQgPSAnTm9uZSc7XG5leHBvcnQgY29uc3QgTk9ORV9WQVJJQUJMRV9WQUxVRSA9ICcnO1xuZXhwb3J0IGNvbnN0IEFVVE9fVkFSSUFCTEVfVEVYVCA9ICdBdXRvJztcbmV4cG9ydCBjb25zdCBBVVRPX1ZBUklBQkxFX1ZBTFVFID0gJyRfX2F1dG8nO1xuXG4vLyBHcmFmYW5hIGNvcmUgc291cmNlOiBodHRwczovL2dpdGh1Yi5jb20vZ3JhZmFuYS9ncmFmYW5hL2Jsb2IvbWFpbi9wdWJsaWMvYXBwL2ZlYXR1cmVzL3ZhcmlhYmxlcy91dGlscy50cyNMMjNcbi8qXG4gKiBUaGlzIHJlZ2V4IG1hdGNoZXMgMyB0eXBlcyBvZiB2YXJpYWJsZSByZWZlcmVuY2Ugd2l0aCBhbiBvcHRpb25hbCBmb3JtYXQgc3BlY2lmaWVyXG4gKiBcXCQoXFx3KykgICAgICAgICAgICAgICAgICAgICAgICAgICR2YXIxXG4gKiBcXFtcXFsoXFx3Kz8pKD86OihcXHcrKSk/XFxdXFxdICAgICAgICBbW3ZhcjJdXSBvciBbW3ZhcjI6Zm10Ml1dXG4gKiBcXCR7KFxcdyspKD86OihcXHcrKSk/fSAgICAgICAgICAgICAke3ZhcjN9IG9yICR7dmFyMzpmbXQzfVxuICovXG5leHBvcnQgY29uc3QgVkFSSUFCTEVfUkVHRVggPSAvXFwkKFxcdyspfFxcW1xcWyhcXHcrPykoPzo6KFxcdyspKT9cXF1cXF18XFwkeyhcXHcrKSg/OlxcLihbXjpeXFx9XSspKT8oPzo6KFteXFx9XSspKT99L2c7XG5leHBvcnQgY29uc3QgU0VBUkNIX0ZJTFRFUl9WQVJJQUJMRSA9ICdfX3NlYXJjaEZpbHRlcic7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQU8sTUFBTSxpQkFBb0IsR0FBQSxNQUFBO0FBQzFCLE1BQU0sa0JBQXFCLEdBQUEsU0FBQTtBQUczQixNQUFNLGtCQUFxQixHQUFBLE9BQUE7QUFDM0IsTUFBTSxtQkFBc0IsR0FBQSxVQUFBO0FBUzVCLE1BQU0sY0FBaUIsR0FBQSw4RUFBQTtBQUN2QixNQUFNLHNCQUF5QixHQUFBOzs7OyJ9
@@ -0,0 +1,12 @@
1
+ import { isFiltersRequestEnricher } from '../core/types.js';
2
+
3
+ function getEnrichedFiltersRequest(sourceRunner) {
4
+ const root = sourceRunner.getRoot();
5
+ if (isFiltersRequestEnricher(root)) {
6
+ return root.enrichFiltersRequest(sourceRunner);
7
+ }
8
+ return null;
9
+ }
10
+
11
+ export { getEnrichedFiltersRequest };
12
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0RW5yaWNoZWRGaWx0ZXJzUmVxdWVzdC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3ZhcmlhYmxlcy9nZXRFbnJpY2hlZEZpbHRlcnNSZXF1ZXN0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGFTb3VyY2VHZXRUYWdLZXlzT3B0aW9ucywgRGF0YVNvdXJjZUdldFRhZ1ZhbHVlc09wdGlvbnMgfSBmcm9tICdAZ3JhZmFuYS9kYXRhJztcbmltcG9ydCB7IGlzRmlsdGVyc1JlcXVlc3RFbnJpY2hlciwgU2NlbmVPYmplY3QgfSBmcm9tICcuLi9jb3JlL3R5cGVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEVucmljaGVkRmlsdGVyc1JlcXVlc3QoXG4gIHNvdXJjZVJ1bm5lcjogU2NlbmVPYmplY3Rcbik6IFBhcnRpYWw8RGF0YVNvdXJjZUdldFRhZ0tleXNPcHRpb25zIHwgRGF0YVNvdXJjZUdldFRhZ1ZhbHVlc09wdGlvbnM+IHwgbnVsbCB7XG4gIGNvbnN0IHJvb3QgPSBzb3VyY2VSdW5uZXIuZ2V0Um9vdCgpO1xuXG4gIGlmIChpc0ZpbHRlcnNSZXF1ZXN0RW5yaWNoZXIocm9vdCkpIHtcbiAgICByZXR1cm4gcm9vdC5lbnJpY2hGaWx0ZXJzUmVxdWVzdChzb3VyY2VSdW5uZXIpO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFHTyxTQUFTLDBCQUNkLFlBQzZFLEVBQUE7QUFDN0UsRUFBTSxNQUFBLElBQUEsR0FBTyxhQUFhLE9BQVEsRUFBQSxDQUFBO0FBRWxDLEVBQUksSUFBQSx3QkFBQSxDQUF5QixJQUFJLENBQUcsRUFBQTtBQUNsQyxJQUFPLE9BQUEsSUFBQSxDQUFLLHFCQUFxQixZQUFZLENBQUEsQ0FBQTtBQUFBLEdBQy9DO0FBRUEsRUFBTyxPQUFBLElBQUEsQ0FBQTtBQUNUOzs7OyJ9