@grafana/scenes 6.7.0--canary.1091.14350229100.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 +25 -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,167 @@
1
+ import { locationService } from '@grafana/runtime';
2
+ import { SceneObjectStateChangedEvent } from '../core/events.js';
3
+ import { writeSceneLog } from '../utils/writeSceneLog.js';
4
+ import { Subscription } from 'rxjs';
5
+ import { UniqueUrlKeyMapper } from './UniqueUrlKeyMapper.js';
6
+ import { getUrlState, syncStateFromUrl, isUrlValueEqual } from './utils.js';
7
+ import { BusEventWithPayload } from '@grafana/data';
8
+ import { useMemo } from 'react';
9
+
10
+ var __accessCheck = (obj, member, msg) => {
11
+ if (!member.has(obj))
12
+ throw TypeError("Cannot " + msg);
13
+ };
14
+ var __privateGet = (obj, member, getter) => {
15
+ __accessCheck(obj, member, "read from private field");
16
+ return getter ? getter.call(obj) : member.get(obj);
17
+ };
18
+ var __privateAdd = (obj, member, value) => {
19
+ if (member.has(obj))
20
+ throw TypeError("Cannot add the same private member more than once");
21
+ member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
22
+ };
23
+ var __privateSet = (obj, member, value, setter) => {
24
+ __accessCheck(obj, member, "write to private field");
25
+ setter ? setter.call(obj, value) : member.set(obj, value);
26
+ return value;
27
+ };
28
+ var _cache, _location;
29
+ class NewSceneObjectAddedEvent extends BusEventWithPayload {
30
+ }
31
+ NewSceneObjectAddedEvent.type = "new-scene-object-added";
32
+ class UrlSyncManager {
33
+ constructor(_options = {}, locationService$1 = locationService) {
34
+ this._urlKeyMapper = new UniqueUrlKeyMapper();
35
+ this._options = _options;
36
+ this._locationService = locationService$1;
37
+ this._paramsCache = new UrlParamsCache(locationService$1);
38
+ }
39
+ initSync(root) {
40
+ var _a;
41
+ if (this._subs) {
42
+ writeSceneLog("UrlSyncManager", "Unregister previous scene state subscription", (_a = this._sceneRoot) == null ? void 0 : _a.state.key);
43
+ this._subs.unsubscribe();
44
+ }
45
+ writeSceneLog("UrlSyncManager", "init", root.state.key);
46
+ this._sceneRoot = root;
47
+ this._subs = new Subscription();
48
+ this._subs.add(
49
+ root.subscribeToEvent(SceneObjectStateChangedEvent, (evt) => {
50
+ this.handleSceneObjectStateChanged(evt.payload.changedObject);
51
+ })
52
+ );
53
+ this._subs.add(
54
+ root.subscribeToEvent(NewSceneObjectAddedEvent, (evt) => {
55
+ this.handleNewObject(evt.payload);
56
+ })
57
+ );
58
+ this._urlKeyMapper.clear();
59
+ this._lastLocation = this._locationService.getLocation();
60
+ this.handleNewObject(this._sceneRoot);
61
+ if (this._options.updateUrlOnInit) {
62
+ const urlState = getUrlState(root);
63
+ if (isUrlStateDifferent(urlState, this._paramsCache.getParams())) {
64
+ this._locationService.partial(urlState, true);
65
+ }
66
+ }
67
+ }
68
+ cleanUp(root) {
69
+ if (this._sceneRoot !== root) {
70
+ return;
71
+ }
72
+ writeSceneLog("UrlSyncManager", "Clean up");
73
+ if (this._subs) {
74
+ this._subs.unsubscribe();
75
+ this._subs = void 0;
76
+ writeSceneLog(
77
+ "UrlSyncManager",
78
+ "Root deactived, unsub to state",
79
+ "same key",
80
+ this._sceneRoot.state.key === root.state.key
81
+ );
82
+ }
83
+ this._sceneRoot = void 0;
84
+ this._lastLocation = void 0;
85
+ }
86
+ handleNewLocation(location) {
87
+ if (!this._sceneRoot || this._lastLocation === location) {
88
+ return;
89
+ }
90
+ writeSceneLog("UrlSyncManager", "handleNewLocation");
91
+ this._lastLocation = location;
92
+ syncStateFromUrl(this._sceneRoot, this._paramsCache.getParams(), this._urlKeyMapper);
93
+ }
94
+ handleNewObject(sceneObj) {
95
+ if (!this._sceneRoot) {
96
+ return;
97
+ }
98
+ syncStateFromUrl(sceneObj, this._paramsCache.getParams(), this._urlKeyMapper);
99
+ }
100
+ handleSceneObjectStateChanged(changedObject) {
101
+ var _a, _b;
102
+ if (!changedObject.urlSync) {
103
+ return;
104
+ }
105
+ const newUrlState = changedObject.urlSync.getUrlState();
106
+ const searchParams = this._locationService.getSearch();
107
+ const mappedUpdated = {};
108
+ for (const [key, newUrlValue] of Object.entries(newUrlState)) {
109
+ const uniqueKey = this._urlKeyMapper.getUniqueKey(key, changedObject);
110
+ const currentUrlValue = searchParams.getAll(uniqueKey);
111
+ if (!isUrlValueEqual(currentUrlValue, newUrlValue)) {
112
+ mappedUpdated[uniqueKey] = newUrlValue;
113
+ }
114
+ }
115
+ if (Object.keys(mappedUpdated).length > 0) {
116
+ const shouldCreateHistoryEntry = (_b = (_a = changedObject.urlSync).shouldCreateHistoryStep) == null ? void 0 : _b.call(_a, newUrlState);
117
+ const shouldReplace = shouldCreateHistoryEntry !== true;
118
+ writeSceneLog("UrlSyncManager", "onStateChange updating URL");
119
+ this._locationService.partial(mappedUpdated, shouldReplace);
120
+ this._lastLocation = this._locationService.getLocation();
121
+ }
122
+ }
123
+ getUrlState(root) {
124
+ return getUrlState(root);
125
+ }
126
+ }
127
+ class UrlParamsCache {
128
+ constructor(locationService) {
129
+ this.locationService = locationService;
130
+ __privateAdd(this, _cache, void 0);
131
+ __privateAdd(this, _location, void 0);
132
+ }
133
+ getParams() {
134
+ const location = this.locationService.getLocation();
135
+ if (__privateGet(this, _location) === location) {
136
+ return __privateGet(this, _cache);
137
+ }
138
+ __privateSet(this, _location, location);
139
+ __privateSet(this, _cache, new URLSearchParams(location.search));
140
+ return __privateGet(this, _cache);
141
+ }
142
+ }
143
+ _cache = new WeakMap();
144
+ _location = new WeakMap();
145
+ function isUrlStateDifferent(sceneUrlState, currentParams) {
146
+ for (let key in sceneUrlState) {
147
+ if (!isUrlValueEqual(currentParams.getAll(key), sceneUrlState[key])) {
148
+ return true;
149
+ }
150
+ }
151
+ return false;
152
+ }
153
+ function useUrlSyncManager(options, locationService) {
154
+ return useMemo(
155
+ () => new UrlSyncManager(
156
+ {
157
+ updateUrlOnInit: options.updateUrlOnInit,
158
+ createBrowserHistorySteps: options.createBrowserHistorySteps
159
+ },
160
+ locationService
161
+ ),
162
+ [options.updateUrlOnInit, options.createBrowserHistorySteps, locationService]
163
+ );
164
+ }
165
+
166
+ export { NewSceneObjectAddedEvent, UrlSyncManager, useUrlSyncManager };
167
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXJsU3luY01hbmFnZXIuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9VcmxTeW5jTWFuYWdlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ2hpc3RvcnknO1xuXG5pbXBvcnQgeyBMb2NhdGlvblNlcnZpY2UsIGxvY2F0aW9uU2VydmljZSBhcyBsb2NhdGlvblNlcnZpY2VSdW50aW1lIH0gZnJvbSAnQGdyYWZhbmEvcnVudGltZSc7XG5cbmltcG9ydCB7IFNjZW5lT2JqZWN0U3RhdGVDaGFuZ2VkRXZlbnQgfSBmcm9tICcuLi9jb3JlL2V2ZW50cyc7XG5pbXBvcnQgeyBTY2VuZU9iamVjdCwgU2NlbmVPYmplY3RVcmxWYWx1ZXMsIFNjZW5lVXJsU3luY09wdGlvbnMgfSBmcm9tICcuLi9jb3JlL3R5cGVzJztcbmltcG9ydCB7IHdyaXRlU2NlbmVMb2cgfSBmcm9tICcuLi91dGlscy93cml0ZVNjZW5lTG9nJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVW5pcXVlVXJsS2V5TWFwcGVyIH0gZnJvbSAnLi9VbmlxdWVVcmxLZXlNYXBwZXInO1xuaW1wb3J0IHsgZ2V0VXJsU3RhdGUsIGlzVXJsVmFsdWVFcXVhbCwgc3luY1N0YXRlRnJvbVVybCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgQnVzRXZlbnRXaXRoUGF5bG9hZCB9IGZyb20gJ0BncmFmYW5hL2RhdGEnO1xuaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGludGVyZmFjZSBVcmxTeW5jTWFuYWdlckxpa2Uge1xuICBpbml0U3luYyhyb290OiBTY2VuZU9iamVjdCk6IHZvaWQ7XG4gIGNsZWFuVXAocm9vdDogU2NlbmVPYmplY3QpOiB2b2lkO1xuICBoYW5kbGVOZXdMb2NhdGlvbihsb2NhdGlvbjogTG9jYXRpb24pOiB2b2lkO1xuICBoYW5kbGVOZXdPYmplY3Qoc2NlbmVPYmo6IFNjZW5lT2JqZWN0KTogdm9pZDtcbn1cblxuLyoqXG4gKiBOb3RpZnkgdGhlIHVybCBzeW5jIG1hbmFnZXIgb2YgYSBuZXcgb2JqZWN0IHRoYXQgaGFzIGJlZW4gYWRkZWQgdG8gdGhlIHNjZW5lXG4gKiB0aGF0IG5lZWRzIHRvIGluaXQgc3RhdGUgZnJvbSBVUkwuXG4gKi9cbmV4cG9ydCBjbGFzcyBOZXdTY2VuZU9iamVjdEFkZGVkRXZlbnQgZXh0ZW5kcyBCdXNFdmVudFdpdGhQYXlsb2FkPFNjZW5lT2JqZWN0PiB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgdHlwZSA9ICduZXctc2NlbmUtb2JqZWN0LWFkZGVkJztcbn1cblxuZXhwb3J0IGNsYXNzIFVybFN5bmNNYW5hZ2VyIGltcGxlbWVudHMgVXJsU3luY01hbmFnZXJMaWtlIHtcbiAgcHJpdmF0ZSBfdXJsS2V5TWFwcGVyID0gbmV3IFVuaXF1ZVVybEtleU1hcHBlcigpO1xuICBwcml2YXRlIF9zY2VuZVJvb3Q/OiBTY2VuZU9iamVjdDtcbiAgcHJpdmF0ZSBfc3ViczogU3Vic2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIF9sYXN0TG9jYXRpb246IExvY2F0aW9uIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIF9sb2NhdGlvblNlcnZpY2U6IExvY2F0aW9uU2VydmljZTtcbiAgcHJpdmF0ZSBfcGFyYW1zQ2FjaGU6IFVybFBhcmFtc0NhY2hlO1xuICBwcml2YXRlIF9vcHRpb25zOiBTY2VuZVVybFN5bmNPcHRpb25zO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihfb3B0aW9uczogU2NlbmVVcmxTeW5jT3B0aW9ucyA9IHt9LCBsb2NhdGlvblNlcnZpY2U6IExvY2F0aW9uU2VydmljZSA9IGxvY2F0aW9uU2VydmljZVJ1bnRpbWUpIHtcbiAgICB0aGlzLl9vcHRpb25zID0gX29wdGlvbnM7XG4gICAgdGhpcy5fbG9jYXRpb25TZXJ2aWNlID0gbG9jYXRpb25TZXJ2aWNlO1xuICAgIHRoaXMuX3BhcmFtc0NhY2hlID0gbmV3IFVybFBhcmFtc0NhY2hlKGxvY2F0aW9uU2VydmljZSk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgY3VycmVudCBzY2VuZSBzdGF0ZSB0byBtYXRjaCBVUkwgc3RhdGUuXG4gICAqL1xuICBwdWJsaWMgaW5pdFN5bmMocm9vdDogU2NlbmVPYmplY3QpIHtcbiAgICBpZiAodGhpcy5fc3Vicykge1xuICAgICAgd3JpdGVTY2VuZUxvZygnVXJsU3luY01hbmFnZXInLCAnVW5yZWdpc3RlciBwcmV2aW91cyBzY2VuZSBzdGF0ZSBzdWJzY3JpcHRpb24nLCB0aGlzLl9zY2VuZVJvb3Q/LnN0YXRlLmtleSk7XG4gICAgICB0aGlzLl9zdWJzLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgd3JpdGVTY2VuZUxvZygnVXJsU3luY01hbmFnZXInLCAnaW5pdCcsIHJvb3Quc3RhdGUua2V5KTtcblxuICAgIHRoaXMuX3NjZW5lUm9vdCA9IHJvb3Q7XG4gICAgdGhpcy5fc3VicyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIHRoaXMuX3N1YnMuYWRkKFxuICAgICAgcm9vdC5zdWJzY3JpYmVUb0V2ZW50KFNjZW5lT2JqZWN0U3RhdGVDaGFuZ2VkRXZlbnQsIChldnQpID0+IHtcbiAgICAgICAgdGhpcy5oYW5kbGVTY2VuZU9iamVjdFN0YXRlQ2hhbmdlZChldnQucGF5bG9hZC5jaGFuZ2VkT2JqZWN0KTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuX3N1YnMuYWRkKFxuICAgICAgcm9vdC5zdWJzY3JpYmVUb0V2ZW50KE5ld1NjZW5lT2JqZWN0QWRkZWRFdmVudCwgKGV2dCkgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZU5ld09iamVjdChldnQucGF5bG9hZCk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLl91cmxLZXlNYXBwZXIuY2xlYXIoKTtcbiAgICB0aGlzLl9sYXN0TG9jYXRpb24gPSB0aGlzLl9sb2NhdGlvblNlcnZpY2UuZ2V0TG9jYXRpb24oKTtcblxuICAgIC8vIFN5bmMgY3VycmVudCB1cmwgd2l0aCBzdGF0ZVxuICAgIHRoaXMuaGFuZGxlTmV3T2JqZWN0KHRoaXMuX3NjZW5lUm9vdCk7XG5cbiAgICBpZiAodGhpcy5fb3B0aW9ucy51cGRhdGVVcmxPbkluaXQpIHtcbiAgICAgIC8vIEdldCBjdXJyZW50IHVybCBzdGF0ZSBhbmQgdXBkYXRlIHVybCB0byBtYXRjaFxuICAgICAgY29uc3QgdXJsU3RhdGUgPSBnZXRVcmxTdGF0ZShyb290KTtcblxuICAgICAgaWYgKGlzVXJsU3RhdGVEaWZmZXJlbnQodXJsU3RhdGUsIHRoaXMuX3BhcmFtc0NhY2hlLmdldFBhcmFtcygpKSkge1xuICAgICAgICB0aGlzLl9sb2NhdGlvblNlcnZpY2UucGFydGlhbCh1cmxTdGF0ZSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNsZWFuVXAocm9vdDogU2NlbmVPYmplY3QpIHtcbiAgICAvLyBJZ25vcmUgdGhpcyBpZiB3ZSBoYXZlIGEgbmV3IG9yIGRpZmZlcmVudCByb290XG4gICAgaWYgKHRoaXMuX3NjZW5lUm9vdCAhPT0gcm9vdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHdyaXRlU2NlbmVMb2coJ1VybFN5bmNNYW5hZ2VyJywgJ0NsZWFuIHVwJyk7XG5cbiAgICBpZiAodGhpcy5fc3Vicykge1xuICAgICAgdGhpcy5fc3Vicy51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5fc3VicyA9IHVuZGVmaW5lZDtcblxuICAgICAgd3JpdGVTY2VuZUxvZyhcbiAgICAgICAgJ1VybFN5bmNNYW5hZ2VyJyxcbiAgICAgICAgJ1Jvb3QgZGVhY3RpdmVkLCB1bnN1YiB0byBzdGF0ZScsXG4gICAgICAgICdzYW1lIGtleScsXG4gICAgICAgIHRoaXMuX3NjZW5lUm9vdC5zdGF0ZS5rZXkgPT09IHJvb3Quc3RhdGUua2V5XG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuX3NjZW5lUm9vdCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLl9sYXN0TG9jYXRpb24gPSB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTmV3TG9jYXRpb24obG9jYXRpb246IExvY2F0aW9uKSB7XG4gICAgaWYgKCF0aGlzLl9zY2VuZVJvb3QgfHwgdGhpcy5fbGFzdExvY2F0aW9uID09PSBsb2NhdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHdyaXRlU2NlbmVMb2coJ1VybFN5bmNNYW5hZ2VyJywgJ2hhbmRsZU5ld0xvY2F0aW9uJyk7XG5cbiAgICB0aGlzLl9sYXN0TG9jYXRpb24gPSBsb2NhdGlvbjtcblxuICAgIC8vIFN5bmMgc2NlbmUgc3RhdGUgdHJlZSBmcm9tIHVybFxuICAgIHN5bmNTdGF0ZUZyb21VcmwodGhpcy5fc2NlbmVSb290ISwgdGhpcy5fcGFyYW1zQ2FjaGUuZ2V0UGFyYW1zKCksIHRoaXMuX3VybEtleU1hcHBlcik7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlTmV3T2JqZWN0KHNjZW5lT2JqOiBTY2VuZU9iamVjdCkge1xuICAgIGlmICghdGhpcy5fc2NlbmVSb290KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3luY1N0YXRlRnJvbVVybChzY2VuZU9iaiwgdGhpcy5fcGFyYW1zQ2FjaGUuZ2V0UGFyYW1zKCksIHRoaXMuX3VybEtleU1hcHBlcik7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVNjZW5lT2JqZWN0U3RhdGVDaGFuZ2VkKGNoYW5nZWRPYmplY3Q6IFNjZW5lT2JqZWN0KSB7XG4gICAgaWYgKCFjaGFuZ2VkT2JqZWN0LnVybFN5bmMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBuZXdVcmxTdGF0ZSA9IGNoYW5nZWRPYmplY3QudXJsU3luYy5nZXRVcmxTdGF0ZSgpO1xuXG4gICAgY29uc3Qgc2VhcmNoUGFyYW1zID0gdGhpcy5fbG9jYXRpb25TZXJ2aWNlLmdldFNlYXJjaCgpO1xuICAgIGNvbnN0IG1hcHBlZFVwZGF0ZWQ6IFNjZW5lT2JqZWN0VXJsVmFsdWVzID0ge307XG5cbiAgICBmb3IgKGNvbnN0IFtrZXksIG5ld1VybFZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhuZXdVcmxTdGF0ZSkpIHtcbiAgICAgIGNvbnN0IHVuaXF1ZUtleSA9IHRoaXMuX3VybEtleU1hcHBlci5nZXRVbmlxdWVLZXkoa2V5LCBjaGFuZ2VkT2JqZWN0KTtcbiAgICAgIGNvbnN0IGN1cnJlbnRVcmxWYWx1ZSA9IHNlYXJjaFBhcmFtcy5nZXRBbGwodW5pcXVlS2V5KTtcblxuICAgICAgaWYgKCFpc1VybFZhbHVlRXF1YWwoY3VycmVudFVybFZhbHVlLCBuZXdVcmxWYWx1ZSkpIHtcbiAgICAgICAgbWFwcGVkVXBkYXRlZFt1bmlxdWVLZXldID0gbmV3VXJsVmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKE9iamVjdC5rZXlzKG1hcHBlZFVwZGF0ZWQpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHNob3VsZENyZWF0ZUhpc3RvcnlFbnRyeSA9IGNoYW5nZWRPYmplY3QudXJsU3luYy5zaG91bGRDcmVhdGVIaXN0b3J5U3RlcD8uKG5ld1VybFN0YXRlKTtcbiAgICAgIGNvbnN0IHNob3VsZFJlcGxhY2UgPSBzaG91bGRDcmVhdGVIaXN0b3J5RW50cnkgIT09IHRydWU7XG5cbiAgICAgIHdyaXRlU2NlbmVMb2coJ1VybFN5bmNNYW5hZ2VyJywgJ29uU3RhdGVDaGFuZ2UgdXBkYXRpbmcgVVJMJyk7XG4gICAgICB0aGlzLl9sb2NhdGlvblNlcnZpY2UucGFydGlhbChtYXBwZWRVcGRhdGVkLCBzaG91bGRSZXBsYWNlKTtcblxuICAgICAgLy8vIE1hcmsgdGhlIGxvY2F0aW9uIGFscmVhZHkgaGFuZGxlZFxuICAgICAgdGhpcy5fbGFzdExvY2F0aW9uID0gdGhpcy5fbG9jYXRpb25TZXJ2aWNlLmdldExvY2F0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldFVybFN0YXRlKHJvb3Q6IFNjZW5lT2JqZWN0KTogU2NlbmVPYmplY3RVcmxWYWx1ZXMge1xuICAgIHJldHVybiBnZXRVcmxTdGF0ZShyb290KTtcbiAgfVxufVxuXG5jbGFzcyBVcmxQYXJhbXNDYWNoZSB7XG4gICNjYWNoZTogVVJMU2VhcmNoUGFyYW1zIHwgdW5kZWZpbmVkO1xuICAjbG9jYXRpb246IExvY2F0aW9uIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIGxvY2F0aW9uU2VydmljZTogTG9jYXRpb25TZXJ2aWNlKSB7fVxuXG4gIHB1YmxpYyBnZXRQYXJhbXMoKTogVVJMU2VhcmNoUGFyYW1zIHtcbiAgICBjb25zdCBsb2NhdGlvbiA9IHRoaXMubG9jYXRpb25TZXJ2aWNlLmdldExvY2F0aW9uKCk7XG5cbiAgICBpZiAodGhpcy4jbG9jYXRpb24gPT09IGxvY2F0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy4jY2FjaGUhO1xuICAgIH1cblxuICAgIHRoaXMuI2xvY2F0aW9uID0gbG9jYXRpb247XG4gICAgdGhpcy4jY2FjaGUgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKGxvY2F0aW9uLnNlYXJjaCk7XG5cbiAgICByZXR1cm4gdGhpcy4jY2FjaGU7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNVcmxTdGF0ZURpZmZlcmVudChzY2VuZVVybFN0YXRlOiBTY2VuZU9iamVjdFVybFZhbHVlcywgY3VycmVudFBhcmFtczogVVJMU2VhcmNoUGFyYW1zKSB7XG4gIGZvciAobGV0IGtleSBpbiBzY2VuZVVybFN0YXRlKSB7XG4gICAgaWYgKCFpc1VybFZhbHVlRXF1YWwoY3VycmVudFBhcmFtcy5nZXRBbGwoa2V5KSwgc2NlbmVVcmxTdGF0ZVtrZXldKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgbWVtb2l6ZWQgaW5zdGFuY2Ugb2YgdGhlIFVybFN5bmNNYW5hZ2VyIGJhc2VkIG9uIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVVybFN5bmNNYW5hZ2VyKG9wdGlvbnM6IFNjZW5lVXJsU3luY09wdGlvbnMsIGxvY2F0aW9uU2VydmljZTogTG9jYXRpb25TZXJ2aWNlKTogVXJsU3luY01hbmFnZXJMaWtlIHtcbiAgcmV0dXJuIHVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgIG5ldyBVcmxTeW5jTWFuYWdlcihcbiAgICAgICAge1xuICAgICAgICAgIHVwZGF0ZVVybE9uSW5pdDogb3B0aW9ucy51cGRhdGVVcmxPbkluaXQsXG4gICAgICAgICAgY3JlYXRlQnJvd3Nlckhpc3RvcnlTdGVwczogb3B0aW9ucy5jcmVhdGVCcm93c2VySGlzdG9yeVN0ZXBzLFxuICAgICAgICB9LFxuICAgICAgICBsb2NhdGlvblNlcnZpY2VcbiAgICAgICksXG4gICAgW29wdGlvbnMudXBkYXRlVXJsT25Jbml0LCBvcHRpb25zLmNyZWF0ZUJyb3dzZXJIaXN0b3J5U3RlcHMsIGxvY2F0aW9uU2VydmljZV1cbiAgKTtcbn1cbiJdLCJuYW1lcyI6WyJsb2NhdGlvblNlcnZpY2UiLCJsb2NhdGlvblNlcnZpY2VSdW50aW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBLE1BQUEsRUFBQSxTQUFBLENBQUE7QUF3Qk8sTUFBTSxpQ0FBaUMsbUJBQWlDLENBQUE7QUFFL0UsQ0FBQTtBQUZhLHdCQUFBLENBQ1ksSUFBTyxHQUFBLHdCQUFBLENBQUE7QUFHekIsTUFBTSxjQUE2QyxDQUFBO0FBQUEsRUFTakQsV0FBWSxDQUFBLFFBQUEsR0FBZ0MsRUFBQyxFQUFHQSxvQkFBbUNDLGVBQXdCLEVBQUE7QUFSbEgsSUFBUSxJQUFBLENBQUEsYUFBQSxHQUFnQixJQUFJLGtCQUFtQixFQUFBLENBQUE7QUFTN0MsSUFBQSxJQUFBLENBQUssUUFBVyxHQUFBLFFBQUEsQ0FBQTtBQUNoQixJQUFBLElBQUEsQ0FBSyxnQkFBbUIsR0FBQUQsaUJBQUEsQ0FBQTtBQUN4QixJQUFLLElBQUEsQ0FBQSxZQUFBLEdB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
@@ -0,0 +1,29 @@
1
+ import { useState, useEffect } from 'react';
2
+ import { useLocation } from 'react-router-dom';
3
+ import { writeSceneLog } from '../utils/writeSceneLog.js';
4
+ import { useUrlSyncManager } from './UrlSyncManager.js';
5
+ import { useLocationServiceSafe } from '../utils/utils.js';
6
+
7
+ function useUrlSync(sceneRoot, options = {}) {
8
+ const location = useLocation();
9
+ const locationService = useLocationServiceSafe();
10
+ const [isInitialized, setIsInitialized] = useState(false);
11
+ const urlSyncManager = useUrlSyncManager(options, locationService);
12
+ useEffect(() => {
13
+ urlSyncManager.initSync(sceneRoot);
14
+ setIsInitialized(true);
15
+ return () => urlSyncManager.cleanUp(sceneRoot);
16
+ }, [sceneRoot, urlSyncManager]);
17
+ useEffect(() => {
18
+ const latestLocation = locationService.getLocation();
19
+ const locationToHandle = latestLocation !== location ? latestLocation : location;
20
+ if (latestLocation !== location) {
21
+ writeSceneLog("useUrlSync", "latestLocation different from location");
22
+ }
23
+ urlSyncManager.handleNewLocation(locationToHandle);
24
+ }, [sceneRoot, urlSyncManager, location, locationService]);
25
+ return isInitialized;
26
+ }
27
+
28
+ export { useUrlSync };
29
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlVXJsU3luYy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NlcnZpY2VzL3VzZVVybFN5bmMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2NlbmVPYmplY3QsIFNjZW5lVXJsU3luY09wdGlvbnMgfSBmcm9tICcuLi9jb3JlL3R5cGVzJztcbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VMb2NhdGlvbiB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHsgd3JpdGVTY2VuZUxvZyB9IGZyb20gJy4uL3V0aWxzL3dyaXRlU2NlbmVMb2cnO1xuaW1wb3J0IHsgdXNlVXJsU3luY01hbmFnZXIgfSBmcm9tICcuL1VybFN5bmNNYW5hZ2VyJztcbmltcG9ydCB7IHVzZUxvY2F0aW9uU2VydmljZVNhZmUgfSBmcm9tICcuLi91dGlscy91dGlscyc7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VVcmxTeW5jKHNjZW5lUm9vdDogU2NlbmVPYmplY3QsIG9wdGlvbnM6IFNjZW5lVXJsU3luY09wdGlvbnMgPSB7fSk6IGJvb2xlYW4ge1xuICBjb25zdCBsb2NhdGlvbiA9IHVzZUxvY2F0aW9uKCk7XG4gIGNvbnN0IGxvY2F0aW9uU2VydmljZSA9IHVzZUxvY2F0aW9uU2VydmljZVNhZmUoKTtcbiAgY29uc3QgW2lzSW5pdGlhbGl6ZWQsIHNldElzSW5pdGlhbGl6ZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCB1cmxTeW5jTWFuYWdlciA9IHVzZVVybFN5bmNNYW5hZ2VyKG9wdGlvbnMsIGxvY2F0aW9uU2VydmljZSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICB1cmxTeW5jTWFuYWdlci5pbml0U3luYyhzY2VuZVJvb3QpO1xuICAgIHNldElzSW5pdGlhbGl6ZWQodHJ1ZSk7XG4gICAgcmV0dXJuICgpID0+IHVybFN5bmNNYW5hZ2VyLmNsZWFuVXAoc2NlbmVSb290KTtcbiAgfSwgW3NjZW5lUm9vdCwgdXJsU3luY01hbmFnZXJdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIFVzZSBsYXRlc3QgbG9jYXRpb24sIGFzIGJ5IHRoZSB0aW1lIHRoaXMgZWZmZWN0IHJ1bnMsIHRoZSBsb2NhdGlvbiBtaWdodCBoYXZlIGNoYW5nZWQgYWdhaW5cbiAgICBjb25zdCBsYXRlc3RMb2NhdGlvbiA9IGxvY2F0aW9uU2VydmljZS5nZXRMb2NhdGlvbigpO1xuICAgIGNvbnN0IGxvY2F0aW9uVG9IYW5kbGUgPSBsYXRlc3RMb2NhdGlvbiAhPT0gbG9jYXRpb24gPyBsYXRlc3RMb2NhdGlvbiA6IGxvY2F0aW9uO1xuXG4gICAgaWYgKGxhdGVzdExvY2F0aW9uICE9PSBsb2NhdGlvbikge1xuICAgICAgd3JpdGVTY2VuZUxvZygndXNlVXJsU3luYycsICdsYXRlc3RMb2NhdGlvbiBkaWZmZXJlbnQgZnJvbSBsb2NhdGlvbicpO1xuICAgIH1cblxuICAgIHVybFN5bmNNYW5hZ2VyLmhhbmRsZU5ld0xvY2F0aW9uKGxvY2F0aW9uVG9IYW5kbGUpO1xuICB9LCBbc2NlbmVSb290LCB1cmxTeW5jTWFuYWdlciwgbG9jYXRpb24sIGxvY2F0aW9uU2VydmljZV0pO1xuXG4gIHJldHVybiBpc0luaXRpYWxpemVkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVybFN5bmNDb250ZXh0UHJvdmlkZXJQcm9wcyB7XG4gIHNjZW5lOiBTY2VuZU9iamVjdDtcbiAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFPTyxTQUFTLFVBQVcsQ0FBQSxTQUFBLEVBQXdCLE9BQStCLEdBQUEsRUFBYSxFQUFBO0FBQzdGLEVBQUEsTUFBTSxXQUFXLFdBQVksRUFBQSxDQUFBO0FBQzdCLEVBQUEsTUFBTSxrQkFBa0Isc0JBQXVCLEVBQUEsQ0FBQTtBQUMvQyxFQUFBLE1BQU0sQ0FBQyxhQUFBLEVBQWUsZ0JBQWdCLENBQUEsR0FBSSxTQUFTLEtBQUssQ0FBQSxDQUFBO0FBQ3hELEVBQU0sTUFBQSxjQUFBLEdBQWlCLGlCQUFrQixDQUFBLE9BQUEsRUFBUyxlQUFlLENBQUEsQ0FBQTtBQUVqRSxFQUFBLFNBQUEsQ0FBVSxNQUFNO0FBQ2QsSUFBQSxjQUFBLENBQWUsU0FBUyxTQUFTLENBQUEsQ0FBQTtBQUNqQyxJQUFBLGdCQUFBLENBQWlCLElBQUksQ0FBQSxDQUFBO0FBQ3JCLElBQU8sT0FBQSxNQUFNLGNBQWUsQ0FBQSxPQUFBLENBQVEsU0FBUyxDQUFBLENBQUE7QUFBQSxHQUM1QyxFQUFBLENBQUMsU0FBVyxFQUFBLGNBQWMsQ0FBQyxDQUFBLENBQUE7QUFFOUIsRUFBQSxTQUFBLENBQVUsTUFBTTtBQUVkLElBQU0sTUFBQSxjQUFBLEdBQWlCLGdCQUFnQixXQUFZLEVBQUEsQ0FBQTtBQUNuRCxJQUFNLE1BQUEsZ0JBQUEsR0FBbUIsY0FBbUIsS0FBQSxRQUFBLEdBQVcsY0FBaUIsR0FBQSxRQUFBLENBQUE7QUFFeEUsSUFBQSxJQUFJLG1CQUFtQixRQUFVLEVBQUE7QUFDL0IsTUFBQSxhQUFBLENBQWMsY0FBYyx3Q0FBd0MsQ0FBQSxDQUFBO0FBQUEsS0FDdEU7QUFFQSxJQUFBLGNBQUEsQ0FBZSxrQkFBa0IsZ0JBQWdCLENBQUEsQ0FBQTtBQUFBLEtBQ2hELENBQUMsU0FBQSxFQUFXLGNBQWdCLEVBQUEsUUFBQSxFQUFVLGVBQWUsQ0FBQyxDQUFBLENBQUE7QUFFekQsRUFBTyxPQUFBLGFBQUEsQ0FBQTtBQUNUOzs7OyJ9
@@ -0,0 +1,75 @@
1
+ import { isEqual } from 'lodash';
2
+ import { UniqueUrlKeyMapper } from './UniqueUrlKeyMapper.js';
3
+
4
+ function getUrlState(root) {
5
+ const urlKeyMapper = new UniqueUrlKeyMapper();
6
+ const result = {};
7
+ const visitNode = (obj) => {
8
+ if (obj.urlSync) {
9
+ const newUrlState = obj.urlSync.getUrlState();
10
+ for (const [key, value] of Object.entries(newUrlState)) {
11
+ if (value != null) {
12
+ const uniqueKey = urlKeyMapper.getUniqueKey(key, obj);
13
+ result[uniqueKey] = value;
14
+ }
15
+ }
16
+ }
17
+ obj.forEachChild(visitNode);
18
+ };
19
+ visitNode(root);
20
+ return result;
21
+ }
22
+ function syncStateFromSearchParams(root, urlParams) {
23
+ const urlKeyMapper = new UniqueUrlKeyMapper();
24
+ syncStateFromUrl(root, urlParams, urlKeyMapper);
25
+ }
26
+ function syncStateFromUrl(root, urlParams, urlKeyMapper, onlyChildren) {
27
+ if (!onlyChildren) {
28
+ syncUrlStateToObject(root, urlParams, urlKeyMapper);
29
+ }
30
+ root.forEachChild((child) => {
31
+ syncUrlStateToObject(child, urlParams, urlKeyMapper);
32
+ });
33
+ root.forEachChild((child) => syncStateFromUrl(child, urlParams, urlKeyMapper, true));
34
+ }
35
+ function syncUrlStateToObject(sceneObject, urlParams, urlKeyMapper) {
36
+ if (sceneObject.urlSync) {
37
+ const urlState = {};
38
+ const currentState = sceneObject.urlSync.getUrlState();
39
+ for (const key of sceneObject.urlSync.getKeys()) {
40
+ const uniqueKey = urlKeyMapper.getUniqueKey(key, sceneObject);
41
+ const newValue = urlParams.getAll(uniqueKey);
42
+ const currentValue = currentState[key];
43
+ if (isUrlValueEqual(newValue, currentValue)) {
44
+ continue;
45
+ }
46
+ if (newValue.length > 0) {
47
+ if (Array.isArray(currentValue)) {
48
+ urlState[key] = newValue;
49
+ } else {
50
+ urlState[key] = newValue[0];
51
+ }
52
+ } else {
53
+ urlState[key] = null;
54
+ }
55
+ }
56
+ if (Object.keys(urlState).length > 0) {
57
+ sceneObject.urlSync.updateFromUrl(urlState);
58
+ }
59
+ }
60
+ }
61
+ function isUrlValueEqual(currentUrlValue, newUrlValue) {
62
+ if (currentUrlValue.length === 0 && newUrlValue == null) {
63
+ return true;
64
+ }
65
+ if (!Array.isArray(newUrlValue) && (currentUrlValue == null ? void 0 : currentUrlValue.length) === 1) {
66
+ return newUrlValue === currentUrlValue[0];
67
+ }
68
+ if ((newUrlValue == null ? void 0 : newUrlValue.length) === 0 && currentUrlValue === null) {
69
+ return true;
70
+ }
71
+ return isEqual(currentUrlValue, newUrlValue);
72
+ }
73
+
74
+ export { getUrlState, isUrlValueEqual, syncStateFromSearchParams, syncStateFromUrl };
75
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy91dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSAnbG9kYXNoJztcblxuaW1wb3J0IHsgU2NlbmVPYmplY3QsIFNjZW5lT2JqZWN0VXJsVmFsdWUsIFNjZW5lT2JqZWN0VXJsVmFsdWVzIH0gZnJvbSAnLi4vY29yZS90eXBlcyc7XG5pbXBvcnQgeyBVbmlxdWVVcmxLZXlNYXBwZXIgfSBmcm9tICcuL1VuaXF1ZVVybEtleU1hcHBlcic7XG5cbi8qKlxuICogQHBhcmFtIHJvb3RcbiAqIEByZXR1cm5zIHRoZSBmdWxsIHNjZW5lIHVybCBzdGF0ZSBhcyBhIG9iamVjdCB3aXRoIGtleXMgYW5kIHZhbHVlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VXJsU3RhdGUocm9vdDogU2NlbmVPYmplY3QpOiBTY2VuZU9iamVjdFVybFZhbHVlcyB7XG4gIGNvbnN0IHVybEtleU1hcHBlciA9IG5ldyBVbmlxdWVVcmxLZXlNYXBwZXIoKTtcbiAgY29uc3QgcmVzdWx0OiBTY2VuZU9iamVjdFVybFZhbHVlcyA9IHt9O1xuXG4gIGNvbnN0IHZpc2l0Tm9kZSA9IChvYmo6IFNjZW5lT2JqZWN0KSA9PiB7XG4gICAgaWYgKG9iai51cmxTeW5jKSB7XG4gICAgICBjb25zdCBuZXdVcmxTdGF0ZSA9IG9iai51cmxTeW5jLmdldFVybFN0YXRlKCk7XG5cbiAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG5ld1VybFN0YXRlKSkge1xuICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IHVuaXF1ZUtleSA9IHVybEtleU1hcHBlci5nZXRVbmlxdWVLZXkoa2V5LCBvYmopO1xuICAgICAgICAgIHJlc3VsdFt1bmlxdWVLZXldID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBvYmouZm9yRWFjaENoaWxkKHZpc2l0Tm9kZSk7XG4gIH07XG5cbiAgdmlzaXROb2RlKHJvb3QpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIEV4cG9ydGVkIHV0aWwgZnVuY3Rpb24gdG8gc3luYyBzdGF0ZSBmcm9tIGFuIGluaXRpYWwgdXJsIHN0YXRlLlxuICogVXNlZnVsIGZvciBpbml0aWFsaXppbmcgYW4gZW1iZWRkZWQgc2NlbmVzIHdpdGggYSB1cmwgc3RhdGUgc3RyaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3luY1N0YXRlRnJvbVNlYXJjaFBhcmFtcyhyb290OiBTY2VuZU9iamVjdCwgdXJsUGFyYW1zOiBVUkxTZWFyY2hQYXJhbXMpIHtcbiAgY29uc3QgdXJsS2V5TWFwcGVyID0gbmV3IFVuaXF1ZVVybEtleU1hcHBlcigpO1xuICBzeW5jU3RhdGVGcm9tVXJsKHJvb3QsIHVybFBhcmFtcywgdXJsS2V5TWFwcGVyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN5bmNTdGF0ZUZyb21VcmwoXG4gIHJvb3Q6IFNjZW5lT2JqZWN0LFxuICB1cmxQYXJhbXM6IFVSTFNlYXJjaFBhcmFtcyxcbiAgdXJsS2V5TWFwcGVyOiBVbmlxdWVVcmxLZXlNYXBwZXIsXG4gIG9ubHlDaGlsZHJlbj86IGJvb2xlYW5cbikge1xuICBpZiAoIW9ubHlDaGlsZHJlbikge1xuICAgIHN5bmNVcmxTdGF0ZVRvT2JqZWN0KHJvb3QsIHVybFBhcmFtcywgdXJsS2V5TWFwcGVyKTtcbiAgfVxuXG4gIC8vIFRoZXNlIHR3byBmb3JFYWNoQ2hpbGQgbG9vcHMgbWlnaHQgbG9vayBzdHJhbmdlIGJ1dCBpdCdzIHRvIG1ha2Ugc3VyZSB3ZSB3YWxrIHRocm91Z2ggdGhlIHNjZW5lIGdyYXBoIG9uZSBsZXZlbCBhdCBhIHRpbWUgYXMgdXJsIGtleSBjb25mbGljdHMgZGVwZW5kIGRlcHRoIGluIHRoZSBzY2VuZSB0cmVlXG4gIHJvb3QuZm9yRWFjaENoaWxkKChjaGlsZCkgPT4ge1xuICAgIHN5bmNVcmxTdGF0ZVRvT2JqZWN0KGNoaWxkLCB1cmxQYXJhbXMsIHVybEtleU1hcHBlcik7XG4gIH0pO1xuXG4gIHJvb3QuZm9yRWFjaENoaWxkKChjaGlsZCkgPT4gc3luY1N0YXRlRnJvbVVybChjaGlsZCwgdXJsUGFyYW1zLCB1cmxLZXlNYXBwZXIsIHRydWUpKTtcbn1cblxuZnVuY3Rpb24gc3luY1VybFN0YXRlVG9PYmplY3Qoc2NlbmVPYmplY3Q6IFNjZW5lT2JqZWN0LCB1cmxQYXJhbXM6IFVSTFNlYXJjaFBhcmFtcywgdXJsS2V5TWFwcGVyOiBVbmlxdWVVcmxLZXlNYXBwZXIpIHtcbiAgaWYgKHNjZW5lT2JqZWN0LnVybFN5bmMpIHtcbiAgICBjb25zdCB1cmxTdGF0ZTogU2NlbmVPYmplY3RVcmxWYWx1ZXMgPSB7fTtcbiAgICBjb25zdCBjdXJyZW50U3RhdGUgPSBzY2VuZU9iamVjdC51cmxTeW5jLmdldFVybFN0YXRlKCk7XG5cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBzY2VuZU9iamVjdC51cmxTeW5jLmdldEtleXMoKSkge1xuICAgICAgY29uc3QgdW5pcXVlS2V5ID0gdXJsS2V5TWFwcGVyLmdldFVuaXF1ZUtleShrZXksIHNjZW5lT2JqZWN0KTtcbiAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdXJsUGFyYW1zLmdldEFsbCh1bmlxdWVLZXkpO1xuICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gY3VycmVudFN0YXRlW2tleV07XG5cbiAgICAgIGlmIChpc1VybFZhbHVlRXF1YWwobmV3VmFsdWUsIGN1cnJlbnRWYWx1ZSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChuZXdWYWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGN1cnJlbnRWYWx1ZSkpIHtcbiAgICAgICAgICB1cmxTdGF0ZVtrZXldID0gbmV3VmFsdWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdXJsU3RhdGVba2V5XSA9IG5ld1ZhbHVlWzBdO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBtYXJrIHRoaXMga2V5IGFzIGhhdmluZyBubyB1cmwgc3RhdGVcbiAgICAgICAgdXJsU3RhdGVba2V5XSA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKE9iamVjdC5rZXlzKHVybFN0YXRlKS5sZW5ndGggPiAwKSB7XG4gICAgICBzY2VuZU9iamVjdC51cmxTeW5jLnVwZGF0ZUZyb21VcmwodXJsU3RhdGUpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNVcmxWYWx1ZUVxdWFsKGN1cnJlbnRVcmxWYWx1ZTogc3RyaW5nW10sIG5ld1VybFZhbHVlOiBTY2VuZU9iamVjdFVybFZhbHVlKTogYm9vbGVhbiB7XG4gIGlmIChjdXJyZW50VXJsVmFsdWUubGVuZ3RoID09PSAwICYmIG5ld1VybFZhbHVlID09IG51bGwpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmICghQXJyYXkuaXNBcnJheShuZXdVcmxWYWx1ZSkgJiYgY3VycmVudFVybFZhbHVlPy5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4gbmV3VXJsVmFsdWUgPT09IGN1cnJlbnRVcmxWYWx1ZVswXTtcbiAgfVxuXG4gIGlmIChuZXdVcmxWYWx1ZT8ubGVuZ3RoID09PSAwICYmIGN1cnJlbnRVcmxWYWx1ZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gV2UgaGF2ZSB0d28gYXJyYXlzLCBsZXRzIGNvbXBhcmUgdGhlbVxuICByZXR1cm4gaXNFcXVhbChjdXJyZW50VXJsVmFsdWUsIG5ld1VybFZhbHVlKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFTTyxTQUFTLFlBQVksSUFBeUMsRUFBQTtBQUNuRSxFQUFNLE1BQUEsWUFBQSxHQUFlLElBQUksa0JBQW1CLEVBQUEsQ0FBQTtBQUM1QyxFQUFBLE1BQU0sU0FBK0IsRUFBQyxDQUFBO0FBRXRDLEVBQU0sTUFBQSxT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
@@ -0,0 +1,107 @@
1
+ import React from 'react';
2
+ import { useStyles2, useTheme2, Tooltip, Icon, IconButton } from '@grafana/ui';
3
+ import { selectors } from '@grafana/e2e-selectors';
4
+ import { css } from '@emotion/css';
5
+ import { LoadingIndicator } from './LoadingIndicator.js';
6
+
7
+ function ControlsLabel(props) {
8
+ const styles = useStyles2(getStyles);
9
+ const theme = useTheme2();
10
+ const isVertical = props.layout === "vertical";
11
+ const loadingIndicator = Boolean(props.isLoading) ? /* @__PURE__ */ React.createElement("div", {
12
+ style: { marginLeft: theme.spacing(1), marginTop: "-1px" },
13
+ "aria-label": selectors.components.LoadingIndicator.icon
14
+ }, /* @__PURE__ */ React.createElement(LoadingIndicator, {
15
+ onCancel: (e) => {
16
+ var _a;
17
+ e.preventDefault();
18
+ e.stopPropagation();
19
+ (_a = props.onCancel) == null ? void 0 : _a.call(props);
20
+ }
21
+ })) : null;
22
+ let errorIndicator = null;
23
+ if (props.error) {
24
+ errorIndicator = /* @__PURE__ */ React.createElement(Tooltip, {
25
+ content: props.error,
26
+ placement: "bottom"
27
+ }, /* @__PURE__ */ React.createElement(Icon, {
28
+ className: styles.errorIcon,
29
+ name: "exclamation-triangle"
30
+ }));
31
+ }
32
+ let descriptionIndicator = null;
33
+ if (props.description) {
34
+ descriptionIndicator = /* @__PURE__ */ React.createElement(Tooltip, {
35
+ content: props.description,
36
+ placement: isVertical ? "top" : "bottom"
37
+ }, /* @__PURE__ */ React.createElement(Icon, {
38
+ className: styles.normalIcon,
39
+ name: "info-circle"
40
+ }));
41
+ }
42
+ const testId = typeof props.label === "string" ? selectors.pages.Dashboard.SubMenu.submenuItemLabels(props.label) : "";
43
+ let labelElement;
44
+ if (isVertical) {
45
+ labelElement = /* @__PURE__ */ React.createElement("label", {
46
+ className: styles.verticalLabel,
47
+ "data-testid": testId,
48
+ htmlFor: props.htmlFor
49
+ }, props.label, descriptionIndicator, errorIndicator, props.icon && /* @__PURE__ */ React.createElement(Icon, {
50
+ name: props.icon,
51
+ className: styles.normalIcon
52
+ }), loadingIndicator, props.onRemove && /* @__PURE__ */ React.createElement(IconButton, {
53
+ variant: "secondary",
54
+ size: "xs",
55
+ name: "times",
56
+ onClick: props.onRemove,
57
+ tooltip: "Remove"
58
+ }));
59
+ } else {
60
+ labelElement = /* @__PURE__ */ React.createElement("label", {
61
+ className: styles.horizontalLabel,
62
+ "data-testid": testId,
63
+ htmlFor: props.htmlFor
64
+ }, errorIndicator, props.icon && /* @__PURE__ */ React.createElement(Icon, {
65
+ name: props.icon,
66
+ className: styles.normalIcon
67
+ }), props.label, descriptionIndicator, loadingIndicator);
68
+ }
69
+ return labelElement;
70
+ }
71
+ const getStyles = (theme) => ({
72
+ horizontalLabel: css({
73
+ background: theme.isDark ? theme.colors.background.primary : theme.colors.background.secondary,
74
+ display: `flex`,
75
+ alignItems: "center",
76
+ padding: theme.spacing(0, 1),
77
+ fontWeight: theme.typography.fontWeightMedium,
78
+ fontSize: theme.typography.bodySmall.fontSize,
79
+ height: theme.spacing(theme.components.height.md),
80
+ lineHeight: theme.spacing(theme.components.height.md),
81
+ borderRadius: theme.shape.borderRadius(1),
82
+ border: `1px solid ${theme.components.input.borderColor}`,
83
+ position: "relative",
84
+ right: -1,
85
+ whiteSpace: "nowrap",
86
+ gap: theme.spacing(0.5)
87
+ }),
88
+ verticalLabel: css({
89
+ display: `flex`,
90
+ alignItems: "center",
91
+ fontWeight: theme.typography.fontWeightMedium,
92
+ fontSize: theme.typography.bodySmall.fontSize,
93
+ lineHeight: theme.typography.bodySmall.lineHeight,
94
+ whiteSpace: "nowrap",
95
+ marginBottom: theme.spacing(0.5),
96
+ gap: theme.spacing(1)
97
+ }),
98
+ errorIcon: css({
99
+ color: theme.colors.error.text
100
+ }),
101
+ normalIcon: css({
102
+ color: theme.colors.text.secondary
103
+ })
104
+ });
105
+
106
+ export { ControlsLabel };
107
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udHJvbHNMYWJlbC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWxzL0NvbnRyb2xzTGFiZWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBJY29uLCBJY29uQnV0dG9uLCBUb29sdGlwLCB1c2VTdHlsZXMyLCB1c2VUaGVtZTIgfSBmcm9tICdAZ3JhZmFuYS91aSc7XG5pbXBvcnQgeyBzZWxlY3RvcnMgfSBmcm9tICdAZ3JhZmFuYS9lMmUtc2VsZWN0b3JzJztcbmltcG9ydCB7IEdyYWZhbmFUaGVtZTIsIEljb25OYW1lIH0gZnJvbSAnQGdyYWZhbmEvZGF0YSc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9jc3MnO1xuaW1wb3J0IHsgTG9hZGluZ0luZGljYXRvciB9IGZyb20gJy4vTG9hZGluZ0luZGljYXRvcic7XG5pbXBvcnQgeyBDb250cm9sc0xheW91dCB9IGZyb20gJy4uL2NvcmUvdHlwZXMnO1xuXG5pbnRlcmZhY2UgQ29udHJvbHNMYWJlbFByb3BzIHtcbiAgbGFiZWw6IHN0cmluZztcbiAgaHRtbEZvcj86IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGlzTG9hZGluZz86IGJvb2xlYW47XG4gIGVycm9yPzogc3RyaW5nO1xuICBpY29uPzogSWNvbk5hbWU7XG4gIGxheW91dD86IENvbnRyb2xzTGF5b3V0O1xuICBvbkNhbmNlbD86ICgpID0+IHZvaWQ7XG4gIG9uUmVtb3ZlPzogKCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIENvbnRyb2xzTGFiZWwocHJvcHM6IENvbnRyb2xzTGFiZWxQcm9wcykge1xuICBjb25zdCBzdHlsZXMgPSB1c2VTdHlsZXMyKGdldFN0eWxlcyk7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUyKCk7XG4gIGNvbnN0IGlzVmVydGljYWwgPSBwcm9wcy5sYXlvdXQgPT09ICd2ZXJ0aWNhbCc7XG5cbiAgY29uc3QgbG9hZGluZ0luZGljYXRvciA9IEJvb2xlYW4ocHJvcHMuaXNMb2FkaW5nKSA/IChcbiAgICA8ZGl2XG4gICAgICBzdHlsZT17eyBtYXJnaW5MZWZ0OiB0aGVtZS5zcGFjaW5nKDEpLCBtYXJnaW5Ub3A6ICctMXB4JyB9fVxuICAgICAgYXJpYS1sYWJlbD17c2VsZWN0b3JzLmNvbXBvbmVudHMuTG9hZGluZ0luZGljYXRvci5pY29ufVxuICAgID5cbiAgICAgIDxMb2FkaW5nSW5kaWNhdG9yXG4gICAgICAgIG9uQ2FuY2VsPXsoZSkgPT4ge1xuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHByb3BzLm9uQ2FuY2VsPy4oKTtcbiAgICAgICAgfX1cbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gICkgOiBudWxsO1xuXG4gIGxldCBlcnJvckluZGljYXRvciA9IG51bGw7XG4gIGlmIChwcm9wcy5lcnJvcikge1xuICAgIGVycm9ySW5kaWNhdG9yID0gKFxuICAgICAgPFRvb2x0aXAgY29udGVudD17cHJvcHMuZXJyb3J9IHBsYWNlbWVudD17J2JvdHRvbSd9PlxuICAgICAgICA8SWNvbiBjbGFzc05hbWU9e3N0eWxlcy5lcnJvckljb259IG5hbWU9XCJleGNsYW1hdGlvbi10cmlhbmdsZVwiIC8+XG4gICAgICA8L1Rvb2x0aXA+XG4gICAgKTtcbiAgfVxuXG4gIGxldCBkZXNjcmlwdGlvbkluZGljYXRvciA9IG51bGw7XG4gIGlmIChwcm9wcy5kZXNjcmlwdGlvbikge1xuICAgIGRlc2NyaXB0aW9uSW5kaWNhdG9yID0gKFxuICAgICAgPFRvb2x0aXAgY29udGVudD17cHJvcHMuZGVzY3JpcHRpb259IHBsYWNlbWVudD17aXNWZXJ0aWNhbCA/ICd0b3AnIDogJ2JvdHRvbSd9PlxuICAgICAgICA8SWNvbiBjbGFzc05hbWU9e3N0eWxlcy5ub3JtYWxJY29ufSBuYW1lPVwiaW5mby1jaXJjbGVcIiAvPlxuICAgICAgPC9Ub29sdGlwPlxuICAgICk7XG4gIH1cblxuICBjb25zdCB0ZXN0SWQgPVxuICAgIHR5cGVvZiBwcm9wcy5sYWJlbCA9PT0gJ3N0cmluZycgPyBzZWxlY3RvcnMucGFnZXMuRGFzaGJvYXJkLlN1Yk1lbnUuc3VibWVudUl0ZW1MYWJlbHMocHJvcHMubGFiZWwpIDogJyc7XG4gIGxldCBsYWJlbEVsZW1lbnQ6IEpTWC5FbGVtZW50O1xuXG4gIC8vIFRoZSB2ZXJ0aWNhbCBsYXlvdXQgaGFzIGRpZmZlcmVudCBjc3MgY2xhc3MgYW5kIG9yZGVyIG9mIGVsZW1lbnRzIChsYWJlbCBhbHdheXMgZmlyc3QpXG5cbiAgaWYgKGlzVmVydGljYWwpIHtcbiAgICBsYWJlbEVsZW1lbnQgPSAoXG4gICAgICA8bGFiZWwgY2xhc3NOYW1lPXtzdHlsZXMudmVydGljYWxMYWJlbH0gZGF0YS10ZXN0aWQ9e3Rlc3RJZH0gaHRtbEZvcj17cHJvcHMuaHRtbEZvcn0+XG4gICAgICAgIHtwcm9wcy5sYWJlbH1cbiAgICAgICAge2Rlc2NyaXB0aW9uSW5kaWNhdG9yfVxuICAgICAgICB7ZXJyb3JJbmRpY2F0b3J9XG4gICAgICAgIHtwcm9wcy5pY29uICYmIDxJY29uIG5hbWU9e3Byb3BzLmljb259IGNsYXNzTmFtZT17c3R5bGVzLm5vcm1hbEljb259IC8+fVxuICAgICAgICB7bG9hZGluZ0luZGljYXRvcn1cbiAgICAgICAge3Byb3BzLm9uUmVtb3ZlICYmIChcbiAgICAgICAgICA8SWNvbkJ1dHRvbiB2YXJpYW50PVwic2Vjb25kYXJ5XCIgc2l6ZT1cInhzXCIgbmFtZT1cInRpbWVzXCIgb25DbGljaz17cHJvcHMub25SZW1vdmV9IHRvb2x0aXA9eydSZW1vdmUnfSAvPlxuICAgICAgICApfVxuICAgICAgPC9sYWJlbD5cbiAgICApO1xuICB9IGVsc2Uge1xuICAgIGxhYmVsRWxlbWVudCA9IChcbiAgICAgIDxsYWJlbCBjbGFzc05hbWU9e3N0eWxlcy5ob3Jpem9udGFsTGFiZWx9IGRhdGEtdGVzdGlkPXt0ZXN0SWR9IGh0bWxGb3I9e3Byb3BzLmh0bWxGb3J9PlxuICAgICAgICB7ZXJyb3JJbmRpY2F0b3J9XG4gICAgICAgIHtwcm9wcy5pY29uICYmIDxJY29uIG5hbWU9e3Byb3BzLmljb259IGNsYXNzTmFtZT17c3R5bGVzLm5vcm1hbEljb259IC8+fVxuICAgICAgICB7cHJvcHMubGFiZWx9XG4gICAgICAgIHtkZXNjcmlwdGlvbkluZGljYXRvcn1cbiAgICAgICAge2xvYWRpbmdJbmRpY2F0b3J9XG4gICAgICA8L2xhYmVsPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gbGFiZWxFbGVtZW50O1xufVxuXG5jb25zdCBnZXRTdHlsZXMgPSAodGhlbWU6IEdyYWZhbmFUaGVtZTIpID0+ICh7XG4gIGhvcml6b250YWxMYWJlbDogY3NzKHtcbiAgICBiYWNrZ3JvdW5kOiB0aGVtZS5pc0RhcmsgPyB0aGVtZS5jb2xvcnMuYmFja2dyb3VuZC5wcmltYXJ5IDogdGhlbWUuY29sb3JzLmJhY2tncm91bmQuc2Vjb25kYXJ5LFxuICAgIGRpc3BsYXk6IGBmbGV4YCxcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICBwYWRkaW5nOiB0aGVtZS5zcGFjaW5nKDAsIDEpLFxuICAgIGZvbnRXZWlnaHQ6IHRoZW1lLnR5cG9ncmFwaHkuZm9udFdlaWdodE1lZGl1bSxcbiAgICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5ib2R5U21hbGwuZm9udFNpemUsXG4gICAgaGVpZ2h0OiB0aGVtZS5zcGFjaW5nKHRoZW1lLmNvbXBvbmVudHMuaGVpZ2h0Lm1kKSxcbiAgICBsaW5lSGVpZ2h0OiB0aGVtZS5zcGFjaW5nKHRoZW1lLmNvbXBvbmVudHMuaGVpZ2h0Lm1kKSxcbiAgICBib3JkZXJSYWRpdXM6IHRoZW1lLnNoYXBlLmJvcmRlclJhZGl1cygxKSxcbiAgICBib3JkZXI6IGAxcHggc29saWQgJHt0aGVtZS5jb21wb25lbnRzLmlucHV0LmJvcmRlckNvbG9yfWAsXG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgLy8gVG8gbWFrZSB0aGUgYm9yZGVyIGxpbmUgdXAgd2l0aCB0aGUgaW5wdXQgYm9yZGVyXG4gICAgcmlnaHQ6IC0xLFxuICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxuICAgIGdhcDogdGhlbWUuc3BhY2luZygwLjUpLFxuICB9KSxcbiAgdmVydGljYWxMYWJlbDogY3NzKHtcbiAgICBkaXNwbGF5OiBgZmxleGAsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgZm9udFdlaWdodDogdGhlbWUudHlwb2dyYXBoeS5mb250V2VpZ2h0TWVkaXVtLFxuICAgIGZvbnRTaXplOiB0aGVtZS50eXBvZ3JhcGh5LmJvZHlTbWFsbC5mb250U2l6ZSxcbiAgICBsaW5lSGVpZ2h0OiB0aGVtZS50eXBvZ3JhcGh5LmJvZHlTbWFsbC5saW5lSGVpZ2h0LFxuICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxuICAgIG1hcmdpbkJvdHRvbTogdGhlbWUuc3BhY2luZygwLjUpLFxuICAgIGdhcDogdGhlbWUuc3BhY2luZygxKSxcbiAgfSksXG4gIGVycm9ySWNvbjogY3NzKHtcbiAgICBjb2xvcjogdGhlbWUuY29sb3JzLmVycm9yLnRleHQsXG4gIH0pLFxuICBub3JtYWxJY29uOiBjc3Moe1xuICAgIGNvbG9yOiB0aGVtZS5jb2xvcnMudGV4dC5zZWNvbmRhcnksXG4gIH0pLFxufSk7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBb0JPLFNBQVMsY0FBYyxLQUEyQixFQUFBO0FBQ3ZELEVBQU0sTUFBQSxNQUFBLEdBQVMsV0FBVyxTQUFTLENBQUEsQ0FBQTtBQUNuQyxFQUFBLE1BQU0sUUFBUSxTQUFVLEVBQUEsQ0FBQTtBQUN4QixFQUFNLE1BQUEsVUFBQSxHQUFhLE1BQU0sTUFBVyxLQUFBLFVBQUEsQ0FBQTtBQUVwQyxFQUFBLE1BQU0sZ0JBQW1CLEdBQUEsT0FBQSxDQUFRLEtBQU0sQ0FBQSxTQUFTLG9CQUM3QyxLQUFBLENBQUEsYUFBQSxDQUFBLEtBQUEsRUFBQTtBQUFBLElB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
@@ -0,0 +1,19 @@
1
+ import { Tooltip, Icon } from '@grafana/ui';
2
+ import React from 'react';
3
+
4
+ function LoadingIndicator(props) {
5
+ return /* @__PURE__ */ React.createElement(Tooltip, {
6
+ content: "Cancel query"
7
+ }, /* @__PURE__ */ React.createElement(Icon, {
8
+ className: "spin-clockwise",
9
+ name: "sync",
10
+ size: "xs",
11
+ role: "button",
12
+ onMouseDown: (e) => {
13
+ props.onCancel(e);
14
+ }
15
+ }));
16
+ }
17
+
18
+ export { LoadingIndicator };
19
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9hZGluZ0luZGljYXRvci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWxzL0xvYWRpbmdJbmRpY2F0b3IudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEljb24sIFRvb2x0aXAgfSBmcm9tICdAZ3JhZmFuYS91aSc7XG5pbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBMb2FkaW5nSW5kaWNhdG9yUHJvcHMgYXMgU2VsZWN0TG9hZGluZ0luZGljYXRvclByb3BzIH0gZnJvbSAncmVhY3Qtc2VsZWN0JztcblxuZXhwb3J0IGNvbnN0IFNlbGVjdExvYWRpbmdJbmRpY2F0b3IgPSAoe1xuICBpbm5lclByb3BzLFxuICAuLi5wcm9wc1xufTogU2VsZWN0TG9hZGluZ0luZGljYXRvclByb3BzICYgeyBzZWxlY3RQcm9wczogeyBvbkNhbmNlbDogKCkgPT4gdm9pZCB9IH0pID0+IHtcbiAgY29uc3QgeyBvbkNhbmNlbCB9ID0gcHJvcHMuc2VsZWN0UHJvcHM7XG4gIGNvbnN0IG9uTW91c2VEb3duID0gdXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBvbkNhbmNlbCgpO1xuICAgIH0sXG4gICAgW29uQ2FuY2VsXVxuICApO1xuXG4gIHJldHVybiA8TG9hZGluZ0luZGljYXRvciBvbkNhbmNlbD17b25Nb3VzZURvd259IC8+O1xufTtcblxuaW50ZXJmYWNlIExvYWRpbmdJbmRpY2F0b3JQcm9wcyB7XG4gIG9uQ2FuY2VsOiAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBMb2FkaW5nSW5kaWNhdG9yKHByb3BzOiBMb2FkaW5nSW5kaWNhdG9yUHJvcHMpIHtcbiAgcmV0dXJuIChcbiAgICA8VG9vbHRpcCBjb250ZW50PVwiQ2FuY2VsIHF1ZXJ5XCI+XG4gICAgICA8SWNvblxuICAgICAgICBjbGFzc05hbWU9XCJzcGluLWNsb2Nrd2lzZVwiXG4gICAgICAgIG5hbWU9XCJzeW5jXCJcbiAgICAgICAgc2l6ZT1cInhzXCJcbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgIG9uTW91c2VEb3duPXsoZSkgPT4ge1xuICAgICAgICAgIHByb3BzLm9uQ2FuY2VsKGUpO1xuICAgICAgICB9fVxuICAgICAgLz5cbiAgICA8L1Rvb2x0aXA+XG4gICk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBeUJPLFNBQVMsaUJBQWlCLEtBQThCLEVBQUE7QUFDN0QsRUFBQSx1QkFDRyxLQUFBLENBQUEsYUFBQSxDQUFBLE9BQUEsRUFBQTtBQUFBLElBQVEsT0FBUSxFQUFBLGNBQUE7QUFBQSxHQUFBLGtCQUNkLEtBQUEsQ0FBQSxhQUFBLENBQUEsSUFBQSxFQUFBO0FBQUEsSUFDQyxTQUFVLEVBQUEsZ0JBQUE7QUFBQSxJQUNWLElBQUssRUFBQSxNQUFBO0FBQUEsSUFDTCxJQUFLLEVBQUEsSUFBQTtBQUFBLElBQ0wsSUFBSyxFQUFBLFFBQUE7QUFBQSxJQUNMLFdBQUEsRUFBYSxDQUFDLENBQU0sS0FBQTtBQUNsQixNQUFBLEtBQUEsQ0FBTSxTQUFTLENBQUMsQ0FBQSxDQUFBO0FBQUEsS0FDbEI7QUFBQSxHQUNGLENBQ0YsQ0FBQSxDQUFBO0FBRUo7Ozs7In0=
@@ -0,0 +1,39 @@
1
+ var __accessCheck = (obj, member, msg) => {
2
+ if (!member.has(obj))
3
+ throw TypeError("Cannot " + msg);
4
+ };
5
+ var __privateGet = (obj, member, getter) => {
6
+ __accessCheck(obj, member, "read from private field");
7
+ return getter ? getter.call(obj) : member.get(obj);
8
+ };
9
+ var __privateAdd = (obj, member, value) => {
10
+ if (member.has(obj))
11
+ throw TypeError("Cannot add the same private member more than once");
12
+ member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
13
+ };
14
+ var __privateSet = (obj, member, value, setter) => {
15
+ __accessCheck(obj, member, "write to private field");
16
+ setter ? setter.call(obj, value) : member.set(obj, value);
17
+ return value;
18
+ };
19
+ var _value;
20
+ class SafeSerializableSceneObject {
21
+ constructor(value) {
22
+ __privateAdd(this, _value, void 0);
23
+ this.text = "__sceneObject";
24
+ this.valueOf = () => {
25
+ return __privateGet(this, _value);
26
+ };
27
+ __privateSet(this, _value, value);
28
+ }
29
+ toString() {
30
+ return void 0;
31
+ }
32
+ get value() {
33
+ return this;
34
+ }
35
+ }
36
+ _value = new WeakMap();
37
+
38
+ export { SafeSerializableSceneObject };
39
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2FmZVNlcmlhbGl6YWJsZVNjZW5lT2JqZWN0LmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbHMvU2FmZVNlcmlhbGl6YWJsZVNjZW5lT2JqZWN0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNjb3BlZFZhciB9IGZyb20gJ0BncmFmYW5hL2RhdGEnO1xuaW1wb3J0IHsgU2NlbmVPYmplY3QgfSBmcm9tICcuLi9jb3JlL3R5cGVzJztcblxuZXhwb3J0IGNsYXNzIFNhZmVTZXJpYWxpemFibGVTY2VuZU9iamVjdCBpbXBsZW1lbnRzIFNjb3BlZFZhciB7XG4gICN2YWx1ZTogU2NlbmVPYmplY3Q7XG5cbiAgcHVibGljIHRleHQgPSAnX19zY2VuZU9iamVjdCc7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHZhbHVlOiBTY2VuZU9iamVjdCkge1xuICAgIHRoaXMuI3ZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHB1YmxpYyB2YWx1ZU9mID0gKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLiN2YWx1ZTtcbiAgfTtcblxuICBwdWJsaWMgZ2V0IHZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQSxNQUFBLENBQUE7QUFHTyxNQUFNLDJCQUFpRCxDQUFBO0FBQUEsRUFLckQsWUFBWSxLQUFvQixFQUFBO0FBSnZDLElBQUEsWUFBQSxDQUFBLElBQUEsRUFBQSxNQUFBLEVBQUEsS0FBQSxDQUFBLENBQUEsQ0FBQTtBQUVBLElBQUEsSUFBQSxDQUFPLElBQU8sR0FBQSxlQUFBLENBQUE7QUFVZCxJQUFBLElBQUEsQ0FBTyxVQUFVLE1BQU07QUFDckIsTUFBQSxPQUFPLFlBQUssQ0FBQSxJQUFBLEVBQUEsTUFBQSxDQUFBLENBQUE7QUFBQSxLQUNkLENBQUE7QUFURSxJQUFBLFlBQUEsQ0FBQSxJQUFBLEVBQUssTUFBUyxFQUFBLEtBQUEsQ0FBQSxDQUFBO0FBQUEsR0FDaEI7QUFBQSxFQUVPLFFBQVcsR0FBQTtBQUNoQixJQUFPLE9BQUEsS0FBQSxDQUFBLENBQUE7QUFBQSxHQUNUO0FBQUEsRUFNQSxJQUFXLEtBQVEsR0FBQTtBQUNqQixJQUFPLE9BQUEsSUFBQSxDQUFBO0FBQUEsR0FDVDtBQUNGLENBQUE7QUFuQkUsTUFBQSxHQUFBLElBQUEsT0FBQSxFQUFBOzs7OyJ9
@@ -0,0 +1,16 @@
1
+ import { writeSceneLog } from '../writeSceneLog.js';
2
+
3
+ function setWindowGrafanaSceneContext(activeScene) {
4
+ const prevScene = window.__grafanaSceneContext;
5
+ writeSceneLog("setWindowGrafanaScene", "set window.__grafanaSceneContext", activeScene);
6
+ window.__grafanaSceneContext = activeScene;
7
+ return () => {
8
+ if (window.__grafanaSceneContext === activeScene) {
9
+ writeSceneLog("setWindowGrafanaScene", "restore window.__grafanaSceneContext", prevScene);
10
+ window.__grafanaSceneContext = prevScene;
11
+ }
12
+ };
13
+ }
14
+
15
+ export { setWindowGrafanaSceneContext };
16
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0V2luZG93R3JhZmFuYVNjZW5lQ29udGV4dC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3V0aWxzL2NvbXBhdGliaWxpdHkvc2V0V2luZG93R3JhZmFuYVNjZW5lQ29udGV4dC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY2VuZU9iamVjdCB9IGZyb20gJy4uLy4uL2NvcmUvdHlwZXMnO1xuaW1wb3J0IHsgd3JpdGVTY2VuZUxvZyB9IGZyb20gJy4uL3dyaXRlU2NlbmVMb2cnO1xuXG4vKipcbiAqIEFkZHMgdGhlIHNjZW5lIG9iamVjdCB0byB0aGUgZ2xvYmFsIHdpbmRvdyBzdGF0ZSBzbyB0aGF0IHRlbXBsYXRlU3J2IGluIGNvcmUgY2FuIGludGVycG9sYXRlIHN0cmluZ3MgdXNpbmcgdGhlIHNjZW5lIGludGVycG9sYXRpb24gZW5naW5lIHdpdGggdGhlIHNjZW5lIGFzIHNjb3BlLlxuICogVGhpcyBpcyBuZWVkZWQgZm9yIG9sZCBkYXRhc291cmNlcyB0aGF0IGNhbGwgdGVtcGxhdGVTcnYucmVwbGFjZSB3aXRob3V0IHBhc3Npbmcgc2NvcGVkVmFycy4gRm9yIGV4YW1wbGUgaW4gRGF0YVNvdXJjZUFQSS5tZXRyaWNGaW5kUXVlcnkuXG4gKlxuICogVGhpcyBpcyBhbHNvIHVzZWQgZnJvbSBUaW1lU3J2IHRvIGFjY2VzcyBzY2VuZSB0aW1lIHJhbmdlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0V2luZG93R3JhZmFuYVNjZW5lQ29udGV4dChhY3RpdmVTY2VuZTogU2NlbmVPYmplY3QpIHtcbiAgY29uc3QgcHJldlNjZW5lID0gKHdpbmRvdyBhcyBhbnkpLl9fZ3JhZmFuYVNjZW5lQ29udGV4dDtcblxuICB3cml0ZVNjZW5lTG9nKCdzZXRXaW5kb3dHcmFmYW5hU2NlbmUnLCAnc2V0IHdpbmRvdy5fX2dyYWZhbmFTY2VuZUNvbnRleHQnLCBhY3RpdmVTY2VuZSk7XG4gICh3aW5kb3cgYXMgYW55KS5fX2dyYWZhbmFTY2VuZUNvbnRleHQgPSBhY3RpdmVTY2VuZTtcblxuICByZXR1cm4gKCkgPT4ge1xuICAgIGlmICgod2luZG93IGFzIGFueSkuX19ncmFmYW5hU2NlbmVDb250ZXh0ID09PSBhY3RpdmVTY2VuZSkge1xuICAgICAgd3JpdGVTY2VuZUxvZygnc2V0V2luZG93R3JhZmFuYVNjZW5lJywgJ3Jlc3RvcmUgd2luZG93Ll9fZ3JhZmFuYVNjZW5lQ29udGV4dCcsIHByZXZTY2VuZSk7XG4gICAgICAod2luZG93IGFzIGFueSkuX19ncmFmYW5hU2NlbmVDb250ZXh0ID0gcHJldlNjZW5lO1xuICAgIH1cbiAgfTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVNPLFNBQVMsNkJBQTZCLFdBQTBCLEVBQUE7QUFDckUsRUFBQSxNQUFNLFlBQWEsTUFBZSxDQUFBLHFCQUFBLENBQUE7QUFFbEMsRUFBYyxhQUFBLENBQUEsdUJBQUEsRUFBeUIsb0NBQW9DLFdBQVcsQ0FBQSxDQUFBO0FBQ3RGLEVBQUMsT0FBZSxxQkFBd0IsR0FBQSxXQUFBLENBQUE7QUFFeEMsRUFBQSxPQUFPLE1BQU07QUFDWCxJQUFLLElBQUEsTUFBQSxDQUFlLDBCQUEwQixXQUFhLEVBQUE7QUFDekQsTUFBYyxhQUFBLENBQUEsdUJBQUEsRUFBeUIsd0NBQXdDLFNBQVMsQ0FBQSxDQUFBO0FBQ3hGLE1BQUMsT0FBZSxxQkFBd0IsR0FBQSxTQUFBLENBQUE7QUFBQSxLQUMxQztBQUFBLEdBQ0YsQ0FBQTtBQUNGOzs7OyJ9
@@ -0,0 +1,15 @@
1
+ import { isDateTime, dateMath, dateTimeParse } from '@grafana/data';
2
+
3
+ function isValid(value, roundUp, timeZone) {
4
+ if (isDateTime(value)) {
5
+ return value.isValid();
6
+ }
7
+ if (dateMath.isMathString(value)) {
8
+ return dateMath.isValid(value);
9
+ }
10
+ const parsed = dateTimeParse(value, { roundUp, timeZone });
11
+ return parsed.isValid();
12
+ }
13
+
14
+ export { isValid };
15
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWxzL2RhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNEYXRlVGltZSwgZGF0ZU1hdGgsIGRhdGVUaW1lUGFyc2UgfSBmcm9tICdAZ3JhZmFuYS9kYXRhJztcbmltcG9ydCB7IFRpbWVab25lIH0gZnJvbSAnQGdyYWZhbmEvc2NoZW1hJztcblxuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWQodmFsdWU6IHN0cmluZywgcm91bmRVcD86IGJvb2xlYW4sIHRpbWVab25lPzogVGltZVpvbmUpOiBib29sZWFuIHtcbiAgaWYgKGlzRGF0ZVRpbWUodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLmlzVmFsaWQoKTtcbiAgfVxuXG4gIGlmIChkYXRlTWF0aC5pc01hdGhTdHJpbmcodmFsdWUpKSB7XG4gICAgcmV0dXJuIGRhdGVNYXRoLmlzVmFsaWQodmFsdWUpO1xuICB9XG5cbiAgY29uc3QgcGFyc2VkID0gZGF0ZVRpbWVQYXJzZSh2YWx1ZSwgeyByb3VuZFVwLCB0aW1lWm9uZSB9KTtcbiAgcmV0dXJuIHBhcnNlZC5pc1ZhbGlkKCk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFHZ0IsU0FBQSxPQUFBLENBQVEsS0FBZSxFQUFBLE9BQUEsRUFBbUIsUUFBOEIsRUFBQTtBQUN0RixFQUFJLElBQUEsVUFBQSxDQUFXLEtBQUssQ0FBRyxFQUFBO0FBQ3JCLElBQUEsT0FBTyxNQUFNLE9BQVEsRUFBQSxDQUFBO0FBQUEsR0FDdkI7QUFFQSxFQUFJLElBQUEsUUFBQSxDQUFTLFlBQWEsQ0FBQSxLQUFLLENBQUcsRUFBQTtBQUNoQyxJQUFPLE9BQUEsUUFBQSxDQUFTLFFBQVEsS0FBSyxDQUFBLENBQUE7QUFBQSxHQUMvQjtBQUVBLEVBQUEsTUFBTSxTQUFTLGFBQWMsQ0FBQSxLQUFBLEVBQU8sRUFBRSxPQUFBLEVBQVMsVUFBVSxDQUFBLENBQUE7QUFDekQsRUFBQSxPQUFPLE9BQU8sT0FBUSxFQUFBLENBQUE7QUFDeEI7Ozs7In0=
@@ -0,0 +1,16 @@
1
+ import { dateMath } from '@grafana/data';
2
+
3
+ function evaluateTimeRange(from, to, timeZone, fiscalYearStartMonth, delay) {
4
+ const hasDelay = delay && to === "now";
5
+ return {
6
+ from: dateMath.parse(from, false, timeZone, fiscalYearStartMonth),
7
+ to: dateMath.parse(hasDelay ? "now-" + delay : to, true, timeZone, fiscalYearStartMonth),
8
+ raw: {
9
+ from,
10
+ to
11
+ }
12
+ };
13
+ }
14
+
15
+ export { evaluateTimeRange };
16
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZhbHVhdGVUaW1lUmFuZ2UuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy91dGlscy9ldmFsdWF0ZVRpbWVSYW5nZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkYXRlTWF0aCwgRGF0ZVRpbWUsIFRpbWVSYW5nZSB9IGZyb20gJ0BncmFmYW5hL2RhdGEnO1xuaW1wb3J0IHsgVGltZVpvbmUgfSBmcm9tICdAZ3JhZmFuYS9zY2hlbWEnO1xuXG5leHBvcnQgZnVuY3Rpb24gZXZhbHVhdGVUaW1lUmFuZ2UoXG4gIGZyb206IHN0cmluZyB8IERhdGVUaW1lLFxuICB0bzogc3RyaW5nIHwgRGF0ZVRpbWUsXG4gIHRpbWVab25lOiBUaW1lWm9uZSxcbiAgZmlzY2FsWWVhclN0YXJ0TW9udGg/OiBudW1iZXIsXG4gIGRlbGF5Pzogc3RyaW5nXG4pOiBUaW1lUmFuZ2Uge1xuICBjb25zdCBoYXNEZWxheSA9IGRlbGF5ICYmIHRvID09PSAnbm93JztcblxuICByZXR1cm4ge1xuICAgIGZyb206IGRhdGVNYXRoLnBhcnNlKGZyb20sIGZhbHNlLCB0aW1lWm9uZSwgZmlzY2FsWWVhclN0YXJ0TW9udGgpISxcbiAgICB0bzogZGF0ZU1hdGgucGFyc2UoaGFzRGVsYXkgPyAnbm93LScgKyBkZWxheSA6IHRvLCB0cnVlLCB0aW1lWm9uZSwgZmlzY2FsWWVhclN0YXJ0TW9udGgpISxcbiAgICByYXc6IHtcbiAgICAgIGZyb206IGZyb20sXG4gICAgICB0bzogdG8sXG4gICAgfSxcbiAgfTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUdPLFNBQVMsaUJBQ2QsQ0FBQSxJQUFBLEVBQ0EsRUFDQSxFQUFBLFFBQUEsRUFDQSxzQkFDQSxLQUNXLEVBQUE7QUFDWCxFQUFNLE1BQUEsUUFBQSxHQUFXLFNBQVMsRUFBTyxLQUFBLEtBQUEsQ0FBQTtBQUVqQyxFQUFPLE9BQUE7QUFBQSxJQUNMLE1BQU0sUUFBUyxDQUFBLEtBQUEsQ0FBTSxJQUFNLEVBQUEsS0FBQSxFQUFPLFVBQVUsb0JBQW9CLENBQUE7QUFBQSxJQUNoRSxFQUFBLEVBQUksU0FBUyxLQUFNLENBQUEsUUFBQSxHQUFXLFNBQVMsS0FBUSxHQUFBLEVBQUEsRUFBSSxJQUFNLEVBQUEsUUFBQSxFQUFVLG9CQUFvQixDQUFBO0FBQUEsSUFDdkYsR0FBSyxFQUFBO0FBQUEsTUFDSCxJQUFBO0FBQUEsTUFDQSxFQUFBO0FBQUEsS0FDRjtBQUFBLEdBQ0YsQ0FBQTtBQUNGOzs7OyJ9
@@ -0,0 +1,47 @@
1
+ import { wrapInSafeSerializableSceneObject } from './wrapInSafeSerializableSceneObject.js';
2
+ import { getDataSourceSrv } from '@grafana/runtime';
3
+
4
+ async function getExploreURL(data, model, timeRange, transform) {
5
+ var _a, _b, _c, _d;
6
+ const targets = (_a = data.request) == null ? void 0 : _a.targets;
7
+ if (!targets) {
8
+ return "";
9
+ }
10
+ const { from, to } = timeRange;
11
+ const filters = (_b = data.request) == null ? void 0 : _b.filters;
12
+ const scopedVars = {
13
+ __sceneObject: wrapInSafeSerializableSceneObject(model)
14
+ };
15
+ const interpolatedQueries = (await Promise.allSettled(
16
+ targets.map(async (q) => {
17
+ var _a2;
18
+ const queryDs = await getDataSourceSrv().get(q.datasource);
19
+ return ((_a2 = queryDs.interpolateVariablesInQueries) == null ? void 0 : _a2.call(queryDs, [q], scopedVars != null ? scopedVars : {}, filters)[0]) || q;
20
+ })
21
+ )).filter((promise) => promise.status === "fulfilled").map((q) => q.value).map((q) => {
22
+ var _a2;
23
+ return (_a2 = transform == null ? void 0 : transform(q)) != null ? _a2 : q;
24
+ });
25
+ const queries = interpolatedQueries != null ? interpolatedQueries : [];
26
+ const datasource = (_d = (_c = queries.find((query) => {
27
+ var _a2;
28
+ return !!((_a2 = query.datasource) == null ? void 0 : _a2.uid);
29
+ })) == null ? void 0 : _c.datasource) == null ? void 0 : _d.uid;
30
+ if ((queries == null ? void 0 : queries.length) && datasource && from && to) {
31
+ const left = encodeURIComponent(
32
+ JSON.stringify({
33
+ datasource,
34
+ queries,
35
+ range: {
36
+ from,
37
+ to
38
+ }
39
+ })
40
+ );
41
+ return `/explore?left=${left}`;
42
+ }
43
+ return "";
44
+ }
45
+
46
+ export { getExploreURL };
47
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwbG9yZS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWxzL2V4cGxvcmUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGFuZWxEYXRhLCBSYXdUaW1lUmFuZ2UsIFNjb3BlZFZhcnMgfSBmcm9tICdAZ3JhZmFuYS9kYXRhJztcbmltcG9ydCB7IFNjZW5lT2JqZWN0IH0gZnJvbSAnLi4vY29yZS90eXBlcyc7XG5pbXBvcnQgeyB3cmFwSW5TYWZlU2VyaWFsaXphYmxlU2NlbmVPYmplY3QgfSBmcm9tICcuL3dyYXBJblNhZmVTZXJpYWxpemFibGVTY2VuZU9iamVjdCc7XG5pbXBvcnQgeyBnZXREYXRhU291cmNlU3J2IH0gZnJvbSAnQGdyYWZhbmEvcnVudGltZSc7XG5pbXBvcnQgeyBEYXRhUXVlcnkgfSBmcm9tICdAZ3JhZmFuYS9zY2hlbWEnO1xuXG4vKipcbiAqIFJldHVybnMgVVJMIHRvIEdyYWZhbmEgZXhwbG9yZSBmb3IgdGhlIHF1ZXJpZXMgaW4gdGhlIGdpdmVuIHBhbmVsIGRhdGEgYW5kIHRpbWUgcmFuZ2UuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRFeHBsb3JlVVJMKFxuICBkYXRhOiBQYW5lbERhdGEsXG4gIG1vZGVsOiBTY2VuZU9iamVjdCxcbiAgdGltZVJhbmdlOiBSYXdUaW1lUmFuZ2UsXG4gIHRyYW5zZm9ybT86IChxdWVyeTogRGF0YVF1ZXJ5KSA9PiBEYXRhUXVlcnlcbik6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHRhcmdldHMgPSBkYXRhLnJlcXVlc3Q/LnRhcmdldHM7XG4gIGlmICghdGFyZ2V0cykge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGNvbnN0IHsgZnJvbSwgdG8gfSA9IHRpbWVSYW5nZTtcblxuICBjb25zdCBmaWx0ZXJzID0gZGF0YS5yZXF1ZXN0Py5maWx0ZXJzO1xuXG4gIGNvbnN0IHNjb3BlZFZhcnM6IFNjb3BlZFZhcnMgPSB7XG4gICAgX19zY2VuZU9iamVjdDogd3JhcEluU2FmZVNlcmlhbGl6YWJsZVNjZW5lT2JqZWN0KG1vZGVsKSxcbiAgfTtcblxuICBjb25zdCBpbnRlcnBvbGF0ZWRRdWVyaWVzID0gKFxuICAgIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChcbiAgICAgIHRhcmdldHMubWFwKGFzeW5jIChxKSA9PiB7XG4gICAgICAgIGNvbnN0IHF1ZXJ5RHMgPSBhd2FpdCBnZXREYXRhU291cmNlU3J2KCkuZ2V0KHEuZGF0YXNvdXJjZSk7XG4gICAgICAgIHJldHVybiBxdWVyeURzLmludGVycG9sYXRlVmFyaWFibGVzSW5RdWVyaWVzPy4oW3FdLCBzY29wZWRWYXJzID8/IHt9LCBmaWx0ZXJzKVswXSB8fCBxO1xuICAgICAgfSlcbiAgICApXG4gIClcbiAgICAuZmlsdGVyKChwcm9taXNlKTogcHJvbWlzZSBpcyBQcm9taXNlRnVsZmlsbGVkUmVzdWx0PERhdGFRdWVyeT4gPT4gcHJvbWlzZS5zdGF0dXMgPT09ICdmdWxmaWxsZWQnKVxuICAgIC5tYXAoKHEpID0+IHEudmFsdWUpXG4gICAgLm1hcCgocSkgPT4gdHJhbnNmb3JtPy4ocSkgPz8gcSk7XG5cbiAgY29uc3QgcXVlcmllczogRGF0YVF1ZXJ5W10gPSBpbnRlcnBvbGF0ZWRRdWVyaWVzID8/IFtdO1xuXG4gIGNvbnN0IGRhdGFzb3VyY2UgPSBxdWVyaWVzLmZpbmQoKHF1ZXJ5KSA9PiAhIXF1ZXJ5LmRhdGFzb3VyY2U/LnVpZCk/LmRhdGFzb3VyY2U/LnVpZDtcblxuICBpZiAocXVlcmllcz8ubGVuZ3RoICYmIGRhdGFzb3VyY2UgJiYgZnJvbSAmJiB0bykge1xuICAgIGNvbnN0IGxlZnQgPSBlbmNvZGVVUklDb21wb25lbnQoXG4gICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGRhdGFzb3VyY2UsXG4gICAgICAgIHF1ZXJpZXMsXG4gICAgICAgIHJhbmdlOiB7XG4gICAgICAgICAgZnJvbSxcbiAgICAgICAgICB0byxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHJldHVybiBgL2V4cGxvcmU/bGVmdD0ke2xlZnR9YDtcbiAgfVxuICByZXR1cm4gJyc7XG59XG4iXSwibmFtZXMiOlsiX2EiXSwibWFwcGluZ3MiOiI7OztBQVNBLGVBQXNCLGFBQ3BCLENBQUEsSUFBQSxFQUNBLEtBQ0EsRUFBQSxTQUFBLEVBQ0EsU0FDaUIsRUFBQTtBQWRuQixFQUFBLElBQUEsRUFBQSxFQUFBLEVBQUEsRUFBQSxFQUFBLEVBQUEsRUFBQSxDQUFBO0FBZUUsRUFBTSxNQUFBLE9BQUEsR0FBQSxDQUFVLEVBQUssR0FBQSxJQUFBLENBQUEsT0FBQSxLQUFMLElBQWMsR0FBQSxLQUFBLENBQUEsR0FBQSxFQUFBLENBQUEsT0FBQSxDQUFBO0FBQzlCLEVBQUEsSUFBSSxDQUFDLE9BQVMsRUFBQTtBQUNaLElBQU8sT0FBQSxFQUFBLENBQUE7QUFBQSxHQUNUO0FBRUEsRUFBTSxNQUFBLEVBQUUsSUFBTSxFQUFBLEVBQUEsRUFBTyxHQUFBLFNBQUEsQ0FBQTtBQUVyQixFQUFNLE1BQUEsT0FBQSxHQUFBLENBQVUsRUFBSyxHQUFBLElBQUEsQ0FBQSxPQUFBLEtBQUwsSUFBYyxHQUFBLEtBQUEsQ0FBQSxHQUFBLEVBQUEsQ0FBQSxPQUFBLENBQUE7QUFFOUIsRUFBQSxNQUFNLFVBQXlCLEdBQUE7QUFBQSxJQUM3QixhQUFBLEVBQWUsa0NBQWtDLEtBQUssQ0FBQTtBQUFBLEdBQ3hELENBQUE7QUFFQSxFQUFNLE1BQUEsbUJBQUEsR0FBQSxDQUNKLE1BQU0sT0FBUSxDQUFBLFVBQUE7QUFBQSxJQUNaLE9BQUEsQ0FBUSxHQUFJLENBQUEsT0FBTyxDQUFNLEtBQUE7QUE5Qi9CLE1BQUFBLElBQUFBLEdBQUFBLENBQUFBO0FBK0JRLE1BQUEsTUFBTSxVQUFVLE1BQU0sZ0JBQUEsRUFBbUIsQ0FBQSxHQUFBLENBQUksRUFBRSxVQUFVLENBQUEsQ0FBQTtBQUN6RCxNQUFBLE9BQUEsQ0FBQSxDQUFPQSxHQUFBLEdBQUEsT0FBQSxDQUFRLDZCQUFSLEtBQUEsSUFBQSxHQUFBLEtBQUEsQ0FBQSxHQUFBQSxHQUFBLENBQUEsSUFBQSxDQUFBLE9BQUEsRUFBd0MsQ0FBQyxDQUFDLENBQUcsRUFBQSxVQUFBLElBQUEsSUFBQSxHQUFBLFVBQUEsR0FBYyxFQUFDLEVBQUcsU0FBUyxDQUFNLENBQUEsS0FBQSxDQUFBLENBQUE7QUFBQSxLQUN0RixDQUFBO0FBQUEsS0FHRixNQUFPLENBQUEsQ0FBQyxPQUEwRCxLQUFBLE9BQUEsQ0FBUSxXQUFXLFdBQVcsQ0FBQSxDQUNoRyxHQUFJLENBQUEsQ0FBQyxNQUFNLENBQUUsQ0FBQSxLQUFLLENBQ2xCLENBQUEsR0FBQSxDQUFJLENBQUMsQ0FBRyxLQUFBO0FBdENiLElBQUFBLElBQUFBLEdBQUFBLENBQUFBO0FBc0NnQixJQUFBLE9BQUEsQ0FBQUEsR0FBQSxHQUFBLFNBQUEsSUFBQSxJQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUEsU0FBQSxDQUFZLENBQVosQ0FBQSxLQUFBLElBQUEsR0FBQUEsR0FBa0IsR0FBQSxDQUFBLENBQUE7QUFBQSxHQUFDLENBQUEsQ0FBQTtBQUVqQyxFQUFNLE1BQUEsT0FBQSxHQUF1QixvREFBdUIsRUFBQyxDQUFBO0FBRXJELEVBQUEsTUFBTSxVQUFhLEdBQUEsQ0FBQSxFQUFBLEdBQUEsQ0FBQSxFQUFBLEdBQUEsT0FBQSxDQUFRLElBQUssQ0FBQSxDQUFDLEtBQU8sS0FBQTtBQTFDMUMsSUFBQUEsSUFBQUEsR0FBQUEsQ0FBQUE7QUEwQzZDLElBQUEsT0FBQSxDQUFDLEVBQUNBLENBQUFBLEdBQUFBLEdBQUEsS0FBTSxDQUFBLFVBQUEsS0FBTixnQkFBQUEsR0FBa0IsQ0FBQSxHQUFBLENBQUEsQ0FBQTtBQUFBLEdBQUcsQ0FBQSxLQUEvQyxJQUFrRCxHQUFBLEtBQUEsQ0FBQSxHQUFBLEVBQUEsQ0FBQSxVQUFBLEtBQWxELElBQThELEdBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxDQUFBLEdBQUEsQ0FBQTtBQUVqRixFQUFBLElBQUEsQ0FBSSxPQUFTLElBQUEsSUFBQSxHQUFBLEtBQUEsQ0FBQSxHQUFBLE9BQUEsQ0FBQSxNQUFBLEtBQVUsVUFBYyxJQUFBLElBQUEsSUFBUSxFQUFJLEVBQUE7QUFDL0MsSUFBQSxNQUFNLElBQU8sR0FBQSxrQkFBQTtBQUFBLE1BQ1gsS0FBSyxTQUFVLENBQUE7QUFBQSxRQUNiLFVBQUE7QUFBQSxRQUNBLE9BQUE7QUFBQSxRQUNBLEtBQU8sRUFBQTtBQUFBLFVBQ0wsSUFBQTtBQUFBLFVBQ0EsRUFBQTtBQUFBLFNBQ0Y7QUFBQSxPQUNELENBQUE7QUFBQSxLQUNILENBQUE7QUFFQSxJQUFBLE9BQU8sQ0FBaUIsY0FBQSxFQUFBLElBQUEsQ0FBQSxDQUFBLENBQUE7QUFBQSxHQUMxQjtBQUNBLEVBQU8sT0FBQSxFQUFBLENBQUE7QUFDVDs7OzsifQ==
@@ -0,0 +1,4 @@
1
+ const getCompareSeriesRefId = (refId) => `${refId}-compare`;
2
+
3
+ export { getCompareSeriesRefId };
4
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0Q29tcGFyZVNlcmllc1JlZklkLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbHMvZ2V0Q29tcGFyZVNlcmllc1JlZklkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBnZXRDb21wYXJlU2VyaWVzUmVmSWQgPSAocmVmSWQ6IHN0cmluZykgPT4gYCR7cmVmSWR9LWNvbXBhcmVgO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFhLE1BQUEscUJBQUEsR0FBd0IsQ0FBQyxLQUFBLEtBQWtCLENBQUcsRUFBQSxLQUFBLENBQUEsUUFBQTs7OzsifQ==