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