@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,34 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { SceneObjectBase } from '../core/SceneObjectBase.js';
|
|
3
|
+
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
8
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
9
|
+
var __spreadValues = (a, b) => {
|
|
10
|
+
for (var prop in b || (b = {}))
|
|
11
|
+
if (__hasOwnProp.call(b, prop))
|
|
12
|
+
__defNormalProp(a, prop, b[prop]);
|
|
13
|
+
if (__getOwnPropSymbols)
|
|
14
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
15
|
+
if (__propIsEnum.call(b, prop))
|
|
16
|
+
__defNormalProp(a, prop, b[prop]);
|
|
17
|
+
}
|
|
18
|
+
return a;
|
|
19
|
+
};
|
|
20
|
+
class SceneReactObject extends SceneObjectBase {
|
|
21
|
+
}
|
|
22
|
+
SceneReactObject.Component = ({ model }) => {
|
|
23
|
+
const { component: Component, props, reactNode } = model.useState();
|
|
24
|
+
if (Component) {
|
|
25
|
+
return /* @__PURE__ */ React.createElement(Component, __spreadValues({}, props));
|
|
26
|
+
}
|
|
27
|
+
if (reactNode) {
|
|
28
|
+
return reactNode;
|
|
29
|
+
}
|
|
30
|
+
return null;
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
export { SceneReactObject };
|
|
34
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NlbmVSZWFjdE9iamVjdC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvU2NlbmVSZWFjdE9iamVjdC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHsgU2NlbmVPYmplY3RCYXNlIH0gZnJvbSAnLi4vY29yZS9TY2VuZU9iamVjdEJhc2UnO1xuaW1wb3J0IHsgU2NlbmVDb21wb25lbnRQcm9wcywgU2NlbmVPYmplY3RTdGF0ZSB9IGZyb20gJy4uL2NvcmUvdHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNjZW5lUmVhY3RPYmplY3RTdGF0ZTxUUHJvcHMgPSB7fT4gZXh0ZW5kcyBTY2VuZU9iamVjdFN0YXRlIHtcbiAgLyoqXG4gICAqIFJlYWN0IGNvbXBvbmVudCB0byByZW5kZXJcbiAgICovXG4gIGNvbXBvbmVudD86IFJlYWN0LkNvbXBvbmVudFR5cGU8VFByb3BzPjtcbiAgLyoqXG4gICAqIFByb3BzIHRvIHBhc3MgdG8gdGhlIGNvbXBvbmVudFxuICAgKi9cbiAgcHJvcHM/OiBUUHJvcHM7XG4gIC8qKlxuICAgKiBBbHRlcm5hdGl2ZSB0byBjb21wb25lbnQgYW5kIHByb3BzIGlzIGp1c3QgdG8gcGFzcyBhIFJlYWN0IG5vZGVcbiAgICovXG4gIHJlYWN0Tm9kZT86IFJlYWN0LlJlYWN0Tm9kZTtcbn1cblxuLyoqXG4gKiBBIHV0aWxpdHkgb2JqZWN0IHRoYXQgY2FuIGJlIHVzZWQgdG8gcmVuZGVyIGFueSBSZWFjdCBjb21wb25lbnQgb3IgUmVhY3ROb2RlXG4gKi9cbmV4cG9ydCBjbGFzcyBTY2VuZVJlYWN0T2JqZWN0PFRQcm9wcyA9IHt9PiBleHRlbmRzIFNjZW5lT2JqZWN0QmFzZTxTY2VuZVJlYWN0T2JqZWN0U3RhdGU8VFByb3BzPj4ge1xuICBwdWJsaWMgc3RhdGljIENvbXBvbmVudCA9ICh7IG1vZGVsIH06IFNjZW5lQ29tcG9uZW50UHJvcHM8U2NlbmVSZWFjdE9iamVjdD4pID0+IHtcbiAgICBjb25zdCB7IGNvbXBvbmVudDogQ29tcG9uZW50LCBwcm9wcywgcmVhY3ROb2RlIH0gPSBtb2RlbC51c2VTdGF0ZSgpO1xuXG4gICAgaWYgKENvbXBvbmVudCkge1xuICAgICAgcmV0dXJuIDxDb21wb25lbnQgey4uLnByb3BzfSAvPjtcbiAgICB9XG5cbiAgICBpZiAocmVhY3ROb2RlKSB7XG4gICAgICByZXR1cm4gcmVhY3ROb2RlO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9O1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF1Qk8sTUFBTSx5QkFBc0MsZUFBK0MsQ0FBQTtBQWNsRyxDQUFBO0FBZGEsZ0JBQUEsQ0FDRyxTQUFZLEdBQUEsQ0FBQyxFQUFFLEtBQUEsRUFBbUQsS0FBQTtBQUM5RSxFQUFBLE1BQU0sRUFBRSxTQUFXLEVBQUEsU0FBQSxFQUFXLE9BQU8sU0FBVSxFQUFBLEdBQUksTUFBTSxRQUFTLEVBQUEsQ0FBQTtBQUVsRSxFQUFBLElBQUksU0FBVyxFQUFBO0FBQ2IsSUFBTyx1QkFBQSxLQUFBLENBQUEsYUFBQSxDQUFDLDhCQUFjLEtBQU8sQ0FBQSxDQUFBLENBQUE7QUFBQSxHQUMvQjtBQUVBLEVBQUEsSUFBSSxTQUFXLEVBQUE7QUFDYixJQUFPLE9BQUEsU0FBQSxDQUFBO0FBQUEsR0FDVDtBQUVBLEVBQU8sT0FBQSxJQUFBLENBQUE7QUFDVCxDQUFBOzs7OyJ9
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { rangeUtil } from '@grafana/data';
|
|
3
|
+
import { config } from '@grafana/runtime';
|
|
4
|
+
import { RefreshPicker } from '@grafana/ui';
|
|
5
|
+
import { SceneObjectBase } from '../core/SceneObjectBase.js';
|
|
6
|
+
import { sceneGraph } from '../core/sceneGraph/index.js';
|
|
7
|
+
import { SceneObjectUrlSyncConfig } from '../services/SceneObjectUrlSyncConfig.js';
|
|
8
|
+
|
|
9
|
+
var __defProp = Object.defineProperty;
|
|
10
|
+
var __defProps = Object.defineProperties;
|
|
11
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
12
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
13
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
14
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
15
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
16
|
+
var __spreadValues = (a, b) => {
|
|
17
|
+
for (var prop in b || (b = {}))
|
|
18
|
+
if (__hasOwnProp.call(b, prop))
|
|
19
|
+
__defNormalProp(a, prop, b[prop]);
|
|
20
|
+
if (__getOwnPropSymbols)
|
|
21
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
22
|
+
if (__propIsEnum.call(b, prop))
|
|
23
|
+
__defNormalProp(a, prop, b[prop]);
|
|
24
|
+
}
|
|
25
|
+
return a;
|
|
26
|
+
};
|
|
27
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
28
|
+
const DEFAULT_INTERVALS = ["5s", "10s", "30s", "1m", "5m", "15m", "30m", "1h", "2h", "1d"];
|
|
29
|
+
class SceneRefreshPicker extends SceneObjectBase {
|
|
30
|
+
constructor(state) {
|
|
31
|
+
var _a, _b, _c;
|
|
32
|
+
const filterDissalowedIntervals = (i) => {
|
|
33
|
+
var _a2;
|
|
34
|
+
const minInterval = (_a2 = state.minRefreshInterval) != null ? _a2 : config.minRefreshInterval;
|
|
35
|
+
try {
|
|
36
|
+
return minInterval ? rangeUtil.intervalToMs(i) >= rangeUtil.intervalToMs(minInterval) : true;
|
|
37
|
+
} catch (e) {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
super(__spreadProps(__spreadValues({
|
|
42
|
+
refresh: ""
|
|
43
|
+
}, state), {
|
|
44
|
+
autoValue: void 0,
|
|
45
|
+
autoEnabled: (_a = state.autoEnabled) != null ? _a : true,
|
|
46
|
+
autoMinInterval: (_b = state.autoMinInterval) != null ? _b : config.minRefreshInterval,
|
|
47
|
+
intervals: ((_c = state.intervals) != null ? _c : DEFAULT_INTERVALS).filter(filterDissalowedIntervals)
|
|
48
|
+
}));
|
|
49
|
+
this._urlSync = new SceneObjectUrlSyncConfig(this, { keys: ["refresh"] });
|
|
50
|
+
this._autoRefreshBlocked = false;
|
|
51
|
+
this.onRefresh = () => {
|
|
52
|
+
const queryController = sceneGraph.getQueryController(this);
|
|
53
|
+
if (queryController == null ? void 0 : queryController.state.isRunning) {
|
|
54
|
+
queryController.cancelAll();
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
const timeRange = sceneGraph.getTimeRange(this);
|
|
58
|
+
if (this._intervalTimer) {
|
|
59
|
+
clearInterval(this._intervalTimer);
|
|
60
|
+
}
|
|
61
|
+
timeRange.onRefresh();
|
|
62
|
+
this.setupIntervalTimer();
|
|
63
|
+
};
|
|
64
|
+
this.onIntervalChanged = (interval) => {
|
|
65
|
+
this.setState({ refresh: interval });
|
|
66
|
+
this.setupIntervalTimer();
|
|
67
|
+
};
|
|
68
|
+
this.setupAutoTimeRangeListener = () => {
|
|
69
|
+
return sceneGraph.getTimeRange(this).subscribeToState((newState, prevState) => {
|
|
70
|
+
if (newState.from !== prevState.from || newState.to !== prevState.to) {
|
|
71
|
+
this.setupIntervalTimer();
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
};
|
|
75
|
+
this.calculateAutoRefreshInterval = () => {
|
|
76
|
+
var _a;
|
|
77
|
+
const timeRange = sceneGraph.getTimeRange(this);
|
|
78
|
+
const resolution = (_a = window == null ? void 0 : window.innerWidth) != null ? _a : 2e3;
|
|
79
|
+
return rangeUtil.calculateInterval(timeRange.state.value, resolution, this.state.autoMinInterval);
|
|
80
|
+
};
|
|
81
|
+
this.setupIntervalTimer = () => {
|
|
82
|
+
var _a;
|
|
83
|
+
const timeRange = sceneGraph.getTimeRange(this);
|
|
84
|
+
const { refresh, intervals } = this.state;
|
|
85
|
+
if (this._intervalTimer || refresh === "") {
|
|
86
|
+
clearInterval(this._intervalTimer);
|
|
87
|
+
}
|
|
88
|
+
if (refresh === "") {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
if (refresh !== RefreshPicker.autoOption.value && intervals && !intervals.includes(refresh)) {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
let intervalMs;
|
|
95
|
+
(_a = this._autoTimeRangeListener) == null ? void 0 : _a.unsubscribe();
|
|
96
|
+
if (refresh === RefreshPicker.autoOption.value) {
|
|
97
|
+
const autoRefreshInterval = this.calculateAutoRefreshInterval();
|
|
98
|
+
intervalMs = autoRefreshInterval.intervalMs;
|
|
99
|
+
this._autoTimeRangeListener = this.setupAutoTimeRangeListener();
|
|
100
|
+
if (autoRefreshInterval.interval !== this.state.autoValue) {
|
|
101
|
+
this.setState({ autoValue: autoRefreshInterval.interval });
|
|
102
|
+
}
|
|
103
|
+
} else {
|
|
104
|
+
intervalMs = rangeUtil.intervalToMs(refresh);
|
|
105
|
+
}
|
|
106
|
+
this._intervalTimer = setInterval(() => {
|
|
107
|
+
if (this.isTabVisible()) {
|
|
108
|
+
timeRange.onRefresh();
|
|
109
|
+
} else {
|
|
110
|
+
this._autoRefreshBlocked = true;
|
|
111
|
+
}
|
|
112
|
+
}, intervalMs);
|
|
113
|
+
};
|
|
114
|
+
this.addActivationHandler(() => {
|
|
115
|
+
this.setupIntervalTimer();
|
|
116
|
+
const onVisibilityChange = () => {
|
|
117
|
+
if (this._autoRefreshBlocked && document.visibilityState === "visible") {
|
|
118
|
+
this._autoRefreshBlocked = false;
|
|
119
|
+
this.onRefresh();
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
document.addEventListener("visibilitychange", onVisibilityChange);
|
|
123
|
+
return () => {
|
|
124
|
+
var _a2;
|
|
125
|
+
if (this._intervalTimer) {
|
|
126
|
+
clearInterval(this._intervalTimer);
|
|
127
|
+
}
|
|
128
|
+
document.removeEventListener("visibilitychange", onVisibilityChange);
|
|
129
|
+
(_a2 = this._autoTimeRangeListener) == null ? void 0 : _a2.unsubscribe();
|
|
130
|
+
};
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
getUrlState() {
|
|
134
|
+
let refresh = this.state.refresh;
|
|
135
|
+
if (typeof refresh !== "string" || refresh.length === 0) {
|
|
136
|
+
refresh = void 0;
|
|
137
|
+
}
|
|
138
|
+
return { refresh };
|
|
139
|
+
}
|
|
140
|
+
updateFromUrl(values) {
|
|
141
|
+
const { intervals } = this.state;
|
|
142
|
+
let refresh = values.refresh;
|
|
143
|
+
if (typeof refresh === "string" && isIntervalString(refresh)) {
|
|
144
|
+
if (intervals == null ? void 0 : intervals.includes(refresh)) {
|
|
145
|
+
this.setState({ refresh });
|
|
146
|
+
} else {
|
|
147
|
+
this.setState({
|
|
148
|
+
refresh: intervals ? intervals[0] : void 0
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
isTabVisible() {
|
|
154
|
+
return document.visibilityState === void 0 || document.visibilityState === "visible";
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
SceneRefreshPicker.Component = SceneRefreshPickerRenderer;
|
|
158
|
+
function SceneRefreshPickerRenderer({ model }) {
|
|
159
|
+
var _a;
|
|
160
|
+
const { refresh, intervals, autoEnabled, autoValue, isOnCanvas, primary, withText } = model.useState();
|
|
161
|
+
const isRunning = useQueryControllerState(model);
|
|
162
|
+
let text = refresh === ((_a = RefreshPicker.autoOption) == null ? void 0 : _a.value) ? autoValue : withText ? "Refresh" : void 0;
|
|
163
|
+
let tooltip;
|
|
164
|
+
let width;
|
|
165
|
+
if (isRunning) {
|
|
166
|
+
tooltip = "Cancel all queries";
|
|
167
|
+
if (withText) {
|
|
168
|
+
text = "Cancel";
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
if (withText) {
|
|
172
|
+
width = "96px";
|
|
173
|
+
}
|
|
174
|
+
return /* @__PURE__ */ React.createElement(RefreshPicker, {
|
|
175
|
+
showAutoInterval: autoEnabled,
|
|
176
|
+
value: refresh,
|
|
177
|
+
intervals,
|
|
178
|
+
tooltip,
|
|
179
|
+
width,
|
|
180
|
+
text,
|
|
181
|
+
onRefresh: model.onRefresh,
|
|
182
|
+
primary,
|
|
183
|
+
onIntervalChanged: model.onIntervalChanged,
|
|
184
|
+
isLoading: isRunning,
|
|
185
|
+
isOnCanvas: isOnCanvas != null ? isOnCanvas : true
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
function useQueryControllerState(model) {
|
|
189
|
+
const queryController = sceneGraph.getQueryController(model);
|
|
190
|
+
if (!queryController) {
|
|
191
|
+
return false;
|
|
192
|
+
}
|
|
193
|
+
return queryController.useState().isRunning;
|
|
194
|
+
}
|
|
195
|
+
function isIntervalString(str) {
|
|
196
|
+
try {
|
|
197
|
+
const res = rangeUtil.describeInterval(str);
|
|
198
|
+
return res.count > 0;
|
|
199
|
+
} catch (e) {
|
|
200
|
+
return false;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
export { DEFAULT_INTERVALS, SceneRefreshPicker, SceneRefreshPickerRenderer };
|
|
205
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NlbmVSZWZyZXNoUGlja2VyLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9TY2VuZVJlZnJlc2hQaWNrZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBVbnN1YnNjcmliYWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgcmFuZ2VVdGlsIH0gZnJvbSAnQGdyYWZhbmEvZGF0YSc7XG5pbXBvcnQgeyBjb25maWcgfSBmcm9tICdAZ3JhZmFuYS9ydW50aW1lJztcbmltcG9ydCB7IFJlZnJlc2hQaWNrZXIgfSBmcm9tICdAZ3JhZmFuYS91aSc7XG5cbmltcG9ydCB7IFNjZW5lT2JqZWN0QmFzZSB9IGZyb20gJy4uL2NvcmUvU2NlbmVPYmplY3RCYXNlJztcbmltcG9ydCB7IHNjZW5lR3JhcGggfSBmcm9tICcuLi9jb3JlL3NjZW5lR3JhcGgnO1xuaW1wb3J0IHsgU2NlbmVDb21wb25lbnRQcm9wcywgU2NlbmVPYmplY3QsIFNjZW5lT2JqZWN0U3RhdGUsIFNjZW5lT2JqZWN0VXJsVmFsdWVzIH0gZnJvbSAnLi4vY29yZS90eXBlcyc7XG5pbXBvcnQgeyBTY2VuZU9iamVjdFVybFN5bmNDb25maWcgfSBmcm9tICcuLi9zZXJ2aWNlcy9TY2VuZU9iamVjdFVybFN5bmNDb25maWcnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9JTlRFUlZBTFMgPSBbJzVzJywgJzEwcycsICczMHMnLCAnMW0nLCAnNW0nLCAnMTVtJywgJzMwbScsICcxaCcsICcyaCcsICcxZCddO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNjZW5lUmVmcmVzaFBpY2tlclN0YXRlIGV4dGVuZHMgU2NlbmVPYmplY3RTdGF0ZSB7XG4gIC8qKlxuICAgKiBSZWZyZXNoIGludGVydmFsLCBlLmcuIDVzLCAxbSwgMmhcbiAgICovXG4gIHJlZnJlc2g6IHN0cmluZztcbiAgYXV0b0VuYWJsZWQ/OiBib29sZWFuO1xuICBhdXRvTWluSW50ZXJ2YWw/OiBzdHJpbmc7XG4gIGF1dG9WYWx1ZT86IHN0cmluZztcbiAgLyoqXG4gICAqIExpc3Qgb2YgYWxsb3dlZCByZWZyZXNoIGludGVydmFscywgZS5nLiBbJzVzJywgJzFtJ11cbiAgICovXG4gIGludGVydmFscz86IHN0cmluZ1tdO1xuICBpc09uQ2FudmFzPzogYm9vbGVhbjtcbiAgcHJpbWFyeT86IGJvb2xlYW47XG4gIHdpdGhUZXh0PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIE92ZXJyaWRlcyB0aGUgZGVmYXVsdCBtaW5SZWZyZXNoSW50ZXJ2YWwgZnJvbSB0aGUgZ3JhZmFuYSBjb25maWcuIENhbiBiZSBzZXQgdG8gXCIwc1wiIHRvIHJlbW92ZSB0aGUgbWluaW11bSByZWZyZXNoIGludGVydmFsLlxuICAgKi9cbiAgbWluUmVmcmVzaEludGVydmFsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgU2NlbmVSZWZyZXNoUGlja2VyIGV4dGVuZHMgU2NlbmVPYmplY3RCYXNlPFNjZW5lUmVmcmVzaFBpY2tlclN0YXRlPiB7XG4gIHB1YmxpYyBzdGF0aWMgQ29tcG9uZW50ID0gU2NlbmVSZWZyZXNoUGlja2VyUmVuZGVyZXI7XG4gIHByb3RlY3RlZCBfdXJsU3luYyA9IG5ldyBTY2VuZU9iamVjdFVybFN5bmNDb25maWcodGhpcywgeyBrZXlzOiBbJ3JlZnJlc2gnXSB9KTtcbiAgcHJpdmF0ZSBfaW50ZXJ2YWxUaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0SW50ZXJ2YWw+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIF9hdXRvVGltZVJhbmdlTGlzdGVuZXI6IFVuc3Vic2NyaWJhYmxlIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIF9hdXRvUmVmcmVzaEJsb2NrZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgY29uc3RydWN0b3Ioc3RhdGU6IFBhcnRpYWw8U2NlbmVSZWZyZXNoUGlja2VyU3RhdGU+KSB7XG4gICAgY29uc3QgZmlsdGVyRGlzc2Fsb3dlZEludGVydmFscyA9IChpOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IG1pbkludGVydmFsID0gc3RhdGUubWluUmVmcmVzaEludGVydmFsID8/IGNvbmZpZy5taW5SZWZyZXNoSW50ZXJ2YWw7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gbWluSW50ZXJ2YWwgPyByYW5nZVV0aWwuaW50ZXJ2YWxUb01zKGkpID49IHJhbmdlVXRpbC5pbnRlcnZhbFRvTXMobWluSW50ZXJ2YWwpIDogdHJ1ZTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gVW5hYmxlIHRvIHBhcnNlIGludGVydmFsXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgc3VwZXIoe1xuICAgICAgcmVmcmVzaDogJycsXG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGF1dG9WYWx1ZTogdW5kZWZpbmVkLFxuICAgICAgYXV0b0VuYWJsZWQ6IHN0YXRlLmF1dG9FbmFibGVkID8/IHRydWUsXG4gICAgICBhdXRvTWluSW50ZXJ2YWw6IHN0YXRlLmF1dG9NaW5JbnRlcnZhbCA/PyBjb25maWcubWluUmVmcmVzaEludGVydmFsLFxuICAgICAgaW50ZXJ2YWxzOiAoc3RhdGUuaW50ZXJ2YWxzID8/IERFRkFVTFRfSU5URVJWQUxTKS5maWx0ZXIoZmlsdGVyRGlzc2Fsb3dlZEludGVydmFscyksXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZEFjdGl2YXRpb25IYW5kbGVyKCgpID0+IHtcbiAgICAgIHRoaXMuc2V0dXBJbnRlcnZhbFRpbWVyKCk7XG5cbiAgICAgIGNvbnN0IG9uVmlzaWJpbGl0eUNoYW5nZSA9ICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX2F1dG9SZWZyZXNoQmxvY2tlZCAmJiBkb2N1bWVudC52aXNpYmlsaXR5U3RhdGUgPT09ICd2aXNpYmxlJykge1xuICAgICAgICAgIHRoaXMuX2F1dG9SZWZyZXNoQmxvY2tlZCA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMub25SZWZyZXNoKCk7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Zpc2liaWxpdHljaGFuZ2UnLCBvblZpc2liaWxpdHlDaGFuZ2UpO1xuXG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5faW50ZXJ2YWxUaW1lcikge1xuICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5faW50ZXJ2YWxUaW1lcik7XG4gICAgICAgIH1cblxuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd2aXNpYmlsaXR5Y2hhbmdlJywgb25WaXNpYmlsaXR5Q2hhbmdlKTtcbiAgICAgICAgdGhpcy5fYXV0b1RpbWVSYW5nZUxpc3RlbmVyPy51bnN1YnNjcmliZSgpO1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvblJlZnJlc2ggPSAoKSA9PiB7XG4gICAgY29uc3QgcXVlcnlDb250cm9sbGVyID0gc2NlbmVHcmFwaC5nZXRRdWVyeUNvbnRyb2xsZXIodGhpcyk7XG4gICAgaWYgKHF1ZXJ5Q29udHJvbGxlcj8uc3RhdGUuaXNSdW5uaW5nKSB7XG4gICAgICBxdWVyeUNvbnRyb2xsZXIuY2FuY2VsQWxsKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdGltZVJhbmdlID0gc2NlbmVHcmFwaC5nZXRUaW1lUmFuZ2UodGhpcyk7XG5cbiAgICBpZiAodGhpcy5faW50ZXJ2YWxUaW1lcikge1xuICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLl9pbnRlcnZhbFRpbWVyKTtcbiAgICB9XG5cbiAgICB0aW1lUmFuZ2Uub25SZWZyZXNoKCk7XG4gICAgdGhpcy5zZXR1cEludGVydmFsVGltZXIoKTtcbiAgfTtcblxuICBwdWJsaWMgb25JbnRlcnZhbENoYW5nZWQgPSAoaW50ZXJ2YWw6IHN0cmluZykgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoeyByZWZyZXNoOiBpbnRlcnZhbCB9KTtcbiAgICB0aGlzLnNldHVwSW50ZXJ2YWxUaW1lcigpO1xuICB9O1xuXG4gIHB1YmxpYyBnZXRVcmxTdGF0ZSgpIHtcbiAgICBsZXQgcmVmcmVzaDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdGhpcy5zdGF0ZS5yZWZyZXNoO1xuXG4gICAgaWYgKHR5cGVvZiByZWZyZXNoICE9PSAnc3RyaW5nJyB8fCByZWZyZXNoLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmVmcmVzaCA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4geyByZWZyZXNoIH07XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlRnJvbVVybCh2YWx1ZXM6IFNjZW5lT2JqZWN0VXJsVmFsdWVzKSB7XG4gICAgY29uc3QgeyBpbnRlcnZhbHMgfSA9IHRoaXMuc3RhdGU7XG4gICAgbGV0IHJlZnJlc2ggPSB2YWx1ZXMucmVmcmVzaDtcblxuICAgIGlmICh0eXBlb2YgcmVmcmVzaCA9PT0gJ3N0cmluZycgJiYgaXNJbnRlcnZhbFN0cmluZyhyZWZyZXNoKSkge1xuICAgICAgaWYgKGludGVydmFscz8uaW5jbHVkZXMocmVmcmVzaCkpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHJlZnJlc2ggfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAvLyBEZWZhdWx0IHRvIHRoZSBmaXJzdCByZWZyZXNoIGludGVydmFsIGlmIHRoZSBpbnRlcnZhbCBmcm9tIHRoZSBVUkwgaXMgbm90IGFsbG93ZWQsIGp1c3QgbGlrZSBpbiB0aGUgb2xkIGFyY2hpdGVjdHVyZS5cbiAgICAgICAgICByZWZyZXNoOiBpbnRlcnZhbHMgPyBpbnRlcnZhbHNbMF0gOiB1bmRlZmluZWQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBBdXRvVGltZVJhbmdlTGlzdGVuZXIgPSAoKSA9PiB7XG4gICAgLy8gSWYgdGhlIHRpbWUgcmFuZ2UgaGFzIGNoYW5nZWQsIHdlIG5lZWQgdG8gcmVjYWxjdWxhdGUgdGhlIGF1dG8gaW50ZXJ2YWwgYnV0IHByZXZlbnQgdW5uZWNlc3NhcnkgcHJvY2Vzc2luZ1xuICAgIHJldHVybiBzY2VuZUdyYXBoLmdldFRpbWVSYW5nZSh0aGlzKS5zdWJzY3JpYmVUb1N0YXRlKChuZXdTdGF0ZSwgcHJldlN0YXRlKSA9PiB7XG4gICAgICBpZiAobmV3U3RhdGUuZnJvbSAhPT0gcHJldlN0YXRlLmZyb20gfHwgbmV3U3RhdGUudG8gIT09IHByZXZTdGF0ZS50bykge1xuICAgICAgICB0aGlzLnNldHVwSW50ZXJ2YWxUaW1lcigpO1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xuXG4gIHByaXZhdGUgY2FsY3VsYXRlQXV0b1JlZnJlc2hJbnRlcnZhbCA9ICgpID0+IHtcbiAgICBjb25zdCB0aW1lUmFuZ2UgPSBzY2VuZUdyYXBoLmdldFRpbWVSYW5nZSh0aGlzKTtcbiAgICBjb25zdCByZXNvbHV0aW9uID0gd2luZG93Py5pbm5lcldpZHRoID8/IDIwMDA7XG4gICAgcmV0dXJuIHJhbmdlVXRpbC5jYWxjdWxhdGVJbnRlcnZhbCh0aW1lUmFuZ2Uuc3RhdGUudmFsdWUsIHJlc29sdXRpb24sIHRoaXMuc3RhdGUuYXV0b01pbkludGVydmFsKTtcbiAgfTtcblxuICBwcml2YXRlIGlzVGFiVmlzaWJsZSgpIHtcbiAgICByZXR1cm4gZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlID09PSB1bmRlZmluZWQgfHwgZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlID09PSAndmlzaWJsZSc7XG4gIH1cblxuICBwcml2YXRlIHNldHVwSW50ZXJ2YWxUaW1lciA9ICgpID0+IHtcbiAgICBjb25zdCB0aW1lUmFuZ2UgPSBzY2VuZUdyYXBoLmdldFRpbWVSYW5nZSh0aGlzKTtcbiAgICBjb25zdCB7IHJlZnJlc2gsIGludGVydmFscyB9ID0gdGhpcy5zdGF0ZTtcblxuICAgIGlmICh0aGlzLl9pbnRlcnZhbFRpbWVyIHx8IHJlZnJlc2ggPT09ICcnKSB7XG4gICAgICBjbGVhckludGVydmFsKHRoaXMuX2ludGVydmFsVGltZXIpO1xuICAgIH1cblxuICAgIGlmIChyZWZyZXNoID09PSAnJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIElmIHRoZSBwcm92aWRlZCBpbnRlcnZhbCBpcyBub3QgYWxsb3dlZFxuICAgIGlmIChyZWZyZXNoICE9PSBSZWZyZXNoUGlja2VyLmF1dG9PcHRpb24udmFsdWUgJiYgaW50ZXJ2YWxzICYmICFpbnRlcnZhbHMuaW5jbHVkZXMocmVmcmVzaCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgaW50ZXJ2YWxNczogbnVtYmVyO1xuXG4gICAgLy8gVW5zdWJzY3JpYmUgZnJvbSBwcmV2aW91cyBsaXN0ZW5lciBubyBtYXR0ZXIgd2hhdFxuICAgIHRoaXMuX2F1dG9UaW1lUmFuZ2VMaXN0ZW5lcj8udW5zdWJzY3JpYmUoKTtcblxuICAgIGlmIChyZWZyZXNoID09PSBSZWZyZXNoUGlja2VyLmF1dG9PcHRpb24udmFsdWUpIHtcbiAgICAgIGNvbnN0IGF1dG9SZWZyZXNoSW50ZXJ2YWwgPSB0aGlzLmNhbGN1bGF0ZUF1dG9SZWZyZXNoSW50ZXJ2YWwoKTtcblxuICAgICAgaW50ZXJ2YWxNcyA9IGF1dG9SZWZyZXNoSW50ZXJ2YWwuaW50ZXJ2YWxNcztcblxuICAgICAgdGhpcy5fYXV0b1RpbWVSYW5nZUxpc3RlbmVyID0gdGhpcy5zZXR1cEF1dG9UaW1lUmFuZ2VMaXN0ZW5lcigpO1xuXG4gICAgICBpZiAoYXV0b1JlZnJlc2hJbnRlcnZhbC5pbnRlcnZhbCAhPT0gdGhpcy5zdGF0ZS5hdXRvVmFsdWUpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGF1dG9WYWx1ZTogYXV0b1JlZnJlc2hJbnRlcnZhbC5pbnRlcnZhbCB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaW50ZXJ2YWxNcyA9IHJhbmdlVXRpbC5pbnRlcnZhbFRvTXMocmVmcmVzaCk7XG4gICAgfVxuXG4gICAgdGhpcy5faW50ZXJ2YWxUaW1lciA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmlzVGFiVmlzaWJsZSgpKSB7XG4gICAgICAgIHRpbWVSYW5nZS5vblJlZnJlc2goKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2F1dG9SZWZyZXNoQmxvY2tlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSwgaW50ZXJ2YWxNcyk7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTY2VuZVJlZnJlc2hQaWNrZXJSZW5kZXJlcih7IG1vZGVsIH06IFNjZW5lQ29tcG9uZW50UHJvcHM8U2NlbmVSZWZyZXNoUGlja2VyPikge1xuICBjb25zdCB7IHJlZnJlc2gsIGludGVydmFscywgYXV0b0VuYWJsZWQsIGF1dG9WYWx1ZSwgaXNPbkNhbnZhcywgcHJpbWFyeSwgd2l0aFRleHQgfSA9IG1vZGVsLnVzZVN0YXRlKCk7XG4gIGNvbnN0IGlzUnVubmluZyA9IHVzZVF1ZXJ5Q29udHJvbGxlclN0YXRlKG1vZGVsKTtcblxuICBsZXQgdGV4dCA9IHJlZnJlc2ggPT09IFJlZnJlc2hQaWNrZXIuYXV0b09wdGlvbj8udmFsdWUgPyBhdXRvVmFsdWUgOiB3aXRoVGV4dCA/ICdSZWZyZXNoJyA6IHVuZGVmaW5lZDtcbiAgbGV0IHRvb2x0aXA6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgbGV0IHdpZHRoOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgaWYgKGlzUnVubmluZykge1xuICAgIHRvb2x0aXAgPSAnQ2FuY2VsIGFsbCBxdWVyaWVzJztcblxuICAgIGlmICh3aXRoVGV4dCkge1xuICAgICAgdGV4dCA9ICdDYW5jZWwnO1xuICAgIH1cbiAgfVxuXG4gIGlmICh3aXRoVGV4dCkge1xuICAgIHdpZHRoID0gJzk2cHgnO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8UmVmcmVzaFBpY2tlclxuICAgICAgc2hvd0F1dG9JbnRlcnZhbD17YXV0b0VuYWJsZWR9XG4gICAgICB2YWx1ZT17cmVmcmVzaH1cbiAgICAgIGludGVydmFscz17aW50ZXJ2YWxzfVxuICAgICAgdG9vbHRpcD17dG9vbHRpcH1cbiAgICAgIHdpZHRoPXt3aWR0aH1cbiAgICAgIHRleHQ9e3RleHR9XG4gICAgICBvblJlZnJlc2g9e21vZGVsLm9uUmVmcmVzaH1cbiAgICAgIHByaW1hcnk9e3ByaW1hcnl9XG4gICAgICBvbkludGVydmFsQ2hhbmdlZD17bW9kZWwub25JbnRlcnZhbENoYW5nZWR9XG4gICAgICBpc0xvYWRpbmc9e2lzUnVubmluZ31cbiAgICAgIGlzT25DYW52YXM9e2lzT25DYW52YXMgPz8gdHJ1ZX1cbiAgICAvPlxuICApO1xufVxuXG5mdW5jdGlvbiB1c2VRdWVyeUNvbnRyb2xsZXJTdGF0ZShtb2RlbDogU2NlbmVPYmplY3QpOiBib29sZWFuIHtcbiAgY29uc3QgcXVlcnlDb250cm9sbGVyID0gc2NlbmVHcmFwaC5nZXRRdWVyeUNvbnRyb2xsZXIobW9kZWwpO1xuICBpZiAoIXF1ZXJ5Q29udHJvbGxlcikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBxdWVyeUNvbnRyb2xsZXIudXNlU3RhdGUoKS5pc1J1bm5pbmc7XG59XG5cbmZ1bmN0aW9uIGlzSW50ZXJ2YWxTdHJpbmcoc3RyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICBjb25zdCByZXMgPSByYW5nZVV0aWwuZGVzY3JpYmVJbnRlcnZhbChzdHIpO1xuICAgIHJldHVybiByZXMuY291bnQgPiAwO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJfYSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBV2EsTUFBQSxpQkFBQSxHQUFvQixDQUFDLElBQUEsRUFBTSxLQUFPLEVBQUEsS0FBQSxFQUFPLElBQU0sRUFBQSxJQUFBLEVBQU0sS0FBTyxFQUFBLEtBQUEsRUFBTyxJQUFNLEVBQUEsSUFBQSxFQUFNLElBQUksRUFBQTtBQXVCekYsTUFBTSwyQkFBMkIsZUFBeUMs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
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { useLocalStorage } from 'react-use';
|
|
3
|
+
import { uniqBy } from 'lodash';
|
|
4
|
+
import { toUtc, rangeUtil, isDateTime } from '@grafana/data';
|
|
5
|
+
import { TimeRangePicker } from '@grafana/ui';
|
|
6
|
+
import { SceneObjectBase } from '../core/SceneObjectBase.js';
|
|
7
|
+
import { sceneGraph } from '../core/sceneGraph/index.js';
|
|
8
|
+
|
|
9
|
+
class SceneTimePicker extends SceneObjectBase {
|
|
10
|
+
constructor() {
|
|
11
|
+
super(...arguments);
|
|
12
|
+
this.onZoom = () => {
|
|
13
|
+
const timeRange = sceneGraph.getTimeRange(this);
|
|
14
|
+
const zoomedTimeRange = getZoomedTimeRange(timeRange.state.value, 2);
|
|
15
|
+
timeRange.onTimeRangeChange(zoomedTimeRange);
|
|
16
|
+
};
|
|
17
|
+
this.onChangeFiscalYearStartMonth = (month) => {
|
|
18
|
+
const timeRange = sceneGraph.getTimeRange(this);
|
|
19
|
+
timeRange.setState({ fiscalYearStartMonth: month });
|
|
20
|
+
};
|
|
21
|
+
this.toAbsolute = () => {
|
|
22
|
+
const timeRange = sceneGraph.getTimeRange(this);
|
|
23
|
+
const timeRangeVal = timeRange.state.value;
|
|
24
|
+
const from = toUtc(timeRangeVal.from);
|
|
25
|
+
const to = toUtc(timeRangeVal.to);
|
|
26
|
+
timeRange.onTimeRangeChange({ from, to, raw: { from, to } });
|
|
27
|
+
};
|
|
28
|
+
this.onMoveBackward = () => {
|
|
29
|
+
const timeRange = sceneGraph.getTimeRange(this);
|
|
30
|
+
const {
|
|
31
|
+
state: { value: range }
|
|
32
|
+
} = timeRange;
|
|
33
|
+
timeRange.onTimeRangeChange(getShiftedTimeRange(TimeRangeDirection.Backward, range, Date.now()));
|
|
34
|
+
};
|
|
35
|
+
this.onMoveForward = () => {
|
|
36
|
+
const timeRange = sceneGraph.getTimeRange(this);
|
|
37
|
+
const {
|
|
38
|
+
state: { value: range }
|
|
39
|
+
} = timeRange;
|
|
40
|
+
timeRange.onTimeRangeChange(getShiftedTimeRange(TimeRangeDirection.Forward, range, Date.now()));
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
SceneTimePicker.Component = SceneTimePickerRenderer;
|
|
45
|
+
function SceneTimePickerRenderer({ model }) {
|
|
46
|
+
const { hidePicker, isOnCanvas } = model.useState();
|
|
47
|
+
const timeRange = sceneGraph.getTimeRange(model);
|
|
48
|
+
const timeZone = timeRange.getTimeZone();
|
|
49
|
+
const timeRangeState = timeRange.useState();
|
|
50
|
+
const [timeRangeHistory, setTimeRangeHistory] = useLocalStorage(HISTORY_LOCAL_STORAGE_KEY, [], {
|
|
51
|
+
raw: false,
|
|
52
|
+
serializer: serializeHistory,
|
|
53
|
+
deserializer: deserializeHistory
|
|
54
|
+
});
|
|
55
|
+
if (hidePicker) {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
return /* @__PURE__ */ React.createElement(TimeRangePicker, {
|
|
59
|
+
isOnCanvas: isOnCanvas != null ? isOnCanvas : true,
|
|
60
|
+
value: timeRangeState.value,
|
|
61
|
+
onChange: (range) => {
|
|
62
|
+
if (isAbsolute(range)) {
|
|
63
|
+
setTimeRangeHistory([range, ...timeRangeHistory != null ? timeRangeHistory : []]);
|
|
64
|
+
}
|
|
65
|
+
timeRange.onTimeRangeChange(range);
|
|
66
|
+
},
|
|
67
|
+
timeZone,
|
|
68
|
+
fiscalYearStartMonth: timeRangeState.fiscalYearStartMonth,
|
|
69
|
+
onMoveBackward: model.onMoveBackward,
|
|
70
|
+
onMoveForward: model.onMoveForward,
|
|
71
|
+
onZoom: model.onZoom,
|
|
72
|
+
onChangeTimeZone: timeRange.onTimeZoneChange,
|
|
73
|
+
onChangeFiscalYearStartMonth: model.onChangeFiscalYearStartMonth,
|
|
74
|
+
weekStart: timeRangeState.weekStart,
|
|
75
|
+
history: timeRangeHistory
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
function getZoomedTimeRange(timeRange, factor) {
|
|
79
|
+
const timespan = timeRange.to.valueOf() - timeRange.from.valueOf();
|
|
80
|
+
const center = timeRange.to.valueOf() - timespan / 2;
|
|
81
|
+
const newTimespan = timespan === 0 ? 3e4 : timespan * factor;
|
|
82
|
+
const to = center + newTimespan / 2;
|
|
83
|
+
const from = center - newTimespan / 2;
|
|
84
|
+
return { from: toUtc(from), to: toUtc(to), raw: { from: toUtc(from), to: toUtc(to) } };
|
|
85
|
+
}
|
|
86
|
+
var TimeRangeDirection = /* @__PURE__ */ ((TimeRangeDirection2) => {
|
|
87
|
+
TimeRangeDirection2[TimeRangeDirection2["Backward"] = 0] = "Backward";
|
|
88
|
+
TimeRangeDirection2[TimeRangeDirection2["Forward"] = 1] = "Forward";
|
|
89
|
+
return TimeRangeDirection2;
|
|
90
|
+
})(TimeRangeDirection || {});
|
|
91
|
+
function getShiftedTimeRange(dir, timeRange, upperLimit) {
|
|
92
|
+
const oldTo = timeRange.to.valueOf();
|
|
93
|
+
const oldFrom = timeRange.from.valueOf();
|
|
94
|
+
const halfSpan = (oldTo - oldFrom) / 2;
|
|
95
|
+
let fromRaw;
|
|
96
|
+
let toRaw;
|
|
97
|
+
if (dir === 0 /* Backward */) {
|
|
98
|
+
fromRaw = oldFrom - halfSpan;
|
|
99
|
+
toRaw = oldTo - halfSpan;
|
|
100
|
+
} else {
|
|
101
|
+
fromRaw = oldFrom + halfSpan;
|
|
102
|
+
toRaw = oldTo + halfSpan;
|
|
103
|
+
if (toRaw > upperLimit && oldTo < upperLimit) {
|
|
104
|
+
toRaw = upperLimit;
|
|
105
|
+
fromRaw = oldFrom;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
const from = toUtc(fromRaw);
|
|
109
|
+
const to = toUtc(toRaw);
|
|
110
|
+
return {
|
|
111
|
+
from,
|
|
112
|
+
to,
|
|
113
|
+
raw: { from, to }
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
const HISTORY_LOCAL_STORAGE_KEY = "grafana.dashboard.timepicker.history";
|
|
117
|
+
function deserializeHistory(value) {
|
|
118
|
+
const values = JSON.parse(value);
|
|
119
|
+
return values.map((item) => rangeUtil.convertRawToRange(item, "utc", void 0, "YYYY-MM-DD HH:mm:ss"));
|
|
120
|
+
}
|
|
121
|
+
function serializeHistory(values) {
|
|
122
|
+
return JSON.stringify(
|
|
123
|
+
limit(
|
|
124
|
+
values.map((v) => ({
|
|
125
|
+
from: typeof v.raw.from === "string" ? v.raw.from : v.raw.from.toISOString(),
|
|
126
|
+
to: typeof v.raw.to === "string" ? v.raw.to : v.raw.to.toISOString()
|
|
127
|
+
}))
|
|
128
|
+
)
|
|
129
|
+
);
|
|
130
|
+
}
|
|
131
|
+
function limit(value) {
|
|
132
|
+
return uniqBy(value, (v) => v.from + v.to).slice(0, 4);
|
|
133
|
+
}
|
|
134
|
+
function isAbsolute(value) {
|
|
135
|
+
return isDateTime(value.raw.from) || isDateTime(value.raw.to);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
export { SceneTimePicker, TimeRangeDirection, getShiftedTimeRange, getZoomedTimeRange };
|
|
139
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NlbmVUaW1lUGlja2VyLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9TY2VuZVRpbWVQaWNrZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VMb2NhbFN0b3JhZ2UgfSBmcm9tICdyZWFjdC11c2UnO1xuaW1wb3J0IHsgdW5pcUJ5IH0gZnJvbSAnbG9kYXNoJztcblxuaW1wb3J0IHsgVGltZVJhbmdlLCBpc0RhdGVUaW1lLCByYW5nZVV0aWwsIHRvVXRjIH0gZnJvbSAnQGdyYWZhbmEvZGF0YSc7XG5pbXBvcnQgeyBUaW1lUmFuZ2VQaWNrZXIgfSBmcm9tICdAZ3JhZmFuYS91aSc7XG5cbmltcG9ydCB7IFNjZW5lT2JqZWN0QmFzZSB9IGZyb20gJy4uL2NvcmUvU2NlbmVPYmplY3RCYXNlJztcbmltcG9ydCB7IHNjZW5lR3JhcGggfSBmcm9tICcuLi9jb3JlL3NjZW5lR3JhcGgnO1xuaW1wb3J0IHsgU2NlbmVDb21wb25lbnRQcm9wcywgU2NlbmVPYmplY3RTdGF0ZSB9IGZyb20gJy4uL2NvcmUvdHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNjZW5lVGltZVBpY2tlclN0YXRlIGV4dGVuZHMgU2NlbmVPYmplY3RTdGF0ZSB7XG4gIGhpZGVQaWNrZXI/OiBib29sZWFuO1xuICBpc09uQ2FudmFzPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIFNjZW5lVGltZVBpY2tlciBleHRlbmRzIFNjZW5lT2JqZWN0QmFzZTxTY2VuZVRpbWVQaWNrZXJTdGF0ZT4ge1xuICBwdWJsaWMgc3RhdGljIENvbXBvbmVudCA9IFNjZW5lVGltZVBpY2tlclJlbmRlcmVyO1xuXG4gIHB1YmxpYyBvblpvb20gPSAoKSA9PiB7XG4gICAgY29uc3QgdGltZVJhbmdlID0gc2NlbmVHcmFwaC5nZXRUaW1lUmFuZ2UodGhpcyk7XG4gICAgY29uc3Qgem9vbWVkVGltZVJhbmdlID0gZ2V0Wm9vbWVkVGltZVJhbmdlKHRpbWVSYW5nZS5zdGF0ZS52YWx1ZSwgMik7XG4gICAgdGltZVJhbmdlLm9uVGltZVJhbmdlQ2hhbmdlKHpvb21lZFRpbWVSYW5nZSk7XG4gIH07XG5cbiAgcHVibGljIG9uQ2hhbmdlRmlzY2FsWWVhclN0YXJ0TW9udGggPSAobW9udGg6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IHRpbWVSYW5nZSA9IHNjZW5lR3JhcGguZ2V0VGltZVJhbmdlKHRoaXMpO1xuICAgIHRpbWVSYW5nZS5zZXRTdGF0ZSh7IGZpc2NhbFllYXJTdGFydE1vbnRoOiBtb250aCB9KTtcbiAgfTtcblxuICBwdWJsaWMgdG9BYnNvbHV0ZSA9ICgpID0+IHtcbiAgICBjb25zdCB0aW1lUmFuZ2UgPSBzY2VuZUdyYXBoLmdldFRpbWVSYW5nZSh0aGlzKTtcbiAgICBjb25zdCB0aW1lUmFuZ2VWYWwgPSB0aW1lUmFuZ2Uuc3RhdGUudmFsdWU7XG4gICAgY29uc3QgZnJvbSA9IHRvVXRjKHRpbWVSYW5nZVZhbC5mcm9tKTtcbiAgICBjb25zdCB0byA9IHRvVXRjKHRpbWVSYW5nZVZhbC50byk7XG4gICAgdGltZVJhbmdlLm9uVGltZVJhbmdlQ2hhbmdlKHsgZnJvbSwgdG8sIHJhdzogeyBmcm9tLCB0byB9IH0pO1xuICB9O1xuXG4gIHB1YmxpYyBvbk1vdmVCYWNrd2FyZCA9ICgpID0+IHtcbiAgICBjb25zdCB0aW1lUmFuZ2UgPSBzY2VuZUdyYXBoLmdldFRpbWVSYW5nZSh0aGlzKTtcbiAgICBjb25zdCB7XG4gICAgICBzdGF0ZTogeyB2YWx1ZTogcmFuZ2UgfSxcbiAgICB9ID0gdGltZVJhbmdlO1xuXG4gICAgdGltZVJhbmdlLm9uVGltZVJhbmdlQ2hhbmdlKGdldFNoaWZ0ZWRUaW1lUmFuZ2UoVGltZVJhbmdlRGlyZWN0aW9uLkJhY2t3YXJkLCByYW5nZSwgRGF0ZS5ub3coKSkpO1xuICB9O1xuXG4gIHB1YmxpYyBvbk1vdmVGb3J3YXJkID0gKCkgPT4ge1xuICAgIGNvbnN0IHRpbWVSYW5nZSA9IHNjZW5lR3JhcGguZ2V0VGltZVJhbmdlKHRoaXMpO1xuICAgIGNvbnN0IHtcbiAgICAgIHN0YXRlOiB7IHZhbHVlOiByYW5nZSB9LFxuICAgIH0gPSB0aW1lUmFuZ2U7XG5cbiAgICB0aW1lUmFuZ2Uub25UaW1lUmFuZ2VDaGFuZ2UoZ2V0U2hpZnRlZFRpbWVSYW5nZShUaW1lUmFuZ2VEaXJlY3Rpb24uRm9yd2FyZCwgcmFuZ2UsIERhdGUubm93KCkpKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gU2NlbmVUaW1lUGlja2VyUmVuZGVyZXIoeyBtb2RlbCB9OiBTY2VuZUNvbXBvbmVudFByb3BzPFNjZW5lVGltZVBpY2tlcj4pIHtcbiAgY29uc3QgeyBoaWRlUGlja2VyLCBpc09uQ2FudmFzIH0gPSBtb2RlbC51c2VTdGF0ZSgpO1xuICBjb25zdCB0aW1lUmFuZ2UgPSBzY2VuZUdyYXBoLmdldFRpbWVSYW5nZShtb2RlbCk7XG4gIGNvbnN0IHRpbWVab25lID0gdGltZVJhbmdlLmdldFRpbWVab25lKCk7XG4gIGNvbnN0IHRpbWVSYW5nZVN0YXRlID0gdGltZVJhbmdlLnVzZVN0YXRlKCk7XG4gIGNvbnN0IFt0aW1lUmFuZ2VIaXN0b3J5LCBzZXRUaW1lUmFuZ2VIaXN0b3J5XSA9IHVzZUxvY2FsU3RvcmFnZTxUaW1lUmFuZ2VbXT4oSElTVE9SWV9MT0NBTF9TVE9SQUdFX0tFWSwgW10sIHtcbiAgICByYXc6IGZhbHNlLFxuICAgIHNlcmlhbGl6ZXI6IHNlcmlhbGl6ZUhpc3RvcnksXG4gICAgZGVzZXJpYWxpemVyOiBkZXNlcmlhbGl6ZUhpc3RvcnksXG4gIH0pO1xuXG4gIGlmIChoaWRlUGlja2VyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxUaW1lUmFuZ2VQaWNrZXJcbiAgICAgIGlzT25DYW52YXM9e2lzT25DYW52YXMgPz8gdHJ1ZX1cbiAgICAgIHZhbHVlPXt0aW1lUmFuZ2VTdGF0ZS52YWx1ZX1cbiAgICAgIG9uQ2hhbmdlPXsocmFuZ2UpID0+IHtcbiAgICAgICAgaWYgKGlzQWJzb2x1dGUocmFuZ2UpKSB7XG4gICAgICAgICAgc2V0VGltZVJhbmdlSGlzdG9yeShbcmFuZ2UsIC4uLih0aW1lUmFuZ2VIaXN0b3J5ID8/IFtdKV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGltZVJhbmdlLm9uVGltZVJhbmdlQ2hhbmdlKHJhbmdlKTtcbiAgICAgIH19XG4gICAgICB0aW1lWm9uZT17dGltZVpvbmV9XG4gICAgICBmaXNjYWxZZWFyU3RhcnRNb250aD17dGltZVJhbmdlU3RhdGUuZmlzY2FsWWVhclN0YXJ0TW9udGh9XG4gICAgICBvbk1vdmVCYWNrd2FyZD17bW9kZWwub25Nb3ZlQmFja3dhcmR9XG4gICAgICBvbk1vdmVGb3J3YXJkPXttb2RlbC5vbk1vdmVGb3J3YXJkfVxuICAgICAgb25ab29tPXttb2RlbC5vblpvb219XG4gICAgICBvbkNoYW5nZVRpbWVab25lPXt0aW1lUmFuZ2Uub25UaW1lWm9uZUNoYW5nZX1cbiAgICAgIG9uQ2hhbmdlRmlzY2FsWWVhclN0YXJ0TW9udGg9e21vZGVsLm9uQ2hhbmdlRmlzY2FsWWVhclN0YXJ0TW9udGh9XG4gICAgICAvLyBAdHMtaWdub3JlIFRPRE8gcmVtb3ZlIGFmdGVyIGdyYWZhbmEvdWkgdXBkYXRlIHRvIDExLjIuMFxuICAgICAgd2Vla1N0YXJ0PXt0aW1lUmFuZ2VTdGF0ZS53ZWVrU3RhcnR9XG4gICAgICBoaXN0b3J5PXt0aW1lUmFuZ2VIaXN0b3J5fVxuICAgIC8+XG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRab29tZWRUaW1lUmFuZ2UodGltZVJhbmdlOiBUaW1lUmFuZ2UsIGZhY3RvcjogbnVtYmVyKTogVGltZVJhbmdlIHtcbiAgY29uc3QgdGltZXNwYW4gPSB0aW1lUmFuZ2UudG8udmFsdWVPZigpIC0gdGltZVJhbmdlLmZyb20udmFsdWVPZigpO1xuICBjb25zdCBjZW50ZXIgPSB0aW1lUmFuZ2UudG8udmFsdWVPZigpIC0gdGltZXNwYW4gLyAyO1xuICAvLyBJZiB0aGUgdGltZXBzYW4gaXMgMCwgem9vbWluZyBvdXQgd291bGQgZG8gbm90aGluZywgc28gd2UgZm9yY2UgYSB6b29tIG91dCB0byAzMHNcbiAgY29uc3QgbmV3VGltZXNwYW4gPSB0aW1lc3BhbiA9PT0gMCA/IDMwMDAwIDogdGltZXNwYW4gKiBmYWN0b3I7XG5cbiAgY29uc3QgdG8gPSBjZW50ZXIgKyBuZXdUaW1lc3BhbiAvIDI7XG4gIGNvbnN0IGZyb20gPSBjZW50ZXIgLSBuZXdUaW1lc3BhbiAvIDI7XG5cbiAgcmV0dXJuIHsgZnJvbTogdG9VdGMoZnJvbSksIHRvOiB0b1V0Yyh0byksIHJhdzogeyBmcm9tOiB0b1V0Yyhmcm9tKSwgdG86IHRvVXRjKHRvKSB9IH07XG59XG5cbmV4cG9ydCBlbnVtIFRpbWVSYW5nZURpcmVjdGlvbiB7XG4gIEJhY2t3YXJkLFxuICBGb3J3YXJkLFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2hpZnRlZFRpbWVSYW5nZShkaXI6IFRpbWVSYW5nZURpcmVjdGlvbiwgdGltZVJhbmdlOiBUaW1lUmFuZ2UsIHVwcGVyTGltaXQ6IG51bWJlcik6IFRpbWVSYW5nZSB7XG4gIGNvbnN0IG9sZFRvID0gdGltZVJhbmdlLnRvLnZhbHVlT2YoKTtcbiAgY29uc3Qgb2xkRnJvbSA9IHRpbWVSYW5nZS5mcm9tLnZhbHVlT2YoKTtcbiAgY29uc3QgaGFsZlNwYW4gPSAob2xkVG8gLSBvbGRGcm9tKSAvIDI7XG5cbiAgbGV0IGZyb21SYXc6IG51bWJlcjtcbiAgbGV0IHRvUmF3OiBudW1iZXI7XG4gIGlmIChkaXIgPT09IFRpbWVSYW5nZURpcmVjdGlvbi5CYWNrd2FyZCkge1xuICAgIGZyb21SYXcgPSBvbGRGcm9tIC0gaGFsZlNwYW47XG4gICAgdG9SYXcgPSBvbGRUbyAtIGhhbGZTcGFuO1xuICB9IGVsc2Uge1xuICAgIGZyb21SYXcgPSBvbGRGcm9tICsgaGFsZlNwYW47XG4gICAgdG9SYXcgPSBvbGRUbyArIGhhbGZTcGFuO1xuXG4gICAgaWYgKHRvUmF3ID4gdXBwZXJMaW1pdCAmJiBvbGRUbyA8IHVwcGVyTGltaXQpIHtcbiAgICAgIHRvUmF3ID0gdXBwZXJMaW1pdDtcbiAgICAgIGZyb21SYXcgPSBvbGRGcm9tO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGZyb20gPSB0b1V0Yyhmcm9tUmF3KTtcbiAgY29uc3QgdG8gPSB0b1V0Yyh0b1Jhdyk7XG4gIHJldHVybiB7XG4gICAgZnJvbSxcbiAgICB0byxcbiAgICByYXc6IHsgZnJvbSwgdG8gfSxcbiAgfTtcbn1cblxuY29uc3QgSElTVE9SWV9MT0NBTF9TVE9SQUdFX0tFWSA9ICdncmFmYW5hLmRhc2hib2FyZC50aW1lcGlja2VyLmhpc3RvcnknO1xuXG4vLyBTaW1wbGlmaWVkIG9iamVjdCB0byBzdG9yZSBpbiBsb2NhbCBzdG9yYWdlXG5pbnRlcmZhY2UgVGltZVBpY2tlckhpc3RvcnlJdGVtIHtcbiAgZnJvbTogc3RyaW5nO1xuICB0bzogc3RyaW5nO1xufVxuXG5mdW5jdGlvbiBkZXNlcmlhbGl6ZUhpc3RvcnkodmFsdWU6IHN0cmluZyk6IFRpbWVSYW5nZVtdIHtcbiAgY29uc3QgdmFsdWVzOiBUaW1lUGlja2VySGlzdG9yeUl0ZW1bXSA9IEpTT04ucGFyc2UodmFsdWUpO1xuICAvLyBUaGUgaGlzdG9yeSBpcyBzYXZlZCBpbiBVVEMgYW5kIHdpdGggdGhlIGRlZmF1bHQgZGF0ZSBmb3JtYXQsIHNvIHdlIG5lZWQgdG8gcGFzcyB0aG9zZSB2YWx1ZXMgdG8gdGhlIGNvbnZlcnRSYXdUb1JhbmdlXG4gIHJldHVybiB2YWx1ZXMubWFwKChpdGVtKSA9PiByYW5nZVV0aWwuY29udmVydFJhd1RvUmFuZ2UoaXRlbSwgJ3V0YycsIHVuZGVmaW5lZCwgJ1lZWVktTU0tREQgSEg6bW06c3MnKSk7XG59XG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZUhpc3RvcnkodmFsdWVzOiBUaW1lUmFuZ2VbXSkge1xuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoXG4gICAgbGltaXQoXG4gICAgICB2YWx1ZXMubWFwKCh2KSA9PiAoe1xuICAgICAgICBmcm9tOiB0eXBlb2Ygdi5yYXcuZnJvbSA9PT0gJ3N0cmluZycgPyB2LnJhdy5mcm9tIDogdi5yYXcuZnJvbS50b0lTT1N0cmluZygpLFxuICAgICAgICB0bzogdHlwZW9mIHYucmF3LnRvID09PSAnc3RyaW5nJyA/IHYucmF3LnRvIDogdi5yYXcudG8udG9JU09TdHJpbmcoKSxcbiAgICAgIH0pKVxuICAgIClcbiAgKTtcbn1cblxuZnVuY3Rpb24gbGltaXQodmFsdWU6IFRpbWVQaWNrZXJIaXN0b3J5SXRlbVtdKTogVGltZVBpY2tlckhpc3RvcnlJdGVtW10ge1xuICByZXR1cm4gdW5pcUJ5KHZhbHVlLCAodikgPT4gdi5mcm9tICsgdi50bykuc2xpY2UoMCwgNCk7XG59XG5cbmZ1bmN0aW9uIGlzQWJzb2x1dGUodmFsdWU6IFRpbWVSYW5nZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gaXNEYXRlVGltZSh2YWx1ZS5yYXcuZnJvbSkgfHwgaXNEYXRlVGltZSh2YWx1ZS5yYXcudG8pO1xufVxuIl0sIm5hbWVzIjpbIlRpbWVSYW5nZURpcmVjdGlvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFnQk8sTUFBTSx3QkFBd0IsZUFBc0MsQ0FBQTtBQUFBLEVBQXBFLFdBQUEsR0FBQTtBQUFBLElBQUEsS0FBQSxDQUFBLEdBQUEsU0FBQSxDQUFBLENBQUE7QUFHTCxJQUFBLElBQUEsQ0FBTyxTQUFTLE1BQU07QUFDcEIsTUFBTSxNQUFBLFNBQUEsR0FBWSxVQUFXLENBQUEsWUFBQSxDQUFhLElBQUksQ0FBQSxDQUFBO0FBQzlDLE1BQUEsTUFBTSxlQUFrQixHQUFBLGtCQUFBLENBQW1CLFNBQVUsQ0FBQSxLQUFBLENBQU0sT0FBTyxDQUFDLENBQUEsQ0FBQTtBQUNuRSxNQUFBLFNBQUEsQ0FBVSxrQkFBa0IsZUFBZSxDQUFBLENBQUE7QUFBQSxLQUM3QyxDQUFBO0FBRUEsSUFBTyxJQUFBLENBQUEsNEJBQUEsR0FBK0IsQ0FBQyxLQUFrQixLQUFBO0FBQ3ZELE1BQU0sTUFBQSxTQUFBLEdBQVksVUFB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LENBQUksRUFBTyxLQUFBLFFBQUEsR0FBVyxDQUFFLENBQUEsR0FBQSxDQUFJLEVBQUssR0FBQSxDQUFBLENBQUUsR0FBSSxDQUFBLEVBQUEsQ0FBRyxXQUFZLEVBQUE7QUFBQSxPQUNuRSxDQUFBLENBQUE7QUFBQSxLQUNKO0FBQUEsR0FDRixDQUFBO0FBQ0YsQ0FBQTtBQUVBLFNBQVMsTUFBTSxLQUF5RCxFQUFBO0FBQ3RFLEVBQU8sT0FBQSxNQUFBLENBQU8sS0FBTyxFQUFBLENBQUMsQ0FBTSxLQUFBLENBQUEsQ0FBRSxJQUFPLEdBQUEsQ0FBQSxDQUFFLEVBQUUsQ0FBQSxDQUFFLEtBQU0sQ0FBQSxDQUFBLEVBQUcsQ0FBQyxDQUFBLENBQUE7QUFDdkQsQ0FBQTtBQUVBLFNBQVMsV0FBVyxLQUEyQixFQUFBO0FBQzdDLEVBQU8sT0FBQSxVQUFBLENBQVcsTUFBTSxHQUFJLENBQUEsSUFBSSxLQUFLLFVBQVcsQ0FBQSxLQUFBLENBQU0sSUFBSSxFQUFFLENBQUEsQ0FBQTtBQUM5RDs7OzsifQ==
|