@grafana/scenes 6.7.0 → 6.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (331) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/esm/components/layout/CSSGrid/SceneCSSGridItem.js +33 -0
  3. package/dist/esm/dist/esm/behaviors/CursorSync.js +76 -0
  4. package/dist/esm/dist/esm/behaviors/LiveNowTimer.js +44 -0
  5. package/dist/esm/dist/esm/behaviors/SceneQueryController.js +14 -0
  6. package/dist/esm/dist/esm/components/EmbeddedScene.js +59 -0
  7. package/dist/esm/dist/esm/components/NestedScene.js +95 -0
  8. package/dist/esm/dist/esm/components/SceneApp/SceneApp.js +27 -0
  9. package/dist/esm/dist/esm/components/SceneApp/SceneAppPage.js +176 -0
  10. package/dist/esm/dist/esm/components/SceneApp/SceneAppPageView.js +104 -0
  11. package/dist/esm/dist/esm/components/SceneApp/utils.js +42 -0
  12. package/dist/esm/dist/esm/components/SceneByFrameRepeater.js +41 -0
  13. package/dist/esm/dist/esm/components/SceneByVariableRepeater.js +55 -0
  14. package/dist/esm/dist/esm/components/SceneCanvasText.js +32 -0
  15. package/dist/esm/dist/esm/components/SceneControlsSpacer.js +17 -0
  16. package/dist/esm/dist/esm/components/SceneDebugger/DebugDetails.js +82 -0
  17. package/dist/esm/dist/esm/components/SceneDebugger/DebugTreeNode.js +72 -0
  18. package/dist/esm/dist/esm/components/SceneDebugger/SceneDebugger.js +77 -0
  19. package/dist/esm/dist/esm/components/SceneReactObject.js +34 -0
  20. package/dist/esm/dist/esm/components/SceneRefreshPicker.js +205 -0
  21. package/dist/esm/dist/esm/components/SceneTimePicker.js +139 -0
  22. package/dist/esm/dist/esm/components/SceneTimeRangeCompare.js +240 -0
  23. package/dist/esm/dist/esm/components/SceneToolbarButton.js +33 -0
  24. package/dist/esm/dist/esm/components/VizPanel/VizPanel.js +406 -0
  25. package/dist/esm/dist/esm/components/VizPanel/VizPanelExploreButton.js +44 -0
  26. package/dist/esm/dist/esm/components/VizPanel/VizPanelMenu.js +59 -0
  27. package/dist/esm/dist/esm/components/VizPanel/VizPanelRenderer.js +285 -0
  28. package/dist/esm/dist/esm/components/VizPanel/VizPanelSeriesLimit.js +45 -0
  29. package/dist/esm/dist/esm/components/VizPanel/colorSeriesConfigFactory.js +72 -0
  30. package/dist/esm/dist/esm/components/VizPanel/registerRuntimePanelPlugin.js +11 -0
  31. package/dist/esm/dist/esm/components/VizPanel/seriesVisibilityConfigFactory.js +164 -0
  32. package/dist/esm/dist/esm/components/layout/CSSGrid/SceneCSSGridLayout.js +124 -0
  33. package/dist/esm/dist/esm/components/layout/LazyLoader.js +103 -0
  34. package/dist/esm/dist/esm/components/layout/SceneFlexLayout.js +135 -0
  35. package/dist/esm/dist/esm/components/layout/grid/SceneGridItem.js +30 -0
  36. package/dist/esm/dist/esm/components/layout/grid/SceneGridLayout.js +283 -0
  37. package/dist/esm/dist/esm/components/layout/grid/SceneGridLayoutRenderer.js +178 -0
  38. package/dist/esm/dist/esm/components/layout/grid/SceneGridRow.js +190 -0
  39. package/dist/esm/dist/esm/components/layout/grid/constants.js +7 -0
  40. package/dist/esm/dist/esm/components/layout/grid/utils.js +36 -0
  41. package/dist/esm/dist/esm/components/layout/split/SplitLayout.js +17 -0
  42. package/dist/esm/dist/esm/components/layout/split/SplitLayoutRenderer.js +29 -0
  43. package/dist/esm/dist/esm/components/layout/split/Splitter.js +386 -0
  44. package/dist/esm/dist/esm/core/SceneComponentWrapper.js +57 -0
  45. package/dist/esm/dist/esm/core/SceneDataNode.js +43 -0
  46. package/dist/esm/dist/esm/core/SceneObjectBase.js +286 -0
  47. package/dist/esm/dist/esm/core/SceneObjectRef.js +32 -0
  48. package/dist/esm/dist/esm/core/SceneTimeRange.js +231 -0
  49. package/dist/esm/dist/esm/core/events.js +11 -0
  50. package/dist/esm/dist/esm/core/sceneGraph/getTimeRange.js +10 -0
  51. package/dist/esm/dist/esm/core/sceneGraph/index.js +25 -0
  52. package/dist/esm/dist/esm/core/sceneGraph/sceneGraph.js +178 -0
  53. package/dist/esm/dist/esm/core/sceneGraph/utils.js +64 -0
  54. package/dist/esm/dist/esm/core/types.js +15 -0
  55. package/dist/esm/dist/esm/querying/DataLayersMerger.js +46 -0
  56. package/dist/esm/dist/esm/querying/ExtraQueryProvider.js +6 -0
  57. package/dist/esm/dist/esm/querying/RuntimeDataSource.js +6 -0
  58. package/dist/esm/dist/esm/querying/SceneDataLayerSet.js +100 -0
  59. package/dist/esm/dist/esm/querying/SceneQueryRunner.js +468 -0
  60. package/dist/esm/dist/esm/querying/extraQueryProcessingOperator.js +46 -0
  61. package/dist/esm/dist/esm/querying/getEnrichedDataRequest.js +12 -0
  62. package/dist/esm/dist/esm/querying/layers/SceneDataLayerBase.js +112 -0
  63. package/dist/esm/dist/esm/querying/layers/SceneDataLayerControls.js +51 -0
  64. package/dist/esm/dist/esm/querying/layers/annotations/AnnotationsDataLayer.js +130 -0
  65. package/dist/esm/dist/esm/querying/layers/annotations/filterAnnotations.js +85 -0
  66. package/dist/esm/dist/esm/querying/layers/annotations/standardAnnotationQuery.js +121 -0
  67. package/dist/esm/dist/esm/querying/layers/annotations/standardAnnotationsSupport.js +211 -0
  68. package/dist/esm/dist/esm/querying/layers/annotations/utils.js +77 -0
  69. package/dist/esm/dist/esm/querying/registerQueryWithController.js +41 -0
  70. package/dist/esm/dist/esm/services/SceneObjectUrlSyncConfig.js +30 -0
  71. package/dist/esm/dist/esm/services/UniqueUrlKeyMapper.js +45 -0
  72. package/dist/esm/dist/esm/services/UrlSyncManager.js +167 -0
  73. package/dist/esm/dist/esm/services/useUrlSync.js +29 -0
  74. package/dist/esm/dist/esm/services/utils.js +71 -0
  75. package/dist/esm/dist/esm/utils/ControlsLabel.js +107 -0
  76. package/dist/esm/dist/esm/utils/LoadingIndicator.js +19 -0
  77. package/dist/esm/dist/esm/utils/SafeSerializableSceneObject.js +39 -0
  78. package/dist/esm/dist/esm/utils/compatibility/setWindowGrafanaSceneContext.js +16 -0
  79. package/dist/esm/dist/esm/utils/date.js +15 -0
  80. package/dist/esm/dist/esm/utils/evaluateTimeRange.js +16 -0
  81. package/dist/esm/dist/esm/utils/explore.js +47 -0
  82. package/dist/esm/dist/esm/utils/getCompareSeriesRefId.js +4 -0
  83. package/dist/esm/dist/esm/utils/getDataSource.js +18 -0
  84. package/dist/esm/dist/esm/utils/getMessageFromError.js +24 -0
  85. package/dist/esm/dist/esm/utils/metricTree.js +53 -0
  86. package/dist/esm/dist/esm/utils/parseUrlParam.js +41 -0
  87. package/dist/esm/dist/esm/utils/utils.js +11 -0
  88. package/dist/esm/dist/esm/utils/wrapInSafeSerializableSceneObject.js +30 -0
  89. package/dist/esm/dist/esm/utils/writeSceneLog.js +12 -0
  90. package/dist/esm/dist/esm/variables/VariableDependencyConfig.js +150 -0
  91. package/dist/esm/dist/esm/variables/VariableValueRecorder.js +71 -0
  92. package/dist/esm/dist/esm/variables/adhoc/AdHocFilterBuilder.js +24 -0
  93. package/dist/esm/dist/esm/variables/adhoc/AdHocFilterRenderer.js +303 -0
  94. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js +162 -0
  95. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js +20 -0
  96. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +640 -0
  97. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +65 -0
  98. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js +146 -0
  99. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js +114 -0
  100. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js +68 -0
  101. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/utils.js +146 -0
  102. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersVariable.js +289 -0
  103. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js +76 -0
  104. package/dist/esm/dist/esm/variables/adhoc/getAdhocOptionSearcher.js +13 -0
  105. package/dist/esm/dist/esm/variables/adhoc/patchGetAdhocFilters.js +47 -0
  106. package/dist/esm/dist/esm/variables/components/VariableValueControl.js +23 -0
  107. package/dist/esm/dist/esm/variables/components/VariableValueInput.js +33 -0
  108. package/dist/esm/dist/esm/variables/components/VariableValueSelect.js +228 -0
  109. package/dist/esm/dist/esm/variables/components/VariableValueSelectors.js +72 -0
  110. package/dist/esm/dist/esm/variables/components/getOptionSearcher.js +15 -0
  111. package/dist/esm/dist/esm/variables/constants.js +9 -0
  112. package/dist/esm/dist/esm/variables/getEnrichedFiltersRequest.js +12 -0
  113. package/dist/esm/dist/esm/variables/groupby/GroupByVariable.js +259 -0
  114. package/dist/esm/dist/esm/variables/groupby/GroupByVariableUrlSyncHandler.js +63 -0
  115. package/dist/esm/dist/esm/variables/groupby/findActiveGroupByVariablesByUid.js +13 -0
  116. package/dist/esm/dist/esm/variables/interpolation/ScopedVarsVariable.js +40 -0
  117. package/dist/esm/dist/esm/variables/interpolation/defaults.js +21 -0
  118. package/dist/esm/dist/esm/variables/interpolation/fieldAccessorCache.js +13 -0
  119. package/dist/esm/dist/esm/variables/interpolation/formatRegistry.js +296 -0
  120. package/dist/esm/dist/esm/variables/interpolation/sceneInterpolator.js +87 -0
  121. package/dist/esm/dist/esm/variables/lookupVariable.js +20 -0
  122. package/dist/esm/dist/esm/variables/macros/AllVariablesMacro.js +57 -0
  123. package/dist/esm/dist/esm/variables/macros/contextMacros.js +43 -0
  124. package/dist/esm/dist/esm/variables/macros/dataMacros.js +134 -0
  125. package/dist/esm/dist/esm/variables/macros/index.js +26 -0
  126. package/dist/esm/dist/esm/variables/macros/templateProxies.js +51 -0
  127. package/dist/esm/dist/esm/variables/macros/timeMacros.js +86 -0
  128. package/dist/esm/dist/esm/variables/macros/types.js +11 -0
  129. package/dist/esm/dist/esm/variables/macros/urlMacros.js +56 -0
  130. package/dist/esm/dist/esm/variables/sets/SceneVariableSet.js +254 -0
  131. package/dist/esm/dist/esm/variables/types.js +11 -0
  132. package/dist/esm/dist/esm/variables/utils.js +172 -0
  133. package/dist/esm/dist/esm/variables/variants/ConstantVariable.js +38 -0
  134. package/dist/esm/dist/esm/variables/variants/CustomVariable.js +60 -0
  135. package/dist/esm/dist/esm/variables/variants/DataSourceVariable.js +88 -0
  136. package/dist/esm/dist/esm/variables/variants/IntervalVariable.js +117 -0
  137. package/dist/esm/dist/esm/variables/variants/MultiValueVariable.js +295 -0
  138. package/dist/esm/dist/esm/variables/variants/TestVariable.js +117 -0
  139. package/dist/esm/dist/esm/variables/variants/TextBoxVariable.js +61 -0
  140. package/dist/esm/dist/esm/variables/variants/query/QueryVariable.js +139 -0
  141. package/dist/esm/dist/esm/variables/variants/query/createQueryVariableRunner.js +129 -0
  142. package/dist/esm/dist/esm/variables/variants/query/guards.js +28 -0
  143. package/dist/esm/dist/esm/variables/variants/query/toMetricFindValues.js +96 -0
  144. package/dist/esm/dist/esm/variables/variants/query/utils.js +124 -0
  145. package/dist/esm/index.js +1 -1
  146. package/dist/esm/index.js.map +1 -1
  147. package/dist/esm/querying/DataProviderSharer.js +39 -0
  148. package/dist/esm/src/behaviors/ActWhenVariableChanged.js +27 -0
  149. package/dist/esm/src/behaviors/CursorSync.js +76 -0
  150. package/dist/esm/src/behaviors/LiveNowTimer.js +44 -0
  151. package/dist/esm/src/behaviors/SceneQueryController.js +60 -0
  152. package/dist/esm/src/behaviors/index.js +5 -0
  153. package/dist/esm/src/components/EmbeddedScene.js +59 -0
  154. package/dist/esm/src/components/NestedScene.js +95 -0
  155. package/dist/esm/src/components/SceneApp/SceneApp.js +37 -0
  156. package/dist/esm/src/components/SceneApp/SceneAppPage.js +176 -0
  157. package/dist/esm/src/components/SceneApp/SceneAppPageView.js +104 -0
  158. package/dist/esm/src/components/SceneApp/utils.js +42 -0
  159. package/dist/esm/src/components/SceneByFrameRepeater.js +41 -0
  160. package/dist/esm/src/components/SceneByVariableRepeater.js +55 -0
  161. package/dist/esm/src/components/SceneCanvasText.js +32 -0
  162. package/dist/esm/src/components/SceneControlsSpacer.js +17 -0
  163. package/dist/esm/src/components/SceneDebugger/DebugDetails.js +82 -0
  164. package/dist/esm/src/components/SceneDebugger/DebugTreeNode.js +72 -0
  165. package/dist/esm/src/components/SceneDebugger/SceneDebugger.js +77 -0
  166. package/dist/esm/src/components/SceneReactObject.js +34 -0
  167. package/dist/esm/src/components/SceneRefreshPicker.js +205 -0
  168. package/dist/esm/src/components/SceneTimePicker.js +139 -0
  169. package/dist/esm/src/components/SceneTimeRangeCompare.js +240 -0
  170. package/dist/esm/src/components/SceneToolbarButton.js +33 -0
  171. package/dist/esm/src/components/VizPanel/VizPanel.js +406 -0
  172. package/dist/esm/src/components/VizPanel/VizPanelExploreButton.js +44 -0
  173. package/dist/esm/src/components/VizPanel/VizPanelMenu.js +59 -0
  174. package/dist/esm/src/components/VizPanel/VizPanelRenderer.js +285 -0
  175. package/dist/esm/src/components/VizPanel/VizPanelSeriesLimit.js +45 -0
  176. package/dist/esm/src/components/VizPanel/colorSeriesConfigFactory.js +72 -0
  177. package/dist/esm/src/components/VizPanel/registerRuntimePanelPlugin.js +56 -0
  178. package/dist/esm/src/components/VizPanel/seriesVisibilityConfigFactory.js +164 -0
  179. package/dist/esm/src/components/layout/CSSGrid/SceneCSSGridLayout.js +124 -0
  180. package/dist/esm/src/components/layout/LazyLoader.js +103 -0
  181. package/dist/esm/src/components/layout/SceneFlexLayout.js +135 -0
  182. package/dist/esm/src/components/layout/grid/SceneGridItem.js +30 -0
  183. package/dist/esm/src/components/layout/grid/SceneGridLayout.js +283 -0
  184. package/dist/esm/src/components/layout/grid/SceneGridLayoutRenderer.js +178 -0
  185. package/dist/esm/src/components/layout/grid/SceneGridRow.js +190 -0
  186. package/dist/esm/src/components/layout/grid/constants.js +7 -0
  187. package/dist/esm/src/components/layout/grid/utils.js +36 -0
  188. package/dist/esm/src/components/layout/split/SplitLayout.js +17 -0
  189. package/dist/esm/src/components/layout/split/SplitLayoutRenderer.js +29 -0
  190. package/dist/esm/src/components/layout/split/Splitter.js +386 -0
  191. package/dist/esm/src/core/PanelBuilders/FieldConfigBuilder.js +100 -0
  192. package/dist/esm/src/core/PanelBuilders/FieldConfigBuilders.js +75 -0
  193. package/dist/esm/src/core/PanelBuilders/FieldConfigOverridesBuilder.js +75 -0
  194. package/dist/esm/src/core/PanelBuilders/PanelOptionsBuilder.js +22 -0
  195. package/dist/esm/src/core/PanelBuilders/PanelOptionsBuilders.js +85 -0
  196. package/dist/esm/src/core/PanelBuilders/StandardFieldConfigBuilders.js +52 -0
  197. package/dist/esm/src/core/PanelBuilders/VizConfigBuilder.js +78 -0
  198. package/dist/esm/src/core/PanelBuilders/VizConfigBuilders.js +114 -0
  199. package/dist/esm/src/core/PanelBuilders/VizPanelBuilder.js +162 -0
  200. package/dist/esm/src/core/PanelBuilders/index.js +116 -0
  201. package/dist/esm/src/core/SceneComponentWrapper.js +57 -0
  202. package/dist/esm/src/core/SceneDataNode.js +43 -0
  203. package/dist/esm/src/core/SceneObjectBase.js +286 -0
  204. package/dist/esm/src/core/SceneObjectRef.js +32 -0
  205. package/dist/esm/src/core/SceneTimeRange.js +231 -0
  206. package/dist/esm/src/core/SceneTimeRangeTransformerBase.js +35 -0
  207. package/dist/esm/src/core/SceneTimeZoneOverride.js +63 -0
  208. package/dist/esm/src/core/events.js +11 -0
  209. package/dist/esm/src/core/sceneGraph/getTimeRange.js +10 -0
  210. package/dist/esm/src/core/sceneGraph/index.js +25 -0
  211. package/dist/esm/src/core/sceneGraph/sceneGraph.js +178 -0
  212. package/dist/esm/src/core/sceneGraph/utils.js +64 -0
  213. package/dist/esm/src/core/types.js +15 -0
  214. package/dist/esm/src/index.js +108 -0
  215. package/dist/esm/src/querying/DataLayersMerger.js +46 -0
  216. package/dist/esm/src/querying/DataProviderProxy.js +37 -0
  217. package/dist/esm/src/querying/DataProviderSharer.js +108 -0
  218. package/dist/esm/src/querying/ExtraQueryProvider.js +6 -0
  219. package/dist/esm/src/querying/RuntimeDataSource.js +49 -0
  220. package/dist/esm/src/querying/SceneDataLayerSet.js +100 -0
  221. package/dist/esm/src/querying/SceneDataTransformer.js +178 -0
  222. package/dist/esm/src/querying/SceneQueryRunner.js +468 -0
  223. package/dist/esm/src/querying/extraQueryProcessingOperator.js +46 -0
  224. package/dist/esm/src/querying/getEnrichedDataRequest.js +12 -0
  225. package/dist/esm/src/querying/layers/SceneDataLayerBase.js +112 -0
  226. package/dist/esm/src/querying/layers/SceneDataLayerControls.js +51 -0
  227. package/dist/esm/src/querying/layers/annotations/AnnotationsDataLayer.js +130 -0
  228. package/dist/esm/src/querying/layers/annotations/filterAnnotations.js +85 -0
  229. package/dist/esm/src/querying/layers/annotations/standardAnnotationQuery.js +121 -0
  230. package/dist/esm/src/querying/layers/annotations/standardAnnotationsSupport.js +211 -0
  231. package/dist/esm/src/querying/layers/annotations/utils.js +77 -0
  232. package/dist/esm/src/querying/layers/index.js +2 -0
  233. package/dist/esm/src/querying/registerQueryWithController.js +41 -0
  234. package/dist/esm/src/services/SceneObjectUrlSyncConfig.js +30 -0
  235. package/dist/esm/src/services/UniqueUrlKeyMapper.js +45 -0
  236. package/dist/esm/src/services/UrlSyncContextProvider.js +17 -0
  237. package/dist/esm/src/services/UrlSyncManager.js +167 -0
  238. package/dist/esm/src/services/useUrlSync.js +29 -0
  239. package/dist/esm/src/services/utils.js +75 -0
  240. package/dist/esm/src/utils/ControlsLabel.js +107 -0
  241. package/dist/esm/src/utils/LoadingIndicator.js +19 -0
  242. package/dist/esm/src/utils/SafeSerializableSceneObject.js +39 -0
  243. package/dist/esm/src/utils/compatibility/setWindowGrafanaSceneContext.js +16 -0
  244. package/dist/esm/src/utils/date.js +15 -0
  245. package/dist/esm/src/utils/evaluateTimeRange.js +16 -0
  246. package/dist/esm/src/utils/explore.js +47 -0
  247. package/dist/esm/src/utils/getCompareSeriesRefId.js +4 -0
  248. package/dist/esm/src/utils/getDataSource.js +18 -0
  249. package/dist/esm/src/utils/getMessageFromError.js +24 -0
  250. package/dist/esm/src/utils/metricTree.js +53 -0
  251. package/dist/esm/src/utils/parseUrlParam.js +41 -0
  252. package/dist/esm/src/utils/utils.js +11 -0
  253. package/dist/esm/src/utils/wrapInSafeSerializableSceneObject.js +30 -0
  254. package/dist/esm/src/utils/writeSceneLog.js +12 -0
  255. package/dist/esm/src/variables/VariableDependencyConfig.js +150 -0
  256. package/dist/esm/src/variables/VariableValueRecorder.js +71 -0
  257. package/dist/esm/src/variables/adhoc/AdHocFilterBuilder.js +24 -0
  258. package/dist/esm/src/variables/adhoc/AdHocFilterRenderer.js +303 -0
  259. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js +162 -0
  260. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js +20 -0
  261. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +640 -0
  262. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +65 -0
  263. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js +146 -0
  264. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js +114 -0
  265. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js +68 -0
  266. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/utils.js +146 -0
  267. package/dist/esm/src/variables/adhoc/AdHocFiltersVariable.js +289 -0
  268. package/dist/esm/src/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js +76 -0
  269. package/dist/esm/src/variables/adhoc/getAdhocOptionSearcher.js +13 -0
  270. package/dist/esm/src/variables/adhoc/patchGetAdhocFilters.js +47 -0
  271. package/dist/esm/src/variables/components/VariableValueControl.js +23 -0
  272. package/dist/esm/src/variables/components/VariableValueInput.js +33 -0
  273. package/dist/esm/src/variables/components/VariableValueSelect.js +228 -0
  274. package/dist/esm/src/variables/components/VariableValueSelectors.js +72 -0
  275. package/dist/esm/src/variables/components/getOptionSearcher.js +15 -0
  276. package/dist/esm/src/variables/constants.js +9 -0
  277. package/dist/esm/src/variables/getEnrichedFiltersRequest.js +12 -0
  278. package/dist/esm/src/variables/groupby/GroupByVariable.js +259 -0
  279. package/dist/esm/src/variables/groupby/GroupByVariableUrlSyncHandler.js +63 -0
  280. package/dist/esm/src/variables/groupby/findActiveGroupByVariablesByUid.js +13 -0
  281. package/dist/esm/src/variables/interpolation/ScopedVarsVariable.js +40 -0
  282. package/dist/esm/src/variables/interpolation/defaults.js +21 -0
  283. package/dist/esm/src/variables/interpolation/fieldAccessorCache.js +13 -0
  284. package/dist/esm/src/variables/interpolation/formatRegistry.js +296 -0
  285. package/dist/esm/src/variables/interpolation/sceneInterpolator.js +87 -0
  286. package/dist/esm/src/variables/lookupVariable.js +20 -0
  287. package/dist/esm/src/variables/macros/AllVariablesMacro.js +57 -0
  288. package/dist/esm/src/variables/macros/contextMacros.js +43 -0
  289. package/dist/esm/src/variables/macros/dataMacros.js +134 -0
  290. package/dist/esm/src/variables/macros/index.js +35 -0
  291. package/dist/esm/src/variables/macros/templateProxies.js +51 -0
  292. package/dist/esm/src/variables/macros/timeMacros.js +86 -0
  293. package/dist/esm/src/variables/macros/types.js +11 -0
  294. package/dist/esm/src/variables/macros/urlMacros.js +56 -0
  295. package/dist/esm/src/variables/sets/SceneVariableSet.js +254 -0
  296. package/dist/esm/src/variables/types.js +11 -0
  297. package/dist/esm/src/variables/utils.js +172 -0
  298. package/dist/esm/src/variables/variants/ConstantVariable.js +38 -0
  299. package/dist/esm/src/variables/variants/CustomVariable.js +60 -0
  300. package/dist/esm/src/variables/variants/DataSourceVariable.js +88 -0
  301. package/dist/esm/src/variables/variants/IntervalVariable.js +117 -0
  302. package/dist/esm/src/variables/variants/JsonVariable.js +193 -0
  303. package/dist/esm/src/variables/variants/LocalValueVariable.js +56 -0
  304. package/dist/esm/src/variables/variants/MultiValueVariable.js +295 -0
  305. package/dist/esm/src/variables/variants/TestVariable.js +117 -0
  306. package/dist/esm/src/variables/variants/TextBoxVariable.js +61 -0
  307. package/dist/esm/src/variables/variants/guards.js +27 -0
  308. package/dist/esm/src/variables/variants/query/QueryVariable.js +139 -0
  309. package/dist/esm/src/variables/variants/query/createQueryVariableRunner.js +129 -0
  310. package/dist/esm/src/variables/variants/query/guards.js +28 -0
  311. package/dist/esm/src/variables/variants/query/toMetricFindValues.js +96 -0
  312. package/dist/esm/src/variables/variants/query/utils.js +124 -0
  313. package/dist/esm/variables/components/VariableValueSelect.js +13 -9
  314. package/dist/esm/variables/components/VariableValueSelect.js.map +1 -1
  315. package/dist/esm/variables/variants/ConstantVariable.js +22 -0
  316. package/dist/esm/variables/variants/ConstantVariable.js.map +1 -1
  317. package/dist/esm/variables/variants/CustomVariable.js +3 -2
  318. package/dist/esm/variables/variants/CustomVariable.js.map +1 -1
  319. package/dist/esm/variables/variants/DataSourceVariable.js +3 -2
  320. package/dist/esm/variables/variants/DataSourceVariable.js.map +1 -1
  321. package/dist/esm/variables/variants/JsonVariable.js +96 -0
  322. package/dist/esm/variables/variants/TestVariable.js +3 -2
  323. package/dist/esm/variables/variants/TestVariable.js.map +1 -1
  324. package/dist/esm/variables/variants/json/JsonVariable.js +95 -0
  325. package/dist/esm/variables/variants/json/JsonVariableOptionProviders.js +70 -0
  326. package/dist/esm/variables/variants/query/QueryVariable.js +3 -2
  327. package/dist/esm/variables/variants/query/QueryVariable.js.map +1 -1
  328. package/dist/index.d.ts +14 -6
  329. package/dist/index.js +35 -13
  330. package/dist/index.js.map +1 -1
  331. package/package.json +2 -2
