@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
|
@@ -23,8 +23,8 @@ function toSelectableValue(value, label) {
|
|
|
23
23
|
label: label != null ? label : String(value)
|
|
24
24
|
};
|
|
25
25
|
}
|
|
26
|
-
function VariableValueSelect({ model }) {
|
|
27
|
-
const { value, text, key, options, includeAll, isReadOnly, allowCustomValue = true } =
|
|
26
|
+
function VariableValueSelect({ model, state }) {
|
|
27
|
+
const { value, text, key, options, includeAll, isReadOnly, allowCustomValue = true } = state;
|
|
28
28
|
const [inputValue, setInputValue] = useState("");
|
|
29
29
|
const [hasCustomValue, setHasCustomValue] = useState(false);
|
|
30
30
|
const selectValue = toSelectableValue(value, String(text));
|
|
@@ -78,7 +78,10 @@ function VariableValueSelect({ model }) {
|
|
|
78
78
|
}
|
|
79
79
|
);
|
|
80
80
|
}
|
|
81
|
-
function VariableValueSelectMulti({
|
|
81
|
+
function VariableValueSelectMulti({
|
|
82
|
+
model,
|
|
83
|
+
state
|
|
84
|
+
}) {
|
|
82
85
|
const {
|
|
83
86
|
value,
|
|
84
87
|
options,
|
|
@@ -88,7 +91,7 @@ function VariableValueSelectMulti({ model }) {
|
|
|
88
91
|
includeAll,
|
|
89
92
|
isReadOnly,
|
|
90
93
|
allowCustomValue = true
|
|
91
|
-
} =
|
|
94
|
+
} = state;
|
|
92
95
|
const arrayValue = useMemo(() => isArray(value) ? value : [value], [value]);
|
|
93
96
|
const [uncommittedValue, setUncommittedValue] = useState(arrayValue);
|
|
94
97
|
const [inputValue, setInputValue] = useState("");
|
|
@@ -196,13 +199,14 @@ const getOptionStyles = (theme) => ({
|
|
|
196
199
|
marginRight: theme.spacing(2)
|
|
197
200
|
})
|
|
198
201
|
});
|
|
199
|
-
function
|
|
200
|
-
|
|
201
|
-
|
|
202
|
+
function MultiOrSingleValueSelect({ model }) {
|
|
203
|
+
const state = model.useState();
|
|
204
|
+
if (state.isMulti) {
|
|
205
|
+
return /* @__PURE__ */ React.createElement(VariableValueSelectMulti, { model, state });
|
|
202
206
|
} else {
|
|
203
|
-
return /* @__PURE__ */ React.createElement(VariableValueSelect, { model });
|
|
207
|
+
return /* @__PURE__ */ React.createElement(VariableValueSelect, { model, state });
|
|
204
208
|
}
|
|
205
209
|
}
|
|
206
210
|
|
|
207
|
-
export { OptionWithCheckbox, VariableValueSelect, VariableValueSelectMulti,
|
|
211
|
+
export { MultiOrSingleValueSelect, OptionWithCheckbox, VariableValueSelect, VariableValueSelectMulti, toSelectableValue };
|
|
208
212
|
//# sourceMappingURL=VariableValueSelect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VariableValueSelect.js","sources":["../../../../src/variables/components/VariableValueSelect.tsx"],"sourcesContent":["import { isArray } from 'lodash';\nimport React, { RefCallback, useEffect, useMemo, useState } from 'react';\nimport {\n Checkbox,\n InputActionMeta,\n MultiSelect,\n Select,\n ToggleAllState,\n getSelectStyles,\n useStyles2,\n useTheme2,\n} from '@grafana/ui';\n\nimport { SceneComponentProps } from '../../core/types';\nimport { MultiValueVariable } from '../variants/MultiValueVariable';\nimport { VariableValue, VariableValueSingle } from '../types';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { GrafanaTheme2, SelectableValue } from '@grafana/data';\nimport { css, cx } from '@emotion/css';\nimport { getOptionSearcher } from './getOptionSearcher';\nimport { sceneGraph } from '../../core/sceneGraph';\n\nconst filterNoOp = () => true;\n\nconst filterAll = (v: SelectableValue<VariableValueSingle>) => v.value !== '$__all';\n\nconst determineToggleAllState = (\n selectedValues: Array<SelectableValue<VariableValueSingle>>,\n options: Array<SelectableValue<VariableValueSingle>>\n) => {\n if (selectedValues.length === options.filter(filterAll).length) {\n return ToggleAllState.allSelected;\n } else if (\n selectedValues.length === 0 ||\n (selectedValues.length === 1 && selectedValues[0] && selectedValues[0].value === '$__all')\n ) {\n return ToggleAllState.noneSelected;\n } else {\n return ToggleAllState.indeterminate;\n }\n};\n\nexport function toSelectableValue<T>(value: T, label?: string): SelectableValue<T> {\n return {\n value,\n label: label ?? String(value),\n };\n}\n\nexport function VariableValueSelect({ model }: SceneComponentProps<MultiValueVariable>) {\n const { value, text, key, options, includeAll, isReadOnly, allowCustomValue = true } = model.useState();\n const [inputValue, setInputValue] = useState('');\n const [hasCustomValue, setHasCustomValue] = useState(false);\n const selectValue = toSelectableValue(value, String(text));\n const queryController = sceneGraph.getQueryController(model);\n const optionSearcher = useMemo(() => getOptionSearcher(options, includeAll), [options, includeAll]);\n\n const onInputChange = (value: string, { action }: InputActionMeta) => {\n if (action === 'input-change') {\n setInputValue(value);\n if (model.onSearchChange) {\n model.onSearchChange!(value);\n }\n return value;\n }\n\n return value;\n };\n\n const filteredOptions = optionSearcher(inputValue);\n\n const onOpenMenu = () => {\n if (hasCustomValue) {\n setInputValue(String(text));\n }\n };\n\n const onCloseMenu = () => {\n setInputValue('');\n };\n\n return (\n <Select<VariableValue>\n id={key}\n isValidNewOption={(inputValue) => inputValue.trim().length > 0}\n placeholder=\"Select value\"\n width=\"auto\"\n disabled={isReadOnly}\n value={selectValue}\n inputValue={inputValue}\n allowCustomValue={allowCustomValue}\n virtualized\n filterOption={filterNoOp}\n tabSelectsValue={false}\n onInputChange={onInputChange}\n onOpenMenu={onOpenMenu}\n onCloseMenu={onCloseMenu}\n options={filteredOptions}\n data-testid={selectors.pages.Dashboard.SubMenu.submenuItemValueDropDownValueLinkTexts(`${value}`)}\n onChange={(newValue) => {\n model.changeValueTo(newValue.value!, newValue.label!, true);\n queryController?.startProfile('VariableValueSelect');\n\n if (hasCustomValue !== newValue.__isNew__) {\n setHasCustomValue(newValue.__isNew__);\n }\n }}\n />\n );\n}\n\nexport function VariableValueSelectMulti({ model }: SceneComponentProps<MultiValueVariable>) {\n const {\n value,\n options,\n key,\n maxVisibleValues,\n noValueOnClear,\n includeAll,\n isReadOnly,\n allowCustomValue = true,\n } = model.useState();\n const arrayValue = useMemo(() => (isArray(value) ? value : [value]), [value]);\n // To not trigger queries on every selection we store this state locally here and only update the variable onBlur\n const [uncommittedValue, setUncommittedValue] = useState(arrayValue);\n const [inputValue, setInputValue] = useState('');\n const queryController = sceneGraph.getQueryController(model);\n\n const optionSearcher = useMemo(() => getOptionSearcher(options, includeAll), [options, includeAll]);\n\n // Detect value changes outside\n useEffect(() => {\n setUncommittedValue(arrayValue);\n }, [arrayValue]);\n\n const onInputChange = (value: string, { action }: InputActionMeta) => {\n if (action === 'input-change') {\n setInputValue(value);\n if (model.onSearchChange) {\n model.onSearchChange!(value);\n }\n return value;\n }\n\n if (action === 'input-blur') {\n setInputValue('');\n return '';\n }\n\n return inputValue;\n };\n\n const placeholder = options.length > 0 ? 'Select value' : '';\n const filteredOptions = optionSearcher(inputValue);\n\n return (\n <MultiSelect<VariableValueSingle>\n id={key}\n placeholder={placeholder}\n width=\"auto\"\n inputValue={inputValue}\n disabled={isReadOnly}\n value={uncommittedValue}\n noMultiValueWrap={true}\n maxVisibleValues={maxVisibleValues ?? 5}\n tabSelectsValue={false}\n virtualized\n allowCustomValue={allowCustomValue}\n //@ts-ignore\n toggleAllOptions={{\n enabled: true,\n optionsFilter: filterAll,\n determineToggleAllState: determineToggleAllState,\n }}\n options={filteredOptions}\n closeMenuOnSelect={false}\n components={{ Option: OptionWithCheckbox }}\n isClearable={true}\n hideSelectedOptions={false}\n onInputChange={onInputChange}\n onBlur={() => {\n model.changeValueTo(uncommittedValue, undefined, true);\n queryController?.startProfile('VariableValueSelectMulti');\n }}\n filterOption={filterNoOp}\n data-testid={selectors.pages.Dashboard.SubMenu.submenuItemValueDropDownValueLinkTexts(`${uncommittedValue}`)}\n onChange={(newValue, action) => {\n if (action.action === 'clear' && noValueOnClear) {\n model.changeValueTo([], undefined, true);\n }\n setUncommittedValue(newValue.map((x) => x.value!));\n }}\n />\n );\n}\n\ninterface SelectMenuOptionProps<T> {\n isDisabled: boolean;\n isFocused: boolean;\n isSelected: boolean;\n innerProps: JSX.IntrinsicElements['div'];\n innerRef: RefCallback<HTMLDivElement>;\n renderOptionLabel?: (value: SelectableValue<T>) => JSX.Element;\n data: SelectableValue<T>;\n indeterminate: boolean;\n}\n\nexport const OptionWithCheckbox = ({\n children,\n data,\n innerProps,\n innerRef,\n isFocused,\n isSelected,\n indeterminate,\n renderOptionLabel,\n}: React.PropsWithChildren<SelectMenuOptionProps<unknown>>) => {\n // We are removing onMouseMove and onMouseOver from innerProps because they cause the whole\n // list to re-render everytime the user hovers over an option. This is a performance issue.\n // See https://github.com/JedWatson/react-select/issues/3128#issuecomment-451936743\n const { onMouseMove, onMouseOver, ...rest } = innerProps;\n const theme = useTheme2();\n const selectStyles = getSelectStyles(theme);\n const optionStyles = useStyles2(getOptionStyles);\n\n return (\n <div\n ref={innerRef}\n className={cx(selectStyles.option, isFocused && selectStyles.optionFocused)}\n {...rest}\n // TODO: use below selector once we update grafana dependencies to ^11.1.0\n // data-testid={selectors.components.Select.option}\n data-testid=\"data-testid Select option\"\n title={data.title}\n >\n <div className={optionStyles.checkbox}>\n <Checkbox indeterminate={indeterminate} value={isSelected} />\n </div>\n <div\n className={selectStyles.optionBody}\n data-testid={selectors.pages.Dashboard.SubMenu.submenuItemValueDropDownOptionTexts(\n data.label ?? String(data.value)\n )}\n >\n <span>{children}</span>\n </div>\n </div>\n );\n};\n\nOptionWithCheckbox.displayName = 'SelectMenuOptions';\n\nconst getOptionStyles = (theme: GrafanaTheme2) => ({\n checkbox: css({\n marginRight: theme.spacing(2),\n }),\n});\n\nexport function renderSelectForVariable(model: MultiValueVariable) {\n if (model.state.isMulti) {\n return <VariableValueSelectMulti model={model} />;\n } else {\n return <VariableValueSelect model={model} />;\n }\n}\n"],"names":["value","inputValue"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VariableValueSelect.js","sources":["../../../../src/variables/components/VariableValueSelect.tsx"],"sourcesContent":["import { isArray } from 'lodash';\nimport React, { RefCallback, useEffect, useMemo, useState } from 'react';\nimport {\n Checkbox,\n InputActionMeta,\n MultiSelect,\n Select,\n ToggleAllState,\n getSelectStyles,\n useStyles2,\n useTheme2,\n} from '@grafana/ui';\n\nimport { MultiValueVariable, MultiValueVariableState } from '../variants/MultiValueVariable';\nimport { VariableValue, VariableValueSingle } from '../types';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { GrafanaTheme2, SelectableValue } from '@grafana/data';\nimport { css, cx } from '@emotion/css';\nimport { getOptionSearcher } from './getOptionSearcher';\nimport { sceneGraph } from '../../core/sceneGraph';\n\nconst filterNoOp = () => true;\n\nconst filterAll = (v: SelectableValue<VariableValueSingle>) => v.value !== '$__all';\n\nconst determineToggleAllState = (\n selectedValues: Array<SelectableValue<VariableValueSingle>>,\n options: Array<SelectableValue<VariableValueSingle>>\n) => {\n if (selectedValues.length === options.filter(filterAll).length) {\n return ToggleAllState.allSelected;\n } else if (\n selectedValues.length === 0 ||\n (selectedValues.length === 1 && selectedValues[0] && selectedValues[0].value === '$__all')\n ) {\n return ToggleAllState.noneSelected;\n } else {\n return ToggleAllState.indeterminate;\n }\n};\n\nexport function toSelectableValue<T>(value: T, label?: string): SelectableValue<T> {\n return {\n value,\n label: label ?? String(value),\n };\n}\n\nexport function VariableValueSelect({ model, state }: { model: MultiValueVariable; state: MultiValueVariableState }) {\n const { value, text, key, options, includeAll, isReadOnly, allowCustomValue = true } = state;\n const [inputValue, setInputValue] = useState('');\n const [hasCustomValue, setHasCustomValue] = useState(false);\n const selectValue = toSelectableValue(value, String(text));\n const queryController = sceneGraph.getQueryController(model);\n const optionSearcher = useMemo(() => getOptionSearcher(options, includeAll), [options, includeAll]);\n\n const onInputChange = (value: string, { action }: InputActionMeta) => {\n if (action === 'input-change') {\n setInputValue(value);\n if (model.onSearchChange) {\n model.onSearchChange!(value);\n }\n return value;\n }\n\n return value;\n };\n\n const filteredOptions = optionSearcher(inputValue);\n\n const onOpenMenu = () => {\n if (hasCustomValue) {\n setInputValue(String(text));\n }\n };\n\n const onCloseMenu = () => {\n setInputValue('');\n };\n\n return (\n <Select<VariableValue>\n id={key}\n isValidNewOption={(inputValue) => inputValue.trim().length > 0}\n placeholder=\"Select value\"\n width=\"auto\"\n disabled={isReadOnly}\n value={selectValue}\n inputValue={inputValue}\n allowCustomValue={allowCustomValue}\n virtualized\n filterOption={filterNoOp}\n tabSelectsValue={false}\n onInputChange={onInputChange}\n onOpenMenu={onOpenMenu}\n onCloseMenu={onCloseMenu}\n options={filteredOptions}\n data-testid={selectors.pages.Dashboard.SubMenu.submenuItemValueDropDownValueLinkTexts(`${value}`)}\n onChange={(newValue) => {\n model.changeValueTo(newValue.value!, newValue.label!, true);\n queryController?.startProfile('VariableValueSelect');\n\n if (hasCustomValue !== newValue.__isNew__) {\n setHasCustomValue(newValue.__isNew__);\n }\n }}\n />\n );\n}\n\nexport function VariableValueSelectMulti({\n model,\n state,\n}: {\n model: MultiValueVariable;\n state: MultiValueVariableState;\n}) {\n const {\n value,\n options,\n key,\n maxVisibleValues,\n noValueOnClear,\n includeAll,\n isReadOnly,\n allowCustomValue = true,\n } = state;\n const arrayValue = useMemo(() => (isArray(value) ? value : [value]), [value]);\n // To not trigger queries on every selection we store this state locally here and only update the variable onBlur\n const [uncommittedValue, setUncommittedValue] = useState(arrayValue);\n const [inputValue, setInputValue] = useState('');\n const queryController = sceneGraph.getQueryController(model);\n\n const optionSearcher = useMemo(() => getOptionSearcher(options, includeAll), [options, includeAll]);\n\n // Detect value changes outside\n useEffect(() => {\n setUncommittedValue(arrayValue);\n }, [arrayValue]);\n\n const onInputChange = (value: string, { action }: InputActionMeta) => {\n if (action === 'input-change') {\n setInputValue(value);\n if (model.onSearchChange) {\n model.onSearchChange!(value);\n }\n return value;\n }\n\n if (action === 'input-blur') {\n setInputValue('');\n return '';\n }\n\n return inputValue;\n };\n\n const placeholder = options.length > 0 ? 'Select value' : '';\n const filteredOptions = optionSearcher(inputValue);\n\n return (\n <MultiSelect<VariableValueSingle>\n id={key}\n placeholder={placeholder}\n width=\"auto\"\n inputValue={inputValue}\n disabled={isReadOnly}\n value={uncommittedValue}\n noMultiValueWrap={true}\n maxVisibleValues={maxVisibleValues ?? 5}\n tabSelectsValue={false}\n virtualized\n allowCustomValue={allowCustomValue}\n //@ts-ignore\n toggleAllOptions={{\n enabled: true,\n optionsFilter: filterAll,\n determineToggleAllState: determineToggleAllState,\n }}\n options={filteredOptions}\n closeMenuOnSelect={false}\n components={{ Option: OptionWithCheckbox }}\n isClearable={true}\n hideSelectedOptions={false}\n onInputChange={onInputChange}\n onBlur={() => {\n model.changeValueTo(uncommittedValue, undefined, true);\n queryController?.startProfile('VariableValueSelectMulti');\n }}\n filterOption={filterNoOp}\n data-testid={selectors.pages.Dashboard.SubMenu.submenuItemValueDropDownValueLinkTexts(`${uncommittedValue}`)}\n onChange={(newValue, action) => {\n if (action.action === 'clear' && noValueOnClear) {\n model.changeValueTo([], undefined, true);\n }\n setUncommittedValue(newValue.map((x) => x.value!));\n }}\n />\n );\n}\n\ninterface SelectMenuOptionProps<T> {\n isDisabled: boolean;\n isFocused: boolean;\n isSelected: boolean;\n innerProps: JSX.IntrinsicElements['div'];\n innerRef: RefCallback<HTMLDivElement>;\n renderOptionLabel?: (value: SelectableValue<T>) => JSX.Element;\n data: SelectableValue<T>;\n indeterminate: boolean;\n}\n\nexport const OptionWithCheckbox = ({\n children,\n data,\n innerProps,\n innerRef,\n isFocused,\n isSelected,\n indeterminate,\n renderOptionLabel,\n}: React.PropsWithChildren<SelectMenuOptionProps<unknown>>) => {\n // We are removing onMouseMove and onMouseOver from innerProps because they cause the whole\n // list to re-render everytime the user hovers over an option. This is a performance issue.\n // See https://github.com/JedWatson/react-select/issues/3128#issuecomment-451936743\n const { onMouseMove, onMouseOver, ...rest } = innerProps;\n const theme = useTheme2();\n const selectStyles = getSelectStyles(theme);\n const optionStyles = useStyles2(getOptionStyles);\n\n return (\n <div\n ref={innerRef}\n className={cx(selectStyles.option, isFocused && selectStyles.optionFocused)}\n {...rest}\n // TODO: use below selector once we update grafana dependencies to ^11.1.0\n // data-testid={selectors.components.Select.option}\n data-testid=\"data-testid Select option\"\n title={data.title}\n >\n <div className={optionStyles.checkbox}>\n <Checkbox indeterminate={indeterminate} value={isSelected} />\n </div>\n <div\n className={selectStyles.optionBody}\n data-testid={selectors.pages.Dashboard.SubMenu.submenuItemValueDropDownOptionTexts(\n data.label ?? String(data.value)\n )}\n >\n <span>{children}</span>\n </div>\n </div>\n );\n};\n\nOptionWithCheckbox.displayName = 'SelectMenuOptions';\n\nconst getOptionStyles = (theme: GrafanaTheme2) => ({\n checkbox: css({\n marginRight: theme.spacing(2),\n }),\n});\n\nexport function MultiOrSingleValueSelect({ model }: { model: MultiValueVariable }) {\n const state = model.useState();\n\n if (state.isMulti) {\n return <VariableValueSelectMulti model={model} state={state} />;\n } else {\n return <VariableValueSelect model={model} state={state} />;\n }\n}\n"],"names":["value","inputValue"],"mappings":"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"}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
+
import { of } from 'rxjs';
|
|
1
2
|
import { SceneObjectBase } from '../../core/SceneObjectBase.js';
|
|
3
|
+
import { sceneGraph } from '../../core/sceneGraph/index.js';
|
|
4
|
+
import { VariableDependencyConfig } from '../VariableDependencyConfig.js';
|
|
5
|
+
import { SceneVariableValueChangedEvent } from '../types.js';
|
|
2
6
|
|
|
3
7
|
class ConstantVariable extends SceneObjectBase {
|
|
4
8
|
constructor(initialState) {
|
|
@@ -9,8 +13,26 @@ class ConstantVariable extends SceneObjectBase {
|
|
|
9
13
|
...initialState,
|
|
10
14
|
skipUrlSync: true
|
|
11
15
|
});
|
|
16
|
+
this._variableDependency = new VariableDependencyConfig(this, {
|
|
17
|
+
statePaths: ["value"]
|
|
18
|
+
});
|
|
19
|
+
this._prevValue = "";
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* This function is called on when SceneVariableSet is activated or when a dependency changes.
|
|
23
|
+
*/
|
|
24
|
+
validateAndUpdate() {
|
|
25
|
+
const newValue = this.getValue();
|
|
26
|
+
if (this._prevValue !== newValue) {
|
|
27
|
+
this._prevValue = newValue;
|
|
28
|
+
this.publishEvent(new SceneVariableValueChangedEvent(this), true);
|
|
29
|
+
}
|
|
30
|
+
return of({});
|
|
12
31
|
}
|
|
13
32
|
getValue() {
|
|
33
|
+
if (typeof this.state.value === "string") {
|
|
34
|
+
return sceneGraph.interpolate(this, this.state.value);
|
|
35
|
+
}
|
|
14
36
|
return this.state.value;
|
|
15
37
|
}
|
|
16
38
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConstantVariable.js","sources":["../../../../src/variables/variants/ConstantVariable.ts"],"sourcesContent":["import { SceneObjectBase } from '../../core/SceneObjectBase';\nimport {
|
|
1
|
+
{"version":3,"file":"ConstantVariable.js","sources":["../../../../src/variables/variants/ConstantVariable.ts"],"sourcesContent":["import { Observable, of } from 'rxjs';\nimport { SceneObjectBase } from '../../core/SceneObjectBase';\nimport { sceneGraph } from '../../core/sceneGraph';\nimport { VariableDependencyConfig } from '../VariableDependencyConfig';\nimport {\n SceneVariable,\n SceneVariableState,\n SceneVariableValueChangedEvent,\n ValidateAndUpdateResult,\n VariableValue,\n} from '../types';\n\nexport interface ConstantVariableState extends SceneVariableState {\n value: VariableValue;\n}\n\nexport class ConstantVariable\n extends SceneObjectBase<ConstantVariableState>\n implements SceneVariable<ConstantVariableState>\n{\n protected _variableDependency = new VariableDependencyConfig(this, {\n statePaths: ['value'],\n });\n\n private _prevValue: VariableValue = '';\n\n public constructor(initialState: Partial<ConstantVariableState>) {\n super({\n type: 'constant',\n value: '',\n name: '',\n ...initialState,\n skipUrlSync: true,\n });\n }\n\n /**\n * This function is called on when SceneVariableSet is activated or when a dependency changes.\n */\n public validateAndUpdate(): Observable<ValidateAndUpdateResult> {\n const newValue = this.getValue();\n\n if (this._prevValue !== newValue) {\n this._prevValue = newValue;\n this.publishEvent(new SceneVariableValueChangedEvent(this), true);\n }\n\n return of({});\n }\n\n public getValue(): VariableValue {\n if (typeof this.state.value === 'string') {\n return sceneGraph.interpolate(this, this.state.value);\n }\n\n return this.state.value;\n }\n}\n"],"names":[],"mappings":";;;;;;AAgBO,MAAM,yBACH,eAEV,CAAA;AAAA,EAOS,YAAY,YAA8C,EAAA;AAC/D,IAAM,KAAA,CAAA;AAAA,MACJ,IAAM,EAAA,UAAA;AAAA,MACN,KAAO,EAAA,EAAA;AAAA,MACP,IAAM,EAAA,EAAA;AAAA,MACN,GAAG,YAAA;AAAA,MACH,WAAa,EAAA;AAAA,KACd,CAAA;AAbH,IAAU,IAAA,CAAA,mBAAA,GAAsB,IAAI,wBAAA,CAAyB,IAAM,EAAA;AAAA,MACjE,UAAA,EAAY,CAAC,OAAO;AAAA,KACrB,CAAA;AAED,IAAA,IAAA,CAAQ,UAA4B,GAAA,EAAA;AAAA;AAUpC;AAAA;AAAA;AAAA,EAKO,iBAAyD,GAAA;AAC9D,IAAM,MAAA,QAAA,GAAW,KAAK,QAAS,EAAA;AAE/B,IAAI,IAAA,IAAA,CAAK,eAAe,QAAU,EAAA;AAChC,MAAA,IAAA,CAAK,UAAa,GAAA,QAAA;AAClB,MAAA,IAAA,CAAK,YAAa,CAAA,IAAI,8BAA+B,CAAA,IAAI,GAAG,IAAI,CAAA;AAAA;AAGlE,IAAO,OAAA,EAAA,CAAG,EAAE,CAAA;AAAA;AACd,EAEO,QAA0B,GAAA;AAC/B,IAAA,IAAI,OAAO,IAAA,CAAK,KAAM,CAAA,KAAA,KAAU,QAAU,EAAA;AACxC,MAAA,OAAO,UAAW,CAAA,WAAA,CAAY,IAAM,EAAA,IAAA,CAAK,MAAM,KAAK,CAAA;AAAA;AAGtD,IAAA,OAAO,KAAK,KAAM,CAAA,KAAA;AAAA;AAEtB;;;;"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { of } from 'rxjs';
|
|
2
2
|
import { VariableDependencyConfig } from '../VariableDependencyConfig.js';
|
|
3
|
-
import {
|
|
3
|
+
import { MultiOrSingleValueSelect } from '../components/VariableValueSelect.js';
|
|
4
4
|
import { MultiValueVariable } from './MultiValueVariable.js';
|
|
5
5
|
import { sceneGraph } from '../../core/sceneGraph/index.js';
|
|
6
|
+
import React from 'react';
|
|
6
7
|
|
|
7
8
|
class CustomVariable extends MultiValueVariable {
|
|
8
9
|
constructor(initialState) {
|
|
@@ -41,7 +42,7 @@ class CustomVariable extends MultiValueVariable {
|
|
|
41
42
|
}
|
|
42
43
|
}
|
|
43
44
|
CustomVariable.Component = ({ model }) => {
|
|
44
|
-
return
|
|
45
|
+
return /* @__PURE__ */ React.createElement(MultiOrSingleValueSelect, { model });
|
|
45
46
|
};
|
|
46
47
|
|
|
47
48
|
export { CustomVariable };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CustomVariable.js","sources":["../../../../src/variables/variants/CustomVariable.tsx"],"sourcesContent":["import { Observable, of } from 'rxjs';\n\nimport { SceneComponentProps } from '../../core/types';\nimport { VariableDependencyConfig } from '../VariableDependencyConfig';\nimport {
|
|
1
|
+
{"version":3,"file":"CustomVariable.js","sources":["../../../../src/variables/variants/CustomVariable.tsx"],"sourcesContent":["import { Observable, of } from 'rxjs';\n\nimport { SceneComponentProps } from '../../core/types';\nimport { VariableDependencyConfig } from '../VariableDependencyConfig';\nimport { MultiOrSingleValueSelect } from '../components/VariableValueSelect';\nimport { VariableValueOption } from '../types';\n\nimport { MultiValueVariable, MultiValueVariableState, VariableGetOptionsArgs } from './MultiValueVariable';\nimport { sceneGraph } from '../../core/sceneGraph';\nimport React from 'react';\n\nexport interface CustomVariableState extends MultiValueVariableState {\n query: string;\n}\n\nexport class CustomVariable extends MultiValueVariable<CustomVariableState> {\n protected _variableDependency = new VariableDependencyConfig(this, {\n statePaths: ['query'],\n });\n\n public constructor(initialState: Partial<CustomVariableState>) {\n super({\n type: 'custom',\n query: '',\n value: '',\n text: '',\n options: [],\n name: '',\n ...initialState,\n });\n }\n\n public getValueOptions(args: VariableGetOptionsArgs): Observable<VariableValueOption[]> {\n const interpolated = sceneGraph.interpolate(this, this.state.query);\n const match = interpolated.match(/(?:\\\\,|[^,])+/g) ?? [];\n\n const options = match.map((text) => {\n text = text.replace(/\\\\,/g, ',');\n const textMatch = /^(.+)\\s:\\s(.+)$/g.exec(text) ?? [];\n if (textMatch.length === 3) {\n const [, key, value] = textMatch;\n return { label: key.trim(), value: value.trim() };\n } else {\n return { label: text.trim(), value: text.trim() };\n }\n });\n\n if (!options.length) {\n this.skipNextValidation = true;\n }\n\n return of(options);\n }\n\n public static Component = ({ model }: SceneComponentProps<MultiValueVariable>) => {\n return <MultiOrSingleValueSelect model={model} />;\n };\n}\n"],"names":["_a"],"mappings":";;;;;;;AAeO,MAAM,uBAAuB,kBAAwC,CAAA;AAAA,EAKnE,YAAY,YAA4C,EAAA;AAC7D,IAAM,KAAA,CAAA;AAAA,MACJ,IAAM,EAAA,QAAA;AAAA,MACN,KAAO,EAAA,EAAA;AAAA,MACP,KAAO,EAAA,EAAA;AAAA,MACP,IAAM,EAAA,EAAA;AAAA,MACN,SAAS,EAAC;AAAA,MACV,IAAM,EAAA,EAAA;AAAA,MACN,GAAG;AAAA,KACJ,CAAA;AAbH,IAAU,IAAA,CAAA,mBAAA,GAAsB,IAAI,wBAAA,CAAyB,IAAM,EAAA;AAAA,MACjE,UAAA,EAAY,CAAC,OAAO;AAAA,KACrB,CAAA;AAAA;AAYD,EAEO,gBAAgB,IAAiE,EAAA;AAhC1F,IAAA,IAAA,EAAA;AAiCI,IAAA,MAAM,eAAe,UAAW,CAAA,WAAA,CAAY,IAAM,EAAA,IAAA,CAAK,MAAM,KAAK,CAAA;AAClE,IAAA,MAAM,SAAQ,EAAa,GAAA,YAAA,CAAA,KAAA,CAAM,gBAAgB,CAAA,KAAnC,YAAwC,EAAC;AAEvD,IAAA,MAAM,OAAU,GAAA,KAAA,CAAM,GAAI,CAAA,CAAC,IAAS,KAAA;AApCxC,MAAAA,IAAAA,GAAAA;AAqCM,MAAO,IAAA,GAAA,IAAA,CAAK,OAAQ,CAAA,MAAA,EAAQ,GAAG,CAAA;AAC/B,MAAM,MAAA,SAAA,GAAA,CAAYA,MAAA,kBAAmB,CAAA,IAAA,CAAK,IAAI,CAA5B,KAAA,IAAA,GAAAA,MAAiC,EAAC;AACpD,MAAI,IAAA,SAAA,CAAU,WAAW,CAAG,EAAA;AAC1B,QAAA,MAAM,GAAG,GAAK,EAAA,KAAK,CAAI,GAAA,SAAA;AACvB,QAAO,OAAA,EAAE,OAAO,GAAI,CAAA,IAAA,IAAQ,KAAO,EAAA,KAAA,CAAM,MAAO,EAAA;AAAA,OAC3C,MAAA;AACL,QAAO,OAAA,EAAE,OAAO,IAAK,CAAA,IAAA,IAAQ,KAAO,EAAA,IAAA,CAAK,MAAO,EAAA;AAAA;AAClD,KACD,CAAA;AAED,IAAI,IAAA,CAAC,QAAQ,MAAQ,EAAA;AACnB,MAAA,IAAA,CAAK,kBAAqB,GAAA,IAAA;AAAA;AAG5B,IAAA,OAAO,GAAG,OAAO,CAAA;AAAA;AAMrB;AA1Ca,cAAA,CAuCG,SAAY,GAAA,CAAC,EAAE,KAAA,EAAqD,KAAA;AAChF,EAAO,uBAAA,KAAA,CAAA,aAAA,CAAC,4BAAyB,KAAc,EAAA,CAAA;AACjD,CAAA;;;;"}
|
|
@@ -3,8 +3,9 @@ import { stringToJsRegex } from '@grafana/data';
|
|
|
3
3
|
import { getDataSourceSrv } from '@grafana/runtime';
|
|
4
4
|
import { sceneGraph } from '../../core/sceneGraph/index.js';
|
|
5
5
|
import { VariableDependencyConfig } from '../VariableDependencyConfig.js';
|
|
6
|
-
import {
|
|
6
|
+
import { MultiOrSingleValueSelect } from '../components/VariableValueSelect.js';
|
|
7
7
|
import { MultiValueVariable } from './MultiValueVariable.js';
|
|
8
|
+
import React from 'react';
|
|
8
9
|
|
|
9
10
|
class DataSourceVariable extends MultiValueVariable {
|
|
10
11
|
constructor(initialState) {
|
|
@@ -51,7 +52,7 @@ class DataSourceVariable extends MultiValueVariable {
|
|
|
51
52
|
}
|
|
52
53
|
}
|
|
53
54
|
DataSourceVariable.Component = ({ model }) => {
|
|
54
|
-
return
|
|
55
|
+
return /* @__PURE__ */ React.createElement(MultiOrSingleValueSelect, { model });
|
|
55
56
|
};
|
|
56
57
|
function isValid(source, regex) {
|
|
57
58
|
if (!regex) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataSourceVariable.js","sources":["../../../../src/variables/variants/DataSourceVariable.tsx"],"sourcesContent":["import { Observable, of } from 'rxjs';\n\nimport { stringToJsRegex, DataSourceInstanceSettings } from '@grafana/data';\nimport { getDataSourceSrv } from '@grafana/runtime';\n\nimport { sceneGraph } from '../../core/sceneGraph';\nimport { SceneComponentProps } from '../../core/types';\nimport { VariableDependencyConfig } from '../VariableDependencyConfig';\nimport {
|
|
1
|
+
{"version":3,"file":"DataSourceVariable.js","sources":["../../../../src/variables/variants/DataSourceVariable.tsx"],"sourcesContent":["import { Observable, of } from 'rxjs';\n\nimport { stringToJsRegex, DataSourceInstanceSettings } from '@grafana/data';\nimport { getDataSourceSrv } from '@grafana/runtime';\n\nimport { sceneGraph } from '../../core/sceneGraph';\nimport { SceneComponentProps } from '../../core/types';\nimport { VariableDependencyConfig } from '../VariableDependencyConfig';\nimport { MultiOrSingleValueSelect } from '../components/VariableValueSelect';\nimport { VariableValueOption } from '../types';\n\nimport { MultiValueVariable, MultiValueVariableState, VariableGetOptionsArgs } from './MultiValueVariable';\nimport React from 'react';\n\nexport interface DataSourceVariableState extends MultiValueVariableState {\n /**\n * Include all data source instances with this plugin id\n */\n pluginId: string;\n /**\n * Filter data source instances based on name\n */\n regex: string;\n /**\n * For backwards compatability with old dashboards, will likely be removed\n */\n defaultOptionEnabled?: boolean;\n}\n\nexport class DataSourceVariable extends MultiValueVariable<DataSourceVariableState> {\n protected _variableDependency = new VariableDependencyConfig(this, {\n statePaths: ['regex'],\n });\n\n public constructor(initialState: Partial<DataSourceVariableState>) {\n super({\n type: 'datasource',\n value: '',\n text: '',\n options: [],\n name: '',\n regex: '',\n pluginId: '',\n ...initialState,\n });\n }\n\n public getValueOptions(args: VariableGetOptionsArgs): Observable<VariableValueOption[]> {\n if (!this.state.pluginId) {\n return of([]);\n }\n\n const dataSources = getDataSourceSrv().getList({ metrics: true, variables: false, pluginId: this.state.pluginId });\n\n let regex;\n if (this.state.regex) {\n const interpolated = sceneGraph.interpolate(this, this.state.regex, undefined, 'regex');\n regex = stringToJsRegex(interpolated);\n }\n\n const options: VariableValueOption[] = [];\n\n for (let i = 0; i < dataSources.length; i++) {\n const source = dataSources[i];\n\n if (isValid(source, regex)) {\n options.push({ label: source.name, value: source.uid });\n }\n\n if (this.state.defaultOptionEnabled && isDefault(source, regex)) {\n options.push({ label: 'default', value: 'default' });\n }\n }\n\n if (options.length === 0) {\n this.setState({ error: 'No data sources found' });\n } else if (this.state.error) {\n this.setState({ error: null });\n }\n\n return of(options);\n }\n\n public static Component = ({ model }: SceneComponentProps<MultiValueVariable>) => {\n return <MultiOrSingleValueSelect model={model} />;\n };\n}\n\nfunction isValid(source: DataSourceInstanceSettings, regex?: RegExp) {\n if (!regex) {\n return true;\n }\n\n return regex.exec(source.name);\n}\n\nfunction isDefault(source: DataSourceInstanceSettings, regex?: RegExp) {\n if (!source.isDefault) {\n return false;\n }\n\n if (!regex) {\n return true;\n }\n\n return regex.exec('default');\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { property } from 'lodash';
|
|
3
|
+
import { of, map } from 'rxjs';
|
|
4
|
+
import { Select } from '@grafana/ui';
|
|
5
|
+
import { SceneObjectBase } from '../../core/SceneObjectBase.js';
|
|
6
|
+
import { SceneVariableValueChangedEvent } from '../types.js';
|
|
7
|
+
|
|
8
|
+
var __defProp = Object.defineProperty;
|
|
9
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
10
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
11
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
12
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
13
|
+
var __spreadValues = (a, b) => {
|
|
14
|
+
for (var prop in b || (b = {}))
|
|
15
|
+
if (__hasOwnProp.call(b, prop))
|
|
16
|
+
__defNormalProp(a, prop, b[prop]);
|
|
17
|
+
if (__getOwnPropSymbols)
|
|
18
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
19
|
+
if (__propIsEnum.call(b, prop))
|
|
20
|
+
__defNormalProp(a, prop, b[prop]);
|
|
21
|
+
}
|
|
22
|
+
return a;
|
|
23
|
+
};
|
|
24
|
+
const _JsonVariable = class extends SceneObjectBase {
|
|
25
|
+
constructor(state) {
|
|
26
|
+
super(__spreadValues({
|
|
27
|
+
type: "json",
|
|
28
|
+
options: []
|
|
29
|
+
}, state));
|
|
30
|
+
this._onChange = (selected) => {
|
|
31
|
+
this.setState({ value: selected.value });
|
|
32
|
+
this.publishEvent(new SceneVariableValueChangedEvent(this), true);
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
validateAndUpdate() {
|
|
36
|
+
if (!this.state.provider) {
|
|
37
|
+
return of({});
|
|
38
|
+
}
|
|
39
|
+
return this.state.provider.getOptions().pipe(
|
|
40
|
+
map((options) => {
|
|
41
|
+
console.log("options", options);
|
|
42
|
+
this.updateValueGivenNewOptions(options);
|
|
43
|
+
return {};
|
|
44
|
+
})
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
updateValueGivenNewOptions(options) {
|
|
48
|
+
if (!this.state.value) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const stateUpdate = { options };
|
|
52
|
+
const found = options.find((option) => option.value === this.state.value);
|
|
53
|
+
if (!found) {
|
|
54
|
+
if (options.length > 0) {
|
|
55
|
+
stateUpdate.value = options[0].value;
|
|
56
|
+
} else {
|
|
57
|
+
stateUpdate.value = void 0;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
this.setState(stateUpdate);
|
|
61
|
+
}
|
|
62
|
+
getValueText(fieldPath) {
|
|
63
|
+
const current = this.state.options.find((option) => option.value === this.state.value);
|
|
64
|
+
return current ? current.label : "";
|
|
65
|
+
}
|
|
66
|
+
getValue(fieldPath) {
|
|
67
|
+
const current = this.state.options.find((option) => option.value === this.state.value);
|
|
68
|
+
return current ? this.getFieldAccessor(fieldPath)(current.obj) : "";
|
|
69
|
+
}
|
|
70
|
+
getFieldAccessor(fieldPath) {
|
|
71
|
+
const accessor = _JsonVariable.fieldAccessorCache[fieldPath];
|
|
72
|
+
if (accessor) {
|
|
73
|
+
return accessor;
|
|
74
|
+
}
|
|
75
|
+
return _JsonVariable.fieldAccessorCache[fieldPath] = property(fieldPath);
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
let JsonVariable = _JsonVariable;
|
|
79
|
+
JsonVariable.fieldAccessorCache = {};
|
|
80
|
+
JsonVariable.Component = ({ model }) => {
|
|
81
|
+
var _a;
|
|
82
|
+
const { key, value, options } = model.useState();
|
|
83
|
+
const current = (_a = options.find((option) => option.value === value)) == null ? void 0 : _a.value;
|
|
84
|
+
return /* @__PURE__ */ React.createElement(Select, {
|
|
85
|
+
id: key,
|
|
86
|
+
placeholder: "Select value",
|
|
87
|
+
width: "auto",
|
|
88
|
+
value: current,
|
|
89
|
+
tabSelectsValue: false,
|
|
90
|
+
options,
|
|
91
|
+
onChange: model._onChange
|
|
92
|
+
});
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
export { JsonVariable };
|
|
96
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSnNvblZhcmlhYmxlLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdmFyaWFibGVzL3ZhcmlhbnRzL0pzb25WYXJpYWJsZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG1hcCwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNlbGVjdCB9IGZyb20gJ0BncmFmYW5hL3VpJztcbmltcG9ydCB7IFNlbGVjdGFibGVWYWx1ZSB9IGZyb20gJ0BncmFmYW5hL2RhdGEnO1xuaW1wb3J0IHsgU2NlbmVPYmplY3RCYXNlIH0gZnJvbSAnLi4vLi4vY29yZS9TY2VuZU9iamVjdEJhc2UnO1xuaW1wb3J0IHsgU2NlbmVDb21wb25lbnRQcm9wcyB9IGZyb20gJy4uLy4uL2NvcmUvdHlwZXMnO1xuaW1wb3J0IHtcbiAgU2NlbmVWYXJpYWJsZVN0YXRlLFxuICBTY2VuZVZhcmlhYmxlLFxuICBWYWxpZGF0ZUFuZFVwZGF0ZVJlc3VsdCxcbiAgVmFyaWFibGVWYWx1ZSxcbiAgU2NlbmVWYXJpYWJsZVZhbHVlQ2hhbmdlZEV2ZW50LFxufSBmcm9tICcuLi90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSnNvblZhcmlhYmxlU3RhdGUgZXh0ZW5kcyBTY2VuZVZhcmlhYmxlU3RhdGUge1xuICAvKipcbiAgICogVGhlIGN1cnJlbnQgdmFsdWVcbiAgICovXG4gIHZhbHVlPzogc3RyaW5nO1xuICAvKipcbiAgICogT1xuICAgKi9cbiAgb3B0aW9uczogSnNvblZhcmlhYmxlT3B0aW9uW107XG4gIC8qKlxuICAgKiBUaGUgdGhpbmcgdGhhdCBnZW5lcmF0ZXMvcmV0dXJucyBwb3NzaWJsZSB2YWx1ZXMgLyBvcHRpb25zXG4gICAqL1xuICBwcm92aWRlcj86IEpzb25WYXJpYWJsZU9wdGlvblByb3ZpZGVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEpzb25WYXJpYWJsZU9wdGlvbiB7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIG9iajogdW5rbm93bjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBKc29uVmFyaWFibGVPcHRpb25Qcm92aWRlciB7XG4gIGdldE9wdGlvbnMoKTogT2JzZXJ2YWJsZTxKc29uVmFyaWFibGVPcHRpb25bXT47XG59XG5cbmV4cG9ydCBjbGFzcyBKc29uVmFyaWFibGUgZXh0ZW5kcyBTY2VuZU9iamVjdEJhc2U8SnNvblZhcmlhYmxlU3RhdGU+IGltcGxlbWVudHMgU2NlbmVWYXJpYWJsZSB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihzdGF0ZTogUGFydGlhbDxKc29uVmFyaWFibGVTdGF0ZT4pIHtcbiAgICBzdXBlcih7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB0eXBlOiAnanNvbicsXG4gICAgICBvcHRpb25zOiBbXSxcbiAgICAgIC4uLnN0YXRlLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZmllbGRBY2Nlc3NvckNhY2hlOiBGaWVsZEFjY2Vzc29yQ2FjaGUgPSB7fTtcblxuICBwdWJsaWMgdmFsaWRhdGVBbmRVcGRhdGUoKTogT2JzZXJ2YWJsZTxWYWxpZGF0ZUFuZFVwZGF0ZVJlc3VsdD4ge1xuICAgIGlmICghdGhpcy5zdGF0ZS5wcm92aWRlcikge1xuICAgICAgcmV0dXJuIG9mKHt9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdGF0ZS5wcm92aWRlci5nZXRPcHRpb25zKCkucGlwZShcbiAgICAgIG1hcCgob3B0aW9ucykgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZygnb3B0aW9ucycsIG9wdGlvbnMpO1xuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlR2l2ZW5OZXdPcHRpb25zKG9wdGlvbnMpO1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVZhbHVlR2l2ZW5OZXdPcHRpb25zKG9wdGlvbnM6IEpzb25WYXJpYWJsZU9wdGlvbltdKSB7XG4gICAgaWYgKCF0aGlzLnN0YXRlLnZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdGVVcGRhdGU6IFBhcnRpYWw8SnNvblZhcmlhYmxlU3RhdGU+ID0geyBvcHRpb25zIH07XG5cbiAgICBjb25zdCBmb3VuZCA9IG9wdGlvbnMuZmluZCgob3B0aW9uKSA9PiBvcHRpb24udmFsdWUgPT09IHRoaXMuc3RhdGUudmFsdWUpO1xuXG4gICAgaWYgKCFmb3VuZCkge1xuICAgICAgaWYgKG9wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICBzdGF0ZVVwZGF0ZS52YWx1ZSA9IG9wdGlvbnNbMF0udmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdGF0ZVVwZGF0ZS52YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnNldFN0YXRlKHN0YXRlVXBkYXRlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRWYWx1ZVRleHQ/KGZpZWxkUGF0aD86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgY3VycmVudCA9IHRoaXMuc3RhdGUub3B0aW9ucy5maW5kKChvcHRpb24pID0+IG9wdGlvbi52YWx1ZSA9PT0gdGhpcy5zdGF0ZS52YWx1ZSk7XG4gICAgcmV0dXJuIGN1cnJlbnQgPyBjdXJyZW50LmxhYmVsIDogJyc7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWUoZmllbGRQYXRoOiBzdHJpbmcpOiBWYXJpYWJsZVZhbHVlIHtcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5zdGF0ZS5vcHRpb25zLmZpbmQoKG9wdGlvbikgPT4gb3B0aW9uLnZhbHVlID09PSB0aGlzLnN0YXRlLnZhbHVlKTtcbiAgICByZXR1cm4gY3VycmVudCA/IHRoaXMuZ2V0RmllbGRBY2Nlc3NvcihmaWVsZFBhdGgpKGN1cnJlbnQub2JqKSA6ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGaWVsZEFjY2Vzc29yKGZpZWxkUGF0aDogc3RyaW5nKSB7XG4gICAgY29uc3QgYWNjZXNzb3IgPSBKc29uVmFyaWFibGUuZmllbGRBY2Nlc3NvckNhY2hlW2ZpZWxkUGF0aF07XG4gICAgaWYgKGFjY2Vzc29yKSB7XG4gICAgICByZXR1cm4gYWNjZXNzb3I7XG4gICAgfVxuXG4gICAgcmV0dXJuIChKc29uVmFyaWFibGUuZmllbGRBY2Nlc3NvckNhY2hlW2ZpZWxkUGF0aF0gPSBwcm9wZXJ0eShmaWVsZFBhdGgpKTtcbiAgfVxuXG4gIHB1YmxpYyBfb25DaGFuZ2UgPSAoc2VsZWN0ZWQ6IFNlbGVjdGFibGVWYWx1ZTxzdHJpbmc+KSA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7IHZhbHVlOiBzZWxlY3RlZC52YWx1ZSB9KTtcbiAgICB0aGlzLnB1Ymxpc2hFdmVudChuZXcgU2NlbmVWYXJpYWJsZVZhbHVlQ2hhbmdlZEV2ZW50KHRoaXMpLCB0cnVlKTtcbiAgfTtcblxuICBwdWJsaWMgc3RhdGljIENvbXBvbmVudCA9ICh7IG1vZGVsIH06IFNjZW5lQ29tcG9uZW50UHJvcHM8SnNvblZhcmlhYmxlPikgPT4ge1xuICAgIGNvbnN0IHsga2V5LCB2YWx1ZSwgb3B0aW9ucyB9ID0gbW9kZWwudXNlU3RhdGUoKTtcblxuICAgIGNvbnN0IGN1cnJlbnQgPSBvcHRpb25zLmZpbmQoKG9wdGlvbikgPT4gb3B0aW9uLnZhbHVlID09PSB2YWx1ZSk/LnZhbHVlO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTZWxlY3RcbiAgICAgICAgaWQ9e2tleX1cbiAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgdmFsdWVcIlxuICAgICAgICB3aWR0aD1cImF1dG9cIlxuICAgICAgICB2YWx1ZT17Y3VycmVudH1cbiAgICAgICAgdGFiU2VsZWN0c1ZhbHVlPXtmYWxzZX1cbiAgICAgICAgb3B0aW9ucz17b3B0aW9uc31cbiAgICAgICAgb25DaGFuZ2U9e21vZGVsLl9vbkNoYW5nZX1cbiAgICAgIC8+XG4gICAgKTtcbiAgfTtcbn1cblxuaW50ZXJmYWNlIEZpZWxkQWNjZXNzb3JDYWNoZSB7XG4gIFtrZXk6IHN0cmluZ106IChvYmo6IGFueSkgPT4gYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEpzb25TdHJpbmdPcHRpb25Qcml2aWRlck9wdGlvbnMge1xuICAvKipcbiAgICogU3RyaW5nIGNvbnRhdWluaW5nIEpTT04gd2l0aCBhbiBhcnJheSBvZiBvYmplY3RzIG9yIGEgbWFwIG9mIG9iamVjdHNcbiAgICovXG4gIGpzb246IHN0cmluZztcbiAgLyoqXG4gICAqIERlZmF1bHRzIHRvIG5hbWUgaWYgbm90IHNwZWNpZmllZFxuICAgKi9cbiAgdmFsdWVQcm9wPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgSnNvblN0cmluZ09wdGlvblByaXZpZGVyIGltcGxlbWVudHMgSnNvblZhcmlhYmxlT3B0aW9uUHJvdmlkZXIge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBvcHRpb25zOiBKc29uU3RyaW5nT3B0aW9uUHJpdmlkZXJPcHRpb25zKSB7fVxuXG4gIHB1YmxpYyBnZXRPcHRpb25zKCk6IE9ic2VydmFibGU8SnNvblZhcmlhYmxlT3B0aW9uW10+IHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoKHN1YnNjcmliZXIpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsganNvbiwgdmFsdWVQcm9wID0gJ25hbWUnIH0gPSB0aGlzLm9wdGlvbnM7XG4gICAgICAgIGNvbnN0IGpzb25WYWx1ZSA9IEpTT04ucGFyc2UoanNvbik7XG5cbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGpzb25WYWx1ZSkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0pTT04gbXVzdCBiZSBhbiBhcnJheScpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0T3B0aW9uczogSnNvblZhcmlhYmxlT3B0aW9uW10gPSBbXTtcblxuICAgICAgICBqc29uVmFsdWUuZm9yRWFjaCgob3B0aW9uKSA9PiB7XG4gICAgICAgICAgaWYgKG9wdGlvblt2YWx1ZVByb3BdID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXN1bHRPcHRpb25zLnB1c2goe1xuICAgICAgICAgICAgdmFsdWU6IG9wdGlvblt2YWx1ZVByb3BdLFxuICAgICAgICAgICAgbGFiZWw6IG9wdGlvblt2YWx1ZVByb3BdLFxuICAgICAgICAgICAgb2JqOiBvcHRpb24sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHN1YnNjcmliZXIubmV4dChyZXN1bHRPcHRpb25zKTtcbiAgICAgICAgc3Vic2NyaWJlci5jb21wbGV0ZSgpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgc3Vic2NyaWJlci5lcnJvcihlcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXdDTyxNQUFNLGFBQUEsR0FBTixjQUEyQixlQUE0RCxDQUFBO0FBQUEsRUFDckYsWUFBWSxLQUFtQyxFQUFBO0FBQ3BELElBQU0sS0FBQSxDQUFBLGNBQUEsQ0FBQTtBQUFBLE1BRUosSUFBTSxFQUFBLE1BQUE7QUFBQSxNQUNOLFNBQVMsRUFBQztBQUFBLEtBQUEsRUFDUCxLQUNKLENBQUEsQ0FBQSxDQUFBO0FBMERILElBQU8sSUFBQSxDQUFBLFNBQUEsR0FBWSxDQUFDLFFBQXNDLEtBQUE7QUFDeEQsTUFBQSxJQUFBLENBQUssUUFBUyxDQUFBLEVBQUUsS0FBTyxFQUFBLFFBQUEsQ0FBUyxPQUFPLENBQUEsQ0FBQTtBQUN2QyxNQUFBLElBQUEsQ0FBSyxZQUFhLENBQUEsSUFBSSw4QkFBK0IsQ0FBQSxJQUFJLEdBQUcsSUFBSSxDQUFBLENBQUE7QUFBQSxLQUNsRSxDQUFBO0FBQUEsR0E1REE7QUFBQSxFQUlPLGlCQUF5RCxHQUFBO0FBQzlELElBQUksSUFBQSxD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
|
|
@@ -2,11 +2,12 @@ import { Subject, Observable } from 'rxjs';
|
|
|
2
2
|
import { sceneGraph } from '../../core/sceneGraph/index.js';
|
|
3
3
|
import { queryMetricTree } from '../../utils/metricTree.js';
|
|
4
4
|
import { VariableDependencyConfig } from '../VariableDependencyConfig.js';
|
|
5
|
-
import {
|
|
5
|
+
import { MultiOrSingleValueSelect } from '../components/VariableValueSelect.js';
|
|
6
6
|
import { MultiValueVariable } from './MultiValueVariable.js';
|
|
7
7
|
import { VariableRefresh } from '@grafana/data';
|
|
8
8
|
import { getClosest } from '../../core/sceneGraph/utils.js';
|
|
9
9
|
import { SceneVariableSet } from '../sets/SceneVariableSet.js';
|
|
10
|
+
import React from 'react';
|
|
10
11
|
|
|
11
12
|
class TestVariable extends MultiValueVariable {
|
|
12
13
|
constructor(initialState, isLazy = false) {
|
|
@@ -96,7 +97,7 @@ class TestVariable extends MultiValueVariable {
|
|
|
96
97
|
}
|
|
97
98
|
}
|
|
98
99
|
TestVariable.Component = ({ model }) => {
|
|
99
|
-
return
|
|
100
|
+
return /* @__PURE__ */ React.createElement(MultiOrSingleValueSelect, { model });
|
|
100
101
|
};
|
|
101
102
|
|
|
102
103
|
export { TestVariable };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TestVariable.js","sources":["../../../../src/variables/variants/TestVariable.tsx"],"sourcesContent":["import { Observable, Subject } from 'rxjs';\n\nimport { sceneGraph } from '../../core/sceneGraph';\nimport { SceneComponentProps } from '../../core/types';\nimport { queryMetricTree } from '../../utils/metricTree';\nimport { VariableDependencyConfig } from '../VariableDependencyConfig';\nimport {
|
|
1
|
+
{"version":3,"file":"TestVariable.js","sources":["../../../../src/variables/variants/TestVariable.tsx"],"sourcesContent":["import { Observable, Subject } from 'rxjs';\n\nimport { sceneGraph } from '../../core/sceneGraph';\nimport { SceneComponentProps } from '../../core/types';\nimport { queryMetricTree } from '../../utils/metricTree';\nimport { VariableDependencyConfig } from '../VariableDependencyConfig';\nimport { MultiOrSingleValueSelect } from '../components/VariableValueSelect';\nimport { VariableValueOption } from '../types';\n\nimport { MultiValueVariable, MultiValueVariableState, VariableGetOptionsArgs } from './MultiValueVariable';\nimport { VariableRefresh } from '@grafana/data';\nimport { getClosest } from '../../core/sceneGraph/utils';\nimport { SceneVariableSet } from '../sets/SceneVariableSet';\nimport { SceneQueryControllerEntry } from '../../behaviors/types';\nimport React from 'react';\n\nexport interface TestVariableState extends MultiValueVariableState {\n query: string;\n delayMs?: number;\n issuedQuery?: string;\n refresh?: VariableRefresh;\n throwError?: string;\n optionsToReturn?: VariableValueOption[];\n updateOptions?: boolean;\n}\n\n/**\n * This variable is only designed for unit tests and potentially e2e tests.\n */\nexport class TestVariable extends MultiValueVariable<TestVariableState> {\n private completeUpdate = new Subject<number>();\n public isGettingValues = true;\n public getValueOptionsCount = 0;\n isLazy = false;\n\n protected _variableDependency = new VariableDependencyConfig(this, {\n statePaths: ['query'],\n });\n\n public constructor(initialState: Partial<TestVariableState>, isLazy = false) {\n super({\n type: 'custom',\n name: 'Test',\n value: 'Value',\n text: 'Text',\n query: 'Query',\n options: [],\n refresh: VariableRefresh.onDashboardLoad,\n updateOptions: true,\n ...initialState,\n });\n this.isLazy = isLazy;\n }\n\n public getValueOptions(args: VariableGetOptionsArgs): Observable<VariableValueOption[]> {\n const { delayMs } = this.state;\n\n this.getValueOptionsCount += 1;\n\n const queryController = sceneGraph.getQueryController(this);\n\n return new Observable<VariableValueOption[]>((observer) => {\n const queryEntry: SceneQueryControllerEntry = {\n type: 'variable',\n origin: this,\n cancel: () => observer.complete(),\n };\n\n if (queryController) {\n queryController.queryStarted(queryEntry);\n }\n\n this.setState({ loading: true });\n\n if (this.state.throwError) {\n throw new Error(this.state.throwError);\n }\n\n const interpolatedQuery = sceneGraph.interpolate(this, this.state.query);\n const options = this.getOptions(interpolatedQuery);\n\n const sub = this.completeUpdate.subscribe({\n next: () => {\n const newState: Partial<TestVariableState> = { issuedQuery: interpolatedQuery, loading: false };\n\n if (this.state.updateOptions) {\n newState.options = options;\n }\n\n this.setState(newState);\n observer.next(options);\n observer.complete();\n },\n });\n\n let timeout: number | undefined;\n if (delayMs) {\n timeout = window.setTimeout(() => this.signalUpdateCompleted(), delayMs);\n } else if (delayMs === 0) {\n this.signalUpdateCompleted();\n }\n\n this.isGettingValues = true;\n\n return () => {\n sub.unsubscribe();\n window.clearTimeout(timeout);\n this.isGettingValues = false;\n\n if (this.state.loading) {\n this.setState({ loading: false });\n }\n\n if (queryController) {\n queryController.queryCompleted(queryEntry);\n }\n };\n });\n }\n\n public cancel() {\n const sceneVarSet = getClosest(this, (s) => (s instanceof SceneVariableSet ? s : undefined));\n sceneVarSet?.cancel(this);\n }\n\n private getOptions(interpolatedQuery: string) {\n if (this.state.optionsToReturn) {\n return this.state.optionsToReturn;\n }\n\n return queryMetricTree(interpolatedQuery).map((x) => ({ label: x.name, value: x.name }));\n }\n\n /** Useful from tests */\n public signalUpdateCompleted() {\n this.completeUpdate.next(1);\n }\n\n public static Component = ({ model }: SceneComponentProps<MultiValueVariable>) => {\n return <MultiOrSingleValueSelect model={model} />;\n };\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { property } from 'lodash';
|
|
3
|
+
import { of, map } from 'rxjs';
|
|
4
|
+
import { Select } from '@grafana/ui';
|
|
5
|
+
import { SceneObjectBase } from '../../../core/SceneObjectBase.js';
|
|
6
|
+
import { SceneVariableValueChangedEvent } from '../../types.js';
|
|
7
|
+
|
|
8
|
+
var __defProp = Object.defineProperty;
|
|
9
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
10
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
11
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
12
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
13
|
+
var __spreadValues = (a, b) => {
|
|
14
|
+
for (var prop in b || (b = {}))
|
|
15
|
+
if (__hasOwnProp.call(b, prop))
|
|
16
|
+
__defNormalProp(a, prop, b[prop]);
|
|
17
|
+
if (__getOwnPropSymbols)
|
|
18
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
19
|
+
if (__propIsEnum.call(b, prop))
|
|
20
|
+
__defNormalProp(a, prop, b[prop]);
|
|
21
|
+
}
|
|
22
|
+
return a;
|
|
23
|
+
};
|
|
24
|
+
const _JsonVariable = class extends SceneObjectBase {
|
|
25
|
+
constructor(state) {
|
|
26
|
+
super(__spreadValues({
|
|
27
|
+
type: "json",
|
|
28
|
+
options: []
|
|
29
|
+
}, state));
|
|
30
|
+
this._onChange = (selected) => {
|
|
31
|
+
this.setState({ value: selected.value });
|
|
32
|
+
this.publishEvent(new SceneVariableValueChangedEvent(this), true);
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
validateAndUpdate() {
|
|
36
|
+
if (!this.state.provider) {
|
|
37
|
+
return of({});
|
|
38
|
+
}
|
|
39
|
+
return this.state.provider.getOptions().pipe(
|
|
40
|
+
map((options) => {
|
|
41
|
+
this.updateValueGivenNewOptions(options);
|
|
42
|
+
return {};
|
|
43
|
+
})
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
updateValueGivenNewOptions(options) {
|
|
47
|
+
if (!this.state.value) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
const stateUpdate = { options };
|
|
51
|
+
const found = options.find((option) => option.value === this.state.value);
|
|
52
|
+
if (!found) {
|
|
53
|
+
if (options.length > 0) {
|
|
54
|
+
stateUpdate.value = options[0].value;
|
|
55
|
+
} else {
|
|
56
|
+
stateUpdate.value = void 0;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
this.setState(stateUpdate);
|
|
60
|
+
}
|
|
61
|
+
getValueText(fieldPath) {
|
|
62
|
+
const current = this.state.options.find((option) => option.value === this.state.value);
|
|
63
|
+
return current ? current.label : "";
|
|
64
|
+
}
|
|
65
|
+
getValue(fieldPath) {
|
|
66
|
+
const current = this.state.options.find((option) => option.value === this.state.value);
|
|
67
|
+
return current ? this.getFieldAccessor(fieldPath)(current.obj) : "";
|
|
68
|
+
}
|
|
69
|
+
getFieldAccessor(fieldPath) {
|
|
70
|
+
const accessor = _JsonVariable.fieldAccessorCache[fieldPath];
|
|
71
|
+
if (accessor) {
|
|
72
|
+
return accessor;
|
|
73
|
+
}
|
|
74
|
+
return _JsonVariable.fieldAccessorCache[fieldPath] = property(fieldPath);
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
let JsonVariable = _JsonVariable;
|
|
78
|
+
JsonVariable.fieldAccessorCache = {};
|
|
79
|
+
JsonVariable.Component = ({ model }) => {
|
|
80
|
+
var _a;
|
|
81
|
+
const { key, value, options } = model.useState();
|
|
82
|
+
const current = (_a = options.find((option) => option.value === value)) == null ? void 0 : _a.value;
|
|
83
|
+
return /* @__PURE__ */ React.createElement(Select, {
|
|
84
|
+
id: key,
|
|
85
|
+
placeholder: "Select value",
|
|
86
|
+
width: "auto",
|
|
87
|
+
value: current,
|
|
88
|
+
tabSelectsValue: false,
|
|
89
|
+
options,
|
|
90
|
+
onChange: model._onChange
|
|
91
|
+
});
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
export { JsonVariable };
|
|
95
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSnNvblZhcmlhYmxlLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvdmFyaWFibGVzL3ZhcmlhbnRzL2pzb24vSnNvblZhcmlhYmxlLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgcHJvcGVydHkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgbWFwLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU2VsZWN0IH0gZnJvbSAnQGdyYWZhbmEvdWknO1xuaW1wb3J0IHsgU2VsZWN0YWJsZVZhbHVlIH0gZnJvbSAnQGdyYWZhbmEvZGF0YSc7XG5pbXBvcnQgeyBTY2VuZU9iamVjdEJhc2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL1NjZW5lT2JqZWN0QmFzZSc7XG5pbXBvcnQgeyBTY2VuZUNvbXBvbmVudFByb3BzIH0gZnJvbSAnLi4vLi4vLi4vY29yZS90eXBlcyc7XG5pbXBvcnQge1xuICBTY2VuZVZhcmlhYmxlU3RhdGUsXG4gIFNjZW5lVmFyaWFibGUsXG4gIFZhbGlkYXRlQW5kVXBkYXRlUmVzdWx0LFxuICBWYXJpYWJsZVZhbHVlLFxuICBTY2VuZVZhcmlhYmxlVmFsdWVDaGFuZ2VkRXZlbnQsXG59IGZyb20gJy4uLy4uL3R5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBKc29uVmFyaWFibGVTdGF0ZSBleHRlbmRzIFNjZW5lVmFyaWFibGVTdGF0ZSB7XG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCB2YWx1ZVxuICAgKi9cbiAgdmFsdWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBPXG4gICAqL1xuICBvcHRpb25zOiBKc29uVmFyaWFibGVPcHRpb25bXTtcbiAgLyoqXG4gICAqIFRoZSB0aGluZyB0aGF0IGdlbmVyYXRlcy9yZXR1cm5zIHBvc3NpYmxlIHZhbHVlcyAvIG9wdGlvbnNcbiAgICovXG4gIHByb3ZpZGVyPzogSnNvblZhcmlhYmxlT3B0aW9uUHJvdmlkZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSnNvblZhcmlhYmxlT3B0aW9uIHtcbiAgdmFsdWU6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgb2JqOiB1bmtub3duO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEpzb25WYXJpYWJsZU9wdGlvblByb3ZpZGVyIHtcbiAgZ2V0T3B0aW9ucygpOiBPYnNlcnZhYmxlPEpzb25WYXJpYWJsZU9wdGlvbltdPjtcbn1cblxuZXhwb3J0IGNsYXNzIEpzb25WYXJpYWJsZSBleHRlbmRzIFNjZW5lT2JqZWN0QmFzZTxKc29uVmFyaWFibGVTdGF0ZT4gaW1wbGVtZW50cyBTY2VuZVZhcmlhYmxlIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKHN0YXRlOiBQYXJ0aWFsPEpzb25WYXJpYWJsZVN0YXRlPikge1xuICAgIHN1cGVyKHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHR5cGU6ICdqc29uJyxcbiAgICAgIG9wdGlvbnM6IFtdLFxuICAgICAgLi4uc3RhdGUsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBmaWVsZEFjY2Vzc29yQ2FjaGU6IEZpZWxkQWNjZXNzb3JDYWNoZSA9IHt9O1xuXG4gIHB1YmxpYyB2YWxpZGF0ZUFuZFVwZGF0ZSgpOiBPYnNlcnZhYmxlPFZhbGlkYXRlQW5kVXBkYXRlUmVzdWx0PiB7XG4gICAgaWYgKCF0aGlzLnN0YXRlLnByb3ZpZGVyKSB7XG4gICAgICByZXR1cm4gb2Yoe30pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0YXRlLnByb3ZpZGVyLmdldE9wdGlvbnMoKS5waXBlKFxuICAgICAgbWFwKChvcHRpb25zKSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlVmFsdWVHaXZlbk5ld09wdGlvbnMob3B0aW9ucyk7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlVmFsdWVHaXZlbk5ld09wdGlvbnMob3B0aW9uczogSnNvblZhcmlhYmxlT3B0aW9uW10pIHtcbiAgICBpZiAoIXRoaXMuc3RhdGUudmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0ZVVwZGF0ZTogUGFydGlhbDxKc29uVmFyaWFibGVTdGF0ZT4gPSB7IG9wdGlvbnMgfTtcblxuICAgIGNvbnN0IGZvdW5kID0gb3B0aW9ucy5maW5kKChvcHRpb24pID0+IG9wdGlvbi52YWx1ZSA9PT0gdGhpcy5zdGF0ZS52YWx1ZSk7XG5cbiAgICBpZiAoIWZvdW5kKSB7XG4gICAgICBpZiAob3B0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHN0YXRlVXBkYXRlLnZhbHVlID0gb3B0aW9uc1swXS52YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXRlVXBkYXRlLnZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc2V0U3RhdGUoc3RhdGVVcGRhdGUpO1xuICB9XG5cbiAgcHVibGljIGdldFZhbHVlVGV4dD8oZmllbGRQYXRoPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5zdGF0ZS5vcHRpb25zLmZpbmQoKG9wdGlvbikgPT4gb3B0aW9uLnZhbHVlID09PSB0aGlzLnN0YXRlLnZhbHVlKTtcbiAgICByZXR1cm4gY3VycmVudCA/IGN1cnJlbnQubGFiZWwgOiAnJztcbiAgfVxuXG4gIHB1YmxpYyBnZXRWYWx1ZShmaWVsZFBhdGg6IHN0cmluZyk6IFZhcmlhYmxlVmFsdWUge1xuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLnN0YXRlLm9wdGlvbnMuZmluZCgob3B0aW9uKSA9PiBvcHRpb24udmFsdWUgPT09IHRoaXMuc3RhdGUudmFsdWUpO1xuICAgIHJldHVybiBjdXJyZW50ID8gdGhpcy5nZXRGaWVsZEFjY2Vzc29yKGZpZWxkUGF0aCkoY3VycmVudC5vYmopIDogJyc7XG4gIH1cblxuICBwcml2YXRlIGdldEZpZWxkQWNjZXNzb3IoZmllbGRQYXRoOiBzdHJpbmcpIHtcbiAgICBjb25zdCBhY2Nlc3NvciA9IEpzb25WYXJpYWJsZS5maWVsZEFjY2Vzc29yQ2FjaGVbZmllbGRQYXRoXTtcbiAgICBpZiAoYWNjZXNzb3IpIHtcbiAgICAgIHJldHVybiBhY2Nlc3NvcjtcbiAgICB9XG5cbiAgICByZXR1cm4gKEpzb25WYXJpYWJsZS5maWVsZEFjY2Vzc29yQ2FjaGVbZmllbGRQYXRoXSA9IHByb3BlcnR5KGZpZWxkUGF0aCkpO1xuICB9XG5cbiAgcHVibGljIF9vbkNoYW5nZSA9IChzZWxlY3RlZDogU2VsZWN0YWJsZVZhbHVlPHN0cmluZz4pID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHsgdmFsdWU6IHNlbGVjdGVkLnZhbHVlIH0pO1xuICAgIHRoaXMucHVibGlzaEV2ZW50KG5ldyBTY2VuZVZhcmlhYmxlVmFsdWVDaGFuZ2VkRXZlbnQodGhpcyksIHRydWUpO1xuICB9O1xuXG4gIHB1YmxpYyBzdGF0aWMgQ29tcG9uZW50ID0gKHsgbW9kZWwgfTogU2NlbmVDb21wb25lbnRQcm9wczxKc29uVmFyaWFibGU+KSA9PiB7XG4gICAgY29uc3QgeyBrZXksIHZhbHVlLCBvcHRpb25zIH0gPSBtb2RlbC51c2VTdGF0ZSgpO1xuXG4gICAgY29uc3QgY3VycmVudCA9IG9wdGlvbnMuZmluZCgob3B0aW9uKSA9PiBvcHRpb24udmFsdWUgPT09IHZhbHVlKT8udmFsdWU7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFNlbGVjdFxuICAgICAgICBpZD17a2V5fVxuICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdCB2YWx1ZVwiXG4gICAgICAgIHdpZHRoPVwiYXV0b1wiXG4gICAgICAgIHZhbHVlPXtjdXJyZW50fVxuICAgICAgICB0YWJTZWxlY3RzVmFsdWU9e2ZhbHNlfVxuICAgICAgICBvcHRpb25zPXtvcHRpb25zfVxuICAgICAgICBvbkNoYW5nZT17bW9kZWwuX29uQ2hhbmdlfVxuICAgICAgLz5cbiAgICApO1xuICB9O1xufVxuXG5pbnRlcmZhY2UgRmllbGRBY2Nlc3NvckNhY2hlIHtcbiAgW2tleTogc3RyaW5nXTogKG9iajogYW55KSA9PiBhbnk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF3Q08sTUFBTSxhQUFBLEdBQU4sY0FBMkIsZUFBNEQsQ0FBQTtBQUFBLEVBQ3JGLFlBQVksS0FBbUMsRUFBQTtBQUNwRCxJQUFNLEtBQUEsQ0FBQSxjQUFBLENBQUE7QUFBQSxNQUVKLElBQU0sRUFBQSxNQUFBO0FBQUEsTUFDTixTQUFTLEVBQUM7QUFBQSxLQUFBLEVBQ1AsS0FDSixDQUFBLENBQUEsQ0FBQTtBQXlESCxJQUFPLElBQUEsQ0FBQSxTQUFBLEdBQVksQ0FBQyxRQUFzQyxLQUFBO0FBQ3hELE1BQUEsSUFBQSxDQUFLLFFBQVMsQ0FBQSxFQUFFLEtBQU8sRUFBQSxRQUFBLENBQVMsT0FBTyxDQUFBLENBQUE7QUFDdkMsTUFBQSxJQUFBLENBQUssWUFBYSxDQUFBLElBQUksOEJBQStCLENBQUEsSUFBSSxHQUFHLElBQUksQ0FBQSxDQUFBO0FBQUEsS0FDbEUsQ0FBQTtBQUFBLEdBM0RBO0FBQUEsRUFJTyxpQkFBeUQsR0FBQTtBQUM5RCxJQUFJLElBQUEsQ0FBQyxJQUFLLENBQUEsS0FBQSxDQUFNLFFBQVUsRUFBQTtBQUN4QixNQUFPLE9BQUEsRUFBQSxDQUFHLEVBQUUsQ0FBQSxDQUFBO0FBQUEsS0FDZDtBQUVBLElBQUEsT0FBTyxJQUFLLENBQUEsS0FBQSxDQUFNLFFBQVMsQ0FBQSxVQUFBLEVBQWEsQ0FBQSxJQUFBO0FBQUEsTUFDdEMsR0FBQSxDQUFJLENBQUMsT0FBWSxLQUFBO0FBQ2YsUUFBQSxJQUFBLENBQUssMkJBQTJCLE9BQU8sQ0FBQSxDQUFBO0FBQ3ZDLFFBQUEsT0FBTyxFQUFDLENBQUE7QUFBQSxPQUNULENBQUE7QUFBQSxLQUNILENBQUE7QUFBQSxHQUNGO0FBQUEsRUFFUSwyQkFBMkIsT0FBK0IsRUFBQTtBQUNoRSxJQUFJLElBQUEsQ0FBQyxJQUFLLENBQUEsS0FBQSxD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
|