@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,289 @@
1
+ import React from 'react';
2
+ import { SceneObjectBase } from '../../core/SceneObjectBase.js';
3
+ import { SceneVariableValueChangedEvent } from '../types.js';
4
+ import { dataFromResponse, getQueriesForVariables, responseHasError, renderPrometheusLabelFilters } from '../utils.js';
5
+ import { patchGetAdhocFilters } from './patchGetAdhocFilters.js';
6
+ import { useStyles2 } from '@grafana/ui';
7
+ import { sceneGraph } from '../../core/sceneGraph/index.js';
8
+ import { AdHocFilterBuilder } from './AdHocFilterBuilder.js';
9
+ import { AdHocFilterRenderer } from './AdHocFilterRenderer.js';
10
+ import { getDataSourceSrv } from '@grafana/runtime';
11
+ import { AdHocFiltersVariableUrlSyncHandler } from './AdHocFiltersVariableUrlSyncHandler.js';
12
+ import { css } from '@emotion/css';
13
+ import { getEnrichedFiltersRequest } from '../getEnrichedFiltersRequest.js';
14
+ import { AdHocFiltersComboboxRenderer } from './AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js';
15
+ import { wrapInSafeSerializableSceneObject } from '../../utils/wrapInSafeSerializableSceneObject.js';
16
+
17
+ var __defProp = Object.defineProperty;
18
+ var __defProps = Object.defineProperties;
19
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
20
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
21
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
22
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
23
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
24
+ var __spreadValues = (a, b) => {
25
+ for (var prop in b || (b = {}))
26
+ if (__hasOwnProp.call(b, prop))
27
+ __defNormalProp(a, prop, b[prop]);
28
+ if (__getOwnPropSymbols)
29
+ for (var prop of __getOwnPropSymbols(b)) {
30
+ if (__propIsEnum.call(b, prop))
31
+ __defNormalProp(a, prop, b[prop]);
32
+ }
33
+ return a;
34
+ };
35
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
36
+ const OPERATORS = [
37
+ {
38
+ value: "=",
39
+ description: "Equals"
40
+ },
41
+ {
42
+ value: "!=",
43
+ description: "Not equal"
44
+ },
45
+ {
46
+ value: "=|",
47
+ description: "One of. Use to filter on multiple values.",
48
+ isMulti: true
49
+ },
50
+ {
51
+ value: "!=|",
52
+ description: "Not one of. Use to exclude multiple values.",
53
+ isMulti: true
54
+ },
55
+ {
56
+ value: "=~",
57
+ description: "Matches regex"
58
+ },
59
+ {
60
+ value: "!~",
61
+ description: "Does not match regex"
62
+ },
63
+ {
64
+ value: "<",
65
+ description: "Less than"
66
+ },
67
+ {
68
+ value: ">",
69
+ description: "Greater than"
70
+ }
71
+ ];
72
+ class AdHocFiltersVariable extends SceneObjectBase {
73
+ constructor(state) {
74
+ var _a, _b;
75
+ super(__spreadValues({
76
+ type: "adhoc",
77
+ name: (_a = state.name) != null ? _a : "Filters",
78
+ filters: [],
79
+ datasource: null,
80
+ applyMode: "auto",
81
+ filterExpression: (_b = state.filterExpression) != null ? _b : renderExpression(state.expressionBuilder, state.filters)
82
+ }, state));
83
+ this._scopedVars = { __sceneObject: wrapInSafeSerializableSceneObject(this) };
84
+ this._dataSourceSrv = getDataSourceSrv();
85
+ this._urlSync = new AdHocFiltersVariableUrlSyncHandler(this);
86
+ if (this.state.applyMode === "auto") {
87
+ patchGetAdhocFilters(this);
88
+ }
89
+ }
90
+ setState(update) {
91
+ let filterExpressionChanged = false;
92
+ if (update.filters && update.filters !== this.state.filters && !update.filterExpression) {
93
+ update.filterExpression = renderExpression(this.state.expressionBuilder, update.filters);
94
+ filterExpressionChanged = update.filterExpression !== this.state.filterExpression;
95
+ }
96
+ super.setState(update);
97
+ if (filterExpressionChanged) {
98
+ this.publishEvent(new SceneVariableValueChangedEvent(this), true);
99
+ }
100
+ }
101
+ getValue() {
102
+ return this.state.filterExpression;
103
+ }
104
+ _updateFilter(filter, update) {
105
+ const { filters, _wip } = this.state;
106
+ if (filter === _wip) {
107
+ if ("value" in update && update["value"] !== "") {
108
+ this.setState({ filters: [...filters, __spreadValues(__spreadValues({}, _wip), update)], _wip: void 0 });
109
+ } else {
110
+ this.setState({ _wip: __spreadValues(__spreadValues({}, filter), update) });
111
+ }
112
+ return;
113
+ }
114
+ const updatedFilters = this.state.filters.map((f) => {
115
+ return f === filter ? __spreadValues(__spreadValues({}, f), update) : f;
116
+ });
117
+ this.setState({ filters: updatedFilters });
118
+ }
119
+ _removeFilter(filter) {
120
+ if (filter === this.state._wip) {
121
+ this.setState({ _wip: void 0 });
122
+ return;
123
+ }
124
+ this.setState({ filters: this.state.filters.filter((f) => f !== filter) });
125
+ }
126
+ _removeLastFilter() {
127
+ const filterToRemove = this.state.filters.at(-1);
128
+ if (filterToRemove) {
129
+ this._removeFilter(filterToRemove);
130
+ }
131
+ }
132
+ _handleComboboxBackspace(filter) {
133
+ if (this.state.filters.length) {
134
+ let filterToForceIndex = this.state.filters.length - 1;
135
+ if (filter !== this.state._wip) {
136
+ filterToForceIndex = -1;
137
+ }
138
+ this.setState({
139
+ filters: this.state.filters.reduce((acc, f, index) => {
140
+ if (index === filterToForceIndex) {
141
+ return [
142
+ ...acc,
143
+ __spreadProps(__spreadValues({}, f), {
144
+ forceEdit: true
145
+ })
146
+ ];
147
+ }
148
+ if (f === filter) {
149
+ return acc;
150
+ }
151
+ return [...acc, f];
152
+ }, [])
153
+ });
154
+ }
155
+ }
156
+ async _getKeys(currentKey) {
157
+ var _a, _b, _c;
158
+ const override = await ((_b = (_a = this.state).getTagKeysProvider) == null ? void 0 : _b.call(_a, this, currentKey));
159
+ if (override && override.replace) {
160
+ return dataFromResponse(override.values).map(toSelectableValue);
161
+ }
162
+ if (this.state.defaultKeys) {
163
+ return this.state.defaultKeys.map(toSelectableValue);
164
+ }
165
+ const ds = await this._dataSourceSrv.get(this.state.datasource, this._scopedVars);
166
+ if (!ds || !ds.getTagKeys) {
167
+ return [];
168
+ }
169
+ const otherFilters = this.state.filters.filter((f) => f.key !== currentKey).concat((_c = this.state.baseFilters) != null ? _c : []);
170
+ const timeRange = sceneGraph.getTimeRange(this).state.value;
171
+ const queries = this.state.useQueriesAsFilterForOptions ? getQueriesForVariables(this) : void 0;
172
+ const response = await ds.getTagKeys(__spreadValues({
173
+ filters: otherFilters,
174
+ queries,
175
+ timeRange
176
+ }, getEnrichedFiltersRequest(this)));
177
+ if (responseHasError(response)) {
178
+ this.setState({ error: response.error.message });
179
+ }
180
+ let keys = dataFromResponse(response);
181
+ if (override) {
182
+ keys = keys.concat(dataFromResponse(override.values));
183
+ }
184
+ const tagKeyRegexFilter = this.state.tagKeyRegexFilter;
185
+ if (tagKeyRegexFilter) {
186
+ keys = keys.filter((f) => f.text.match(tagKeyRegexFilter));
187
+ }
188
+ return keys.map(toSelectableValue);
189
+ }
190
+ async _getValuesFor(filter) {
191
+ var _a, _b, _c;
192
+ const override = await ((_b = (_a = this.state).getTagValuesProvider) == null ? void 0 : _b.call(_a, this, filter));
193
+ if (override && override.replace) {
194
+ return dataFromResponse(override.values).map(toSelectableValue);
195
+ }
196
+ const ds = await this._dataSourceSrv.get(this.state.datasource, this._scopedVars);
197
+ if (!ds || !ds.getTagValues) {
198
+ return [];
199
+ }
200
+ const otherFilters = this.state.filters.filter((f) => f.key !== filter.key).concat((_c = this.state.baseFilters) != null ? _c : []);
201
+ const timeRange = sceneGraph.getTimeRange(this).state.value;
202
+ const queries = this.state.useQueriesAsFilterForOptions ? getQueriesForVariables(this) : void 0;
203
+ const response = await ds.getTagValues(__spreadValues({
204
+ key: filter.key,
205
+ filters: otherFilters,
206
+ timeRange,
207
+ queries
208
+ }, getEnrichedFiltersRequest(this)));
209
+ if (responseHasError(response)) {
210
+ this.setState({ error: response.error.message });
211
+ }
212
+ let values = dataFromResponse(response);
213
+ if (override) {
214
+ values = values.concat(dataFromResponse(override.values));
215
+ }
216
+ return values.map(toSelectableValue);
217
+ }
218
+ _addWip() {
219
+ this.setState({
220
+ _wip: { key: "", value: "", operator: "=", condition: "" }
221
+ });
222
+ }
223
+ _getOperators() {
224
+ const filteredOperators = this.state.supportsMultiValueOperators ? OPERATORS : OPERATORS.filter((operator) => !operator.isMulti);
225
+ return filteredOperators.map(({ value, description }) => ({
226
+ label: value,
227
+ value,
228
+ description
229
+ }));
230
+ }
231
+ }
232
+ AdHocFiltersVariable.Component = AdHocFiltersVariableRenderer;
233
+ function renderExpression(builder, filters) {
234
+ return (builder != null ? builder : renderPrometheusLabelFilters)(filters != null ? filters : []);
235
+ }
236
+ function AdHocFiltersVariableRenderer({ model }) {
237
+ const { filters, readOnly, addFilterButtonText } = model.useState();
238
+ const styles = useStyles2(getStyles);
239
+ if (model.state.layout === "combobox") {
240
+ return /* @__PURE__ */ React.createElement(AdHocFiltersComboboxRenderer, {
241
+ model
242
+ });
243
+ }
244
+ return /* @__PURE__ */ React.createElement("div", {
245
+ className: styles.wrapper
246
+ }, filters.map((filter, index) => /* @__PURE__ */ React.createElement(React.Fragment, {
247
+ key: index
248
+ }, /* @__PURE__ */ React.createElement(AdHocFilterRenderer, {
249
+ filter,
250
+ model
251
+ }))), !readOnly && /* @__PURE__ */ React.createElement(AdHocFilterBuilder, {
252
+ model,
253
+ key: "'builder",
254
+ addFilterButtonText
255
+ }));
256
+ }
257
+ const getStyles = (theme) => ({
258
+ wrapper: css({
259
+ display: "flex",
260
+ flexWrap: "wrap",
261
+ alignItems: "flex-end",
262
+ columnGap: theme.spacing(2),
263
+ rowGap: theme.spacing(1)
264
+ })
265
+ });
266
+ function toSelectableValue(input) {
267
+ const { text, value } = input;
268
+ const result = {
269
+ label: text,
270
+ value: String(value != null ? value : text)
271
+ };
272
+ if ("group" in input) {
273
+ result.group = input.group;
274
+ }
275
+ return result;
276
+ }
277
+ function isFilterComplete(filter) {
278
+ return filter.key !== "" && filter.operator !== "" && filter.value !== "";
279
+ }
280
+ function isMultiValueOperator(operatorValue) {
281
+ const operator = OPERATORS.find((o) => o.value === operatorValue);
282
+ if (!operator) {
283
+ return false;
284
+ }
285
+ return Boolean(operator.isMulti);
286
+ }
287
+
288
+ export { AdHocFiltersVariable, AdHocFiltersVariableRenderer, OPERATORS, isFilterComplete, isMultiValueOperator, toSelectableValue };
289
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWRIb2NGaWx0ZXJzVmFyaWFibGUuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy92YXJpYWJsZXMvYWRob2MvQWRIb2NGaWx0ZXJzVmFyaWFibGUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBBZEhvY1ZhcmlhYmxlRmlsdGVyLCBHZXRUYWdSZXNwb25zZSwgR3JhZmFuYVRoZW1lMiwgTWV0cmljRmluZFZhbHVlLCBTZWxlY3RhYmxlVmFsdWUgfSBmcm9tICdAZ3JhZmFuYS9kYXRhJztcbmltcG9ydCB7IFNjZW5lT2JqZWN0QmFzZSB9IGZyb20gJy4uLy4uL2NvcmUvU2NlbmVPYmplY3RCYXNlJztcbmltcG9ydCB7IFNjZW5lVmFyaWFibGUsIFNjZW5lVmFyaWFibGVTdGF0ZSwgU2NlbmVWYXJpYWJsZVZhbHVlQ2hhbmdlZEV2ZW50LCBWYXJpYWJsZVZhbHVlIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgQ29udHJvbHNMYXlvdXQsIFNjZW5lQ29tcG9uZW50UHJvcHMgfSBmcm9tICcuLi8uLi9jb3JlL3R5cGVzJztcbmltcG9ydCB7IERhdGFTb3VyY2VSZWYgfSBmcm9tICdAZ3JhZmFuYS9zY2hlbWEnO1xuaW1wb3J0IHsgZGF0YUZyb21SZXNwb25zZSwgZ2V0UXVlcmllc0ZvclZhcmlhYmxlcywgcmVuZGVyUHJvbWV0aGV1c0xhYmVsRmlsdGVycywgcmVzcG9uc2VIYXNFcnJvciB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IHBhdGNoR2V0QWRob2NGaWx0ZXJzIH0gZnJvbSAnLi9wYXRjaEdldEFkaG9jRmlsdGVycyc7XG5pbXBvcnQgeyB1c2VTdHlsZXMyIH0gZnJvbSAnQGdyYWZhbmEvdWknO1xuaW1wb3J0IHsgc2NlbmVHcmFwaCB9IGZyb20gJy4uLy4uL2NvcmUvc2NlbmVHcmFwaCc7XG5pbXBvcnQgeyBBZEhvY0ZpbHRlckJ1aWxkZXIgfSBmcm9tICcuL0FkSG9jRmlsdGVyQnVpbGRlcic7XG5pbXBvcnQgeyBBZEhvY0ZpbHRlclJlbmRlcmVyIH0gZnJvbSAnLi9BZEhvY0ZpbHRlclJlbmRlcmVyJztcbmltcG9ydCB7IGdldERhdGFTb3VyY2VTcnYgfSBmcm9tICdAZ3JhZmFuYS9ydW50aW1lJztcbmltcG9ydCB7IEFkSG9jRmlsdGVyc1ZhcmlhYmxlVXJsU3luY0hhbmRsZXIgfSBmcm9tICcuL0FkSG9jRmlsdGVyc1ZhcmlhYmxlVXJsU3luY0hhbmRsZXInO1xuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vY3NzJztcbmltcG9ydCB7IGdldEVucmljaGVkRmlsdGVyc1JlcXVlc3QgfSBmcm9tICcuLi9nZXRFbnJpY2hlZEZpbHRlcnNSZXF1ZXN0JztcbmltcG9ydCB7IEFkSG9jRmlsdGVyc0NvbWJvYm94UmVuZGVyZXIgfSBmcm9tICcuL0FkSG9jRmlsdGVyc0NvbWJvYm94L0FkSG9jRmlsdGVyc0NvbWJvYm94UmVuZGVyZXInO1xuaW1wb3J0IHsgd3JhcEluU2FmZVNlcmlhbGl6YWJsZVNjZW5lT2JqZWN0IH0gZnJvbSAnLi4vLi4vdXRpbHMvd3JhcEluU2FmZVNlcmlhbGl6YWJsZVNjZW5lT2JqZWN0JztcblxuZXhwb3J0IGludGVyZmFjZSBBZEhvY0ZpbHRlcldpdGhMYWJlbHMgZXh0ZW5kcyBBZEhvY1ZhcmlhYmxlRmlsdGVyIHtcbiAga2V5TGFiZWw/OiBzdHJpbmc7XG4gIHZhbHVlTGFiZWxzPzogc3RyaW5nW107XG4gIC8vIHRoaXMgaXMgdXNlZCB0byBleHRlcm5hbGx5IHRyaWdnZXIgZWRpdCBtb2RlIGluIGNvbWJvYm94IGZpbHRlciBVSVxuICBmb3JjZUVkaXQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBBZEhvY0NvbnRyb2xzTGF5b3V0ID0gQ29udHJvbHNMYXlvdXQgfCAnY29tYm9ib3gnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFkSG9jRmlsdGVyc1ZhcmlhYmxlU3RhdGUgZXh0ZW5kcyBTY2VuZVZhcmlhYmxlU3RhdGUge1xuICAvKiogT3B0aW9uYWwgdGV4dCB0byBkaXNwbGF5IG9uIHRoZSAnYWRkIGZpbHRlcicgYnV0dG9uICovXG4gIGFkZEZpbHRlckJ1dHRvblRleHQ/OiBzdHJpbmc7XG4gIC8qKiBUaGUgdmlzaWJsZSBmaWx0ZXJzICovXG4gIGZpbHRlcnM6IEFkSG9jRmlsdGVyV2l0aExhYmVsc1tdO1xuICAvKiogQmFzZSBmaWx0ZXJzIHRvIGFsd2F5cyBhcHBseSB3aGVuIGxvb2tpbmcgdXAga2V5cyovXG4gIGJhc2VGaWx0ZXJzPzogQWRIb2NGaWx0ZXJXaXRoTGFiZWxzW107XG4gIC8qKiBEYXRhc291cmNlIHRvIHVzZSBmb3IgZ2V0VGFnS2V5cyBhbmQgZ2V0VGFnVmFsdWVzIGFuZCBhbHNvIGNvbnRyb2xzIHdoaWNoIHNjZW5lIHF1ZXJpZXMgdGhlIGZpbHRlcnMgc2hvdWxkIGFwcGx5IHRvICovXG4gIGRhdGFzb3VyY2U6IERhdGFTb3VyY2VSZWYgfCBudWxsO1xuICAvKiogQ29udHJvbHMgaWYgdGhlIGZpbHRlcnMgY2FuIGJlIGNoYW5nZWQgKi9cbiAgcmVhZE9ubHk/OiBib29sZWFuO1xuICAvKipcbiAgICogQGV4cGVyaW1lbnRhbFxuICAgKiBDb250cm9scyB0aGUgbGF5b3V0IGFuZCBkZXNpZ24gb2YgdGhlIGxhYmVsLlxuICAgKi9cbiAgbGF5b3V0PzogQWRIb2NDb250cm9sc0xheW91dDtcbiAgLyoqXG4gICAqIERlZmF1bHRzIHRvIGF1dG9tYXRpYyB3aGljaCBtZWFucyBmaWx0ZXJzIHdpbGwgYXV0b21hdGljYWxseSBiZSBhcHBsaWVkIHRvIGFsbCBxdWVyaWVzIHdpdGggdGhlIHNhbWUgZGF0YSBzb3VyY2UgYXMgdGhpcyBBZEhvY0ZpbHRlclNldC5cbiAgICogSW4gbWFudWFsIG1vZGUgeW91IGVpdGhlciBoYXZlIHRvIHVzZSB0aGUgZmlsdGVycyBwcm9ncmFtbWF0aWNhbGx5IG9yIGFzIGEgdmFyaWFibGUgaW5zaWRlIHF1ZXJ5IGV4cHJlc3Npb25zLlxuICAgKi9cbiAgYXBwbHlNb2RlOiAnYXV0bycgfCAnbWFudWFsJztcbiAgLyoqXG4gICAqIEZpbHRlciBvdXQgdGhlIGtleXMgdGhhdCBkbyBub3QgbWF0Y2ggdGhlIHJlZ2V4LlxuICAgKi9cbiAgdGFnS2V5UmVnZXhGaWx0ZXI/OiBSZWdFeHA7XG4gIC8qKlxuICAgKiBFeHRlbnNpb24gaG9vayBmb3IgY3VzdG9taXppbmcgdGhlIGtleSBsb29rdXAuXG4gICAqIFJldHVybiByZXBsYWNlOiB0cnVlIGlmIHlvdSB3YW50IHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGxvb2t1cFxuICAgKiBSZXR1cm4gcmVwbGFjZTogZmFsc2UgaWYgeW91IHdhbnQgdG8gY29tYmluZSB0aGUgcmVzdWx0cyB3aXRoIHRoZSBkZWZhdWx0IGxvb2t1cFxuICAgKi9cbiAgZ2V0VGFnS2V5c1Byb3ZpZGVyPzogZ2V0VGFnS2V5c1Byb3ZpZGVyO1xuICAvKipcbiAgICogRXh0ZW5zaW9uIGhvb2sgZm9yIGN1c3RvbWl6aW5nIHRoZSB2YWx1ZSBsb29rdXAuXG4gICAqIFJldHVybiByZXBsYWNlOiB0cnVlIGlmIHlvdSB3YW50IHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGxvb2t1cC5cbiAgICogUmV0dXJuIHJlcGxhY2U6IGZhbHNlIGlmIHlvdSB3YW50IHRvIGNvbWJpbmUgdGhlIHJlc3VsdHMgd2l0aCB0aGUgZGVmYXVsdCBsb29rdXBcbiAgICovXG4gIGdldFRhZ1ZhbHVlc1Byb3ZpZGVyPzogZ2V0VGFnVmFsdWVzUHJvdmlkZXI7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsbHkgcHJvdmlkZSBhbiBhcnJheSBvZiBzdGF0aWMga2V5cyB0aGF0IG92ZXJyaWRlIGdldFRhZ0tleXNcbiAgICovXG4gIGRlZmF1bHRLZXlzPzogTWV0cmljRmluZFZhbHVlW107XG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgdGhlIGV4cHJlc3Npb24gdGhhdCB0aGUgZmlsdGVycyByZXN1bHRlZCBpbi4gRGVmYXVsdHMgdG9cbiAgICogUHJvbWV0aGV1cyAvIExva2kgY29tcGF0aWJsZSBsYWJlbCBmaWx0ZXIgZXhwcmVzc2lvblxuICAgKi9cbiAgZmlsdGVyRXhwcmVzc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRlZmF1bHQgYnVpbGRlciBjcmVhdGVzIGEgUHJvbWV0aGV1cy9Mb2tpIGNvbXBhdGlibGUgZmlsdGVyIGV4cHJlc3Npb24sXG4gICAqIHRoaXMgY2FuIGJlIG92ZXJyaWRkZW4gdG8gY3JlYXRlIGEgZGlmZmVyZW50IGV4cHJlc3Npb24gYmFzZWQgb24gdGhlIGN1cnJlbnQgZmlsdGVycy5cbiAgICovXG4gIGV4cHJlc3Npb25CdWlsZGVyPzogQWRIb2NWYXJpYWJsZUV4cHJlc3Npb25CdWlsZGVyRm47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGZpbHRlciBzdXBwb3J0cyBuZXcgbXVsdGktdmFsdWUgb3BlcmF0b3JzIGxpa2UgPXwgYW5kICE9fFxuICAgKi9cbiAgc3VwcG9ydHNNdWx0aVZhbHVlT3BlcmF0b3JzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBxdWVyeWluZyB0aGUgZGF0YXNvdXJjZSBmb3IgbGFiZWwgbmFtZXMgYW5kIHZhbHVlcyB0byBkZXRlcm1pbmUga2V5cyBhbmQgdmFsdWVzXG4gICAqIGZvciB0aGlzIGFkIGhvYyBmaWx0ZXIsIGNvbnNpZGVyIHRoZSBxdWVyaWVzIGluIHRoZSBzY2VuZSBhbmQgdXNlIHRoZW0gYXMgYSBmaWx0ZXIuXG4gICAqIFRoaXMgcXVlcmllcyBmaWx0ZXIgY2FuIGJlIHVzZWQgdG8gZW5zdXJlIHRoYXQgb25seSBhZCBob2MgZmlsdGVyIG9wdGlvbnMgdGhhdCB3b3VsZFxuICAgKiBpbXBhY3QgdGhlIGN1cnJlbnQgcXVlcmllcyBhcmUgcHJlc2VudGVkIHRvIHRoZSB1c2VyLlxuICAgKi9cbiAgdXNlUXVlcmllc0FzRmlsdGVyRm9yT3B0aW9ucz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEZsYWcgdGhhdCBkZWNpZGVzIHdoZXRoZXIgY3VzdG9tIHZhbHVlcyBjYW4gYmUgYWRkZWQgdG8gdGhlIGZpbHRlclxuICAgKi9cbiAgYWxsb3dDdXN0b21WYWx1ZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgbmV3IGZpbHRlciBiZWluZyBhZGRlZFxuICAgKi9cbiAgX3dpcD86IEFkSG9jRmlsdGVyV2l0aExhYmVscztcbn1cblxuZXhwb3J0IHR5cGUgQWRIb2NWYXJpYWJsZUV4cHJlc3Npb25CdWlsZGVyRm4gPSAoZmlsdGVyczogQWRIb2NGaWx0ZXJXaXRoTGFiZWxzW10pID0+IHN0cmluZztcblxuZXhwb3J0IHR5cGUgZ2V0VGFnS2V5c1Byb3ZpZGVyID0gKFxuICB2YXJpYWJsZTogQWRIb2NGaWx0ZXJzVmFyaWFibGUsXG4gIGN1cnJlbnRLZXk6IHN0cmluZyB8IG51bGxcbikgPT4gUHJvbWlzZTx7IHJlcGxhY2U/OiBib29sZWFuOyB2YWx1ZXM6IEdldFRhZ1Jlc3BvbnNlIHwgTWV0cmljRmluZFZhbHVlW10gfT47XG5cbmV4cG9ydCB0eXBlIGdldFRhZ1ZhbHVlc1Byb3ZpZGVyID0gKFxuICB2YXJpYWJsZTogQWRIb2NGaWx0ZXJzVmFyaWFibGUsXG4gIGZpbHRlcjogQWRIb2NGaWx0ZXJXaXRoTGFiZWxzXG4pID0+IFByb21pc2U8eyByZXBsYWNlPzogYm9vbGVhbjsgdmFsdWVzOiBHZXRUYWdSZXNwb25zZSB8IE1ldHJpY0ZpbmRWYWx1ZVtdIH0+O1xuXG5leHBvcnQgdHlwZSBBZEhvY0ZpbHRlcnNWYXJpYWJsZUNyZWF0ZUhlbHBlckFyZ3MgPSBBZEhvY0ZpbHRlcnNWYXJpYWJsZVN0YXRlO1xuXG5leHBvcnQgdHlwZSBPcGVyYXRvckRlZmluaXRpb24gPSB7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBpc011bHRpPzogQm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCBPUEVSQVRPUlM6IE9wZXJhdG9yRGVmaW5pdGlvbltdID0gW1xuICB7XG4gICAgdmFsdWU6ICc9JyxcbiAgICBkZXNjcmlwdGlvbjogJ0VxdWFscycsXG4gIH0sXG4gIHtcbiAgICB2YWx1ZTogJyE9JyxcbiAgICBkZXNjcmlwdGlvbjogJ05vdCBlcXVhbCcsXG4gIH0sXG4gIHtcbiAgICB2YWx1ZTogJz18JyxcbiAgICBkZXNjcmlwdGlvbjogJ09uZSBvZi4gVXNlIHRvIGZpbHRlciBvbiBtdWx0aXBsZSB2YWx1ZXMuJyxcbiAgICBpc011bHRpOiB0cnVlLFxuICB9LFxuICB7XG4gICAgdmFsdWU6ICchPXwnLFxuICAgIGRlc2NyaXB0aW9uOiAnTm90IG9uZSBvZi4gVXNlIHRvIGV4Y2x1ZGUgbXVsdGlwbGUgdmFsdWVzLicsXG4gICAgaXNNdWx0aTogdHJ1ZSxcbiAgfSxcbiAge1xuICAgIHZhbHVlOiAnPX4nLFxuICAgIGRlc2NyaXB0aW9uOiAnTWF0Y2hlcyByZWdleCcsXG4gIH0sXG4gIHtcbiAgICB2YWx1ZTogJyF+JyxcbiAgICBkZXNjcmlwdGlvbjogJ0RvZXMgbm90IG1hdGNoIHJlZ2V4JyxcbiAgfSxcbiAge1xuICAgIHZhbHVlOiAnPCcsXG4gICAgZGVzY3JpcHRpb246ICdMZXNzIHRoYW4nLFxuICB9LFxuICB7XG4gICAgdmFsdWU6ICc+JyxcbiAgICBkZXNjcmlwdGlvbjogJ0dyZWF0ZXIgdGhhbicsXG4gIH0sXG5dO1xuXG5leHBvcnQgY2xhc3MgQWRIb2NGaWx0ZXJzVmFyaWFibGVcbiAgZXh0ZW5kcyBTY2VuZU9iamVjdEJhc2U8QWRIb2NGaWx0ZXJzVmFyaWFibGVTdGF0ZT5cbiAgaW1wbGVtZW50cyBTY2VuZVZhcmlhYmxlPEFkSG9jRmlsdGVyc1ZhcmlhYmxlU3RhdGU+XG57XG4gIHN0YXRpYyBDb21wb25lbnQgPSBBZEhvY0ZpbHRlcnNWYXJpYWJsZVJlbmRlcmVyO1xuXG4gIHByaXZhdGUgX3Njb3BlZFZhcnMgPSB7IF9fc2NlbmVPYmplY3Q6IHdyYXBJblNhZmVTZXJpYWxpemFibGVTY2VuZU9iamVjdCh0aGlzKSB9O1xuICBwcml2YXRlIF9kYXRhU291cmNlU3J2ID0gZ2V0RGF0YVNvdXJjZVNydigpO1xuXG4gIHByb3RlY3RlZCBfdXJsU3luYyA9IG5ldyBBZEhvY0ZpbHRlcnNWYXJpYWJsZVVybFN5bmNIYW5kbGVyKHRoaXMpO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihzdGF0ZTogUGFydGlhbDxBZEhvY0ZpbHRlcnNWYXJpYWJsZVN0YXRlPikge1xuICAgIHN1cGVyKHtcbiAgICAgIHR5cGU6ICdhZGhvYycsXG4gICAgICBuYW1lOiBzdGF0ZS5uYW1lID8/ICdGaWx0ZXJzJyxcbiAgICAgIGZpbHRlcnM6IFtdLFxuICAgICAgZGF0YXNvdXJjZTogbnVsbCxcbiAgICAgIGFwcGx5TW9kZTogJ2F1dG8nLFxuICAgICAgZmlsdGVyRXhwcmVzc2lvbjogc3RhdGUuZmlsdGVyRXhwcmVzc2lvbiA/PyByZW5kZXJFeHByZXNzaW9uKHN0YXRlLmV4cHJlc3Npb25CdWlsZGVyLCBzdGF0ZS5maWx0ZXJzKSxcbiAgICAgIC4uLnN0YXRlLFxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuc3RhdGUuYXBwbHlNb2RlID09PSAnYXV0bycpIHtcbiAgICAgIHBhdGNoR2V0QWRob2NGaWx0ZXJzKHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRTdGF0ZSh1cGRhdGU6IFBhcnRpYWw8QWRIb2NGaWx0ZXJzVmFyaWFibGVTdGF0ZT4pOiB2b2lkIHtcbiAgICBsZXQgZmlsdGVyRXhwcmVzc2lvbkNoYW5nZWQgPSBmYWxzZTtcblxuICAgIGlmICh1cGRhdGUuZmlsdGVycyAmJiB1cGRhdGUuZmlsdGVycyAhPT0gdGhpcy5zdGF0ZS5maWx0ZXJzICYmICF1cGRhdGUuZmlsdGVyRXhwcmVzc2lvbikge1xuICAgICAgdXBkYXRlLmZpbHRlckV4cHJlc3Npb24gPSByZW5kZXJFeHByZXNzaW9uKHRoaXMuc3RhdGUuZXhwcmVzc2lvbkJ1aWxkZXIsIHVwZGF0ZS5maWx0ZXJzKTtcbiAgICAgIGZpbHRlckV4cHJlc3Npb25DaGFuZ2VkID0gdXBkYXRlLmZpbHRlckV4cHJlc3Npb24gIT09IHRoaXMuc3RhdGUuZmlsdGVyRXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgICBzdXBlci5zZXRTdGF0ZSh1cGRhdGUpO1xuXG4gICAgaWYgKGZpbHRlckV4cHJlc3Npb25DaGFuZ2VkKSB7XG4gICAgICB0aGlzLnB1Ymxpc2hFdmVudChuZXcgU2NlbmVWYXJpYWJsZVZhbHVlQ2hhbmdlZEV2ZW50KHRoaXMpLCB0cnVlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUoKTogVmFyaWFibGVWYWx1ZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGUuZmlsdGVyRXhwcmVzc2lvbjtcbiAgfVxuXG4gIHB1YmxpYyBfdXBkYXRlRmlsdGVyKGZpbHRlcjogQWRIb2NGaWx0ZXJXaXRoTGFiZWxzLCB1cGRhdGU6IFBhcnRpYWw8QWRIb2NGaWx0ZXJXaXRoTGFiZWxzPikge1xuICAgIGNvbnN0IHsgZmlsdGVycywgX3dpcCB9ID0gdGhpcy5zdGF0ZTtcblxuICAgIGlmIChmaWx0ZXIgPT09IF93aXApIHtcbiAgICAgIC8vIElmIHdlIHNldCB2YWx1ZSB3ZSBhcmUgZG9uZSB3aXRoIHRoaXMgXCJ3b3JrIGluIHByb2dyZXNzXCIgZmlsdGVyIGFuZCB3ZSBjYW4gYWRkIGl0XG4gICAgICBpZiAoJ3ZhbHVlJyBpbiB1cGRhdGUgJiYgdXBkYXRlWyd2YWx1ZSddICE9PSAnJykge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgZmlsdGVyczogWy4uLmZpbHRlcnMsIHsgLi4uX3dpcCwgLi4udXBkYXRlIH1dLCBfd2lwOiB1bmRlZmluZWQgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgX3dpcDogeyAuLi5maWx0ZXIsIC4uLnVwZGF0ZSB9IH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHVwZGF0ZWRGaWx0ZXJzID0gdGhpcy5zdGF0ZS5maWx0ZXJzLm1hcCgoZikgPT4ge1xuICAgICAgcmV0dXJuIGYgPT09IGZpbHRlciA/IHsgLi4uZiwgLi4udXBkYXRlIH0gOiBmO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGZpbHRlcnM6IHVwZGF0ZWRGaWx0ZXJzIH0pO1xuICB9XG5cbiAgcHVibGljIF9yZW1vdmVGaWx0ZXIoZmlsdGVyOiBBZEhvY0ZpbHRlcldpdGhMYWJlbHMpIHtcbiAgICBpZiAoZmlsdGVyID09PSB0aGlzLnN0YXRlLl93aXApIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBfd2lwOiB1bmRlZmluZWQgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGZpbHRlcnM6IHRoaXMuc3RhdGUuZmlsdGVycy5maWx0ZXIoKGYpID0+IGYgIT09IGZpbHRlcikgfSk7XG4gIH1cblxuICBwdWJsaWMgX3JlbW92ZUxhc3RGaWx0ZXIoKSB7XG4gICAgY29uc3QgZmlsdGVyVG9SZW1vdmUgPSB0aGlzLnN0YXRlLmZpbHRlcnMuYXQoLTEpO1xuXG4gICAgaWYgKGZpbHRlclRvUmVtb3ZlKSB7XG4gICAgICB0aGlzLl9yZW1vdmVGaWx0ZXIoZmlsdGVyVG9SZW1vdmUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBfaGFuZGxlQ29tYm9ib3hCYWNrc3BhY2UoZmlsdGVyOiBBZEhvY0ZpbHRlcldpdGhMYWJlbHMpIHtcbiAgICBpZiAodGhpcy5zdGF0ZS5maWx0ZXJzLmxlbmd0aCkge1xuICAgICAgLy8gZGVmYXVsdCBmb3JjZUVkaXQgbGFzdCBmaWx0ZXIgKHdoZW4gdHJpZ2dlcmluZyBmcm9tIHdpcCBmaWx0ZXIpXG4gICAgICBsZXQgZmlsdGVyVG9Gb3JjZUluZGV4ID0gdGhpcy5zdGF0ZS5maWx0ZXJzLmxlbmd0aCAtIDE7XG5cbiAgICAgIC8vIGFkanVzdCBmaWx0ZXJUb0ZvcmNlSW5kZXggaW5kZXggdG8gLTEgaWYgYmFja3NwYWNlIHRyaWdnZXJlZCBmcm9tIG5vbiB3aXAgZmlsdGVyXG4gICAgICAvLyAgdG8gYXZvaWQgdHJpZ2dlcmluZyBmb3JjZUVkaXQgbG9naWNcbiAgICAgIGlmIChmaWx0ZXIgIT09IHRoaXMuc3RhdGUuX3dpcCkge1xuICAgICAgICBmaWx0ZXJUb0ZvcmNlSW5kZXggPSAtMTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIGZpbHRlcnM6IHRoaXMuc3RhdGUuZmlsdGVycy5yZWR1Y2U8QWRIb2NGaWx0ZXJXaXRoTGFiZWxzW10+KChhY2MsIGYsIGluZGV4KSA9PiB7XG4gICAgICAgICAgLy8gYWRqdXN0IGZvcmNlRWRpdCBvZiBwcmVjZWRpbmcgZmlsdGVyXG4gICAgICAgICAgaWYgKGluZGV4ID09PSBmaWx0ZXJUb0ZvcmNlSW5kZXgpIHtcbiAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC4uLmYsXG4gICAgICAgICAgICAgICAgZm9yY2VFZGl0OiB0cnVlLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gcmVtb3ZlIGN1cnJlbnQgZmlsdGVyXG4gICAgICAgICAgaWYgKGYgPT09IGZpbHRlcikge1xuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gWy4uLmFjYywgZl07XG4gICAgICAgIH0sIFtdKSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgcG9zc2libGUga2V5cyBnaXZlbiBjdXJyZW50IGZpbHRlcnMuIERvIG5vdCBjYWxsIGZyb20gcGx1Z2lucyBkaXJlY3RseVxuICAgKi9cbiAgcHVibGljIGFzeW5jIF9nZXRLZXlzKGN1cnJlbnRLZXk6IHN0cmluZyB8IG51bGwpOiBQcm9taXNlPEFycmF5PFNlbGVjdGFibGVWYWx1ZTxzdHJpbmc+Pj4ge1xuICAgIGNvbnN0IG92ZXJyaWRlID0gYXdhaXQgdGhpcy5zdGF0ZS5nZXRUYWdLZXlzUHJvdmlkZXI/Lih0aGlzLCBjdXJyZW50S2V5KTtcblxuICAgIGlmIChvdmVycmlkZSAmJiBvdmVycmlkZS5yZXBsYWNlKSB7XG4gICAgICByZXR1cm4gZGF0YUZyb21SZXNwb25zZShvdmVycmlkZS52YWx1ZXMpLm1hcCh0b1NlbGVjdGFibGVWYWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc3RhdGUuZGVmYXVsdEtleXMpIHtcbiAgICAgIHJldHVybiB0aGlzLnN0YXRlLmRlZmF1bHRLZXlzLm1hcCh0b1NlbGVjdGFibGVWYWx1ZSk7XG4gICAgfVxuXG4gICAgY29uc3QgZHMgPSBhd2FpdCB0aGlzLl9kYXRhU291cmNlU3J2LmdldCh0aGlzLnN0YXRlLmRhdGFzb3VyY2UsIHRoaXMuX3Njb3BlZFZhcnMpO1xuICAgIGlmICghZHMgfHwgIWRzLmdldFRhZ0tleXMpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCBvdGhlckZpbHRlcnMgPSB0aGlzLnN0YXRlLmZpbHRlcnMuZmlsdGVyKChmKSA9PiBmLmtleSAhPT0gY3VycmVudEtleSkuY29uY2F0KHRoaXMuc3RhdGUuYmFzZUZpbHRlcnMgPz8gW10pO1xuICAgIGNvbnN0IHRpbWVSYW5nZSA9IHNjZW5lR3JhcGguZ2V0VGltZVJhbmdlKHRoaXMpLnN0YXRlLnZhbHVlO1xuICAgIGNvbnN0IHF1ZXJpZXMgPSB0aGlzLnN0YXRlLnVzZVF1ZXJpZXNBc0ZpbHRlckZvck9wdGlvbnMgPyBnZXRRdWVyaWVzRm9yVmFyaWFibGVzKHRoaXMpIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZHMuZ2V0VGFnS2V5cyh7XG4gICAgICBmaWx0ZXJzOiBvdGhlckZpbHRlcnMsXG4gICAgICBxdWVyaWVzLFxuICAgICAgdGltZVJhbmdlLFxuICAgICAgLi4uZ2V0RW5yaWNoZWRGaWx0ZXJzUmVxdWVzdCh0aGlzKSxcbiAgICB9KTtcblxuICAgIGlmIChyZXNwb25zZUhhc0Vycm9yKHJlc3BvbnNlKSkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7IGVycm9yOiByZXNwb25zZS5lcnJvci5tZXNzYWdlIH0pO1xuICAgIH1cblxuICAgIGxldCBrZXlzID0gZGF0YUZyb21SZXNwb25zZShyZXNwb25zZSk7XG4gICAgaWYgKG92ZXJyaWRlKSB7XG4gICAgICBrZXlzID0ga2V5cy5jb25jYXQoZGF0YUZyb21SZXNwb25zZShvdmVycmlkZS52YWx1ZXMpKTtcbiAgICB9XG5cbiAgICBjb25zdCB0YWdLZXlSZWdleEZpbHRlciA9IHRoaXMuc3RhdGUudGFnS2V5UmVnZXhGaWx0ZXI7XG4gICAgaWYgKHRhZ0tleVJlZ2V4RmlsdGVyKSB7XG4gICAgICBrZXlzID0ga2V5cy5maWx0ZXIoKGYpID0+IGYudGV4dC5tYXRjaCh0YWdLZXlSZWdleEZpbHRlcikpO1xuICAgIH1cblxuICAgIHJldHVybiBrZXlzLm1hcCh0b1NlbGVjdGFibGVWYWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHBvc3NpYmxlIGtleSB2YWx1ZXMgZm9yIGEgc3BlY2lmaWMga2V5IGdpdmVuIGN1cnJlbnQgZmlsdGVycy4gRG8gbm90IGNhbGwgZnJvbSBwbHVnaW5zIGRpcmVjdGx5XG4gICAqL1xuICBwdWJsaWMgYXN5bmMgX2dldFZhbHVlc0ZvcihmaWx0ZXI6IEFkSG9jRmlsdGVyV2l0aExhYmVscyk6IFByb21pc2U8QXJyYXk8U2VsZWN0YWJsZVZhbHVlPHN0cmluZz4+PiB7XG4gICAgY29uc3Qgb3ZlcnJpZGUgPSBhd2FpdCB0aGlzLnN0YXRlLmdldFRhZ1ZhbHVlc1Byb3ZpZGVyPy4odGhpcywgZmlsdGVyKTtcblxuICAgIGlmIChvdmVycmlkZSAmJiBvdmVycmlkZS5yZXBsYWNlKSB7XG4gICAgICByZXR1cm4gZGF0YUZyb21SZXNwb25zZShvdmVycmlkZS52YWx1ZXMpLm1hcCh0b1NlbGVjdGFibGVWYWx1ZSk7XG4gICAgfVxuXG4gICAgY29uc3QgZHMgPSBhd2FpdCB0aGlzLl9kYXRhU291cmNlU3J2LmdldCh0aGlzLnN0YXRlLmRhdGFzb3VyY2UsIHRoaXMuX3Njb3BlZFZhcnMpO1xuXG4gICAgaWYgKCFkcyB8fCAhZHMuZ2V0VGFnVmFsdWVzKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgLy8gRmlsdGVyIG91dCB0aGUgY3VycmVudCBmaWx0ZXIga2V5IGZyb20gdGhlIGxpc3Qgb2YgYWxsIGZpbHRlcnNcbiAgICBjb25zdCBvdGhlckZpbHRlcnMgPSB0aGlzLnN0YXRlLmZpbHRlcnMuZmlsdGVyKChmKSA9PiBmLmtleSAhPT0gZmlsdGVyLmtleSkuY29uY2F0KHRoaXMuc3RhdGUuYmFzZUZpbHRlcnMgPz8gW10pO1xuXG4gICAgY29uc3QgdGltZVJhbmdlID0gc2NlbmVHcmFwaC5nZXRUaW1lUmFuZ2UodGhpcykuc3RhdGUudmFsdWU7XG4gICAgY29uc3QgcXVlcmllcyA9IHRoaXMuc3RhdGUudXNlUXVlcmllc0FzRmlsdGVyRm9yT3B0aW9ucyA/IGdldFF1ZXJpZXNGb3JWYXJpYWJsZXModGhpcykgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGRzLmdldFRhZ1ZhbHVlcyh7XG4gICAgICBrZXk6IGZpbHRlci5rZXksXG4gICAgICBmaWx0ZXJzOiBvdGhlckZpbHRlcnMsXG4gICAgICB0aW1lUmFuZ2UsXG4gICAgICBxdWVyaWVzLFxuICAgICAgLi4uZ2V0RW5yaWNoZWRGaWx0ZXJzUmVxdWVzdCh0aGlzKSxcbiAgICB9KTtcblxuICAgIGlmIChyZXNwb25zZUhhc0Vycm9yKHJlc3BvbnNlKSkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7IGVycm9yOiByZXNwb25zZS5lcnJvci5tZXNzYWdlIH0pO1xuICAgIH1cblxuICAgIGxldCB2YWx1ZXMgPSBkYXRhRnJvbVJlc3BvbnNlKHJlc3BvbnNlKTtcbiAgICBpZiAob3ZlcnJpZGUpIHtcbiAgICAgIHZhbHVlcyA9IHZhbHVlcy5jb25jYXQoZGF0YUZyb21SZXNwb25zZShvdmVycmlkZS52YWx1ZXMpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWVzLm1hcCh0b1NlbGVjdGFibGVWYWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgX2FkZFdpcCgpIHtcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIF93aXA6IHsga2V5OiAnJywgdmFsdWU6ICcnLCBvcGVyYXRvcjogJz0nLCBjb25kaXRpb246ICcnIH0sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgX2dldE9wZXJhdG9ycygpIHtcbiAgICBjb25zdCBmaWx0ZXJlZE9wZXJhdG9ycyA9IHRoaXMuc3RhdGUuc3VwcG9ydHNNdWx0aVZhbHVlT3BlcmF0b3JzXG4gICAgICA/IE9QRVJBVE9SU1xuICAgICAgOiBPUEVSQVRPUlMuZmlsdGVyKChvcGVyYXRvcikgPT4gIW9wZXJhdG9yLmlzTXVsdGkpO1xuICAgIHJldHVybiBmaWx0ZXJlZE9wZXJhdG9ycy5tYXA8U2VsZWN0YWJsZVZhbHVlPHN0cmluZz4+KCh7IHZhbHVlLCBkZXNjcmlwdGlvbiB9KSA9PiAoe1xuICAgICAgbGFiZWw6IHZhbHVlLFxuICAgICAgdmFsdWUsXG4gICAgICBkZXNjcmlwdGlvbixcbiAgICB9KSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVuZGVyRXhwcmVzc2lvbihcbiAgYnVpbGRlcjogQWRIb2NWYXJpYWJsZUV4cHJlc3Npb25CdWlsZGVyRm4gfCB1bmRlZmluZWQsXG4gIGZpbHRlcnM6IEFkSG9jRmlsdGVyV2l0aExhYmVsc1tdIHwgdW5kZWZpbmVkXG4pIHtcbiAgcmV0dXJuIChidWlsZGVyID8/IHJlbmRlclByb21ldGhldXNMYWJlbEZpbHRlcnMpKGZpbHRlcnMgPz8gW10pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQWRIb2NGaWx0ZXJzVmFyaWFibGVSZW5kZXJlcih7IG1vZGVsIH06IFNjZW5lQ29tcG9uZW50UHJvcHM8QWRIb2NGaWx0ZXJzVmFyaWFibGU+KSB7XG4gIGNvbnN0IHsgZmlsdGVycywgcmVhZE9ubHksIGFkZEZpbHRlckJ1dHRvblRleHQgfSA9IG1vZGVsLnVzZVN0YXRlKCk7XG4gIGNvbnN0IHN0eWxlcyA9IHVzZVN0eWxlczIoZ2V0U3R5bGVzKTtcblxuICBpZiAobW9kZWwuc3RhdGUubGF5b3V0ID09PSAnY29tYm9ib3gnKSB7XG4gICAgcmV0dXJuIDxBZEhvY0ZpbHRlcnNDb21ib2JveFJlbmRlcmVyIG1vZGVsPXttb2RlbH0gLz47XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICB7ZmlsdGVycy5tYXAoKGZpbHRlciwgaW5kZXgpID0+IChcbiAgICAgICAgPFJlYWN0LkZyYWdtZW50IGtleT17aW5kZXh9PlxuICAgICAgICAgIDxBZEhvY0ZpbHRlclJlbmRlcmVyIGZpbHRlcj17ZmlsdGVyfSBtb2RlbD17bW9kZWx9IC8+XG4gICAgICAgIDwvUmVhY3QuRnJhZ21lbnQ+XG4gICAgICApKX1cblxuICAgICAgeyFyZWFkT25seSAmJiA8QWRIb2NGaWx0ZXJCdWlsZGVyIG1vZGVsPXttb2RlbH0ga2V5PVwiJ2J1aWxkZXJcIiBhZGRGaWx0ZXJCdXR0b25UZXh0PXthZGRGaWx0ZXJCdXR0b25UZXh0fSAvPn1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuY29uc3QgZ2V0U3R5bGVzID0gKHRoZW1lOiBHcmFmYW5hVGhlbWUyKSA9PiAoe1xuICB3cmFwcGVyOiBjc3Moe1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4V3JhcDogJ3dyYXAnLFxuICAgIGFsaWduSXRlbXM6ICdmbGV4LWVuZCcsXG4gICAgY29sdW1uR2FwOiB0aGVtZS5zcGFjaW5nKDIpLFxuICAgIHJvd0dhcDogdGhlbWUuc3BhY2luZygxKSxcbiAgfSksXG59KTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRvU2VsZWN0YWJsZVZhbHVlKGlucHV0OiBNZXRyaWNGaW5kVmFsdWUpOiBTZWxlY3RhYmxlVmFsdWU8c3RyaW5nPiB7XG4gIGNvbnN0IHsgdGV4dCwgdmFsdWUgfSA9IGlucHV0O1xuICBjb25zdCByZXN1bHQ6IFNlbGVjdGFibGVWYWx1ZTxzdHJpbmc+ID0ge1xuICAgIGxhYmVsOiB0ZXh0LFxuICAgIHZhbHVlOiBTdHJpbmcodmFsdWUgPz8gdGV4dCksXG4gIH07XG5cbiAgaWYgKCdncm91cCcgaW4gaW5wdXQpIHtcbiAgICByZXN1bHQuZ3JvdXAgPSBpbnB1dC5ncm91cDtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0ZpbHRlckNvbXBsZXRlKGZpbHRlcjogQWRIb2NGaWx0ZXJXaXRoTGFiZWxzKTogYm9vbGVhbiB7XG4gIHJldHVybiBmaWx0ZXIua2V5ICE9PSAnJyAmJiBmaWx0ZXIub3BlcmF0b3IgIT09ICcnICYmIGZpbHRlci52YWx1ZSAhPT0gJyc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc011bHRpVmFsdWVPcGVyYXRvcihvcGVyYXRvclZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3Qgb3BlcmF0b3IgPSBPUEVSQVRPUlMuZmluZCgobykgPT4gby52YWx1ZSA9PT0gb3BlcmF0b3JWYWx1ZSk7XG4gIGlmICghb3BlcmF0b3IpIHtcbiAgICAvLyBkZWZhdWx0IHRvIGZhbHNlIGlmIG9wZXJhdG9yIGlzIG5vdCBmb3VuZFxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gQm9vbGVhbihvcGVyYXRvci5pc011bHRpKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQStITyxNQUFNLFNBQWtDLEdBQUE7QUFBQSxFQUM3QztBQUFBLElBQ0UsS0FBTyxFQUFBLEdBQUE7QUFBQSxJQUNQLFdBQWEsRUFBQSxRQUFBO0FBQUEsR0FDZjtBQUFBLEVBQ0E7QUFBQSxJQUNFLEtBQU8sRUFBQSxJQUFBO0FBQUEsSUFDUCxXQUFhLEVBQUEsV0FBQTtBQUFBLEdBQ2Y7QUFBQSxFQUNBO0FBQUEsSUFDRSxLQUFPLEVBQUEsSUFBQTtBQUFBLElBQ1AsV0FBYSxFQUFBLDJDQUFBO0FBQUEsSUFDYixPQUFTLEVBQUEsSUFBQTtBQUFBLEdBQ1g7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
@@ -0,0 +1,76 @@
1
+ import { isFilterComplete, isMultiValueOperator } from './AdHocFiltersVariable.js';
2
+ import { escapeUrlPipeDelimiters, toUrlCommaDelimitedString, unescapeUrlDelimiters } from '../utils.js';
3
+
4
+ class AdHocFiltersVariableUrlSyncHandler {
5
+ constructor(_variable) {
6
+ this._variable = _variable;
7
+ }
8
+ getKey() {
9
+ return `var-${this._variable.state.name}`;
10
+ }
11
+ getKeys() {
12
+ return [this.getKey()];
13
+ }
14
+ getUrlState() {
15
+ const filters = this._variable.state.filters;
16
+ if (filters.length === 0) {
17
+ return { [this.getKey()]: [""] };
18
+ }
19
+ const value = filters.filter(isFilterComplete).map((filter) => toArray(filter).map(escapeUrlPipeDelimiters).join("|"));
20
+ return { [this.getKey()]: value };
21
+ }
22
+ updateFromUrl(values) {
23
+ const urlValue = values[this.getKey()];
24
+ if (urlValue == null) {
25
+ return;
26
+ }
27
+ const filters = deserializeUrlToFilters(urlValue);
28
+ this._variable.setState({ filters });
29
+ }
30
+ }
31
+ function deserializeUrlToFilters(value) {
32
+ if (Array.isArray(value)) {
33
+ const values = value;
34
+ return values.map(toFilter).filter(isFilter);
35
+ }
36
+ const filter = toFilter(value);
37
+ return filter === null ? [] : [filter];
38
+ }
39
+ function toArray(filter) {
40
+ var _a;
41
+ const result = [toUrlCommaDelimitedString(filter.key, filter.keyLabel), filter.operator];
42
+ if (isMultiValueOperator(filter.operator)) {
43
+ filter.values.forEach((value, index) => {
44
+ var _a2;
45
+ result.push(toUrlCommaDelimitedString(value, (_a2 = filter.valueLabels) == null ? void 0 : _a2[index]));
46
+ });
47
+ } else {
48
+ result.push(toUrlCommaDelimitedString(filter.value, (_a = filter.valueLabels) == null ? void 0 : _a[0]));
49
+ }
50
+ return result;
51
+ }
52
+ function toFilter(urlValue) {
53
+ if (typeof urlValue !== "string" || urlValue.length === 0) {
54
+ return null;
55
+ }
56
+ const [key, keyLabel, operator, _operatorLabel, ...values] = urlValue.split("|").reduce((acc, v) => {
57
+ const [key2, label] = v.split(",");
58
+ acc.push(key2, label != null ? label : key2);
59
+ return acc;
60
+ }, []).map(unescapeUrlDelimiters);
61
+ return {
62
+ key,
63
+ keyLabel,
64
+ operator,
65
+ value: values[0],
66
+ values: isMultiValueOperator(operator) ? values.filter((_, index) => index % 2 === 0) : void 0,
67
+ valueLabels: values.filter((_, index) => index % 2 === 1),
68
+ condition: ""
69
+ };
70
+ }
71
+ function isFilter(filter) {
72
+ return filter !== null && typeof filter.key === "string" && typeof filter.value === "string";
73
+ }
74
+
75
+ export { AdHocFiltersVariableUrlSyncHandler };
76
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWRIb2NGaWx0ZXJzVmFyaWFibGVVcmxTeW5jSGFuZGxlci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3ZhcmlhYmxlcy9hZGhvYy9BZEhvY0ZpbHRlcnNWYXJpYWJsZVVybFN5bmNIYW5kbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNjZW5lT2JqZWN0VXJsU3luY0hhbmRsZXIsIFNjZW5lT2JqZWN0VXJsVmFsdWUsIFNjZW5lT2JqZWN0VXJsVmFsdWVzIH0gZnJvbSAnLi4vLi4vY29yZS90eXBlcyc7XG5pbXBvcnQge1xuICBBZEhvY0ZpbHRlcnNWYXJpYWJsZSxcbiAgQWRIb2NGaWx0ZXJXaXRoTGFiZWxzLFxuICBpc0ZpbHRlckNvbXBsZXRlLFxuICBpc011bHRpVmFsdWVPcGVyYXRvcixcbn0gZnJvbSAnLi9BZEhvY0ZpbHRlcnNWYXJpYWJsZSc7XG5pbXBvcnQgeyBlc2NhcGVVcmxQaXBlRGVsaW1pdGVycywgdG9VcmxDb21tYURlbGltaXRlZFN0cmluZywgdW5lc2NhcGVVcmxEZWxpbWl0ZXJzIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgQWRIb2NGaWx0ZXJzVmFyaWFibGVVcmxTeW5jSGFuZGxlciBpbXBsZW1lbnRzIFNjZW5lT2JqZWN0VXJsU3luY0hhbmRsZXIge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBfdmFyaWFibGU6IEFkSG9jRmlsdGVyc1ZhcmlhYmxlKSB7fVxuXG4gIHByaXZhdGUgZ2V0S2V5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGB2YXItJHt0aGlzLl92YXJpYWJsZS5zdGF0ZS5uYW1lfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0S2V5cygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFt0aGlzLmdldEtleSgpXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRVcmxTdGF0ZSgpOiBTY2VuZU9iamVjdFVybFZhbHVlcyB7XG4gICAgY29uc3QgZmlsdGVycyA9IHRoaXMuX3ZhcmlhYmxlLnN0YXRlLmZpbHRlcnM7XG5cbiAgICBpZiAoZmlsdGVycy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB7IFt0aGlzLmdldEtleSgpXTogWycnXSB9O1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlID0gZmlsdGVyc1xuICAgICAgLmZpbHRlcihpc0ZpbHRlckNvbXBsZXRlKVxuICAgICAgLm1hcCgoZmlsdGVyKSA9PiB0b0FycmF5KGZpbHRlcikubWFwKGVzY2FwZVVybFBpcGVEZWxpbWl0ZXJzKS5qb2luKCd8JykpO1xuICAgIHJldHVybiB7IFt0aGlzLmdldEtleSgpXTogdmFsdWUgfTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVGcm9tVXJsKHZhbHVlczogU2NlbmVPYmplY3RVcmxWYWx1ZXMpOiB2b2lkIHtcbiAgICBjb25zdCB1cmxWYWx1ZSA9IHZhbHVlc1t0aGlzLmdldEtleSgpXTtcblxuICAgIGlmICh1cmxWYWx1ZSA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZmlsdGVycyA9IGRlc2VyaWFsaXplVXJsVG9GaWx0ZXJzKHVybFZhbHVlKTtcbiAgICB0aGlzLl92YXJpYWJsZS5zZXRTdGF0ZSh7IGZpbHRlcnMgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZGVzZXJpYWxpemVVcmxUb0ZpbHRlcnModmFsdWU6IFNjZW5lT2JqZWN0VXJsVmFsdWUpOiBBZEhvY0ZpbHRlcldpdGhMYWJlbHNbXSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIGNvbnN0IHZhbHVlcyA9IHZhbHVlO1xuICAgIHJldHVybiB2YWx1ZXMubWFwKHRvRmlsdGVyKS5maWx0ZXIoaXNGaWx0ZXIpO1xuICB9XG5cbiAgY29uc3QgZmlsdGVyID0gdG9GaWx0ZXIodmFsdWUpO1xuICByZXR1cm4gZmlsdGVyID09PSBudWxsID8gW10gOiBbZmlsdGVyXTtcbn1cblxuZnVuY3Rpb24gdG9BcnJheShmaWx0ZXI6IEFkSG9jRmlsdGVyV2l0aExhYmVscyk6IHN0cmluZ1tdIHtcbiAgY29uc3QgcmVzdWx0ID0gW3RvVXJsQ29tbWFEZWxpbWl0ZWRTdHJpbmcoZmlsdGVyLmtleSwgZmlsdGVyLmtleUxhYmVsKSwgZmlsdGVyLm9wZXJhdG9yXTtcbiAgaWYgKGlzTXVsdGlWYWx1ZU9wZXJhdG9yKGZpbHRlci5vcGVyYXRvcikpIHtcbiAgICAvLyBUT0RPIHJlbW92ZSBleHBlY3QtZXJyb3Igd2hlbiB3ZSdyZSBvbiB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgQGdyYWZhbmEvZGF0YVxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICBmaWx0ZXIudmFsdWVzLmZvckVhY2goKHZhbHVlLCBpbmRleCkgPT4ge1xuICAgICAgcmVzdWx0LnB1c2godG9VcmxDb21tYURlbGltaXRlZFN0cmluZyh2YWx1ZSwgZmlsdGVyLnZhbHVlTGFiZWxzPy5baW5kZXhdKSk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcmVzdWx0LnB1c2godG9VcmxDb21tYURlbGltaXRlZFN0cmluZyhmaWx0ZXIudmFsdWUsIGZpbHRlci52YWx1ZUxhYmVscz8uWzBdKSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gdG9GaWx0ZXIodXJsVmFsdWU6IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCB1bmRlZmluZWQgfCBudWxsKTogQWRIb2NGaWx0ZXJXaXRoTGFiZWxzIHwgbnVsbCB7XG4gIGlmICh0eXBlb2YgdXJsVmFsdWUgIT09ICdzdHJpbmcnIHx8IHVybFZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgW2tleSwga2V5TGFiZWwsIG9wZXJhdG9yLCBfb3BlcmF0b3JMYWJlbCwgLi4udmFsdWVzXSA9IHVybFZhbHVlXG4gICAgLnNwbGl0KCd8JylcbiAgICAucmVkdWNlPHN0cmluZ1tdPigoYWNjLCB2KSA9PiB7XG4gICAgICBjb25zdCBba2V5LCBsYWJlbF0gPSB2LnNwbGl0KCcsJyk7XG5cbiAgICAgIGFjYy5wdXNoKGtleSwgbGFiZWwgPz8ga2V5KTtcblxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCBbXSlcbiAgICAubWFwKHVuZXNjYXBlVXJsRGVsaW1pdGVycyk7XG5cbiAgcmV0dXJuIHtcbiAgICBrZXksXG4gICAga2V5TGFiZWwsXG4gICAgb3BlcmF0b3IsXG4gICAgdmFsdWU6IHZhbHVlc1swXSxcbiAgICB2YWx1ZXM6IGlzTXVsdGlWYWx1ZU9wZXJhdG9yKG9wZXJhdG9yKSA/IHZhbHVlcy5maWx0ZXIoKF8sIGluZGV4KSA9PiBpbmRleCAlIDIgPT09IDApIDogdW5kZWZpbmVkLFxuICAgIHZhbHVlTGFiZWxzOiB2YWx1ZXMuZmlsdGVyKChfLCBpbmRleCkgPT4gaW5kZXggJSAyID09PSAxKSxcbiAgICBjb25kaXRpb246ICcnLFxuICB9O1xufVxuXG5mdW5jdGlvbiBpc0ZpbHRlcihmaWx0ZXI6IEFkSG9jRmlsdGVyV2l0aExhYmVscyB8IG51bGwpOiBmaWx0ZXIgaXMgQWRIb2NGaWx0ZXJXaXRoTGFiZWxzIHtcbiAgcmV0dXJuIGZpbHRlciAhPT0gbnVsbCAmJiB0eXBlb2YgZmlsdGVyLmtleSA9PT0gJ3N0cmluZycgJiYgdHlwZW9mIGZpbHRlci52YWx1ZSA9PT0gJ3N0cmluZyc7XG59XG4iXSwibmFtZXMiOlsiX2EiLCJrZXkiXSwibWFwcGluZ3MiOiI7OztBQVNPLE1BQU0sa0NBQXdFLENBQUE7QUFBQSxFQUM1RSxZQUFvQixTQUFpQyxFQUFBO0FBQWpDLElBQUEsSUFBQSxDQUFBLFNBQUEsR0FBQSxTQUFBLENBQUE7QUFBQSxHQUFrQztBQUFBLEVBRXJELE1BQWlCLEdBQUE7QUFDdkIsSUFBTyxPQUFBLENBQUEsSUFBQSxFQUFPLElBQUssQ0FBQSxTQUFBLENBQVUsS0FBTSxDQUFBLElBQUEsQ0FBQSxDQUFBLENBQUE7QUFBQSxHQUNyQztBQUFBLEVBRU8sT0FBb0IsR0FBQTtBQUN6QixJQUFPLE9BQUEsQ0FBQyxJQUFLLENBQUEsTUFBQSxFQUFRLENBQUEsQ0FBQTtBQUFB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
@@ -0,0 +1,13 @@
1
+ import { getFuzzySearcher } from '../utils.js';
2
+
3
+ function getAdhocOptionSearcher(options) {
4
+ const haystack = options.map((o) => {
5
+ var _a;
6
+ return (_a = o.label) != null ? _a : String(o.value);
7
+ });
8
+ const fuzzySearch = getFuzzySearcher(haystack);
9
+ return (search) => fuzzySearch(search).map((i) => options[i]);
10
+ }
11
+
12
+ export { getAdhocOptionSearcher };
13
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0QWRob2NPcHRpb25TZWFyY2hlci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3ZhcmlhYmxlcy9hZGhvYy9nZXRBZGhvY09wdGlvblNlYXJjaGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlbGVjdGFibGVWYWx1ZSB9IGZyb20gJ0BncmFmYW5hL2RhdGEnO1xuaW1wb3J0IHsgZ2V0RnV6enlTZWFyY2hlciB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFkaG9jT3B0aW9uU2VhcmNoZXIob3B0aW9uczogU2VsZWN0YWJsZVZhbHVlW10pIHtcbiAgY29uc3QgaGF5c3RhY2sgPSBvcHRpb25zLm1hcCgobykgPT4gby5sYWJlbCA/PyBTdHJpbmcoby52YWx1ZSkpO1xuICBjb25zdCBmdXp6eVNlYXJjaCA9IGdldEZ1enp5U2VhcmNoZXIoaGF5c3RhY2spO1xuXG4gIHJldHVybiAoc2VhcmNoOiBzdHJpbmcpID0+IGZ1enp5U2VhcmNoKHNlYXJjaCkubWFwKChpKSA9PiBvcHRpb25zW2ldKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUdPLFNBQVMsdUJBQXVCLE9BQTRCLEVBQUE7QUFDakUsRUFBQSxNQUFNLFFBQVcsR0FBQSxPQUFBLENBQVEsR0FBSSxDQUFBLENBQUMsQ0FBRyxLQUFBO0FBSm5DLElBQUEsSUFBQSxFQUFBLENBQUE7QUFJc0MsSUFBQSxPQUFBLENBQUEsRUFBQSxHQUFBLENBQUEsQ0FBRSxLQUFGLEtBQUEsSUFBQSxHQUFBLEVBQUEsR0FBVyxNQUFPLENBQUEsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFBO0FBQUEsR0FBQyxDQUFBLENBQUE7QUFDOUQsRUFBTSxNQUFBLFdBQUEsR0FBYyxpQkFBaUIsUUFBUSxDQUFBLENBQUE7QUFFN0MsRUFBTyxPQUFBLENBQUMsV0FBbUIsV0FBWSxDQUFBLE1BQU0sRUFBRSxHQUFJLENBQUEsQ0FBQyxDQUFNLEtBQUEsT0FBQSxDQUFRLENBQUUsQ0FBQSxDQUFBLENBQUE7QUFDdEU7Ozs7In0=
@@ -0,0 +1,47 @@
1
+ import { getTemplateSrv, getDataSourceSrv } from '@grafana/runtime';
2
+
3
+ let originalGetAdhocFilters = void 0;
4
+ let allActiveFilterSets = /* @__PURE__ */ new Set();
5
+ function patchGetAdhocFilters(filterVar) {
6
+ filterVar.addActivationHandler(() => {
7
+ allActiveFilterSets.add(filterVar);
8
+ return () => allActiveFilterSets.delete(filterVar);
9
+ });
10
+ if (originalGetAdhocFilters) {
11
+ return;
12
+ }
13
+ const templateSrv = getTemplateSrv();
14
+ if (!(templateSrv == null ? void 0 : templateSrv.getAdhocFilters)) {
15
+ console.log("Failed to patch getAdhocFilters");
16
+ return;
17
+ }
18
+ originalGetAdhocFilters = templateSrv.getAdhocFilters;
19
+ templateSrv.getAdhocFilters = function getAdhocFiltersScenePatch(dsName) {
20
+ var _a;
21
+ if (allActiveFilterSets.size === 0) {
22
+ return originalGetAdhocFilters.call(templateSrv, dsName);
23
+ }
24
+ const ds = getDataSourceSrv().getInstanceSettings(dsName);
25
+ if (!ds) {
26
+ return [];
27
+ }
28
+ for (const filter of allActiveFilterSets.values()) {
29
+ if (((_a = filter.state.datasource) == null ? void 0 : _a.uid) === ds.uid) {
30
+ return filter.state.filters;
31
+ }
32
+ }
33
+ return [];
34
+ }.bind(templateSrv);
35
+ }
36
+ function findActiveAdHocFilterVariableByUid(dsUid) {
37
+ var _a;
38
+ for (const filter of allActiveFilterSets.values()) {
39
+ if (((_a = filter.state.datasource) == null ? void 0 : _a.uid) === dsUid) {
40
+ return filter;
41
+ }
42
+ }
43
+ return void 0;
44
+ }
45
+
46
+ export { findActiveAdHocFilterVariableByUid, patchGetAdhocFilters };
47
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0Y2hHZXRBZGhvY0ZpbHRlcnMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy92YXJpYWJsZXMvYWRob2MvcGF0Y2hHZXRBZGhvY0ZpbHRlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0RGF0YVNvdXJjZVNydiwgZ2V0VGVtcGxhdGVTcnYgfSBmcm9tICdAZ3JhZmFuYS9ydW50aW1lJztcbmltcG9ydCB7IEFkSG9jVmFyaWFibGVGaWx0ZXIgfSBmcm9tICdAZ3JhZmFuYS9kYXRhJztcbmltcG9ydCB7IEFkSG9jRmlsdGVyc1ZhcmlhYmxlIH0gZnJvbSAnLi9BZEhvY0ZpbHRlcnNWYXJpYWJsZSc7XG5cbmxldCBvcmlnaW5hbEdldEFkaG9jRmlsdGVyczogYW55ID0gdW5kZWZpbmVkO1xubGV0IGFsbEFjdGl2ZUZpbHRlclNldHMgPSBuZXcgU2V0PEFkSG9jRmlsdGVyc1ZhcmlhYmxlPigpO1xuXG5leHBvcnQgZnVuY3Rpb24gcGF0Y2hHZXRBZGhvY0ZpbHRlcnMoZmlsdGVyVmFyOiBBZEhvY0ZpbHRlcnNWYXJpYWJsZSkge1xuICBmaWx0ZXJWYXIuYWRkQWN0aXZhdGlvbkhhbmRsZXIoKCkgPT4ge1xuICAgIGFsbEFjdGl2ZUZpbHRlclNldHMuYWRkKGZpbHRlclZhcik7XG4gICAgcmV0dXJuICgpID0+IGFsbEFjdGl2ZUZpbHRlclNldHMuZGVsZXRlKGZpbHRlclZhcik7XG4gIH0pO1xuXG4gIGlmIChvcmlnaW5hbEdldEFkaG9jRmlsdGVycykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHRlbXBsYXRlU3J2OiBhbnkgPSBnZXRUZW1wbGF0ZVNydigpO1xuICBpZiAoIXRlbXBsYXRlU3J2Py5nZXRBZGhvY0ZpbHRlcnMpIHtcbiAgICBjb25zb2xlLmxvZygnRmFpbGVkIHRvIHBhdGNoIGdldEFkaG9jRmlsdGVycycpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIG9yaWdpbmFsR2V0QWRob2NGaWx0ZXJzID0gdGVtcGxhdGVTcnYuZ2V0QWRob2NGaWx0ZXJzO1xuXG4gIHRlbXBsYXRlU3J2LmdldEFkaG9jRmlsdGVycyA9IGZ1bmN0aW9uIGdldEFkaG9jRmlsdGVyc1NjZW5lUGF0Y2goZHNOYW1lOiBzdHJpbmcpOiBBZEhvY1ZhcmlhYmxlRmlsdGVyW10ge1xuICAgIGlmIChhbGxBY3RpdmVGaWx0ZXJTZXRzLnNpemUgPT09IDApIHtcbiAgICAgIHJldHVybiBvcmlnaW5hbEdldEFkaG9jRmlsdGVycy5jYWxsKHRlbXBsYXRlU3J2LCBkc05hbWUpO1xuICAgIH1cblxuICAgIGNvbnN0IGRzID0gZ2V0RGF0YVNvdXJjZVNydigpLmdldEluc3RhbmNlU2V0dGluZ3MoZHNOYW1lKTtcbiAgICBpZiAoIWRzKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBmaWx0ZXIgb2YgYWxsQWN0aXZlRmlsdGVyU2V0cy52YWx1ZXMoKSkge1xuICAgICAgaWYgKGZpbHRlci5zdGF0ZS5kYXRhc291cmNlPy51aWQgPT09IGRzLnVpZCkge1xuICAgICAgICByZXR1cm4gZmlsdGVyLnN0YXRlLmZpbHRlcnM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIFtdO1xuICB9LmJpbmQodGVtcGxhdGVTcnYpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZEFjdGl2ZUFkSG9jRmlsdGVyVmFyaWFibGVCeVVpZChkc1VpZDogc3RyaW5nIHwgdW5kZWZpbmVkKTogQWRIb2NGaWx0ZXJzVmFyaWFibGUgfCB1bmRlZmluZWQge1xuICBmb3IgKGNvbnN0IGZpbHRlciBvZiBhbGxBY3RpdmVGaWx0ZXJTZXRzLnZhbHVlcygpKSB7XG4gICAgaWYgKGZpbHRlci5zdGF0ZS5kYXRhc291cmNlPy51aWQgPT09IGRzVWlkKSB7XG4gICAgICByZXR1cm4gZmlsdGVyO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFJQSxJQUFJLHVCQUErQixHQUFBLEtBQUEsQ0FBQSxDQUFBO0FBQ25DLElBQUksbUJBQUEsdUJBQTBCLEdBQTBCLEVBQUEsQ0FBQTtBQUVqRCxTQUFTLHFCQUFxQixTQUFpQyxFQUFBO0FBQ3BFLEVBQUEsU0FBQSxDQUFVLHFCQUFxQixNQUFNO0FBQ25DLElBQUEsbUJBQUEsQ0FBb0IsSUFBSSxTQUFTLENBQUEsQ0FBQTtBQUNqQyxJQUFPLE9BQUEsTUFBTSxtQkFBb0IsQ0FBQSxNQUFBLENBQU8sU0FBUyxDQUFBLENBQUE7QUFBQSxHQUNsRCxDQUFBLENBQUE7QUFFRCxFQUFBLElBQUksdUJBQXlCLEVBQUE7QUFDM0IsSUFBQSxPQUFBO0FBQUEsR0FDRjtBQUVBLEVBQUEsTUFBTSxjQUFtQixjQUFlLEVBQUEsQ0FBQTtBQUN4QyxFQUFJLElBQUEsRUFBQywyQ0FBYSxlQUFpQixDQUFBLEVBQUE7QUFDakMsSUFBQSxPQUFBLENBQVEsSUFBSSxpQ0FBaUMsQ0FBQSxDQUFBO0FBQzdDLElBQUEsT0FBQTtBQUFBLEdBQ0Y7QUFFQSxFQUFBLHVCQUFBLEdBQTBCLFdBQVksQ0FBQSxlQUFBLENBQUE7QUFFdEMsRUFBWSxXQUFBLENBQUEsZUFBQSxHQUFrQixTQUFTLHlCQUFBLENBQTBCLE1BQXVDLEVBQUE7QUF6QjFHLElBQUEsSUFBQSxFQUFBLENBQUE7QUEwQkksSUFBSSxJQUFBLG1CQUFBLENBQW9CLFNBQVMsQ0FBRyxFQUFBO0FBQ2xDLE1BQU8sT0FBQSx1QkFBQSxDQUF3QixJQUFLLENBQUEsV0FBQSxFQUFhLE1BQU0sQ0FBQSxDQUFBO0FBQUEsS0FDekQ7QUFFQSxJQUFBLE1BQU0sRUFBSyxHQUFBLGdCQUFBLEVBQW1CLENBQUEsbUJBQUEsQ0FBb0IsTUFBTSxDQUFBLENBQUE7QUFDeEQsSUFBQSxJQUFJLENBQUMsRUFBSSxFQUFBO0FBQ1AsTUFBQSxPQUFPLEVBQUMsQ0FBQTtBQUFBLEtBQ1Y7QUFFQSxJQUFXLEtBQUEsTUFBQSxNQUFBLElBQVUsbUJBQW9CLENBQUEsTUFBQSxFQUFVLEVBQUE7QUFDakQsTUFBQSxJQUFBLENBQUEsQ0FBSSxZQUFPLEtBQU0sQ0FBQSxVQUFBLEtBQWIsSUFBeUIsR0FBQSxLQUFBLENBQUEsR0FBQSxFQUFBLENBQUEsR0FBQSxNQUFRLEdBQUcsR0FBSyxFQUFBO0FBQzNDLFFBQUEsT0FBTyxPQUFPLEtBQU0sQ0FBQSxPQUFBLENBQUE7QUFBQSxPQUN0QjtBQUFBLEtBQ0Y7QUFFQSxJQUFBLE9BQU8sRUFBQyxDQUFBO0FBQUEsR0FDVixDQUFFLEtBQUssV0FBVyxDQUFBLENBQUE7QUFDcEIsQ0FBQTtBQUVPLFNBQVMsbUNBQW1DLEtBQTZELEVBQUE7QUE3Q2hILEVBQUEsSUFBQSxFQUFBLENBQUE7QUE4Q0UsRUFBVyxLQUFBLE1BQUEsTUFBQSxJQUFVLG1CQUFvQixDQUFBLE1BQUEsRUFBVSxFQUFBO0FBQ2pELElBQUEsSUFBQSxDQUFBLENBQUksRUFBTyxHQUFBLE1BQUEsQ0FBQSxLQUFBLENBQU0sVUFBYixLQUFBLElBQUEsR0FBQSxLQUFBLENBQUEsR0FBQSxFQUFBLENBQXlCLFNBQVEsS0FBTyxFQUFBO0FBQzFDLE1BQU8sT0FBQSxNQUFBLENBQUE7QUFBQSxLQUNUO0FBQUEsR0FDRjtBQUVBLEVBQU8sT0FBQSxLQUFBLENBQUEsQ0FBQTtBQUNUOzs7OyJ9
@@ -0,0 +1,23 @@
1
+ import React from 'react';
2
+ import { SceneObjectBase } from '../../core/SceneObjectBase.js';
3
+ import { sceneGraph } from '../../core/sceneGraph/index.js';
4
+ import { VariableValueSelectWrapper } from './VariableValueSelectors.js';
5
+
6
+ class VariableValueControl extends SceneObjectBase {
7
+ }
8
+ VariableValueControl.Component = VariableValueControlRenderer;
9
+ function VariableValueControlRenderer({ model }) {
10
+ const variable = sceneGraph.lookupVariable(model.state.variableName, model);
11
+ if (!variable) {
12
+ return null;
13
+ }
14
+ return /* @__PURE__ */ React.createElement(VariableValueSelectWrapper, {
15
+ key: variable.state.key,
16
+ variable,
17
+ layout: model.state.layout,
18
+ showAlways: true
19
+ });
20
+ }
21
+
22
+ export { VariableValueControl };
23
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmFyaWFibGVWYWx1ZUNvbnRyb2wuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy92YXJpYWJsZXMvY29tcG9uZW50cy9WYXJpYWJsZVZhbHVlQ29udHJvbC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHsgU2NlbmVPYmplY3RCYXNlIH0gZnJvbSAnLi4vLi4vY29yZS9TY2VuZU9iamVjdEJhc2UnO1xuaW1wb3J0IHsgc2NlbmVHcmFwaCB9IGZyb20gJy4uLy4uL2NvcmUvc2NlbmVHcmFwaCc7XG5pbXBvcnQgeyBDb250cm9sc0xheW91dCwgU2NlbmVDb21wb25lbnRQcm9wcywgU2NlbmVPYmplY3RTdGF0ZSB9IGZyb20gJy4uLy4uL2NvcmUvdHlwZXMnO1xuaW1wb3J0IHsgVmFyaWFibGVWYWx1ZVNlbGVjdFdyYXBwZXIgfSBmcm9tICcuL1ZhcmlhYmxlVmFsdWVTZWxlY3RvcnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFZhcmlhYmxlVmFsdWVDb250cm9sU3RhdGUgZXh0ZW5kcyBTY2VuZU9iamVjdFN0YXRlIHtcbiAgbGF5b3V0PzogQ29udHJvbHNMYXlvdXQ7XG4gIC8qKiBSZW5kZXIgdGhlIHNwZWNpZmljIHNlbGVjdCBjb250cm9sIGZvciBhIHZhcmlhYmxlICovXG4gIHZhcmlhYmxlTmFtZTogc3RyaW5nO1xuICAvKiogSGlkZSB0aGUgbGFiZWwgaW4gdGhlIHZhcmlhYmxlIHZhbHVlIGNvbnRyb2xsZXIgKi9cbiAgaGlkZUxhYmVsPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIFZhcmlhYmxlVmFsdWVDb250cm9sIGV4dGVuZHMgU2NlbmVPYmplY3RCYXNlPFZhcmlhYmxlVmFsdWVDb250cm9sU3RhdGU+IHtcbiAgcHVibGljIHN0YXRpYyBDb21wb25lbnQgPSBWYXJpYWJsZVZhbHVlQ29udHJvbFJlbmRlcmVyO1xufVxuXG5mdW5jdGlvbiBWYXJpYWJsZVZhbHVlQ29udHJvbFJlbmRlcmVyKHsgbW9kZWwgfTogU2NlbmVDb21wb25lbnRQcm9wczxWYXJpYWJsZVZhbHVlQ29udHJvbD4pIHtcbiAgY29uc3QgdmFyaWFibGUgPSBzY2VuZUdyYXBoLmxvb2t1cFZhcmlhYmxlKG1vZGVsLnN0YXRlLnZhcmlhYmxlTmFtZSwgbW9kZWwpO1xuICBpZiAoIXZhcmlhYmxlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxWYXJpYWJsZVZhbHVlU2VsZWN0V3JhcHBlclxuICAgICAga2V5PXt2YXJpYWJsZS5zdGF0ZS5rZXl9XG4gICAgICB2YXJpYWJsZT17dmFyaWFibGV9XG4gICAgICBsYXlvdXQ9e21vZGVsLnN0YXRlLmxheW91dH1cbiAgICAgIHNob3dBbHdheXM9e3RydWV9XG4gICAgLz5cbiAgKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWVPLE1BQU0sNkJBQTZCLGVBQTJDLENBQUE7QUFFckYsQ0FBQTtBQUZhLG9CQUFBLENBQ0csU0FBWSxHQUFBLDRCQUFBLENBQUE7QUFHNUIsU0FBUyw0QkFBQSxDQUE2QixFQUFFLEtBQUEsRUFBb0QsRUFBQTtBQUMxRixFQUFBLE1BQU0sV0FBVyxVQUFXLENBQUEsY0FBQSxDQUFlLEtBQU0sQ0FBQSxLQUFBLENBQU0sY0FBYyxLQUFLLENBQUEsQ0FBQTtBQUMxRSxFQUFBLElBQUksQ0FBQyxRQUFVLEVBQUE7QUFDYixJQUFPLE9BQUEsSUFBQSxDQUFBO0FBQUEsR0FDVDtBQUVBLEVBQUEsdUJBQ0csS0FBQSxDQUFBLGFBQUEsQ0FBQSwwQkFBQSxFQUFBO0FBQUEsSUFDQyxHQUFBLEVBQUssU0FBUyxLQUFNLENBQUEsR0FBQTtBQUFBLElBQ3BCLFFBQUE7QUFBQSxJQUNBLE1BQUEsRUFBUSxNQUFNLEtBQU0sQ0FBQSxNQUFBO0FBQUEsSUFDcEIsVUFBWSxFQUFBLElBQUE7QUFBQSxHQUNkLENBQUEsQ0FBQTtBQUVKOzs7OyJ9
@@ -0,0 +1,33 @@
1
+ import React, { useCallback } from 'react';
2
+ import { AutoSizeInput } from '@grafana/ui';
3
+
4
+ function VariableValueInput({ model }) {
5
+ const { value, key, loading } = model.useState();
6
+ const onBlur = useCallback(
7
+ (e) => {
8
+ model.setValue(e.currentTarget.value);
9
+ },
10
+ [model]
11
+ );
12
+ const onKeyDown = useCallback(
13
+ (e) => {
14
+ if (e.key === "Enter") {
15
+ model.setValue(e.currentTarget.value);
16
+ }
17
+ },
18
+ [model]
19
+ );
20
+ return /* @__PURE__ */ React.createElement(AutoSizeInput, {
21
+ id: key,
22
+ placeholder: "Enter value",
23
+ minWidth: 15,
24
+ maxWidth: 30,
25
+ value,
26
+ loading,
27
+ onBlur,
28
+ onKeyDown
29
+ });
30
+ }
31
+
32
+ export { VariableValueInput };
33
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmFyaWFibGVWYWx1ZUlucHV0LmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvdmFyaWFibGVzL2NvbXBvbmVudHMvVmFyaWFibGVWYWx1ZUlucHV0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IEF1dG9TaXplSW5wdXQgfSBmcm9tICdAZ3JhZmFuYS91aSc7XG5cbmltcG9ydCB7IFNjZW5lQ29tcG9uZW50UHJvcHMgfSBmcm9tICcuLi8uLi9jb3JlL3R5cGVzJztcbmltcG9ydCB7IFRleHRCb3hWYXJpYWJsZSB9IGZyb20gJy4uL3ZhcmlhbnRzL1RleHRCb3hWYXJpYWJsZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBWYXJpYWJsZVZhbHVlSW5wdXQoeyBtb2RlbCB9OiBTY2VuZUNvbXBvbmVudFByb3BzPFRleHRCb3hWYXJpYWJsZT4pIHtcbiAgY29uc3QgeyB2YWx1ZSwga2V5LCBsb2FkaW5nIH0gPSBtb2RlbC51c2VTdGF0ZSgpO1xuXG4gIGNvbnN0IG9uQmx1ciA9IHVzZUNhbGxiYWNrKFxuICAgIChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgICAgbW9kZWwuc2V0VmFsdWUoZS5jdXJyZW50VGFyZ2V0LnZhbHVlKTtcbiAgICB9LFxuICAgIFttb2RlbF1cbiAgKTtcblxuICBjb25zdCBvbktleURvd24gPSB1c2VDYWxsYmFjayhcbiAgICAoZTogUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgICAgaWYgKGUua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgIG1vZGVsLnNldFZhbHVlKGUuY3VycmVudFRhcmdldC52YWx1ZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbbW9kZWxdXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8QXV0b1NpemVJbnB1dFxuICAgICAgaWQ9e2tleX1cbiAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgdmFsdWVcIlxuICAgICAgbWluV2lkdGg9ezE1fVxuICAgICAgbWF4V2lkdGg9ezMwfVxuICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgbG9hZGluZz17bG9hZGluZ31cbiAgICAgIG9uQmx1cj17b25CbHVyfVxuICAgICAgb25LZXlEb3duPXtvbktleURvd259XG4gICAgLz5cbiAgKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFPZ0IsU0FBQSxrQkFBQSxDQUFtQixFQUFFLEtBQUEsRUFBK0MsRUFBQTtBQUNsRixFQUFBLE1BQU0sRUFBRSxLQUFPLEVBQUEsR0FBQSxFQUFLLE9BQVEsRUFBQSxHQUFJLE1BQU0sUUFBUyxFQUFBLENBQUE7QUFFL0MsRUFBQSxNQUFNLE1BQVMsR0FBQSxXQUFBO0FBQUEsSUFDYixDQUFDLENBQTJDLEtBQUE7QUFDMUMsTUFBTSxLQUFBLENBQUEsUUFBQSxDQUFTLENBQUUsQ0FBQSxhQUFBLENBQWMsS0FBSyxDQUFBLENBQUE7QUFBQSxLQUN0QztBQUFBLElBQ0EsQ0FBQyxLQUFLLENBQUE7QUFBQSxHQUNSLENBQUE7QUFFQSxFQUFBLE1BQU0sU0FBWSxHQUFBLFdBQUE7QUFBQSxJQUNoQixDQUFDLENBQTZDLEtBQUE7QUFDNUMsTUFBSSxJQUFBLENBQUEsQ0FBRSxRQUFRLE9BQVMsRUFBQTtBQUNyQixRQUFNLEtBQUEsQ0FBQSxRQUFBLENBQVMsQ0FBRSxDQUFBLGFBQUEsQ0FBYyxLQUFLLENBQUEsQ0FBQTtBQUFBLE9BQ3RDO0FBQUEsS0FDRjtBQUFBLElBQ0EsQ0FBQyxLQUFLLENBQUE7QUFBQSxHQUNSLENBQUE7QUFFQSxFQUFBLHVCQUNHLEtBQUEsQ0FBQSxhQUFBLENBQUEsYUFBQSxFQUFBO0FBQUEsSUFDQyxFQUFJLEVBQUEsR0FBQTtBQUFBLElBQ0osV0FBWSxFQUFBLGFBQUE7QUFBQSxJQUNaLFFBQVUsRUFBQSxFQUFBO0FBQUEsSUFDVixRQUFVLEVBQUEsRUFBQTtBQUFBLElBQ1YsS0FBQTtBQUFBLElBQ0EsT0FBQTtBQUFBLElBQ0EsTUFBQTtBQUFBLElBQ0EsU0FBQTtBQUFBLEdBQ0YsQ0FBQSxDQUFBO0FBRUo7Ozs7In0=