@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,211 @@
1
+ import { isString } from 'lodash';
2
+ import { of } from 'rxjs';
3
+ import { map, mergeMap } from 'rxjs/operators';
4
+ import { FieldType, getFieldDisplayName, AnnotationEventFieldSource, standardTransformers } from '@grafana/data';
5
+ import { config } from '@grafana/runtime';
6
+
7
+ var __defProp = Object.defineProperty;
8
+ var __defProps = Object.defineProperties;
9
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
10
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
11
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
12
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
13
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
14
+ var __spreadValues = (a, b) => {
15
+ for (var prop in b || (b = {}))
16
+ if (__hasOwnProp.call(b, prop))
17
+ __defNormalProp(a, prop, b[prop]);
18
+ if (__getOwnPropSymbols)
19
+ for (var prop of __getOwnPropSymbols(b)) {
20
+ if (__propIsEnum.call(b, prop))
21
+ __defNormalProp(a, prop, b[prop]);
22
+ }
23
+ return a;
24
+ };
25
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
26
+ var __objRest = (source, exclude) => {
27
+ var target = {};
28
+ for (var prop in source)
29
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
30
+ target[prop] = source[prop];
31
+ if (source != null && __getOwnPropSymbols)
32
+ for (var prop of __getOwnPropSymbols(source)) {
33
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
34
+ target[prop] = source[prop];
35
+ }
36
+ return target;
37
+ };
38
+ const standardAnnotationSupport = {
39
+ prepareAnnotation: (json) => {
40
+ if (isString(json == null ? void 0 : json.query)) {
41
+ const _a = json, { query } = _a, rest = __objRest(_a, ["query"]);
42
+ return __spreadProps(__spreadValues({}, rest), {
43
+ target: {
44
+ refId: "annotation_query",
45
+ query
46
+ },
47
+ mappings: {}
48
+ });
49
+ }
50
+ return json;
51
+ },
52
+ prepareQuery: (anno) => anno.target,
53
+ processEvents: (anno, data) => {
54
+ return getAnnotationsFromData(data, anno.mappings);
55
+ }
56
+ };
57
+ function singleFrameFromPanelData() {
58
+ return (source) => source.pipe(
59
+ mergeMap((data) => {
60
+ if (!(data == null ? void 0 : data.length)) {
61
+ return of(void 0);
62
+ }
63
+ if (data.length === 1) {
64
+ return of(data[0]);
65
+ }
66
+ const ctx = {
67
+ interpolate: (v) => v
68
+ };
69
+ return of(data).pipe(
70
+ standardTransformers.mergeTransformer.operator({}, ctx),
71
+ map((d) => d[0])
72
+ );
73
+ })
74
+ );
75
+ }
76
+ const annotationEventNames = [
77
+ {
78
+ key: "time",
79
+ field: (frame) => frame.fields.find((f) => f.type === FieldType.time),
80
+ placeholder: "time, or the first time field"
81
+ },
82
+ { key: "timeEnd", help: "When this field is defined, the annotation will be treated as a range" },
83
+ {
84
+ key: "title"
85
+ },
86
+ {
87
+ key: "text",
88
+ field: (frame) => frame.fields.find((f) => f.type === FieldType.string),
89
+ placeholder: "text, or the first text field"
90
+ },
91
+ { key: "tags", split: ",", help: "The results will be split on comma (,)" },
92
+ {
93
+ key: "id"
94
+ }
95
+ ];
96
+ const publicDashboardEventNames = [
97
+ {
98
+ key: "color"
99
+ },
100
+ {
101
+ key: "isRegion"
102
+ },
103
+ {
104
+ key: "source"
105
+ }
106
+ ];
107
+ const alertEventAndAnnotationFields = [
108
+ ...config.publicDashboardAccessToken ? publicDashboardEventNames : [],
109
+ ...annotationEventNames,
110
+ { key: "userId" },
111
+ { key: "login" },
112
+ { key: "email" },
113
+ { key: "prevState" },
114
+ { key: "newState" },
115
+ { key: "data" },
116
+ { key: "panelId" },
117
+ { key: "alertId" },
118
+ { key: "dashboardId" },
119
+ { key: "dashboardUID" }
120
+ ];
121
+ function getAnnotationsFromData(data, options) {
122
+ return of(data).pipe(
123
+ singleFrameFromPanelData(),
124
+ map((frame) => {
125
+ if (!(frame == null ? void 0 : frame.length)) {
126
+ return [];
127
+ }
128
+ let hasTime = false;
129
+ let hasText = false;
130
+ const byName = {};
131
+ for (const f of frame.fields) {
132
+ const name = getFieldDisplayName(f, frame);
133
+ byName[name.toLowerCase()] = f;
134
+ }
135
+ if (!options) {
136
+ options = {};
137
+ }
138
+ const fields = [];
139
+ for (const evts of alertEventAndAnnotationFields) {
140
+ const opt = options[evts.key] || {};
141
+ if (opt.source === AnnotationEventFieldSource.Skip) {
142
+ continue;
143
+ }
144
+ const setter = { key: evts.key, split: evts.split };
145
+ if (opt.source === AnnotationEventFieldSource.Text) {
146
+ setter.text = opt.value;
147
+ } else {
148
+ const lower = (opt.value || evts.key).toLowerCase();
149
+ setter.field = byName[lower];
150
+ if (!setter.field && evts.field) {
151
+ setter.field = evts.field(frame);
152
+ }
153
+ }
154
+ if (setter.field || setter.text) {
155
+ fields.push(setter);
156
+ if (setter.key === "time") {
157
+ hasTime = true;
158
+ } else if (setter.key === "text") {
159
+ hasText = true;
160
+ }
161
+ }
162
+ }
163
+ if (!hasTime || !hasText) {
164
+ console.error("Cannot process annotation fields. No time or text present.");
165
+ return [];
166
+ }
167
+ const events = [];
168
+ for (let i = 0; i < frame.length; i++) {
169
+ const anno = {
170
+ type: "default",
171
+ color: "red"
172
+ };
173
+ for (const f of fields) {
174
+ let v = void 0;
175
+ if (f.text) {
176
+ v = f.text;
177
+ } else if (f.field) {
178
+ v = f.field.values.get(i);
179
+ if (v !== void 0 && f.regex) {
180
+ const match = f.regex.exec(v);
181
+ if (match) {
182
+ v = match[1] ? match[1] : match[0];
183
+ }
184
+ }
185
+ }
186
+ if (v !== null && v !== void 0) {
187
+ if (f.split && typeof v === "string") {
188
+ v = v.split(",");
189
+ }
190
+ anno[f.key] = v;
191
+ }
192
+ }
193
+ events.push(anno);
194
+ }
195
+ return events;
196
+ })
197
+ );
198
+ }
199
+ const legacyRunner = [
200
+ "prometheus",
201
+ "loki",
202
+ "elasticsearch",
203
+ "grafana-opensearch-datasource"
204
+ ];
205
+ function shouldUseLegacyRunner(datasource) {
206
+ const { type } = datasource;
207
+ return !datasource.annotations || legacyRunner.includes(type);
208
+ }
209
+
210
+ export { annotationEventNames, getAnnotationsFromData, publicDashboardEventNames, shouldUseLegacyRunner, singleFrameFromPanelData, standardAnnotationSupport };
211
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhcmRBbm5vdGF0aW9uc1N1cHBvcnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9xdWVyeWluZy9sYXllcnMvYW5ub3RhdGlvbnMvc3RhbmRhcmRBbm5vdGF0aW9uc1N1cHBvcnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNTdHJpbmcgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIE9wZXJhdG9yRnVuY3Rpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgbWVyZ2VNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7XG4gIEFubm90YXRpb25FdmVudCxcbiAgQW5ub3RhdGlvbkV2ZW50RmllbGRTb3VyY2UsXG4gIEFubm90YXRpb25FdmVudE1hcHBpbmdzLFxuICBBbm5vdGF0aW9uUXVlcnksXG4gIEFubm90YXRpb25TdXBwb3J0LFxuICBEYXRhRnJhbWUsXG4gIERhdGFTb3VyY2VBcGksXG4gIERhdGFUcmFuc2Zvcm1Db250ZXh0LFxuICBGaWVsZCxcbiAgRmllbGRUeXBlLFxuICBnZXRGaWVsZERpc3BsYXlOYW1lLFxuICBLZXlWYWx1ZSxcbiAgc3RhbmRhcmRUcmFuc2Zvcm1lcnMsXG59IGZyb20gJ0BncmFmYW5hL2RhdGEnO1xuaW1wb3J0IHsgY29uZmlnIH0gZnJvbSAnQGdyYWZhbmEvcnVudGltZSc7XG5cbmV4cG9ydCBjb25zdCBzdGFuZGFyZEFubm90YXRpb25TdXBwb3J0OiBBbm5vdGF0aW9uU3VwcG9ydCA9IHtcbiAgLyoqXG4gICAqIEFzc3VtZSB0aGUgc3RvcmVkIHZhbHVlIGlzIHN0YW5kYXJkIG1vZGVsLlxuICAgKi9cbiAgcHJlcGFyZUFubm90YXRpb246IChqc29uOiBhbnkpID0+IHtcbiAgICBpZiAoaXNTdHJpbmcoanNvbj8ucXVlcnkpKSB7XG4gICAgICBjb25zdCB7IHF1ZXJ5LCAuLi5yZXN0IH0gPSBqc29uO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ucmVzdCxcbiAgICAgICAgdGFyZ2V0OiB7XG4gICAgICAgICAgcmVmSWQ6ICdhbm5vdGF0aW9uX3F1ZXJ5JyxcbiAgICAgICAgICBxdWVyeSxcbiAgICAgICAgfSxcbiAgICAgICAgbWFwcGluZ3M6IHt9LFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIGpzb24gYXMgQW5ub3RhdGlvblF1ZXJ5O1xuICB9LFxuXG4gIC8qKlxuICAgKiBEZWZhdWx0IHdpbGwganVzdCByZXR1cm4gdGFyZ2V0IGZyb20gdGhlIGFubm90YXRpb24uXG4gICAqL1xuICBwcmVwYXJlUXVlcnk6IChhbm5vOiBBbm5vdGF0aW9uUXVlcnkpID0+IGFubm8udGFyZ2V0LFxuXG4gIC8qKlxuICAgKiBQcm92aWRlcyBkZWZhdWx0IHByb2Nlc3NpbmcgZnJvbSBkYXRhRnJhbWUgdG8gYW5ub3RhdGlvbiBldmVudHMuXG4gICAqL1xuICBwcm9jZXNzRXZlbnRzOiAoYW5ubzogQW5ub3RhdGlvblF1ZXJ5LCBkYXRhOiBEYXRhRnJhbWVbXSkgPT4ge1xuICAgIHJldHVybiBnZXRBbm5vdGF0aW9uc0Zyb21EYXRhKGRhdGEsIGFubm8ubWFwcGluZ3MpO1xuICB9LFxufTtcblxuLyoqXG4gKiBGbGF0dGVuIGFsbCBmcmFtZXMgaW50byBhIHNpbmdsZSBmcmFtZSB3aXRoIG1lcmdlVHJhbnNmb3JtZXIuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIHNpbmdsZUZyYW1lRnJvbVBhbmVsRGF0YSgpOiBPcGVyYXRvckZ1bmN0aW9uPERhdGFGcmFtZVtdLCBEYXRhRnJhbWUgfCB1bmRlZmluZWQ+IHtcbiAgcmV0dXJuIChzb3VyY2UpID0+XG4gICAgc291cmNlLnBpcGUoXG4gICAgICBtZXJnZU1hcCgoZGF0YSkgPT4ge1xuICAgICAgICBpZiAoIWRhdGE/Lmxlbmd0aCkge1xuICAgICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRhdGEubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgcmV0dXJuIG9mKGRhdGFbMF0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY3R4OiBEYXRhVHJhbnNmb3JtQ29udGV4dCA9IHtcbiAgICAgICAgICBpbnRlcnBvbGF0ZTogKHY6IHN0cmluZykgPT4gdixcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gb2YoZGF0YSkucGlwZShcbiAgICAgICAgICBzdGFuZGFyZFRyYW5zZm9ybWVycy5tZXJnZVRyYW5zZm9ybWVyLm9wZXJhdG9yKHt9LCBjdHgpLFxuICAgICAgICAgIG1hcCgoZCkgPT4gZFswXSlcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcbn1cblxuaW50ZXJmYWNlIEFubm90YXRpb25FdmVudEZpZWxkU2V0dGVyIHtcbiAga2V5OiBrZXlvZiBBbm5vdGF0aW9uRXZlbnQ7XG4gIGZpZWxkPzogRmllbGQ7XG4gIHRleHQ/OiBzdHJpbmc7XG4gIHJlZ2V4PzogUmVnRXhwO1xuICBzcGxpdD86IHN0cmluZzsgLy8gZm9yIHRhZ3Ncbn1cblxuZXhwb3J0IGludGVyZmFjZSBBbm5vdGF0aW9uRmllbGRJbmZvIHtcbiAga2V5OiBrZXlvZiBBbm5vdGF0aW9uRXZlbnQ7XG5cbiAgc3BsaXQ/OiBzdHJpbmc7XG4gIGZpZWxkPzogKGZyYW1lOiBEYXRhRnJhbWUpID0+IEZpZWxkIHwgdW5kZWZpbmVkO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgaGVscD86IHN0cmluZztcbn1cblxuLy8gVGhlc2UgZmllbGRzIGdldCBhZGRlZCB0byB0aGUgc3RhbmRhcmQgVUlcbmV4cG9ydCBjb25zdCBhbm5vdGF0aW9uRXZlbnROYW1lczogQW5ub3RhdGlvbkZpZWxkSW5mb1tdID0gW1xuICB7XG4gICAga2V5OiAndGltZScsXG4gICAgZmllbGQ6IChmcmFtZTogRGF0YUZyYW1lKSA9PiBmcmFtZS5maWVsZHMuZmluZCgoZikgPT4gZi50eXBlID09PSBGaWVsZFR5cGUudGltZSksXG4gICAgcGxhY2Vob2xkZXI6ICd0aW1lLCBvciB0aGUgZmlyc3QgdGltZSBmaWVsZCcsXG4gIH0sXG4gIHsga2V5OiAndGltZUVuZCcsIGhlbHA6ICdXaGVuIHRoaXMgZmllbGQgaXMgZGVmaW5lZCwgdGhlIGFubm90YXRpb24gd2lsbCBiZSB0cmVhdGVkIGFzIGEgcmFuZ2UnIH0sXG4gIHtcbiAgICBrZXk6ICd0aXRsZScsXG4gIH0sXG4gIHtcbiAgICBrZXk6ICd0ZXh0JyxcbiAgICBmaWVsZDogKGZyYW1lOiBEYXRhRnJhbWUpID0+IGZyYW1lLmZpZWxkcy5maW5kKChmKSA9PiBmLnR5cGUgPT09IEZpZWxkVHlwZS5zdHJpbmcpLFxuICAgIHBsYWNlaG9sZGVyOiAndGV4dCwgb3IgdGhlIGZpcnN0IHRleHQgZmllbGQnLFxuICB9LFxuICB7IGtleTogJ3RhZ3MnLCBzcGxpdDogJywnLCBoZWxwOiAnVGhlIHJlc3VsdHMgd2lsbCBiZSBzcGxpdCBvbiBjb21tYSAoLCknIH0sXG4gIHtcbiAgICBrZXk6ICdpZCcsXG4gIH0sXG5dO1xuXG5leHBvcnQgY29uc3QgcHVibGljRGFzaGJvYXJkRXZlbnROYW1lczogQW5ub3RhdGlvbkZpZWxkSW5mb1tdID0gW1xuICB7XG4gICAga2V5OiAnY29sb3InLFxuICB9LFxuICB7XG4gICAga2V5OiAnaXNSZWdpb24nLFxuICB9LFxuICB7XG4gICAga2V5OiAnc291cmNlJyxcbiAgfSxcbl07XG5cbi8vIEdpdmVuIGxlZ2FjeSBpbmZyYXN0cnVjdHVyZSwgYWxlcnQgZXZlbnRzIGFyZSBwYXNzZWQgdGhvdWdoIHRoZSBzYW1lIGFubm90YXRpb25cbi8vIHBpcGVsaW5lLCBidXQgaW5jbHVkZSBmaWVsZHMgdGhhdCBzaG91bGQgbm90IGJlIGV4cG9zZWQgZ2VuZXJhbGx5XG5jb25zdCBhbGVydEV2ZW50QW5kQW5ub3RhdGlvbkZpZWxkczogQW5ub3RhdGlvbkZpZWxkSW5mb1tdID0gW1xuICAuLi4oY29uZmlnLnB1YmxpY0Rhc2hib2FyZEFjY2Vzc1Rva2VuID8gcHVibGljRGFzaGJvYXJkRXZlbnROYW1lcyA6IFtdKSxcbiAgLi4uYW5ub3RhdGlvbkV2ZW50TmFtZXMsXG4gIHsga2V5OiAndXNlcklkJyB9LFxuICB7IGtleTogJ2xvZ2luJyB9LFxuICB7IGtleTogJ2VtYWlsJyB9LFxuICB7IGtleTogJ3ByZXZTdGF0ZScgfSxcbiAgeyBrZXk6ICduZXdTdGF0ZScgfSxcbiAgeyBrZXk6ICdkYXRhJyBhcyBhbnkgfSxcbiAgeyBrZXk6ICdwYW5lbElkJyB9LFxuICB7IGtleTogJ2FsZXJ0SWQnIH0sXG4gIHsga2V5OiAnZGFzaGJvYXJkSWQnIH0sXG4gIHsga2V5OiAnZGFzaGJvYXJkVUlEJyB9LFxuXTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFubm90YXRpb25zRnJvbURhdGEoXG4gIGRhdGE6IERhdGFGcmFtZVtdLFxuICBvcHRpb25zPzogQW5ub3RhdGlvbkV2ZW50TWFwcGluZ3Ncbik6IE9ic2VydmFibGU8QW5ub3RhdGlvbkV2ZW50W10+IHtcbiAgcmV0dXJuIG9mKGRhdGEpLnBpcGUoXG4gICAgc2luZ2xlRnJhbWVGcm9tUGFuZWxEYXRhKCksXG4gICAgbWFwKChmcmFtZSkgPT4ge1xuICAgICAgaWYgKCFmcmFtZT8ubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cblxuICAgICAgbGV0IGhhc1RpbWUgPSBmYWxzZTtcbiAgICAgIGxldCBoYXNUZXh0ID0gZmFsc2U7XG4gICAgICBjb25zdCBieU5hbWU6IEtleVZhbHVlPEZpZWxkPiA9IHt9O1xuXG4gICAgICBmb3IgKGNvbnN0IGYgb2YgZnJhbWUuZmllbGRzKSB7XG4gICAgICAgIGNvbnN0IG5hbWUgPSBnZXRGaWVsZERpc3BsYXlOYW1lKGYsIGZyYW1lKTtcbiAgICAgICAgYnlOYW1lW25hbWUudG9Mb3dlckNhc2UoKV0gPSBmO1xuICAgICAgfVxuXG4gICAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgICAgb3B0aW9ucyA9IHt9O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmaWVsZHM6IEFubm90YXRpb25FdmVudEZpZWxkU2V0dGVyW10gPSBbXTtcblxuICAgICAgZm9yIChjb25zdCBldnRzIG9mIGFsZXJ0RXZlbnRBbmRBbm5vdGF0aW9uRmllbGRzKSB7XG4gICAgICAgIGNvbnN0IG9wdCA9IG9wdGlvbnNbZXZ0cy5rZXldIHx8IHt9OyAvL0Fubm90YXRpb25FdmVudEZpZWxkTWFwcGluZ1xuXG4gICAgICAgIGlmIChvcHQuc291cmNlID09PSBBbm5vdGF0aW9uRXZlbnRGaWVsZFNvdXJjZS5Ta2lwKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzZXR0ZXI6IEFubm90YXRpb25FdmVudEZpZWxkU2V0dGVyID0geyBrZXk6IGV2dHMua2V5LCBzcGxpdDogZXZ0cy5zcGxpdCB9O1xuXG4gICAgICAgIGlmIChvcHQuc291cmNlID09PSBBbm5vdGF0aW9uRXZlbnRGaWVsZFNvdXJjZS5UZXh0KSB7XG4gICAgICAgICAgc2V0dGVyLnRleHQgPSBvcHQudmFsdWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgbG93ZXIgPSAob3B0LnZhbHVlIHx8IGV2dHMua2V5KS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgIHNldHRlci5maWVsZCA9IGJ5TmFtZVtsb3dlcl07XG5cbiAgICAgICAgICBpZiAoIXNldHRlci5maWVsZCAmJiBldnRzLmZpZWxkKSB7XG4gICAgICAgICAgICBzZXR0ZXIuZmllbGQgPSBldnRzLmZpZWxkKGZyYW1lKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2V0dGVyLmZpZWxkIHx8IHNldHRlci50ZXh0KSB7XG4gICAgICAgICAgZmllbGRzLnB1c2goc2V0dGVyKTtcbiAgICAgICAgICBpZiAoc2V0dGVyLmtleSA9PT0gJ3RpbWUnKSB7XG4gICAgICAgICAgICBoYXNUaW1lID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHNldHRlci5rZXkgPT09ICd0ZXh0Jykge1xuICAgICAgICAgICAgaGFzVGV4dCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghaGFzVGltZSB8fCAhaGFzVGV4dCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdDYW5ub3QgcHJvY2VzcyBhbm5vdGF0aW9uIGZpZWxkcy4gTm8gdGltZSBvciB0ZXh0IHByZXNlbnQuJyk7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cblxuICAgICAgLy8gQWRkIGVhY2ggdmFsdWUgdG8gdGhlIHN0cmluZ1xuICAgICAgY29uc3QgZXZlbnRzOiBBbm5vdGF0aW9uRXZlbnRbXSA9IFtdO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZyYW1lLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGFubm86IEFubm90YXRpb25FdmVudCA9IHtcbiAgICAgICAgICB0eXBlOiAnZGVmYXVsdCcsXG4gICAgICAgICAgY29sb3I6ICdyZWQnLFxuICAgICAgICB9O1xuXG4gICAgICAgIGZvciAoY29uc3QgZiBvZiBmaWVsZHMpIHtcbiAgICAgICAgICBsZXQgdjogYW55ID0gdW5kZWZpbmVkO1xuXG4gICAgICAgICAgaWYgKGYudGV4dCkge1xuICAgICAgICAgICAgdiA9IGYudGV4dDsgLy8gVE9ETyBzdXBwb3J0IHRlbXBsYXRlcyFcbiAgICAgICAgICB9IGVsc2UgaWYgKGYuZmllbGQpIHtcbiAgICAgICAgICAgIHYgPSBmLmZpZWxkLnZhbHVlcy5nZXQoaSk7XG4gICAgICAgICAgICBpZiAodiAhPT0gdW5kZWZpbmVkICYmIGYucmVnZXgpIHtcbiAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBmLnJlZ2V4LmV4ZWModik7XG4gICAgICAgICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgICAgIHYgPSBtYXRjaFsxXSA/IG1hdGNoWzFdIDogbWF0Y2hbMF07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodiAhPT0gbnVsbCAmJiB2ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlmIChmLnNwbGl0ICYmIHR5cGVvZiB2ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICB2ID0gdi5zcGxpdCgnLCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgKGFubm8gYXMgYW55KVtmLmtleV0gPSB2O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGV2ZW50cy5wdXNoKGFubm8pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGV2ZW50cztcbiAgICB9KVxuICApO1xufVxuXG4vLyBUaGVzZSBvcHQgb3V0cyBhcmUgaGVyZSBvbmx5IGZvciBxdWlja2VyIGFuZCBlYXNpZXIgbWlncmF0aW9uIHRvIHJlYWN0IGJhc2VkIGFubm90YXRpb25zIGVkaXRvcnMgYW5kIGJlY2F1c2Vcbi8vIGFubm90YXRpb24gc3VwcG9ydCBBUEkgbmVlZHMgc29tZSB3b3JrIHRvIHN1cHBvcnQgbGVzcyBcInN0YW5kYXJkXCIgZWRpdG9ycyBsaWtlIHByb21ldGhldXMgYW5kIGhlcmUgaXQgaXMgbm90XG4vLyBwb2xsdXRpbmcgcHVibGljIEFQSS5cblxuY29uc3QgbGVnYWN5UnVubmVyID0gW1xuICAncHJvbWV0aGV1cycsXG4gICdsb2tpJyxcbiAgJ2VsYXN0aWNzZWFyY2gnLFxuICAnZ3JhZmFuYS1vcGVuc2VhcmNoLWRhdGFzb3VyY2UnLCAvLyBleHRlcm5hbFxuXTtcblxuLyoqXG4gKiBVc2UgbGVnYWN5IHJ1bm5lci4gVXNlZCBvbmx5IGFzIGFuIGVzY2FwZSBoYXRjaCBmb3IgZWFzaWVyIHRyYW5zaXRpb24gdG8gUmVhY3QgYmFzZWQgYW5ub3RhdGlvbiBlZGl0b3IuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaG91bGRVc2VMZWdhY3lSdW5uZXIoZGF0YXNvdXJjZTogRGF0YVNvdXJjZUFwaSk6IGJvb2xlYW4ge1xuICBjb25zdCB7IHR5cGUgfSA9IGRhdGFzb3VyY2U7XG4gIHJldHVybiAhZGF0YXNvdXJjZS5hbm5vdGF0aW9ucyB8fCBsZWdhY3lSdW5uZXIuaW5jbHVkZXModHlwZSk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXFCTyxNQUFNLHlCQUErQyxHQUFBO0FBQUEsRUFJMUQsaUJBQUEsRUFBbUIsQ0FBQyxJQUFjLEtBQUE7QUFDaEMsSUFBSSxJQUFBLFFBQUEsQ0FBUyxJQUFNLElBQUEsSUFBQSxHQUFBLEtBQUEsQ0FBQSxHQUFBLElBQUEsQ0FBQSxLQUFLLENBQUcsRUFBQTtBQUN6QixNQUFBLE1BQTJCLFdBQW5CLEVBM0JkLEtBQUEsRUFBQSxHQTJCaUMsRUFBVCxFQUFBLElBQUEsR0FBQSxTQUFBLENBQVMsSUFBVCxDQUFWLE9BQUEsQ0FBQSxDQUFBLENBQUE7QUFDUixNQUFBLE9BQU8saUNBQ0YsSUFERSxDQUFBLEVBQUE7QUFBQSxRQUVMLE1BQVEsRUFBQTtBQUFBLFVBQ04sS0FBTyxFQUFBLGtCQUFBO0FBQUEsVUFDUCxLQUFBO0FBQUEsU0FDRjtBQUFBLFFBQ0EsVUFBVSxFQUFDO0FBQUEsT0FDYixDQUFBLENBQUE7QUFBQSxLQUNGO0FBQ0EsSUFBTyxPQUFBLElBQUEsQ0FBQTtBQUFBLEdBQ1Q7QUFBQSxFQUtBLFlBQUEsRUFBYyxDQUFDLElBQUEsS0FBMEIsSUFBSyxDQUFBLE1BQUE7QUFBQSxFQUs5QyxhQUFBLEVBQWUsQ0FBQyxJQUFBLEVBQXVCLElBQXNCLEtBQUE7QUFDM0QsSUFBTyxPQUFBLHNCQUFBLENBQXVCLElBQU0sRUFBQSxJQUFBLENBQUssUUFBUSxDQUFBLENBQUE7QUFBQSxHQUNuRDtBQUNGLEVBQUE7QUFNTyxTQUFTLHdCQUFpRixHQUFBO0FBQy9GLEVBQU8sT0FBQSxDQUFDLFdBQ04sTUFBTyxDQUFBLElBQUE7QUFBQSxJQUNMLFFBQUEsQ0FBUyxDQUFDLElBQVMsS0FBQTtBQUNqQixNQUFJLElBQUEsRUFBQyw2QkFBTSxNQUFRLENBQUEsRUFBQTtBQUNqQixR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
@@ -0,0 +1,77 @@
1
+ import { config } from '@grafana/runtime';
2
+ import { cloneDeep, partition, groupBy, map, every, find, head, concat } from 'lodash';
3
+
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
8
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9
+ var __spreadValues = (a, b) => {
10
+ for (var prop in b || (b = {}))
11
+ if (__hasOwnProp.call(b, prop))
12
+ __defNormalProp(a, prop, b[prop]);
13
+ if (__getOwnPropSymbols)
14
+ for (var prop of __getOwnPropSymbols(b)) {
15
+ if (__propIsEnum.call(b, prop))
16
+ __defNormalProp(a, prop, b[prop]);
17
+ }
18
+ return a;
19
+ };
20
+ function postProcessQueryResult(annotation, results) {
21
+ if (annotation.snapshotData) {
22
+ annotation = cloneDeep(annotation);
23
+ delete annotation.snapshotData;
24
+ }
25
+ const processed = results.map((item) => {
26
+ var _a;
27
+ const processedItem = __spreadValues({}, item);
28
+ processedItem.source = annotation;
29
+ processedItem.color = config.theme2.visualization.getColorByName(annotation.iconColor);
30
+ processedItem.type = annotation.name;
31
+ processedItem.isRegion = Boolean(processedItem.timeEnd && processedItem.time !== processedItem.timeEnd);
32
+ switch ((_a = processedItem.newState) == null ? void 0 : _a.toLowerCase()) {
33
+ case "pending":
34
+ processedItem.color = "yellow";
35
+ break;
36
+ case "alerting":
37
+ processedItem.color = "red";
38
+ break;
39
+ case "ok":
40
+ processedItem.color = "green";
41
+ break;
42
+ case "normal":
43
+ processedItem.color = "green";
44
+ break;
45
+ case "no_data":
46
+ processedItem.color = "gray";
47
+ break;
48
+ case "nodata":
49
+ processedItem.color = "gray";
50
+ break;
51
+ }
52
+ return processedItem;
53
+ });
54
+ return processed;
55
+ }
56
+ function dedupAnnotations(annotations) {
57
+ let dedup = [];
58
+ const events = partition(annotations, "id");
59
+ const eventsById = groupBy(events[0], "id");
60
+ dedup = map(eventsById, (eventGroup) => {
61
+ if (eventGroup.length > 1 && !every(eventGroup, isPanelAlert)) {
62
+ return find(eventGroup, (event) => {
63
+ return event.eventType !== "panel-alert";
64
+ });
65
+ } else {
66
+ return head(eventGroup);
67
+ }
68
+ });
69
+ dedup = concat(dedup, events[1]);
70
+ return dedup;
71
+ }
72
+ function isPanelAlert(event) {
73
+ return event.eventType === "panel-alert";
74
+ }
75
+
76
+ export { dedupAnnotations, postProcessQueryResult };
77
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9xdWVyeWluZy9sYXllcnMvYW5ub3RhdGlvbnMvdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhlc2Ugb3B0IG91dHMgYXJlIGhlcmUgb25seSBmb3IgcXVpY2tlciBhbmQgZWFzaWVyIG1pZ3JhdGlvbiB0byByZWFjdCBiYXNlZCBhbm5vdGF0aW9ucyBlZGl0b3JzIGFuZCBiZWNhdXNlXG4vLyBhbm5vdGF0aW9uIHN1cHBvcnQgQVBJIG5lZWRzIHNvbWUgd29yayB0byBzdXBwb3J0IGxlc3MgXCJzdGFuZGFyZFwiIGVkaXRvcnMgbGlrZSBwcm9tZXRoZXVzIGFuZCBoZXJlIGl0IGlzIG5vdFxuLy8gcG9sbHV0aW5nIHB1YmxpYyBBUEkuXG5cbmltcG9ydCB7IEFubm90YXRpb25FdmVudCwgQW5ub3RhdGlvblF1ZXJ5LCBEYXRhU291cmNlQXBpIH0gZnJvbSAnQGdyYWZhbmEvZGF0YSc7XG5pbXBvcnQgeyBjb25maWcgfSBmcm9tICdAZ3JhZmFuYS9ydW50aW1lJztcbmltcG9ydCB7IGNsb25lRGVlcCwgY29uY2F0LCBldmVyeSwgZmluZCwgZ3JvdXBCeSwgaGVhZCwgbWFwLCBwYXJ0aXRpb24gfSBmcm9tICdsb2Rhc2gnO1xuXG5jb25zdCBsZWdhY3lSdW5uZXIgPSBbXG4gICdwcm9tZXRoZXVzJyxcbiAgJ2xva2knLFxuICAnZWxhc3RpY3NlYXJjaCcsXG4gICdncmFmYW5hLW9wZW5zZWFyY2gtZGF0YXNvdXJjZScsIC8vIGV4dGVybmFsXG5dO1xuXG4vKipcbiAqIFVzZSBsZWdhY3kgcnVubmVyLiBVc2VkIG9ubHkgYXMgYW4gZXNjYXBlIGhhdGNoIGZvciBlYXNpZXIgdHJhbnNpdGlvbiB0byBSZWFjdCBiYXNlZCBhbm5vdGF0aW9uIGVkaXRvci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNob3VsZFVzZUxlZ2FjeVJ1bm5lcihkYXRhc291cmNlOiBEYXRhU291cmNlQXBpKTogYm9vbGVhbiB7XG4gIGNvbnN0IHsgdHlwZSB9ID0gZGF0YXNvdXJjZTtcbiAgcmV0dXJuICFkYXRhc291cmNlLmFubm90YXRpb25zIHx8IGxlZ2FjeVJ1bm5lci5pbmNsdWRlcyh0eXBlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvc3RQcm9jZXNzUXVlcnlSZXN1bHQoYW5ub3RhdGlvbjogQW5ub3RhdGlvblF1ZXJ5LCByZXN1bHRzOiBBbm5vdGF0aW9uRXZlbnRbXSk6IEFubm90YXRpb25FdmVudFtdIHtcbiAgLy8gaWYgYW5ub3RhdGlvbiBoYXMgc25hcHNob3REYXRhXG4gIC8vIG1ha2UgY2xvbmUgYW5kIHJlbW92ZSBpdFxuICBpZiAoYW5ub3RhdGlvbi5zbmFwc2hvdERhdGEpIHtcbiAgICBhbm5vdGF0aW9uID0gY2xvbmVEZWVwKGFubm90YXRpb24pO1xuICAgIGRlbGV0ZSBhbm5vdGF0aW9uLnNuYXBzaG90RGF0YTtcbiAgfVxuXG4gIC8vXG4gIGNvbnN0IHByb2Nlc3NlZCA9IHJlc3VsdHMubWFwKChpdGVtKSA9PiB7XG4gICAgY29uc3QgcHJvY2Vzc2VkSXRlbSA9IHsgLi4uaXRlbSB9O1xuXG4gICAgcHJvY2Vzc2VkSXRlbS5zb3VyY2UgPSBhbm5vdGF0aW9uO1xuICAgIHByb2Nlc3NlZEl0ZW0uY29sb3IgPSBjb25maWcudGhlbWUyLnZpc3VhbGl6YXRpb24uZ2V0Q29sb3JCeU5hbWUoYW5ub3RhdGlvbi5pY29uQ29sb3IpO1xuICAgIHByb2Nlc3NlZEl0ZW0udHlwZSA9IGFubm90YXRpb24ubmFtZTtcbiAgICBwcm9jZXNzZWRJdGVtLmlzUmVnaW9uID0gQm9vbGVhbihwcm9jZXNzZWRJdGVtLnRpbWVFbmQgJiYgcHJvY2Vzc2VkSXRlbS50aW1lICE9PSBwcm9jZXNzZWRJdGVtLnRpbWVFbmQpO1xuXG4gICAgc3dpdGNoIChwcm9jZXNzZWRJdGVtLm5ld1N0YXRlPy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICBjYXNlICdwZW5kaW5nJzpcbiAgICAgICAgcHJvY2Vzc2VkSXRlbS5jb2xvciA9ICd5ZWxsb3cnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2FsZXJ0aW5nJzpcbiAgICAgICAgcHJvY2Vzc2VkSXRlbS5jb2xvciA9ICdyZWQnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ29rJzpcbiAgICAgICAgcHJvY2Vzc2VkSXRlbS5jb2xvciA9ICdncmVlbic7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbm9ybWFsJzogLy8gbmdhbGVydCAoXCJub3JtYWxcIiBpbnN0ZWFkIG9mIFwib2tcIilcbiAgICAgICAgcHJvY2Vzc2VkSXRlbS5jb2xvciA9ICdncmVlbic7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbm9fZGF0YSc6XG4gICAgICAgIHByb2Nlc3NlZEl0ZW0uY29sb3IgPSAnZ3JheSc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbm9kYXRhJzogLy8gbmdhbGVydFxuICAgICAgICBwcm9jZXNzZWRJdGVtLmNvbG9yID0gJ2dyYXknO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvY2Vzc2VkSXRlbTtcbiAgfSk7XG5cbiAgcmV0dXJuIHByb2Nlc3NlZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlZHVwQW5ub3RhdGlvbnMoYW5ub3RhdGlvbnM6IGFueSkge1xuICBsZXQgZGVkdXAgPSBbXTtcblxuICAvLyBTcGxpdCBldmVudHMgYnkgYW5ub3RhdGlvbklkIHByb3BlcnR5IGV4aXN0ZW5jZVxuICBjb25zdCBldmVudHMgPSBwYXJ0aXRpb24oYW5ub3RhdGlvbnMsICdpZCcpO1xuXG4gIGNvbnN0IGV2ZW50c0J5SWQgPSBncm91cEJ5KGV2ZW50c1swXSwgJ2lkJyk7XG4gIGRlZHVwID0gbWFwKGV2ZW50c0J5SWQsIChldmVudEdyb3VwKSA9PiB7XG4gICAgaWYgKGV2ZW50R3JvdXAubGVuZ3RoID4gMSAmJiAhZXZlcnkoZXZlbnRHcm91cCwgaXNQYW5lbEFsZXJ0KSkge1xuICAgICAgLy8gR2V0IGZpcnN0IG5vbi1wYW5lbCBhbGVydFxuICAgICAgcmV0dXJuIGZpbmQoZXZlbnRHcm91cCwgKGV2ZW50KSA9PiB7XG4gICAgICAgIHJldHVybiBldmVudC5ldmVudFR5cGUgIT09ICdwYW5lbC1hbGVydCc7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGhlYWQoZXZlbnRHcm91cCk7XG4gICAgfVxuICB9KTtcblxuICBkZWR1cCA9IGNvbmNhdChkZWR1cCwgZXZlbnRzWzFdKTtcbiAgcmV0dXJuIGRlZHVwO1xufVxuXG5mdW5jdGlvbiBpc1BhbmVsQWxlcnQoZXZlbnQ6IHsgZXZlbnRUeXBlOiBzdHJpbmcgfSkge1xuICByZXR1cm4gZXZlbnQuZXZlbnRUeXBlID09PSAncGFuZWwtYWxlcnQnO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF1QmdCLFNBQUEsc0JBQUEsQ0FBdUIsWUFBNkIsT0FBK0MsRUFBQTtBQUdqSCxFQUFBLElBQUksV0FBVyxZQUFjLEVBQUE7QUFDM0IsSUFBQSxVQUFBLEdBQWEsVUFBVSxVQUFVLENBQUEsQ0FBQTtBQUNqQyxJQUFBLE9BQU8sVUFBVyxDQUFBLFlBQUEsQ0FBQTtBQUFBLEdBQ3BCO0FBR0EsRUFBQSxNQUFNLFNBQVksR0FBQSxPQUFBLENBQVEsR0FBSSxDQUFBLENBQUMsSUFBUyxLQUFBO0FBaEMxQyxJQUFBLElBQUEsRUFBQSxDQUFBO0FBaUNJLElBQUEsTUFBTSxnQkFBZ0IsY0FBSyxDQUFBLEVBQUEsRUFBQSxJQUFBLENBQUEsQ0FBQTtBQUUzQixJQUFBLGFBQUEsQ0FBYyxNQUFTLEdBQUEsVUFBQSxDQUFBO0FBQ3ZCLElBQUEsYUFBQSxDQUFjLFFBQVEsTUFBTyxDQUFBLE1BQUEsQ0FBTyxhQUFjLENBQUEsY0FBQSxDQUFlLFdBQVcsU0FBUyxDQUFBLENBQUE7QUFDckYsSUFBQSxhQUFBLENBQWMsT0FBTyxVQUFXLENBQUEsSUFBQSxDQUFBO0FBQ2hDLElBQUEsYUFBQSxDQUFjLFdBQVcsT0FBUSxDQUFBLGFBQUEsQ0FBYyxXQUFXLGFBQWMsQ0FBQSxJQUFBLEtBQVMsY0FBYyxPQUFPLENBQUEsQ0FBQTtBQUV0RyxJQUFRLFFBQUEsQ0FBQSxFQUFBLEdBQUEsYUFBQSxDQUFjLGFBQWQsSUFBd0IsR0FBQSxLQUFBLENBQUEsR0FBQSxFQUFBLENBQUEsV0FBQSxFQUFBO0FBQUEsTUFDekIsS0FBQSxTQUFBO0FBQ0gsUUFBQSxhQUFBLENBQWMsS0FBUSxHQUFBLFFBQUEsQ0FBQTtBQUN0QixRQUFBLE1BQUE7QUFBQSxNQUNHLEtBQUEsVUFBQTtBQUNILFFBQUEsYUFBQSxDQUFjLEtBQVEsR0FBQSxLQUFBLENBQUE7QUFDdEIsUUFBQSxNQUFBO0FBQUEsTUFDRyxLQUFBLElBQUE7QUFDSCxRQUFBLGFBQUEsQ0FBYyxLQUFRLEdBQUEsT0FBQSxDQUFBO0FBQ3RCLFFBQUEsTUFBQTtBQUFBLE1BQ0csS0FBQSxRQUFBO0FBQ0gsUUFBQSxhQUFBLENBQWMsS0FBUSxHQUFBLE9BQUEsQ0FBQTtBQUN0QixRQUFBLE1BQUE7QUFBQSxNQUNHLEtBQUEsU0FBQTtBQUNILFFBQUEsYUFBQSxDQUFjLEtBQVEsR0FBQSxNQUFBLENBQUE7QUFDdEIsUUFBQSxNQUFBO0FBQUEsTUFDRyxLQUFBLFFBQUE7QUFDSCxRQUFBLGFBQUEsQ0FBYyxLQUFRLEdBQUEsTUFBQSxDQUFBO0FBQ3RCLFFBQUEsTUFBQTtBQUFBLEtBQUE7QUFHSixJQUFPLE9BQUEsYUFBQSxDQUFBO0FBQUEsR0FDUixDQUFBLENBQUE7QUFFRCxFQUFPLE9BQUEsU0FBQSxDQUFBO0FBQ1QsQ0FBQTtBQUVPLFNBQVMsaUJBQWlCLFdBQWtCLEVBQUE7QUFDakQsRUFBQSxJQUFJLFFBQVEsRUFBQyxDQUFBO0FBR2IsRUFBTSxNQUFBLE1BQUEsR0FBUyxTQUFVLENBQUEsV0FBQSxFQUFhLElBQUksQ0FBQSxDQUFBO0FBRTFDLEVBQUEsTUFBTSxVQUFhLEdBQUEsT0FBQSxDQUFRLE1BQU8sQ0FBQSxDQUFBLENBQUEsRUFBSSxJQUFJLENBQUEsQ0FBQTtBQUMxQyxFQUFRLEtBQUEsR0FBQSxHQUFBLENBQUksVUFBWSxFQUFBLENBQUMsVUFBZSxLQUFBO0FBQ3RDLElBQUEsSUFBSSxXQUFXLE1BQVMsR0FBQSxDQUFBLElBQUssQ0FBQyxLQUFNLENBQUEsVUFBQSxFQUFZLFlBQVksQ0FBRyxFQUFBO0FBRTdELE1BQU8sT0FBQSxJQUFBLENBQUssVUFBWSxFQUFBLENBQUMsS0FBVSxLQUFBO0FBQ2pDLFFBQUEsT0FBTyxNQUFNLFNBQWMsS0FBQSxhQUFBLENBQUE7QUFBQSxPQUM1QixDQUFBLENBQUE7QUFBQSxLQUNJLE1BQUE7QUFDTCxNQUFBLE9BQU8sS0FBSyxVQUFVLENBQUEsQ0FBQTtBQUFBLEtBQ3hCO0FBQUEsR0FDRCxDQUFBLENBQUE7QUFFRCxFQUFRLEtBQUEsR0FBQSxNQUFBLENBQU8sS0FBTyxFQUFBLE1BQUEsQ0FBTyxDQUFFLENBQUEsQ0FBQSxDQUFBO0FBQy9CLEVBQU8sT0FBQSxLQUFBLENBQUE7QUFDVCxDQUFBO0FBRUEsU0FBUyxhQUFhLEtBQThCLEVBQUE7QUFDbEQsRUFBQSxPQUFPLE1BQU0sU0FBYyxLQUFBLGFBQUEsQ0FBQTtBQUM3Qjs7OzsifQ==
@@ -0,0 +1,2 @@
1
+ export { AnnotationsDataLayer } from './annotations/AnnotationsDataLayer.js';
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbXSwic291cmNlc0NvbnRlbnQiOltdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
@@ -0,0 +1,41 @@
1
+ import { Observable } from 'rxjs';
2
+ import { LoadingState } from '@grafana/schema';
3
+ import { sceneGraph } from '../core/sceneGraph/index.js';
4
+
5
+ function registerQueryWithController(entry) {
6
+ return (queryStream) => {
7
+ const queryControler = sceneGraph.getQueryController(entry.origin);
8
+ if (!queryControler) {
9
+ return queryStream;
10
+ }
11
+ return new Observable((observer) => {
12
+ if (!entry.cancel) {
13
+ entry.cancel = () => observer.complete();
14
+ }
15
+ queryControler.queryStarted(entry);
16
+ let markedAsCompleted = false;
17
+ const sub = queryStream.subscribe({
18
+ next: (v) => {
19
+ if (!markedAsCompleted && v.state !== LoadingState.Loading) {
20
+ markedAsCompleted = true;
21
+ queryControler.queryCompleted(entry);
22
+ }
23
+ observer.next(v);
24
+ },
25
+ error: (e) => observer.error(e),
26
+ complete: () => {
27
+ observer.complete();
28
+ }
29
+ });
30
+ return () => {
31
+ sub.unsubscribe();
32
+ if (!markedAsCompleted) {
33
+ queryControler.queryCompleted(entry);
34
+ }
35
+ };
36
+ });
37
+ };
38
+ }
39
+
40
+ export { registerQueryWithController };
41
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXJRdWVyeVdpdGhDb250cm9sbGVyLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcXVlcnlpbmcvcmVnaXN0ZXJRdWVyeVdpdGhDb250cm9sbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IExvYWRpbmdTdGF0ZSB9IGZyb20gJ0BncmFmYW5hL3NjaGVtYSc7XG5pbXBvcnQgeyBzY2VuZUdyYXBoIH0gZnJvbSAnLi4vY29yZS9zY2VuZUdyYXBoJztcbmltcG9ydCB7IFF1ZXJ5UmVzdWx0V2l0aFN0YXRlLCBTY2VuZVF1ZXJ5Q29udHJvbGxlckVudHJ5IH0gZnJvbSAnLi4vYmVoYXZpb3JzL1NjZW5lUXVlcnlDb250cm9sbGVyJztcblxuLyoqXG4gKiBXaWxsIGxvb2sgZm9yIGEgc2NlbmUgb2JqZWN0IHdpdGggYSBiZWhhdmlvciB0aGF0IGlzIGEgU2NlbmVRdWVyeUNvbnRyb2xsZXIgYW5kIHJlZ2lzdGVyIHRoZSBxdWVyeSB3aXRoIGl0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJRdWVyeVdpdGhDb250cm9sbGVyPFQgZXh0ZW5kcyBRdWVyeVJlc3VsdFdpdGhTdGF0ZT4oZW50cnk6IFNjZW5lUXVlcnlDb250cm9sbGVyRW50cnkpIHtcbiAgcmV0dXJuIChxdWVyeVN0cmVhbTogT2JzZXJ2YWJsZTxUPikgPT4ge1xuICAgIGNvbnN0IHF1ZXJ5Q29udHJvbGVyID0gc2NlbmVHcmFwaC5nZXRRdWVyeUNvbnRyb2xsZXIoZW50cnkub3JpZ2luKTtcbiAgICBpZiAoIXF1ZXJ5Q29udHJvbGVyKSB7XG4gICAgICByZXR1cm4gcXVlcnlTdHJlYW07XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPFQ+KChvYnNlcnZlcikgPT4ge1xuICAgICAgaWYgKCFlbnRyeS5jYW5jZWwpIHtcbiAgICAgICAgZW50cnkuY2FuY2VsID0gKCkgPT4gb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgIH1cblxuICAgICAgcXVlcnlDb250cm9sZXIucXVlcnlTdGFydGVkKGVudHJ5KTtcbiAgICAgIGxldCBtYXJrZWRBc0NvbXBsZXRlZCA9IGZhbHNlO1xuXG4gICAgICBjb25zdCBzdWIgPSBxdWVyeVN0cmVhbS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAodikgPT4ge1xuICAgICAgICAgIGlmICghbWFya2VkQXNDb21wbGV0ZWQgJiYgdi5zdGF0ZSAhPT0gTG9hZGluZ1N0YXRlLkxvYWRpbmcpIHtcbiAgICAgICAgICAgIG1hcmtlZEFzQ29tcGxldGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHF1ZXJ5Q29udHJvbGVyLnF1ZXJ5Q29tcGxldGVkKGVudHJ5KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBvYnNlcnZlci5uZXh0KHYpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGUpID0+IG9ic2VydmVyLmVycm9yKGUpLFxuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xuICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XG5cbiAgICAgICAgaWYgKCFtYXJrZWRBc0NvbXBsZXRlZCkge1xuICAgICAgICAgIHF1ZXJ5Q29udHJvbGVyLnF1ZXJ5Q29tcGxldGVkKGVudHJ5KTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9KTtcbiAgfTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBUU8sU0FBUyw0QkFBNEQsS0FBa0MsRUFBQTtBQUM1RyxFQUFBLE9BQU8sQ0FBQyxXQUErQixLQUFBO0FBQ3JDLElBQUEsTUFBTSxjQUFpQixHQUFBLFVBQUEsQ0FBVyxrQkFBbUIsQ0FBQSxLQUFBLENBQU0sTUFBTSxDQUFBLENBQUE7QUFDakUsSUFBQSxJQUFJLENBQUMsY0FBZ0IsRUFBQTtBQUNuQixNQUFPLE9BQUEsV0FBQSxDQUFBO0FBQUEsS0FDVDtBQUVBLElBQU8sT0FBQSxJQUFJLFVBQWMsQ0FBQSxDQUFDLFFBQWEsS0FBQTtBQUNyQyxNQUFJLElBQUEsQ0FBQyxNQUFNLE1BQVEsRUFBQTtBQUNqQixRQUFNLEtBQUEsQ0FBQSxNQUFBLEdBQVMsTUFBTSxRQUFBLENBQVMsUUFBUyxFQUFBLENBQUE7QUFBQSxPQUN6QztBQUVBLE1BQUEsY0FBQSxDQUFlLGFBQWEsS0FBSyxDQUFBLENBQUE7QUFDakMsTUFBQSxJQUFJLGlCQUFvQixHQUFBLEtBQUEsQ0FBQTtBQUV4QixNQUFNLE1BQUEsR0FBQSxHQUFNLFlBQVksU0FBVSxDQUFBO0FBQUEsUUFDaEMsSUFBQSxFQUFNLENBQUMsQ0FBTSxLQUFBO0FBQ1gsVUFBQSxJQUFJLENBQUMsaUJBQUEsSUFBcUIsQ0FBRSxDQUFBLEtBQUEsS0FBVSxhQUFhLE9BQVMsRUFBQTtBQUMxRCxZQUFvQixpQkFBQSxHQUFBLElBQUEsQ0FBQTtBQUNwQixZQUFBLGNBQUEsQ0FBZSxlQUFlLEtBQUssQ0FBQSxDQUFBO0FBQUEsV0FDckM7QUFFQSxVQUFBLFFBQUEsQ0FBUyxLQUFLLENBQUMsQ0FBQSxDQUFBO0FBQUEsU0FDakI7QUFBQSxRQUNBLEtBQU8sRUFBQSxDQUFDLENBQU0sS0FBQSxRQUFBLENBQVMsTUFBTSxDQUFDLENBQUE7QUFBQSxRQUM5QixVQUFVLE1BQU07QUFDZCxVQUFBLFFBQUEsQ0FBUyxRQUFTLEVBQUEsQ0FBQTtBQUFBLFNBQ3BCO0FBQUEsT0FDRCxDQUFBLENBQUE7QUFFRCxNQUFBLE9BQU8sTUFBTTtBQUNYLFFBQUEsR0FBQSxDQUFJLFdBQVksRUFBQSxDQUFBO0FBRWhCLFFBQUEsSUFBSSxDQUFDLGlCQUFtQixFQUFBO0FBQ3RCLFVBQUEsY0FBQSxDQUFlLGVBQWUsS0FBSyxDQUFBLENBQUE7QUFBQSxTQUNyQztBQUFBLE9BQ0YsQ0FBQTtBQUFBLEtBQ0QsQ0FBQSxDQUFBO0FBQUEsR0FDSCxDQUFBO0FBQ0Y7Ozs7In0=
@@ -0,0 +1,30 @@
1
+ class SceneObjectUrlSyncConfig {
2
+ constructor(_sceneObject, _options) {
3
+ this._sceneObject = _sceneObject;
4
+ this._nextChangeShouldAddHistoryStep = false;
5
+ this._keys = _options.keys;
6
+ }
7
+ getKeys() {
8
+ if (typeof this._keys === "function") {
9
+ return this._keys();
10
+ }
11
+ return this._keys;
12
+ }
13
+ getUrlState() {
14
+ return this._sceneObject.getUrlState();
15
+ }
16
+ updateFromUrl(values) {
17
+ this._sceneObject.updateFromUrl(values);
18
+ }
19
+ performBrowserHistoryAction(callback) {
20
+ this._nextChangeShouldAddHistoryStep = true;
21
+ callback();
22
+ this._nextChangeShouldAddHistoryStep = false;
23
+ }
24
+ shouldCreateHistoryStep(values) {
25
+ return this._nextChangeShouldAddHistoryStep;
26
+ }
27
+ }
28
+
29
+ export { SceneObjectUrlSyncConfig };
30
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NlbmVPYmplY3RVcmxTeW5jQ29uZmlnLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvU2NlbmVPYmplY3RVcmxTeW5jQ29uZmlnLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNjZW5lT2JqZWN0VXJsU3luY0hhbmRsZXIsIFNjZW5lT2JqZWN0V2l0aFVybFN5bmMsIFNjZW5lT2JqZWN0VXJsVmFsdWVzIH0gZnJvbSAnLi4vY29yZS90eXBlcyc7XG5cbmludGVyZmFjZSBTY2VuZU9iamVjdFVybFN5bmNDb25maWdPcHRpb25zIHtcbiAga2V5czogc3RyaW5nW10gfCAoKCkgPT4gc3RyaW5nW10pO1xufVxuXG5leHBvcnQgY2xhc3MgU2NlbmVPYmplY3RVcmxTeW5jQ29uZmlnIGltcGxlbWVudHMgU2NlbmVPYmplY3RVcmxTeW5jSGFuZGxlciB7XG4gIHByaXZhdGUgX2tleXM6IHN0cmluZ1tdIHwgKCgpID0+IHN0cmluZ1tdKTtcbiAgcHJpdmF0ZSBfbmV4dENoYW5nZVNob3VsZEFkZEhpc3RvcnlTdGVwID0gZmFsc2U7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgX3NjZW5lT2JqZWN0OiBTY2VuZU9iamVjdFdpdGhVcmxTeW5jLCBfb3B0aW9uczogU2NlbmVPYmplY3RVcmxTeW5jQ29uZmlnT3B0aW9ucykge1xuICAgIHRoaXMuX2tleXMgPSBfb3B0aW9ucy5rZXlzO1xuICB9XG5cbiAgcHVibGljIGdldEtleXMoKTogc3RyaW5nW10ge1xuICAgIGlmICh0eXBlb2YgdGhpcy5fa2V5cyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHRoaXMuX2tleXMoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fa2V5cztcbiAgfVxuXG4gIHB1YmxpYyBnZXRVcmxTdGF0ZSgpOiBTY2VuZU9iamVjdFVybFZhbHVlcyB7XG4gICAgcmV0dXJuIHRoaXMuX3NjZW5lT2JqZWN0LmdldFVybFN0YXRlKCk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlRnJvbVVybCh2YWx1ZXM6IFNjZW5lT2JqZWN0VXJsVmFsdWVzKTogdm9pZCB7XG4gICAgdGhpcy5fc2NlbmVPYmplY3QudXBkYXRlRnJvbVVybCh2YWx1ZXMpO1xuICB9XG5cbiAgcHVibGljIHBlcmZvcm1Ccm93c2VySGlzdG9yeUFjdGlvbihjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICAgIHRoaXMuX25leHRDaGFuZ2VTaG91bGRBZGRIaXN0b3J5U3RlcCA9IHRydWU7XG4gICAgY2FsbGJhY2soKTtcbiAgICB0aGlzLl9uZXh0Q2hhbmdlU2hvdWxkQWRkSGlzdG9yeVN0ZXAgPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBzaG91bGRDcmVhdGVIaXN0b3J5U3RlcCh2YWx1ZXM6IFNjZW5lT2JqZWN0VXJsVmFsdWVzKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX25leHRDaGFuZ2VTaG91bGRBZGRIaXN0b3J5U3RlcDtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1PLE1BQU0sd0JBQThELENBQUE7QUFBQSxFQUlsRSxXQUFBLENBQW9CLGNBQXNDLFFBQTJDLEVBQUE7QUFBakYsSUFBQSxJQUFBLENBQUEsWUFBQSxHQUFBLFlBQUEsQ0FBQTtBQUYzQixJQUFBLElBQUEsQ0FBUSwrQkFBa0MsR0FBQSxLQUFBLENBQUE7QUFHeEMsSUFBQSxJQUFBLENBQUssUUFBUSxRQUFTLENBQUEsSUFBQSxDQUFBO0FBQUEsR0FDeEI7QUFBQSxFQUVPLE9BQW9CLEdBQUE7QUFDekIsSUFBSSxJQUFBLE9BQU8sSUFBSyxDQUFBLEtBQUEsS0FBVSxVQUFZLEVBQUE7QUFDcEMsTUFBQSxPQUFPLEtBQUssS0FBTSxFQUFBLENBQUE7QUFBQSxLQUNwQjtBQUVBLElBQUEsT0FBTyxJQUFLLENBQUEsS0FBQSxDQUFBO0FBQUEsR0FDZDtBQUFBLEVBRU8sV0FBb0MsR0FBQTtBQUN6QyxJQUFPLE9BQUEsSUFBQSxDQUFLLGFBQWEsV0FBWSxFQUFBLENBQUE7QUFBQSxHQUN2QztBQUFBLEVBRU8sY0FBYyxNQUFvQyxFQUFBO0FBQ3ZELElBQUssSUFBQSxDQUFBLFlBQUEsQ0FBYSxjQUFjLE1BQU0sQ0FBQSxDQUFBO0FBQUEsR0FDeEM7QUFBQSxFQUVPLDRCQUE0QixRQUFzQixFQUFBO0FBQ3ZELElBQUEsSUFBQSxDQUFLLCtCQUFrQyxHQUFBLElBQUEsQ0FBQTtBQUN2QyxJQUFTLFFBQUEsRUFBQSxDQUFBO0FBQ1QsSUFBQSxJQUFBLENBQUssK0JBQWtDLEdBQUEsS0FBQSxDQUFBO0FBQUEsR0FDekM7QUFBQSxFQUVPLHdCQUF3QixNQUF1QyxFQUFBO0FBQ3BFLElBQUEsT0FBTyxJQUFLLENBQUEsK0JBQUEsQ0FBQTtBQUFBLEdBQ2Q7QUFDRjs7OzsifQ==
@@ -0,0 +1,45 @@
1
+ import { sceneGraph } from '../core/sceneGraph/index.js';
2
+
3
+ class UniqueUrlKeyMapper {
4
+ constructor() {
5
+ this.index = /* @__PURE__ */ new Map();
6
+ }
7
+ getUniqueKey(key, obj) {
8
+ const objectsWithKey = this.index.get(key);
9
+ if (!objectsWithKey) {
10
+ this.index.set(key, [obj]);
11
+ return key;
12
+ }
13
+ let address = objectsWithKey.findIndex((o) => o === obj);
14
+ if (address === -1) {
15
+ filterOutOrphanedObjects(objectsWithKey);
16
+ objectsWithKey.push(obj);
17
+ address = objectsWithKey.length - 1;
18
+ }
19
+ if (address > 0) {
20
+ return `${key}-${address + 1}`;
21
+ }
22
+ return key;
23
+ }
24
+ clear() {
25
+ this.index.clear();
26
+ }
27
+ }
28
+ function filterOutOrphanedObjects(sceneObjects) {
29
+ for (const obj of sceneObjects) {
30
+ if (isOrphanOrInActive(obj)) {
31
+ const index = sceneObjects.indexOf(obj);
32
+ sceneObjects.splice(index, 1);
33
+ }
34
+ }
35
+ }
36
+ function isOrphanOrInActive(obj) {
37
+ const root = obj.getRoot();
38
+ if (!sceneGraph.findObject(root, (child) => child === obj)) {
39
+ return true;
40
+ }
41
+ return false;
42
+ }
43
+
44
+ export { UniqueUrlKeyMapper };
45
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVW5pcXVlVXJsS2V5TWFwcGVyLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvVW5pcXVlVXJsS2V5TWFwcGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNjZW5lR3JhcGggfSBmcm9tICcuLi9jb3JlL3NjZW5lR3JhcGgnO1xuaW1wb3J0IHsgU2NlbmVPYmplY3QgfSBmcm9tICcuLi9jb3JlL3R5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBTY2VuZU9iamVjdFdpdGhEZXB0aCB7XG4gIHNjZW5lT2JqZWN0OiBTY2VuZU9iamVjdDtcbiAgZGVwdGg6IG51bWJlcjtcbn1cblxuZXhwb3J0IGNsYXNzIFVuaXF1ZVVybEtleU1hcHBlciB7XG4gIHByaXZhdGUgaW5kZXggPSBuZXcgTWFwPHN0cmluZywgU2NlbmVPYmplY3RbXT4oKTtcblxuICBwdWJsaWMgZ2V0VW5pcXVlS2V5KGtleTogc3RyaW5nLCBvYmo6IFNjZW5lT2JqZWN0KSB7XG4gICAgY29uc3Qgb2JqZWN0c1dpdGhLZXkgPSB0aGlzLmluZGV4LmdldChrZXkpO1xuXG4gICAgaWYgKCFvYmplY3RzV2l0aEtleSkge1xuICAgICAgdGhpcy5pbmRleC5zZXQoa2V5LCBbb2JqXSk7XG4gICAgICByZXR1cm4ga2V5O1xuICAgIH1cblxuICAgIGxldCBhZGRyZXNzID0gb2JqZWN0c1dpdGhLZXkuZmluZEluZGV4KChvKSA9PiBvID09PSBvYmopO1xuICAgIGlmIChhZGRyZXNzID09PSAtMSkge1xuICAgICAgZmlsdGVyT3V0T3JwaGFuZWRPYmplY3RzKG9iamVjdHNXaXRoS2V5KTtcbiAgICAgIG9iamVjdHNXaXRoS2V5LnB1c2gob2JqKTtcblxuICAgICAgYWRkcmVzcyA9IG9iamVjdHNXaXRoS2V5Lmxlbmd0aCAtIDE7XG4gICAgfVxuXG4gICAgaWYgKGFkZHJlc3MgPiAwKSB7XG4gICAgICByZXR1cm4gYCR7a2V5fS0ke2FkZHJlc3MgKyAxfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGtleTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhcigpIHtcbiAgICB0aGlzLmluZGV4LmNsZWFyKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZmlsdGVyT3V0T3JwaGFuZWRPYmplY3RzKHNjZW5lT2JqZWN0czogU2NlbmVPYmplY3RbXSkge1xuICBmb3IgKGNvbnN0IG9iaiBvZiBzY2VuZU9iamVjdHMpIHtcbiAgICBpZiAoaXNPcnBoYW5PckluQWN0aXZlKG9iaikpIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gc2NlbmVPYmplY3RzLmluZGV4T2Yob2JqKTtcbiAgICAgIHNjZW5lT2JqZWN0cy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBpc09ycGhhbk9ySW5BY3RpdmUob2JqOiBTY2VuZU9iamVjdCkge1xuICBjb25zdCByb290ID0gb2JqLmdldFJvb3QoKTtcblxuICAvLyBJZiB3ZSBjYW5ub3QgZmluZCBpdCBmcm9tIHRoZSByb290IGl0J3MgYW4gb3JwaGFuXG4gIGlmICghc2NlbmVHcmFwaC5maW5kT2JqZWN0KHJvb3QsIChjaGlsZCkgPT4gY2hpbGQgPT09IG9iaikpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVFPLE1BQU0sa0JBQW1CLENBQUE7QUFBQSxFQUF6QixXQUFBLEdBQUE7QUFDTCxJQUFRLElBQUEsQ0FBQSxLQUFBLHVCQUFZLEdBQTJCLEVBQUEsQ0FBQTtBQUFBLEdBQUE7QUFBQSxFQUV4QyxZQUFBLENBQWEsS0FBYSxHQUFrQixFQUFBO0FBQ2pELElBQUEsTUFBTSxjQUFpQixHQUFBLElBQUEsQ0FBSyxLQUFNLENBQUEsR0FBQSxDQUFJLEdBQUcsQ0FBQSxDQUFBO0FBRXpDLElBQUEsSUFBSSxDQUFDLGNBQWdCLEVBQUE7QUFDbkIsTUFBQSxJQUFBLENBQUssS0FBTSxDQUFBLEdBQUEsQ0FBSSxHQUFLLEVBQUEsQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFBO0FBQ3pCLE1BQU8sT0FBQSxHQUFBLENBQUE7QUFBQSxLQUNUO0FBRUEsSUFBQSxJQUFJLFVBQVUsY0FBZSxDQUFBLFNBQUEsQ0FBVSxDQUFDLENBQUEsS0FBTSxNQUFNLEdBQUcsQ0FBQSxDQUFBO0FBQ3ZELElBQUEsSUFBSSxZQUFZLENBQUksQ0FBQSxFQUFBO0FBQ2xCLE1BQUEsd0JBQUEsQ0FBeUIsY0FBYyxDQUFBLENBQUE7QUFDdkMsTUFBQSxjQUFBLENBQWUsS0FBSyxHQUFHLENBQUEsQ0FBQTtBQUV2QixNQUFBLE9BQUEsR0FBVSxlQUFlLE1BQVMsR0FBQSxDQUFBLENBQUE7QUFBQSxLQUNwQztBQUVBLElBQUEsSUFBSSxVQUFVLENBQUcsRUFBQTtBQUNmLE1BQU8sT0FBQSxDQUFBLEVBQUcsT0FBTyxPQUFVLEdBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUFBLEtBQzdCO0FBRUEsSUFBTyxPQUFBLEdBQUEsQ0FBQTtBQUFBLEdBQ1Q7QUFBQSxFQUVPLEtBQVEsR0FBQTtBQUNiLElBQUEsSUFBQSxDQUFLLE1BQU0sS0FBTSxFQUFBLENBQUE7QUFBQSxHQUNuQjtBQUNGLENBQUE7QUFFQSxTQUFTLHlCQUF5QixZQUE2QixFQUFBO0FBQzdELEVBQUEsS0FBQSxNQUFXLE9BQU8sWUFBYyxFQUFBO0FBQzlCLElBQUksSUFBQSxrQkFBQSxDQUFtQixHQUFHLENBQUcsRUFBQTtBQUMzQixNQUFNLE1BQUEsS0FBQSxHQUFRLFlBQWEsQ0FBQSxPQUFBLENBQVEsR0FBRyxDQUFBLENBQUE7QUFDdEMsTUFBYSxZQUFBLENBQUEsTUFBQSxDQUFPLE9BQU8sQ0FBQyxDQUFBLENBQUE7QUFBQSxLQUM5QjtBQUFBLEdBQ0Y7QUFDRixDQUFBO0FBRUEsU0FBUyxtQkFBbUIsR0FBa0IsRUFBQTtBQUM1QyxFQUFNLE1BQUEsSUFBQSxHQUFPLElBQUksT0FBUSxFQUFBLENBQUE7QUFHekIsRUFBSSxJQUFBLENBQUMsV0FBVyxVQUFXLENBQUEsSUFBQSxFQUFNLENBQUMsS0FBVSxLQUFBLEtBQUEsS0FBVSxHQUFHLENBQUcsRUFBQTtBQUMxRCxJQUFPLE9BQUEsSUFBQSxDQUFBO0FBQUEsR0FDVDtBQUVBLEVBQU8sT0FBQSxLQUFBLENBQUE7QUFDVDs7OzsifQ==
@@ -0,0 +1,17 @@
1
+ import { useUrlSync } from './useUrlSync.js';
2
+
3
+ function UrlSyncContextProvider({
4
+ children,
5
+ scene,
6
+ updateUrlOnInit,
7
+ createBrowserHistorySteps
8
+ }) {
9
+ const isInitialized = useUrlSync(scene, { updateUrlOnInit, createBrowserHistorySteps });
10
+ if (!isInitialized) {
11
+ return null;
12
+ }
13
+ return children;
14
+ }
15
+
16
+ export { UrlSyncContextProvider };
17
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXJsU3luY0NvbnRleHRQcm92aWRlci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NlcnZpY2VzL1VybFN5bmNDb250ZXh0UHJvdmlkZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2NlbmVPYmplY3QsIFNjZW5lVXJsU3luY09wdGlvbnMgfSBmcm9tICcuLi9jb3JlL3R5cGVzJztcbmltcG9ydCB7IHVzZVVybFN5bmMgfSBmcm9tICcuL3VzZVVybFN5bmMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVybFN5bmNDb250ZXh0UHJvdmlkZXJQcm9wcyBleHRlbmRzIFNjZW5lVXJsU3luY09wdGlvbnMge1xuICBzY2VuZTogU2NlbmVPYmplY3Q7XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG59XG5cbi8qKlxuICogUmlnaHQgbm93IHRoaXMgaXMgYWN0dWFsbHkgbm90IGRlZmluaW5nIGEgY29udGV4dCwgYnV0IHRoaW5rIGl0IG1pZ2h0IGluIHRoZSBmdXR1cmUgKHdpdGggVXJsU3luY01hbmFnZXIgYXMgdGhlIGNvbnRleHQgdmFsdWUpXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIFVybFN5bmNDb250ZXh0UHJvdmlkZXIoe1xuICBjaGlsZHJlbixcbiAgc2NlbmUsXG4gIHVwZGF0ZVVybE9uSW5pdCxcbiAgY3JlYXRlQnJvd3Nlckhpc3RvcnlTdGVwcyxcbn06IFVybFN5bmNDb250ZXh0UHJvdmlkZXJQcm9wcykge1xuICBjb25zdCBpc0luaXRpYWxpemVkID0gdXNlVXJsU3luYyhzY2VuZSwgeyB1cGRhdGVVcmxPbkluaXQsIGNyZWF0ZUJyb3dzZXJIaXN0b3J5U3RlcHMgfSk7XG5cbiAgaWYgKCFpc0luaXRpYWxpemVkKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gY2hpbGRyZW47XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFZTyxTQUFTLHNCQUF1QixDQUFBO0FBQUEsRUFDckMsUUFBQTtBQUFBLEVBQ0EsS0FBQTtBQUFBLEVBQ0EsZUFBQTtBQUFBLEVBQ0EseUJBQUE7QUFDRixDQUFnQyxFQUFBO0FBQzlCLEVBQUEsTUFBTSxnQkFBZ0IsVUFBVyxDQUFBLEtBQUEsRUFBTyxFQUFFLGVBQUEsRUFBaUIsMkJBQTJCLENBQUEsQ0FBQTtBQUV0RixFQUFBLElBQUksQ0FBQyxhQUFlLEVBQUE7QUFDbEIsSUFBTyxPQUFBLElBQUEsQ0FBQTtBQUFBLEdBQ1Q7QUFFQSxFQUFPLE9BQUEsUUFBQSxDQUFBO0FBQ1Q7Ozs7In0=