@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,240 @@
1
+ import { rangeUtil, dateTime, FieldType } from '@grafana/data';
2
+ import { config } from '@grafana/runtime';
3
+ import { useStyles2, ButtonGroup, ToolbarButton, Checkbox, ButtonSelect } from '@grafana/ui';
4
+ import React from 'react';
5
+ import { sceneGraph } from '../core/sceneGraph/index.js';
6
+ import { SceneObjectBase } from '../core/SceneObjectBase.js';
7
+ import { SceneObjectUrlSyncConfig } from '../services/SceneObjectUrlSyncConfig.js';
8
+ import { getCompareSeriesRefId } from '../utils/getCompareSeriesRefId.js';
9
+ import { parseUrlParam } from '../utils/parseUrlParam.js';
10
+ import { css } from '@emotion/css';
11
+ import { of } from 'rxjs';
12
+
13
+ var __defProp = Object.defineProperty;
14
+ var __defProps = Object.defineProperties;
15
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
16
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
17
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
18
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
19
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
20
+ var __spreadValues = (a, b) => {
21
+ for (var prop in b || (b = {}))
22
+ if (__hasOwnProp.call(b, prop))
23
+ __defNormalProp(a, prop, b[prop]);
24
+ if (__getOwnPropSymbols)
25
+ for (var prop of __getOwnPropSymbols(b)) {
26
+ if (__propIsEnum.call(b, prop))
27
+ __defNormalProp(a, prop, b[prop]);
28
+ }
29
+ return a;
30
+ };
31
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
32
+ const PREVIOUS_PERIOD_VALUE = "__previousPeriod";
33
+ const NO_PERIOD_VALUE = "__noPeriod";
34
+ const PREVIOUS_PERIOD_COMPARE_OPTION = {
35
+ label: "Previous period",
36
+ value: PREVIOUS_PERIOD_VALUE
37
+ };
38
+ const NO_COMPARE_OPTION = {
39
+ label: "No comparison",
40
+ value: NO_PERIOD_VALUE
41
+ };
42
+ const DEFAULT_COMPARE_OPTIONS = [
43
+ { label: "Day before", value: "24h" },
44
+ { label: "Week before", value: "1w" },
45
+ { label: "Month before", value: "1M" }
46
+ ];
47
+ class SceneTimeRangeCompare extends SceneObjectBase {
48
+ constructor(state) {
49
+ super(__spreadValues({ compareOptions: DEFAULT_COMPARE_OPTIONS }, state));
50
+ this._urlSync = new SceneObjectUrlSyncConfig(this, { keys: ["compareWith"] });
51
+ this._onActivate = () => {
52
+ const sceneTimeRange = sceneGraph.getTimeRange(this);
53
+ this.setState({ compareOptions: this.getCompareOptions(sceneTimeRange.state.value) });
54
+ this._subs.add(
55
+ sceneTimeRange.subscribeToState((timeRange) => {
56
+ const compareOptions = this.getCompareOptions(timeRange.value);
57
+ const stateUpdate = { compareOptions };
58
+ if (Boolean(this.state.compareWith) && !compareOptions.find(({ value }) => value === this.state.compareWith)) {
59
+ stateUpdate.compareWith = PREVIOUS_PERIOD_VALUE;
60
+ }
61
+ this.setState(stateUpdate);
62
+ })
63
+ );
64
+ };
65
+ this.getCompareOptions = (timeRange) => {
66
+ const diffDays = Math.ceil(timeRange.to.diff(timeRange.from));
67
+ const matchIndex = DEFAULT_COMPARE_OPTIONS.findIndex(({ value }) => {
68
+ const intervalInMs = rangeUtil.intervalToMs(value);
69
+ return intervalInMs >= diffDays;
70
+ });
71
+ return [
72
+ NO_COMPARE_OPTION,
73
+ PREVIOUS_PERIOD_COMPARE_OPTION,
74
+ ...DEFAULT_COMPARE_OPTIONS.slice(matchIndex).map(({ label, value }) => ({ label, value }))
75
+ ];
76
+ };
77
+ this.onCompareWithChanged = (compareWith) => {
78
+ if (compareWith === NO_PERIOD_VALUE) {
79
+ this.onClearCompare();
80
+ } else {
81
+ this.setState({ compareWith });
82
+ }
83
+ };
84
+ this.onClearCompare = () => {
85
+ this.setState({ compareWith: void 0 });
86
+ };
87
+ this.addActivationHandler(this._onActivate);
88
+ }
89
+ getExtraQueries(request) {
90
+ const extraQueries = [];
91
+ const compareRange = this.getCompareTimeRange(request.range);
92
+ if (!compareRange) {
93
+ return extraQueries;
94
+ }
95
+ const targets = request.targets.filter((query) => query.timeRangeCompare !== false);
96
+ if (targets.length) {
97
+ extraQueries.push({
98
+ req: __spreadProps(__spreadValues({}, request), {
99
+ targets,
100
+ range: compareRange
101
+ }),
102
+ processor: timeShiftAlignmentProcessor
103
+ });
104
+ }
105
+ return extraQueries;
106
+ }
107
+ shouldRerun(prev, next, queries) {
108
+ return prev.compareWith !== next.compareWith && queries.find((query) => query.timeRangeCompare !== false) !== void 0;
109
+ }
110
+ getCompareTimeRange(timeRange) {
111
+ let compareFrom;
112
+ let compareTo;
113
+ if (this.state.compareWith) {
114
+ if (this.state.compareWith === PREVIOUS_PERIOD_VALUE) {
115
+ const diffMs = timeRange.to.diff(timeRange.from);
116
+ compareFrom = dateTime(timeRange.from).subtract(diffMs);
117
+ compareTo = dateTime(timeRange.to).subtract(diffMs);
118
+ } else {
119
+ compareFrom = dateTime(timeRange.from).subtract(rangeUtil.intervalToMs(this.state.compareWith));
120
+ compareTo = dateTime(timeRange.to).subtract(rangeUtil.intervalToMs(this.state.compareWith));
121
+ }
122
+ return {
123
+ from: compareFrom,
124
+ to: compareTo,
125
+ raw: {
126
+ from: compareFrom,
127
+ to: compareTo
128
+ }
129
+ };
130
+ }
131
+ return void 0;
132
+ }
133
+ getUrlState() {
134
+ return {
135
+ compareWith: this.state.compareWith
136
+ };
137
+ }
138
+ updateFromUrl(values) {
139
+ if (!values.compareWith) {
140
+ return;
141
+ }
142
+ const compareWith = parseUrlParam(values.compareWith);
143
+ if (compareWith) {
144
+ const compareOptions = this.getCompareOptions(sceneGraph.getTimeRange(this).state.value);
145
+ if (compareOptions.find(({ value }) => value === compareWith)) {
146
+ this.setState({
147
+ compareWith
148
+ });
149
+ } else {
150
+ this.setState({
151
+ compareWith: "__previousPeriod"
152
+ });
153
+ }
154
+ }
155
+ }
156
+ }
157
+ SceneTimeRangeCompare.Component = SceneTimeRangeCompareRenderer;
158
+ const timeShiftAlignmentProcessor = (primary, secondary) => {
159
+ const diff = secondary.timeRange.from.diff(primary.timeRange.from);
160
+ secondary.series.forEach((series) => {
161
+ series.refId = getCompareSeriesRefId(series.refId || "");
162
+ series.meta = __spreadProps(__spreadValues({}, series.meta), {
163
+ timeCompare: {
164
+ diffMs: diff,
165
+ isTimeShiftQuery: true
166
+ }
167
+ });
168
+ series.fields.forEach((field) => {
169
+ if (field.type === FieldType.time) {
170
+ field.values = field.values.map((v) => {
171
+ return diff < 0 ? v - diff : v + diff;
172
+ });
173
+ }
174
+ field.config = __spreadProps(__spreadValues({}, field.config), {
175
+ color: {
176
+ mode: "fixed",
177
+ fixedColor: config.theme.palette.gray60
178
+ }
179
+ });
180
+ return field;
181
+ });
182
+ });
183
+ return of(secondary);
184
+ };
185
+ function SceneTimeRangeCompareRenderer({ model }) {
186
+ var _a;
187
+ const styles = useStyles2(getStyles);
188
+ const { compareWith, compareOptions } = model.useState();
189
+ const [previousCompare, setPreviousCompare] = React.useState(compareWith);
190
+ const previousValue = (_a = compareOptions.find(({ value: value2 }) => value2 === previousCompare)) != null ? _a : PREVIOUS_PERIOD_COMPARE_OPTION;
191
+ const value = compareOptions.find(({ value: value2 }) => value2 === compareWith);
192
+ const enabled = Boolean(value);
193
+ const onClick = () => {
194
+ if (enabled) {
195
+ setPreviousCompare(compareWith);
196
+ model.onClearCompare();
197
+ } else if (!enabled) {
198
+ model.onCompareWithChanged(previousValue.value);
199
+ }
200
+ };
201
+ return /* @__PURE__ */ React.createElement(ButtonGroup, null, /* @__PURE__ */ React.createElement(ToolbarButton, {
202
+ variant: "canvas",
203
+ tooltip: "Enable time frame comparison",
204
+ onClick: (e) => {
205
+ e.stopPropagation();
206
+ e.preventDefault();
207
+ onClick();
208
+ }
209
+ }, /* @__PURE__ */ React.createElement(Checkbox, {
210
+ label: " ",
211
+ value: enabled,
212
+ onClick
213
+ }), "Comparison"), enabled ? /* @__PURE__ */ React.createElement(ButtonSelect, {
214
+ variant: "canvas",
215
+ value,
216
+ options: compareOptions,
217
+ onChange: (v) => {
218
+ model.onCompareWithChanged(v.value);
219
+ }
220
+ }) : /* @__PURE__ */ React.createElement(ToolbarButton, {
221
+ className: styles.previewButton,
222
+ disabled: true,
223
+ variant: "canvas",
224
+ isOpen: false
225
+ }, previousValue.label));
226
+ }
227
+ function getStyles(theme) {
228
+ return {
229
+ previewButton: css({
230
+ "&:disabled": {
231
+ border: `1px solid ${theme.colors.secondary.border}`,
232
+ color: theme.colors.text.disabled,
233
+ opacity: 1
234
+ }
235
+ })
236
+ };
237
+ }
238
+
239
+ export { DEFAULT_COMPARE_OPTIONS, NO_COMPARE_OPTION, PREVIOUS_PERIOD_COMPARE_OPTION, SceneTimeRangeCompare };
240
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NlbmVUaW1lUmFuZ2VDb21wYXJlLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9TY2VuZVRpbWVSYW5nZUNvbXBhcmUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGFRdWVyeVJlcXVlc3QsIERhdGVUaW1lLCBkYXRlVGltZSwgRmllbGRUeXBlLCBHcmFmYW5hVGhlbWUyLCByYW5nZVV0aWwsIFRpbWVSYW5nZSB9IGZyb20gJ0BncmFmYW5hL2RhdGEnO1xuaW1wb3J0IHsgY29uZmlnIH0gZnJvbSAnQGdyYWZhbmEvcnVudGltZSc7XG5pbXBvcnQgeyBCdXR0b25Hcm91cCwgQnV0dG9uU2VsZWN0LCBDaGVja2JveCwgVG9vbGJhckJ1dHRvbiwgdXNlU3R5bGVzMiB9IGZyb20gJ0BncmFmYW5hL3VpJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBzY2VuZUdyYXBoIH0gZnJvbSAnLi4vY29yZS9zY2VuZUdyYXBoJztcbmltcG9ydCB7IFNjZW5lT2JqZWN0QmFzZSB9IGZyb20gJy4uL2NvcmUvU2NlbmVPYmplY3RCYXNlJztcbmltcG9ydCB7IFNjZW5lQ29tcG9uZW50UHJvcHMsIFNjZW5lRGF0YVF1ZXJ5LCBTY2VuZU9iamVjdFN0YXRlLCBTY2VuZU9iamVjdFVybFZhbHVlcyB9IGZyb20gJy4uL2NvcmUvdHlwZXMnO1xuaW1wb3J0IHsgRGF0YVF1ZXJ5RXh0ZW5kZWQgfSBmcm9tICcuLi9xdWVyeWluZy9TY2VuZVF1ZXJ5UnVubmVyJztcbmltcG9ydCB7IEV4dHJhUXVlcnlEZXNjcmlwdG9yLCBFeHRyYVF1ZXJ5RGF0YVByb2Nlc3NvciwgRXh0cmFRdWVyeVByb3ZpZGVyIH0gZnJvbSAnLi4vcXVlcnlpbmcvRXh0cmFRdWVyeVByb3ZpZGVyJztcbmltcG9ydCB7IFNjZW5lT2JqZWN0VXJsU3luY0NvbmZpZyB9IGZyb20gJy4uL3NlcnZpY2VzL1NjZW5lT2JqZWN0VXJsU3luY0NvbmZpZyc7XG5pbXBvcnQgeyBnZXRDb21wYXJlU2VyaWVzUmVmSWQgfSBmcm9tICcuLi91dGlscy9nZXRDb21wYXJlU2VyaWVzUmVmSWQnO1xuaW1wb3J0IHsgcGFyc2VVcmxQYXJhbSB9IGZyb20gJy4uL3V0aWxzL3BhcnNlVXJsUGFyYW0nO1xuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vY3NzJztcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcyc7XG5cbmludGVyZmFjZSBTY2VuZVRpbWVSYW5nZUNvbXBhcmVTdGF0ZSBleHRlbmRzIFNjZW5lT2JqZWN0U3RhdGUge1xuICBjb21wYXJlV2l0aD86IHN0cmluZztcbiAgY29tcGFyZU9wdGlvbnM6IEFycmF5PHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9Pjtcbn1cblxuY29uc3QgUFJFVklPVVNfUEVSSU9EX1ZBTFVFID0gJ19fcHJldmlvdXNQZXJpb2QnO1xuY29uc3QgTk9fUEVSSU9EX1ZBTFVFID0gJ19fbm9QZXJpb2QnO1xuXG5leHBvcnQgY29uc3QgUFJFVklPVVNfUEVSSU9EX0NPTVBBUkVfT1BUSU9OID0ge1xuICBsYWJlbDogJ1ByZXZpb3VzIHBlcmlvZCcsXG4gIHZhbHVlOiBQUkVWSU9VU19QRVJJT0RfVkFMVUUsXG59O1xuXG5leHBvcnQgY29uc3QgTk9fQ09NUEFSRV9PUFRJT04gPSB7XG4gIGxhYmVsOiAnTm8gY29tcGFyaXNvbicsXG4gIHZhbHVlOiBOT19QRVJJT0RfVkFMVUUsXG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9DT01QQVJFX09QVElPTlMgPSBbXG4gIHsgbGFiZWw6ICdEYXkgYmVmb3JlJywgdmFsdWU6ICcyNGgnIH0sXG4gIHsgbGFiZWw6ICdXZWVrIGJlZm9yZScsIHZhbHVlOiAnMXcnIH0sXG4gIHsgbGFiZWw6ICdNb250aCBiZWZvcmUnLCB2YWx1ZTogJzFNJyB9LFxuXTtcblxuZXhwb3J0IGNsYXNzIFNjZW5lVGltZVJhbmdlQ29tcGFyZVxuICBleHRlbmRzIFNjZW5lT2JqZWN0QmFzZTxTY2VuZVRpbWVSYW5nZUNvbXBhcmVTdGF0ZT5cbiAgaW1wbGVtZW50cyBFeHRyYVF1ZXJ5UHJvdmlkZXI8U2NlbmVUaW1lUmFuZ2VDb21wYXJlU3RhdGU+XG57XG4gIHN0YXRpYyBDb21wb25lbnQgPSBTY2VuZVRpbWVSYW5nZUNvbXBhcmVSZW5kZXJlcjtcbiAgcHJvdGVjdGVkIF91cmxTeW5jID0gbmV3IFNjZW5lT2JqZWN0VXJsU3luY0NvbmZpZyh0aGlzLCB7IGtleXM6IFsnY29tcGFyZVdpdGgnXSB9KTtcblxuICBwdWJsaWMgY29uc3RydWN0b3Ioc3RhdGU6IFBhcnRpYWw8U2NlbmVUaW1lUmFuZ2VDb21wYXJlU3RhdGU+KSB7XG4gICAgc3VwZXIoeyBjb21wYXJlT3B0aW9uczogREVGQVVMVF9DT01QQVJFX09QVElPTlMsIC4uLnN0YXRlIH0pO1xuICAgIHRoaXMuYWRkQWN0aXZhdGlvbkhhbmRsZXIodGhpcy5fb25BY3RpdmF0ZSk7XG4gIH1cblxuICBwcml2YXRlIF9vbkFjdGl2YXRlID0gKCkgPT4ge1xuICAgIGNvbnN0IHNjZW5lVGltZVJhbmdlID0gc2NlbmVHcmFwaC5nZXRUaW1lUmFuZ2UodGhpcyk7XG4gICAgdGhpcy5zZXRTdGF0ZSh7IGNvbXBhcmVPcHRpb25zOiB0aGlzLmdldENvbXBhcmVPcHRpb25zKHNjZW5lVGltZVJhbmdlLnN0YXRlLnZhbHVlKSB9KTtcblxuICAgIHRoaXMuX3N1YnMuYWRkKFxuICAgICAgc2NlbmVUaW1lUmFuZ2Uuc3Vic2NyaWJlVG9TdGF0ZSgodGltZVJhbmdlKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbXBhcmVPcHRpb25zID0gdGhpcy5nZXRDb21wYXJlT3B0aW9ucyh0aW1lUmFuZ2UudmFsdWUpO1xuICAgICAgICBjb25zdCBzdGF0ZVVwZGF0ZTogUGFydGlhbDxTY2VuZVRpbWVSYW5nZUNvbXBhcmVTdGF0ZT4gPSB7IGNvbXBhcmVPcHRpb25zIH07XG5cbiAgICAgICAgLy8gaWYgY3VycmVudCBjb21wYXJlV2l0aCBpcyBub3QgYXBwbGljYWJsZSB0byB0aGUgbmV3IHRpbWUgcmFuZ2UsIHNldCBpdCB0byBwcmV2aW91cyBwZXJpb2QgY29tcGFyaXNvblxuICAgICAgICBpZiAoQm9vbGVhbih0aGlzLnN0YXRlLmNvbXBhcmVXaXRoKSAmJiAhY29tcGFyZU9wdGlvbnMuZmluZCgoeyB2YWx1ZSB9KSA9PiB2YWx1ZSA9PT0gdGhpcy5zdGF0ZS5jb21wYXJlV2l0aCkpIHtcbiAgICAgICAgICBzdGF0ZVVwZGF0ZS5jb21wYXJlV2l0aCA9IFBSRVZJT1VTX1BFUklPRF9WQUxVRTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoc3RhdGVVcGRhdGUpO1xuICAgICAgfSlcbiAgICApO1xuICB9O1xuXG4gIHB1YmxpYyBnZXRDb21wYXJlT3B0aW9ucyA9ICh0aW1lUmFuZ2U6IFRpbWVSYW5nZSkgPT4ge1xuICAgIGNvbnN0IGRpZmZEYXlzID0gTWF0aC5jZWlsKHRpbWVSYW5nZS50by5kaWZmKHRpbWVSYW5nZS5mcm9tKSk7XG5cbiAgICBjb25zdCBtYXRjaEluZGV4ID0gREVGQVVMVF9DT01QQVJFX09QVElPTlMuZmluZEluZGV4KCh7IHZhbHVlIH0pID0+IHtcbiAgICAgIGNvbnN0IGludGVydmFsSW5NcyA9IHJhbmdlVXRpbC5pbnRlcnZhbFRvTXModmFsdWUpO1xuICAgICAgcmV0dXJuIGludGVydmFsSW5NcyA+PSBkaWZmRGF5cztcbiAgICB9KTtcblxuICAgIHJldHVybiBbXG4gICAgICBOT19DT01QQVJFX09QVElPTixcbiAgICAgIFBSRVZJT1VTX1BFUklPRF9DT01QQVJFX09QVElPTixcbiAgICAgIC4uLkRFRkFVTFRfQ09NUEFSRV9PUFRJT05TLnNsaWNlKG1hdGNoSW5kZXgpLm1hcCgoeyBsYWJlbCwgdmFsdWUgfSkgPT4gKHsgbGFiZWwsIHZhbHVlIH0pKSxcbiAgICBdO1xuICB9O1xuXG4gIHB1YmxpYyBvbkNvbXBhcmVXaXRoQ2hhbmdlZCA9IChjb21wYXJlV2l0aDogc3RyaW5nKSA9PiB7XG4gICAgaWYgKGNvbXBhcmVXaXRoID09PSBOT19QRVJJT0RfVkFMVUUpIHtcbiAgICAgIHRoaXMub25DbGVhckNvbXBhcmUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7IGNvbXBhcmVXaXRoIH0pO1xuICAgIH1cbiAgfTtcblxuICBwdWJsaWMgb25DbGVhckNvbXBhcmUgPSAoKSA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7IGNvbXBhcmVXaXRoOiB1bmRlZmluZWQgfSk7XG4gIH07XG5cbiAgLy8gR2V0IGEgdGltZSBzaGlmdGVkIHJlcXVlc3QgdG8gY29tcGFyZSB3aXRoIHRoZSBwcmltYXJ5IHJlcXVlc3QuXG4gIHB1YmxpYyBnZXRFeHRyYVF1ZXJpZXMocmVxdWVzdDogRGF0YVF1ZXJ5UmVxdWVzdCk6IEV4dHJhUXVlcnlEZXNjcmlwdG9yW10ge1xuICAgIGNvbnN0IGV4dHJhUXVlcmllczogRXh0cmFRdWVyeURlc2NyaXB0b3JbXSA9IFtdO1xuICAgIGNvbnN0IGNvbXBhcmVSYW5nZSA9IHRoaXMuZ2V0Q29tcGFyZVRpbWVSYW5nZShyZXF1ZXN0LnJhbmdlKTtcbiAgICBpZiAoIWNvbXBhcmVSYW5nZSkge1xuICAgICAgcmV0dXJuIGV4dHJhUXVlcmllcztcbiAgICB9XG5cbiAgICBjb25zdCB0YXJnZXRzID0gcmVxdWVzdC50YXJnZXRzLmZpbHRlcigocXVlcnk6IERhdGFRdWVyeUV4dGVuZGVkKSA9PiBxdWVyeS50aW1lUmFuZ2VDb21wYXJlICE9PSBmYWxzZSk7XG4gICAgaWYgKHRhcmdldHMubGVuZ3RoKSB7XG4gICAgICBleHRyYVF1ZXJpZXMucHVzaCh7XG4gICAgICAgIHJlcToge1xuICAgICAgICAgIC4uLnJlcXVlc3QsXG4gICAgICAgICAgdGFyZ2V0cyxcbiAgICAgICAgICByYW5nZTogY29tcGFyZVJhbmdlLFxuICAgICAgICB9LFxuICAgICAgICBwcm9jZXNzb3I6IHRpbWVTaGlmdEFsaWdubWVudFByb2Nlc3NvcixcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZXh0cmFRdWVyaWVzO1xuICB9XG5cbiAgLy8gVGhlIHF1ZXJ5IHJ1bm5lciBzaG91bGQgcmVydW4gdGhlIGNvbXBhcmlzb24gcXVlcnkgaWYgdGhlIGNvbXBhcmVXaXRoIHZhbHVlIGhhcyBjaGFuZ2VkIGFuZCB0aGVyZSBhcmUgcXVlcmllcyB0aGF0IGhhdmVuJ3Qgb3B0ZWQgb3V0IG9mIFRXQ1xuICBwdWJsaWMgc2hvdWxkUmVydW4oXG4gICAgcHJldjogU2NlbmVUaW1lUmFuZ2VDb21wYXJlU3RhdGUsXG4gICAgbmV4dDogU2NlbmVUaW1lUmFuZ2VDb21wYXJlU3RhdGUsXG4gICAgcXVlcmllczogU2NlbmVEYXRhUXVlcnlbXVxuICApOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgcHJldi5jb21wYXJlV2l0aCAhPT0gbmV4dC5jb21wYXJlV2l0aCAmJiBxdWVyaWVzLmZpbmQoKHF1ZXJ5KSA9PiBxdWVyeS50aW1lUmFuZ2VDb21wYXJlICE9PSBmYWxzZSkgIT09IHVuZGVmaW5lZFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q29tcGFyZVRpbWVSYW5nZSh0aW1lUmFuZ2U6IFRpbWVSYW5nZSk6IFRpbWVSYW5nZSB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IGNvbXBhcmVGcm9tOiBEYXRlVGltZTtcbiAgICBsZXQgY29tcGFyZVRvOiBEYXRlVGltZTtcblxuICAgIGlmICh0aGlzLnN0YXRlLmNvbXBhcmVXaXRoKSB7XG4gICAgICBpZiAodGhpcy5zdGF0ZS5jb21wYXJlV2l0aCA9PT0gUFJFVklPVVNfUEVSSU9EX1ZBTFVFKSB7XG4gICAgICAgIGNvbnN0IGRpZmZNcyA9IHRpbWVSYW5nZS50by5kaWZmKHRpbWVSYW5nZS5mcm9tKTtcbiAgICAgICAgY29tcGFyZUZyb20gPSBkYXRlVGltZSh0aW1lUmFuZ2UuZnJvbSEpLnN1YnRyYWN0KGRpZmZNcyk7XG4gICAgICAgIGNvbXBhcmVUbyA9IGRhdGVUaW1lKHRpbWVSYW5nZS50byEpLnN1YnRyYWN0KGRpZmZNcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb21wYXJlRnJvbSA9IGRhdGVUaW1lKHRpbWVSYW5nZS5mcm9tISkuc3VidHJhY3QocmFuZ2VVdGlsLmludGVydmFsVG9Ncyh0aGlzLnN0YXRlLmNvbXBhcmVXaXRoKSk7XG4gICAgICAgIGNvbXBhcmVUbyA9IGRhdGVUaW1lKHRpbWVSYW5nZS50byEpLnN1YnRyYWN0KHJhbmdlVXRpbC5pbnRlcnZhbFRvTXModGhpcy5zdGF0ZS5jb21wYXJlV2l0aCkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZnJvbTogY29tcGFyZUZyb20sXG4gICAgICAgIHRvOiBjb21wYXJlVG8sXG4gICAgICAgIHJhdzoge1xuICAgICAgICAgIGZyb206IGNvbXBhcmVGcm9tLFxuICAgICAgICAgIHRvOiBjb21wYXJlVG8sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0VXJsU3RhdGUoKTogU2NlbmVPYmplY3RVcmxWYWx1ZXMge1xuICAgIHJldHVybiB7XG4gICAgICBjb21wYXJlV2l0aDogdGhpcy5zdGF0ZS5jb21wYXJlV2l0aCxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUZyb21VcmwodmFsdWVzOiBTY2VuZU9iamVjdFVybFZhbHVlcykge1xuICAgIGlmICghdmFsdWVzLmNvbXBhcmVXaXRoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY29tcGFyZVdpdGggPSBwYXJzZVVybFBhcmFtKHZhbHVlcy5jb21wYXJlV2l0aCk7XG5cbiAgICBpZiAoY29tcGFyZVdpdGgpIHtcbiAgICAgIGNvbnN0IGNvbXBhcmVPcHRpb25zID0gdGhpcy5nZXRDb21wYXJlT3B0aW9ucyhzY2VuZUdyYXBoLmdldFRpbWVSYW5nZSh0aGlzKS5zdGF0ZS52YWx1ZSk7XG5cbiAgICAgIGlmIChjb21wYXJlT3B0aW9ucy5maW5kKCh7IHZhbHVlIH0pID0+IHZhbHVlID09PSBjb21wYXJlV2l0aCkpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgY29tcGFyZVdpdGgsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgY29tcGFyZVdpdGg6ICdfX3ByZXZpb3VzUGVyaW9kJyxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIFByb2Nlc3NvciBmdW5jdGlvbiBmb3IgdXNlIHdpdGggdGltZSBzaGlmdGVkIGNvbXBhcmlzb24gc2VyaWVzLlxuLy8gVGhpcyBhbGlnbnMgdGhlIHNlY29uZGFyeSBzZXJpZXMgd2l0aCB0aGUgcHJpbWFyeSBhbmQgYWRkcyBjdXN0b21cbi8vIG1ldGFkYXRhIGFuZCBjb25maWcgdG8gdGhlIHNlY29uZGFyeSBzZXJpZXMnIGZpZWxkcyBzbyB0aGF0IGl0IGlzXG4vLyByZW5kZXJlZCBhcHByb3ByaWF0ZWx5LlxuY29uc3QgdGltZVNoaWZ0QWxpZ25tZW50UHJvY2Vzc29yOiBFeHRyYVF1ZXJ5RGF0YVByb2Nlc3NvciA9IChwcmltYXJ5LCBzZWNvbmRhcnkpID0+IHtcbiAgY29uc3QgZGlmZiA9IHNlY29uZGFyeS50aW1lUmFuZ2UuZnJvbS5kaWZmKHByaW1hcnkudGltZVJhbmdlLmZyb20pO1xuICBzZWNvbmRhcnkuc2VyaWVzLmZvckVhY2goKHNlcmllcykgPT4ge1xuICAgIHNlcmllcy5yZWZJZCA9IGdldENvbXBhcmVTZXJpZXNSZWZJZChzZXJpZXMucmVmSWQgfHwgJycpO1xuICAgIHNlcmllcy5tZXRhID0ge1xuICAgICAgLi4uc2VyaWVzLm1ldGEsXG4gICAgICAvLyBAdHMtaWdub3JlIFJlbW92ZSB3aGVuIGh0dHBzOi8vZ2l0aHViLmNvbS9ncmFmYW5hL2dyYWZhbmEvcHVsbC83MTEyOSBpcyByZWxlYXNlZFxuICAgICAgdGltZUNvbXBhcmU6IHtcbiAgICAgICAgZGlmZk1zOiBkaWZmLFxuICAgICAgICBpc1RpbWVTaGlmdFF1ZXJ5OiB0cnVlLFxuICAgICAgfSxcbiAgICB9O1xuICAgIHNlcmllcy5maWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcbiAgICAgIC8vIEFsaWduIGNvbXBhcmUgc2VyaWVzIHRpbWUgc3RhbXBzIHdpdGggcmVmZXJlbmNlIHNlcmllc1xuICAgICAgaWYgKGZpZWxkLnR5cGUgPT09IEZpZWxkVHlwZS50aW1lKSB7XG4gICAgICAgIGZpZWxkLnZhbHVlcyA9IGZpZWxkLnZhbHVlcy5tYXAoKHYpID0+IHtcbiAgICAgICAgICByZXR1cm4gZGlmZiA8IDAgPyB2IC0gZGlmZiA6IHYgKyBkaWZmO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgZmllbGQuY29uZmlnID0ge1xuICAgICAgICAuLi5maWVsZC5jb25maWcsXG4gICAgICAgIGNvbG9yOiB7XG4gICAgICAgICAgbW9kZTogJ2ZpeGVkJyxcbiAgICAgICAgICBmaXhlZENvbG9yOiBjb25maWcudGhlbWUucGFsZXR0ZS5ncmF5NjAsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIG9mKHNlY29uZGFyeSk7XG59O1xuXG5mdW5jdGlvbiBTY2VuZVRpbWVSYW5nZUNvbXBhcmVSZW5kZXJlcih7IG1vZGVsIH06IFNjZW5lQ29tcG9uZW50UHJvcHM8U2NlbmVUaW1lUmFuZ2VDb21wYXJlPikge1xuICBjb25zdCBzdHlsZXMgPSB1c2VTdHlsZXMyKGdldFN0eWxlcyk7XG4gIGNvbnN0IHsgY29tcGFyZVdpdGgsIGNvbXBhcmVPcHRpb25zIH0gPSBtb2RlbC51c2VTdGF0ZSgpO1xuXG4gIGNvbnN0IFtwcmV2aW91c0NvbXBhcmUsIHNldFByZXZpb3VzQ29tcGFyZV0gPSBSZWFjdC51c2VTdGF0ZShjb21wYXJlV2l0aCk7XG4gIGNvbnN0IHByZXZpb3VzVmFsdWUgPSBjb21wYXJlT3B0aW9ucy5maW5kKCh7IHZhbHVlIH0pID0+IHZhbHVlID09PSBwcmV2aW91c0NvbXBhcmUpID8/IFBSRVZJT1VTX1BFUklPRF9DT01QQVJFX09QVElPTjtcblxuICBjb25zdCB2YWx1ZSA9IGNvbXBhcmVPcHRpb25zLmZpbmQoKHsgdmFsdWUgfSkgPT4gdmFsdWUgPT09IGNvbXBhcmVXaXRoKTtcbiAgY29uc3QgZW5hYmxlZCA9IEJvb2xlYW4odmFsdWUpO1xuXG4gIGNvbnN0IG9uQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKGVuYWJsZWQpIHtcbiAgICAgIHNldFByZXZpb3VzQ29tcGFyZShjb21wYXJlV2l0aCk7XG4gICAgICBtb2RlbC5vbkNsZWFyQ29tcGFyZSgpO1xuICAgIH0gZWxzZSBpZiAoIWVuYWJsZWQpIHtcbiAgICAgIG1vZGVsLm9uQ29tcGFyZVdpdGhDaGFuZ2VkKHByZXZpb3VzVmFsdWUudmFsdWUpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCdXR0b25Hcm91cD5cbiAgICAgIDxUb29sYmFyQnV0dG9uXG4gICAgICAgIHZhcmlhbnQ9XCJjYW52YXNcIlxuICAgICAgICB0b29sdGlwPVwiRW5hYmxlIHRpbWUgZnJhbWUgY29tcGFyaXNvblwiXG4gICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB7XG4gICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgb25DbGljaygpO1xuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8Q2hlY2tib3ggbGFiZWw9XCIgXCIgdmFsdWU9e2VuYWJsZWR9IG9uQ2xpY2s9e29uQ2xpY2t9IC8+XG4gICAgICAgIENvbXBhcmlzb25cbiAgICAgIDwvVG9vbGJhckJ1dHRvbj5cblxuICAgICAge2VuYWJsZWQgPyAoXG4gICAgICAgIDxCdXR0b25TZWxlY3RcbiAgICAgICAgICB2YXJpYW50PVwiY2FudmFzXCJcbiAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgb3B0aW9ucz17Y29tcGFyZU9wdGlvbnN9XG4gICAgICAgICAgb25DaGFuZ2U9eyh2KSA9PiB7XG4gICAgICAgICAgICBtb2RlbC5vbkNvbXBhcmVXaXRoQ2hhbmdlZCh2LnZhbHVlISk7XG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgICkgOiAoXG4gICAgICAgIDxUb29sYmFyQnV0dG9uIGNsYXNzTmFtZT17c3R5bGVzLnByZXZpZXdCdXR0b259IGRpc2FibGVkIHZhcmlhbnQ9XCJjYW52YXNcIiBpc09wZW49e2ZhbHNlfT5cbiAgICAgICAgICB7cHJldmlvdXNWYWx1ZS5sYWJlbH1cbiAgICAgICAgPC9Ub29sYmFyQnV0dG9uPlxuICAgICAgKX1cbiAgICA8L0J1dHRvbkdyb3VwPlxuICApO1xufVxuXG5mdW5jdGlvbiBnZXRTdHlsZXModGhlbWU6IEdyYWZhbmFUaGVtZTIpIHtcbiAgcmV0dXJuIHtcbiAgICBwcmV2aWV3QnV0dG9uOiBjc3Moe1xuICAgICAgJyY6ZGlzYWJsZWQnOiB7XG4gICAgICAgIGJvcmRlcjogYDFweCBzb2xpZCAke3RoZW1lLmNvbG9ycy5zZWNvbmRhcnkuYm9yZGVyfWAsXG4gICAgICAgIGNvbG9yOiB0aGVtZS5jb2xvcnMudGV4dC5kaXNhYmxlZCxcbiAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgIH0sXG4gICAgfSksXG4gIH07XG59XG4iXSwibmFtZXMiOlsidmFsdWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFvQkEsTUFBTSxxQkFBd0IsR0FBQSxrQkFBQSxDQUFBO0FBQzlCLE1BQU0sZUFBa0IsR0FBQSxZQUFBLENBQUE7QUFFakIsTUFBTSw4QkFBaUMsR0FBQTtBQUFBLEVBQzVDLEtBQU8sRUFBQSxpQkFBQTtBQUFBLEVBQ1AsS0FBTyxFQUFBLHFCQUFBO0FBQ1QsRUFBQTtBQUVPLE1BQU0saUJBQW9CLEdBQUE7QUFBQSxFQUMvQixLQUFPLEVBQUEsZUFBQTtBQUFBLEVBQ1AsS0FBTyxFQUFBLGVBQUE7QUFDVCxFQUFBO0FBRU8sTUFBTSx1QkFBMEIsR0FBQTtBQUFBLEVBQ3JD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
@@ -0,0 +1,33 @@
1
+ import React from 'react';
2
+ import { ToolbarButton, Input } from '@grafana/ui';
3
+ import { SceneObjectBase } from '../core/SceneObjectBase.js';
4
+ import { ControlsLabel } from '../utils/ControlsLabel.js';
5
+
6
+ class SceneToolbarButton extends SceneObjectBase {
7
+ }
8
+ SceneToolbarButton.Component = ({ model }) => {
9
+ const state = model.useState();
10
+ return /* @__PURE__ */ React.createElement(ToolbarButton, {
11
+ onClick: state.onClick,
12
+ icon: state.icon
13
+ });
14
+ };
15
+ class SceneToolbarInput extends SceneObjectBase {
16
+ }
17
+ SceneToolbarInput.Component = ({ model }) => {
18
+ const state = model.useState();
19
+ return /* @__PURE__ */ React.createElement("div", {
20
+ style: { display: "flex" }
21
+ }, state.label && /* @__PURE__ */ React.createElement(ControlsLabel, {
22
+ label: state.label
23
+ }), /* @__PURE__ */ React.createElement(Input, {
24
+ defaultValue: state.value,
25
+ width: 8,
26
+ onBlur: (evt) => {
27
+ model.state.onChange(parseInt(evt.currentTarget.value, 10));
28
+ }
29
+ }));
30
+ };
31
+
32
+ export { SceneToolbarButton, SceneToolbarInput };
33
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NlbmVUb29sYmFyQnV0dG9uLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9TY2VuZVRvb2xiYXJCdXR0b24udHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IEljb25OYW1lLCBJbnB1dCwgVG9vbGJhckJ1dHRvbiB9IGZyb20gJ0BncmFmYW5hL3VpJztcblxuaW1wb3J0IHsgU2NlbmVPYmplY3RCYXNlIH0gZnJvbSAnLi4vY29yZS9TY2VuZU9iamVjdEJhc2UnO1xuaW1wb3J0IHsgU2NlbmVDb21wb25lbnRQcm9wcywgU2NlbmVPYmplY3RTdGF0ZSB9IGZyb20gJy4uL2NvcmUvdHlwZXMnO1xuaW1wb3J0IHsgQ29udHJvbHNMYWJlbCB9IGZyb20gJy4uL3V0aWxzL0NvbnRyb2xzTGFiZWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRvb2xiYXJCdXR0b25TdGF0ZSBleHRlbmRzIFNjZW5lT2JqZWN0U3RhdGUge1xuICBpY29uOiBJY29uTmFtZTtcbiAgb25DbGljazogKCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGNsYXNzIFNjZW5lVG9vbGJhckJ1dHRvbiBleHRlbmRzIFNjZW5lT2JqZWN0QmFzZTxUb29sYmFyQnV0dG9uU3RhdGU+IHtcbiAgcHVibGljIHN0YXRpYyBDb21wb25lbnQgPSAoeyBtb2RlbCB9OiBTY2VuZUNvbXBvbmVudFByb3BzPFNjZW5lVG9vbGJhckJ1dHRvbj4pID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IG1vZGVsLnVzZVN0YXRlKCk7XG5cbiAgICByZXR1cm4gPFRvb2xiYXJCdXR0b24gb25DbGljaz17c3RhdGUub25DbGlja30gaWNvbj17c3RhdGUuaWNvbn0gLz47XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NlbmVUb29sYmFySW5wdXRTdGF0ZSBleHRlbmRzIFNjZW5lT2JqZWN0U3RhdGUge1xuICB2YWx1ZT86IHN0cmluZztcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIG9uQ2hhbmdlOiAodmFsdWU6IG51bWJlcikgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGNsYXNzIFNjZW5lVG9vbGJhcklucHV0IGV4dGVuZHMgU2NlbmVPYmplY3RCYXNlPFNjZW5lVG9vbGJhcklucHV0U3RhdGU+IHtcbiAgcHVibGljIHN0YXRpYyBDb21wb25lbnQgPSAoeyBtb2RlbCB9OiBTY2VuZUNvbXBvbmVudFByb3BzPFNjZW5lVG9vbGJhcklucHV0PikgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gbW9kZWwudXNlU3RhdGUoKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IHN0eWxlPXt7IGRpc3BsYXk6ICdmbGV4JyB9fT5cbiAgICAgICAge3N0YXRlLmxhYmVsICYmIDxDb250cm9sc0xhYmVsIGxhYmVsPXtzdGF0ZS5sYWJlbH0gLz59XG4gICAgICAgIDxJbnB1dFxuICAgICAgICAgIGRlZmF1bHRWYWx1ZT17c3RhdGUudmFsdWV9XG4gICAgICAgICAgd2lkdGg9ezh9XG4gICAgICAgICAgb25CbHVyPXsoZXZ0KSA9PiB7XG4gICAgICAgICAgICBtb2RlbC5zdGF0ZS5vbkNoYW5nZShwYXJzZUludChldnQuY3VycmVudFRhcmdldC52YWx1ZSwgMTApKTtcbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWFPLE1BQU0sMkJBQTJCLGVBQW9DLENBQUE7QUFNNUUsQ0FBQTtBQU5hLGtCQUFBLENBQ0csU0FBWSxHQUFBLENBQUMsRUFBRSxLQUFBLEVBQXFELEtBQUE7QUFDaEYsRUFBTSxNQUFBLEtBQUEsR0FBUSxNQUFNLFFBQVMsRUFBQSxDQUFBO0FBRTdCLEVBQUEsdUJBQVEsS0FBQSxDQUFBLGFBQUEsQ0FBQSxhQUFBLEVBQUE7QUFBQSxJQUFjLFNBQVMsS0FBTSxDQUFBLE9BQUE7QUFBQSxJQUFTLE1BQU0sS0FBTSxDQUFBLElBQUE7QUFBQSxHQUFNLENBQUEsQ0FBQTtBQUNsRSxDQUFBLENBQUE7QUFTSyxNQUFNLDBCQUEwQixlQUF3QyxDQUFBO0FBaUIvRSxDQUFBO0FBakJhLGlCQUFBLENBQ0csU0FBWSxHQUFBLENBQUMsRUFBRSxLQUFBLEVBQW9ELEtBQUE7QUFDL0UsRUFBTSxNQUFBLEtBQUEsR0FBUSxNQUFNLFFBQVMsRUFBQSxDQUFBO0FBRTdCLEVBQUEsdUJBQ0csS0FBQSxDQUFBLGFBQUEsQ0FBQSxLQUFBLEVBQUE7QUFBQSxJQUFJLEtBQUEsRUFBTyxFQUFFLE9BQUEsRUFBUyxNQUFPLEVBQUE7QUFBQSxHQUMzQixFQUFBLEtBQUEsQ0FBTSx5QkFBVSxLQUFBLENBQUEsYUFBQSxDQUFBLGFBQUEsRUFBQTtBQUFBLElBQWMsT0FBTyxLQUFNLENBQUEsS0FBQTtBQUFBLEdBQU8sbUJBQ2xELEtBQUEsQ0FBQSxhQUFBLENBQUEsS0FBQSxFQUFBO0FBQUEsSUFDQyxjQUFjLEtBQU0sQ0FBQSxLQUFBO0FBQUEsSUFDcEIsS0FBTyxFQUFBLENBQUE7QUFBQSxJQUNQLE1BQUEsRUFBUSxDQUFDLEdBQVEsS0FBQTtBQUNmLE1BQUEsS0FBQSxDQUFNLE1BQU0sUUFBUyxDQUFBLFFBQUEsQ0FBUyxJQUFJLGFBQWMsQ0FBQSxLQUFBLEVBQU8sRUFBRSxDQUFDLENBQUEsQ0FBQTtBQUFBLEtBQzVEO0FBQUEsR0FDRixDQUNGLENBQUEsQ0FBQTtBQUVKLENBQUE7Ozs7In0=