@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,104 @@
1
+ import { PluginPage } from '@grafana/runtime';
2
+ import React, { useContext, useLayoutEffect, useEffect } from 'react';
3
+ import { SceneDebugger } from '../SceneDebugger/SceneDebugger.js';
4
+ import { SceneAppPage } from './SceneAppPage.js';
5
+ import { useAppQueryParams, getUrlWithAppState, renderSceneComponentWithRouteProps } from './utils.js';
6
+ import { useUrlSync } from '../../services/useUrlSync.js';
7
+ import { SceneAppContext } from './SceneApp.js';
8
+ import { useLocationServiceSafe } from '../../utils/utils.js';
9
+
10
+ function SceneAppPageView({ page, routeProps }) {
11
+ const containerPage = getParentPageIfTab(page);
12
+ const containerState = containerPage.useState();
13
+ const params = useAppQueryParams();
14
+ const scene = page.getScene(routeProps.match);
15
+ const appContext = useContext(SceneAppContext);
16
+ const isInitialized = containerState.initializedScene === scene;
17
+ const { layout } = page.state;
18
+ const locationService = useLocationServiceSafe();
19
+ useLayoutEffect(() => {
20
+ if (!isInitialized) {
21
+ containerPage.initializeScene(scene);
22
+ }
23
+ }, [scene, containerPage, isInitialized]);
24
+ useEffect(() => {
25
+ return () => containerPage.setState({ initializedScene: void 0 });
26
+ }, [containerPage]);
27
+ const urlSyncInitialized = useUrlSync(containerPage, appContext == null ? void 0 : appContext.state.urlSyncOptions);
28
+ if (!isInitialized && !urlSyncInitialized) {
29
+ return null;
30
+ }
31
+ const pageNav = {
32
+ text: containerState.title,
33
+ img: containerState.titleImg,
34
+ icon: containerState.titleIcon,
35
+ url: getUrlWithAppState(containerState.url, locationService.getSearchObject(), containerState.preserveUrlKeys),
36
+ hideFromBreadcrumbs: containerState.hideFromBreadcrumbs,
37
+ parentItem: getParentBreadcrumbs(
38
+ containerState.getParentPage ? containerState.getParentPage() : containerPage.parent,
39
+ params,
40
+ locationService.getSearchObject()
41
+ )
42
+ };
43
+ if (containerState.tabs) {
44
+ pageNav.children = containerState.tabs.map((tab) => {
45
+ return {
46
+ text: tab.state.title,
47
+ icon: tab.state.titleIcon,
48
+ tabSuffix: tab.state.tabSuffix,
49
+ active: page === tab,
50
+ url: getUrlWithAppState(tab.state.url, locationService.getSearchObject(), tab.state.preserveUrlKeys),
51
+ parentItem: pageNav
52
+ };
53
+ });
54
+ }
55
+ let pageActions = [];
56
+ if (containerState.controls) {
57
+ pageActions = containerState.controls.map((control) => /* @__PURE__ */ React.createElement(control.Component, {
58
+ model: control,
59
+ key: control.state.key
60
+ }));
61
+ }
62
+ if (params["scene-debugger"]) {
63
+ pageActions.push(/* @__PURE__ */ React.createElement(SceneDebugger, {
64
+ scene: containerPage,
65
+ key: "scene-debugger"
66
+ }));
67
+ }
68
+ return /* @__PURE__ */ React.createElement(PluginPage, {
69
+ layout,
70
+ pageNav,
71
+ actions: pageActions,
72
+ renderTitle: containerState.renderTitle,
73
+ subTitle: containerState.subTitle
74
+ }, /* @__PURE__ */ React.createElement(scene.Component, {
75
+ model: scene
76
+ }));
77
+ }
78
+ function getParentPageIfTab(page) {
79
+ if (page.parent instanceof SceneAppPage) {
80
+ return page.parent;
81
+ }
82
+ return page;
83
+ }
84
+ function getParentBreadcrumbs(parent, params, searchObject) {
85
+ if (parent instanceof SceneAppPage) {
86
+ return {
87
+ text: parent.state.title,
88
+ url: getUrlWithAppState(parent.state.url, searchObject, parent.state.preserveUrlKeys),
89
+ hideFromBreadcrumbs: parent.state.hideFromBreadcrumbs,
90
+ parentItem: getParentBreadcrumbs(
91
+ parent.state.getParentPage ? parent.state.getParentPage() : parent.parent,
92
+ params,
93
+ searchObject
94
+ )
95
+ };
96
+ }
97
+ return void 0;
98
+ }
99
+ function SceneAppDrilldownViewRender({ drilldown, parent, routeProps }) {
100
+ return renderSceneComponentWithRouteProps(parent.getDrilldownPage(drilldown, routeProps.match), routeProps);
101
+ }
102
+
103
+ export { SceneAppDrilldownViewRender, SceneAppPageView };
104
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NlbmVBcHBQYWdlVmlldy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvU2NlbmVBcHAvU2NlbmVBcHBQYWdlVmlldy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmF2TW9kZWxJdGVtLCBVcmxRdWVyeU1hcCB9IGZyb20gJ0BncmFmYW5hL2RhdGEnO1xuaW1wb3J0IHsgUGx1Z2luUGFnZSB9IGZyb20gJ0BncmFmYW5hL3J1bnRpbWUnO1xuaW1wb3J0IFJlYWN0LCB7IHVzZUNvbnRleHQsIHVzZUVmZmVjdCwgdXNlTGF5b3V0RWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgeyBSb3V0ZUNvbXBvbmVudFByb3BzIH0gZnJvbSAncmVhY3Qtcm91dGVyLWRvbSc7XG5pbXBvcnQgeyBTY2VuZU9iamVjdCB9IGZyb20gJy4uLy4uL2NvcmUvdHlwZXMnO1xuaW1wb3J0IHsgU2NlbmVEZWJ1Z2dlciB9IGZyb20gJy4uL1NjZW5lRGVidWdnZXIvU2NlbmVEZWJ1Z2dlcic7XG5pbXBvcnQgeyBTY2VuZUFwcFBhZ2UgfSBmcm9tICcuL1NjZW5lQXBwUGFnZSc7XG5pbXBvcnQgeyBTY2VuZUFwcERyaWxsZG93blZpZXcsIFNjZW5lQXBwUGFnZUxpa2UgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGdldFVybFdpdGhBcHBTdGF0ZSwgcmVuZGVyU2NlbmVDb21wb25lbnRXaXRoUm91dGVQcm9wcywgdXNlQXBwUXVlcnlQYXJhbXMgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IHVzZVVybFN5bmMgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91c2VVcmxTeW5jJztcbmltcG9ydCB7IFNjZW5lQXBwQ29udGV4dCB9IGZyb20gJy4vU2NlbmVBcHAnO1xuaW1wb3J0IHsgdXNlTG9jYXRpb25TZXJ2aWNlU2FmZSB9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBQcm9wcyB7XG4gIHBhZ2U6IFNjZW5lQXBwUGFnZUxpa2U7XG4gIHJvdXRlUHJvcHM6IFJvdXRlQ29tcG9uZW50UHJvcHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTY2VuZUFwcFBhZ2VWaWV3KHsgcGFnZSwgcm91dGVQcm9wcyB9OiBQcm9wcykge1xuICBjb25zdCBjb250YWluZXJQYWdlID0gZ2V0UGFyZW50UGFnZUlmVGFiKHBhZ2UpO1xuICBjb25zdCBjb250YWluZXJTdGF0ZSA9IGNvbnRhaW5lclBhZ2UudXNlU3RhdGUoKTtcbiAgY29uc3QgcGFyYW1zID0gdXNlQXBwUXVlcnlQYXJhbXMoKTtcbiAgY29uc3Qgc2NlbmUgPSBwYWdlLmdldFNjZW5lKHJvdXRlUHJvcHMubWF0Y2gpO1xuICBjb25zdCBhcHBDb250ZXh0ID0gdXNlQ29udGV4dChTY2VuZUFwcENvbnRleHQpO1xuICBjb25zdCBpc0luaXRpYWxpemVkID0gY29udGFpbmVyU3RhdGUuaW5pdGlhbGl6ZWRTY2VuZSA9PT0gc2NlbmU7XG4gIGNvbnN0IHsgbGF5b3V0IH0gPSBwYWdlLnN0YXRlO1xuICBjb25zdCBsb2NhdGlvblNlcnZpY2UgPSB1c2VMb2NhdGlvblNlcnZpY2VTYWZlKCk7XG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICAvLyBCZWZvcmUgcmVuZGVyaW5nIHNjZW5lIGNvbXBvbmVudHMsIHdlIGFyZSBtYWtpbmcgc3VyZSB0aGUgVVJMIHN5bmMgaXMgZW5hYmxlZCBmb3IuXG4gICAgaWYgKCFpc0luaXRpYWxpemVkKSB7XG4gICAgICBjb250YWluZXJQYWdlLmluaXRpYWxpemVTY2VuZShzY2VuZSk7XG4gICAgfVxuICB9LCBbc2NlbmUsIGNvbnRhaW5lclBhZ2UsIGlzSW5pdGlhbGl6ZWRdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIENsZWFyIGluaXRpYWxpemVkU2NlbmUgd2hlbiB1bm1vdW50aW5nXG4gICAgcmV0dXJuICgpID0+IGNvbnRhaW5lclBhZ2Uuc2V0U3RhdGUoeyBpbml0aWFsaXplZFNjZW5lOiB1bmRlZmluZWQgfSk7XG4gIH0sIFtjb250YWluZXJQYWdlXSk7XG5cbiAgY29uc3QgdXJsU3luY0luaXRpYWxpemVkID0gdXNlVXJsU3luYyhjb250YWluZXJQYWdlLCBhcHBDb250ZXh0Py5zdGF0ZS51cmxTeW5jT3B0aW9ucyk7XG5cbiAgaWYgKCFpc0luaXRpYWxpemVkICYmICF1cmxTeW5jSW5pdGlhbGl6ZWQpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHBhZ2VOYXY6IE5hdk1vZGVsSXRlbSA9IHtcbiAgICB0ZXh0OiBjb250YWluZXJTdGF0ZS50aXRsZSxcbiAgICBpbWc6IGNvbnRhaW5lclN0YXRlLnRpdGxlSW1nLFxuICAgIGljb246IGNvbnRhaW5lclN0YXRlLnRpdGxlSWNvbixcbiAgICB1cmw6IGdldFVybFdpdGhBcHBTdGF0ZShjb250YWluZXJTdGF0ZS51cmwsIGxvY2F0aW9uU2VydmljZS5nZXRTZWFyY2hPYmplY3QoKSwgY29udGFpbmVyU3RhdGUucHJlc2VydmVVcmxLZXlzKSxcbiAgICBoaWRlRnJvbUJyZWFkY3J1bWJzOiBjb250YWluZXJTdGF0ZS5oaWRlRnJvbUJyZWFkY3J1bWJzLFxuICAgIHBhcmVudEl0ZW06IGdldFBhcmVudEJyZWFkY3J1bWJzKFxuICAgICAgY29udGFpbmVyU3RhdGUuZ2V0UGFyZW50UGFnZSA/IGNvbnRhaW5lclN0YXRlLmdldFBhcmVudFBhZ2UoKSA6IGNvbnRhaW5lclBhZ2UucGFyZW50LFxuICAgICAgcGFyYW1zLFxuICAgICAgbG9jYXRpb25TZXJ2aWNlLmdldFNlYXJjaE9iamVjdCgpXG4gICAgKSxcbiAgfTtcblxuICBpZiAoY29udGFpbmVyU3RhdGUudGFicykge1xuICAgIHBhZ2VOYXYuY2hpbGRyZW4gPSBjb250YWluZXJTdGF0ZS50YWJzLm1hcCgodGFiKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0ZXh0OiB0YWIuc3RhdGUudGl0bGUsXG4gICAgICAgIGljb246IHRhYi5zdGF0ZS50aXRsZUljb24sXG4gICAgICAgIHRhYlN1ZmZpeDogdGFiLnN0YXRlLnRhYlN1ZmZpeCxcbiAgICAgICAgYWN0aXZlOiBwYWdlID09PSB0YWIsXG4gICAgICAgIHVybDogZ2V0VXJsV2l0aEFwcFN0YXRlKHRhYi5zdGF0ZS51cmwsIGxvY2F0aW9uU2VydmljZS5nZXRTZWFyY2hPYmplY3QoKSwgdGFiLnN0YXRlLnByZXNlcnZlVXJsS2V5cyksXG4gICAgICAgIHBhcmVudEl0ZW06IHBhZ2VOYXYsXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgbGV0IHBhZ2VBY3Rpb25zOiBSZWFjdC5SZWFjdE5vZGVbXSA9IFtdO1xuICBpZiAoY29udGFpbmVyU3RhdGUuY29udHJvbHMpIHtcbiAgICBwYWdlQWN0aW9ucyA9IGNvbnRhaW5lclN0YXRlLmNvbnRyb2xzLm1hcCgoY29udHJvbCkgPT4gKFxuICAgICAgPGNvbnRyb2wuQ29tcG9uZW50IG1vZGVsPXtjb250cm9sfSBrZXk9e2NvbnRyb2wuc3RhdGUua2V5fSAvPlxuICAgICkpO1xuICB9XG5cbiAgaWYgKHBhcmFtc1snc2NlbmUtZGVidWdnZXInXSkge1xuICAgIHBhZ2VBY3Rpb25zLnB1c2goPFNjZW5lRGVidWdnZXIgc2NlbmU9e2NvbnRhaW5lclBhZ2V9IGtleT17J3NjZW5lLWRlYnVnZ2VyJ30gLz4pO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8UGx1Z2luUGFnZVxuICAgICAgbGF5b3V0PXtsYXlvdXR9XG4gICAgICBwYWdlTmF2PXtwYWdlTmF2fVxuICAgICAgYWN0aW9ucz17cGFnZUFjdGlvbnN9XG4gICAgICByZW5kZXJUaXRsZT17Y29udGFpbmVyU3RhdGUucmVuZGVyVGl0bGV9XG4gICAgICBzdWJUaXRsZT17Y29udGFpbmVyU3RhdGUuc3ViVGl0bGV9XG4gICAgPlxuICAgICAgPHNjZW5lLkNvbXBvbmVudCBtb2RlbD17c2NlbmV9IC8+XG4gICAgPC9QbHVnaW5QYWdlPlxuICApO1xufVxuXG4vKipcbiAqIEZvciBwYWdlcyB0aGF0IGFyZSBcInRhYnNcIiB0aGlzIHdpbGwgcmV0dXJuIHRoZSBwYXJlbnQgcGFnZVxuICovXG5mdW5jdGlvbiBnZXRQYXJlbnRQYWdlSWZUYWIocGFnZTogU2NlbmVBcHBQYWdlTGlrZSkge1xuICBpZiAocGFnZS5wYXJlbnQgaW5zdGFuY2VvZiBTY2VuZUFwcFBhZ2UpIHtcbiAgICByZXR1cm4gcGFnZS5wYXJlbnQ7XG4gIH1cblxuICByZXR1cm4gcGFnZTtcbn1cblxuZnVuY3Rpb24gZ2V0UGFyZW50QnJlYWRjcnVtYnMoXG4gIHBhcmVudDogU2NlbmVPYmplY3QgfCB1bmRlZmluZWQsXG4gIHBhcmFtczogVXJsUXVlcnlNYXAsXG4gIHNlYXJjaE9iamVjdDogVXJsUXVlcnlNYXBcbik6IE5hdk1vZGVsSXRlbSB8IHVuZGVmaW5lZCB7XG4gIGlmIChwYXJlbnQgaW5zdGFuY2VvZiBTY2VuZUFwcFBhZ2UpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGV4dDogcGFyZW50LnN0YXRlLnRpdGxlLFxuICAgICAgdXJsOiBnZXRVcmxXaXRoQXBwU3RhdGUocGFyZW50LnN0YXRlLnVybCwgc2VhcmNoT2JqZWN0LCBwYXJlbnQuc3RhdGUucHJlc2VydmVVcmxLZXlzKSxcbiAgICAgIGhpZGVGcm9tQnJlYWRjcnVtYnM6IHBhcmVudC5zdGF0ZS5oaWRlRnJvbUJyZWFkY3J1bWJzLFxuICAgICAgcGFyZW50SXRlbTogZ2V0UGFyZW50QnJlYWRjcnVtYnMoXG4gICAgICAgIHBhcmVudC5zdGF0ZS5nZXRQYXJlbnRQYWdlID8gcGFyZW50LnN0YXRlLmdldFBhcmVudFBhZ2UoKSA6IHBhcmVudC5wYXJlbnQsXG4gICAgICAgIHBhcmFtcyxcbiAgICAgICAgc2VhcmNoT2JqZWN0XG4gICAgICApLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjZW5lQXBwRHJpbGxkb3duVmlld1JlbmRlclByb3BzIHtcbiAgZHJpbGxkb3duOiBTY2VuZUFwcERyaWxsZG93blZpZXc7XG4gIHBhcmVudDogU2NlbmVBcHBQYWdlTGlrZTtcbiAgcm91dGVQcm9wczogUm91dGVDb21wb25lbnRQcm9wcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFNjZW5lQXBwRHJpbGxkb3duVmlld1JlbmRlcih7IGRyaWxsZG93biwgcGFyZW50LCByb3V0ZVByb3BzIH06IFNjZW5lQXBwRHJpbGxkb3duVmlld1JlbmRlclByb3BzKSB7XG4gIHJldHVybiByZW5kZXJTY2VuZUNvbXBvbmVudFdpdGhSb3V0ZVByb3BzKHBhcmVudC5nZXREcmlsbGRvd25QYWdlKGRyaWxsZG93biwgcm91dGVQcm9wcy5tYXRjaCksIHJvdXRlUHJvcHMpO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQW1CTyxTQUFTLGdCQUFpQixDQUFBLEVBQUUsSUFBTSxFQUFBLFVBQUEsRUFBcUIsRUFBQTtBQUM1RCxFQUFNLE1BQUEsYUFBQSxHQUFnQixtQkFBbUIsSUFBSSxDQUFBLENBQUE7QUFDN0MsRUFBTSxNQUFBLGNBQUEsR0FBaUIsY0FBYyxRQUFTLEVBQUEsQ0FBQTtBQUM5QyxFQUFBLE1BQU0sU0FBUyxpQkFBa0IsRUFBQSxDQUFBO0FBQ2pDLEVBQUEsTUFBTSxLQUFRLEdBQUEsSUFBQSxDQUFLLFFBQVMsQ0FBQSxVQUFBLENBQVcsS0FBSyxDQUFBLENBQUE7QUFDNUMsRUFBTSxNQUFBLFVBQUEsR0FBYSxXQUFXLGVBQWUsQ0FBQSxDQUFBO0FBQzdDLEVBQU0sTUFBQSxhQUFBLEdBQWdCLGVBQWUsZ0JBQXFCLEtBQUEsS0FBQSxDQUFBO0FBQzFELEVBQU0sTUFBQSxFQUFFLE1BQU8sRUFBQSxHQUFJLElBQUssQ0FBQSxLQUFBLENBQUE7QUFDeEIsRUFBQSxNQUFNLGtCQUFrQixzQkFBdUIsRUFBQSxDQUFBO0FBRS9DLEVBQUEsZUFBQSxDQUFnQixNQUFNO0FBRXBCLElBQUEsSUFBSSxDQUFDLGFBQWUsRUFBQTtBQUNsQixNQUFBLGFBQUEsQ0FBYyxnQkFBZ0IsS0FBSyxDQUFBLENBQUE7QUFBQSxLQUNyQztBQUFBLEdBQ0MsRUFBQSxDQUFDLEtBQU8sRUFBQSxhQUFBLEVBQWUsYUFBYSxDQUFDLENBQUEsQ0FBQTtBQUV4QyxFQUFBLFNBQUEsQ0FBVSxNQUFNO0FBRWQsSUFBQSxPQUFPLE1BQU0sYUFBYyxDQUFBLFFBQUEsQ0FBUyxFQUFFLGdCQUFBLEVBQWtCLFFBQVcsQ0FBQSxDQUFBO0FBQUEsR0FDckUsRUFBRyxDQUFDLGFBQWEsQ0FBQyxDQUFBLENBQUE7QUFFbEIsRUFBQSxNQUFNLGtCQUFxQixHQUFBLFVBQUEsQ0FBVyxhQUFlLEVBQUEsVUFBQSxJQUFBLElBQUEsR0FBQSxLQUFBLENBQUEsR0FBQSxVQUFBLENBQVksTUFBTSxjQUFjLENBQUEsQ0FBQTtBQUVyRixFQUFJLElBQUEsQ0FBQyxhQUFpQixJQUFBLENBQUMsa0JBQW9CLEVBQUE7QUFDekMsSUFBTyxPQUFBLElBQUEsQ0FBQTtBQUFBLEdBQ1Q7QUFFQSxFQUFBLE1BQU0sT0FBd0IsR0FBQTtBQUFBLElBQzVCLE1BQU0sY0FBZSxDQUFBLEtBQUE7QUFBQSxJQUNyQixLQUFLLGNBQWUsQ0FBQSxRQUFBO0FBQUEsSUFDcEIsTUFBTSxjQUFlLENBQUEsU0FBQTtBQUFBLElBQ3JCLEdBQUEsRUFBSyxtQkFBbUIsY0FBZSxDQUFBLEdBQUEsRUFBSyxnQkFBZ0IsZUFBZ0IsRUFBQSxFQUFHLGVBQWUsZUFBZSxDQUFBO0FBQUEsSUFDN0cscUJBQXFCLGNBQWUsQ0FBQSxtQkFBQTtBQUFBLElBQ3BDLFVBQVksRUFBQSxvQkFBQTtBQUFBLE1BQ1YsY0FBZSxDQUFBLGFBQUEsR0FBZ0IsY0FBZSxDQUFBLGFBQUEsS0FBa0IsYUFBYyxDQUFBLE1BQUE7QUFBQSxNQUM5RSxNQUFBO0FBQUEsTUFDQSxnQkFBZ0IsZUFBZ0IsRUFBQTtBQUFBLEtBQ2xDO0FBQUEsR0FDRixDQUFBO0FBRUEsRUFBQSxJQUFJLGVBQWUsSUFBTSxFQUFBO0FBQ3ZCLElBQUEsT0FBQSxDQUFRLFFBQVcsR0FBQSxjQUFBLENBQWUsSUFBSyxDQUFBLEdBQUEsQ0FBSSxDQUFDLEdBQVEsS0FBQTtBQUNsRCxNQUFPLE9BQUE7QUFBQSxRQUNMLElBQUEsRUFBTSxJQUFJLEtBQU0sQ0FBQSxLQUFBO0FBQUEsUUFDaEIsSUFBQSxFQUFNLElBQUksS0FBTSxDQUFBLFNBQUE7QUFBQSxRQUNoQixTQUFBLEVBQVcsSUFBSSxLQUFNLENBQUEsU0FBQTtBQUFBLFFBQ3JCLFFBQVEsSUFBUyxLQUFBLEdBQUE7QUFBQSxRQUNqQixHQUFBLEVBQUssa0JBQW1CLENBQUEsR0FBQSxDQUFJLEtBQU0sQ0FBQSxHQUFBLEVBQUssZ0JBQWdCLGVBQWdCLEVBQUEsRUFBRyxHQUFJLENBQUEsS0FBQSxDQUFNLGVBQWUsQ0FBQTtBQUFBLFFBQ25HLFVBQVksRUFBQSxPQUFBO0FBQUEsT0FDZCxDQUFBO0FBQUEsS0FDRCxDQUFBLENBQUE7QUFBQSxHQUNIO0FBRUEsRUFBQSxJQUFJLGNBQWlDLEVBQUMsQ0FBQTtBQUN0QyxFQUFBLElBQUksZUFBZSxRQUFVLEVBQUE7QUFDM0IsSUFBQSxXQUFBLEdBQWMsZUFBZSxRQUFTLENBQUEsR0FBQSxDQUFJLENBQUMsT0FDekMscUJBQUEsS0FBQSxDQUFBLGFBQUEsQ0FBQyxRQUFRLFNBQVIsRUFBQTtBQUFBLE1BQWtCLEtBQU8sRUFBQSxPQUFBO0FBQUEsTUFBUyxHQUFBLEVBQUssUUFBUSxLQUFNLENBQUEsR0FBQTtBQUFBLEtBQUssQ0FDNUQsQ0FBQSxDQUFBO0FBQUEsR0FDSDtBQUVBLEVBQUEsSUFBSSxPQUFPLGdCQUFtQixDQUFBLEVBQUE7QUFDNUIsSUFBQSxXQUFBLENBQVkscUJBQU0sS0FBQSxDQUFBLGFBQUEsQ0FBQSxhQUFBLEVBQUE7QUFBQSxNQUFjLEtBQU8sRUFBQSxhQUFBO0FBQUEsTUFBZSxHQUFLLEVBQUEsZ0JBQUE7QUFBQSxLQUFrQixDQUFFLENBQUEsQ0FBQTtBQUFBLEdBQ2pGO0FBRUEsRUFBQSx1QkFDRyxLQUFBLENBQUEsYUFBQSxDQUFBLFVBQUEsRUFBQTtBQUFBLElBQ0MsTUFBQTtBQUFBLElBQ0EsT0FBQTtBQUFBLElBQ0EsT0FBUyxFQUFBLFdBQUE7QUFBQSxJQUNULGFBQWEsY0FBZSxDQUFBLFdBQUE7QUFBQSxJQUM1QixVQUFVLGNBQWUsQ0FBQSxRQUFBO0FBQUEsR0FFekIsa0JBQUEsS0FBQSxDQUFBLGFBQUEsQ0FBQyxNQUFNLFNBQU4sRUFBQTtBQUFBLElBQWdCLEtBQU8sRUFBQSxLQUFBO0FBQUEsR0FBTyxDQUNqQyxDQUFBLENBQUE7QUFFSixDQUFBO0FBS0EsU0FBUyxtQkFBbUIsSUFBd0IsRUFBQTtBQUNsRCxFQUFJLElBQUEsSUFBQSxDQUFLLGtCQUFrQixZQUFjLEVBQUE7QUFDdkMsSUFBQSxPQUFPLElBQUssQ0FBQSxNQUFBLENBQUE7QUFBQSxHQUNkO0FBRUEsRUFBTyxPQUFBLElBQUEsQ0FBQTtBQUNULENBQUE7QUFFQSxTQUFTLG9CQUFBLENBQ1AsTUFDQSxFQUFBLE1BQUEsRUFDQSxZQUMwQixFQUFBO0FBQzFCLEVBQUEsSUFBSSxrQkFBa0IsWUFBYyxFQUFBO0FBQ2xDLElBQU8sT0FBQTtBQUFBLE1BQ0wsSUFBQSxFQUFNLE9BQU8sS0FBTSxDQUFBLEtBQUE7QUFBQSxNQUNuQixHQUFBLEVBQUssbUJBQW1CLE1BQU8sQ0FBQSxLQUFBLENBQU0sS0FBSyxZQUFjLEVBQUEsTUFBQSxDQUFPLE1BQU0sZUFBZSxDQUFBO0FBQUEsTUFDcEYsbUJBQUEsRUFBcUIsT0FBTyxLQUFNLENBQUEsbUJBQUE7QUFBQSxNQUNsQyxVQUFZLEVBQUEsb0JBQUE7QUFBQSxRQUNWLE9BQU8sS0FBTSxDQUFBLGFBQUEsR0FBZ0IsT0FBTyxLQUFNLENBQUEsYUFBQSxLQUFrQixNQUFPLENBQUEsTUFBQTtBQUFBLFFBQ25FLE1BQUE7QUFBQSxRQUNBLFlBQUE7QUFBQSxPQUNGO0FBQUEsS0FDRixDQUFBO0FBQUEsR0FDRjtBQUVBLEVBQU8sT0FBQSxLQUFBLENBQUEsQ0FBQTtBQUNULENBQUE7QUFRTyxTQUFTLDJCQUE0QixDQUFBLEVBQUUsU0FBVyxFQUFBLE1BQUEsRUFBUSxZQUFnRCxFQUFBO0FBQy9HLEVBQUEsT0FBTyxtQ0FBbUMsTUFBTyxDQUFBLGdCQUFBLENBQWlCLFdBQVcsVUFBVyxDQUFBLEtBQUssR0FBRyxVQUFVLENBQUEsQ0FBQTtBQUM1Rzs7OzsifQ==
@@ -0,0 +1,42 @@
1
+ import React from 'react';
2
+ import { useLocation } from 'react-router-dom';
3
+ import { urlUtil, locationUtil } from '@grafana/data';
4
+ import { locationSearchToObject } from '@grafana/runtime';
5
+
6
+ var __defProp = Object.defineProperty;
7
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
10
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11
+ var __spreadValues = (a, b) => {
12
+ for (var prop in b || (b = {}))
13
+ if (__hasOwnProp.call(b, prop))
14
+ __defNormalProp(a, prop, b[prop]);
15
+ if (__getOwnPropSymbols)
16
+ for (var prop of __getOwnPropSymbols(b)) {
17
+ if (__propIsEnum.call(b, prop))
18
+ __defNormalProp(a, prop, b[prop]);
19
+ }
20
+ return a;
21
+ };
22
+ function useAppQueryParams() {
23
+ const location = useLocation();
24
+ return locationSearchToObject(location.search || "");
25
+ }
26
+ function getUrlWithAppState(path, searchObject, preserveParams) {
27
+ const paramsCopy = __spreadValues({}, searchObject);
28
+ if (preserveParams) {
29
+ for (const key of Object.keys(paramsCopy)) {
30
+ if (!preserveParams.includes(key)) {
31
+ delete paramsCopy[key];
32
+ }
33
+ }
34
+ }
35
+ return urlUtil.renderUrl(locationUtil.assureBaseUrl(path), paramsCopy);
36
+ }
37
+ function renderSceneComponentWithRouteProps(sceneObject, routeProps) {
38
+ return React.createElement(sceneObject.Component, { model: sceneObject, routeProps });
39
+ }
40
+
41
+ export { getUrlWithAppState, renderSceneComponentWithRouteProps, useAppQueryParams };
42
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1NjZW5lQXBwL3V0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBSb3V0ZUNvbXBvbmVudFByb3BzLCB1c2VMb2NhdGlvbiB9IGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0IHsgVXJsUXVlcnlNYXAsIGxvY2F0aW9uVXRpbCwgdXJsVXRpbCB9IGZyb20gJ0BncmFmYW5hL2RhdGEnO1xuaW1wb3J0IHsgbG9jYXRpb25TZWFyY2hUb09iamVjdCB9IGZyb20gJ0BncmFmYW5hL3J1bnRpbWUnO1xuaW1wb3J0IHsgU2NlbmVPYmplY3QgfSBmcm9tICcuLi8uLi9jb3JlL3R5cGVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUFwcFF1ZXJ5UGFyYW1zKCk6IFVybFF1ZXJ5TWFwIHtcbiAgY29uc3QgbG9jYXRpb24gPSB1c2VMb2NhdGlvbigpO1xuICByZXR1cm4gbG9jYXRpb25TZWFyY2hUb09iamVjdChsb2NhdGlvbi5zZWFyY2ggfHwgJycpO1xufVxuXG4vKipcbiAqXG4gKiBAcGFyYW0gcGF0aCBVcmwgdG8gYXBwZW5kIHF1ZXJ5IHBhcmFtcyB0b1xuICogQHBhcmFtIHNlYXJjaE9iamVjdCBRdWVyeSBwYXJhbXMgb2YgdGhlIFVSTFxuICogQHBhcmFtIHByZXNlcnZlUGFyYW1zIFF1ZXJ5IHBhcmFtcyB0byBwcmVzZXJ2ZVxuICogQHJldHVybnMgVXJsIHdpdGggcXVlcnkgcGFyYW1zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRVcmxXaXRoQXBwU3RhdGUocGF0aDogc3RyaW5nLCBzZWFyY2hPYmplY3Q6IFVybFF1ZXJ5TWFwLCBwcmVzZXJ2ZVBhcmFtcz86IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgLy8gbWFrZSBhIGNvcHkgb2YgcGFyYW1zIGFzIHRoZSByZW5kZXJVcmwgZnVuY3Rpb24gbXV0YXRlcyB0aGUgb2JqZWN0XG4gIGNvbnN0IHBhcmFtc0NvcHkgPSB7IC4uLnNlYXJjaE9iamVjdCB9O1xuXG4gIGlmIChwcmVzZXJ2ZVBhcmFtcykge1xuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHBhcmFtc0NvcHkpKSB7XG4gICAgICAvLyBpZiBwYXJhbSBpcyBub3QgaW4gcHJlc2VydmVQYXJhbXMsIHJlbW92ZSBpdFxuICAgICAgaWYgKCFwcmVzZXJ2ZVBhcmFtcy5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgIGRlbGV0ZSBwYXJhbXNDb3B5W2tleV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVybFV0aWwucmVuZGVyVXJsKGxvY2F0aW9uVXRpbC5hc3N1cmVCYXNlVXJsKHBhdGgpLCBwYXJhbXNDb3B5KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlclNjZW5lQ29tcG9uZW50V2l0aFJvdXRlUHJvcHMoc2NlbmVPYmplY3Q6IFNjZW5lT2JqZWN0LCByb3V0ZVByb3BzOiBSb3V0ZUNvbXBvbmVudFByb3BzKSB7XG4gIC8vIEB0cy1pZ25vcmVcbiAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoc2NlbmVPYmplY3QuQ29tcG9uZW50LCB7IG1vZGVsOiBzY2VuZU9iamVjdCwgcm91dGVQcm9wczogcm91dGVQcm9wcyB9KTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFNTyxTQUFTLGlCQUFpQyxHQUFBO0FBQy9DLEVBQUEsTUFBTSxXQUFXLFdBQVksRUFBQSxDQUFBO0FBQzdCLEVBQU8sT0FBQSxzQkFBQSxDQUF1QixRQUFTLENBQUEsTUFBQSxJQUFVLEVBQUUsQ0FBQSxDQUFBO0FBQ3JELENBQUE7QUFTZ0IsU0FBQSxrQkFBQSxDQUFtQixJQUFjLEVBQUEsWUFBQSxFQUEyQixjQUFtQyxFQUFBO0FBRTdHLEVBQUEsTUFBTSxhQUFhLGNBQUssQ0FBQSxFQUFBLEVBQUEsWUFBQSxDQUFBLENBQUE7QUFFeEIsRUFBQSxJQUFJLGNBQWdCLEVBQUE7QUFDbEIsSUFBQSxLQUFBLE1BQVcsR0FBTyxJQUFBLE1BQUEsQ0FBTyxJQUFLLENBQUEsVUFBVSxDQUFHLEVBQUE7QUFFekMsTUFBQSxJQUFJLENBQUMsY0FBQSxDQUFlLFFBQVMsQ0FBQSxHQUFHLENBQUcsRUFBQTtBQUNqQyxRQUFBLE9BQU8sVUFBVyxDQUFBLEdBQUEsQ0FBQSxDQUFBO0FBQUEsT0FDcEI7QUFBQSxLQUNGO0FBQUEsR0FDRjtBQUVBLEVBQUEsT0FBTyxRQUFRLFNBQVUsQ0FBQSxZQUFBLENBQWEsYUFBYyxDQUFBLElBQUksR0FBRyxVQUFVLENBQUEsQ0FBQTtBQUN2RSxDQUFBO0FBRWdCLFNBQUEsa0NBQUEsQ0FBbUMsYUFBMEIsVUFBaUMsRUFBQTtBQUU1RyxFQUFPLE9BQUEsS0FBQSxDQUFNLGNBQWMsV0FBWSxDQUFBLFNBQUEsRUFBVyxFQUFFLEtBQU8sRUFBQSxXQUFBLEVBQWEsWUFBd0IsQ0FBQSxDQUFBO0FBQ2xHOzs7OyJ9
@@ -0,0 +1,41 @@
1
+ import React from 'react';
2
+ import { LoadingState } from '@grafana/data';
3
+ import { SceneObjectBase } from '../core/SceneObjectBase.js';
4
+ import { sceneGraph } from '../core/sceneGraph/index.js';
5
+
6
+ class SceneByFrameRepeater extends SceneObjectBase {
7
+ constructor(state) {
8
+ super(state);
9
+ this.addActivationHandler(() => {
10
+ const dataProvider = sceneGraph.getData(this);
11
+ this._subs.add(
12
+ dataProvider.subscribeToState((data) => {
13
+ var _a;
14
+ if (((_a = data.data) == null ? void 0 : _a.state) === LoadingState.Done) {
15
+ this.performRepeat(data.data);
16
+ }
17
+ })
18
+ );
19
+ if (dataProvider.state.data) {
20
+ this.performRepeat(dataProvider.state.data);
21
+ }
22
+ });
23
+ }
24
+ performRepeat(data) {
25
+ const newChildren = [];
26
+ for (let seriesIndex = 0; seriesIndex < data.series.length; seriesIndex++) {
27
+ const layoutChild = this.state.getLayoutChild(data, data.series[seriesIndex], seriesIndex);
28
+ newChildren.push(layoutChild);
29
+ }
30
+ this.state.body.setState({ children: newChildren });
31
+ }
32
+ }
33
+ SceneByFrameRepeater.Component = ({ model }) => {
34
+ const { body } = model.useState();
35
+ return /* @__PURE__ */ React.createElement(body.Component, {
36
+ model: body
37
+ });
38
+ };
39
+
40
+ export { SceneByFrameRepeater };
41
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NlbmVCeUZyYW1lUmVwZWF0ZXIuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1NjZW5lQnlGcmFtZVJlcGVhdGVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgeyBMb2FkaW5nU3RhdGUsIFBhbmVsRGF0YSwgRGF0YUZyYW1lIH0gZnJvbSAnQGdyYWZhbmEvZGF0YSc7XG5cbmltcG9ydCB7IFNjZW5lT2JqZWN0QmFzZSB9IGZyb20gJy4uL2NvcmUvU2NlbmVPYmplY3RCYXNlJztcbmltcG9ydCB7IHNjZW5lR3JhcGggfSBmcm9tICcuLi9jb3JlL3NjZW5lR3JhcGgnO1xuaW1wb3J0IHsgU2NlbmVDb21wb25lbnRQcm9wcywgU2NlbmVMYXlvdXQsIFNjZW5lT2JqZWN0LCBTY2VuZU9iamVjdFN0YXRlIH0gZnJvbSAnLi4vY29yZS90eXBlcyc7XG5cbmludGVyZmFjZSBTY2VuZUJ5RnJhbWVSZXBlYXRlclN0YXRlIGV4dGVuZHMgU2NlbmVPYmplY3RTdGF0ZSB7XG4gIGJvZHk6IFNjZW5lTGF5b3V0O1xuICBnZXRMYXlvdXRDaGlsZChkYXRhOiBQYW5lbERhdGEsIGZyYW1lOiBEYXRhRnJhbWUsIGZyYW1lSW5kZXg6IG51bWJlcik6IFNjZW5lT2JqZWN0O1xufVxuXG5leHBvcnQgY2xhc3MgU2NlbmVCeUZyYW1lUmVwZWF0ZXIgZXh0ZW5kcyBTY2VuZU9iamVjdEJhc2U8U2NlbmVCeUZyYW1lUmVwZWF0ZXJTdGF0ZT4ge1xuICBwdWJsaWMgY29uc3RydWN0b3Ioc3RhdGU6IFNjZW5lQnlGcmFtZVJlcGVhdGVyU3RhdGUpIHtcbiAgICBzdXBlcihzdGF0ZSk7XG5cbiAgICB0aGlzLmFkZEFjdGl2YXRpb25IYW5kbGVyKCgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGFQcm92aWRlciA9IHNjZW5lR3JhcGguZ2V0RGF0YSh0aGlzKTtcblxuICAgICAgdGhpcy5fc3Vicy5hZGQoXG4gICAgICAgIGRhdGFQcm92aWRlci5zdWJzY3JpYmVUb1N0YXRlKChkYXRhKSA9PiB7XG4gICAgICAgICAgaWYgKGRhdGEuZGF0YT8uc3RhdGUgPT09IExvYWRpbmdTdGF0ZS5Eb25lKSB7XG4gICAgICAgICAgICB0aGlzLnBlcmZvcm1SZXBlYXQoZGF0YS5kYXRhKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApO1xuXG4gICAgICBpZiAoZGF0YVByb3ZpZGVyLnN0YXRlLmRhdGEpIHtcbiAgICAgICAgdGhpcy5wZXJmb3JtUmVwZWF0KGRhdGFQcm92aWRlci5zdGF0ZS5kYXRhKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcGVyZm9ybVJlcGVhdChkYXRhOiBQYW5lbERhdGEpIHtcbiAgICBjb25zdCBuZXdDaGlsZHJlbjogU2NlbmVPYmplY3RbXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgc2VyaWVzSW5kZXggPSAwOyBzZXJpZXNJbmRleCA8IGRhdGEuc2VyaWVzLmxlbmd0aDsgc2VyaWVzSW5kZXgrKykge1xuICAgICAgY29uc3QgbGF5b3V0Q2hpbGQgPSB0aGlzLnN0YXRlLmdldExheW91dENoaWxkKGRhdGEsIGRhdGEuc2VyaWVzW3Nlcmllc0luZGV4XSwgc2VyaWVzSW5kZXgpO1xuICAgICAgbmV3Q2hpbGRyZW4ucHVzaChsYXlvdXRDaGlsZCk7XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZS5ib2R5LnNldFN0YXRlKHsgY2hpbGRyZW46IG5ld0NoaWxkcmVuIH0pO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBDb21wb25lbnQgPSAoeyBtb2RlbCB9OiBTY2VuZUNvbXBvbmVudFByb3BzPFNjZW5lQnlGcmFtZVJlcGVhdGVyPikgPT4ge1xuICAgIGNvbnN0IHsgYm9keSB9ID0gbW9kZWwudXNlU3RhdGUoKTtcbiAgICByZXR1cm4gPGJvZHkuQ29tcG9uZW50IG1vZGVsPXtib2R5fSAvPjtcbiAgfTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWFPLE1BQU0sNkJBQTZCLGVBQTJDLENBQUE7QUFBQSxFQUM1RSxZQUFZLEtBQWtDLEVBQUE7QUFDbkQsSUFBQSxLQUFBLENBQU0sS0FBSyxDQUFBLENBQUE7QUFFWCxJQUFBLElBQUEsQ0FBSyxxQkFBcUIsTUFBTTtBQUM5QixNQUFNLE1BQUEsWUFBQSxHQUFlLFVBQVcsQ0FBQSxPQUFBLENBQVEsSUFBSSxDQUFBLENBQUE7QUFFNUMsTUFBQSxJQUFBLENBQUssS0FBTSxDQUFBLEdBQUE7QUFBQSxRQUNULFlBQUEsQ0FBYSxnQkFBaUIsQ0FBQSxDQUFDLElBQVMsS0FBQTtBQXJCaEQsVUFBQSxJQUFBLEVBQUEsQ0FBQTtBQXNCVSxVQUFBLElBQUEsQ0FBQSxDQUFJLEVBQUssR0FBQSxJQUFBLENBQUEsSUFBQSxLQUFMLElBQVcsR0FBQSxLQUFBLENBQUEsR0FBQSxFQUFBLENBQUEsS0FBQSxNQUFVLGFBQWEsSUFBTSxFQUFBO0FBQzFDLFlBQUssSUFBQSxDQUFBLGFBQUEsQ0FBYyxLQUFLLElBQUksQ0FBQSxDQUFBO0FBQUEsV0FDOUI7QUFBQSxTQUNELENBQUE7QUFBQSxPQUNILENBQUE7QUFFQSxNQUFJLElBQUEsWUFBQSxDQUFhLE1BQU0sSUFBTSxFQUFBO0FBQzNCLFFBQUssSUFBQSxDQUFBLGFBQUEsQ0FBYyxZQUFhLENBQUEsS0FBQSxDQUFNLElBQUksQ0FBQSxDQUFBO0FBQUEsT0FDNUM7QUFBQSxLQUNELENBQUEsQ0FBQTtBQUFBLEdBQ0g7QUFBQSxFQUVRLGNBQWMsSUFBaUIsRUFBQTtBQUNyQyxJQUFBLE1BQU0sY0FBNkIsRUFBQyxDQUFBO0FBRXBDLElBQUEsS0FBQSxJQUFTLGNBQWMsQ0FBRyxFQUFBLFdBQUEsR0FBYyxJQUFLLENBQUEsTUFBQSxDQUFPLFFBQVEsV0FBZSxFQUFBLEVBQUE7QUFDekUsTUFBTSxNQUFBLFdBQUEsR0FBYyxLQUFLLEtBQU0sQ0FBQSxjQUFBLENBQWUsTUFBTSxJQUFLLENBQUEsTUFBQSxDQUFPLGNBQWMsV0FBVyxDQUFBLENBQUE7QUFDekYsTUFBQSxXQUFBLENBQVksS0FBSyxXQUFXLENBQUEsQ0FBQTtBQUFBLEtBQzlCO0FBRUEsSUFBQSxJQUFBLENBQUssTUFBTSxJQUFLLENBQUEsUUFBQSxDQUFTLEVBQUUsUUFBQSxFQUFVLGFBQWEsQ0FBQSxDQUFBO0FBQUEsR0FDcEQ7QUFNRixDQUFBO0FBcENhLG9CQUFBLENBZ0NHLFNBQVksR0FBQSxDQUFDLEVBQUUsS0FBQSxFQUF1RCxLQUFBO0FBQ2xGLEVBQUEsTUFBTSxFQUFFLElBQUEsRUFBUyxHQUFBLEtBQUEsQ0FBTSxRQUFTLEVBQUEsQ0FBQTtBQUNoQyxFQUFPLHVCQUFBLEtBQUEsQ0FBQSxhQUFBLENBQUMsS0FBSyxTQUFMLEVBQUE7QUFBQSxJQUFlLEtBQU8sRUFBQSxJQUFBO0FBQUEsR0FBTSxDQUFBLENBQUE7QUFDdEMsQ0FBQTs7OzsifQ==
@@ -0,0 +1,55 @@
1
+ import React from 'react';
2
+ import { SceneObjectBase } from '../core/SceneObjectBase.js';
3
+ import { sceneGraph } from '../core/sceneGraph/index.js';
4
+ import { VariableDependencyConfig } from '../variables/VariableDependencyConfig.js';
5
+ import { MultiValueVariable } from '../variables/variants/MultiValueVariable.js';
6
+
7
+ class SceneByVariableRepeater extends SceneObjectBase {
8
+ constructor(state) {
9
+ super(state);
10
+ this._variableDependency = new VariableDependencyConfig(
11
+ this,
12
+ {
13
+ variableNames: [this.state.variableName],
14
+ onVariableUpdateCompleted: () => this.performRepeat()
15
+ }
16
+ );
17
+ this.addActivationHandler(() => this.performRepeat());
18
+ }
19
+ performRepeat() {
20
+ if (this._variableDependency.hasDependencyInLoadingState()) {
21
+ return;
22
+ }
23
+ const variable = sceneGraph.lookupVariable(this.state.variableName, this);
24
+ if (!(variable instanceof MultiValueVariable)) {
25
+ console.error("SceneByVariableRepeater: variable is not a MultiValueVariable");
26
+ return;
27
+ }
28
+ const values = getMultiVariableValues(variable);
29
+ const newChildren = [];
30
+ for (const option of values) {
31
+ const layoutChild = this.state.getLayoutChild(option);
32
+ newChildren.push(layoutChild);
33
+ }
34
+ this.state.body.setState({ children: newChildren });
35
+ }
36
+ }
37
+ SceneByVariableRepeater.Component = ({ model }) => {
38
+ const { body } = model.useState();
39
+ return /* @__PURE__ */ React.createElement(body.Component, {
40
+ model: body
41
+ });
42
+ };
43
+ function getMultiVariableValues(variable) {
44
+ const { value, text, options } = variable.state;
45
+ if (variable.hasAllValue()) {
46
+ return options;
47
+ }
48
+ if (Array.isArray(value) && Array.isArray(text)) {
49
+ return value.map((v, i) => ({ value: v, label: text[i] }));
50
+ }
51
+ return [{ value, label: text }];
52
+ }
53
+
54
+ export { SceneByVariableRepeater, getMultiVariableValues };
55
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NlbmVCeVZhcmlhYmxlUmVwZWF0ZXIuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1NjZW5lQnlWYXJpYWJsZVJlcGVhdGVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgeyBTY2VuZU9iamVjdEJhc2UgfSBmcm9tICcuLi9jb3JlL1NjZW5lT2JqZWN0QmFzZSc7XG5pbXBvcnQgeyBzY2VuZUdyYXBoIH0gZnJvbSAnLi4vY29yZS9zY2VuZUdyYXBoJztcbmltcG9ydCB7IFNjZW5lQ29tcG9uZW50UHJvcHMsIFNjZW5lTGF5b3V0LCBTY2VuZU9iamVjdCwgU2NlbmVPYmplY3RTdGF0ZSB9IGZyb20gJy4uL2NvcmUvdHlwZXMnO1xuaW1wb3J0IHsgVmFyaWFibGVEZXBlbmRlbmN5Q29uZmlnIH0gZnJvbSAnLi4vdmFyaWFibGVzL1ZhcmlhYmxlRGVwZW5kZW5jeUNvbmZpZyc7XG5pbXBvcnQgeyBWYXJpYWJsZVZhbHVlT3B0aW9uIH0gZnJvbSAnLi4vdmFyaWFibGVzL3R5cGVzJztcbmltcG9ydCB7IE11bHRpVmFsdWVWYXJpYWJsZSB9IGZyb20gJy4uL3ZhcmlhYmxlcy92YXJpYW50cy9NdWx0aVZhbHVlVmFyaWFibGUnO1xuXG5pbnRlcmZhY2UgU2NlbmVCeVZhcmlhYmxlUmVwZWF0ZXJTdGF0ZSBleHRlbmRzIFNjZW5lT2JqZWN0U3RhdGUge1xuICBib2R5OiBTY2VuZUxheW91dDtcbiAgdmFyaWFibGVOYW1lOiBzdHJpbmc7XG4gIGdldExheW91dENoaWxkKG9wdGlvbjogVmFyaWFibGVWYWx1ZU9wdGlvbik6IFNjZW5lT2JqZWN0O1xufVxuXG5leHBvcnQgY2xhc3MgU2NlbmVCeVZhcmlhYmxlUmVwZWF0ZXIgZXh0ZW5kcyBTY2VuZU9iamVjdEJhc2U8U2NlbmVCeVZhcmlhYmxlUmVwZWF0ZXJTdGF0ZT4ge1xuICBwcm90ZWN0ZWQgX3ZhcmlhYmxlRGVwZW5kZW5jeTogVmFyaWFibGVEZXBlbmRlbmN5Q29uZmlnPFNjZW5lQnlWYXJpYWJsZVJlcGVhdGVyU3RhdGU+ID0gbmV3IFZhcmlhYmxlRGVwZW5kZW5jeUNvbmZpZyhcbiAgICB0aGlzLFxuICAgIHtcbiAgICAgIHZhcmlhYmxlTmFtZXM6IFt0aGlzLnN0YXRlLnZhcmlhYmxlTmFtZV0sXG4gICAgICBvblZhcmlhYmxlVXBkYXRlQ29tcGxldGVkOiAoKSA9PiB0aGlzLnBlcmZvcm1SZXBlYXQoKSxcbiAgICB9XG4gICk7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHN0YXRlOiBTY2VuZUJ5VmFyaWFibGVSZXBlYXRlclN0YXRlKSB7XG4gICAgc3VwZXIoc3RhdGUpO1xuXG4gICAgdGhpcy5hZGRBY3RpdmF0aW9uSGFuZGxlcigoKSA9PiB0aGlzLnBlcmZvcm1SZXBlYXQoKSk7XG4gIH1cblxuICBwcml2YXRlIHBlcmZvcm1SZXBlYXQoKSB7XG4gICAgaWYgKHRoaXMuX3ZhcmlhYmxlRGVwZW5kZW5jeS5oYXNEZXBlbmRlbmN5SW5Mb2FkaW5nU3RhdGUoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHZhcmlhYmxlID0gc2NlbmVHcmFwaC5sb29rdXBWYXJpYWJsZSh0aGlzLnN0YXRlLnZhcmlhYmxlTmFtZSwgdGhpcyk7XG4gICAgaWYgKCEodmFyaWFibGUgaW5zdGFuY2VvZiBNdWx0aVZhbHVlVmFyaWFibGUpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdTY2VuZUJ5VmFyaWFibGVSZXBlYXRlcjogdmFyaWFibGUgaXMgbm90IGEgTXVsdGlWYWx1ZVZhcmlhYmxlJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWVzID0gZ2V0TXVsdGlWYXJpYWJsZVZhbHVlcyh2YXJpYWJsZSk7XG4gICAgY29uc3QgbmV3Q2hpbGRyZW46IFNjZW5lT2JqZWN0W10gPSBbXTtcblxuICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIHZhbHVlcykge1xuICAgICAgY29uc3QgbGF5b3V0Q2hpbGQgPSB0aGlzLnN0YXRlLmdldExheW91dENoaWxkKG9wdGlvbik7XG4gICAgICBuZXdDaGlsZHJlbi5wdXNoKGxheW91dENoaWxkKTtcbiAgICB9XG5cbiAgICB0aGlzLnN0YXRlLmJvZHkuc2V0U3RhdGUoeyBjaGlsZHJlbjogbmV3Q2hpbGRyZW4gfSk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIENvbXBvbmVudCA9ICh7IG1vZGVsIH06IFNjZW5lQ29tcG9uZW50UHJvcHM8U2NlbmVCeVZhcmlhYmxlUmVwZWF0ZXI+KSA9PiB7XG4gICAgY29uc3QgeyBib2R5IH0gPSBtb2RlbC51c2VTdGF0ZSgpO1xuICAgIHJldHVybiA8Ym9keS5Db21wb25lbnQgbW9kZWw9e2JvZHl9IC8+O1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TXVsdGlWYXJpYWJsZVZhbHVlcyh2YXJpYWJsZTogTXVsdGlWYWx1ZVZhcmlhYmxlKTogVmFyaWFibGVWYWx1ZU9wdGlvbltdIHtcbiAgY29uc3QgeyB2YWx1ZSwgdGV4dCwgb3B0aW9ucyB9ID0gdmFyaWFibGUuc3RhdGU7XG5cbiAgaWYgKHZhcmlhYmxlLmhhc0FsbFZhbHVlKCkpIHtcbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiBBcnJheS5pc0FycmF5KHRleHQpKSB7XG4gICAgcmV0dXJuIHZhbHVlLm1hcCgodiwgaSkgPT4gKHsgdmFsdWU6IHYsIGxhYmVsOiB0ZXh0W2ldIGFzIHN0cmluZyB9KSk7XG4gIH1cblxuICByZXR1cm4gW3sgdmFsdWU6IHZhbHVlIGFzIHN0cmluZywgbGFiZWw6IHRleHQgYXMgc3RyaW5nIH1dO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQWVPLE1BQU0sZ0NBQWdDLGVBQThDLENBQUE7QUFBQSxFQVNsRixZQUFZLEtBQXFDLEVBQUE7QUFDdEQsSUFBQSxLQUFBLENBQU0sS0FBSyxDQUFBLENBQUE7QUFUYixJQUFBLElBQUEs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
@@ -0,0 +1,32 @@
1
+ import React from 'react';
2
+ import { SceneObjectBase } from '../core/SceneObjectBase.js';
3
+ import { sceneGraph } from '../core/sceneGraph/index.js';
4
+ import { VariableDependencyConfig } from '../variables/VariableDependencyConfig.js';
5
+ import { useTheme2 } from '@grafana/ui';
6
+ import { css } from '@emotion/css';
7
+
8
+ class SceneCanvasText extends SceneObjectBase {
9
+ constructor() {
10
+ super(...arguments);
11
+ this._variableDependency = new VariableDependencyConfig(this, { statePaths: ["text"] });
12
+ }
13
+ }
14
+ SceneCanvasText.Component = ({ model }) => {
15
+ const { text, fontSize = 20, align = "left", key, spacing } = model.useState();
16
+ const theme = useTheme2();
17
+ const style = css({
18
+ fontSize,
19
+ display: "flex",
20
+ flexGrow: 1,
21
+ alignItems: "center",
22
+ padding: spacing ? theme.spacing(spacing, 0) : void 0,
23
+ justifyContent: align
24
+ });
25
+ return /* @__PURE__ */ React.createElement("div", {
26
+ className: style,
27
+ "data-testid": key
28
+ }, sceneGraph.interpolate(model, text));
29
+ };
30
+
31
+ export { SceneCanvasText };
32
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NlbmVDYW52YXNUZXh0LmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9TY2VuZUNhbnZhc1RleHQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IFNjZW5lT2JqZWN0QmFzZSB9IGZyb20gJy4uL2NvcmUvU2NlbmVPYmplY3RCYXNlJztcbmltcG9ydCB7IHNjZW5lR3JhcGggfSBmcm9tICcuLi9jb3JlL3NjZW5lR3JhcGgnO1xuaW1wb3J0IHsgU2NlbmVDb21wb25lbnRQcm9wcywgU2NlbmVPYmplY3RTdGF0ZSB9IGZyb20gJy4uL2NvcmUvdHlwZXMnO1xuaW1wb3J0IHsgVmFyaWFibGVEZXBlbmRlbmN5Q29uZmlnIH0gZnJvbSAnLi4vdmFyaWFibGVzL1ZhcmlhYmxlRGVwZW5kZW5jeUNvbmZpZyc7XG5pbXBvcnQgeyB1c2VUaGVtZTIgfSBmcm9tICdAZ3JhZmFuYS91aSc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9jc3MnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNjZW5lQ2FudmFzVGV4dFN0YXRlIGV4dGVuZHMgU2NlbmVPYmplY3RTdGF0ZSB7XG4gIHRleHQ6IHN0cmluZztcbiAgZm9udFNpemU/OiBudW1iZXI7XG4gIGFsaWduPzogJ2xlZnQnIHwgJ2NlbnRlcicgfCAncmlnaHQnO1xuICBzcGFjaW5nPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIE5vdCBhIHJlYWxseSB1c2VmdWwgY29tcG9uZW50LCBqdXN0IGFuIGV4YW1wbGUgb2YgaG93IHRvIGNyZWF0ZSBvbmVcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY2xhc3MgU2NlbmVDYW52YXNUZXh0IGV4dGVuZHMgU2NlbmVPYmplY3RCYXNlPFNjZW5lQ2FudmFzVGV4dFN0YXRlPiB7XG4gIHByb3RlY3RlZCBfdmFyaWFibGVEZXBlbmRlbmN5ID0gbmV3IFZhcmlhYmxlRGVwZW5kZW5jeUNvbmZpZyh0aGlzLCB7IHN0YXRlUGF0aHM6IFsndGV4dCddIH0pO1xuXG4gIHB1YmxpYyBzdGF0aWMgQ29tcG9uZW50ID0gKHsgbW9kZWwgfTogU2NlbmVDb21wb25lbnRQcm9wczxTY2VuZUNhbnZhc1RleHQ+KSA9PiB7XG4gICAgY29uc3QgeyB0ZXh0LCBmb250U2l6ZSA9IDIwLCBhbGlnbiA9ICdsZWZ0Jywga2V5LCBzcGFjaW5nIH0gPSBtb2RlbC51c2VTdGF0ZSgpO1xuICAgIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUyKCk7XG5cbiAgICBjb25zdCBzdHlsZSA9IGNzcyh7XG4gICAgICBmb250U2l6ZTogZm9udFNpemUsXG4gICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICBmbGV4R3JvdzogMSxcbiAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgcGFkZGluZzogc3BhY2luZyA/IHRoZW1lLnNwYWNpbmcoc3BhY2luZywgMCkgOiB1bmRlZmluZWQsXG4gICAgICBqdXN0aWZ5Q29udGVudDogYWxpZ24sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlfSBkYXRhLXRlc3RpZD17a2V5fT5cbiAgICAgICAge3NjZW5lR3JhcGguaW50ZXJwb2xhdGUobW9kZWwsIHRleHQpfVxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBb0JPLE1BQU0sd0JBQXdCLGVBQXNDLENBQUE7QUFBQSxFQUFwRSxXQUFBLEdBQUE7QUFBQSxJQUFBLEtBQUEsQ0FBQSxHQUFBLFNBQUEsQ0FBQSxDQUFBO0FBQ0wsSUFBVSxJQUFBLENBQUEsbUJBQUEsR0FBc0IsSUFBSSx3QkFBeUIsQ0FBQSxJQUFBLEVBQU0sRUFBRSxVQUFZLEVBQUEsQ0FBQyxNQUFNLENBQUEsRUFBRyxDQUFBLENBQUE7QUFBQSxHQUFBO0FBcUI3RixDQUFBO0FBdEJhLGVBQUEsQ0FHRyxTQUFZLEdBQUEsQ0FBQyxFQUFFLEtBQUEsRUFBa0QsS0FBQTtBQUM3RSxFQUFNLE1BQUEsRUFBRSxJQUFNLEVBQUEsUUFBQSxHQUFXLEVBQUksRUFBQSxLQUFBLEdBQVEsUUFBUSxHQUFLLEVBQUEsT0FBQSxFQUFZLEdBQUEsS0FBQSxDQUFNLFFBQVMsRUFBQSxDQUFBO0FBQzdFLEVBQUEsTUFBTSxRQUFRLFNBQVUsRUFBQSxDQUFBO0FBRXhCLEVBQUEsTUFBTSxRQUFRLEdBQUksQ0FBQTtBQUFBLElBQ2hCLFFBQUE7QUFBQSxJQUNBLE9BQVMsRUFBQSxNQUFBO0FBQUEsSUFDVCxRQUFVLEVBQUEsQ0FBQTtBQUFBLElBQ1YsVUFBWSxFQUFBLFFBQUE7QUFBQSxJQUNaLFNBQVMsT0FBVSxHQUFBLEtBQUEsQ0FBTSxPQUFRLENBQUEsT0FBQSxFQUFTLENBQUMsQ0FBSSxHQUFBLEtBQUEsQ0FBQTtBQUFBLElBQy9DLGNBQWdCLEVBQUEsS0FBQTtBQUFBLEdBQ2pCLENBQUEsQ0FBQTtBQUVELEVBQUEsdUJBQ0csS0FBQSxDQUFBLGFBQUEsQ0FBQSxLQUFBLEVBQUE7QUFBQSxJQUFJLFNBQVcsRUFBQSxLQUFBO0FBQUEsSUFBTyxhQUFhLEVBQUEsR0FBQTtBQUFBLEdBQUEsRUFDakMsVUFBVyxDQUFBLFdBQUEsQ0FBWSxLQUFPLEVBQUEsSUFBSSxDQUNyQyxDQUFBLENBQUE7QUFFSixDQUFBOzs7OyJ9
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ import { SceneObjectBase } from '../core/SceneObjectBase.js';
3
+
4
+ class SceneControlsSpacer extends SceneObjectBase {
5
+ constructor() {
6
+ super({});
7
+ this._renderBeforeActivation = true;
8
+ }
9
+ }
10
+ SceneControlsSpacer.Component = (_props) => {
11
+ return /* @__PURE__ */ React.createElement("div", {
12
+ style: { flexGrow: 1 }
13
+ });
14
+ };
15
+
16
+ export { SceneControlsSpacer };
17
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NlbmVDb250cm9sc1NwYWNlci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvU2NlbmVDb250cm9sc1NwYWNlci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHsgU2NlbmVPYmplY3RCYXNlIH0gZnJvbSAnLi4vY29yZS9TY2VuZU9iamVjdEJhc2UnO1xuaW1wb3J0IHsgU2NlbmVDb21wb25lbnRQcm9wcyB9IGZyb20gJy4uL2NvcmUvdHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgU2NlbmVDb250cm9sc1NwYWNlciBleHRlbmRzIFNjZW5lT2JqZWN0QmFzZSB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcih7fSk7XG5cbiAgICB0aGlzLl9yZW5kZXJCZWZvcmVBY3RpdmF0aW9uID0gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgQ29tcG9uZW50ID0gKF9wcm9wczogU2NlbmVDb21wb25lbnRQcm9wczxTY2VuZUNvbnRyb2xzU3BhY2VyPikgPT4ge1xuICAgIHJldHVybiA8ZGl2IHN0eWxlPXt7IGZsZXhHcm93OiAxIH19IC8+O1xuICB9O1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUtPLE1BQU0sNEJBQTRCLGVBQWdCLENBQUE7QUFBQSxFQUNoRCxXQUFjLEdBQUE7QUFDbkIsSUFBQSxLQUFBLENBQU0sRUFBRSxDQUFBLENBQUE7QUFFUixJQUFBLElBQUEsQ0FBSyx1QkFBMEIsR0FBQSxJQUFBLENBQUE7QUFBQSxHQUNqQztBQUtGLENBQUE7QUFWYSxtQkFPRyxDQUFBLFNBQUEsR0FBWSxDQUFDLE1BQXFELEtBQUE7QUFDOUUsRUFBQSx1QkFBUSxLQUFBLENBQUEsYUFBQSxDQUFBLEtBQUEsRUFBQTtBQUFBLElBQUksS0FBQSxFQUFPLEVBQUUsUUFBQSxFQUFVLENBQUUsRUFBQTtBQUFBLEdBQUcsQ0FBQSxDQUFBO0FBQ3RDLENBQUE7Ozs7In0=
@@ -0,0 +1,82 @@
1
+ import { css } from '@emotion/css';
2
+ import { useStyles2, JSONFormatter, Input } from '@grafana/ui';
3
+ import { isPlainObject, isArray } from 'lodash';
4
+ import React from 'react';
5
+ import { isSceneObject } from '../../core/types.js';
6
+
7
+ function DebugDetails({ node }) {
8
+ const state = node.useState();
9
+ const styles = useStyles2(getStyles);
10
+ return /* @__PURE__ */ React.createElement("div", {
11
+ className: styles.container
12
+ }, Object.keys(state).map((key) => /* @__PURE__ */ React.createElement("div", {
13
+ className: styles.row,
14
+ key
15
+ }, /* @__PURE__ */ React.createElement("div", {
16
+ className: styles.keyName
17
+ }, key), /* @__PURE__ */ React.createElement("div", {
18
+ className: styles.value
19
+ }, renderValue(key, state[key], node)))));
20
+ }
21
+ function renderValue(key, value, node) {
22
+ if (value === null) {
23
+ return "null";
24
+ }
25
+ switch (typeof value) {
26
+ case "number":
27
+ return /* @__PURE__ */ React.createElement(Input, {
28
+ type: "number",
29
+ defaultValue: value,
30
+ onBlur: (evt) => node.setState({ [key]: evt.currentTarget.valueAsNumber })
31
+ });
32
+ case "string":
33
+ return /* @__PURE__ */ React.createElement(Input, {
34
+ type: "text",
35
+ defaultValue: value,
36
+ onBlur: (evt) => node.setState({ [key]: evt.currentTarget.value })
37
+ });
38
+ case "object":
39
+ if (isSceneObject(value)) {
40
+ return value.constructor.name;
41
+ }
42
+ if (isPlainObject(value) || isArray(value)) {
43
+ return /* @__PURE__ */ React.createElement(JSONFormatter, {
44
+ json: value,
45
+ open: 0
46
+ });
47
+ }
48
+ return String(value);
49
+ default:
50
+ return typeof value;
51
+ }
52
+ }
53
+ function getStyles(theme) {
54
+ return {
55
+ container: css({
56
+ flexGrow: 1,
57
+ display: "flex",
58
+ gap: theme.spacing(0.5),
59
+ flexDirection: "column"
60
+ }),
61
+ row: css({
62
+ display: "flex",
63
+ gap: theme.spacing(2)
64
+ }),
65
+ keyName: css({
66
+ display: "flex",
67
+ flexGrow: "0",
68
+ width: 120,
69
+ alignItems: "center",
70
+ height: theme.spacing(theme.components.height.md)
71
+ }),
72
+ value: css({
73
+ flexGrow: 1,
74
+ minHeight: theme.spacing(theme.components.height.md),
75
+ display: "flex",
76
+ alignItems: "center"
77
+ })
78
+ };
79
+ }
80
+
81
+ export { DebugDetails };
82
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVidWdEZXRhaWxzLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9TY2VuZURlYnVnZ2VyL0RlYnVnRGV0YWlscy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vY3NzJztcbmltcG9ydCB7IEdyYWZhbmFUaGVtZTIgfSBmcm9tICdAZ3JhZmFuYS9kYXRhJztcbmltcG9ydCB7IElucHV0LCBKU09ORm9ybWF0dGVyLCB1c2VTdHlsZXMyIH0gZnJvbSAnQGdyYWZhbmEvdWknO1xuaW1wb3J0IHsgaXNBcnJheSwgaXNQbGFpbk9iamVjdCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgaXNTY2VuZU9iamVjdCwgU2NlbmVPYmplY3QgfSBmcm9tICcuLi8uLi9jb3JlL3R5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBQcm9wcyB7XG4gIG5vZGU6IFNjZW5lT2JqZWN0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRGVidWdEZXRhaWxzKHsgbm9kZSB9OiBQcm9wcykge1xuICBjb25zdCBzdGF0ZSA9IG5vZGUudXNlU3RhdGUoKTtcbiAgY29uc3Qgc3R5bGVzID0gdXNlU3R5bGVzMihnZXRTdHlsZXMpO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5jb250YWluZXJ9PlxuICAgICAge09iamVjdC5rZXlzKHN0YXRlKS5tYXAoKGtleSkgPT4gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLnJvd30ga2V5PXtrZXl9PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMua2V5TmFtZX0+e2tleX08L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLnZhbHVlfT57cmVuZGVyVmFsdWUoa2V5LCAoc3RhdGUgYXMgYW55KVtrZXldLCBub2RlKX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICApKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gcmVuZGVyVmFsdWUoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnksIG5vZGU6IFNjZW5lT2JqZWN0KSB7XG4gIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiAnbnVsbCc7XG4gIH1cblxuICBzd2l0Y2ggKHR5cGVvZiB2YWx1ZSkge1xuICAgIGNhc2UgJ251bWJlcic6XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8SW5wdXRcbiAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICBkZWZhdWx0VmFsdWU9e3ZhbHVlfVxuICAgICAgICAgIG9uQmx1cj17KGV2dCkgPT4gbm9kZS5zZXRTdGF0ZSh7IFtrZXldOiBldnQuY3VycmVudFRhcmdldC52YWx1ZUFzTnVtYmVyIH0pfVxuICAgICAgICAvPlxuICAgICAgKTtcbiAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPElucHV0IHR5cGU9XCJ0ZXh0XCIgZGVmYXVsdFZhbHVlPXt2YWx1ZX0gb25CbHVyPXsoZXZ0KSA9PiBub2RlLnNldFN0YXRlKHsgW2tleV06IGV2dC5jdXJyZW50VGFyZ2V0LnZhbHVlIH0pfSAvPlxuICAgICAgKTtcbiAgICBjYXNlICdvYmplY3QnOlxuICAgICAgaWYgKGlzU2NlbmVPYmplY3QodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5jb25zdHJ1Y3Rvci5uYW1lO1xuICAgICAgfVxuICAgICAgaWYgKGlzUGxhaW5PYmplY3QodmFsdWUpIHx8IGlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiA8SlNPTkZvcm1hdHRlciBqc29uPXt2YWx1ZX0gb3Blbj17MH0gLz47XG4gICAgICB9XG4gICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRTdHlsZXModGhlbWU6IEdyYWZhbmFUaGVtZTIpIHtcbiAgcmV0dXJuIHtcbiAgICBjb250YWluZXI6IGNzcyh7XG4gICAgICBmbGV4R3JvdzogMSxcbiAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgIGdhcDogdGhlbWUuc3BhY2luZygwLjUpLFxuICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgfSksXG4gICAgcm93OiBjc3Moe1xuICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgZ2FwOiB0aGVtZS5zcGFjaW5nKDIpLFxuICAgIH0pLFxuICAgIGtleU5hbWU6IGNzcyh7XG4gICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICBmbGV4R3JvdzogJzAnLFxuICAgICAgd2lkdGg6IDEyMCxcbiAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgaGVpZ2h0OiB0aGVtZS5zcGFjaW5nKHRoZW1lLmNvbXBvbmVudHMuaGVpZ2h0Lm1kKSxcbiAgICB9KSxcbiAgICB2YWx1ZTogY3NzKHtcbiAgICAgIGZsZXhHcm93OiAxLFxuICAgICAgbWluSGVpZ2h0OiB0aGVtZS5zcGFjaW5nKHRoZW1lLmNvbXBvbmVudHMuaGVpZ2h0Lm1kKSxcbiAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIH0pLFxuICB9O1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQVdnQixTQUFBLFlBQUEsQ0FBYSxFQUFFLElBQUEsRUFBZSxFQUFBO0FBQzVDLEVBQU0sTUFBQSxLQUFBLEdBQVEsS0FBSyxRQUFTLEVBQUEsQ0FBQTtBQUM1QixFQUFNLE1BQUEsTUFBQSxHQUFTLFdBQVcsU0FBUyxDQUFBLENBQUE7QUFFbkMsRUFBQSx1QkFDRyxLQUFBLENBQUEsYUFBQSxDQUFBLEtBQUEsRUFBQTtBQUFBLElBQUksV0FBVyxNQUFPLENBQUEsU0FBQTtBQUFBLEdBQUEsRUFDcEIsT0FBTyxJQUFLLENBQUEsS0FBSyxFQUFFLEdBQUksQ0FB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
@@ -0,0 +1,72 @@
1
+ import { cx, css } from '@emotion/css';
2
+ import { useStyles2 } from '@grafana/ui';
3
+ import React from 'react';
4
+
5
+ function DebugTreeNode({ node, selectedObject, onSelect }) {
6
+ const styles = useStyles2(getStyles);
7
+ const children = [];
8
+ const isSelected = node === selectedObject;
9
+ node.forEachChild((child) => {
10
+ children.push(
11
+ /* @__PURE__ */ React.createElement(DebugTreeNode, {
12
+ node: child,
13
+ key: child.state.key,
14
+ selectedObject,
15
+ onSelect
16
+ })
17
+ );
18
+ });
19
+ return /* @__PURE__ */ React.createElement("div", {
20
+ className: styles.container
21
+ }, /* @__PURE__ */ React.createElement("div", {
22
+ className: cx(styles.name, isSelected && styles.selected),
23
+ onClick: () => onSelect(node)
24
+ }, node.constructor.name), /* @__PURE__ */ React.createElement("div", {
25
+ className: styles.children
26
+ }, children));
27
+ }
28
+ function getStyles(theme) {
29
+ return {
30
+ container: css({
31
+ flexGrow: 1,
32
+ display: "flex",
33
+ gap: theme.spacing(0.5),
34
+ flexDirection: "column"
35
+ }),
36
+ name: css({
37
+ flexGrow: 1,
38
+ display: "flex",
39
+ gap: theme.spacing(1),
40
+ fontSize: theme.typography.bodySmall.fontSize,
41
+ cursor: "pointer",
42
+ padding: theme.spacing(0, 1),
43
+ borderRadius: theme.shape.borderRadius(2),
44
+ position: "relative",
45
+ "&:hover": {
46
+ background: theme.colors.background.secondary
47
+ }
48
+ }),
49
+ selected: css({
50
+ "&::before": {
51
+ display: "block",
52
+ content: "' '",
53
+ position: "absolute",
54
+ left: 0,
55
+ width: 4,
56
+ bottom: 2,
57
+ top: 2,
58
+ borderRadius: theme.shape.radius.default,
59
+ backgroundImage: theme.colors.gradients.brandVertical
60
+ }
61
+ }),
62
+ children: css({
63
+ flexGrow: 1,
64
+ display: "flex",
65
+ flexDirection: "column",
66
+ paddingLeft: theme.spacing(1)
67
+ })
68
+ };
69
+ }
70
+
71
+ export { DebugTreeNode };
72
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVidWdUcmVlTm9kZS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvU2NlbmVEZWJ1Z2dlci9EZWJ1Z1RyZWVOb2RlLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjc3MsIGN4IH0gZnJvbSAnQGVtb3Rpb24vY3NzJztcbmltcG9ydCB7IEdyYWZhbmFUaGVtZTIgfSBmcm9tICdAZ3JhZmFuYS9kYXRhJztcbmltcG9ydCB7IHVzZVN0eWxlczIgfSBmcm9tICdAZ3JhZmFuYS91aSc7XG5pbXBvcnQgUmVhY3QsIHsgUmVhY3ROb2RlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgU2NlbmVPYmplY3QgfSBmcm9tICcuLi8uLi9jb3JlL3R5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBQcm9wcyB7XG4gIG5vZGU6IFNjZW5lT2JqZWN0O1xuICBzZWxlY3RlZE9iamVjdD86IFNjZW5lT2JqZWN0O1xuICBvblNlbGVjdDogKG5vZGU6IFNjZW5lT2JqZWN0KSA9PiB2b2lkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRGVidWdUcmVlTm9kZSh7IG5vZGUsIHNlbGVjdGVkT2JqZWN0LCBvblNlbGVjdCB9OiBQcm9wcykge1xuICBjb25zdCBzdHlsZXMgPSB1c2VTdHlsZXMyKGdldFN0eWxlcyk7XG4gIGNvbnN0IGNoaWxkcmVuOiBSZWFjdE5vZGVbXSA9IFtdO1xuICBjb25zdCBpc1NlbGVjdGVkID0gbm9kZSA9PT0gc2VsZWN0ZWRPYmplY3Q7XG5cbiAgbm9kZS5mb3JFYWNoQ2hpbGQoKGNoaWxkKSA9PiB7XG4gICAgY2hpbGRyZW4ucHVzaChcbiAgICAgIDxEZWJ1Z1RyZWVOb2RlIG5vZGU9e2NoaWxkfSBrZXk9e2NoaWxkLnN0YXRlLmtleX0gc2VsZWN0ZWRPYmplY3Q9e3NlbGVjdGVkT2JqZWN0fSBvblNlbGVjdD17b25TZWxlY3R9IC8+XG4gICAgKTtcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmNvbnRhaW5lcn0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17Y3goc3R5bGVzLm5hbWUsIGlzU2VsZWN0ZWQgJiYgc3R5bGVzLnNlbGVjdGVkKX0gb25DbGljaz17KCkgPT4gb25TZWxlY3Qobm9kZSl9PlxuICAgICAgICB7bm9kZS5jb25zdHJ1Y3Rvci5uYW1lfVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmNoaWxkcmVufT57Y2hpbGRyZW59PC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmZ1bmN0aW9uIGdldFN0eWxlcyh0aGVtZTogR3JhZmFuYVRoZW1lMikge1xuICByZXR1cm4ge1xuICAgIGNvbnRhaW5lcjogY3NzKHtcbiAgICAgIGZsZXhHcm93OiAxLFxuICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgZ2FwOiB0aGVtZS5zcGFjaW5nKDAuNSksXG4gICAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICB9KSxcbiAgICBuYW1lOiBjc3Moe1xuICAgICAgZmxleEdyb3c6IDEsXG4gICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICBnYXA6IHRoZW1lLnNwYWNpbmcoMSksXG4gICAgICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5ib2R5U21hbGwuZm9udFNpemUsXG4gICAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICAgIHBhZGRpbmc6IHRoZW1lLnNwYWNpbmcoMCwgMSksXG4gICAgICBib3JkZXJSYWRpdXM6IHRoZW1lLnNoYXBlLmJvcmRlclJhZGl1cygyKSxcbiAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgJyY6aG92ZXInOiB7XG4gICAgICAgIGJhY2tncm91bmQ6IHRoZW1lLmNvbG9ycy5iYWNrZ3JvdW5kLnNlY29uZGFyeSxcbiAgICAgIH0sXG4gICAgfSksXG4gICAgc2VsZWN0ZWQ6IGNzcyh7XG4gICAgICAnJjo6YmVmb3JlJzoge1xuICAgICAgICBkaXNwbGF5OiAnYmxvY2snLFxuICAgICAgICBjb250ZW50OiBcIicgJ1wiLFxuICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgbGVmdDogMCxcbiAgICAgICAgd2lkdGg6IDQsXG4gICAgICAgIGJvdHRvbTogMixcbiAgICAgICAgdG9wOiAyLFxuICAgICAgICBib3JkZXJSYWRpdXM6IHRoZW1lLnNoYXBlLnJhZGl1cy5kZWZhdWx0LFxuICAgICAgICBiYWNrZ3JvdW5kSW1hZ2U6IHRoZW1lLmNvbG9ycy5ncmFkaWVudHMuYnJhbmRWZXJ0aWNhbCxcbiAgICAgIH0sXG4gICAgfSksXG4gICAgY2hpbGRyZW46IGNzcyh7XG4gICAgICBmbGV4R3JvdzogMSxcbiAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgcGFkZGluZ0xlZnQ6IHRoZW1lLnNwYWNpbmcoMSksXG4gICAgfSksXG4gIH07XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQVlPLFNBQVMsYUFBYyxDQUFBLEVBQUUsSUFBTSxFQUFBLGNBQUEsRUFBZ0IsVUFBbUIsRUFBQTtBQUN2RSxFQUFNLE1BQUEsTUFBQSxHQUFTLFdBQVcsU0FBUyxDQUFBLENBQUE7QUFDbkMsRUFBQSxNQUFNLFdBQXdCLEVBQUMsQ0FBQTtBQUMvQixFQUFBLE1BQU0sYUFBYSxJQUFTLEtBQUEsY0FBQSxDQUFBO0FBRTVCLEVBQUssSUFBQSxDQUFBLFlBQUEsQ0FBYSxDQUFDLEtBQVUsS0FBQTtBQUMzQixJQUFTLFFBQUEsQ0FBQSxJQUFBO0FBQUEsc0JBQ04sS0FBQSxDQUFBLGFBQUEsQ0FBQSxhQUFBLEVBQUE7QUFBQSxRQUFjLElBQU0sRUFBQSxLQUFBO0FBQUEsUUFBTyxHQUFBLEVBQUssTUFBTSxLQUFNLENBQUEsR0FBQTtBQUFBLFFBQUssY0FBQTtBQUFBLFFBQWdDLFFBQUE7QUFBQSxPQUFvQixDQUFBO0FBQUEsS0FDeEcsQ0FBQTtBQUFBLEdBQ0QsQ0FBQSxDQUFBO0FBRUQsRUFBQSx1QkFDRyxLQUFBLENBQUEsYUFBQSxDQUFBLEtBQUEsRUFBQTtBQUFBLElBQUksV0FBVyxNQUFPLENBQUEsU0FBQTtBQUFBLEdBQUEsa0JBQ3BCLEtBQUEsQ0FBQSxhQUFBLENBQUEsS0FBQSxFQUFBO0FBQUEsSUFBSSxXQUFXLEVBQUcsQ0FBQSxNQUFBLENBQU8sSUFBTSxFQUFBLFVBQUEsSUFBYyxPQUFPLFFBQVEsQ0FBQTtBQUFBLElBQUcsT0FBQSxFQUFTLE1BQU0sUUFBQSxDQUFTLElBQUksQ0FBQTtBQUFBLEdBQUEsRUFDekYsSUFBSyxDQUFBLFdBQUEsQ0FBWSxJQUNwQixDQUFBLGtCQUNDLEtBQUEsQ0FBQSxhQUFBLENBQUEsS0FBQSxFQUFBO0FBQUEsSUFBSSxXQUFXLE1BQU8sQ0FBQSxRQUFBO0FBQUEsR0FBQSxFQUFXLFFBQVMsQ0FDN0MsQ0FBQSxDQUFBO0FBRUosQ0FBQTtBQUVBLFNBQVMsVUFBVSxLQUFzQixFQUFBO0FBQ3ZDLEVBQU8sT0FBQTtBQUFBLElBQ0wsV0FBVyxHQUFJLENBQUE7QUFBQSxNQUNiLFFBQVUsRUFBQSxDQUFBO0FBQUEsTUFDVixPQUFTLEVBQUEsTUFBQTtBQUFBLE1BQ1QsR0FBQSxFQUFLLEtBQU0sQ0FBQSxPQUFBLENBQVEsR0FBRyxDQUFBO0FBQUEsTUFDdEIsYUFBZSxFQUFBLFFBQUE7QUFBQSxLQUNoQixDQUFBO0FBQUEsSUFDRCxNQUFNLEdBQUksQ0FBQTtBQUFBLE1BQ1IsUUFBVSxFQUFBLENBQUE7QUFBQSxNQUNWLE9BQVMsRUFBQSxNQUFBO0FBQUEsTUFDVCxHQUFBLEVBQUssS0FBTSxDQUFBLE9BQUEsQ0FBUSxDQUFDLENBQUE7QUFBQSxNQUNwQixRQUFBLEVBQVUsS0FBTSxDQUFBLFVBQUEsQ0FBVyxTQUFVLENBQUEsUUFBQTtBQUFBLE1BQ3JDLE1BQVEsRUFBQSxTQUFBO0FBQUEsTUFDUixPQUFTLEVBQUEsS0FBQSxDQUFNLE9BQVEsQ0FBQSxDQUFBLEVBQUcsQ0FBQyxDQUFBO0FBQUEsTUFDM0IsWUFBYyxFQUFBLEtBQUEsQ0FBTSxLQUFNLENBQUEsWUFBQSxDQUFhLENBQUMsQ0FBQTtBQUFBLE1BQ3hDLFFBQVUsRUFBQSxVQUFBO0FBQUEsTUFDVixTQUFXLEVBQUE7QUFBQSxRQUNULFVBQUEsRUFBWSxLQUFNLENBQUEsTUFBQSxDQUFPLFVBQVcsQ0FBQSxTQUFBO0FBQUEsT0FDdEM7QUFBQSxLQUNELENBQUE7QUFBQSxJQUNELFVBQVUsR0FBSSxDQUFBO0FBQUEsTUFDWixXQUFhLEVBQUE7QUFBQSxRQUNYLE9BQVMsRUFBQSxPQUFBO0FBQUEsUUFDVCxPQUFTLEVBQUEsS0FBQTtBQUFBLFFBQ1QsUUFBVSxFQUFBLFVBQUE7QUFBQSxRQUNWLElBQU0sRUFBQSxDQUFBO0FBQUEsUUFDTixLQUFPLEVBQUEsQ0FBQTtBQUFBLFFBQ1AsTUFBUSxFQUFBLENBQUE7QUFBQSxRQUNSLEdBQUssRUFBQSxDQUFBO0FBQUEsUUFDTCxZQUFBLEVBQWMsS0FBTSxDQUFBLEtBQUEsQ0FBTSxNQUFPLENBQUEsT0FBQTtBQUFBLFFBQ2pDLGVBQUEsRUFBaUIsS0FBTSxDQUFBLE1BQUEsQ0FBTyxTQUFVLENBQUEsYUFBQTtBQUFBLE9BQzFDO0FBQUEsS0FDRCxDQUFBO0FBQUEsSUFDRCxVQUFVLEdBQUksQ0FBQTtBQUFBLE1BQ1osUUFBVSxFQUFBLENBQUE7QUFBQSxNQUNWLE9BQVMsRUFBQSxNQUFBO0FBQUEsTUFDVCxhQUFlLEVBQUEsUUFBQTtBQUFBLE1BQ2YsV0FBQSxFQUFhLEtBQU0sQ0FBQSxPQUFBLENBQVEsQ0FBQyxDQUFBO0FBQUEsS0FDN0IsQ0FBQTtBQUFBLEdBQ0gsQ0FBQTtBQUNGOzs7OyJ9
@@ -0,0 +1,77 @@
1
+ import { css } from '@emotion/css';
2
+ import { useStyles2, ToolbarButton, Drawer, CustomScrollbar } from '@grafana/ui';
3
+ import React, { useState } from 'react';
4
+ import { DebugDetails } from './DebugDetails.js';
5
+ import { DebugTreeNode } from './DebugTreeNode.js';
6
+
7
+ function SceneDebugger({ scene }) {
8
+ const styles = useStyles2(getStyles);
9
+ const [isOpen, setIsOpen] = useState(false);
10
+ const [selectedObject, setSelectedObject] = useState();
11
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(ToolbarButton, {
12
+ variant: "canvas",
13
+ icon: "bug",
14
+ onClick: () => setIsOpen(true)
15
+ }), isOpen && /* @__PURE__ */ React.createElement(Drawer, {
16
+ title: "Scene debugger",
17
+ onClose: () => setIsOpen(false),
18
+ size: "lg"
19
+ }, /* @__PURE__ */ React.createElement("div", {
20
+ className: styles.panes
21
+ }, /* @__PURE__ */ React.createElement("div", {
22
+ className: styles.pane1
23
+ }, /* @__PURE__ */ React.createElement("div", {
24
+ className: styles.paneHeading
25
+ }, "Scene graph"), /* @__PURE__ */ React.createElement(CustomScrollbar, {
26
+ autoHeightMin: "100%"
27
+ }, /* @__PURE__ */ React.createElement("div", {
28
+ className: styles.treeWrapper
29
+ }, /* @__PURE__ */ React.createElement(DebugTreeNode, {
30
+ node: scene,
31
+ selectedObject,
32
+ onSelect: setSelectedObject
33
+ })))), /* @__PURE__ */ React.createElement("div", {
34
+ className: styles.pane2
35
+ }, /* @__PURE__ */ React.createElement("div", {
36
+ className: styles.paneHeading
37
+ }, "Object details"), selectedObject && /* @__PURE__ */ React.createElement(DebugDetails, {
38
+ node: selectedObject
39
+ })))));
40
+ }
41
+ function getStyles(theme) {
42
+ return {
43
+ panes: css({
44
+ flexGrow: 1,
45
+ display: "flex",
46
+ height: "100%",
47
+ flexDirection: "row",
48
+ marginTop: theme.spacing(-2)
49
+ }),
50
+ pane1: css({
51
+ flexGrow: 0,
52
+ display: "flex",
53
+ height: "100%",
54
+ flexDirection: "column",
55
+ borderRight: `1px solid ${theme.colors.border.weak}`
56
+ }),
57
+ pane2: css({
58
+ flexGrow: 1,
59
+ display: "flex",
60
+ minHeight: "100%",
61
+ flexDirection: "column",
62
+ paddingLeft: theme.spacing(2)
63
+ }),
64
+ treeWrapper: css({
65
+ paddingRight: theme.spacing(2),
66
+ height: "100%",
67
+ marginLeft: theme.spacing(-1)
68
+ }),
69
+ paneHeading: css({
70
+ padding: theme.spacing(1, 0),
71
+ fontWeight: theme.typography.fontWeightMedium
72
+ })
73
+ };
74
+ }
75
+
76
+ export { SceneDebugger };
77
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NlbmVEZWJ1Z2dlci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvU2NlbmVEZWJ1Z2dlci9TY2VuZURlYnVnZ2VyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9jc3MnO1xuaW1wb3J0IHsgR3JhZmFuYVRoZW1lMiB9IGZyb20gJ0BncmFmYW5hL2RhdGEnO1xuaW1wb3J0IHsgQ3VzdG9tU2Nyb2xsYmFyLCBEcmF3ZXIsIFRvb2xiYXJCdXR0b24sIHVzZVN0eWxlczIgfSBmcm9tICdAZ3JhZmFuYS91aSc7XG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IFNjZW5lT2JqZWN0IH0gZnJvbSAnLi4vLi4vY29yZS90eXBlcyc7XG5pbXBvcnQgeyBEZWJ1Z0RldGFpbHMgfSBmcm9tICcuL0RlYnVnRGV0YWlscyc7XG5pbXBvcnQgeyBEZWJ1Z1RyZWVOb2RlIH0gZnJvbSAnLi9EZWJ1Z1RyZWVOb2RlJztcblxuZXhwb3J0IGludGVyZmFjZSBQcm9wcyB7XG4gIHNjZW5lOiBTY2VuZU9iamVjdDtcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqIFBsZWFzZSBkb24ndCB1c2UgZnJvbSBwbHVnaW5zIGRpcmVjdGx5LlxuICogVGhpcyBpcyBhbHJlYWR5IGV4cG9zZWQgdmlhIFNjZW5lQXBwUGFnZSBhbmQgdGhlID9zY2VuZS1kZWJ1Z2dlciBxdWVyeSBwYXJhbWV0ZXIuXG4gKlxuICogVGhpcyBpcyBvbmx5IGV4cG9ydGVkIHNvIHRoYXQgY29yZSBkYXNoYm9hcmRzIGNhbiB1c2UgaXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBTY2VuZURlYnVnZ2VyKHsgc2NlbmUgfTogUHJvcHMpIHtcbiAgY29uc3Qgc3R5bGVzID0gdXNlU3R5bGVzMihnZXRTdHlsZXMpO1xuICBjb25zdCBbaXNPcGVuLCBzZXRJc09wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbc2VsZWN0ZWRPYmplY3QsIHNldFNlbGVjdGVkT2JqZWN0XSA9IHVzZVN0YXRlPFNjZW5lT2JqZWN0PigpO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxUb29sYmFyQnV0dG9uIHZhcmlhbnQ9XCJjYW52YXNcIiBpY29uPVwiYnVnXCIgb25DbGljaz17KCkgPT4gc2V0SXNPcGVuKHRydWUpfSAvPlxuICAgICAge2lzT3BlbiAmJiAoXG4gICAgICAgIDxEcmF3ZXIgdGl0bGU9XCJTY2VuZSBkZWJ1Z2dlclwiIG9uQ2xvc2U9eygpID0+IHNldElzT3BlbihmYWxzZSl9IHNpemU9XCJsZ1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMucGFuZXN9PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5wYW5lMX0+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMucGFuZUhlYWRpbmd9PlNjZW5lIGdyYXBoPC9kaXY+XG4gICAgICAgICAgICAgIDxDdXN0b21TY3JvbGxiYXIgYXV0b0hlaWdodE1pbj17JzEwMCUnfT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLnRyZWVXcmFwcGVyfT5cbiAgICAgICAgICAgICAgICAgIDxEZWJ1Z1RyZWVOb2RlIG5vZGU9e3NjZW5lfSBzZWxlY3RlZE9iamVjdD17c2VsZWN0ZWRPYmplY3R9IG9uU2VsZWN0PXtzZXRTZWxlY3RlZE9iamVjdH0gLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9DdXN0b21TY3JvbGxiYXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMucGFuZTJ9PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLnBhbmVIZWFkaW5nfT5PYmplY3QgZGV0YWlsczwvZGl2PlxuICAgICAgICAgICAgICB7c2VsZWN0ZWRPYmplY3QgJiYgPERlYnVnRGV0YWlscyBub2RlPXtzZWxlY3RlZE9iamVjdH0gLz59XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9EcmF3ZXI+XG4gICAgICApfVxuICAgIDwvPlxuICApO1xufVxuXG5mdW5jdGlvbiBnZXRTdHlsZXModGhlbWU6IEdyYWZhbmFUaGVtZTIpIHtcbiAgcmV0dXJuIHtcbiAgICBwYW5lczogY3NzKHtcbiAgICAgIGZsZXhHcm93OiAxLFxuICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICBmbGV4RGlyZWN0aW9uOiAncm93JyxcbiAgICAgIG1hcmdpblRvcDogdGhlbWUuc3BhY2luZygtMiksXG4gICAgfSksXG4gICAgcGFuZTE6IGNzcyh7XG4gICAgICBmbGV4R3JvdzogMCxcbiAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICBib3JkZXJSaWdodDogYDFweCBzb2xpZCAke3RoZW1lLmNvbG9ycy5ib3JkZXIud2Vha31gLFxuICAgIH0pLFxuICAgIHBhbmUyOiBjc3Moe1xuICAgICAgZmxleEdyb3c6IDEsXG4gICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICBtaW5IZWlnaHQ6ICcxMDAlJyxcbiAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgcGFkZGluZ0xlZnQ6IHRoZW1lLnNwYWNpbmcoMiksXG4gICAgfSksXG4gICAgdHJlZVdyYXBwZXI6IGNzcyh7XG4gICAgICBwYWRkaW5nUmlnaHQ6IHRoZW1lLnNwYWNpbmcoMiksXG4gICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgIG1hcmdpbkxlZnQ6IHRoZW1lLnNwYWNpbmcoLTEpLFxuICAgIH0pLFxuICAgIHBhbmVIZWFkaW5nOiBjc3Moe1xuICAgICAgcGFkZGluZzogdGhlbWUuc3BhY2luZygxLCAwKSxcbiAgICAgIGZvbnRXZWlnaHQ6IHRoZW1lLnR5cG9ncmFwaHkuZm9udFdlaWdodE1lZGl1bSxcbiAgICB9KSxcbiAgfTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFvQmdCLFNBQUEsYUFBQSxDQUFjLEVBQUUsS0FBQSxFQUFnQixFQUFBO0FBQzlDLEVBQU0sTUFBQSxNQUFBLEdBQVMsV0FBVyxTQUFTLENBQUEsQ0FBQTtBQUNuQyxFQUFBLE1BQU0sQ0FBQyxNQUFBLEVBQVEsU0FBUyxDQUFBLEdBQUksU0FBUyxLQUFLLENBQUEsQ0FBQTtBQUMxQyxFQUFBLE1BQU0sQ0FBQyxjQUFBLEVBQWdCLGlCQUFpQixDQUFBLEdBQUksUUFBc0IsRUFBQSxDQUFBO0FBRWxFLEVBQUEsaUZBRUssS0FBQSxDQUFBLGFBQUEsQ0FBQSxhQUFBLEVBQUE7QUFBQSxJQUFjLE9BQVEsRUFBQSxRQUFBO0FBQUEsSUFBUyxJQUFLLEVBQUEsS0FBQTtBQUFBLElBQU0sT0FBQSxFQUFTLE1BQU0sU0FBQSxDQUFVLElBQUksQ0FBQTtBQUFBLEdBQUcsQ0FBQSxFQUMxRSwwQkFDRSxLQUFBLENBQUEsYUFBQSxDQUFBLE1BQUEsRUFBQTtBQUFBLElBQU8sS0FBTSxFQUFBLGdCQUFBO0FBQUEsSUFBaUIsT0FBQSxFQUFTLE1BQU0sU0FBQSxDQUFVLEtBQUssQ0FBQTtBQUFBLElBQUcsSUFBSyxFQUFBLElBQUE7QUFBQSxHQUFBLGtCQUNsRSxLQUFBLENBQUEsYUFBQSxDQUFBLEtBQUEsRUFBQTtBQUFBLElBQUksV0FBVyxNQUFPLENBQUEsS0FBQTtBQUFBLEdBQUEsa0JBQ3BCLEtBQUEsQ0FBQSxhQUFBLENBQUEsS0FBQSxFQUFBO0FBQUEsSUFBSSxXQUFXLE1BQU8sQ0FBQSxLQUFBO0FBQUEsR0FBQSxrQkFDcEIsS0FBQSxDQUFBLGFBQUEsQ0FBQSxLQUFBLEVBQUE7QUFBQSxJQUFJLFdBQVcsTUFBTyxDQUFBLFdBQUE7QUFBQSxHQUFhLEVBQUEsYUFBVyxtQkFDOUMsS0FBQSxDQUFBLGFBQUEsQ0FBQSxlQUFBLEVB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