@grafana/scenes 6.7.0--canary.1091.14350229100.0 → 6.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +25 -0
- package/dist/esm/components/layout/CSSGrid/SceneCSSGridItem.js +33 -0
- package/dist/esm/dist/esm/behaviors/CursorSync.js +76 -0
- package/dist/esm/dist/esm/behaviors/LiveNowTimer.js +44 -0
- package/dist/esm/dist/esm/behaviors/SceneQueryController.js +14 -0
- package/dist/esm/dist/esm/components/EmbeddedScene.js +59 -0
- package/dist/esm/dist/esm/components/NestedScene.js +95 -0
- package/dist/esm/dist/esm/components/SceneApp/SceneApp.js +27 -0
- package/dist/esm/dist/esm/components/SceneApp/SceneAppPage.js +176 -0
- package/dist/esm/dist/esm/components/SceneApp/SceneAppPageView.js +104 -0
- package/dist/esm/dist/esm/components/SceneApp/utils.js +42 -0
- package/dist/esm/dist/esm/components/SceneByFrameRepeater.js +41 -0
- package/dist/esm/dist/esm/components/SceneByVariableRepeater.js +55 -0
- package/dist/esm/dist/esm/components/SceneCanvasText.js +32 -0
- package/dist/esm/dist/esm/components/SceneControlsSpacer.js +17 -0
- package/dist/esm/dist/esm/components/SceneDebugger/DebugDetails.js +82 -0
- package/dist/esm/dist/esm/components/SceneDebugger/DebugTreeNode.js +72 -0
- package/dist/esm/dist/esm/components/SceneDebugger/SceneDebugger.js +77 -0
- package/dist/esm/dist/esm/components/SceneReactObject.js +34 -0
- package/dist/esm/dist/esm/components/SceneRefreshPicker.js +205 -0
- package/dist/esm/dist/esm/components/SceneTimePicker.js +139 -0
- package/dist/esm/dist/esm/components/SceneTimeRangeCompare.js +240 -0
- package/dist/esm/dist/esm/components/SceneToolbarButton.js +33 -0
- package/dist/esm/dist/esm/components/VizPanel/VizPanel.js +406 -0
- package/dist/esm/dist/esm/components/VizPanel/VizPanelExploreButton.js +44 -0
- package/dist/esm/dist/esm/components/VizPanel/VizPanelMenu.js +59 -0
- package/dist/esm/dist/esm/components/VizPanel/VizPanelRenderer.js +285 -0
- package/dist/esm/dist/esm/components/VizPanel/VizPanelSeriesLimit.js +45 -0
- package/dist/esm/dist/esm/components/VizPanel/colorSeriesConfigFactory.js +72 -0
- package/dist/esm/dist/esm/components/VizPanel/registerRuntimePanelPlugin.js +11 -0
- package/dist/esm/dist/esm/components/VizPanel/seriesVisibilityConfigFactory.js +164 -0
- package/dist/esm/dist/esm/components/layout/CSSGrid/SceneCSSGridLayout.js +124 -0
- package/dist/esm/dist/esm/components/layout/LazyLoader.js +103 -0
- package/dist/esm/dist/esm/components/layout/SceneFlexLayout.js +135 -0
- package/dist/esm/dist/esm/components/layout/grid/SceneGridItem.js +30 -0
- package/dist/esm/dist/esm/components/layout/grid/SceneGridLayout.js +283 -0
- package/dist/esm/dist/esm/components/layout/grid/SceneGridLayoutRenderer.js +178 -0
- package/dist/esm/dist/esm/components/layout/grid/SceneGridRow.js +190 -0
- package/dist/esm/dist/esm/components/layout/grid/constants.js +7 -0
- package/dist/esm/dist/esm/components/layout/grid/utils.js +36 -0
- package/dist/esm/dist/esm/components/layout/split/SplitLayout.js +17 -0
- package/dist/esm/dist/esm/components/layout/split/SplitLayoutRenderer.js +29 -0
- package/dist/esm/dist/esm/components/layout/split/Splitter.js +386 -0
- package/dist/esm/dist/esm/core/SceneComponentWrapper.js +57 -0
- package/dist/esm/dist/esm/core/SceneDataNode.js +43 -0
- package/dist/esm/dist/esm/core/SceneObjectBase.js +286 -0
- package/dist/esm/dist/esm/core/SceneObjectRef.js +32 -0
- package/dist/esm/dist/esm/core/SceneTimeRange.js +231 -0
- package/dist/esm/dist/esm/core/events.js +11 -0
- package/dist/esm/dist/esm/core/sceneGraph/getTimeRange.js +10 -0
- package/dist/esm/dist/esm/core/sceneGraph/index.js +25 -0
- package/dist/esm/dist/esm/core/sceneGraph/sceneGraph.js +178 -0
- package/dist/esm/dist/esm/core/sceneGraph/utils.js +64 -0
- package/dist/esm/dist/esm/core/types.js +15 -0
- package/dist/esm/dist/esm/querying/DataLayersMerger.js +46 -0
- package/dist/esm/dist/esm/querying/ExtraQueryProvider.js +6 -0
- package/dist/esm/dist/esm/querying/RuntimeDataSource.js +6 -0
- package/dist/esm/dist/esm/querying/SceneDataLayerSet.js +100 -0
- package/dist/esm/dist/esm/querying/SceneQueryRunner.js +468 -0
- package/dist/esm/dist/esm/querying/extraQueryProcessingOperator.js +46 -0
- package/dist/esm/dist/esm/querying/getEnrichedDataRequest.js +12 -0
- package/dist/esm/dist/esm/querying/layers/SceneDataLayerBase.js +112 -0
- package/dist/esm/dist/esm/querying/layers/SceneDataLayerControls.js +51 -0
- package/dist/esm/dist/esm/querying/layers/annotations/AnnotationsDataLayer.js +130 -0
- package/dist/esm/dist/esm/querying/layers/annotations/filterAnnotations.js +85 -0
- package/dist/esm/dist/esm/querying/layers/annotations/standardAnnotationQuery.js +121 -0
- package/dist/esm/dist/esm/querying/layers/annotations/standardAnnotationsSupport.js +211 -0
- package/dist/esm/dist/esm/querying/layers/annotations/utils.js +77 -0
- package/dist/esm/dist/esm/querying/registerQueryWithController.js +41 -0
- package/dist/esm/dist/esm/services/SceneObjectUrlSyncConfig.js +30 -0
- package/dist/esm/dist/esm/services/UniqueUrlKeyMapper.js +45 -0
- package/dist/esm/dist/esm/services/UrlSyncManager.js +167 -0
- package/dist/esm/dist/esm/services/useUrlSync.js +29 -0
- package/dist/esm/dist/esm/services/utils.js +71 -0
- package/dist/esm/dist/esm/utils/ControlsLabel.js +107 -0
- package/dist/esm/dist/esm/utils/LoadingIndicator.js +19 -0
- package/dist/esm/dist/esm/utils/SafeSerializableSceneObject.js +39 -0
- package/dist/esm/dist/esm/utils/compatibility/setWindowGrafanaSceneContext.js +16 -0
- package/dist/esm/dist/esm/utils/date.js +15 -0
- package/dist/esm/dist/esm/utils/evaluateTimeRange.js +16 -0
- package/dist/esm/dist/esm/utils/explore.js +47 -0
- package/dist/esm/dist/esm/utils/getCompareSeriesRefId.js +4 -0
- package/dist/esm/dist/esm/utils/getDataSource.js +18 -0
- package/dist/esm/dist/esm/utils/getMessageFromError.js +24 -0
- package/dist/esm/dist/esm/utils/metricTree.js +53 -0
- package/dist/esm/dist/esm/utils/parseUrlParam.js +41 -0
- package/dist/esm/dist/esm/utils/utils.js +11 -0
- package/dist/esm/dist/esm/utils/wrapInSafeSerializableSceneObject.js +30 -0
- package/dist/esm/dist/esm/utils/writeSceneLog.js +12 -0
- package/dist/esm/dist/esm/variables/VariableDependencyConfig.js +150 -0
- package/dist/esm/dist/esm/variables/VariableValueRecorder.js +71 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFilterBuilder.js +24 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFilterRenderer.js +303 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js +162 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js +20 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +640 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +65 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js +146 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js +114 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js +68 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/utils.js +146 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersVariable.js +289 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js +76 -0
- package/dist/esm/dist/esm/variables/adhoc/getAdhocOptionSearcher.js +13 -0
- package/dist/esm/dist/esm/variables/adhoc/patchGetAdhocFilters.js +47 -0
- package/dist/esm/dist/esm/variables/components/VariableValueControl.js +23 -0
- package/dist/esm/dist/esm/variables/components/VariableValueInput.js +33 -0
- package/dist/esm/dist/esm/variables/components/VariableValueSelect.js +228 -0
- package/dist/esm/dist/esm/variables/components/VariableValueSelectors.js +72 -0
- package/dist/esm/dist/esm/variables/components/getOptionSearcher.js +15 -0
- package/dist/esm/dist/esm/variables/constants.js +9 -0
- package/dist/esm/dist/esm/variables/getEnrichedFiltersRequest.js +12 -0
- package/dist/esm/dist/esm/variables/groupby/GroupByVariable.js +259 -0
- package/dist/esm/dist/esm/variables/groupby/GroupByVariableUrlSyncHandler.js +63 -0
- package/dist/esm/dist/esm/variables/groupby/findActiveGroupByVariablesByUid.js +13 -0
- package/dist/esm/dist/esm/variables/interpolation/ScopedVarsVariable.js +40 -0
- package/dist/esm/dist/esm/variables/interpolation/defaults.js +21 -0
- package/dist/esm/dist/esm/variables/interpolation/fieldAccessorCache.js +13 -0
- package/dist/esm/dist/esm/variables/interpolation/formatRegistry.js +296 -0
- package/dist/esm/dist/esm/variables/interpolation/sceneInterpolator.js +87 -0
- package/dist/esm/dist/esm/variables/lookupVariable.js +20 -0
- package/dist/esm/dist/esm/variables/macros/AllVariablesMacro.js +57 -0
- package/dist/esm/dist/esm/variables/macros/contextMacros.js +43 -0
- package/dist/esm/dist/esm/variables/macros/dataMacros.js +134 -0
- package/dist/esm/dist/esm/variables/macros/index.js +26 -0
- package/dist/esm/dist/esm/variables/macros/templateProxies.js +51 -0
- package/dist/esm/dist/esm/variables/macros/timeMacros.js +86 -0
- package/dist/esm/dist/esm/variables/macros/types.js +11 -0
- package/dist/esm/dist/esm/variables/macros/urlMacros.js +56 -0
- package/dist/esm/dist/esm/variables/sets/SceneVariableSet.js +254 -0
- package/dist/esm/dist/esm/variables/types.js +11 -0
- package/dist/esm/dist/esm/variables/utils.js +172 -0
- package/dist/esm/dist/esm/variables/variants/ConstantVariable.js +38 -0
- package/dist/esm/dist/esm/variables/variants/CustomVariable.js +60 -0
- package/dist/esm/dist/esm/variables/variants/DataSourceVariable.js +88 -0
- package/dist/esm/dist/esm/variables/variants/IntervalVariable.js +117 -0
- package/dist/esm/dist/esm/variables/variants/MultiValueVariable.js +295 -0
- package/dist/esm/dist/esm/variables/variants/TestVariable.js +117 -0
- package/dist/esm/dist/esm/variables/variants/TextBoxVariable.js +61 -0
- package/dist/esm/dist/esm/variables/variants/query/QueryVariable.js +139 -0
- package/dist/esm/dist/esm/variables/variants/query/createQueryVariableRunner.js +129 -0
- package/dist/esm/dist/esm/variables/variants/query/guards.js +28 -0
- package/dist/esm/dist/esm/variables/variants/query/toMetricFindValues.js +96 -0
- package/dist/esm/dist/esm/variables/variants/query/utils.js +124 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/querying/DataProviderSharer.js +39 -0
- package/dist/esm/src/behaviors/ActWhenVariableChanged.js +27 -0
- package/dist/esm/src/behaviors/CursorSync.js +76 -0
- package/dist/esm/src/behaviors/LiveNowTimer.js +44 -0
- package/dist/esm/src/behaviors/SceneQueryController.js +60 -0
- package/dist/esm/src/behaviors/index.js +5 -0
- package/dist/esm/src/components/EmbeddedScene.js +59 -0
- package/dist/esm/src/components/NestedScene.js +95 -0
- package/dist/esm/src/components/SceneApp/SceneApp.js +37 -0
- package/dist/esm/src/components/SceneApp/SceneAppPage.js +176 -0
- package/dist/esm/src/components/SceneApp/SceneAppPageView.js +104 -0
- package/dist/esm/src/components/SceneApp/utils.js +42 -0
- package/dist/esm/src/components/SceneByFrameRepeater.js +41 -0
- package/dist/esm/src/components/SceneByVariableRepeater.js +55 -0
- package/dist/esm/src/components/SceneCanvasText.js +32 -0
- package/dist/esm/src/components/SceneControlsSpacer.js +17 -0
- package/dist/esm/src/components/SceneDebugger/DebugDetails.js +82 -0
- package/dist/esm/src/components/SceneDebugger/DebugTreeNode.js +72 -0
- package/dist/esm/src/components/SceneDebugger/SceneDebugger.js +77 -0
- package/dist/esm/src/components/SceneReactObject.js +34 -0
- package/dist/esm/src/components/SceneRefreshPicker.js +205 -0
- package/dist/esm/src/components/SceneTimePicker.js +139 -0
- package/dist/esm/src/components/SceneTimeRangeCompare.js +240 -0
- package/dist/esm/src/components/SceneToolbarButton.js +33 -0
- package/dist/esm/src/components/VizPanel/VizPanel.js +406 -0
- package/dist/esm/src/components/VizPanel/VizPanelExploreButton.js +44 -0
- package/dist/esm/src/components/VizPanel/VizPanelMenu.js +59 -0
- package/dist/esm/src/components/VizPanel/VizPanelRenderer.js +285 -0
- package/dist/esm/src/components/VizPanel/VizPanelSeriesLimit.js +45 -0
- package/dist/esm/src/components/VizPanel/colorSeriesConfigFactory.js +72 -0
- package/dist/esm/src/components/VizPanel/registerRuntimePanelPlugin.js +56 -0
- package/dist/esm/src/components/VizPanel/seriesVisibilityConfigFactory.js +164 -0
- package/dist/esm/src/components/layout/CSSGrid/SceneCSSGridLayout.js +124 -0
- package/dist/esm/src/components/layout/LazyLoader.js +103 -0
- package/dist/esm/src/components/layout/SceneFlexLayout.js +135 -0
- package/dist/esm/src/components/layout/grid/SceneGridItem.js +30 -0
- package/dist/esm/src/components/layout/grid/SceneGridLayout.js +283 -0
- package/dist/esm/src/components/layout/grid/SceneGridLayoutRenderer.js +178 -0
- package/dist/esm/src/components/layout/grid/SceneGridRow.js +190 -0
- package/dist/esm/src/components/layout/grid/constants.js +7 -0
- package/dist/esm/src/components/layout/grid/utils.js +36 -0
- package/dist/esm/src/components/layout/split/SplitLayout.js +17 -0
- package/dist/esm/src/components/layout/split/SplitLayoutRenderer.js +29 -0
- package/dist/esm/src/components/layout/split/Splitter.js +386 -0
- package/dist/esm/src/core/PanelBuilders/FieldConfigBuilder.js +100 -0
- package/dist/esm/src/core/PanelBuilders/FieldConfigBuilders.js +75 -0
- package/dist/esm/src/core/PanelBuilders/FieldConfigOverridesBuilder.js +75 -0
- package/dist/esm/src/core/PanelBuilders/PanelOptionsBuilder.js +22 -0
- package/dist/esm/src/core/PanelBuilders/PanelOptionsBuilders.js +85 -0
- package/dist/esm/src/core/PanelBuilders/StandardFieldConfigBuilders.js +52 -0
- package/dist/esm/src/core/PanelBuilders/VizConfigBuilder.js +78 -0
- package/dist/esm/src/core/PanelBuilders/VizConfigBuilders.js +114 -0
- package/dist/esm/src/core/PanelBuilders/VizPanelBuilder.js +162 -0
- package/dist/esm/src/core/PanelBuilders/index.js +116 -0
- package/dist/esm/src/core/SceneComponentWrapper.js +57 -0
- package/dist/esm/src/core/SceneDataNode.js +43 -0
- package/dist/esm/src/core/SceneObjectBase.js +286 -0
- package/dist/esm/src/core/SceneObjectRef.js +32 -0
- package/dist/esm/src/core/SceneTimeRange.js +231 -0
- package/dist/esm/src/core/SceneTimeRangeTransformerBase.js +35 -0
- package/dist/esm/src/core/SceneTimeZoneOverride.js +63 -0
- package/dist/esm/src/core/events.js +11 -0
- package/dist/esm/src/core/sceneGraph/getTimeRange.js +10 -0
- package/dist/esm/src/core/sceneGraph/index.js +25 -0
- package/dist/esm/src/core/sceneGraph/sceneGraph.js +178 -0
- package/dist/esm/src/core/sceneGraph/utils.js +64 -0
- package/dist/esm/src/core/types.js +15 -0
- package/dist/esm/src/index.js +108 -0
- package/dist/esm/src/querying/DataLayersMerger.js +46 -0
- package/dist/esm/src/querying/DataProviderProxy.js +37 -0
- package/dist/esm/src/querying/DataProviderSharer.js +108 -0
- package/dist/esm/src/querying/ExtraQueryProvider.js +6 -0
- package/dist/esm/src/querying/RuntimeDataSource.js +49 -0
- package/dist/esm/src/querying/SceneDataLayerSet.js +100 -0
- package/dist/esm/src/querying/SceneDataTransformer.js +178 -0
- package/dist/esm/src/querying/SceneQueryRunner.js +468 -0
- package/dist/esm/src/querying/extraQueryProcessingOperator.js +46 -0
- package/dist/esm/src/querying/getEnrichedDataRequest.js +12 -0
- package/dist/esm/src/querying/layers/SceneDataLayerBase.js +112 -0
- package/dist/esm/src/querying/layers/SceneDataLayerControls.js +51 -0
- package/dist/esm/src/querying/layers/annotations/AnnotationsDataLayer.js +130 -0
- package/dist/esm/src/querying/layers/annotations/filterAnnotations.js +85 -0
- package/dist/esm/src/querying/layers/annotations/standardAnnotationQuery.js +121 -0
- package/dist/esm/src/querying/layers/annotations/standardAnnotationsSupport.js +211 -0
- package/dist/esm/src/querying/layers/annotations/utils.js +77 -0
- package/dist/esm/src/querying/layers/index.js +2 -0
- package/dist/esm/src/querying/registerQueryWithController.js +41 -0
- package/dist/esm/src/services/SceneObjectUrlSyncConfig.js +30 -0
- package/dist/esm/src/services/UniqueUrlKeyMapper.js +45 -0
- package/dist/esm/src/services/UrlSyncContextProvider.js +17 -0
- package/dist/esm/src/services/UrlSyncManager.js +167 -0
- package/dist/esm/src/services/useUrlSync.js +29 -0
- package/dist/esm/src/services/utils.js +75 -0
- package/dist/esm/src/utils/ControlsLabel.js +107 -0
- package/dist/esm/src/utils/LoadingIndicator.js +19 -0
- package/dist/esm/src/utils/SafeSerializableSceneObject.js +39 -0
- package/dist/esm/src/utils/compatibility/setWindowGrafanaSceneContext.js +16 -0
- package/dist/esm/src/utils/date.js +15 -0
- package/dist/esm/src/utils/evaluateTimeRange.js +16 -0
- package/dist/esm/src/utils/explore.js +47 -0
- package/dist/esm/src/utils/getCompareSeriesRefId.js +4 -0
- package/dist/esm/src/utils/getDataSource.js +18 -0
- package/dist/esm/src/utils/getMessageFromError.js +24 -0
- package/dist/esm/src/utils/metricTree.js +53 -0
- package/dist/esm/src/utils/parseUrlParam.js +41 -0
- package/dist/esm/src/utils/utils.js +11 -0
- package/dist/esm/src/utils/wrapInSafeSerializableSceneObject.js +30 -0
- package/dist/esm/src/utils/writeSceneLog.js +12 -0
- package/dist/esm/src/variables/VariableDependencyConfig.js +150 -0
- package/dist/esm/src/variables/VariableValueRecorder.js +71 -0
- package/dist/esm/src/variables/adhoc/AdHocFilterBuilder.js +24 -0
- package/dist/esm/src/variables/adhoc/AdHocFilterRenderer.js +303 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js +162 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js +20 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +640 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +65 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js +146 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js +114 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js +68 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/utils.js +146 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersVariable.js +289 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js +76 -0
- package/dist/esm/src/variables/adhoc/getAdhocOptionSearcher.js +13 -0
- package/dist/esm/src/variables/adhoc/patchGetAdhocFilters.js +47 -0
- package/dist/esm/src/variables/components/VariableValueControl.js +23 -0
- package/dist/esm/src/variables/components/VariableValueInput.js +33 -0
- package/dist/esm/src/variables/components/VariableValueSelect.js +228 -0
- package/dist/esm/src/variables/components/VariableValueSelectors.js +72 -0
- package/dist/esm/src/variables/components/getOptionSearcher.js +15 -0
- package/dist/esm/src/variables/constants.js +9 -0
- package/dist/esm/src/variables/getEnrichedFiltersRequest.js +12 -0
- package/dist/esm/src/variables/groupby/GroupByVariable.js +259 -0
- package/dist/esm/src/variables/groupby/GroupByVariableUrlSyncHandler.js +63 -0
- package/dist/esm/src/variables/groupby/findActiveGroupByVariablesByUid.js +13 -0
- package/dist/esm/src/variables/interpolation/ScopedVarsVariable.js +40 -0
- package/dist/esm/src/variables/interpolation/defaults.js +21 -0
- package/dist/esm/src/variables/interpolation/fieldAccessorCache.js +13 -0
- package/dist/esm/src/variables/interpolation/formatRegistry.js +296 -0
- package/dist/esm/src/variables/interpolation/sceneInterpolator.js +87 -0
- package/dist/esm/src/variables/lookupVariable.js +20 -0
- package/dist/esm/src/variables/macros/AllVariablesMacro.js +57 -0
- package/dist/esm/src/variables/macros/contextMacros.js +43 -0
- package/dist/esm/src/variables/macros/dataMacros.js +134 -0
- package/dist/esm/src/variables/macros/index.js +35 -0
- package/dist/esm/src/variables/macros/templateProxies.js +51 -0
- package/dist/esm/src/variables/macros/timeMacros.js +86 -0
- package/dist/esm/src/variables/macros/types.js +11 -0
- package/dist/esm/src/variables/macros/urlMacros.js +56 -0
- package/dist/esm/src/variables/sets/SceneVariableSet.js +254 -0
- package/dist/esm/src/variables/types.js +11 -0
- package/dist/esm/src/variables/utils.js +172 -0
- package/dist/esm/src/variables/variants/ConstantVariable.js +38 -0
- package/dist/esm/src/variables/variants/CustomVariable.js +60 -0
- package/dist/esm/src/variables/variants/DataSourceVariable.js +88 -0
- package/dist/esm/src/variables/variants/IntervalVariable.js +117 -0
- package/dist/esm/src/variables/variants/JsonVariable.js +193 -0
- package/dist/esm/src/variables/variants/LocalValueVariable.js +56 -0
- package/dist/esm/src/variables/variants/MultiValueVariable.js +295 -0
- package/dist/esm/src/variables/variants/TestVariable.js +117 -0
- package/dist/esm/src/variables/variants/TextBoxVariable.js +61 -0
- package/dist/esm/src/variables/variants/guards.js +27 -0
- package/dist/esm/src/variables/variants/query/QueryVariable.js +139 -0
- package/dist/esm/src/variables/variants/query/createQueryVariableRunner.js +129 -0
- package/dist/esm/src/variables/variants/query/guards.js +28 -0
- package/dist/esm/src/variables/variants/query/toMetricFindValues.js +96 -0
- package/dist/esm/src/variables/variants/query/utils.js +124 -0
- package/dist/esm/variables/components/VariableValueSelect.js +13 -9
- package/dist/esm/variables/components/VariableValueSelect.js.map +1 -1
- package/dist/esm/variables/variants/ConstantVariable.js +22 -0
- package/dist/esm/variables/variants/ConstantVariable.js.map +1 -1
- package/dist/esm/variables/variants/CustomVariable.js +3 -2
- package/dist/esm/variables/variants/CustomVariable.js.map +1 -1
- package/dist/esm/variables/variants/DataSourceVariable.js +3 -2
- package/dist/esm/variables/variants/DataSourceVariable.js.map +1 -1
- package/dist/esm/variables/variants/JsonVariable.js +96 -0
- package/dist/esm/variables/variants/TestVariable.js +3 -2
- package/dist/esm/variables/variants/TestVariable.js.map +1 -1
- package/dist/esm/variables/variants/json/JsonVariable.js +95 -0
- package/dist/esm/variables/variants/json/JsonVariableOptionProviders.js +70 -0
- package/dist/esm/variables/variants/query/QueryVariable.js +3 -2
- package/dist/esm/variables/variants/query/QueryVariable.js.map +1 -1
- package/dist/index.d.ts +14 -6
- package/dist/index.js +35 -13
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
import React, { useMemo, useState, useEffect } from 'react';
|
|
2
|
+
import { allActiveGroupByVariables } from './findActiveGroupByVariablesByUid.js';
|
|
3
|
+
import { sceneGraph } from '../../core/sceneGraph/index.js';
|
|
4
|
+
import { MultiValueVariable } from '../variants/MultiValueVariable.js';
|
|
5
|
+
import { map, of, from, mergeMap, tap, take, lastValueFrom } from 'rxjs';
|
|
6
|
+
import { getDataSource } from '../../utils/getDataSource.js';
|
|
7
|
+
import { MultiSelect } from '@grafana/ui';
|
|
8
|
+
import { isArray } from 'lodash';
|
|
9
|
+
import { dataFromResponse, getQueriesForVariables, responseHasError, handleOptionGroups } from '../utils.js';
|
|
10
|
+
import { OptionWithCheckbox } from '../components/VariableValueSelect.js';
|
|
11
|
+
import { GroupByVariableUrlSyncHandler } from './GroupByVariableUrlSyncHandler.js';
|
|
12
|
+
import { getOptionSearcher } from '../components/getOptionSearcher.js';
|
|
13
|
+
import { getEnrichedFiltersRequest } from '../getEnrichedFiltersRequest.js';
|
|
14
|
+
import { wrapInSafeSerializableSceneObject } from '../../utils/wrapInSafeSerializableSceneObject.js';
|
|
15
|
+
|
|
16
|
+
var __defProp = Object.defineProperty;
|
|
17
|
+
var __defProps = Object.defineProperties;
|
|
18
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
19
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
20
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
21
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
22
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
23
|
+
var __spreadValues = (a, b) => {
|
|
24
|
+
for (var prop in b || (b = {}))
|
|
25
|
+
if (__hasOwnProp.call(b, prop))
|
|
26
|
+
__defNormalProp(a, prop, b[prop]);
|
|
27
|
+
if (__getOwnPropSymbols)
|
|
28
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
29
|
+
if (__propIsEnum.call(b, prop))
|
|
30
|
+
__defNormalProp(a, prop, b[prop]);
|
|
31
|
+
}
|
|
32
|
+
return a;
|
|
33
|
+
};
|
|
34
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
35
|
+
class GroupByVariable extends MultiValueVariable {
|
|
36
|
+
constructor(initialState) {
|
|
37
|
+
super(__spreadProps(__spreadValues({
|
|
38
|
+
isMulti: true,
|
|
39
|
+
name: "",
|
|
40
|
+
value: [],
|
|
41
|
+
text: [],
|
|
42
|
+
options: [],
|
|
43
|
+
datasource: null,
|
|
44
|
+
baseFilters: [],
|
|
45
|
+
applyMode: "auto",
|
|
46
|
+
layout: "horizontal",
|
|
47
|
+
type: "groupby"
|
|
48
|
+
}, initialState), {
|
|
49
|
+
noValueOnClear: true
|
|
50
|
+
}));
|
|
51
|
+
this.isLazy = true;
|
|
52
|
+
this._urlSync = new GroupByVariableUrlSyncHandler(this);
|
|
53
|
+
this._getKeys = async (ds) => {
|
|
54
|
+
var _a, _b, _c;
|
|
55
|
+
const override = await ((_b = (_a = this.state).getTagKeysProvider) == null ? void 0 : _b.call(_a, this, null));
|
|
56
|
+
if (override && override.replace) {
|
|
57
|
+
return override.values;
|
|
58
|
+
}
|
|
59
|
+
if (this.state.defaultOptions) {
|
|
60
|
+
return this.state.defaultOptions.concat(dataFromResponse((_c = override == null ? void 0 : override.values) != null ? _c : []));
|
|
61
|
+
}
|
|
62
|
+
if (!ds.getTagKeys) {
|
|
63
|
+
return [];
|
|
64
|
+
}
|
|
65
|
+
const queries = getQueriesForVariables(this);
|
|
66
|
+
const otherFilters = this.state.baseFilters || [];
|
|
67
|
+
const timeRange = sceneGraph.getTimeRange(this).state.value;
|
|
68
|
+
const response = await ds.getTagKeys(__spreadValues({
|
|
69
|
+
filters: otherFilters,
|
|
70
|
+
queries,
|
|
71
|
+
timeRange
|
|
72
|
+
}, getEnrichedFiltersRequest(this)));
|
|
73
|
+
if (responseHasError(response)) {
|
|
74
|
+
this.setState({ error: response.error.message });
|
|
75
|
+
}
|
|
76
|
+
let keys = dataFromResponse(response);
|
|
77
|
+
if (override) {
|
|
78
|
+
keys = keys.concat(dataFromResponse(override.values));
|
|
79
|
+
}
|
|
80
|
+
const tagKeyRegexFilter = this.state.tagKeyRegexFilter;
|
|
81
|
+
if (tagKeyRegexFilter) {
|
|
82
|
+
keys = keys.filter((f) => f.text.match(tagKeyRegexFilter));
|
|
83
|
+
}
|
|
84
|
+
return keys;
|
|
85
|
+
};
|
|
86
|
+
this.addActivationHandler(() => {
|
|
87
|
+
allActiveGroupByVariables.add(this);
|
|
88
|
+
return () => allActiveGroupByVariables.delete(this);
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
validateAndUpdate() {
|
|
92
|
+
return this.getValueOptions({}).pipe(
|
|
93
|
+
map((options) => {
|
|
94
|
+
this._updateValueGivenNewOptions(options);
|
|
95
|
+
return {};
|
|
96
|
+
})
|
|
97
|
+
);
|
|
98
|
+
}
|
|
99
|
+
_updateValueGivenNewOptions(options) {
|
|
100
|
+
const { value: currentValue, text: currentText } = this.state;
|
|
101
|
+
const stateUpdate = {
|
|
102
|
+
options,
|
|
103
|
+
loading: false,
|
|
104
|
+
value: currentValue != null ? currentValue : [],
|
|
105
|
+
text: currentText != null ? currentText : []
|
|
106
|
+
};
|
|
107
|
+
this.setState(stateUpdate);
|
|
108
|
+
}
|
|
109
|
+
getValueOptions(args) {
|
|
110
|
+
if (this.state.defaultOptions) {
|
|
111
|
+
return of(
|
|
112
|
+
this.state.defaultOptions.map((o) => ({
|
|
113
|
+
label: o.text,
|
|
114
|
+
value: String(o.value),
|
|
115
|
+
group: o.group
|
|
116
|
+
}))
|
|
117
|
+
);
|
|
118
|
+
}
|
|
119
|
+
this.setState({ loading: true, error: null });
|
|
120
|
+
return from(
|
|
121
|
+
getDataSource(this.state.datasource, {
|
|
122
|
+
__sceneObject: wrapInSafeSerializableSceneObject(this)
|
|
123
|
+
})
|
|
124
|
+
).pipe(
|
|
125
|
+
mergeMap((ds) => {
|
|
126
|
+
return from(this._getKeys(ds)).pipe(
|
|
127
|
+
tap((response) => {
|
|
128
|
+
if (responseHasError(response)) {
|
|
129
|
+
this.setState({ error: response.error.message });
|
|
130
|
+
}
|
|
131
|
+
}),
|
|
132
|
+
map((response) => dataFromResponse(response)),
|
|
133
|
+
take(1),
|
|
134
|
+
mergeMap((data) => {
|
|
135
|
+
const a = data.map((i) => {
|
|
136
|
+
return {
|
|
137
|
+
label: i.text,
|
|
138
|
+
value: i.value ? String(i.value) : i.text,
|
|
139
|
+
group: i.group
|
|
140
|
+
};
|
|
141
|
+
});
|
|
142
|
+
return of(a);
|
|
143
|
+
})
|
|
144
|
+
);
|
|
145
|
+
})
|
|
146
|
+
);
|
|
147
|
+
}
|
|
148
|
+
getDefaultMultiState(options) {
|
|
149
|
+
return { value: [], text: [] };
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
GroupByVariable.Component = GroupByVariableRenderer;
|
|
153
|
+
function GroupByVariableRenderer({ model }) {
|
|
154
|
+
const {
|
|
155
|
+
value,
|
|
156
|
+
text,
|
|
157
|
+
key,
|
|
158
|
+
maxVisibleValues,
|
|
159
|
+
noValueOnClear,
|
|
160
|
+
options,
|
|
161
|
+
includeAll,
|
|
162
|
+
allowCustomValue = true
|
|
163
|
+
} = model.useState();
|
|
164
|
+
const values = useMemo(() => {
|
|
165
|
+
const arrayValue = isArray(value) ? value : [value];
|
|
166
|
+
const arrayText = isArray(text) ? text : [text];
|
|
167
|
+
return arrayValue.map((value2, idx) => {
|
|
168
|
+
var _a;
|
|
169
|
+
return {
|
|
170
|
+
value: value2,
|
|
171
|
+
label: String((_a = arrayText[idx]) != null ? _a : value2)
|
|
172
|
+
};
|
|
173
|
+
});
|
|
174
|
+
}, [value, text]);
|
|
175
|
+
const [isFetchingOptions, setIsFetchingOptions] = useState(false);
|
|
176
|
+
const [isOptionsOpen, setIsOptionsOpen] = useState(false);
|
|
177
|
+
const [inputValue, setInputValue] = useState("");
|
|
178
|
+
const [uncommittedValue, setUncommittedValue] = useState(values);
|
|
179
|
+
const optionSearcher = useMemo(() => getOptionSearcher(options, includeAll), [options, includeAll]);
|
|
180
|
+
useEffect(() => {
|
|
181
|
+
setUncommittedValue(values);
|
|
182
|
+
}, [values]);
|
|
183
|
+
const onInputChange = (value2, { action }) => {
|
|
184
|
+
if (action === "input-change") {
|
|
185
|
+
setInputValue(value2);
|
|
186
|
+
if (model.onSearchChange) {
|
|
187
|
+
model.onSearchChange(value2);
|
|
188
|
+
}
|
|
189
|
+
return value2;
|
|
190
|
+
}
|
|
191
|
+
if (action === "input-blur") {
|
|
192
|
+
setInputValue("");
|
|
193
|
+
return "";
|
|
194
|
+
}
|
|
195
|
+
return inputValue;
|
|
196
|
+
};
|
|
197
|
+
const filteredOptions = useMemo(
|
|
198
|
+
() => handleOptionGroups(optionSearcher(inputValue).map(toSelectableValue)),
|
|
199
|
+
[optionSearcher, inputValue]
|
|
200
|
+
);
|
|
201
|
+
return /* @__PURE__ */ React.createElement(MultiSelect, {
|
|
202
|
+
"data-testid": `GroupBySelect-${key}`,
|
|
203
|
+
id: key,
|
|
204
|
+
placeholder: "Select value",
|
|
205
|
+
width: "auto",
|
|
206
|
+
allowCustomValue,
|
|
207
|
+
inputValue,
|
|
208
|
+
value: uncommittedValue,
|
|
209
|
+
noMultiValueWrap: true,
|
|
210
|
+
maxVisibleValues: maxVisibleValues != null ? maxVisibleValues : 5,
|
|
211
|
+
tabSelectsValue: false,
|
|
212
|
+
virtualized: true,
|
|
213
|
+
options: filteredOptions,
|
|
214
|
+
filterOption: filterNoOp,
|
|
215
|
+
closeMenuOnSelect: false,
|
|
216
|
+
isOpen: isOptionsOpen,
|
|
217
|
+
isClearable: true,
|
|
218
|
+
hideSelectedOptions: false,
|
|
219
|
+
isLoading: isFetchingOptions,
|
|
220
|
+
components: { Option: OptionWithCheckbox },
|
|
221
|
+
onInputChange,
|
|
222
|
+
onBlur: () => {
|
|
223
|
+
model.changeValueTo(
|
|
224
|
+
uncommittedValue.map((x) => x.value),
|
|
225
|
+
uncommittedValue.map((x) => x.label)
|
|
226
|
+
);
|
|
227
|
+
},
|
|
228
|
+
onChange: (newValue, action) => {
|
|
229
|
+
if (action.action === "clear" && noValueOnClear) {
|
|
230
|
+
model.changeValueTo([]);
|
|
231
|
+
}
|
|
232
|
+
setUncommittedValue(newValue);
|
|
233
|
+
},
|
|
234
|
+
onOpenMenu: async () => {
|
|
235
|
+
setIsFetchingOptions(true);
|
|
236
|
+
await lastValueFrom(model.validateAndUpdate());
|
|
237
|
+
setIsFetchingOptions(false);
|
|
238
|
+
setIsOptionsOpen(true);
|
|
239
|
+
},
|
|
240
|
+
onCloseMenu: () => {
|
|
241
|
+
setIsOptionsOpen(false);
|
|
242
|
+
}
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
const filterNoOp = () => true;
|
|
246
|
+
function toSelectableValue(input) {
|
|
247
|
+
const { label, value, group } = input;
|
|
248
|
+
const result = {
|
|
249
|
+
label,
|
|
250
|
+
value
|
|
251
|
+
};
|
|
252
|
+
if (group) {
|
|
253
|
+
result.group = group;
|
|
254
|
+
}
|
|
255
|
+
return result;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
export { GroupByVariable, GroupByVariableRenderer };
|
|
259
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JvdXBCeVZhcmlhYmxlLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvdmFyaWFibGVzL2dyb3VwYnkvR3JvdXBCeVZhcmlhYmxlLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEFkSG9jVmFyaWFibGVGaWx0ZXIsIERhdGFTb3VyY2VBcGksIEdldFRhZ1Jlc3BvbnNlLCBNZXRyaWNGaW5kVmFsdWUsIFNlbGVjdGFibGVWYWx1ZSB9IGZyb20gJ0BncmFmYW5hL2RhdGEnO1xuaW1wb3J0IHsgYWxsQWN0aXZlR3JvdXBCeVZhcmlhYmxlcyB9IGZyb20gJy4vZmluZEFjdGl2ZUdyb3VwQnlWYXJpYWJsZXNCeVVpZCc7XG5pbXBvcnQgeyBEYXRhU291cmNlUmVmLCBWYXJpYWJsZVR5cGUgfSBmcm9tICdAZ3JhZmFuYS9zY2hlbWEnO1xuaW1wb3J0IHsgU2NlbmVDb21wb25lbnRQcm9wcywgQ29udHJvbHNMYXlvdXQsIFNjZW5lT2JqZWN0VXJsU3luY0hhbmRsZXIgfSBmcm9tICcuLi8uLi9jb3JlL3R5cGVzJztcbmltcG9ydCB7IHNjZW5lR3JhcGggfSBmcm9tICcuLi8uLi9jb3JlL3NjZW5lR3JhcGgnO1xuaW1wb3J0IHsgVmFsaWRhdGVBbmRVcGRhdGVSZXN1bHQsIFZhcmlhYmxlVmFsdWVPcHRpb24sIFZhcmlhYmxlVmFsdWVTaW5nbGUgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBNdWx0aVZhbHVlVmFyaWFibGUsIE11bHRpVmFsdWVWYXJpYWJsZVN0YXRlLCBWYXJpYWJsZUdldE9wdGlvbnNBcmdzIH0gZnJvbSAnLi4vdmFyaWFudHMvTXVsdGlWYWx1ZVZhcmlhYmxlJztcbmltcG9ydCB7IGZyb20sIGxhc3RWYWx1ZUZyb20sIG1hcCwgbWVyZ2VNYXAsIE9ic2VydmFibGUsIG9mLCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGdldERhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi91dGlscy9nZXREYXRhU291cmNlJztcbmltcG9ydCB7IElucHV0QWN0aW9uTWV0YSwgTXVsdGlTZWxlY3QgfSBmcm9tICdAZ3JhZmFuYS91aSc7XG5pbXBvcnQgeyBpc0FycmF5IH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGRhdGFGcm9tUmVzcG9uc2UsIGdldFF1ZXJpZXNGb3JWYXJpYWJsZXMsIGhhbmRsZU9wdGlvbkdyb3VwcywgcmVzcG9uc2VIYXNFcnJvciB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IE9wdGlvbldpdGhDaGVja2JveCB9IGZyb20gJy4uL2NvbXBvbmVudHMvVmFyaWFibGVWYWx1ZVNlbGVjdCc7XG5pbXBvcnQgeyBHcm91cEJ5VmFyaWFibGVVcmxTeW5jSGFuZGxlciB9IGZyb20gJy4vR3JvdXBCeVZhcmlhYmxlVXJsU3luY0hhbmRsZXInO1xuaW1wb3J0IHsgZ2V0T3B0aW9uU2VhcmNoZXIgfSBmcm9tICcuLi9jb21wb25lbnRzL2dldE9wdGlvblNlYXJjaGVyJztcbmltcG9ydCB7IGdldEVucmljaGVkRmlsdGVyc1JlcXVlc3QgfSBmcm9tICcuLi9nZXRFbnJpY2hlZEZpbHRlcnNSZXF1ZXN0JztcbmltcG9ydCB7IHdyYXBJblNhZmVTZXJpYWxpemFibGVTY2VuZU9iamVjdCB9IGZyb20gJy4uLy4uL3V0aWxzL3dyYXBJblNhZmVTZXJpYWxpemFibGVTY2VuZU9iamVjdCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgR3JvdXBCeVZhcmlhYmxlU3RhdGUgZXh0ZW5kcyBNdWx0aVZhbHVlVmFyaWFibGVTdGF0ZSB7XG4gIC8qKiBEZWZhdWx0cyB0byBcIkdyb3VwXCIgKi9cbiAgbmFtZTogc3RyaW5nO1xuICAvKiogVGhlIHZpc2libGUga2V5cyB0byBncm91cCBvbiAqL1xuICAvLyBUT0RPIHJldmlldyB0aGlzIHR5cGUgYW5kIG5hbWUgKG5hbWluZyBpcyBoYXJkKVxuICBkZWZhdWx0T3B0aW9ucz86IE1ldHJpY0ZpbmRWYWx1ZVtdO1xuICAvKiogQmFzZSBmaWx0ZXJzIHRvIGFsd2F5cyBhcHBseSB3aGVuIGxvb2tpbmcgdXAga2V5cyAqL1xuICBiYXNlRmlsdGVycz86IEFkSG9jVmFyaWFibGVGaWx0ZXJbXTtcbiAgLyoqIERhdGFzb3VyY2UgdG8gdXNlIGZvciBnZXRUYWdLZXlzIGFuZCBhbHNvIGNvbnRyb2xzIHdoaWNoIHNjZW5lIHF1ZXJpZXMgdGhlIGdyb3VwIGJ5IHNob3VsZCBhcHBseSB0byAqL1xuICBkYXRhc291cmNlOiBEYXRhU291cmNlUmVmIHwgbnVsbDtcbiAgLyoqIENvbnRyb2xzIGlmIHRoZSBncm91cCBieSBjYW4gYmUgY2hhbmdlZCAqL1xuICByZWFkT25seT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBAZXhwZXJpbWVudGFsXG4gICAqIENvbnRyb2xzIHRoZSBsYXlvdXQgYW5kIGRlc2lnbiBvZiB0aGUgbGFiZWwuXG4gICAqIFZlcnRpY2FsIGxheW91dCBkb2VzIG5vdCB5ZXQgc3VwcG9ydCBvcGVyYXRvciBzZWxlY3Rvci5cbiAgICovXG4gIGxheW91dD86IENvbnRyb2xzTGF5b3V0O1xuICAvKipcbiAgICogRGVmYXVsdHMgdG8gc2FtZS1kYXRhc291cmNlIHdoaWNoIG1lYW5zIGdyb3VwIGJ5IHdpbGwgYXV0b21hdGljYWxseSBiZSBhcHBsaWVkIHRvIGFsbCBxdWVyaWVzIHdpdGggdGhlIHNhbWUgZGF0YSBzb3VyY2UgYXMgdGhpcyBHcm91cEJ5U2V0LlxuICAgKiBJbiBtYW51YWwgbW9kZSBubyBxdWVyaWVzIGFyZSByZS1ydW4gb24gY2hhbmdlcywgYW5kIHlvdSBoYXZlIHRvIG1hbnVhbGx5IGFwcGx5IHRoZSBmaWx0ZXIgdG8gd2hhdGV2ZXIgcXVlcmllcyB5b3Ugd2FudC5cbiAgICovXG4gIGFwcGx5TW9kZT86ICdhdXRvJyB8ICdtYW51YWwnO1xuICAvKipcbiAgICogRmlsdGVyIG91dCB0aGUga2V5cyB0aGF0IGRvIG5vdCBtYXRjaCB0aGUgcmVnZXguXG4gICAqL1xuICB0YWdLZXlSZWdleEZpbHRlcj86IFJlZ0V4cDtcbiAgLyoqXG4gICAqIEV4dGVuc2lvbiBob29rIGZvciBjdXN0b21pemluZyB0aGUga2V5IGxvb2t1cC5cbiAgICogUmV0dXJuIHJlcGxhY2U6IHRydWUgaWYgeW91IHdhbnQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgbG9va3VwXG4gICAqIFJldHVybiByZXBsYWNlOiBmYWxzZSBpZiB5b3Ugd2FudCB0byBjb21iaW5lIHRoZSByZXN1bHRzIHdpdGggdGhlIGRlZmF1bHQgbG9va3VwXG4gICAqL1xuICBnZXRUYWdLZXlzUHJvdmlkZXI/OiBnZXRUYWdLZXlzUHJvdmlkZXI7XG59XG5cbmV4cG9ydCB0eXBlIGdldFRhZ0tleXNQcm92aWRlciA9IChcbiAgc2V0OiBHcm91cEJ5VmFyaWFibGUsXG4gIGN1cnJlbnRLZXk6IHN0cmluZyB8IG51bGxcbikgPT4gUHJvbWlzZTx7IHJlcGxhY2U/OiBib29sZWFuOyB2YWx1ZXM6IE1ldHJpY0ZpbmRWYWx1ZVtdIHwgR2V0VGFnUmVzcG9uc2UgfT47XG5cbmV4cG9ydCBjbGFzcyBHcm91cEJ5VmFyaWFibGUgZXh0ZW5kcyBNdWx0aVZhbHVlVmFyaWFibGU8R3JvdXBCeVZhcmlhYmxlU3RhdGU+IHtcbiAgc3RhdGljIENvbXBvbmVudCA9IEdyb3VwQnlWYXJpYWJsZVJlbmRlcmVyO1xuICBpc0xhenkgPSB0cnVlO1xuXG4gIHByb3RlY3RlZCBfdXJsU3luYzogU2NlbmVPYmplY3RVcmxTeW5jSGFuZGxlciA9IG5ldyBHcm91cEJ5VmFyaWFibGVVcmxTeW5jSGFuZGxlcih0aGlzKTtcblxuICBwdWJsaWMgdmFsaWRhdGVBbmRVcGRhdGUoKTogT2JzZXJ2YWJsZTxWYWxpZGF0ZUFuZFVwZGF0ZVJlc3VsdD4ge1xuICAgIHJldHVybiB0aGlzLmdldFZhbHVlT3B0aW9ucyh7fSkucGlwZShcbiAgICAgIG1hcCgob3B0aW9ucykgPT4ge1xuICAgICAgICB0aGlzLl91cGRhdGVWYWx1ZUdpdmVuTmV3T3B0aW9ucyhvcHRpb25zKTtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlVmFsdWVHaXZlbk5ld09wdGlvbnMob3B0aW9uczogVmFyaWFibGVWYWx1ZU9wdGlvbltdKSB7XG4gICAgY29uc3QgeyB2YWx1ZTogY3VycmVudFZhbHVlLCB0ZXh0OiBjdXJyZW50VGV4dCB9ID0gdGhpcy5zdGF0ZTtcblxuICAgIGNvbnN0IHN0YXRlVXBkYXRlOiBQYXJ0aWFsPE11bHRpVmFsdWVWYXJpYWJsZVN0YXRlPiA9IHtcbiAgICAgIG9wdGlvbnMsXG4gICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICAgIHZhbHVlOiBjdXJyZW50VmFsdWUgPz8gW10sXG4gICAgICB0ZXh0OiBjdXJyZW50VGV4dCA/PyBbXSxcbiAgICB9O1xuXG4gICAgdGhpcy5zZXRTdGF0ZShzdGF0ZVVwZGF0ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWVPcHRpb25zKGFyZ3M6IFZhcmlhYmxlR2V0T3B0aW9uc0FyZ3MpOiBPYnNlcnZhYmxlPFZhcmlhYmxlVmFsdWVPcHRpb25bXT4ge1xuICAgIC8vIFdoZW4gZGVmYXVsdCBkaW1lbnNpb25zIGFyZSBwcm92aWRlZCwgcmV0dXJuIHRoZSBzdGF0aWMgbGlzdFxuICAgIGlmICh0aGlzLnN0YXRlLmRlZmF1bHRPcHRpb25zKSB7XG4gICAgICByZXR1cm4gb2YoXG4gICAgICAgIHRoaXMuc3RhdGUuZGVmYXVsdE9wdGlvbnMubWFwKChvKSA9PiAoe1xuICAgICAgICAgIGxhYmVsOiBvLnRleHQsXG4gICAgICAgICAgdmFsdWU6IFN0cmluZyhvLnZhbHVlKSxcbiAgICAgICAgICBncm91cDogby5ncm91cCxcbiAgICAgICAgfSkpXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiB0cnVlLCBlcnJvcjogbnVsbCB9KTtcblxuICAgIHJldHVybiBmcm9tKFxuICAgICAgZ2V0RGF0YVNvdXJjZSh0aGlzLnN0YXRlLmRhdGFzb3VyY2UsIHtcbiAgICAgICAgX19zY2VuZU9iamVjdDogd3JhcEluU2FmZVNlcmlhbGl6YWJsZVNjZW5lT2JqZWN0KHRoaXMpLFxuICAgICAgfSlcbiAgICApLnBpcGUoXG4gICAgICBtZXJnZU1hcCgoZHMpID0+IHtcbiAgICAgICAgcmV0dXJuIGZyb20odGhpcy5fZ2V0S2V5cyhkcykpLnBpcGUoXG4gICAgICAgICAgdGFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHJlc3BvbnNlSGFzRXJyb3IocmVzcG9uc2UpKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBlcnJvcjogcmVzcG9uc2UuZXJyb3IubWVzc2FnZSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSxcbiAgICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiBkYXRhRnJvbVJlc3BvbnNlKHJlc3BvbnNlKSksXG4gICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICBtZXJnZU1hcCgoZGF0YSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYTogVmFyaWFibGVWYWx1ZU9wdGlvbltdID0gZGF0YS5tYXAoKGkpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogaS50ZXh0LFxuICAgICAgICAgICAgICAgIHZhbHVlOiBpLnZhbHVlID8gU3RyaW5nKGkudmFsdWUpIDogaS50ZXh0LFxuICAgICAgICAgICAgICAgIGdyb3VwOiBpLmdyb3VwLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gb2YoYSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihpbml0aWFsU3RhdGU6IFBhcnRpYWw8R3JvdXBCeVZhcmlhYmxlU3RhdGU+KSB7XG4gICAgc3VwZXIoe1xuICAgICAgaXNNdWx0aTogdHJ1ZSxcbiAgICAgIG5hbWU6ICcnLFxuICAgICAgdmFsdWU6IFtdLFxuICAgICAgdGV4dDogW10sXG4gICAgICBvcHRpb25zOiBbXSxcbiAgICAgIGRhdGFzb3VyY2U6IG51bGwsXG4gICAgICBiYXNlRmlsdGVyczogW10sXG4gICAgICBhcHBseU1vZGU6ICdhdXRvJyxcbiAgICAgIGxheW91dDogJ2hvcml6b250YWwnLFxuICAgICAgdHlwZTogJ2dyb3VwYnknIGFzIFZhcmlhYmxlVHlwZSxcbiAgICAgIC4uLmluaXRpYWxTdGF0ZSxcbiAgICAgIG5vVmFsdWVPbkNsZWFyOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRBY3RpdmF0aW9uSGFuZGxlcigoKSA9PiB7XG4gICAgICBhbGxBY3RpdmVHcm91cEJ5VmFyaWFibGVzLmFkZCh0aGlzKTtcblxuICAgICAgcmV0dXJuICgpID0+IGFsbEFjdGl2ZUdyb3VwQnlWYXJpYWJsZXMuZGVsZXRlKHRoaXMpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBwb3NzaWJsZSBrZXlzIGdpdmVuIGN1cnJlbnQgZmlsdGVycy4gRG8gbm90IGNhbGwgZnJvbSBwbHVnaW5zIGRpcmVjdGx5XG4gICAqL1xuICBwdWJsaWMgX2dldEtleXMgPSBhc3luYyAoZHM6IERhdGFTb3VyY2VBcGkpID0+IHtcbiAgICAvLyBUT0RPOiAgcHJvdmlkZSBjdXJyZW50IGRpbWVuc2lvbnM/XG4gICAgY29uc3Qgb3ZlcnJpZGUgPSBhd2FpdCB0aGlzLnN0YXRlLmdldFRhZ0tleXNQcm92aWRlcj8uKHRoaXMsIG51bGwpO1xuXG4gICAgaWYgKG92ZXJyaWRlICYmIG92ZXJyaWRlLnJlcGxhY2UpIHtcbiAgICAgIHJldHVybiBvdmVycmlkZS52YWx1ZXM7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc3RhdGUuZGVmYXVsdE9wdGlvbnMpIHtcbiAgICAgIHJldHVybiB0aGlzLnN0YXRlLmRlZmF1bHRPcHRpb25zLmNvbmNhdChkYXRhRnJvbVJlc3BvbnNlKG92ZXJyaWRlPy52YWx1ZXMgPz8gW10pKTtcbiAgICB9XG5cbiAgICBpZiAoIWRzLmdldFRhZ0tleXMpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCBxdWVyaWVzID0gZ2V0UXVlcmllc0ZvclZhcmlhYmxlcyh0aGlzKTtcblxuICAgIGNvbnN0IG90aGVyRmlsdGVycyA9IHRoaXMuc3RhdGUuYmFzZUZpbHRlcnMgfHwgW107XG4gICAgY29uc3QgdGltZVJhbmdlID0gc2NlbmVHcmFwaC5nZXRUaW1lUmFuZ2UodGhpcykuc3RhdGUudmFsdWU7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBkcy5nZXRUYWdLZXlzKHtcbiAgICAgIGZpbHRlcnM6IG90aGVyRmlsdGVycyxcbiAgICAgIHF1ZXJpZXMsXG4gICAgICB0aW1lUmFuZ2UsXG4gICAgICAuLi5nZXRFbnJpY2hlZEZpbHRlcnNSZXF1ZXN0KHRoaXMpLFxuICAgIH0pO1xuICAgIGlmIChyZXNwb25zZUhhc0Vycm9yKHJlc3BvbnNlKSkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7IGVycm9yOiByZXNwb25zZS5lcnJvci5tZXNzYWdlIH0pO1xuICAgIH1cblxuICAgIGxldCBrZXlzID0gZGF0YUZyb21SZXNwb25zZShyZXNwb25zZSk7XG4gICAgaWYgKG92ZXJyaWRlKSB7XG4gICAgICBrZXlzID0ga2V5cy5jb25jYXQoZGF0YUZyb21SZXNwb25zZShvdmVycmlkZS52YWx1ZXMpKTtcbiAgICB9XG5cbiAgICBjb25zdCB0YWdLZXlSZWdleEZpbHRlciA9IHRoaXMuc3RhdGUudGFnS2V5UmVnZXhGaWx0ZXI7XG4gICAgaWYgKHRhZ0tleVJlZ2V4RmlsdGVyKSB7XG4gICAgICBrZXlzID0ga2V5cy5maWx0ZXIoKGYpID0+IGYudGV4dC5tYXRjaCh0YWdLZXlSZWdleEZpbHRlcikpO1xuICAgIH1cblxuICAgIHJldHVybiBrZXlzO1xuICB9O1xuXG4gIC8qKlxuICAgKiBBbGxvd3MgY2xlYXJpbmcgdGhlIHZhbHVlIG9mIHRoZSB2YXJpYWJsZSB0byBhbiBlbXB0eSB2YWx1ZS4gT3ZlcnJpZGVzIGRlZmF1bHQgYmVoYXZpb3Igb2YgYSBNdWx0aVZhbHVlVmFyaWFibGVcbiAgICovXG4gIHB1YmxpYyBnZXREZWZhdWx0TXVsdGlTdGF0ZShvcHRpb25zOiBWYXJpYWJsZVZhbHVlT3B0aW9uW10pOiB7IHZhbHVlOiBWYXJpYWJsZVZhbHVlU2luZ2xlW107IHRleHQ6IHN0cmluZ1tdIH0ge1xuICAgIHJldHVybiB7IHZhbHVlOiBbXSwgdGV4dDogW10gfTtcbiAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIEdyb3VwQnlWYXJpYWJsZVJlbmRlcmVyKHsgbW9kZWwgfTogU2NlbmVDb21wb25lbnRQcm9wczxNdWx0aVZhbHVlVmFyaWFibGU+KSB7XG4gIGNvbnN0IHtcbiAgICB2YWx1ZSxcbiAgICB0ZXh0LFxuICAgIGtleSxcbiAgICBtYXhWaXNpYmxlVmFsdWVzLFxuICAgIG5vVmFsdWVPbkNsZWFyLFxuICAgIG9wdGlvbnMsXG4gICAgaW5jbHVkZUFsbCxcbiAgICBhbGxvd0N1c3RvbVZhbHVlID0gdHJ1ZSxcbiAgfSA9IG1vZGVsLnVzZVN0YXRlKCk7XG5cbiAgY29uc3QgdmFsdWVzID0gdXNlTWVtbzxBcnJheTxTZWxlY3RhYmxlVmFsdWU8VmFyaWFibGVWYWx1ZVNpbmdsZT4+PigoKSA9PiB7XG4gICAgY29uc3QgYXJyYXlWYWx1ZSA9IGlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xuICAgIGNvbnN0IGFycmF5VGV4dCA9IGlzQXJyYXkodGV4dCkgPyB0ZXh0IDogW3RleHRdO1xuXG4gICAgcmV0dXJuIGFycmF5VmFsdWUubWFwKCh2YWx1ZSwgaWR4KSA9PiAoe1xuICAgICAgdmFsdWUsXG4gICAgICBsYWJlbDogU3RyaW5nKGFycmF5VGV4dFtpZHhdID8/IHZhbHVlKSxcbiAgICB9KSk7XG4gIH0sIFt2YWx1ZSwgdGV4dF0pO1xuXG4gIGNvbnN0IFtpc0ZldGNoaW5nT3B0aW9ucywgc2V0SXNGZXRjaGluZ09wdGlvbnNdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbaXNPcHRpb25zT3Blbiwgc2V0SXNPcHRpb25zT3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtpbnB1dFZhbHVlLCBzZXRJbnB1dFZhbHVlXSA9IHVzZVN0YXRlKCcnKTtcblxuICAvLyBUbyBub3QgdHJpZ2dlciBxdWVyaWVzIG9uIGV2ZXJ5IHNlbGVjdGlvbiB3ZSBzdG9yZSB0aGlzIHN0YXRlIGxvY2FsbHkgaGVyZSBhbmQgb25seSB1cGRhdGUgdGhlIHZhcmlhYmxlIG9uQmx1clxuICBjb25zdCBbdW5jb21taXR0ZWRWYWx1ZSwgc2V0VW5jb21taXR0ZWRWYWx1ZV0gPSB1c2VTdGF0ZSh2YWx1ZXMpO1xuXG4gIGNvbnN0IG9wdGlvblNlYXJjaGVyID0gdXNlTWVtbygoKSA9PiBnZXRPcHRpb25TZWFyY2hlcihvcHRpb25zLCBpbmNsdWRlQWxsKSwgW29wdGlvbnMsIGluY2x1ZGVBbGxdKTtcblxuICAvLyBEZXRlY3QgdmFsdWUgY2hhbmdlcyBvdXRzaWRlXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0VW5jb21taXR0ZWRWYWx1ZSh2YWx1ZXMpO1xuICB9LCBbdmFsdWVzXSk7XG5cbiAgY29uc3Qgb25JbnB1dENoYW5nZSA9ICh2YWx1ZTogc3RyaW5nLCB7IGFjdGlvbiB9OiBJbnB1dEFjdGlvbk1ldGEpID0+IHtcbiAgICBpZiAoYWN0aW9uID09PSAnaW5wdXQtY2hhbmdlJykge1xuICAgICAgc2V0SW5wdXRWYWx1ZSh2YWx1ZSk7XG4gICAgICBpZiAobW9kZWwub25TZWFyY2hDaGFuZ2UpIHtcbiAgICAgICAgbW9kZWwub25TZWFyY2hDaGFuZ2UhKHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBpZiAoYWN0aW9uID09PSAnaW5wdXQtYmx1cicpIHtcbiAgICAgIHNldElucHV0VmFsdWUoJycpO1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIHJldHVybiBpbnB1dFZhbHVlO1xuICB9O1xuXG4gIGNvbnN0IGZpbHRlcmVkT3B0aW9ucyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gaGFuZGxlT3B0aW9uR3JvdXBzKG9wdGlvblNlYXJjaGVyKGlucHV0VmFsdWUpLm1hcCh0b1NlbGVjdGFibGVWYWx1ZSkpLFxuICAgIFtvcHRpb25TZWFyY2hlciwgaW5wdXRWYWx1ZV1cbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxNdWx0aVNlbGVjdDxWYXJpYWJsZVZhbHVlU2luZ2xlPlxuICAgICAgZGF0YS10ZXN0aWQ9e2BHcm91cEJ5U2VsZWN0LSR7a2V5fWB9XG4gICAgICBpZD17a2V5fVxuICAgICAgcGxhY2Vob2xkZXI9eydTZWxlY3QgdmFsdWUnfVxuICAgICAgd2lkdGg9XCJhdXRvXCJcbiAgICAgIGFsbG93Q3VzdG9tVmFsdWU9e2FsbG93Q3VzdG9tVmFsdWV9XG4gICAgICBpbnB1dFZhbHVlPXtpbnB1dFZhbHVlfVxuICAgICAgdmFsdWU9e3VuY29tbWl0dGVkVmFsdWV9XG4gICAgICBub011bHRpVmFsdWVXcmFwPXt0cnVlfVxuICAgICAgbWF4VmlzaWJsZVZhbHVlcz17bWF4VmlzaWJsZVZhbHVlcyA/PyA1fVxuICAgICAgdGFiU2VsZWN0c1ZhbHVlPXtmYWxzZX1cbiAgICAgIHZpcnR1YWxpemVkXG4gICAgICBvcHRpb25zPXtmaWx0ZXJlZE9wdGlvbnN9XG4gICAgICBmaWx0ZXJPcHRpb249e2ZpbHRlck5vT3B9XG4gICAgICBjbG9zZU1lbnVPblNlbGVjdD17ZmFsc2V9XG4gICAgICBpc09wZW49e2lzT3B0aW9uc09wZW59XG4gICAgICBpc0NsZWFyYWJsZT17dHJ1ZX1cbiAgICAgIGhpZGVTZWxlY3RlZE9wdGlvbnM9e2ZhbHNlfVxuICAgICAgaXNMb2FkaW5nPXtpc0ZldGNoaW5nT3B0aW9uc31cbiAgICAgIGNvbXBvbmVudHM9e3sgT3B0aW9uOiBPcHRpb25XaXRoQ2hlY2tib3ggfX1cbiAgICAgIG9uSW5wdXRDaGFuZ2U9e29uSW5wdXRDaGFuZ2V9XG4gICAgICBvbkJsdXI9eygpID0+IHtcbiAgICAgICAgbW9kZWwuY2hhbmdlVmFsdWVUbyhcbiAgICAgICAgICB1bmNvbW1pdHRlZFZhbHVlLm1hcCgoeCkgPT4geC52YWx1ZSEpLFxuICAgICAgICAgIHVuY29tbWl0dGVkVmFsdWUubWFwKCh4KSA9PiB4LmxhYmVsISlcbiAgICAgICAgKTtcbiAgICAgIH19XG4gICAgICBvbkNoYW5nZT17KG5ld1ZhbHVlLCBhY3Rpb24pID0+IHtcbiAgICAgICAgaWYgKGFjdGlvbi5hY3Rpb24gPT09ICdjbGVhcicgJiYgbm9WYWx1ZU9uQ2xlYXIpIHtcbiAgICAgICAgICBtb2RlbC5jaGFuZ2VWYWx1ZVRvKFtdKTtcbiAgICAgICAgfVxuICAgICAgICBzZXRVbmNvbW1pdHRlZFZhbHVlKG5ld1ZhbHVlKTtcbiAgICAgIH19XG4gICAgICBvbk9wZW5NZW51PXthc3luYyAoKSA9PiB7XG4gICAgICAgIHNldElzRmV0Y2hpbmdPcHRpb25zKHRydWUpO1xuICAgICAgICBhd2FpdCBsYXN0VmFsdWVGcm9tKG1vZGVsLnZhbGlkYXRlQW5kVXBkYXRlKCkpO1xuICAgICAgICBzZXRJc0ZldGNoaW5nT3B0aW9ucyhmYWxzZSk7XG4gICAgICAgIHNldElzT3B0aW9uc09wZW4odHJ1ZSk7XG4gICAgICB9fVxuICAgICAgb25DbG9zZU1lbnU9eygpID0+IHtcbiAgICAgICAgc2V0SXNPcHRpb25zT3BlbihmYWxzZSk7XG4gICAgICB9fVxuICAgIC8+XG4gICk7XG59XG5cbmNvbnN0IGZpbHRlck5vT3AgPSAoKSA9PiB0cnVlO1xuXG5mdW5jdGlvbiB0b1NlbGVjdGFibGVWYWx1ZShpbnB1dDogVmFyaWFibGVWYWx1ZU9wdGlvbik6IFNlbGVjdGFibGVWYWx1ZTxWYXJpYWJsZVZhbHVlU2luZ2xlPiB7XG4gIGNvbnN0IHsgbGFiZWwsIHZhbHVlLCBncm91cCB9ID0gaW5wdXQ7XG4gIGNvbnN0IHJlc3VsdDogU2VsZWN0YWJsZVZhbHVlPFZhcmlhYmxlVmFsdWVTaW5nbGU+ID0ge1xuICAgIGxhYmVsLFxuICAgIHZhbHVlLFxuICB9O1xuXG4gIGlmIChncm91cCkge1xuICAgIHJlc3VsdC5ncm91cCA9IGdyb3VwO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiJdLCJuYW1lcyI6WyJ2YWx1ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTJETyxNQUFNLHdCQUF3QixrQkFBeUMsQ0FBQTtBQUFBLEVBdUVyRSxZQUFZLFlBQTZDLEVBQUE7QUFDOUQsSUFBTSxLQUFBLENBQUEsYUFBQSxDQUFBLGNBQUEsQ0FBQTtBQUFBLE1BQ0osT0FBUyxFQUFBLElBQUE7QUFBQSxNQUNULElBQU0sRUFBQSxFQUFBO0FBQUEsTUFDTixPQUFPLEVBQUM7QUFBQSxNQUNSLE1BQU0sRUFBQztBQUFBLE1BQ1AsU0FBUyxFQUFDO0FBQUEsTUFDVixVQUFZLEVBQUEsSUFBQTtBQUFBLE1BQ1osYUFBYSxFQUFDO0FBQUEsTUFDZCxTQUFXLEVBQUEsTUFBQTtBQUFBLE1BQ1gsTUFBUSxFQUFBLFlBQUE7QUFBQSxNQUNSLElBQU0sRUFBQSxTQUFBO0FBQUEsS0FBQSxFQUNILFlBWEMsQ0FBQSxFQUFBO0FBQUEsTUFZSixjQUFnQixFQUFBLElBQUE7QUFBQSxLQUNqQixDQUFBLENBQUEsQ0FBQTtBQW5GSCxJQUFTLElBQUEsQ0FBQSxNQUFBLEdBQUEsSUFBQSxDQUFBO0FBRVQsSUFBVSxJQUFBLENBQUEsUUFBQSxHQUFzQyxJQUFJLDZCQUFBLENBQThCLElBQUksQ0FBQSxDQUFBO0FBNkZ0RixJQUFPLElBQUEsQ0FBQSxRQUFBLEdBQVcsT0FBTyxFQUFzQixLQUFBO0FBNUpqRCxNQUFBLElBQUEsRUFBQSxFQUFBLEVBQUEsRUFBQSxFQUFBLENBQUE7QUE4SkksTUFBQSxNQUFNLFdBQVcsT0FBTSxDQUFBLEVBQUEsR0FBQSxDQUFBLEVBQUEsR0FBQSxJQUFBLENBQUssS0FBTSxFQUFBLGtCQUFBLEtBQVgsNEJBQWdDLElBQU0sRUFBQSxJQUFBLENBQUEsQ0FBQSxDQUFB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
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { toUrlCommaDelimitedString, unescapeUrlDelimiters } from '../utils.js';
|
|
2
|
+
|
|
3
|
+
class GroupByVariableUrlSyncHandler {
|
|
4
|
+
constructor(_sceneObject) {
|
|
5
|
+
this._sceneObject = _sceneObject;
|
|
6
|
+
}
|
|
7
|
+
getKey() {
|
|
8
|
+
return `var-${this._sceneObject.state.name}`;
|
|
9
|
+
}
|
|
10
|
+
getKeys() {
|
|
11
|
+
if (this._sceneObject.state.skipUrlSync) {
|
|
12
|
+
return [];
|
|
13
|
+
}
|
|
14
|
+
return [this.getKey()];
|
|
15
|
+
}
|
|
16
|
+
getUrlState() {
|
|
17
|
+
if (this._sceneObject.state.skipUrlSync) {
|
|
18
|
+
return {};
|
|
19
|
+
}
|
|
20
|
+
return { [this.getKey()]: toUrlValues(this._sceneObject.state.value, this._sceneObject.state.text) };
|
|
21
|
+
}
|
|
22
|
+
updateFromUrl(values) {
|
|
23
|
+
let urlValue = values[this.getKey()];
|
|
24
|
+
if (urlValue != null) {
|
|
25
|
+
if (!this._sceneObject.isActive) {
|
|
26
|
+
this._sceneObject.skipNextValidation = true;
|
|
27
|
+
}
|
|
28
|
+
const { values: values2, texts } = fromUrlValues(urlValue);
|
|
29
|
+
this._sceneObject.changeValueTo(values2, texts);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
function toUrlValues(values, texts) {
|
|
34
|
+
values = Array.isArray(values) ? values : [values];
|
|
35
|
+
texts = Array.isArray(texts) ? texts : [texts];
|
|
36
|
+
return values.map((value, idx) => {
|
|
37
|
+
if (value === void 0 || value === null) {
|
|
38
|
+
return "";
|
|
39
|
+
}
|
|
40
|
+
value = String(value);
|
|
41
|
+
let text = texts[idx];
|
|
42
|
+
text = text === void 0 || text === null ? value : String(text);
|
|
43
|
+
return toUrlCommaDelimitedString(value, text);
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
function fromUrlValues(urlValues) {
|
|
47
|
+
urlValues = Array.isArray(urlValues) ? urlValues : [urlValues];
|
|
48
|
+
return urlValues.reduce(
|
|
49
|
+
(acc, urlValue) => {
|
|
50
|
+
const [value, label] = (urlValue != null ? urlValue : "").split(",");
|
|
51
|
+
acc.values.push(unescapeUrlDelimiters(value));
|
|
52
|
+
acc.texts.push(unescapeUrlDelimiters(label != null ? label : value));
|
|
53
|
+
return acc;
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
values: [],
|
|
57
|
+
texts: []
|
|
58
|
+
}
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export { GroupByVariableUrlSyncHandler };
|
|
63
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JvdXBCeVZhcmlhYmxlVXJsU3luY0hhbmRsZXIuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy92YXJpYWJsZXMvZ3JvdXBieS9Hcm91cEJ5VmFyaWFibGVVcmxTeW5jSGFuZGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY2VuZU9iamVjdFVybFN5bmNIYW5kbGVyLCBTY2VuZU9iamVjdFVybFZhbHVlcyB9IGZyb20gJy4uLy4uL2NvcmUvdHlwZXMnO1xuaW1wb3J0IHsgR3JvdXBCeVZhcmlhYmxlIH0gZnJvbSAnLi9Hcm91cEJ5VmFyaWFibGUnO1xuaW1wb3J0IHsgdG9VcmxDb21tYURlbGltaXRlZFN0cmluZywgdW5lc2NhcGVVcmxEZWxpbWl0ZXJzIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgVmFyaWFibGVWYWx1ZSB9IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IGNsYXNzIEdyb3VwQnlWYXJpYWJsZVVybFN5bmNIYW5kbGVyIGltcGxlbWVudHMgU2NlbmVPYmplY3RVcmxTeW5jSGFuZGxlciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIF9zY2VuZU9iamVjdDogR3JvdXBCeVZhcmlhYmxlKSB7fVxuXG4gIHByaXZhdGUgZ2V0S2V5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGB2YXItJHt0aGlzLl9zY2VuZU9iamVjdC5zdGF0ZS5uYW1lfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0S2V5cygpOiBzdHJpbmdbXSB7XG4gICAgaWYgKHRoaXMuX3NjZW5lT2JqZWN0LnN0YXRlLnNraXBVcmxTeW5jKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcmV0dXJuIFt0aGlzLmdldEtleSgpXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRVcmxTdGF0ZSgpOiBTY2VuZU9iamVjdFVybFZhbHVlcyB7XG4gICAgaWYgKHRoaXMuX3NjZW5lT2JqZWN0LnN0YXRlLnNraXBVcmxTeW5jKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgW3RoaXMuZ2V0S2V5KCldOiB0b1VybFZhbHVlcyh0aGlzLl9zY2VuZU9iamVjdC5zdGF0ZS52YWx1ZSwgdGhpcy5fc2NlbmVPYmplY3Quc3RhdGUudGV4dCkgfTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVGcm9tVXJsKHZhbHVlczogU2NlbmVPYmplY3RVcmxWYWx1ZXMpOiB2b2lkIHtcbiAgICBsZXQgdXJsVmFsdWUgPSB2YWx1ZXNbdGhpcy5nZXRLZXkoKV07XG5cbiAgICBpZiAodXJsVmFsdWUgIT0gbnVsbCkge1xuICAgICAgLyoqXG4gICAgICAgKiBJbml0aWFsIFVSTCBTeW5jIGhhcHBlbnMgYmVmb3JlIHNjZW5lIG9iamVjdHMgYXJlIGFjdGl2YXRlZC5cbiAgICAgICAqIFdlIG5lZWQgdG8gc2tpcCB2YWxpZGF0aW9uIGluIHRoaXMgY2FzZSB0byBtYWtlIHN1cmUgdmFsdWVzIHNldCB2aWEgVVJMIGFyZSBtYWludGFpbmVkLlxuICAgICAgICovXG4gICAgICBpZiAoIXRoaXMuX3NjZW5lT2JqZWN0LmlzQWN0aXZlKSB7XG4gICAgICAgIHRoaXMuX3NjZW5lT2JqZWN0LnNraXBOZXh0VmFsaWRhdGlvbiA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgdmFsdWVzLCB0ZXh0cyB9ID0gZnJvbVVybFZhbHVlcyh1cmxWYWx1ZSk7XG5cbiAgICAgIHRoaXMuX3NjZW5lT2JqZWN0LmNoYW5nZVZhbHVlVG8odmFsdWVzLCB0ZXh0cyk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHRvVXJsVmFsdWVzKHZhbHVlczogVmFyaWFibGVWYWx1ZSwgdGV4dHM6IFZhcmlhYmxlVmFsdWUpOiBzdHJpbmdbXSB7XG4gIHZhbHVlcyA9IEFycmF5LmlzQXJyYXkodmFsdWVzKSA/IHZhbHVlcyA6IFt2YWx1ZXNdO1xuICB0ZXh0cyA9IEFycmF5LmlzQXJyYXkodGV4dHMpID8gdGV4dHMgOiBbdGV4dHNdO1xuXG4gIHJldHVybiB2YWx1ZXMubWFwKCh2YWx1ZSwgaWR4KSA9PiB7XG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICB2YWx1ZSA9IFN0cmluZyh2YWx1ZSk7XG5cbiAgICBsZXQgdGV4dCA9IHRleHRzW2lkeF07XG4gICAgdGV4dCA9IHRleHQgPT09IHVuZGVmaW5lZCB8fCB0ZXh0ID09PSBudWxsID8gdmFsdWUgOiBTdHJpbmcodGV4dCk7XG5cbiAgICByZXR1cm4gdG9VcmxDb21tYURlbGltaXRlZFN0cmluZyh2YWx1ZSwgdGV4dCk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBmcm9tVXJsVmFsdWVzKHVybFZhbHVlczogc3RyaW5nIHwgc3RyaW5nW10pOiB7IHZhbHVlczogc3RyaW5nW107IHRleHRzOiBzdHJpbmdbXSB9IHtcbiAgdXJsVmFsdWVzID0gQXJyYXkuaXNBcnJheSh1cmxWYWx1ZXMpID8gdXJsVmFsdWVzIDogW3VybFZhbHVlc107XG5cbiAgcmV0dXJuIHVybFZhbHVlcy5yZWR1Y2U8eyB2YWx1ZXM6IHN0cmluZ1tdOyB0ZXh0czogc3RyaW5nW10gfT4oXG4gICAgKGFjYywgdXJsVmFsdWUpID0+IHtcbiAgICAgIGNvbnN0IFt2YWx1ZSwgbGFiZWxdID0gKHVybFZhbHVlID8/ICcnKS5zcGxpdCgnLCcpO1xuXG4gICAgICBhY2MudmFsdWVzLnB1c2godW5lc2NhcGVVcmxEZWxpbWl0ZXJzKHZhbHVlKSk7XG4gICAgICBhY2MudGV4dHMucHVzaCh1bmVzY2FwZVVybERlbGltaXRlcnMobGFiZWwgPz8gdmFsdWUpKTtcblxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LFxuICAgIHtcbiAgICAgIHZhbHVlczogW10sXG4gICAgICB0ZXh0czogW10sXG4gICAgfVxuICApO1xufVxuIl0sIm5hbWVzIjpbInZhbHVlcyJdLCJtYXBwaW5ncyI6Ijs7QUFLTyxNQUFNLDZCQUFtRSxDQUFBO0FBQUEsRUFDdkUsWUFBb0Is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
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
const allActiveGroupByVariables = /* @__PURE__ */ new Set();
|
|
2
|
+
function findActiveGroupByVariablesByUid(dsUid) {
|
|
3
|
+
var _a;
|
|
4
|
+
for (const groupByVariable of allActiveGroupByVariables.values()) {
|
|
5
|
+
if (((_a = groupByVariable.state.datasource) == null ? void 0 : _a.uid) === dsUid) {
|
|
6
|
+
return groupByVariable;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
return void 0;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export { allActiveGroupByVariables, findActiveGroupByVariablesByUid };
|
|
13
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZEFjdGl2ZUdyb3VwQnlWYXJpYWJsZXNCeVVpZC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3ZhcmlhYmxlcy9ncm91cGJ5L2ZpbmRBY3RpdmVHcm91cEJ5VmFyaWFibGVzQnlVaWQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JvdXBCeVZhcmlhYmxlIH0gZnJvbSAnLi9Hcm91cEJ5VmFyaWFibGUnO1xuXG5leHBvcnQgY29uc3QgYWxsQWN0aXZlR3JvdXBCeVZhcmlhYmxlcyA9IG5ldyBTZXQ8R3JvdXBCeVZhcmlhYmxlPigpO1xuXG5leHBvcnQgZnVuY3Rpb24gZmluZEFjdGl2ZUdyb3VwQnlWYXJpYWJsZXNCeVVpZChkc1VpZDogc3RyaW5nIHwgdW5kZWZpbmVkKTogR3JvdXBCeVZhcmlhYmxlIHwgdW5kZWZpbmVkIHtcbiAgZm9yIChjb25zdCBncm91cEJ5VmFyaWFibGUgb2YgYWxsQWN0aXZlR3JvdXBCeVZhcmlhYmxlcy52YWx1ZXMoKSkge1xuICAgIGlmIChncm91cEJ5VmFyaWFibGUuc3RhdGUuZGF0YXNvdXJjZT8udWlkID09PSBkc1VpZCkge1xuICAgICAgcmV0dXJuIGdyb3VwQnlWYXJpYWJsZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVhLE1BQUEseUJBQUEsdUJBQWdDLEdBQXFCLEdBQUE7QUFFM0QsU0FBUyxnQ0FBZ0MsS0FBd0QsRUFBQTtBQUp4RyxFQUFBLElBQUEsRUFBQSxDQUFBO0FBS0UsRUFBVyxLQUFBLE1BQUEsZUFBQSxJQUFtQix5QkFBMEIsQ0FBQSxNQUFBLEVBQVUsRUFBQTtBQUNoRSxJQUFBLElBQUEsQ0FBQSxDQUFJLEVBQWdCLEdBQUEsZUFBQSxDQUFBLEtBQUEsQ0FBTSxVQUF0QixLQUFBLElBQUEsR0FBQSxLQUFBLENBQUEsR0FBQSxFQUFBLENBQWtDLFNBQVEsS0FBTyxFQUFBO0FBQ25ELE1BQU8sT0FBQSxlQUFBLENBQUE7QUFBQSxLQUNUO0FBQUEsR0FDRjtBQUVBLEVBQU8sT0FBQSxLQUFBLENBQUEsQ0FBQTtBQUNUOzs7OyJ9
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { getFieldAccessor } from './fieldAccessorCache.js';
|
|
2
|
+
|
|
3
|
+
class ScopedVarsVariable {
|
|
4
|
+
constructor(name, value) {
|
|
5
|
+
this.state = { name, value, type: "scopedvar" };
|
|
6
|
+
}
|
|
7
|
+
getValue(fieldPath) {
|
|
8
|
+
let { value } = this.state;
|
|
9
|
+
let realValue = value.value;
|
|
10
|
+
if (fieldPath) {
|
|
11
|
+
realValue = getFieldAccessor(fieldPath)(value.value);
|
|
12
|
+
} else {
|
|
13
|
+
realValue = value.value;
|
|
14
|
+
}
|
|
15
|
+
if (realValue === "string" || realValue === "number" || realValue === "boolean") {
|
|
16
|
+
return realValue;
|
|
17
|
+
}
|
|
18
|
+
return String(realValue);
|
|
19
|
+
}
|
|
20
|
+
getValueText() {
|
|
21
|
+
const { value } = this.state;
|
|
22
|
+
if (value.text != null) {
|
|
23
|
+
return String(value.text);
|
|
24
|
+
}
|
|
25
|
+
return String(value);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
let scopedVarsVariable;
|
|
29
|
+
function getSceneVariableForScopedVar(name, value) {
|
|
30
|
+
if (!scopedVarsVariable) {
|
|
31
|
+
scopedVarsVariable = new ScopedVarsVariable(name, value);
|
|
32
|
+
} else {
|
|
33
|
+
scopedVarsVariable.state.name = name;
|
|
34
|
+
scopedVarsVariable.state.value = value;
|
|
35
|
+
}
|
|
36
|
+
return scopedVarsVariable;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export { ScopedVarsVariable, getSceneVariableForScopedVar };
|
|
40
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NvcGVkVmFyc1ZhcmlhYmxlLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvdmFyaWFibGVzL2ludGVycG9sYXRpb24vU2NvcGVkVmFyc1ZhcmlhYmxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNjb3BlZFZhciB9IGZyb20gJ0BncmFmYW5hL2RhdGEnO1xuXG5pbXBvcnQgeyBWYXJpYWJsZVZhbHVlIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5pbXBvcnQgeyBGb3JtYXRWYXJpYWJsZSB9IGZyb20gJy4vZm9ybWF0UmVnaXN0cnknO1xuaW1wb3J0IHsgZ2V0RmllbGRBY2Nlc3NvciB9IGZyb20gJy4vZmllbGRBY2Nlc3NvckNhY2hlJztcblxuZXhwb3J0IGNsYXNzIFNjb3BlZFZhcnNWYXJpYWJsZSBpbXBsZW1lbnRzIEZvcm1hdFZhcmlhYmxlIHtcbiAgcHVibGljIHN0YXRlOiB7IG5hbWU6IHN0cmluZzsgdmFsdWU6IFNjb3BlZFZhcjsgdHlwZTogc3RyaW5nIH07XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgdmFsdWU6IFNjb3BlZFZhcikge1xuICAgIHRoaXMuc3RhdGUgPSB7IG5hbWUsIHZhbHVlLCB0eXBlOiAnc2NvcGVkdmFyJyB9O1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlKGZpZWxkUGF0aDogc3RyaW5nKTogVmFyaWFibGVWYWx1ZSB7XG4gICAgbGV0IHsgdmFsdWUgfSA9IHRoaXMuc3RhdGU7XG4gICAgbGV0IHJlYWxWYWx1ZSA9IHZhbHVlLnZhbHVlO1xuXG4gICAgaWYgKGZpZWxkUGF0aCkge1xuICAgICAgcmVhbFZhbHVlID0gZ2V0RmllbGRBY2Nlc3NvcihmaWVsZFBhdGgpKHZhbHVlLnZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVhbFZhbHVlID0gdmFsdWUudmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKHJlYWxWYWx1ZSA9PT0gJ3N0cmluZycgfHwgcmVhbFZhbHVlID09PSAnbnVtYmVyJyB8fCByZWFsVmFsdWUgPT09ICdib29sZWFuJykge1xuICAgICAgcmV0dXJuIHJlYWxWYWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gU3RyaW5nKHJlYWxWYWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWVUZXh0KCk6IHN0cmluZyB7XG4gICAgY29uc3QgeyB2YWx1ZSB9ID0gdGhpcy5zdGF0ZTtcblxuICAgIGlmICh2YWx1ZS50ZXh0ICE9IG51bGwpIHtcbiAgICAgIHJldHVybiBTdHJpbmcodmFsdWUudGV4dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG4gIH1cbn1cblxubGV0IHNjb3BlZFZhcnNWYXJpYWJsZTogU2NvcGVkVmFyc1ZhcmlhYmxlIHwgdW5kZWZpbmVkO1xuXG4vKipcbiAqIFJldXNlcyBhIHNpbmdsZSBpbnN0YW5jZSB0byBhdm9pZCB1bm5lY2Vzc2FyeSBtZW1vcnkgYWxsb2NhdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNjZW5lVmFyaWFibGVGb3JTY29wZWRWYXIobmFtZTogc3RyaW5nLCB2YWx1ZTogU2NvcGVkVmFyKTogRm9ybWF0VmFyaWFibGUge1xuICBpZiAoIXNjb3BlZFZhcnNWYXJpYWJsZSkge1xuICAgIHNjb3BlZFZhcnNWYXJpYWJsZSA9IG5ldyBTY29wZWRWYXJzVmFyaWFibGUobmFtZSwgdmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHNjb3BlZFZhcnNWYXJpYWJsZS5zdGF0ZS5uYW1lID0gbmFtZTtcbiAgICBzY29wZWRWYXJzVmFyaWFibGUuc3RhdGUudmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBzY29wZWRWYXJzVmFyaWFibGU7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFPTyxNQUFNLGtCQUE2QyxDQUFBO0FBQUEsRUFHakQsV0FBQSxDQUFZLE1BQWMsS0FBa0IsRUFBQTtBQUNqRCxJQUFBLElBQUEsQ0FBSyxLQUFRLEdBQUEsRUFBRSxJQUFNLEVBQUEsS0FBQSxFQUFPLE1BQU0sV0FBWSxFQUFBLENBQUE7QUFBQSxHQUNoRDtBQUFBLEVBRU8sU0FBUyxTQUFrQyxFQUFBO0FBQ2hELElBQUksSUFBQSxFQUFFLEtBQU0sRUFBQSxHQUFJLElBQUssQ0FBQSxLQUFBLENBQUE7QUFDckIsSUFBQSxJQUFJLFlBQVksS0FBTSxDQUFBLEtBQUEsQ0FBQTtBQUV0QixJQUFBLElBQUksU0FBVyxFQUFBO0FBQ2IsTUFBQSxTQUFBLEdBQVksZ0JBQWlCLENBQUEsU0FBUyxDQUFFLENBQUEsS0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBO0FBQUEsS0FDOUMsTUFBQTtBQUNMLE1BQUEsU0FBQSxHQUFZLEtBQU0sQ0FBQSxLQUFBLENBQUE7QUFBQSxLQUNwQjtBQUVBLElBQUEsSUFBSSxTQUFjLEtBQUEsUUFBQSxJQUFZLFNBQWMsS0FBQSxRQUFBLElBQVksY0FBYyxTQUFXLEVBQUE7QUFDL0UsTUFBTyxPQUFBLFNBQUEsQ0FBQTtBQUFBLEtBQ1Q7QUFFQSxJQUFBLE9BQU8sT0FBTyxTQUFTLENBQUEsQ0FBQTtBQUFBLEdBQ3pCO0FBQUEsRUFFTyxZQUF1QixHQUFBO0FBQzVCLElBQU0sTUFBQSxFQUFFLEtBQU0sRUFBQSxHQUFJLElBQUssQ0FBQSxLQUFBLENBQUE7QUFFdkIsSUFBSSxJQUFBLEtBQUEsQ0FBTSxRQUFRLElBQU0sRUFBQTtBQUN0QixNQUFPLE9BQUEsTUFBQSxDQUFPLE1BQU0sSUFBSSxDQUFBLENBQUE7QUFBQSxLQUMxQjtBQUVBLElBQUEsT0FBTyxPQUFPLEtBQUssQ0FBQSxDQUFBO0FBQUEsR0FDckI7QUFDRixDQUFBO0FBRUEsSUFBSSxrQkFBQSxDQUFBO0FBS1ksU0FBQSw0QkFBQSxDQUE2QixNQUFjLEtBQWtDLEVBQUE7QUFDM0YsRUFBQSxJQUFJLENBQUMsa0JBQW9CLEVBQUE7QUFDdkIsSUFBcUIsa0JBQUEsR0FBQSxJQUFJLGtCQUFtQixDQUFBLElBQUEsRUFBTSxLQUFLLENBQUEsQ0FBQTtBQUFBLEdBQ2xELE1BQUE7QUFDTCxJQUFBLGtCQUFBLENBQW1CLE1BQU0sSUFBTyxHQUFBLElBQUEsQ0FBQTtBQUNoQyxJQUFBLGtCQUFBLENBQW1CLE1BQU0sS0FBUSxHQUFBLEtBQUEsQ0FBQTtBQUFBLEdBQ25DO0FBRUEsRUFBTyxPQUFBLGtCQUFBLENBQUE7QUFDVDs7OzsifQ==
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { SceneDataNode } from '../../core/SceneDataNode.js';
|
|
2
|
+
import { SceneObjectBase } from '../../core/SceneObjectBase.js';
|
|
3
|
+
import { SceneTimeRange } from '../../core/SceneTimeRange.js';
|
|
4
|
+
|
|
5
|
+
const EmptyDataNode = new SceneDataNode();
|
|
6
|
+
const DefaultTimeRange = new SceneTimeRange();
|
|
7
|
+
class EmptyVariableSetImpl extends SceneObjectBase {
|
|
8
|
+
constructor() {
|
|
9
|
+
super({ variables: [] });
|
|
10
|
+
}
|
|
11
|
+
getByName(name) {
|
|
12
|
+
return void 0;
|
|
13
|
+
}
|
|
14
|
+
isVariableLoadingOrWaitingToUpdate(variable) {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
const EmptyVariableSet = new EmptyVariableSetImpl();
|
|
19
|
+
|
|
20
|
+
export { DefaultTimeRange, EmptyDataNode, EmptyVariableSet, EmptyVariableSetImpl };
|
|
21
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdHMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy92YXJpYWJsZXMvaW50ZXJwb2xhdGlvbi9kZWZhdWx0cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY2VuZURhdGFOb2RlIH0gZnJvbSAnLi4vLi4vY29yZS9TY2VuZURhdGFOb2RlJztcbmltcG9ydCB7IFNjZW5lT2JqZWN0QmFzZSB9IGZyb20gJy4uLy4uL2NvcmUvU2NlbmVPYmplY3RCYXNlJztcbmltcG9ydCB7IFNjZW5lVGltZVJhbmdlIH0gZnJvbSAnLi4vLi4vY29yZS9TY2VuZVRpbWVSYW5nZSc7XG5pbXBvcnQgeyBTY2VuZVZhcmlhYmxlLCBTY2VuZVZhcmlhYmxlcywgU2NlbmVWYXJpYWJsZVNldFN0YXRlLCBTY2VuZVZhcmlhYmxlU3RhdGUgfSBmcm9tICcuLi90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBFbXB0eURhdGFOb2RlID0gbmV3IFNjZW5lRGF0YU5vZGUoKTtcbmV4cG9ydCBjb25zdCBEZWZhdWx0VGltZVJhbmdlID0gbmV3IFNjZW5lVGltZVJhbmdlKCk7XG5cbi8qKlxuICogU2luY2UgdGhpcyBpcyB1c2VkIGZyb20gc2NlbmVHcmFwaC5nZXRWYXJpYWJsZXMgd2UgY2Fubm90IHJlZmVyZW5jZSBTY2VuZVZhcmlhYmxlU2V0IGhlcmUgYXMgaXQgd291bGQgY3JlYXRlIGEgY2lyY3VsYXIgcmVmZXJlbmNlXG4gKi9cbmV4cG9ydCBjbGFzcyBFbXB0eVZhcmlhYmxlU2V0SW1wbCBleHRlbmRzIFNjZW5lT2JqZWN0QmFzZTxTY2VuZVZhcmlhYmxlU2V0U3RhdGU+IGltcGxlbWVudHMgU2NlbmVWYXJpYWJsZXMge1xuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoeyB2YXJpYWJsZXM6IFtdIH0pO1xuICB9XG5cbiAgcHVibGljIGdldEJ5TmFtZShuYW1lOiBzdHJpbmcpOiBTY2VuZVZhcmlhYmxlPFNjZW5lVmFyaWFibGVTdGF0ZT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgaXNWYXJpYWJsZUxvYWRpbmdPcldhaXRpbmdUb1VwZGF0ZSh2YXJpYWJsZTogU2NlbmVWYXJpYWJsZTxTY2VuZVZhcmlhYmxlU3RhdGU+KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBFbXB0eVZhcmlhYmxlU2V0ID0gbmV3IEVtcHR5VmFyaWFibGVTZXRJbXBsKCk7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUthLE1BQUEsYUFBQSxHQUFnQixJQUFJLGFBQWMsR0FBQTtBQUNsQyxNQUFBLGdCQUFBLEdBQW1CLElBQUksY0FBZSxHQUFBO0FBSzVDLE1BQU0sNkJBQTZCLGVBQWlFLENBQUE7QUFBQSxFQUNsRyxXQUFjLEdBQUE7QUFDbkIsSUFBQSxLQUFBLENBQU0sRUFBRSxTQUFBLEVBQVcsRUFBQyxFQUFHLENBQUEsQ0FBQTtBQUFBLEdBQ3pCO0FBQUEsRUFFTyxVQUFVLElBQTZELEVBQUE7QUFDNUUsSUFBTyxPQUFBLEtBQUEsQ0FBQSxDQUFBO0FBQUEsR0FDVDtBQUFBLEVBRU8sbUNBQW1DLFFBQXNELEVBQUE7QUFDOUYsSUFBTyxPQUFBLEtBQUEsQ0FBQTtBQUFBLEdBQ1Q7QUFDRixDQUFBO0FBRWEsTUFBQSxnQkFBQSxHQUFtQixJQUFJLG9CQUFxQjs7OzsifQ==
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { property } from 'lodash';
|
|
2
|
+
|
|
3
|
+
let fieldAccessorCache = {};
|
|
4
|
+
function getFieldAccessor(fieldPath) {
|
|
5
|
+
const accessor = fieldAccessorCache[fieldPath];
|
|
6
|
+
if (accessor) {
|
|
7
|
+
return accessor;
|
|
8
|
+
}
|
|
9
|
+
return fieldAccessorCache[fieldPath] = property(fieldPath);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export { getFieldAccessor };
|
|
13
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRBY2Nlc3NvckNhY2hlLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvdmFyaWFibGVzL2ludGVycG9sYXRpb24vZmllbGRBY2Nlc3NvckNhY2hlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbG9kYXNoJztcblxuaW50ZXJmYWNlIEZpZWxkQWNjZXNzb3JDYWNoZSB7XG4gIFtrZXk6IHN0cmluZ106IChvYmo6IG9iamVjdCkgPT4gYW55O1xufVxuXG5sZXQgZmllbGRBY2Nlc3NvckNhY2hlOiBGaWVsZEFjY2Vzc29yQ2FjaGUgPSB7fTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZpZWxkQWNjZXNzb3IoZmllbGRQYXRoOiBzdHJpbmcpIHtcbiAgY29uc3QgYWNjZXNzb3IgPSBmaWVsZEFjY2Vzc29yQ2FjaGVbZmllbGRQYXRoXTtcbiAgaWYgKGFjY2Vzc29yKSB7XG4gICAgcmV0dXJuIGFjY2Vzc29yO1xuICB9XG5cbiAgcmV0dXJuIChmaWVsZEFjY2Vzc29yQ2FjaGVbZmllbGRQYXRoXSA9IHByb3BlcnR5KGZpZWxkUGF0aCkpO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBTUEsSUFBSSxxQkFBeUMsRUFBQyxDQUFBO0FBRXZDLFNBQVMsaUJBQWlCLFNBQW1CLEVBQUE7QUFDbEQsRUFBQSxNQUFNLFdBQVcsa0JBQW1CLENBQUEsU0FBQSxDQUFBLENBQUE7QUFDcEMsRUFBQSxJQUFJLFFBQVUsRUFBQTtBQUNaLElBQU8sT0FBQSxRQUFBLENBQUE7QUFBQSxHQUNUO0FBRUEsRUFBUSxPQUFBLGtCQUFBLENBQW1CLFNBQWEsQ0FBQSxHQUFBLFFBQUEsQ0FBUyxTQUFTLENBQUEsQ0FBQTtBQUM1RDs7OzsifQ==
|