@@ -0,0 +1,254 @@
1
+ import { VariableRefresh } from '@grafana/data';
2
+ import { sceneGraph } from '../../core/sceneGraph/index.js';
3
+ import { SceneObjectBase } from '../../core/SceneObjectBase.js';
4
+ import { writeSceneLog } from '../../utils/writeSceneLog.js';
5
+ import { SceneVariableValueChangedEvent } from '../types.js';
6
+ import { VariableValueRecorder } from '../VariableValueRecorder.js';
7
+
8
+ class SceneVariableSet extends SceneObjectBase {
9
+ constructor(state) {
10
+ super(state);
11
+ this._variablesThatHaveChanged = /* @__PURE__ */ new Set();
12
+ this._variablesToUpdate = /* @__PURE__ */ new Set();
13
+ this._updating = /* @__PURE__ */ new Map();
14
+ this._variableValueRecorder = new VariableValueRecorder();
15
+ this._variableDependency = new SceneVariableSetVariableDependencyHandler(
16
+ this._handleParentVariableUpdatesCompleted.bind(this)
17
+ );
18
+ this._onActivate = () => {
19
+ const timeRange = sceneGraph.getTimeRange(this);
20
+ this._subs.add(
21
+ this.subscribeToEvent(SceneVariableValueChangedEvent, (event) => this._handleVariableValueChanged(event.payload))
22
+ );
23
+ this._subs.add(
24
+ timeRange.subscribeToState(() => {
25
+ this._refreshTimeRangeBasedVariables();
26
+ })
27
+ );
28
+ this._subs.add(this.subscribeToState(this._onStateChanged));
29
+ this._checkForVariablesThatChangedWhileInactive();
30
+ for (const variable of this.state.variables) {
31
+ if (this._variableNeedsUpdate(variable)) {
32
+ this._variablesToUpdate.add(variable);
33
+ }
34
+ }
35
+ this._updateNextBatch();
36
+ return this._onDeactivate;
37
+ };
38
+ this._onDeactivate = () => {
39
+ var _a;
40
+ for (const update of this._updating.values()) {
41
+ (_a = update.subscription) == null ? void 0 : _a.unsubscribe();
42
+ }
43
+ for (const variable of this.state.variables) {
44
+ if (!this._variablesToUpdate.has(variable) && !this._updating.has(variable)) {
45
+ this._variableValueRecorder.recordCurrentValue(variable);
46
+ }
47
+ }
48
+ this._variablesToUpdate.clear();
49
+ this._updating.clear();
50
+ };
51
+ this._onStateChanged = (newState, oldState) => {
52
+ const variablesToUpdateCountStart = this._variablesToUpdate.size;
53
+ for (const variable of oldState.variables) {
54
+ if (!newState.variables.includes(variable)) {
55
+ const updating = this._updating.get(variable);
56
+ if (updating == null ? void 0 : updating.subscription) {
57
+ updating.subscription.unsubscribe();
58
+ }
59
+ this._updating.delete(variable);
60
+ this._variablesToUpdate.delete(variable);
61
+ }
62
+ }
63
+ for (const variable of newState.variables) {
64
+ if (!oldState.variables.includes(variable)) {
65
+ if (this._variableNeedsUpdate(variable)) {
66
+ this._variablesToUpdate.add(variable);
67
+ }
68
+ }
69
+ }
70
+ if (variablesToUpdateCountStart === 0 && this._variablesToUpdate.size > 0) {
71
+ this._updateNextBatch();
72
+ }
73
+ };
74
+ this.addActivationHandler(this._onActivate);
75
+ }
76
+ getByName(name) {
77
+ return this.state.variables.find((x) => x.state.name === name);
78
+ }
79
+ _refreshTimeRangeBasedVariables() {
80
+ for (const variable of this.state.variables) {
81
+ if ("refresh" in variable.state && variable.state.refresh === VariableRefresh.onTimeRangeChanged) {
82
+ this._variablesToUpdate.add(variable);
83
+ }
84
+ }
85
+ this._updateNextBatch();
86
+ }
87
+ _checkForVariablesThatChangedWhileInactive() {
88
+ if (!this._variableValueRecorder.hasValues()) {
89
+ return;
90
+ }
91
+ for (const variable of this.state.variables) {
92
+ if (this._variableValueRecorder.hasValueChanged(variable)) {
93
+ writeVariableTraceLog(variable, "Changed while in-active");
94
+ this._addDependentVariablesToUpdateQueue(variable);
95
+ }
96
+ }
97
+ }
98
+ _variableNeedsUpdate(variable) {
99
+ if (variable.isLazy) {
100
+ return false;
101
+ }
102
+ if (!variable.validateAndUpdate) {
103
+ return false;
104
+ }
105
+ if (this._variableValueRecorder.hasRecordedValue(variable)) {
106
+ writeVariableTraceLog(variable, "Skipping updateAndValidate current value valid");
107
+ return false;
108
+ }
109
+ return true;
110
+ }
111
+ _updateNextBatch() {
112
+ for (const variable of this._variablesToUpdate) {
113
+ if (!variable.validateAndUpdate) {
114
+ throw new Error("Variable added to variablesToUpdate but does not have validateAndUpdate");
115
+ }
116
+ if (this._updating.has(variable)) {
117
+ continue;
118
+ }
119
+ if (sceneGraph.hasVariableDependencyInLoadingState(variable)) {
120
+ continue;
121
+ }
122
+ const variableToUpdate = {
123
+ variable
124
+ };
125
+ this._updating.set(variable, variableToUpdate);
126
+ writeVariableTraceLog(variable, "updateAndValidate started");
127
+ variableToUpdate.subscription = variable.validateAndUpdate().subscribe({
128
+ next: () => this._validateAndUpdateCompleted(variable),
129
+ complete: () => this._validateAndUpdateCompleted(variable),
130
+ error: (err) => this._handleVariableError(variable, err)
131
+ });
132
+ }
133
+ }
134
+ _validateAndUpdateCompleted(variable) {
135
+ var _a;
136
+ if (!this._updating.has(variable)) {
137
+ return;
138
+ }
139
+ const update = this._updating.get(variable);
140
+ (_a = update == null ? void 0 : update.subscription) == null ? void 0 : _a.unsubscribe();
141
+ this._updating.delete(variable);
142
+ this._variablesToUpdate.delete(variable);
143
+ writeVariableTraceLog(variable, "updateAndValidate completed");
144
+ this._notifyDependentSceneObjects(variable);
145
+ this._updateNextBatch();
146
+ }
147
+ cancel(variable) {
148
+ var _a;
149
+ const update = this._updating.get(variable);
150
+ (_a = update == null ? void 0 : update.subscription) == null ? void 0 : _a.unsubscribe();
151
+ this._updating.delete(variable);
152
+ this._variablesToUpdate.delete(variable);
153
+ }
154
+ _handleVariableError(variable, err) {
155
+ var _a;
156
+ const update = this._updating.get(variable);
157
+ (_a = update == null ? void 0 : update.subscription) == null ? void 0 : _a.unsubscribe();
158
+ this._updating.delete(variable);
159
+ this._variablesToUpdate.delete(variable);
160
+ variable.setState({ loading: false, error: err.message });
161
+ console.error("SceneVariableSet updateAndValidate error", err);
162
+ writeVariableTraceLog(variable, "updateAndValidate error", err);
163
+ this._notifyDependentSceneObjects(variable);
164
+ this._updateNextBatch();
165
+ }
166
+ _handleVariableValueChanged(variableThatChanged) {
167
+ this._variablesThatHaveChanged.add(variableThatChanged);
168
+ this._addDependentVariablesToUpdateQueue(variableThatChanged);
169
+ if (!this._updating.has(variableThatChanged)) {
170
+ this._updateNextBatch();
171
+ this._notifyDependentSceneObjects(variableThatChanged);
172
+ }
173
+ }
174
+ _handleParentVariableUpdatesCompleted(variable, hasChanged) {
175
+ if (hasChanged) {
176
+ this._addDependentVariablesToUpdateQueue(variable);
177
+ }
178
+ if (this._variablesToUpdate.size > 0 && this._updating.size === 0) {
179
+ this._updateNextBatch();
180
+ }
181
+ }
182
+ _addDependentVariablesToUpdateQueue(variableThatChanged) {
183
+ for (const otherVariable of this.state.variables) {
184
+ if (otherVariable.variableDependency) {
185
+ if (otherVariable.variableDependency.hasDependencyOn(variableThatChanged.state.name)) {
186
+ writeVariableTraceLog(otherVariable, "Added to update queue, dependant variable value changed");
187
+ if (this._updating.has(otherVariable) && otherVariable.onCancel) {
188
+ otherVariable.onCancel();
189
+ }
190
+ this._variablesToUpdate.add(otherVariable);
191
+ }
192
+ }
193
+ }
194
+ }
195
+ _notifyDependentSceneObjects(variable) {
196
+ if (!this.parent) {
197
+ return;
198
+ }
199
+ this._traverseSceneAndNotify(this.parent, variable, this._variablesThatHaveChanged.has(variable));
200
+ this._variablesThatHaveChanged.delete(variable);
201
+ }
202
+ _traverseSceneAndNotify(sceneObject, variable, hasChanged) {
203
+ if (this === sceneObject) {
204
+ return;
205
+ }
206
+ if (!sceneObject.isActive) {
207
+ return;
208
+ }
209
+ if (sceneObject.state.$variables && sceneObject.state.$variables !== this) {
210
+ const localVar = sceneObject.state.$variables.getByName(variable.state.name);
211
+ if (localVar) {
212
+ return;
213
+ }
214
+ }
215
+ if (sceneObject.variableDependency) {
216
+ sceneObject.variableDependency.variableUpdateCompleted(variable, hasChanged);
217
+ }
218
+ sceneObject.forEachChild((child) => this._traverseSceneAndNotify(child, variable, hasChanged));
219
+ }
220
+ isVariableLoadingOrWaitingToUpdate(variable) {
221
+ if (variable.isAncestorLoading && variable.isAncestorLoading()) {
222
+ return true;
223
+ }
224
+ if (this._variablesToUpdate.has(variable) || this._updating.has(variable)) {
225
+ return true;
226
+ }
227
+ return sceneGraph.hasVariableDependencyInLoadingState(variable);
228
+ }
229
+ }
230
+ function writeVariableTraceLog(variable, message, err) {
231
+ if (err) {
232
+ writeSceneLog("SceneVariableSet", `Variable[${variable.state.name}]: ${message}`, err);
233
+ } else {
234
+ writeSceneLog("SceneVariableSet", `Variable[${variable.state.name}]: ${message}`);
235
+ }
236
+ }
237
+ class SceneVariableSetVariableDependencyHandler {
238
+ constructor(_variableUpdatesCompleted) {
239
+ this._variableUpdatesCompleted = _variableUpdatesCompleted;
240
+ this._emptySet = /* @__PURE__ */ new Set();
241
+ }
242
+ getNames() {
243
+ return this._emptySet;
244
+ }
245
+ hasDependencyOn(name) {
246
+ return false;
247
+ }
248
+ variableUpdateCompleted(variable, hasChanged) {
249
+ this._variableUpdatesCompleted(variable, hasChanged);
250
+ }
251
+ }
252
+
253
+ export { SceneVariableSet };
254
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NlbmVWYXJpYWJsZVNldC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3ZhcmlhYmxlcy9zZXRzL1NjZW5lVmFyaWFibGVTZXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmFyaWFibGVSZWZyZXNoIH0gZnJvbSAnQGdyYWZhbmEvZGF0YSc7XG5pbXBvcnQgeyBVbnN1YnNjcmliYWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc2NlbmVHcmFwaCB9IGZyb20gJy4uLy4uL2NvcmUvc2NlbmVHcmFwaCc7XG5cbmltcG9ydCB7IFNjZW5lT2JqZWN0QmFzZSB9IGZyb20gJy4uLy4uL2NvcmUvU2NlbmVPYmplY3RCYXNlJztcbmltcG9ydCB7IFNjZW5lT2JqZWN0IH0gZnJvbSAnLi4vLi4vY29yZS90eXBlcyc7XG5pbXBvcnQgeyB3cml0ZVNjZW5lTG9nIH0gZnJvbSAnLi4vLi4vdXRpbHMvd3JpdGVTY2VuZUxvZyc7XG5pbXBvcnQge1xuICBTY2VuZVZhcmlhYmxlLFxuICBTY2VuZVZhcmlhYmxlRGVwZW5kZW5jeUNvbmZpZ0xpa2UsXG4gIFNjZW5lVmFyaWFibGVzLFxuICBTY2VuZVZhcmlhYmxlU2V0U3RhdGUsXG4gIFNjZW5lVmFyaWFibGVWYWx1ZUNoYW5nZWRFdmVudCxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgVmFyaWFibGVWYWx1ZVJlY29yZGVyIH0gZnJvbSAnLi4vVmFyaWFibGVWYWx1ZVJlY29yZGVyJztcblxuZXhwb3J0IGNsYXNzIFNjZW5lVmFyaWFibGVTZXQgZXh0ZW5kcyBTY2VuZU9iamVjdEJhc2U8U2NlbmVWYXJpYWJsZVNldFN0YXRlPiBpbXBsZW1lbnRzIFNjZW5lVmFyaWFibGVzIHtcbiAgLyoqIFZhcmlhYmxlcyB0aGF0IGhhdmUgY2hhbmdlZCBpbiBzaW5jZSB0aGUgYWN0aXZhdGlvbiBvciBzaW5jZSB0aGUgZmlyc3QgbWFudWFsIHZhbHVlIGNoYW5nZSAqL1xuICBwcml2YXRlIF92YXJpYWJsZXNUaGF0SGF2ZUNoYW5nZWQgPSBuZXcgU2V0PFNjZW5lVmFyaWFibGU+KCk7XG5cbiAgLyoqIFZhcmlhYmxlcyB0aGF0IGFyZSBzY2hlZHVsZWQgdG8gYmUgdmFsaWRhdGVkIGFuZCB1cGRhdGVkICovXG4gIHByaXZhdGUgX3ZhcmlhYmxlc1RvVXBkYXRlID0gbmV3IFNldDxTY2VuZVZhcmlhYmxlPigpO1xuXG4gIC8qKiBWYXJpYWJsZXMgY3VycmVudGx5IHVwZGF0aW5nICAqL1xuICBwcml2YXRlIF91cGRhdGluZyA9IG5ldyBNYXA8U2NlbmVWYXJpYWJsZSwgVmFyaWFibGVVcGRhdGVJblByb2dyZXNzPigpO1xuXG4gIHByaXZhdGUgX3ZhcmlhYmxlVmFsdWVSZWNvcmRlciA9IG5ldyBWYXJpYWJsZVZhbHVlUmVjb3JkZXIoKTtcblxuICAvKipcbiAgICogVGhpcyBtYWtlcyBzdXJlIFNjZW5lVmFyaWFibGVTZXQncyBoaWdoZXIgdXAgaW4gdGhlIGNoYWluIG5vdGlmeSB1cyB3aGVuIHBhcmVudCBsZXZlbCB2YXJpYWJsZXMgY29tcGxldGUgdXBkYXRlIGJhdGNoZXMuXG4gICAqKi9cbiAgcHJvdGVjdGVkIF92YXJpYWJsZURlcGVuZGVuY3kgPSBuZXcgU2NlbmVWYXJpYWJsZVNldFZhcmlhYmxlRGVwZW5kZW5jeUhhbmRsZXIoXG4gICAgdGhpcy5faGFuZGxlUGFyZW50VmFyaWFibGVVcGRhdGVzQ29tcGxldGVkLmJpbmQodGhpcylcbiAgKTtcblxuICBwdWJsaWMgZ2V0QnlOYW1lKG5hbWU6IHN0cmluZyk6IFNjZW5lVmFyaWFibGUgfCB1bmRlZmluZWQge1xuICAgIC8vIFRPRE86IFJlcGxhY2Ugd2l0aCBpbmRleFxuICAgIHJldHVybiB0aGlzLnN0YXRlLnZhcmlhYmxlcy5maW5kKCh4KSA9PiB4LnN0YXRlLm5hbWUgPT09IG5hbWUpO1xuICB9XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHN0YXRlOiBTY2VuZVZhcmlhYmxlU2V0U3RhdGUpIHtcbiAgICBzdXBlcihzdGF0ZSk7XG5cbiAgICB0aGlzLmFkZEFjdGl2YXRpb25IYW5kbGVyKHRoaXMuX29uQWN0aXZhdGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YnNjcmliZXMgdG8gY2hpbGQgdmFyaWFibGUgdmFsdWUgY2hhbmdlcywgYW5kIHN0YXJ0cyB0aGUgdmFyaWFibGUgdmFsdWUgdmFsaWRhdGlvbiBwcm9jZXNzXG4gICAqL1xuICBwcml2YXRlIF9vbkFjdGl2YXRlID0gKCkgPT4ge1xuICAgIGNvbnN0IHRpbWVSYW5nZSA9IHNjZW5lR3JhcGguZ2V0VGltZVJhbmdlKHRoaXMpO1xuICAgIC8vIFN1YnNjcmliZSB0byBjaGFuZ2VzIHRvIGNoaWxkIHZhcmlhYmxlc1xuICAgIHRoaXMuX3N1YnMuYWRkKFxuICAgICAgdGhpcy5zdWJzY3JpYmVUb0V2ZW50KFNjZW5lVmFyaWFibGVWYWx1ZUNoYW5nZWRFdmVudCwgKGV2ZW50KSA9PiB0aGlzLl9oYW5kbGVWYXJpYWJsZVZhbHVlQ2hhbmdlZChldmVudC5wYXlsb2FkKSlcbiAgICApO1xuXG4gICAgdGhpcy5fc3Vicy5hZGQoXG4gICAgICB0aW1lUmFuZ2Uuc3Vic2NyaWJlVG9TdGF0ZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX3JlZnJlc2hUaW1lUmFuZ2VCYXNlZFZhcmlhYmxlcygpO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIHN0YXRlIGNoYW5nZXNcbiAgICB0aGlzLl9zdWJzLmFkZCh0aGlzLnN1YnNjcmliZVRvU3RhdGUodGhpcy5fb25TdGF0ZUNoYW5nZWQpKTtcblxuICAgIHRoaXMuX2NoZWNrRm9yVmFyaWFibGVzVGhhdENoYW5nZWRXaGlsZUluYWN0aXZlKCk7XG5cbiAgICAvLyBBZGQgYWxsIHZhcmlhYmxlcyB0aGF0IG5lZWQgdXBkYXRpbmcgdG8gcXVldWVcbiAgICBmb3IgKGNvbnN0IHZhcmlhYmxlIG9mIHRoaXMuc3RhdGUudmFyaWFibGVzKSB7XG4gICAgICBpZiAodGhpcy5fdmFyaWFibGVOZWVkc1VwZGF0ZSh2YXJpYWJsZSkpIHtcbiAgICAgICAgdGhpcy5fdmFyaWFibGVzVG9VcGRhdGUuYWRkKHZhcmlhYmxlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl91cGRhdGVOZXh0QmF0Y2goKTtcblxuICAgIC8vIFJldHVybiBkZWFjdGl2YXRpb24gaGFuZGxlcjtcbiAgICByZXR1cm4gdGhpcy5fb25EZWFjdGl2YXRlO1xuICB9O1xuXG4gIC8qKlxuICAgKiBBZGQgYWxsIHZhcmlhYmxlcyB0aGF0IGRlcGVuZCBvbiB0aGUgY2hhbmdlZCB2YXJpYWJsZSB0byB0aGUgdXBkYXRlIHF1ZXVlXG4gICAqL1xuICBwcml2YXRlIF9yZWZyZXNoVGltZVJhbmdlQmFzZWRWYXJpYWJsZXMoKSB7XG4gICAgZm9yIChjb25zdCB2YXJpYWJsZSBvZiB0aGlzLnN0YXRlLnZhcmlhYmxlcykge1xuICAgICAgaWYgKCdyZWZyZXNoJyBpbiB2YXJpYWJsZS5zdGF0ZSAmJiB2YXJpYWJsZS5zdGF0ZS5yZWZyZXNoID09PSBWYXJpYWJsZVJlZnJlc2gub25UaW1lUmFuZ2VDaGFuZ2VkKSB7XG4gICAgICAgIHRoaXMuX3ZhcmlhYmxlc1RvVXBkYXRlLmFkZCh2YXJpYWJsZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX3VwZGF0ZU5leHRCYXRjaCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbmNlbCBhbGwgY3VycmVudGx5IHJ1bm5pbmcgdXBkYXRlc1xuICAgKi9cbiAgcHJpdmF0ZSBfb25EZWFjdGl2YXRlID0gKCkgPT4ge1xuICAgIGZvciAoY29uc3QgdXBkYXRlIG9mIHRoaXMuX3VwZGF0aW5nLnZhbHVlcygpKSB7XG4gICAgICB1cGRhdGUuc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8vIFJlbWVtYmVyIGN1cnJlbnQgdmFyaWFibGUgdmFsdWVzXG4gICAgZm9yIChjb25zdCB2YXJpYWJsZSBvZiB0aGlzLnN0YXRlLnZhcmlhYmxlcykge1xuICAgICAgLy8gaWYgdGhlIGN1cnJlbnQgdmFyaWFibGUgaXMgbm90IGluIHF1ZXVlIHRvIHVwZGF0ZSBhbmQgdmFsaWRhdGUgYW5kIG5vdCBiZWluZyBhY3RpdmVseSB1cGRhdGVkIHRoZW4gdGhlIHZhbHVlIGlzIG9rXG4gICAgICBpZiAoIXRoaXMuX3ZhcmlhYmxlc1RvVXBkYXRlLmhhcyh2YXJpYWJsZSkgJiYgIXRoaXMuX3VwZGF0aW5nLmhhcyh2YXJpYWJsZSkpIHtcbiAgICAgICAgdGhpcy5fdmFyaWFibGVWYWx1ZVJlY29yZGVyLnJlY29yZEN1cnJlbnRWYWx1ZSh2YXJpYWJsZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fdmFyaWFibGVzVG9VcGRhdGUuY2xlYXIoKTtcbiAgICB0aGlzLl91cGRhdGluZy5jbGVhcigpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBMb29rIGZvciBuZXcgdmFyaWFibGVzIHRoYXQgbmVlZCB0byBiZSBpbml0aWFsaXplZFxuICAgKi9cbiAgcHJpdmF0ZSBfb25TdGF0ZUNoYW5nZWQgPSAobmV3U3RhdGU6IFNjZW5lVmFyaWFibGVTZXRTdGF0ZSwgb2xkU3RhdGU6IFNjZW5lVmFyaWFibGVTZXRTdGF0ZSkgPT4ge1xuICAgIGNvbnN0IHZhcmlhYmxlc1RvVXBkYXRlQ291bnRTdGFydCA9IHRoaXMuX3ZhcmlhYmxlc1RvVXBkYXRlLnNpemU7XG5cbiAgICAvLyBDaGVjayBmb3IgcmVtb3ZlZCB2YXJpYWJsZXNcbiAgICBmb3IgKGNvbnN0IHZhcmlhYmxlIG9mIG9sZFN0YXRlLnZhcmlhYmxlcykge1xuICAgICAgaWYgKCFuZXdTdGF0ZS52YXJpYWJsZXMuaW5jbHVkZXModmFyaWFibGUpKSB7XG4gICAgICAgIGNvbnN0IHVwZGF0aW5nID0gdGhpcy5fdXBkYXRpbmcuZ2V0KHZhcmlhYmxlKTtcbiAgICAgICAgaWYgKHVwZGF0aW5nPy5zdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICB1cGRhdGluZy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl91cGRhdGluZy5kZWxldGUodmFyaWFibGUpO1xuICAgICAgICB0aGlzLl92YXJpYWJsZXNUb1VwZGF0ZS5kZWxldGUodmFyaWFibGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIENoZWNrIGZvciBuZXcgdmFyaWFibGVzXG4gICAgZm9yIChjb25zdCB2YXJpYWJsZSBvZiBuZXdTdGF0ZS52YXJpYWJsZXMpIHtcbiAgICAgIGlmICghb2xkU3RhdGUudmFyaWFibGVzLmluY2x1ZGVzKHZhcmlhYmxlKSkge1xuICAgICAgICBpZiAodGhpcy5fdmFyaWFibGVOZWVkc1VwZGF0ZSh2YXJpYWJsZSkpIHtcbiAgICAgICAgICB0aGlzLl92YXJpYWJsZXNUb1VwZGF0ZS5hZGQodmFyaWFibGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gT25seSBzdGFydCBhIG5ldyBiYXRjaCBpZiB0aGVyZSB3YXMgbm8gYmF0Y2ggYWxyZWFkeSBydW5uaW5nXG4gICAgaWYgKHZhcmlhYmxlc1RvVXBkYXRlQ291bnRTdGFydCA9PT0gMCAmJiB0aGlzLl92YXJpYWJsZXNUb1VwZGF0ZS5zaXplID4gMCkge1xuICAgICAgdGhpcy5fdXBkYXRlTmV4dEJhdGNoKCk7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBJZiB2YXJpYWJsZXMgY2hhbmdlZCB3aGlsZSBpbiBpbi1hY3RpdmUgc3RhdGUgd2UgZG9uJ3QgZ2V0IGFueSBjaGFuZ2UgZXZlbnRzLCBzbyB3ZSBuZWVkIHRvIGNoZWNrIGZvciB0aGF0IGhlcmUuXG4gICAqL1xuICBwcml2YXRlIF9jaGVja0ZvclZhcmlhYmxlc1RoYXRDaGFuZ2VkV2hpbGVJbmFjdGl2ZSgpIHtcbiAgICBpZiAoIXRoaXMuX3ZhcmlhYmxlVmFsdWVSZWNvcmRlci5oYXNWYWx1ZXMoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgdmFyaWFibGUgb2YgdGhpcy5zdGF0ZS52YXJpYWJsZXMpIHtcbiAgICAgIGlmICh0aGlzLl92YXJpYWJsZVZhbHVlUmVjb3JkZXIuaGFzVmFsdWVDaGFuZ2VkKHZhcmlhYmxlKSkge1xuICAgICAgICB3cml0ZVZhcmlhYmxlVHJhY2VMb2codmFyaWFibGUsICdDaGFuZ2VkIHdoaWxlIGluLWFjdGl2ZScpO1xuICAgICAgICB0aGlzLl9hZGREZXBlbmRlbnRWYXJpYWJsZXNUb1VwZGF0ZVF1ZXVlKHZhcmlhYmxlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF92YXJpYWJsZU5lZWRzVXBkYXRlKHZhcmlhYmxlOiBTY2VuZVZhcmlhYmxlKTogYm9vbGVhbiB7XG4gICAgaWYgKHZhcmlhYmxlLmlzTGF6eSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghdmFyaWFibGUudmFsaWRhdGVBbmRVcGRhdGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBJZiB3ZSBoYXZlIHJlY29yZGVkIHZhbGlkIHZhbHVlIChldmVuIGlmIGl0IGhhcyBjaGFuZ2VkIHNpbmNlIHdlIGRvIG5vdCBuZWVkIHRvIHJlLXZhbGlkYXRlIHRoaXMgdmFyaWFibGUpXG4gICAgaWYgKHRoaXMuX3ZhcmlhYmxlVmFsdWVSZWNvcmRlci5oYXNSZWNvcmRlZFZhbHVlKHZhcmlhYmxlKSkge1xuICAgICAgd3JpdGVWYXJpYWJsZVRyYWNlTG9nKHZhcmlhYmxlLCAnU2tpcHBpbmcgdXBkYXRlQW5kVmFsaWRhdGUgY3VycmVudCB2YWx1ZSB2YWxpZCcpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgbG9vcHMgdGhyb3VnaCB2YXJpYWJsZXNUb1VwZGF0ZSBhbmQgdXBkYXRlIGFsbCB0aGF0IGNhbi5cbiAgICogSWYgb25lIGhhcyBhIGRlcGVuZGVuY3kgdGhhdCBpcyBjdXJyZW50bHkgaW4gdmFyaWFibGVzVG9VcGRhdGUgaXQgd2lsbCBiZSBza2lwcGVkIGZvciBub3cuXG4gICAqL1xuICBwcml2YXRlIF91cGRhdGVOZXh0QmF0Y2goKSB7XG4gICAgZm9yIChjb25zdCB2YXJpYWJsZSBvZiB0aGlzLl92YXJpYWJsZXNUb1VwZGF0ZSkge1xuICAgICAgaWYgKCF2YXJpYWJsZS52YWxpZGF0ZUFuZFVwZGF0ZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZhcmlhYmxlIGFkZGVkIHRvIHZhcmlhYmxlc1RvVXBkYXRlIGJ1dCBkb2VzIG5vdCBoYXZlIHZhbGlkYXRlQW5kVXBkYXRlJyk7XG4gICAgICB9XG5cbiAgICAgIC8vIElnbm9yZSBpdCBpZiBpdCdzIGFscmVhZHkgc3RhcnRlZFxuICAgICAgaWYgKHRoaXMuX3VwZGF0aW5nLmhhcyh2YXJpYWJsZSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vIFdhaXQgZm9yIHZhcmlhYmxlcyB0aGF0IGhhcyBkZXBlbmRlbmNpZXMgdGhhdCBhbHNvIG5lZWRzIHVwZGF0ZXNcbiAgICAgIGlmIChzY2VuZUdyYXBoLmhhc1ZhcmlhYmxlRGVwZW5kZW5jeUluTG9hZGluZ1N0YXRlKHZhcmlhYmxlKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdmFyaWFibGVUb1VwZGF0ZTogVmFyaWFibGVVcGRhdGVJblByb2dyZXNzID0ge1xuICAgICAgICB2YXJpYWJsZSxcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuX3VwZGF0aW5nLnNldCh2YXJpYWJsZSwgdmFyaWFibGVUb1VwZGF0ZSk7XG4gICAgICB3cml0ZVZhcmlhYmxlVHJhY2VMb2codmFyaWFibGUsICd1cGRhdGVBbmRWYWxpZGF0ZSBzdGFydGVkJyk7XG5cbiAgICAgIHZhcmlhYmxlVG9VcGRhdGUuc3Vic2NyaXB0aW9uID0gdmFyaWFibGUudmFsaWRhdGVBbmRVcGRhdGUoKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoKSA9PiB0aGlzLl92YWxpZGF0ZUFuZFVwZGF0ZUNvbXBsZXRlZCh2YXJpYWJsZSksXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB0aGlzLl92YWxpZGF0ZUFuZFVwZGF0ZUNvbXBsZXRlZCh2YXJpYWJsZSksXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB0aGlzLl9oYW5kbGVWYXJpYWJsZUVycm9yKHZhcmlhYmxlLCBlcnIpLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEEgdmFyaWFibGUgaGFzIGNvbXBsZXRlZCBpdHMgdXBkYXRlIHByb2Nlc3MuIFRoaXMgY291bGQgbWVhbiB0aGF0IHZhcmlhYmxlcyB0aGF0IGRlcGVuZCBvbiBpdCBjYW4gbm93IGJlIHVwZGF0ZWQgaW4gdHVybi5cbiAgICovXG4gIHByaXZhdGUgX3ZhbGlkYXRlQW5kVXBkYXRlQ29tcGxldGVkKHZhcmlhYmxlOiBTY2VuZVZhcmlhYmxlKSB7XG4gICAgaWYgKCF0aGlzLl91cGRhdGluZy5oYXModmFyaWFibGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdXBkYXRlID0gdGhpcy5fdXBkYXRpbmcuZ2V0KHZhcmlhYmxlKTtcbiAgICB1cGRhdGU/LnN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuX3VwZGF0aW5nLmRlbGV0ZSh2YXJpYWJsZSk7XG4gICAgdGhpcy5fdmFyaWFibGVzVG9VcGRhdGUuZGVsZXRlKHZhcmlhYmxlKTtcblxuICAgIHdyaXRlVmFyaWFibGVUcmFjZUxvZyh2YXJpYWJsZSwgJ3VwZGF0ZUFuZFZhbGlkYXRlIGNvbXBsZXRlZCcpO1xuXG4gICAgdGhpcy5fbm90aWZ5RGVwZW5kZW50U2NlbmVPYmplY3RzKHZhcmlhYmxlKTtcbiAgICB0aGlzLl91cGRhdGVOZXh0QmF0Y2goKTtcbiAgfVxuXG4gIHB1YmxpYyBjYW5jZWwodmFyaWFibGU6IFNjZW5lVmFyaWFibGUpIHtcbiAgICBjb25zdCB1cGRhdGUgPSB0aGlzLl91cGRhdGluZy5nZXQodmFyaWFibGUpO1xuICAgIHVwZGF0ZT8uc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5fdXBkYXRpbmcuZGVsZXRlKHZhcmlhYmxlKTtcbiAgICB0aGlzLl92YXJpYWJsZXNUb1VwZGF0ZS5kZWxldGUodmFyaWFibGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlVmFyaWFibGVFcnJvcih2YXJpYWJsZTogU2NlbmVWYXJpYWJsZSwgZXJyOiBFcnJvcikge1xuICAgIGNvbnN0IHVwZGF0ZSA9IHRoaXMuX3VwZGF0aW5nLmdldCh2YXJpYWJsZSk7XG4gICAgdXBkYXRlPy5zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLl91cGRhdGluZy5kZWxldGUodmFyaWFibGUpO1xuICAgIHRoaXMuX3ZhcmlhYmxlc1RvVXBkYXRlLmRlbGV0ZSh2YXJpYWJsZSk7XG5cbiAgICB2YXJpYWJsZS5zZXRTdGF0ZSh7IGxvYWRpbmc6IGZhbHNlLCBlcnJvcjogZXJyLm1lc3NhZ2UgfSk7XG5cbiAgICBjb25zb2xlLmVycm9yKCdTY2VuZVZhcmlhYmxlU2V0IHVwZGF0ZUFuZFZhbGlkYXRlIGVycm9yJywgZXJyKTtcblxuICAgIHdyaXRlVmFyaWFibGVUcmFjZUxvZyh2YXJpYWJsZSwgJ3VwZGF0ZUFuZFZhbGlkYXRlIGVycm9yJywgZXJyKTtcblxuICAgIHRoaXMuX25vdGlmeURlcGVuZGVudFNjZW5lT2JqZWN0cyh2YXJpYWJsZSk7XG4gICAgdGhpcy5fdXBkYXRlTmV4dEJhdGNoKCk7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVWYXJpYWJsZVZhbHVlQ2hhbmdlZCh2YXJpYWJsZVRoYXRDaGFuZ2VkOiBTY2VuZVZhcmlhYmxlKSB7XG4gICAgdGhpcy5fdmFyaWFibGVzVGhhdEhhdmVDaGFuZ2VkLmFkZCh2YXJpYWJsZVRoYXRDaGFuZ2VkKTtcbiAgICB0aGlzLl9hZGREZXBlbmRlbnRWYXJpYWJsZXNUb1VwZGF0ZVF1ZXVlKHZhcmlhYmxlVGhhdENoYW5nZWQpO1xuXG4gICAgLy8gSWdub3JlIHRoaXMgY2hhbmdlIGlmIGl0IGlzIGN1cnJlbnRseSB1cGRhdGluZ1xuICAgIGlmICghdGhpcy5fdXBkYXRpbmcuaGFzKHZhcmlhYmxlVGhhdENoYW5nZWQpKSB7XG4gICAgICB0aGlzLl91cGRhdGVOZXh0QmF0Y2goKTtcbiAgICAgIHRoaXMuX25vdGlmeURlcGVuZGVudFNjZW5lT2JqZWN0cyh2YXJpYWJsZVRoYXRDaGFuZ2VkKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBpcyBjYWxsZWQgYnkgYW55IHBhcmVudCBsZXZlbCB2YXJpYWJsZSBzZXQgdG8gbm90aWZ5IHNjZW5lIHRoYXQgYW4gdXBkYXRlIGJhdGNoIGlzIGNvbXBsZXRlZC5cbiAgICogVGhpcyBpcyB0aGUgbWFpbiBtZWNoYW5pc20gbG93ZXIgbGV2ZWwgdmFyaWFibGUgc2V0J3MgcmVhY3QgdG8gY2hhbmdlcyBvbiBoaWdoZXIgbGV2ZWxzLlxuICAgKi9cbiAgcHJpdmF0ZSBfaGFuZGxlUGFyZW50VmFyaWFibGVVcGRhdGVzQ29tcGxldGVkKHZhcmlhYmxlOiBTY2VuZVZhcmlhYmxlLCBoYXNDaGFuZ2VkOiBib29sZWFuKSB7XG4gICAgLy8gRmlyc3QgbG9vcCB0aHJvdWdoIGNoYW5nZWQgdmFyaWFibGVzIGFuZCBhZGQgYW55IG9mIG91ciB2YXJpYWJsZXMgdGhhdCBkZXBlbmQgb24gdGhlIGhpZ2hlciBsZXZlbCB2YXJpYWJsZSB0byB0aGUgdXBkYXRlIHF1ZXVlXG4gICAgaWYgKGhhc0NoYW5nZWQpIHtcbiAgICAgIHRoaXMuX2FkZERlcGVuZGVudFZhcmlhYmxlc1RvVXBkYXRlUXVldWUodmFyaWFibGUpO1xuICAgIH1cblxuICAgIC8vIElmIHdlIGhhdmUgdmFyaWFibGVzIHRvIHVwZGF0ZSBidXQgbm9uZSBhcmUgY3VycmVudGx5IHVwZGF0aW5nIGtpY2sgb2YgYSBuZXcgdXBkYXRlIGJhdGNoXG4gICAgaWYgKHRoaXMuX3ZhcmlhYmxlc1RvVXBkYXRlLnNpemUgPiAwICYmIHRoaXMuX3VwZGF0aW5nLnNpemUgPT09IDApIHtcbiAgICAgIHRoaXMuX3VwZGF0ZU5leHRCYXRjaCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2FkZERlcGVuZGVudFZhcmlhYmxlc1RvVXBkYXRlUXVldWUodmFyaWFibGVUaGF0Q2hhbmdlZDogU2NlbmVWYXJpYWJsZSkge1xuICAgIGZvciAoY29uc3Qgb3RoZXJWYXJpYWJsZSBvZiB0aGlzLnN0YXRlLnZhcmlhYmxlcykge1xuICAgICAgaWYgKG90aGVyVmFyaWFibGUudmFyaWFibGVEZXBlbmRlbmN5KSB7XG4gICAgICAgIGlmIChvdGhlclZhcmlhYmxlLnZhcmlhYmxlRGVwZW5kZW5jeS5oYXNEZXBlbmRlbmN5T24odmFyaWFibGVUaGF0Q2hhbmdlZC5zdGF0ZS5uYW1lKSkge1xuICAgICAgICAgIHdyaXRlVmFyaWFibGVUcmFjZUxvZyhvdGhlclZhcmlhYmxlLCAnQWRkZWQgdG8gdXBkYXRlIHF1ZXVlLCBkZXBlbmRhbnQgdmFyaWFibGUgdmFsdWUgY2hhbmdlZCcpO1xuXG4gICAgICAgICAgaWYgKHRoaXMuX3VwZGF0aW5nLmhhcyhvdGhlclZhcmlhYmxlKSAmJiBvdGhlclZhcmlhYmxlLm9uQ2FuY2VsKSB7XG4gICAgICAgICAgICBvdGhlclZhcmlhYmxlLm9uQ2FuY2VsKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5fdmFyaWFibGVzVG9VcGRhdGUuYWRkKG90aGVyVmFyaWFibGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFdhbGsgc2NlbmUgb2JqZWN0IGdyYXBoIGFuZCB1cGRhdGUgYWxsIG9iamVjdHMgdGhhdCBkZXBlbmQgb24gdmFyaWFibGVzIHRoYXQgaGF2ZSBjaGFuZ2VkXG4gICAqL1xuICBwcml2YXRlIF9ub3RpZnlEZXBlbmRlbnRTY2VuZU9iamVjdHModmFyaWFibGU6IFNjZW5lVmFyaWFibGUpIHtcbiAgICBpZiAoIXRoaXMucGFyZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fdHJhdmVyc2VTY2VuZUFuZE5vdGlmeSh0aGlzLnBhcmVudCwgdmFyaWFibGUsIHRoaXMuX3ZhcmlhYmxlc1RoYXRIYXZlQ2hhbmdlZC5oYXModmFyaWFibGUpKTtcbiAgICB0aGlzLl92YXJpYWJsZXNUaGF0SGF2ZUNoYW5nZWQuZGVsZXRlKHZhcmlhYmxlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWN1cnNpdmx5IHdhbGsgdGhlIGZ1bGwgc2NlbmUgb2JqZWN0IGdyYXBoIGFuZCBub3RpZnkgYWxsIG9iamVjdHMgd2l0aCBkZXBlbmRlbmNpZXMgdGhhdCBpbmNsdWRlIGFueSBvZiBjaGFuZ2VkIHZhcmlhYmxlc1xuICAgKi9cbiAgcHJpdmF0ZSBfdHJhdmVyc2VTY2VuZUFuZE5vdGlmeShzY2VuZU9iamVjdDogU2NlbmVPYmplY3QsIHZhcmlhYmxlOiBTY2VuZVZhcmlhYmxlLCBoYXNDaGFuZ2VkOiBib29sZWFuKSB7XG4gICAgLy8gTm8gbmVlZCB0byBub3RpZnkgdmFyaWFibGVzIHVuZGVyIHRoaXMgU2NlbmVWYXJpYWJsZVNldFxuICAgIGlmICh0aGlzID09PSBzY2VuZU9iamVjdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFNraXAgbm9uIGFjdGl2ZSBzY2VuZSBvYmplY3RzXG4gICAgaWYgKCFzY2VuZU9iamVjdC5pc0FjdGl2ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIElmIHdlIGZpbmQgYSBuZXN0ZWQgU2NlbmVWYXJpYWJsZVNldCB0aGF0IGhhcyBhIHZhcmlhYmxlIHdpdGggdGhlIHNhbWUgbmFtZSB3ZSBzdG9wIHRoZSB0cmF2ZXJzYWxcbiAgICBpZiAoc2NlbmVPYmplY3Quc3RhdGUuJHZhcmlhYmxlcyAmJiBzY2VuZU9iamVjdC5zdGF0ZS4kdmFyaWFibGVzICE9PSB0aGlzKSB7XG4gICAgICBjb25zdCBsb2NhbFZhciA9IHNjZW5lT2JqZWN0LnN0YXRlLiR2YXJpYWJsZXMuZ2V0QnlOYW1lKHZhcmlhYmxlLnN0YXRlLm5hbWUpO1xuICAgICAgaWYgKGxvY2FsVmFyKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc2NlbmVPYmplY3QudmFyaWFibGVEZXBlbmRlbmN5KSB7XG4gICAgICBzY2VuZU9iamVjdC52YXJpYWJsZURlcGVuZGVuY3kudmFyaWFibGVVcGRhdGVDb21wbGV0ZWQodmFyaWFibGUsIGhhc0NoYW5nZWQpO1xuICAgIH1cblxuICAgIHNjZW5lT2JqZWN0LmZvckVhY2hDaGlsZCgoY2hpbGQpID0+IHRoaXMuX3RyYXZlcnNlU2NlbmVBbmROb3RpZnkoY2hpbGQsIHZhcmlhYmxlLCBoYXNDaGFuZ2VkKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRydWUgaWYgdmFyaWFibGUgaXMgd2FpdGluZyB0byB1cGRhdGUgb3IgY3VycmVudGx5IHVwZGF0aW5nLlxuICAgKiBJdCBhbHNvIHJldHVybnMgdHJ1ZSBpZiBhIGRlcGVuZGVuY3kgb2YgdGhlIHZhcmlhYmxlIGlzIGxvYWRpbmcuXG4gICAqXG4gICAqIEZvciBleGFtcGxlIGlmIEMgZGVwZW5kcyBvbiB2YXJpYWJsZSBCIHdoaWNoIGRlcGVuZHMgb24gdmFyaWFibGUgQSBhbmQgQSBpcyBsb2FkaW5nIHRoaXMgcmV0dXJucyB0cnVlIGZvciB2YXJpYWJsZSBDIGFuZCBCLlxuICAgKi9cbiAgcHVibGljIGlzVmFyaWFibGVMb2FkaW5nT3JXYWl0aW5nVG9VcGRhdGUodmFyaWFibGU6IFNjZW5lVmFyaWFibGUpIHtcbiAgICBpZiAodmFyaWFibGUuaXNBbmNlc3RvckxvYWRpbmcgJiYgdmFyaWFibGUuaXNBbmNlc3RvckxvYWRpbmcoKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3ZhcmlhYmxlc1RvVXBkYXRlLmhhcyh2YXJpYWJsZSkgfHwgdGhpcy5fdXBkYXRpbmcuaGFzKHZhcmlhYmxlKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gTGFzdCBzY2VuYXJpbyBpcyB0byBjaGVjayB0aGUgdmFyaWFibGUncyBvd24gZGVwZW5kZW5jaWVzIGFzIHdlbGxcbiAgICByZXR1cm4gc2NlbmVHcmFwaC5oYXNWYXJpYWJsZURlcGVuZGVuY3lJbkxvYWRpbmdTdGF0ZSh2YXJpYWJsZSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBWYXJpYWJsZVVwZGF0ZUluUHJvZ3Jlc3Mge1xuICB2YXJpYWJsZTogU2NlbmVWYXJpYWJsZTtcbiAgc3Vic2NyaXB0aW9uPzogVW5zdWJzY3JpYmFibGU7XG59XG5cbmZ1bmN0aW9uIHdyaXRlVmFyaWFibGVUcmFjZUxvZyh2YXJpYWJsZTogU2NlbmVWYXJpYWJsZSwgbWVzc2FnZTogc3RyaW5nLCBlcnI/OiBFcnJvcikge1xuICBpZiAoZXJyKSB7XG4gICAgd3JpdGVTY2VuZUxvZygnU2NlbmVWYXJpYWJsZVNldCcsIGBWYXJpYWJsZVske3ZhcmlhYmxlLnN0YXRlLm5hbWV9XTogJHttZXNzYWdlfWAsIGVycik7XG4gIH0gZWxzZSB7XG4gICAgd3JpdGVTY2VuZUxvZygnU2NlbmVWYXJpYWJsZVNldCcsIGBWYXJpYWJsZVske3ZhcmlhYmxlLnN0YXRlLm5hbWV9XTogJHttZXNzYWdlfWApO1xuICB9XG59XG5cbmNsYXNzIFNjZW5lVmFyaWFibGVTZXRWYXJpYWJsZURlcGVuZGVuY3lIYW5kbGVyIGltcGxlbWVudHMgU2NlbmVWYXJpYWJsZURlcGVuZGVuY3lDb25maWdMaWtlIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgX3ZhcmlhYmxlVXBkYXRlc0NvbXBsZXRlZDogKHZhcmlhYmxlOiBTY2VuZVZhcmlhYmxlLCBoYXNDaGFuZ2VkOiBib29sZWFuKSA9PiB2b2lkKSB7fVxuXG4gIHByaXZhdGUgX2VtcHR5U2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgcHVibGljIGdldE5hbWVzKCk6IFNldDxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5fZW1wdHlTZXQ7XG4gIH1cblxuICBwdWJsaWMgaGFzRGVwZW5kZW5jeU9uKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyB2YXJpYWJsZVVwZGF0ZUNvbXBsZXRlZCh2YXJpYWJsZTogU2NlbmVWYXJpYWJsZSwgaGFzQ2hhbmdlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuX3ZhcmlhYmxlVXBkYXRlc0NvbXBsZXRlZCh2YXJpYWJsZSwgaGFzQ2hhbmdlZCk7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBZ0JPLE1BQU0seUJBQXlCLGVBQWlFLENBQUE7QUFBQSxFQXdCOUYsWUFBWSxLQUE4QixFQUFBO0FBQy9DLElBQUEsS0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBO0FBdkJiLElBQVEsSUFBQSxDQUFBLHlCQUFBLHVCQUFnQyxHQUFtQixFQUFBLENBQUE7QUFHM0QsSUFBUSxJQUFBLENBQUEsa0JBQUEsdUJBQXlCLEdBQW1CLEVBQUEsQ0FBQTtBQUdwRCxJQUFRLElBQUEsQ0FBQSxTQUFBLHVCQUFnQixHQUE2QyxFQUFBLENBQUE7QUFFckUsSUFBUSxJQUFBLENBQUEsc0JBQUEsR0FBeUIsSUFBSSxxQkFBc0IsRUFBQSxDQUFBO0FBSzNELElBQUEsSUFBQSxDQUFVLHNCQUFzQixJQUFJLHlDQUFBO0FBQUEsTUFDbEMsSUFBQSxDQUFLLHFDQUFzQyxDQUFBLElBQUEsQ0FBSyxJQUFJLENBQUE7QUFBQSxLQUN0RCxDQUFBO0FBZ0JBLElBQUEsSUFBQSxDQUFRLGNBQWMsTUFBTTtBQUMxQixNQUFNLE1BQUEsU0FBQSxHQUFZLFVBQVcsQ0FBQSxZQUFBLENBQWEsSUFBSSxDQUFBLENBQUE7QUFFOUMsTUFBQSxJQUFBLENBQUssS0FBTSxDQUFBLEdBQUE7QUFBQSxRQUNULElBQUEsQ0FBSyxpQkFBaUIsOEJBQWdDLEVBQUEsQ0FBQyxVQUFVLElBQUssQ0FBQSwyQkFBQSxDQUE0QixLQUFNLENBQUEsT0FBTyxDQUFDLENBQUE7QUFBQSxPQUNsSCxDQUFBO0FBRUEsTUFBQSxJQUFBLENBQUssS0FBTSxDQUFBLEdBQUE7QUFBQSxRQUNULFNBQUEsQ0FBVSxpQkFBaUIsTUFBTTtBQUMvQixVQUFBLElBQUEsQ0FBSywrQkFBZ0MsRUFBQSxDQUFBO0FBQUEsU0FDdEMsQ0FBQTtBQUFBLE9BQ0gsQ0FBQTtBQUdBLE1BQUEsSUFBQSxDQUFLLE1BQU0sR0FBSSxDQUFBLElBQUEsQ0FBSyxnQkFBaUIsQ0FBQSxJQUFBLENBQUssZUFBZSxDQUFDLENBQUEsQ0FBQTtBQUUxRCxNQUFBLElBQUEsQ0FBSywwQ0FBMkMsRUFBQSxDQUFBO0FBR2hELE1BQVcsS0FBQSxNQUFBLFFBQUEsSUFBWSxJQUFLLENBQUEsS0FBQSxDQUFNLFNBQVcsRUFBQTtBQUMzQyxRQUFJLElBQUEsSUFBQSxDQUFLLG9CQUFxQixDQUFBLFFBQVEsQ0FBRyxFQUFBO0FBQ3ZDLFVBQUssSUFBQSxDQUFBLGtCQUFBLENBQW1CLElBQUksUUFBUSxDQUFBLENBQUE7QUFBQSxTQUN0QztBQUFBLE9BQ0Y7QUFFQSxNQUFBLElBQUEsQ0FBSyxnQkFBaUIsRUFBQSxDQUFBO0FBR3RCLE1BQUEsT0FBTyxJQUFLLENBQUEsYUFBQSxDQUFBO0FBQUEsS0FDZCxDQUFBO0FBaUJBLElBQUEsSUFBQSxDQUFRLGdCQUFnQixNQUFNO0FBL0ZoQyxNQUFBLElBQUEsRUFBQSxDQUFBO0FBZ0dJLE1BQUEsS0FBQSxNQUFXLE1BQVUsSUFBQSxJQUFBLENBQUssU0FBVSxDQUFBLE1BQUEsRUFBVSxFQUFBO0FBQzVDLFFBQUEsQ0FBQSxFQUFBLEdBQUEsTUFBQSxDQUFPLGlCQUFQLElBQXFCLEdBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxDQUFBLFdBQUEsRUFBQSxDQUFBO0FBQUEsT0FDdkI7QUFHQSxNQUFXLEtBQUEsTUFBQSxRQUFBLElBQVksSUFBSyxDQUFBLEtBQUEsQ0FBTSxTQUFXLEVBQUE7QUFFM0MsUUFBSSxJQUFBLENBQUMsSUFBSyxDQUFBLGtCQUFBLENBQW1CLEdBQUksQ0FBQSxRQUFRLENBQUssSUFBQSxDQUFDLElBQUssQ0FBQSxTQUFBLENBQVUsR0FBSSxDQUFBLFFBQVEsQ0FBRyxFQUFBO0FBQzNFLFVBQUssSUFBQSxDQUFBLHNCQUFBLENBQXVCLG1CQUFtQixRQUFRLENBQUEsQ0FBQTtBQUFBLFNBQ3pEO0FBQUEsT0FDRjtBQUVBLE1BQUEsSUFBQSxDQUFLLG1CQUFtQixLQUFNLEVBQUEsQ0FBQTtBQUM5QixNQUFBLElBQUEsQ0FBSyxVQUFVLEtBQU0sRUFBQSxDQUFBO0FBQUEsS0FDdkIsQ0FBQTtBQUtBLElBQVEsSUFBQSxDQUFBLGVBQUEsR0FBa0IsQ0FBQyxRQUFBLEVBQWlDLFFBQW9DLEtBQUE7QUFDOUYsTUFBTSxNQUFBLDJCQUFBLEdBQThCLEtBQUssa0JBQW1CLENBQUEsSUFBQSxDQUFBO0FBRzVELE1BQVcsS0FBQSxNQUFBLFFBQUEsSUFBWSxTQUFTLFNBQVcsRUFBQTtBQUN6QyxRQUFBLElBQUksQ0FBQyxRQUFBLENBQVMsU0FBVSxDQUFBLFFBQUEsQ0FBUyxRQUFRLENBQUcsRUFBQTtBQUMxQyxVQUFBLE1BQU0sUUFBVyxHQUFBLElBQUEsQ0FBSyxTQUFVLENBQUEsR0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBO0FBQzVDLFVBQUEsSUFBSSxxQ0FBVSxZQUFjLEVBQUE7QUFDMUIsWUFBQSxRQUFBLENBQVMsYUFBYSxXQUFZLEVBQUEsQ0FBQTtBQUFBLFdBQ3BDO0FBQ0EsVUFBSyxJQUFBLENBQUEsU0FBQSxDQUFVLE9BQU8sUUFBUSxDQUFBLENBQUE7QUFDOUIsVUFBSyxJQUFBLENBQUEsa0JBQUEsQ0FBbUIsT0FBTyxRQUFRLENBQUEsQ0FBQTtBQUFBLFNBQ3pDO0FBQUEsT0FDRjtBQUdBLE1BQVcsS0FBQSxNQUFBLFFBQUEsSUFBWSxTQUFTLFNBQVcsRUFBQTtBQUN6QyxRQUFBLElBQUksQ0FBQyxRQUFBLENBQVMsU0FBVSxDQUFBLFFBQUEsQ0FBUyxRQUFRLENBQUcsRUFBQTtBQUMxQyxVQUFJLElBQUEsSUFBQSxDQUFLLG9CQUFxQixDQUFBLFFBQVEsQ0FBRyxFQUFBO0FBQ3ZDLFlBQUssSUFBQSxDQUFBLGtCQUFBLENBQW1CLElBQUksUUFBUSxDQUFBLENBQUE7QUFBQSxXQUN0QztBQUFBLFNBQ0Y7QUFBQSxPQUNGO0FBR0EsTUFBQSxJQUFJLDJCQUFnQyxLQUFBLENBQUEsSUFBSyxJQUFLLENBQUEsa0JBQUEsQ0FBbUIsT0FBTyxDQUFHLEVBQUE7QUFDekUsUUFBQSxJQUFBLENBQUssZ0JBQWlCLEVBQUEsQ0FBQTtBQUFBLE9BQ3hCO0FBQUEsS0FDRixDQUFBO0FBcEdFLElBQUssSUFBQSxDQUFBLG9CQUFBLENBQXFCLEtBQUssV0FBVyxDQUFBLENBQUE7QUFBQSxHQUM1QztBQUFBLEVBVE8sVUFBVSxJQUF5QyxFQUFBO0FBRXhELElBQU8sT0FBQSxJQUFBLENBQUssTUFBTSxTQUFVLENBQUEsSUFBQSxDQUFLLENBQUMsQ0FBTSxLQUFBLENBQUEsQ0FBRSxLQUFNLENBQUEsSUFBQSxLQUFTLElBQUksQ0FBQSxDQUFBO0FBQUEsR0FDL0Q7QUFBQSxFQTZDUSwrQkFBa0MsR0FBQTtBQUN4QyxJQUFXLEtBQUEsTUFBQSxRQUFBLElBQVksSUFBSyxDQUFBLEtBQUEsQ0FBTSxTQUFXLEVBQUE7QUFDM0MsTUFBQSxJQUFJLGFBQWEsUUFBUyxDQUFBLEtBQUEsSUFBUyxTQUFTLEtBQU0sQ0FBQSxPQUFBLEtBQVksZ0JBQWdCLGtCQUFvQixFQUFBO0FBQ2hHLFFBQUssSUFBQSxDQUFBLGtCQUFBLENBQW1CLElBQUksUUFBUSxDQUFBLENBQUE7QUFBQSxPQUN0QztBQUFBLEtBQ0Y7QUFDQSxJQUFBLElBQUEsQ0FBSyxnQkFBaUIsRUFBQSxDQUFBO0FBQUEsR0FDeEI7QUFBQSxFQTBEUSwwQ0FBNkMsR0FBQTtBQUNuRCxJQUFBLElBQUksQ0FBQyxJQUFBLENBQUssc0JBQXVCLENBQUEsU0FBQSxFQUFhLEVBQUE7QUFDNUMsTUFBQSxPQUFBO0FBQUEsS0FDRjtBQUVBLElBQVcsS0FBQSxNQUFBLFFBQUEsSUFBWSxJQUFLLENBQUEsS0FBQSxDQUFNLFNBQVcsRUFBQTtBQUMzQyxNQUFBLElBQUksSUFBSyxDQUFBLHNCQUFBLENBQXVCLGVBQWdCLENBQUEsUUFBUSxDQUFHLEVBQUE7QUFDekQsUUFBQSxxQkFBQSxDQUFzQixVQUFVLHlCQUF5QixDQUFBLENBQUE7QUFDekQsUUFBQSxJQUFBLENBQUssb0NBQW9DLFFBQVEsQ0FBQSxDQUFBO0FBQUEsT0FDbkQ7QUFBQSxLQUNGO0FBQUEsR0FDRjtBQUFBLEVBRVEscUJBQXFCLFFBQWtDLEVBQUE7QUFDN0QsSUFBQSxJQUFJLFNBQVMsTUFBUSxFQUFBO0FBQ25CLE1BQU8sT0FBQSxLQUFBLENBQUE7QUFBQSxLQUNUO0FBRUEsSUFBSSxJQUFBLENBQUMsU0FBUyxpQkFBbUIsRUFBQTtBQUMvQixNQUFPLE9BQUEsS0FBQSxDQUFBO0FBQUEsS0FDVDtBQUdBLElBQUEsSUFBSSxJQUFLLENBQUEsc0JBQUEsQ0FBdUIsZ0JBQWlCLENBQUEsUUFBUSxDQUFHLEVBQUE7QUFDMUQsTUFBQSxxQkFBQSxDQUFzQixVQUFVLGdEQUFnRCxDQUFBLENBQUE7QUFDaEYsTUFBTyxPQUFBLEtBQUEsQ0FBQTtBQUFBLEtBQ1Q7QUFFQSxJQUFPLE9BQUEsSUFBQSxDQUFBO0FBQUEsR0FDVDtBQUFBLEVBTVEsZ0JBQW1CLEdBQUE7QUFDekIsSUFBVyxLQUFBLE1BQUEsUUFBQSxJQUFZLEtBQUssa0JBQW9CLEVBQUE7QUFDOUMsTUFBSSxJQUFBLENBQUMsU0FBUyxpQkFBbUIsRUFBQTtBQUMvQixRQUFNLE1BQUEsSUFBSSxNQUFNLHlFQUF5RSxDQUFBLENBQUE7QUFBQSxPQUMzRjtBQUdBLE1BQUEsSUFBSSxJQUFLLENBQUEsU0FBQSxDQUFVLEdBQUksQ0FBQSxRQUFRLENBQUcsRUFBQTtBQUNoQyxRQUFBLFNBQUE7QUFBQSxPQUNGO0FBR0EsTUFBSSxJQUFBLFVBQUEsQ0FBVyxtQ0FBb0MsQ0FBQSxRQUFRLENBQUcsRUFBQTtBQUM1RCxRQUFBLFNBQUE7QUFBQSxPQUNGO0FBRUEsTUFBQSxNQUFNLGdCQUE2QyxHQUFBO0FBQUEsUUFDakQsUUFBQTtBQUFBLE9BQ0YsQ0FBQTtBQUVBLE1BQUssSUFBQSxDQUFBLFNBQUEsQ0FBVSxHQUFJLENBQUEsUUFBQSxFQUFVLGdCQUFnQixDQUFBLENBQUE7QUFDN0MsTUFBQSxxQkFBQSxDQUFzQixVQUFVLDJCQUEyQixDQUFBLENBQUE7QUFFM0QsTUFBQSxnQkFBQSxDQUFpQixZQUFlLEdBQUEsUUFBQSxDQUFTLGlCQUFrQixFQUFBLENBQUUsU0FBVSxDQUFBO0FBQUEsUUFDckUsSUFBTSxFQUFBLE1BQU0sSUFBSyxDQUFBLDJCQUFBLENBQTRCLFFBQVEsQ0FBQTtBQUFBLFFBQ3JELFFBQVUsRUFBQSxNQUFNLElBQUssQ0FBQSwyQkFBQSxDQUE0QixRQUFRLENBQUE7QUFBQSxRQUN6RCxPQUFPLENBQUMsR0FBQSxLQUFRLElBQUssQ0FBQSxvQkFBQSxDQUFxQixVQUFVLEdBQUcsQ0FBQTtBQUFBLE9BQ3hELENBQUEsQ0FBQTtBQUFBLEtBQ0g7QUFBQSxHQUNGO0FBQUEsRUFLUSw0QkFBNEIsUUFBeUIsRUFBQTtBQXpOL0QsSUFBQSxJQUFBLEVBQUEsQ0FBQTtBQTBOSSxJQUFBLElBQUksQ0FBQyxJQUFBLENBQUssU0FBVSxDQUFBLEdBQUEsQ0FBSSxRQUFRLENBQUcsRUFBQTtBQUNqQyxNQUFBLE9BQUE7QUFBQSxLQUNGO0FBRUEsSUFBQSxNQUFNLE1BQVMsR0FBQSxJQUFBLENBQUssU0FBVSxDQUFBLEdBQUEsQ0FBSSxRQUFRLENBQUEsQ0FBQTtBQUMxQyxJQUFBLENBQUEsRUFBQSxHQUFBLE1BQUEsSUFBQSxJQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUEsTUFBQSxDQUFRLGlCQUFSLElBQXNCLEdBQUEsS0FBQSxDQUFBLEdBQUEsRUFBQSxDQUFBLFdBQUEsRUFBQSxDQUFBO0FBRXRCLElBQUssSUFBQSxDQUFBLFNBQUEsQ0FBVSxPQUFPLFFBQVEsQ0FBQSxDQUFBO0FBQzlCLElBQUssSUFBQSxDQUFBLGtCQUFBLENBQW1CLE9BQU8sUUFBUSxDQUFBLENBQUE7QUFFdkMsSUFBQSxxQkFBQSxDQUFzQixVQUFVLDZCQUE2QixDQUFBLENBQUE7QUFFN0QsSUFBQSxJQUFBLENBQUssNkJBQTZCLFFBQVEsQ0FBQSxDQUFBO0FBQzFDLElBQUEsSUFBQSxDQUFLLGdCQUFpQixFQUFBLENBQUE7QUFBQSxHQUN4QjtBQUFBLEVBRU8sT0FBTyxRQUF5QixFQUFBO0FBMU96QyxJQUFBLElBQUEsRUFBQSxDQUFBO0FBMk9JLElBQUEsTUFBTSxNQUFTLEdBQUEsSUFBQSxDQUFLLFNBQVUsQ0FBQSxHQUFBLENBQUksUUFBUSxDQUFBLENBQUE7QUFDMUMsSUFBQSxDQUFBLEVBQUEsR0FBQSxNQUFBLElBQUEsSUFBQSxHQUFBLEtBQUEsQ0FBQSxHQUFBLE1BQUEsQ0FBUSxpQkFBUixJQUFzQixHQUFBLEtBQUEsQ0FBQSxHQUFBLEVBQUEsQ0FBQSxXQUFBLEVBQUEsQ0FBQTtBQUV0QixJQUFLLElBQUEsQ0FBQSxTQUFBLENBQVUsT0FBTyxRQUFRLENBQUEsQ0FBQTtBQUM5QixJQUFLLElBQUEsQ0FBQSxrQkFBQSxDQUFtQixPQUFPLFFBQVEsQ0FBQSxDQUFBO0FBQUEsR0FDekM7QUFBQSxFQUVRLG9CQUFBLENBQXFCLFVBQXlCLEdBQVksRUFBQTtBQWxQcEUsSUFBQSxJQUFBLEVBQUEsQ0FBQTtBQW1QSSxJQUFBLE1BQU0sTUFBUyxHQUFBLElBQUEsQ0FBSyxTQUFVLENBQUEsR0FBQSxDQUFJLFFBQVEsQ0FBQSxDQUFBO0FBQzFDLElBQUEsQ0FBQSxFQUFBLEdBQUEsTUFBQSxJQUFBLElBQUEsR0FBQSxLQUFBLENBQUEsR0FBQSxNQUFBLENBQVEsaUJBQVIsSUFBc0IsR0FBQSxLQUFBLENBQUEsR0FBQSxFQUFBLENBQUEsV0FBQSxFQUFBLENBQUE7QUFFdEIsSUFBSyxJQUFBLENBQUEsU0FBQSxDQUFVLE9BQU8sUUFBUSxDQUFBLENBQUE7QUFDOUIsSUFBSyxJQUFBLENBQUEsa0JBQUEsQ0FBbUIsT0FBTyxRQUFRLENBQUEsQ0FBQTtBQUV2QyxJQUFBLFFBQUEsQ0FBUyxTQUFTLEVBQUUsT0FBQSxFQUFTLE9BQU8sS0FBTyxFQUFBLEdBQUEsQ0FBSSxTQUFTLENBQUEsQ0FBQTtBQUV4RCxJQUFRLE9BQUEsQ0FBQSxLQUFBLENBQU0sNENBQTRDLEdBQUcsQ0FBQSxDQUFBO0FBRTdELElBQXNCLHFCQUFBLENBQUEsUUFBQSxFQUFVLDJCQUEyQixHQUFHLENBQUEsQ0FBQTtBQUU5RCxJQUFBLElBQUEsQ0FBSyw2QkFBNkIsUUFBUSxDQUFBLENBQUE7QUFDMUMsSUFBQSxJQUFBLENBQUssZ0JBQWlCLEVBQUEsQ0FBQTtBQUFBLEdBQ3hCO0FBQUEsRUFFUSw0QkFBNEIsbUJBQW9DLEVBQUE7QUFDdEUsSUFBSyxJQUFBLENBQUEseUJBQUEsQ0FBMEIsSUFBSSxtQkFBbUIsQ0FBQSxDQUFBO0FBQ3RELElBQUEsSUFBQSxDQUFLLG9DQUFvQyxtQkFBbUIsQ0FBQSxDQUFBO0FBRzVELElBQUEsSUFBSSxDQUFDLElBQUEsQ0FBSyxTQUFVLENBQUEsR0FBQSxDQUFJLG1CQUFtQixDQUFHLEVBQUE7QUFDNUMsTUFBQSxJQUFBLENBQUssZ0JBQWlCLEVBQUEsQ0FBQTtBQUN0QixNQUFBLElBQUEsQ0FBSyw2QkFBNkIsbUJBQW1CLENBQUEsQ0FBQTtBQUFBLEtBQ3ZEO0FBQUEsR0FDRjtBQUFBLEVBTVEscUNBQUEsQ0FBc0MsVUFBeUIsVUFBcUIsRUFBQTtBQUUxRixJQUFBLElBQUksVUFBWSxFQUFBO0FBQ2QsTUFBQSxJQUFBLENBQUssb0NBQW9DLFFBQVEsQ0FBQSxDQUFBO0FBQUEsS0FDbkQ7QUFHQSxJQUFBLElBQUksS0FBSyxrQkFBbUIsQ0FBQSxJQUFBLEdBQU8sS0FBSyxJQUFLLENBQUEsU0FBQSxDQUFVLFNBQVMsQ0FBRyxFQUFBO0FBQ2pFLE1BQUEsSUFBQSxDQUFLLGdCQUFpQixFQUFBLENBQUE7QUFBQSxLQUN4QjtBQUFBLEdBQ0Y7QUFBQSxFQUVRLG9DQUFvQyxtQkFBb0MsRUFBQTtBQUM5RSxJQUFXLEtBQUEsTUFBQSxhQUFBLElBQWlCLElBQUssQ0FBQSxLQUFBLENBQU0sU0FBVyxFQUFBO0FBQ2hELE1BQUEsSUFBSSxjQUFjLGtCQUFvQixFQUFBO0FBQ3BDLFFBQUEsSUFBSSxjQUFjLGtCQUFtQixDQUFBLGVBQUEsQ0FBZ0IsbUJBQW9CLENBQUEsS0FBQSxDQUFNLElBQUksQ0FBRyxFQUFBO0FBQ3BGLFVBQUEscUJBQUEsQ0FBc0IsZUFBZSx5REFBeUQsQ0FBQSxDQUFBO0FBRTlGLFVBQUEsSUFBSSxLQUFLLFNBQVUsQ0FBQSxHQUFBLENBQUksYUFBYSxDQUFBLElBQUssY0FBYyxRQUFVLEVBQUE7QUFDL0QsWUFBQSxhQUFBLENBQWMsUUFBUyxFQUFBLENBQUE7QUFBQSxXQUN6QjtBQUVBLFVBQUssSUFBQSxDQUFBLGtCQUFBLENBQW1CLElBQUksYUFBYSxDQUFBLENBQUE7QUFBQSxTQUMzQztBQUFBLE9BQ0Y7QUFBQSxLQUNGO0FBQUEsR0FDRjtBQUFBLEVBS1EsNkJBQTZCLFFBQXlCLEVBQUE7QUFDNUQsSUFBSSxJQUFBLENBQUMsS0FBSyxNQUFRLEVBQUE7QUFDaEIsTUFBQSxPQUFBO0FBQUEsS0FDRjtBQUVBLElBQUssSUFBQSxDQUFBLHVCQUFBLENBQXdCLEtBQUssTUFBUSxFQUFBLFFBQUEsRUFBVSxLQUFLLHlCQUEwQixDQUFBLEdBQUEsQ0FBSSxRQUFRLENBQUMsQ0FBQSxDQUFBO0FBQ2hHLElBQUssSUFBQSxDQUFBLHlCQUFBLENBQTBCLE9BQU8sUUFBUSxDQUFBLENBQUE7QUFBQSxHQUNoRDtBQUFBLEVBS1EsdUJBQUEsQ0FBd0IsV0FBMEIsRUFBQSxRQUFBLEVBQXlCLFVBQXFCLEVBQUE7QUFFdEcsSUFBQSxJQUFJLFNBQVMsV0FBYSxFQUFBO0FBQ3hCLE1BQUEsT0FBQTtBQUFBLEtBQ0Y7QUFHQSxJQUFJLElBQUEsQ0FBQyxZQUFZLFFBQVUsRUFBQTtBQUN6QixNQUFBLE9BQUE7QUFBQSxLQUNGO0FBR0EsSUFBQSxJQUFJLFlBQVksS0FBTSxDQUFBLFVBQUEsSUFBYyxXQUFZLENBQUEsS0FBQSxDQUFNLGVBQWUsSUFBTSxFQUFBO0FBQ3pFLE1BQUEsTUFBTSxXQUFXLFdBQVksQ0FBQSxLQUFBLENBQU0sV0FBVyxTQUFVLENBQUEsUUFBQSxDQUFTLE1BQU0sSUFBSSxDQUFBLENBQUE7QUFDM0UsTUFBQSxJQUFJLFFBQVUsRUFBQTtBQUNaLFFBQUEsT0FBQTtBQUFBLE9BQ0Y7QUFBQSxLQUNGO0FBRUEsSUFBQSxJQUFJLFlBQVksa0JBQW9CLEVBQUE7QUFDbEMsTUFBWSxXQUFBLENBQUEsa0JBQUEsQ0FBbUIsdUJBQXdCLENBQUEsUUFBQSxFQUFVLFVBQVUsQ0FBQSxDQUFBO0FBQUEsS0FDN0U7QUFFQSxJQUFZLFdBQUEsQ0FBQSxZQUFBLENBQWEsQ0FBQyxLQUFVLEtBQUEsSUFBQSxDQUFLLHdCQUF3QixLQUFPLEVBQUEsUUFBQSxFQUFVLFVBQVUsQ0FBQyxDQUFBLENBQUE7QUFBQSxHQUMvRjtBQUFBLEVBUU8sbUNBQW1DLFFBQXlCLEVBQUE7QUFDakUsSUFBQSxJQUFJLFFBQVMsQ0FBQSxpQkFBQSxJQUFxQixRQUFTLENBQUEsaUJBQUEsRUFBcUIsRUFBQTtBQUM5RCxNQUFPLE9BQUEsSUFBQSxDQUFBO0FBQUEsS0FDVDtBQUVBLElBQUksSUFBQSxJQUFBLENBQUssbUJBQW1CLEdBQUksQ0FBQSxRQUFRLEtBQUssSUFBSyxDQUFBLFNBQUEsQ0FBVSxHQUFJLENBQUEsUUFBUSxDQUFHLEVBQUE7QUFDekUsTUFBTyxPQUFBLElBQUEsQ0FBQTtBQUFBLEtBQ1Q7QUFHQSxJQUFPLE9BQUEsVUFBQSxDQUFXLG9DQUFvQyxRQUFRLENBQUEsQ0FBQTtBQUFBLEdBQ2hFO0FBQ0YsQ0FBQTtBQU9BLFNBQVMscUJBQUEsQ0FBc0IsUUFBeUIsRUFBQSxPQUFBLEVBQWlCLEdBQWEsRUFBQTtBQUNwRixFQUFBLElBQUksR0FBSyxFQUFBO0FBQ1AsSUFBQSxhQUFBLENBQWMsb0JBQW9CLENBQVksU0FBQSxFQUFBLFFBQUEsQ0FBUyxLQUFNLENBQUEsSUFBQSxDQUFBLEdBQUEsRUFBVSxXQUFXLEdBQUcsQ0FBQSxDQUFBO0FBQUEsR0FDaEYsTUFBQTtBQUNMLElBQUEsYUFBQSxDQUFjLGtCQUFvQixFQUFBLENBQUEsU0FBQSxFQUFZLFFBQVMsQ0FBQSxLQUFBLENBQU0sVUFBVSxPQUFTLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFBQSxHQUNsRjtBQUNGLENBQUE7QUFFQSxNQUFNLHlDQUF1RixDQUFBO0FBQUEsRUFDcEYsWUFBb0IseUJBQW1GLEVBQUE7QUFBbkYsSUFBQSxJQUFBLENBQUEseUJBQUEsR0FBQSx5QkFBQSxDQUFBO0FBRTNCLElBQVEsSUFBQSxDQUFBLFNBQUEsdUJBQWdCLEdBQVksRUFBQSxDQUFBO0FBQUEsR0FGMkU7QUFBQSxFQUl4RyxRQUF3QixHQUFBO0FBQzdCLElBQUEsT0FBTyxJQUFLLENBQUEsU0FBQSxDQUFBO0FBQUEsR0FDZDtBQUFBLEVBRU8sZ0JBQWdCLElBQXVCLEVBQUE7QUFDNUMsSUFBTyxPQUFBLEtBQUEsQ0FBQTtBQUFBLEdBQ1Q7QUFBQSxFQUVPLHVCQUFBLENBQXdCLFVBQXlCLFVBQTJCLEVBQUE7QUFDakYsSUFBSyxJQUFBLENBQUEseUJBQUEsQ0FBMEIsVUFBVSxVQUFVLENBQUEsQ0FBQTtBQUFBLEdBQ3JEO0FBQ0Y7Ozs7In0=
@@ -0,0 +1,11 @@
1
+ import { BusEventWithPayload } from '@grafana/data';
2
+
3
+ class SceneVariableValueChangedEvent extends BusEventWithPayload {
4
+ }
5
+ SceneVariableValueChangedEvent.type = "scene-variable-changed-value";
6
+ function isCustomVariableValue(value) {
7
+ return typeof value === "object" && "formatter" in value;
8
+ }
9
+
10
+ export { SceneVariableValueChangedEvent, isCustomVariableValue };
11
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy92YXJpYWJsZXMvdHlwZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBCdXNFdmVudFdpdGhQYXlsb2FkIH0gZnJvbSAnQGdyYWZhbmEvZGF0YSc7XG5pbXBvcnQgeyBWYXJpYWJsZVR5cGUsIFZhcmlhYmxlSGlkZSB9IGZyb20gJ0BncmFmYW5hL3NjaGVtYSc7XG5cbmltcG9ydCB7IFNjZW5lT2JqZWN0LCBTY2VuZU9iamVjdFN0YXRlIH0gZnJvbSAnLi4vY29yZS90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NlbmVWYXJpYWJsZVN0YXRlIGV4dGVuZHMgU2NlbmVPYmplY3RTdGF0ZSB7XG4gIHR5cGU6IFZhcmlhYmxlVHlwZTtcbiAgbmFtZTogc3RyaW5nO1xuICBsYWJlbD86IHN0cmluZztcbiAgaGlkZT86IFZhcmlhYmxlSGlkZTtcbiAgc2tpcFVybFN5bmM/OiBib29sZWFuO1xuICBsb2FkaW5nPzogYm9vbGVhbjtcbiAgZXJyb3I/OiBhbnkgfCBudWxsO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZyB8IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NlbmVWYXJpYWJsZTxUU3RhdGUgZXh0ZW5kcyBTY2VuZVZhcmlhYmxlU3RhdGUgPSBTY2VuZVZhcmlhYmxlU3RhdGU+IGV4dGVuZHMgU2NlbmVPYmplY3Q8VFN0YXRlPiB7XG4gIC8qKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbiBhY3RpdmF0aW9uIG9yIHdoZW4gYSBkZXBlbmRlbmN5IGNoYW5nZXMuXG4gICAqL1xuICB2YWxpZGF0ZUFuZFVwZGF0ZT8oKTogT2JzZXJ2YWJsZTxWYWxpZGF0ZUFuZFVwZGF0ZVJlc3VsdD47XG5cbiAgLyoqXG4gICAqIFNob3VsZCByZXR1cm4gdGhlIHZhbHVlIGZvciB0aGUgZ2l2ZW4gZmllbGQgcGF0aFxuICAgKi9cbiAgZ2V0VmFsdWUoZmllbGRQYXRoPzogc3RyaW5nKTogVmFyaWFibGVWYWx1ZSB8IHVuZGVmaW5lZCB8IG51bGw7XG5cbiAgLyoqXG4gICAqIFNob3VsZCByZXR1cm4gdGhlIHZhbHVlIGRpc3BsYXkgdGV4dCwgdXNlZCBieSB0aGUgXCJ0ZXh0XCIgZm9ybWF0dGVyXG4gICAqIEV4YW1wbGU6ICR7cG9kSWQ6dGV4dH1cbiAgICogVXNlZnVsIGZvciB2YXJpYWJsZXMgdGhhdCBoYXZlIG5vbiB1c2VyIGZyaWVuZGx5IHZhbHVlcyBidXQgZnJpZW5kbHkgZGlzcGxheSB0ZXh0IG5hbWVzLlxuICAgKi9cbiAgZ2V0VmFsdWVUZXh0PyhmaWVsZFBhdGg/OiBzdHJpbmcpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEZvciBzcGVjaWFsIGVkZ2UgY2FzZSBzZW5hcmlvcy4gRm9yIGV4YW1wbGUgbG9jYWwgZnVuY3Rpb24gdGhhdCBsb2NhbGx5IHNjb3BlZCB2YXJpYWJsZXMgY2FuIGltcGxlbWVudC5cbiAgICoqL1xuICBpc0FuY2VzdG9yTG9hZGluZz8oKTogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWxsb3dzIGNhbmNlbGxpbmcgdmFyaWFibGUgZXhlY3V0aW9uLlxuICAgKi9cbiAgb25DYW5jZWw/KCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEBleHBlcmltZW50YWxcbiAgICogSW5kaWNhdGVzIHRoYXQgYSB2YXJpYWJsZSBsb2FkcyB2YWx1ZXMgbGF6aWx5IHdoZW4gdXNlciBpbnRlcmFjdHMgd2l0aCB0aGUgdmFyaWFibGUgZHJvcGRvd24uXG4gICAqL1xuICBpc0xhenk/OiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBWYXJpYWJsZVZhbHVlID0gVmFyaWFibGVWYWx1ZVNpbmdsZSB8IFZhcmlhYmxlVmFsdWVTaW5nbGVbXTtcblxuZXhwb3J0IHR5cGUgVmFyaWFibGVWYWx1ZVNpbmdsZSA9IHN0cmluZyB8IGJvb2xlYW4gfCBudW1iZXIgfCBDdXN0b21WYXJpYWJsZVZhbHVlO1xuXG4vKipcbiAqIFRoaXMgaXMgZm9yIGVkZ2UgY2FzZSB2YWx1ZXMgbGlrZSB0aGUgY3VzdG9tIFwiYWxsVmFsdWVcIiB0aGF0IHNob3VsZCBub3QgYmUgZXNjYXBlZC9mb3JtYXR0ZWQgbGlrZSBvdGhlciB2YWx1ZXNcbiAqIFRoZSBjdXN0b20gYWxsIHZhbHVlIHVzdWFsbHkgY29udGFpbiB3aWxkY2FyZHMgdGhhdCBzaG91bGQgbm90IGJlIGVzY2FwZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tVmFyaWFibGVWYWx1ZSB7XG4gIC8qKlxuICAgKiBUaGUgZm9ybWF0IG5hbWUgb3IgZnVuY3Rpb24gdXNlZCBpbiB0aGUgZXhwcmVzc2lvblxuICAgKi9cbiAgZm9ybWF0dGVyKGZvcm1hdE5hbWVPckZuPzogc3RyaW5nIHwgVmFyaWFibGVDdXN0b21Gb3JtYXR0ZXJGbik6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWYWxpZGF0ZUFuZFVwZGF0ZVJlc3VsdCB7fVxuZXhwb3J0IGludGVyZmFjZSBWYXJpYWJsZVZhbHVlT3B0aW9uIHtcbiAgbGFiZWw6IHN0cmluZztcbiAgdmFsdWU6IFZhcmlhYmxlVmFsdWVTaW5nbGU7XG4gIGdyb3VwPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjZW5lVmFyaWFibGVTZXRTdGF0ZSBleHRlbmRzIFNjZW5lT2JqZWN0U3RhdGUge1xuICB2YXJpYWJsZXM6IFNjZW5lVmFyaWFibGVbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY2VuZVZhcmlhYmxlcyBleHRlbmRzIFNjZW5lT2JqZWN0PFNjZW5lVmFyaWFibGVTZXRTdGF0ZT4ge1xuICAvKipcbiAgICogV2lsbCBsb29rIGZvciBhbmQgcmV0dXJuIHZhcmlhYmxlIG1hdGNoaW5nIG5hbWVcbiAgICovXG4gIGdldEJ5TmFtZShuYW1lOiBzdHJpbmcpOiBTY2VuZVZhcmlhYmxlIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogV2lsbCByZXR1cm4gdHJ1ZSBpZiB0aGUgdmFyaWFibGUgaXMgbG9hZGluZyBvciB3YWl0aW5nIGZvciBhbiB1cGRhdGUgdG8gY29tcGxldGUuXG4gICAqL1xuICBpc1ZhcmlhYmxlTG9hZGluZ09yV2FpdGluZ1RvVXBkYXRlKHZhcmlhYmxlOiBTY2VuZVZhcmlhYmxlKTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIFNjZW5lVmFyaWFibGVWYWx1ZUNoYW5nZWRFdmVudCBleHRlbmRzIEJ1c0V2ZW50V2l0aFBheWxvYWQ8U2NlbmVWYXJpYWJsZT4ge1xuICBwdWJsaWMgc3RhdGljIHR5cGUgPSAnc2NlbmUtdmFyaWFibGUtY2hhbmdlZC12YWx1ZSc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NlbmVWYXJpYWJsZURlcGVuZGVuY3lDb25maWdMaWtlIHtcbiAgLyoqIFJldHVybiBhbGwgdmFyaWFibGUgbmFtZXMgdGhpcyBvYmplY3QgZGVwZW5kIG9uICovXG4gIGdldE5hbWVzKCk6IFNldDxzdHJpbmc+O1xuXG4gIC8qKiBVc2VkIHRvIGNoZWNrIGZvciBkZXBlbmRlbmN5IG9uIGEgc3BlY2lmaWMgdmFyaWFibGUgKi9cbiAgaGFzRGVwZW5kZW5jeU9uKG5hbWU6IHN0cmluZyk6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdpbGwgYmUgY2FsbGVkIHdoZW4gdGhlIFZhcmlhYmxlU2V0IGhhdmUgY29tcGxldGVkIGFuIHVwZGF0ZSBwcm9jZXNzIG9yIHdoZW4gYSB2YXJpYWJsZSBoYXMgY2hhbmdlZCB2YWx1ZS5cbiAgICoqL1xuICB2YXJpYWJsZVVwZGF0ZUNvbXBsZXRlZCh2YXJpYWJsZTogU2NlbmVWYXJpYWJsZSwgaGFzQ2hhbmdlZDogYm9vbGVhbik6IHZvaWQ7XG59XG5cbi8qKlxuICogVXNlZCBpbiBDdXN0b21Gb3JtYXR0ZXJGblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEN1c3RvbUZvcm1hdHRlclZhcmlhYmxlIHtcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiBWYXJpYWJsZVR5cGU7XG4gIG11bHRpPzogYm9vbGVhbjtcbiAgaW5jbHVkZUFsbD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIFZhcmlhYmxlQ3VzdG9tRm9ybWF0dGVyRm4gPSAoXG4gIHZhbHVlOiB1bmtub3duLFxuICBsZWdhY3lWYXJpYWJsZU1vZGVsOiBQYXJ0aWFsPEN1c3RvbUZvcm1hdHRlclZhcmlhYmxlPixcbiAgbGVnYWN5RGVmYXVsdEZvcm1hdHRlcj86IFZhcmlhYmxlQ3VzdG9tRm9ybWF0dGVyRm5cbikgPT4gc3RyaW5nO1xuXG5leHBvcnQgdHlwZSBJbnRlcnBvbGF0aW9uRm9ybWF0UGFyYW1ldGVyID0gc3RyaW5nIHwgVmFyaWFibGVDdXN0b21Gb3JtYXR0ZXJGbiB8IHVuZGVmaW5lZDtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ3VzdG9tVmFyaWFibGVWYWx1ZSh2YWx1ZTogVmFyaWFibGVWYWx1ZSk6IHZhbHVlIGlzIEN1c3RvbVZhcmlhYmxlVmFsdWUge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAnZm9ybWF0dGVyJyBpbiB2YWx1ZTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQTBGTyxNQUFNLHVDQUF1QyxtQkFBbUMsQ0FBQTtBQUV2RixDQUFBO0FBRmEsOEJBQUEsQ0FDRyxJQUFPLEdBQUEsOEJBQUEsQ0FBQTtBQWtDaEIsU0FBUyxzQkFBc0IsS0FBb0QsRUFBQTtBQUN4RixFQUFPLE9BQUEsT0FBTyxLQUFVLEtBQUEsUUFBQSxJQUFZLFdBQWUsSUFBQSxLQUFBLENBQUE7QUFDckQ7Ozs7In0=
@@ -0,0 +1,172 @@
1
+ import { isEqual } from 'lodash';
2
+ import { sceneGraph } from '../core/sceneGraph/index.js';
3
+ import { SceneQueryRunner } from '../querying/SceneQueryRunner.js';
4
+ import uFuzzy from '@leeoniya/ufuzzy';
5
+
6
+ function isVariableValueEqual(a, b) {
7
+ if (a === b) {
8
+ return true;
9
+ }
10
+ return isEqual(a, b);
11
+ }
12
+ function safeStringifyValue(value) {
13
+ const getCircularReplacer = () => {
14
+ const seen = /* @__PURE__ */ new WeakSet();
15
+ return (_, value2) => {
16
+ if (typeof value2 === "object" && value2 !== null) {
17
+ if (seen.has(value2)) {
18
+ return;
19
+ }
20
+ seen.add(value2);
21
+ }
22
+ return value2;
23
+ };
24
+ };
25
+ try {
26
+ return JSON.stringify(value, getCircularReplacer());
27
+ } catch (error) {
28
+ console.error(error);
29
+ }
30
+ return "";
31
+ }
32
+ function renderPrometheusLabelFilters(filters) {
33
+ return filters.map((filter) => renderFilter(filter)).join(",");
34
+ }
35
+ function renderFilter(filter) {
36
+ var _a, _b;
37
+ let value = "";
38
+ let operator = filter.operator;
39
+ if (operator === "=|") {
40
+ operator = "=~";
41
+ value = (_a = filter.values) == null ? void 0 : _a.map(escapeLabelValueInRegexSelector).join("|");
42
+ } else if (operator === "!=|") {
43
+ operator = "!~";
44
+ value = (_b = filter.values) == null ? void 0 : _b.map(escapeLabelValueInRegexSelector).join("|");
45
+ } else if (operator === "=~" || operator === "!~") {
46
+ value = escapeLabelValueInRegexSelector(filter.value);
47
+ } else {
48
+ value = escapeLabelValueInExactSelector(filter.value);
49
+ }
50
+ return `${filter.key}${operator}"${value}"`;
51
+ }
52
+ function escapeLabelValueInExactSelector(labelValue) {
53
+ return labelValue.replace(/\\/g, "\\\\").replace(/\n/g, "\\n").replace(/"/g, '\\"');
54
+ }
55
+ function escapeLabelValueInRegexSelector(labelValue) {
56
+ return escapeLabelValueInExactSelector(escapeLokiRegexp(labelValue));
57
+ }
58
+ const RE2_METACHARACTERS = /[*+?()|\\.\[\]{}^$]/g;
59
+ function escapeLokiRegexp(value) {
60
+ return value.replace(RE2_METACHARACTERS, "\\$&");
61
+ }
62
+ function getQueriesForVariables(sourceObject) {
63
+ const runners = sceneGraph.findAllObjects(
64
+ sourceObject.getRoot(),
65
+ (o) => o instanceof SceneQueryRunner
66
+ );
67
+ const applicableRunners = filterOutInactiveRunnerDuplicates(runners).filter((r) => {
68
+ var _a, _b;
69
+ return ((_a = r.state.datasource) == null ? void 0 : _a.uid) === ((_b = sourceObject.state.datasource) == null ? void 0 : _b.uid);
70
+ });
71
+ if (applicableRunners.length === 0) {
72
+ return [];
73
+ }
74
+ const result = [];
75
+ applicableRunners.forEach((r) => {
76
+ result.push(...r.state.queries);
77
+ });
78
+ return result;
79
+ }
80
+ function filterOutInactiveRunnerDuplicates(runners) {
81
+ const groupedItems = {};
82
+ for (const item of runners) {
83
+ if (item.state.key) {
84
+ if (!(item.state.key in groupedItems)) {
85
+ groupedItems[item.state.key] = [];
86
+ }
87
+ groupedItems[item.state.key].push(item);
88
+ }
89
+ }
90
+ return Object.values(groupedItems).flatMap((group) => {
91
+ const activeItems = group.filter((item) => item.isActive);
92
+ if (activeItems.length === 0 && group.length === 1) {
93
+ return group;
94
+ }
95
+ return activeItems;
96
+ });
97
+ }
98
+ function escapeUrlPipeDelimiters(value) {
99
+ if (value === null || value === void 0) {
100
+ return "";
101
+ }
102
+ return value = /\|/g[Symbol.replace](value, "__gfp__");
103
+ }
104
+ function escapeUrlCommaDelimiters(value) {
105
+ if (value === null || value === void 0) {
106
+ return "";
107
+ }
108
+ return /,/g[Symbol.replace](value, "__gfc__");
109
+ }
110
+ function unescapeUrlDelimiters(value) {
111
+ if (value === null || value === void 0) {
112
+ return "";
113
+ }
114
+ value = /__gfp__/g[Symbol.replace](value, "|");
115
+ value = /__gfc__/g[Symbol.replace](value, ",");
116
+ return value;
117
+ }
118
+ function toUrlCommaDelimitedString(key, label) {
119
+ if (!label || key === label) {
120
+ return escapeUrlCommaDelimiters(key);
121
+ }
122
+ return [key, label].map(escapeUrlCommaDelimiters).join(",");
123
+ }
124
+ function dataFromResponse(response) {
125
+ return Array.isArray(response) ? response : response.data;
126
+ }
127
+ function responseHasError(response) {
128
+ return !Array.isArray(response) && Boolean(response.error);
129
+ }
130
+ function handleOptionGroups(values) {
131
+ const result = [];
132
+ const groupedResults = /* @__PURE__ */ new Map();
133
+ for (const value of values) {
134
+ const groupLabel = value.group;
135
+ if (groupLabel) {
136
+ let group = groupedResults.get(groupLabel);
137
+ if (!group) {
138
+ group = [];
139
+ groupedResults.set(groupLabel, group);
140
+ result.push({ label: groupLabel, options: group });
141
+ }
142
+ group.push(value);
143
+ } else {
144
+ result.push(value);
145
+ }
146
+ }
147
+ return result;
148
+ }
149
+ function getFuzzySearcher(haystack, limit = 1e4) {
150
+ const ufuzzy = new uFuzzy();
151
+ const FIRST = Array.from({ length: Math.min(limit, haystack.length) }, (_, i) => i);
152
+ return (search) => {
153
+ if (search === "") {
154
+ return FIRST;
155
+ }
156
+ const [idxs, info, order] = ufuzzy.search(haystack, search);
157
+ if (idxs) {
158
+ if (info && order) {
159
+ const outIdxs = Array(Math.min(order.length, limit));
160
+ for (let i = 0; i < outIdxs.length; i++) {
161
+ outIdxs[i] = info.idx[order[i]];
162
+ }
163
+ return outIdxs;
164
+ }
165
+ return idxs.slice(0, limit);
166
+ }
167
+ return [];
168
+ };
169
+ }
170
+
171
+ export { dataFromResponse, escapeLabelValueInExactSelector, escapeLabelValueInRegexSelector, escapeUrlCommaDelimiters, escapeUrlPipeDelimiters, getFuzzySearcher, getQueriesForVariables, handleOptionGroups, isVariableValueEqual, renderPrometheusLabelFilters, responseHasError, safeStringifyValue, toUrlCommaDelimitedString, unescapeUrlDelimiters };
172
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy92YXJpYWJsZXMvdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNFcXVhbCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBWYXJpYWJsZVZhbHVlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBBZEhvY1ZhcmlhYmxlRmlsdGVyLCBEYXRhUXVlcnlFcnJvciwgR2V0VGFnUmVzcG9uc2UsIE1ldHJpY0ZpbmRWYWx1ZSwgU2VsZWN0YWJsZVZhbHVlIH0gZnJvbSAnQGdyYWZhbmEvZGF0YSc7XG5pbXBvcnQgeyBzY2VuZUdyYXBoIH0gZnJvbSAnLi4vY29yZS9zY2VuZUdyYXBoJztcbmltcG9ydCB7IFNjZW5lRGF0YVF1ZXJ5LCBTY2VuZU9iamVjdCwgU2NlbmVPYmplY3RTdGF0ZSB9IGZyb20gJy4uL2NvcmUvdHlwZXMnO1xuaW1wb3J0IHsgU2NlbmVRdWVyeVJ1bm5lciB9IGZyb20gJy4uL3F1ZXJ5aW5nL1NjZW5lUXVlcnlSdW5uZXInO1xuaW1wb3J0IHsgRGF0YVNvdXJjZVJlZiB9IGZyb20gJ0BncmFmYW5hL3NjaGVtYSc7XG5pbXBvcnQgdUZ1enp5IGZyb20gJ0BsZWVvbml5YS91ZnV6enknO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNWYXJpYWJsZVZhbHVlRXF1YWwoYTogVmFyaWFibGVWYWx1ZSB8IG51bGwgfCB1bmRlZmluZWQsIGI6IFZhcmlhYmxlVmFsdWUgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gIGlmIChhID09PSBiKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gaXNFcXVhbChhLCBiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNhZmVTdHJpbmdpZnlWYWx1ZSh2YWx1ZTogdW5rbm93bikge1xuICAvLyBBdm9pZCBjaXJjdWxhciByZWZlcmVuY2VzIGlnbm9yaW5nIHRob3NlIHJlZmVyZW5jZXNcbiAgY29uc3QgZ2V0Q2lyY3VsYXJSZXBsYWNlciA9ICgpID0+IHtcbiAgICBjb25zdCBzZWVuID0gbmV3IFdlYWtTZXQoKTtcbiAgICByZXR1cm4gKF86IHN0cmluZywgdmFsdWU6IG9iamVjdCB8IG51bGwpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgIGlmIChzZWVuLmhhcyh2YWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc2Vlbi5hZGQodmFsdWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH07XG4gIH07XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUsIGdldENpcmN1bGFyUmVwbGFjZXIoKSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gIH1cblxuICByZXR1cm4gJyc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJQcm9tZXRoZXVzTGFiZWxGaWx0ZXJzKGZpbHRlcnM6IEFkSG9jVmFyaWFibGVGaWx0ZXJbXSkge1xuICByZXR1cm4gZmlsdGVycy5tYXAoKGZpbHRlcikgPT4gcmVuZGVyRmlsdGVyKGZpbHRlcikpLmpvaW4oJywnKTtcbn1cblxuZnVuY3Rpb24gcmVuZGVyRmlsdGVyKGZpbHRlcjogQWRIb2NWYXJpYWJsZUZpbHRlcikge1xuICBsZXQgdmFsdWUgPSAnJztcbiAgbGV0IG9wZXJhdG9yID0gZmlsdGVyLm9wZXJhdG9yO1xuXG4gIC8vIG1hcCBcIm9uZSBvZlwiIG9wZXJhdG9yIHRvIHJlZ2V4XG4gIGlmIChvcGVyYXRvciA9PT0gJz18Jykge1xuICAgIG9wZXJhdG9yID0gJz1+JztcbiAgICAvLyBUT0RPIHJlbW92ZSB3aGVuIHdlJ3JlIG9uIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBAZ3JhZmFuYS9kYXRhXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIHZhbHVlID0gZmlsdGVyLnZhbHVlcz8ubWFwKGVzY2FwZUxhYmVsVmFsdWVJblJlZ2V4U2VsZWN0b3IpLmpvaW4oJ3wnKTtcbiAgfSBlbHNlIGlmIChvcGVyYXRvciA9PT0gJyE9fCcpIHtcbiAgICBvcGVyYXRvciA9ICchfic7XG4gICAgLy8gVE9ETyByZW1vdmUgd2hlbiB3ZSdyZSBvbiB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgQGdyYWZhbmEvZGF0YVxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICB2YWx1ZSA9IGZpbHRlci52YWx1ZXM/Lm1hcChlc2NhcGVMYWJlbFZhbHVlSW5SZWdleFNlbGVjdG9yKS5qb2luKCd8Jyk7XG4gIH0gZWxzZSBpZiAob3BlcmF0b3IgPT09ICc9ficgfHwgb3BlcmF0b3IgPT09ICchficpIHtcbiAgICB2YWx1ZSA9IGVzY2FwZUxhYmVsVmFsdWVJblJlZ2V4U2VsZWN0b3IoZmlsdGVyLnZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICB2YWx1ZSA9IGVzY2FwZUxhYmVsVmFsdWVJbkV4YWN0U2VsZWN0b3IoZmlsdGVyLnZhbHVlKTtcbiAgfVxuXG4gIHJldHVybiBgJHtmaWx0ZXIua2V5fSR7b3BlcmF0b3J9XCIke3ZhbHVlfVwiYDtcbn1cblxuLy8gYmFzZWQgb24gdGhlIG9wZW5tZXRyaWNzLWRvY3VtZW50YXRpb24sIHRoZSAzIHN5bWJvbHMgd2UgaGF2ZSB0byBoYW5kbGUgYXJlOlxuLy8gLSBcXG4gLi4uIHRoZSBuZXdsaW5lIGNoYXJhY3RlclxuLy8gLSBcXCAgLi4uIHRoZSBiYWNrc2xhc2ggY2hhcmFjdGVyXG4vLyAtIFwiICAuLi4gdGhlIGRvdWJsZS1xdW90ZSBjaGFyYWN0ZXJcbmV4cG9ydCBmdW5jdGlvbiBlc2NhcGVMYWJlbFZhbHVlSW5FeGFjdFNlbGVjdG9yKGxhYmVsVmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBsYWJlbFZhbHVlLnJlcGxhY2UoL1xcXFwvZywgJ1xcXFxcXFxcJykucmVwbGFjZSgvXFxuL2csICdcXFxcbicpLnJlcGxhY2UoL1wiL2csICdcXFxcXCInKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwZUxhYmVsVmFsdWVJblJlZ2V4U2VsZWN0b3IobGFiZWxWYWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGVzY2FwZUxhYmVsVmFsdWVJbkV4YWN0U2VsZWN0b3IoZXNjYXBlTG9raVJlZ2V4cChsYWJlbFZhbHVlKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1JlZ2V4U2VsZWN0b3Ioc2VsZWN0b3I/OiBzdHJpbmcpIHtcbiAgaWYgKHNlbGVjdG9yICYmIChzZWxlY3Rvci5pbmNsdWRlcygnPX4nKSB8fCBzZWxlY3Rvci5pbmNsdWRlcygnIX4nKSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8vIExva2kgcmVndWxhci1leHByZXNzaW9ucyB1c2UgdGhlIFJFMiBzeW50YXggKGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvcmUyL3dpa2kvU3ludGF4KSxcbi8vIHNvIGV2ZXJ5IGNoYXJhY3RlciB0aGF0IG1hdGNoZXMgc29tZXRoaW5nIGluIHRoYXQgbGlzdCBoYXMgdG8gYmUgZXNjYXBlZC5cbi8vIHRoZSBsaXN0IG9mIG1ldGEgY2hhcmFjdGVycyBpczogKis/KCl8XFwuW117fV4kXG4vLyB3ZSBtYWtlIGEgamF2YXNjcmlwdCByZWd1bGFyIGV4cHJlc3Npb24gdGhhdCBtYXRjaGVzIHRob3NlIGNoYXJhY3RlcnM6XG5jb25zdCBSRTJfTUVUQUNIQVJBQ1RFUlMgPSAvWyorPygpfFxcXFwuXFxbXFxde31eJF0vZztcbmZ1bmN0aW9uIGVzY2FwZUxva2lSZWdleHAodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB2YWx1ZS5yZXBsYWNlKFJFMl9NRVRBQ0hBUkFDVEVSUywgJ1xcXFwkJicpO1xufVxuXG4vKipcbiAqIEdldCBhbGwgcXVlcmllcyBpbiB0aGUgc2NlbmUgdGhhdCBoYXZlIHRoZSBzYW1lIGRhdGFzb3VyY2UgYXMgcHJvdmlkZWQgc291cmNlIG9iamVjdFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UXVlcmllc0ZvclZhcmlhYmxlcyhcbiAgc291cmNlT2JqZWN0OiBTY2VuZU9iamVjdDxTY2VuZU9iamVjdFN0YXRlICYgeyBkYXRhc291cmNlOiBEYXRhU291cmNlUmVmIHwgbnVsbCB9PlxuKSB7XG4gIGNvbnN0IHJ1bm5lcnMgPSBzY2VuZUdyYXBoLmZpbmRBbGxPYmplY3RzKFxuICAgIHNvdXJjZU9iamVjdC5nZXRSb290KCksXG4gICAgKG8pID0+IG8gaW5zdGFuY2VvZiBTY2VuZVF1ZXJ5UnVubmVyXG4gICkgYXMgU2NlbmVRdWVyeVJ1bm5lcltdO1xuXG4gIGNvbnN0IGFwcGxpY2FibGVSdW5uZXJzID0gZmlsdGVyT3V0SW5hY3RpdmVSdW5uZXJEdXBsaWNhdGVzKHJ1bm5lcnMpLmZpbHRlcigocikgPT4ge1xuICAgIHJldHVybiByLnN0YXRlLmRhdGFzb3VyY2U/LnVpZCA9PT0gc291cmNlT2JqZWN0LnN0YXRlLmRhdGFzb3VyY2U/LnVpZDtcbiAgfSk7XG5cbiAgaWYgKGFwcGxpY2FibGVSdW5uZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdDogU2NlbmVEYXRhUXVlcnlbXSA9IFtdO1xuICBhcHBsaWNhYmxlUnVubmVycy5mb3JFYWNoKChyKSA9PiB7XG4gICAgcmVzdWx0LnB1c2goLi4uci5zdGF0ZS5xdWVyaWVzKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8gRmlsdGVycyBvdXQgaW5hY3RpdmUgcnVubmVyIGR1cGxpY2F0ZXMsIGtlZXBpbmcgb25seSB0aGUgb25lcyB0aGF0IGFyZSBjdXJyZW50bHkgYWN0aXZlLlxuLy8gVGhpcyBpcyBuZWVkZWQgZm9yIHNjbmVhcmlvcyB3aGFuIGEgcXVlcnkgcnVubmVyIGlzIGNsb25lZCBhbmQgdGhlIG9yaWdpbmFsIGlzIG5vdCByZW1vdmVkIGJ1dCBkZS1hY3RpdmF0ZWQuXG4vLyBDYW4gaGFwcGVuIGkuZS4gd2hlbiBlZGl0aW5nIGEgcGFuZWwgaW4gR3JhZmFuYSBDb3JlIGRhc2hib2FyZHMuXG5mdW5jdGlvbiBmaWx0ZXJPdXRJbmFjdGl2ZVJ1bm5lckR1cGxpY2F0ZXMocnVubmVyczogU2NlbmVRdWVyeVJ1bm5lcltdKSB7XG4gIC8vIEdyb3VwIGl0ZW1zIGJ5IGtleVxuICBjb25zdCBncm91cGVkSXRlbXM6IHsgW2tleTogc3RyaW5nXTogU2NlbmVRdWVyeVJ1bm5lcltdIH0gPSB7fTtcblxuICBmb3IgKGNvbnN0IGl0ZW0gb2YgcnVubmVycykge1xuICAgIGlmIChpdGVtLnN0YXRlLmtleSkge1xuICAgICAgaWYgKCEoaXRlbS5zdGF0ZS5rZXkgaW4gZ3JvdXBlZEl0ZW1zKSkge1xuICAgICAgICBncm91cGVkSXRlbXNbaXRlbS5zdGF0ZS5rZXldID0gW107XG4gICAgICB9XG4gICAgICBncm91cGVkSXRlbXNbaXRlbS5zdGF0ZS5rZXldLnB1c2goaXRlbSk7XG4gICAgfVxuICB9XG5cbiAgLy8gRmlsdGVyIG91dCBpbmFjdGl2ZSBpdGVtcyBhbmQgY29uY2F0ZW5hdGUgYWN0aXZlIGl0ZW1zXG4gIHJldHVybiBPYmplY3QudmFsdWVzKGdyb3VwZWRJdGVtcykuZmxhdE1hcCgoZ3JvdXApID0+IHtcbiAgICBjb25zdCBhY3RpdmVJdGVtcyA9IGdyb3VwLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5pc0FjdGl2ZSk7XG4gICAgLy8gS2VlcCBpbmFjdGl2ZSBpdGVtcyBpZiB0aGVyZSdzIG9ubHkgb25lIGl0ZW0gd2l0aCB0aGUga2V5XG4gICAgaWYgKGFjdGl2ZUl0ZW1zLmxlbmd0aCA9PT0gMCAmJiBncm91cC5sZW5ndGggPT09IDEpIHtcbiAgICAgIHJldHVybiBncm91cDtcbiAgICB9XG4gICAgcmV0dXJuIGFjdGl2ZUl0ZW1zO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwZVVybFBpcGVEZWxpbWl0ZXJzKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIC8vIFJlcGxhY2UgdGhlIHBpcGUgZHVlIHRvIHVzaW5nIGl0IGFzIGEgZmlsdGVyIHNlcGFyYXRvclxuICByZXR1cm4gKHZhbHVlID0gL1xcfC9nW1N5bWJvbC5yZXBsYWNlXSh2YWx1ZSwgJ19fZ2ZwX18nKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlc2NhcGVVcmxDb21tYURlbGltaXRlcnModmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgLy8gUmVwbGFjZSB0aGUgY29tbWEgZHVlIHRvIHVzaW5nIGl0IGFzIGEgdmFsdWUvbGFiZWwgc2VwYXJhdG9yXG4gIHJldHVybiAvLC9nW1N5bWJvbC5yZXBsYWNlXSh2YWx1ZSwgJ19fZ2ZjX18nKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVuZXNjYXBlVXJsRGVsaW1pdGVycyh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcbiAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICB2YWx1ZSA9IC9fX2dmcF9fL2dbU3ltYm9sLnJlcGxhY2VdKHZhbHVlLCAnfCcpO1xuICB2YWx1ZSA9IC9fX2dmY19fL2dbU3ltYm9sLnJlcGxhY2VdKHZhbHVlLCAnLCcpO1xuXG4gIHJldHVybiB2YWx1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvVXJsQ29tbWFEZWxpbWl0ZWRTdHJpbmcoa2V5OiBzdHJpbmcsIGxhYmVsPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgLy8gT21pdCBmb3IgaWRlbnRpY2FsIGtleS9sYWJlbCBvciB3aGVuIGxhYmVsIGlzIG5vdCBzZXQgYXQgYWxsXG4gIGlmICghbGFiZWwgfHwga2V5ID09PSBsYWJlbCkge1xuICAgIHJldHVybiBlc2NhcGVVcmxDb21tYURlbGltaXRlcnMoa2V5KTtcbiAgfVxuXG4gIHJldHVybiBba2V5LCBsYWJlbF0ubWFwKGVzY2FwZVVybENvbW1hRGVsaW1pdGVycykuam9pbignLCcpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0YUZyb21SZXNwb25zZShyZXNwb25zZTogR2V0VGFnUmVzcG9uc2UgfCBNZXRyaWNGaW5kVmFsdWVbXSkge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShyZXNwb25zZSkgPyByZXNwb25zZSA6IHJlc3BvbnNlLmRhdGE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNwb25zZUhhc0Vycm9yKFxuICByZXNwb25zZTogR2V0VGFnUmVzcG9uc2UgfCBNZXRyaWNGaW5kVmFsdWVbXVxuKTogcmVzcG9uc2UgaXMgR2V0VGFnUmVzcG9uc2UgJiB7IGVycm9yOiBEYXRhUXVlcnlFcnJvciB9IHtcbiAgcmV0dXJuICFBcnJheS5pc0FycmF5KHJlc3BvbnNlKSAmJiBCb29sZWFuKHJlc3BvbnNlLmVycm9yKTtcbn1cblxuLy8gQ29sbGVjdCBhIGZsYXQgbGlzdCBvZiBTZWxlY3RhYmxlVmFsdWVzIHdpdGggYSBgZ3JvdXBgIHByb3BlcnR5IGludG8gYSBoaWVyYXJjaGljYWwgbGlzdCB3aXRoIGdyb3Vwc1xuZXhwb3J0IGZ1bmN0aW9uIGhhbmRsZU9wdGlvbkdyb3Vwcyh2YWx1ZXM6IFNlbGVjdGFibGVWYWx1ZVtdKTogQXJyYXk8U2VsZWN0YWJsZVZhbHVlPHN0cmluZz4+IHtcbiAgY29uc3QgcmVzdWx0OiBBcnJheTxTZWxlY3RhYmxlVmFsdWU8c3RyaW5nPj4gPSBbXTtcbiAgY29uc3QgZ3JvdXBlZFJlc3VsdHMgPSBuZXcgTWFwPHN0cmluZywgQXJyYXk8U2VsZWN0YWJsZVZhbHVlPHN0cmluZz4+PigpO1xuXG4gIGZvciAoY29uc3QgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgY29uc3QgZ3JvdXBMYWJlbCA9IHZhbHVlLmdyb3VwO1xuICAgIGlmIChncm91cExhYmVsKSB7XG4gICAgICBsZXQgZ3JvdXAgPSBncm91cGVkUmVzdWx0cy5nZXQoZ3JvdXBMYWJlbCk7XG5cbiAgICAgIGlmICghZ3JvdXApIHtcbiAgICAgICAgZ3JvdXAgPSBbXTtcbiAgICAgICAgZ3JvdXBlZFJlc3VsdHMuc2V0KGdyb3VwTGFiZWwsIGdyb3VwKTtcbiAgICAgICAgcmVzdWx0LnB1c2goeyBsYWJlbDogZ3JvdXBMYWJlbCwgb3B0aW9uczogZ3JvdXAgfSk7XG4gICAgICB9XG5cbiAgICAgIGdyb3VwLnB1c2godmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZ1enp5U2VhcmNoZXIoaGF5c3RhY2s6IHN0cmluZ1tdLCBsaW1pdCA9IDEwXzAwMCkge1xuICBjb25zdCB1ZnV6enkgPSBuZXcgdUZ1enp5KCk7XG5cbiAgY29uc3QgRklSU1QgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiBNYXRoLm1pbihsaW1pdCwgaGF5c3RhY2subGVuZ3RoKSB9LCAoXywgaSkgPT4gaSk7XG5cbiAgLy8gcmV0dXJucyBtYXRjaGVkIGluZGljZXMgYnkgcXVhbGl0eVxuICByZXR1cm4gKHNlYXJjaDogc3RyaW5nKTogbnVtYmVyW10gPT4ge1xuICAgIGlmIChzZWFyY2ggPT09ICcnKSB7XG4gICAgICByZXR1cm4gRklSU1Q7XG4gICAgfVxuXG4gICAgY29uc3QgW2lkeHMsIGluZm8sIG9yZGVyXSA9IHVmdXp6eS5zZWFyY2goaGF5c3RhY2ssIHNlYXJjaCk7XG5cbiAgICBpZiAoaWR4cykge1xuICAgICAgaWYgKGluZm8gJiYgb3JkZXIpIHtcbiAgICAgICAgY29uc3Qgb3V0SWR4cyA9IEFycmF5KE1hdGgubWluKG9yZGVyLmxlbmd0aCwgbGltaXQpKTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG91dElkeHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBvdXRJZHhzW2ldID0gaW5mby5pZHhbb3JkZXJbaV1dO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG91dElkeHM7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpZHhzLnNsaWNlKDAsIGxpbWl0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gW107XG4gIH07XG59XG4iXSwibmFtZXMiOlsidmFsdWUiXSwibWFwcGluZ3MiOiI7Ozs7O0FBU2dCLFNBQUEsb0JBQUEsQ0FBcUIsR0FBcUMsQ0FBcUMsRUFBQTtBQUM3RyxFQUFBLElBQUksTUFBTSxDQUFHLEVBQUE7QUFDWCxJQUFPLE9BQUEsSUFBQSxDQUFBO0FBQUEsR0FDVDtBQUVBLEVBQU8sT0FBQSxPQUFBLENBQVEsR0FBRyxDQUFDLENBQUEsQ0FBQTtBQUNyQixDQUFBO0FBRU8sU0FBUyxtQkFBbUIsS0FBZ0IsRUFBQTtBQUVqRCxFQUFBLE1BQU0sc0JBQXNCLE1BQU07QUFDaEMsSUFBTSxNQUFBLElBQUEsdUJBQVcsT0FBUSxFQUFBLENBQUE7QUFDekIsSUFBTyxPQUFBLENBQUMsR0FBV0EsTUFBeUIsS0FBQTtBQUMxQyxNQUFBLElBQUksT0FBT0EsTUFBQUEsS0FBVSxRQUFZQSxJQUFBQSxNQUFBQSxLQUFVLElBQU0sRUFBQTtBQUMvQyxRQUFJLElBQUEsSUFBQSxDQUFLLEdBQUlBLENBQUFBLE1BQUssQ0FBRyxFQUFBO0FBQ25CLFVBQUEsT0FBQTtBQUFBLFNBQ0Y7QUFDQSxRQUFBLElBQUEsQ0FBSyxJQUFJQSxNQUFLLENBQUEsQ0FBQTtBQUFBLE9BQ2hCO0FBQ0EsTUFBT0EsT0FBQUEsTUFBQUEsQ0FBQUE7QUFBQSxLQUNULENBQUE7QUFBQSxHQUNGLENBQUE7QUFFQSxFQUFJLElBQUE7QUFDRixJQUFBLE9BQU8sSUFBSyxDQUFBLFNBQUEsQ0FBVSxLQUFPLEVBQUEsbUJBQUEsRUFBcUIsQ0FBQSxDQUFBO0FBQUEsV0FDM0MsS0FBUCxFQUFBO0FBQ0EsSUFBQSxPQUFBLENBQVEsTUFB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
@@ -0,0 +1,38 @@
1
+ import { SceneObjectBase } from '../../core/SceneObjectBase.js';
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __defProps = Object.defineProperties;
5
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
6
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
9
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10
+ var __spreadValues = (a, b) => {
11
+ for (var prop in b || (b = {}))
12
+ if (__hasOwnProp.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ if (__getOwnPropSymbols)
15
+ for (var prop of __getOwnPropSymbols(b)) {
16
+ if (__propIsEnum.call(b, prop))
17
+ __defNormalProp(a, prop, b[prop]);
18
+ }
19
+ return a;
20
+ };
21
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
22
+ class ConstantVariable extends SceneObjectBase {
23
+ constructor(initialState) {
24
+ super(__spreadProps(__spreadValues({
25
+ type: "constant",
26
+ value: "",
27
+ name: ""
28
+ }, initialState), {
29
+ skipUrlSync: true
30
+ }));
31
+ }
32
+ getValue() {
33
+ return this.state.value;
34
+ }
35
+ }
36
+
37
+ export { ConstantVariable };
38
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uc3RhbnRWYXJpYWJsZS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3ZhcmlhYmxlcy92YXJpYW50cy9Db25zdGFudFZhcmlhYmxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNjZW5lT2JqZWN0QmFzZSB9IGZyb20gJy4uLy4uL2NvcmUvU2NlbmVPYmplY3RCYXNlJztcbmltcG9ydCB7IFNjZW5lVmFyaWFibGUsIFNjZW5lVmFyaWFibGVTdGF0ZSwgVmFyaWFibGVWYWx1ZSB9IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBDb25zdGFudFZhcmlhYmxlU3RhdGUgZXh0ZW5kcyBTY2VuZVZhcmlhYmxlU3RhdGUge1xuICB2YWx1ZTogVmFyaWFibGVWYWx1ZTtcbn1cblxuZXhwb3J0IGNsYXNzIENvbnN0YW50VmFyaWFibGVcbiAgZXh0ZW5kcyBTY2VuZU9iamVjdEJhc2U8Q29uc3RhbnRWYXJpYWJsZVN0YXRlPlxuICBpbXBsZW1lbnRzIFNjZW5lVmFyaWFibGU8Q29uc3RhbnRWYXJpYWJsZVN0YXRlPlxue1xuICBwdWJsaWMgY29uc3RydWN0b3IoaW5pdGlhbFN0YXRlOiBQYXJ0aWFsPENvbnN0YW50VmFyaWFibGVTdGF0ZT4pIHtcbiAgICBzdXBlcih7XG4gICAgICB0eXBlOiAnY29uc3RhbnQnLFxuICAgICAgdmFsdWU6ICcnLFxuICAgICAgbmFtZTogJycsXG4gICAgICAuLi5pbml0aWFsU3RhdGUsXG4gICAgICBza2lwVXJsU3luYzogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRWYWx1ZSgpOiBWYXJpYWJsZVZhbHVlIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZS52YWx1ZTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU9PLE1BQU0seUJBQ0gsZUFFVixDQUFBO0FBQUEsRUFDUyxZQUFZLFlBQThDLEVBQUE7QUFDL0QsSUFBTSxLQUFBLENBQUEsYUFBQSxDQUFBLGNBQUEsQ0FBQTtBQUFBLE1BQ0osSUFBTSxFQUFBLFVBQUE7QUFBQSxNQUNOLEtBQU8sRUFBQSxFQUFBO0FBQUEsTUFDUCxJQUFNLEVBQUEsRUFBQTtBQUFBLEtBQUEsRUFDSCxZQUpDLENBQUEsRUFBQTtBQUFBLE1BS0osV0FBYSxFQUFBLElBQUE7QUFBQSxLQUNkLENBQUEsQ0FBQSxDQUFBO0FBQUEsR0FDSDtBQUFBLEVBRU8sUUFBMEIsR0FBQTtBQUMvQixJQUFBLE9BQU8sS0FBSyxLQUFNLENBQUEsS0FBQSxDQUFBO0FBQUEsR0FDcEI7QUFDRjs7OzsifQ==