@grafana/scenes 6.49.0 → 6.50.0--canary.1315.20127970450.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/dist/esm/node_modules/@babel/runtime/helpers/esm/defineProperty.js +13 -0
- package/dist/esm/node_modules/@babel/runtime/helpers/esm/defineProperty.js.map +1 -0
- package/dist/esm/node_modules/@babel/runtime/helpers/esm/extends.js +12 -0
- package/dist/esm/node_modules/@babel/runtime/helpers/esm/extends.js.map +1 -0
- package/dist/esm/node_modules/@babel/runtime/helpers/esm/objectSpread2.js +26 -0
- package/dist/esm/node_modules/@babel/runtime/helpers/esm/objectSpread2.js.map +1 -0
- package/dist/esm/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js +10 -0
- package/dist/esm/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js.map +1 -0
- package/dist/esm/node_modules/@babel/runtime/helpers/esm/toPrimitive.js +15 -0
- package/dist/esm/node_modules/@babel/runtime/helpers/esm/toPrimitive.js.map +1 -0
- package/dist/esm/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js +10 -0
- package/dist/esm/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js.map +1 -0
- package/dist/esm/node_modules/@babel/runtime/helpers/esm/typeof.js +12 -0
- package/dist/esm/node_modules/@babel/runtime/helpers/esm/typeof.js.map +1 -0
- package/dist/esm/node_modules/react-select/dist/index-641ee5b8.esm.js +86 -0
- package/dist/esm/node_modules/react-select/dist/index-641ee5b8.esm.js.map +1 -0
- package/dist/esm/packages/scenes/src/behaviors/ActWhenVariableChanged.js.map +1 -0
- package/dist/esm/packages/scenes/src/behaviors/CursorSync.js.map +1 -0
- package/dist/esm/packages/scenes/src/behaviors/LiveNowTimer.js.map +1 -0
- package/dist/esm/packages/scenes/src/behaviors/SceneInteractionTracker.js.map +1 -0
- package/dist/esm/packages/scenes/src/behaviors/SceneQueryController.js.map +1 -0
- package/dist/esm/packages/scenes/src/components/EmbeddedScene.js.map +1 -0
- package/dist/esm/packages/scenes/src/components/NestedScene.js.map +1 -0
- package/dist/esm/packages/scenes/src/components/SceneApp/SceneApp.js.map +1 -0
- package/dist/esm/packages/scenes/src/components/SceneApp/SceneAppPage.js.map +1 -0
- package/dist/esm/packages/scenes/src/components/SceneApp/SceneAppPageView.js.map +1 -0
- package/dist/esm/packages/scenes/src/components/SceneApp/utils.js.map +1 -0
- package/dist/esm/packages/scenes/src/components/SceneByFrameRepeater.js.map +1 -0
- package/dist/esm/packages/scenes/src/components/SceneByVariableRepeater.js.map +1 -0
- package/dist/esm/packages/scenes/src/components/SceneCanvasText.js.map +1 -0
- package/dist/esm/packages/scenes/src/components/SceneControlsSpacer.js.map +1 -0
- package/dist/esm/packages/scenes/src/components/SceneDebugger/DebugDetails.js.map +1 -0
- package/dist/esm/packages/scenes/src/components/SceneDebugger/DebugTreeNode.js.map +1 -0
- package/dist/esm/packages/scenes/src/components/SceneDebugger/SceneDebugger.js.map +1 -0
- package/dist/esm/packages/scenes/src/components/SceneReactObject.js.map +1 -0
- package/dist/esm/packages/scenes/src/components/SceneRefreshPicker.js.map +1 -0
- package/dist/esm/packages/scenes/src/components/SceneTimePicker.js.map +1 -0
- package/dist/esm/packages/scenes/src/components/SceneTimeRangeCompare.js.map +1 -0
- package/dist/esm/packages/scenes/src/components/SceneToolbarButton.js.map +1 -0
- package/dist/esm/packages/scenes/src/components/VizPanel/VizPanel.js.map +1 -0
- package/dist/esm/packages/scenes/src/components/VizPanel/VizPanelExploreButton.js.map +1 -0
- package/dist/esm/packages/scenes/src/components/VizPanel/VizPanelMenu.js.map +1 -0
- package/dist/esm/packages/scenes/src/components/VizPanel/VizPanelRenderer.js.map +1 -0
- package/dist/esm/packages/scenes/src/components/VizPanel/VizPanelSeriesLimit.js.map +1 -0
- package/dist/esm/packages/scenes/src/components/VizPanel/colorSeriesConfigFactory.js.map +1 -0
- package/dist/esm/packages/scenes/src/components/VizPanel/registerRuntimePanelPlugin.js.map +1 -0
- package/dist/esm/packages/scenes/src/components/VizPanel/seriesVisibilityConfigFactory.js.map +1 -0
- package/dist/esm/packages/scenes/src/components/layout/CSSGrid/SceneCSSGridLayout.js.map +1 -0
- package/dist/esm/packages/scenes/src/components/layout/LazyLoader.js.map +1 -0
- package/dist/esm/packages/scenes/src/components/layout/SceneFlexLayout.js.map +1 -0
- package/dist/esm/packages/scenes/src/components/layout/grid/SceneGridItem.js.map +1 -0
- package/dist/esm/packages/scenes/src/components/layout/grid/SceneGridLayout.js.map +1 -0
- package/dist/esm/packages/scenes/src/components/layout/grid/SceneGridLayoutRenderer.js.map +1 -0
- package/dist/esm/packages/scenes/src/components/layout/grid/SceneGridRow.js.map +1 -0
- package/dist/esm/packages/scenes/src/components/layout/grid/constants.js.map +1 -0
- package/dist/esm/packages/scenes/src/components/layout/grid/types.js.map +1 -0
- package/dist/esm/packages/scenes/src/components/layout/grid/utils.js.map +1 -0
- package/dist/esm/packages/scenes/src/components/layout/split/SplitLayout.js.map +1 -0
- package/dist/esm/packages/scenes/src/components/layout/split/SplitLayoutRenderer.js.map +1 -0
- package/dist/esm/packages/scenes/src/components/layout/split/Splitter.js.map +1 -0
- package/dist/esm/packages/scenes/src/core/PanelBuilders/FieldConfigBuilder.js.map +1 -0
- package/dist/esm/packages/scenes/src/core/PanelBuilders/FieldConfigBuilders.js.map +1 -0
- package/dist/esm/packages/scenes/src/core/PanelBuilders/FieldConfigOverridesBuilder.js.map +1 -0
- package/dist/esm/packages/scenes/src/core/PanelBuilders/PanelOptionsBuilder.js.map +1 -0
- package/dist/esm/packages/scenes/src/core/PanelBuilders/PanelOptionsBuilders.js.map +1 -0
- package/dist/esm/packages/scenes/src/core/PanelBuilders/StandardFieldConfigBuilders.js.map +1 -0
- package/dist/esm/packages/scenes/src/core/PanelBuilders/VizConfigBuilder.js.map +1 -0
- package/dist/esm/packages/scenes/src/core/PanelBuilders/VizConfigBuilders.js.map +1 -0
- package/dist/esm/packages/scenes/src/core/PanelBuilders/VizPanelBuilder.js.map +1 -0
- package/dist/esm/packages/scenes/src/core/PanelBuilders/index.js.map +1 -0
- package/dist/esm/packages/scenes/src/core/SceneComponentWrapper.js.map +1 -0
- package/dist/esm/packages/scenes/src/core/SceneDataNode.js.map +1 -0
- package/dist/esm/packages/scenes/src/core/SceneObjectBase.js.map +1 -0
- package/dist/esm/packages/scenes/src/core/SceneObjectRef.js.map +1 -0
- package/dist/esm/packages/scenes/src/core/SceneTimeRange.js.map +1 -0
- package/dist/esm/packages/scenes/src/core/SceneTimeRangeTransformerBase.js.map +1 -0
- package/dist/esm/packages/scenes/src/core/SceneTimeZoneOverride.js.map +1 -0
- package/dist/esm/packages/scenes/src/core/events.js.map +1 -0
- package/dist/esm/packages/scenes/src/core/sceneGraph/cloneSceneObject.js.map +1 -0
- package/dist/esm/packages/scenes/src/core/sceneGraph/getInteractionTracker.js.map +1 -0
- package/dist/esm/packages/scenes/src/core/sceneGraph/getQueryController.js.map +1 -0
- package/dist/esm/packages/scenes/src/core/sceneGraph/getTimeRange.js.map +1 -0
- package/dist/esm/packages/scenes/src/core/sceneGraph/index.js.map +1 -0
- package/dist/esm/packages/scenes/src/core/sceneGraph/sceneGraph.js.map +1 -0
- package/dist/esm/packages/scenes/src/core/sceneGraph/utils.js.map +1 -0
- package/dist/esm/packages/scenes/src/core/types.js.map +1 -0
- package/dist/esm/packages/scenes/src/index.js.map +1 -0
- package/dist/esm/packages/scenes/src/performance/LongFrameDetector.js.map +1 -0
- package/dist/esm/packages/scenes/src/performance/PanelProfilingManager.js.map +1 -0
- package/dist/esm/packages/scenes/src/performance/ScenePerformanceTracker.js.map +1 -0
- package/dist/esm/packages/scenes/src/performance/SceneRenderProfiler.js.map +1 -0
- package/dist/esm/packages/scenes/src/performance/VizPanelRenderProfiler.js.map +1 -0
- package/dist/esm/packages/scenes/src/performance/interactionConstants.js.map +1 -0
- package/dist/esm/packages/scenes/src/querying/DataLayersMerger.js.map +1 -0
- package/dist/esm/packages/scenes/src/querying/DataProviderProxy.js.map +1 -0
- package/dist/esm/packages/scenes/src/querying/ExtraQueryProvider.js.map +1 -0
- package/dist/esm/packages/scenes/src/querying/RuntimeDataSource.js.map +1 -0
- package/dist/esm/packages/scenes/src/querying/SceneDataLayerSet.js.map +1 -0
- package/dist/esm/packages/scenes/src/querying/SceneDataTransformer.js.map +1 -0
- package/dist/esm/packages/scenes/src/querying/SceneQueryRunner.js.map +1 -0
- package/dist/esm/packages/scenes/src/querying/extraQueryProcessingOperator.js.map +1 -0
- package/dist/esm/packages/scenes/src/querying/getEnrichedDataRequest.js.map +1 -0
- package/dist/esm/packages/scenes/src/querying/layers/SceneDataLayerBase.js.map +1 -0
- package/dist/esm/packages/scenes/src/querying/layers/SceneDataLayerControls.js.map +1 -0
- package/dist/esm/packages/scenes/src/querying/layers/annotations/AnnotationsDataLayer.js.map +1 -0
- package/dist/esm/packages/scenes/src/querying/layers/annotations/filterAnnotations.js.map +1 -0
- package/dist/esm/packages/scenes/src/querying/layers/annotations/standardAnnotationQuery.js.map +1 -0
- package/dist/esm/packages/scenes/src/querying/layers/annotations/standardAnnotationsSupport.js.map +1 -0
- package/dist/esm/packages/scenes/src/querying/layers/annotations/utils.js.map +1 -0
- package/dist/esm/packages/scenes/src/querying/registerQueryWithController.js.map +1 -0
- package/dist/esm/packages/scenes/src/services/SceneObjectUrlSyncConfig.js.map +1 -0
- package/dist/esm/packages/scenes/src/services/UniqueUrlKeyMapper.js.map +1 -0
- package/dist/esm/packages/scenes/src/services/UrlSyncContextProvider.js.map +1 -0
- package/dist/esm/packages/scenes/src/services/UrlSyncManager.js.map +1 -0
- package/dist/esm/packages/scenes/src/services/useUrlSync.js.map +1 -0
- package/dist/esm/packages/scenes/src/services/utils.js.map +1 -0
- package/dist/esm/packages/scenes/src/utils/ControlsLabel.js.map +1 -0
- package/dist/esm/packages/scenes/src/utils/LoadingIndicator.js.map +1 -0
- package/dist/esm/packages/scenes/src/utils/SafeSerializableSceneObject.js.map +1 -0
- package/dist/esm/packages/scenes/src/utils/compatibility/setWindowGrafanaSceneContext.js.map +1 -0
- package/dist/esm/packages/scenes/src/utils/date.js.map +1 -0
- package/dist/esm/packages/scenes/src/utils/evaluateTimeRange.js.map +1 -0
- package/dist/esm/packages/scenes/src/utils/explore.js.map +1 -0
- package/dist/esm/packages/scenes/src/utils/findPanelProfiler.js.map +1 -0
- package/dist/esm/packages/scenes/src/utils/getCompareSeriesRefId.js.map +1 -0
- package/dist/esm/packages/scenes/src/utils/getDataSource.js.map +1 -0
- package/dist/esm/packages/scenes/src/utils/getMessageFromError.js.map +1 -0
- package/dist/esm/packages/scenes/src/utils/loadResources.js.map +1 -0
- package/dist/esm/packages/scenes/src/utils/metricTree.js.map +1 -0
- package/dist/esm/packages/scenes/src/utils/parseUrlParam.js.map +1 -0
- package/dist/esm/packages/scenes/src/utils/pathId.js.map +1 -0
- package/dist/esm/packages/scenes/src/utils/utils.js.map +1 -0
- package/dist/esm/packages/scenes/src/utils/wrapInSafeSerializableSceneObject.js.map +1 -0
- package/dist/esm/packages/scenes/src/utils/writePerformanceLog.js.map +1 -0
- package/dist/esm/packages/scenes/src/utils/writeSceneLog.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/DrilldownDependenciesManager.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/VariableDependencyConfig.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/VariableValueRecorder.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/adhoc/AdHocFilterBuilder.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/adhoc/AdHocFilterRenderer.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/adhoc/AdHocFiltersCombobox/utils.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/adhoc/AdHocFiltersVariable.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/adhoc/controller/AdHocFiltersVariableController.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/adhoc/getAdHocFiltersFromScopes.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/adhoc/getAdhocOptionSearcher.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/adhoc/patchGetAdhocFilters.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/components/VariableValueControl.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/components/VariableValueInput.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/components/VariableValueSelect.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/components/VariableValueSelectors.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/components/getOptionSearcher.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/constants.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/filter.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/getEnrichedFiltersRequest.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/groupby/DefaultGroupByCustomIndicatorContainer.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/groupby/GroupByValueContainer.js.map +1 -0
- package/dist/esm/{variables → packages/scenes/src/variables}/groupby/GroupByVariable.js +7 -0
- package/dist/esm/packages/scenes/src/variables/groupby/GroupByVariable.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/groupby/GroupByVariableUrlSyncHandler.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/groupby/findActiveGroupByVariablesByUid.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/interpolation/ScopedVarsVariable.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/interpolation/defaults.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/interpolation/fieldAccessorCache.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/interpolation/formatRegistry.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/interpolation/sceneInterpolator.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/lookupVariable.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/macros/AllVariablesMacro.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/macros/contextMacros.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/macros/dataMacros.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/macros/index.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/macros/templateProxies.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/macros/timeMacros.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/macros/types.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/macros/urlMacros.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/sets/SceneVariableSet.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/types.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/utils.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/variants/ConstantVariable.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/variants/CustomVariable.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/variants/DataSourceVariable.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/variants/IntervalVariable.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/variants/LocalValueVariable.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/variants/MultiValueVariable.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/variants/ScopesVariable.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/variants/SwitchVariable.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/variants/TestVariable.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/variants/TextBoxVariable.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/variants/guards.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/variants/query/QueryVariable.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/variants/query/createQueryVariableRunner.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/variants/query/guards.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/variants/query/toMetricFindValues.js.map +1 -0
- package/dist/esm/packages/scenes/src/variables/variants/query/utils.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +171 -11
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/dist/esm/behaviors/ActWhenVariableChanged.js.map +0 -1
- package/dist/esm/behaviors/CursorSync.js.map +0 -1
- package/dist/esm/behaviors/LiveNowTimer.js.map +0 -1
- package/dist/esm/behaviors/SceneInteractionTracker.js.map +0 -1
- package/dist/esm/behaviors/SceneQueryController.js.map +0 -1
- package/dist/esm/components/EmbeddedScene.js.map +0 -1
- package/dist/esm/components/NestedScene.js.map +0 -1
- package/dist/esm/components/SceneApp/SceneApp.js.map +0 -1
- package/dist/esm/components/SceneApp/SceneAppPage.js.map +0 -1
- package/dist/esm/components/SceneApp/SceneAppPageView.js.map +0 -1
- package/dist/esm/components/SceneApp/utils.js.map +0 -1
- package/dist/esm/components/SceneByFrameRepeater.js.map +0 -1
- package/dist/esm/components/SceneByVariableRepeater.js.map +0 -1
- package/dist/esm/components/SceneCanvasText.js.map +0 -1
- package/dist/esm/components/SceneControlsSpacer.js.map +0 -1
- package/dist/esm/components/SceneDebugger/DebugDetails.js.map +0 -1
- package/dist/esm/components/SceneDebugger/DebugTreeNode.js.map +0 -1
- package/dist/esm/components/SceneDebugger/SceneDebugger.js.map +0 -1
- package/dist/esm/components/SceneReactObject.js.map +0 -1
- package/dist/esm/components/SceneRefreshPicker.js.map +0 -1
- package/dist/esm/components/SceneTimePicker.js.map +0 -1
- package/dist/esm/components/SceneTimeRangeCompare.js.map +0 -1
- package/dist/esm/components/SceneToolbarButton.js.map +0 -1
- package/dist/esm/components/VizPanel/VizPanel.js.map +0 -1
- package/dist/esm/components/VizPanel/VizPanelExploreButton.js.map +0 -1
- package/dist/esm/components/VizPanel/VizPanelMenu.js.map +0 -1
- package/dist/esm/components/VizPanel/VizPanelRenderer.js.map +0 -1
- package/dist/esm/components/VizPanel/VizPanelSeriesLimit.js.map +0 -1
- package/dist/esm/components/VizPanel/colorSeriesConfigFactory.js.map +0 -1
- package/dist/esm/components/VizPanel/registerRuntimePanelPlugin.js.map +0 -1
- package/dist/esm/components/VizPanel/seriesVisibilityConfigFactory.js.map +0 -1
- package/dist/esm/components/layout/CSSGrid/SceneCSSGridLayout.js.map +0 -1
- package/dist/esm/components/layout/LazyLoader.js.map +0 -1
- package/dist/esm/components/layout/SceneFlexLayout.js.map +0 -1
- package/dist/esm/components/layout/grid/SceneGridItem.js.map +0 -1
- package/dist/esm/components/layout/grid/SceneGridLayout.js.map +0 -1
- package/dist/esm/components/layout/grid/SceneGridLayoutRenderer.js.map +0 -1
- package/dist/esm/components/layout/grid/SceneGridRow.js.map +0 -1
- package/dist/esm/components/layout/grid/constants.js.map +0 -1
- package/dist/esm/components/layout/grid/types.js.map +0 -1
- package/dist/esm/components/layout/grid/utils.js.map +0 -1
- package/dist/esm/components/layout/split/SplitLayout.js.map +0 -1
- package/dist/esm/components/layout/split/SplitLayoutRenderer.js.map +0 -1
- package/dist/esm/components/layout/split/Splitter.js.map +0 -1
- package/dist/esm/core/PanelBuilders/FieldConfigBuilder.js.map +0 -1
- package/dist/esm/core/PanelBuilders/FieldConfigBuilders.js.map +0 -1
- package/dist/esm/core/PanelBuilders/FieldConfigOverridesBuilder.js.map +0 -1
- package/dist/esm/core/PanelBuilders/PanelOptionsBuilder.js.map +0 -1
- package/dist/esm/core/PanelBuilders/PanelOptionsBuilders.js.map +0 -1
- package/dist/esm/core/PanelBuilders/StandardFieldConfigBuilders.js.map +0 -1
- package/dist/esm/core/PanelBuilders/VizConfigBuilder.js.map +0 -1
- package/dist/esm/core/PanelBuilders/VizConfigBuilders.js.map +0 -1
- package/dist/esm/core/PanelBuilders/VizPanelBuilder.js.map +0 -1
- package/dist/esm/core/PanelBuilders/index.js.map +0 -1
- package/dist/esm/core/SceneComponentWrapper.js.map +0 -1
- package/dist/esm/core/SceneDataNode.js.map +0 -1
- package/dist/esm/core/SceneObjectBase.js.map +0 -1
- package/dist/esm/core/SceneObjectRef.js.map +0 -1
- package/dist/esm/core/SceneTimeRange.js.map +0 -1
- package/dist/esm/core/SceneTimeRangeTransformerBase.js.map +0 -1
- package/dist/esm/core/SceneTimeZoneOverride.js.map +0 -1
- package/dist/esm/core/events.js.map +0 -1
- package/dist/esm/core/sceneGraph/cloneSceneObject.js.map +0 -1
- package/dist/esm/core/sceneGraph/getInteractionTracker.js.map +0 -1
- package/dist/esm/core/sceneGraph/getQueryController.js.map +0 -1
- package/dist/esm/core/sceneGraph/getTimeRange.js.map +0 -1
- package/dist/esm/core/sceneGraph/index.js.map +0 -1
- package/dist/esm/core/sceneGraph/sceneGraph.js.map +0 -1
- package/dist/esm/core/sceneGraph/utils.js.map +0 -1
- package/dist/esm/core/types.js.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/performance/LongFrameDetector.js.map +0 -1
- package/dist/esm/performance/PanelProfilingManager.js.map +0 -1
- package/dist/esm/performance/ScenePerformanceTracker.js.map +0 -1
- package/dist/esm/performance/SceneRenderProfiler.js.map +0 -1
- package/dist/esm/performance/VizPanelRenderProfiler.js.map +0 -1
- package/dist/esm/performance/interactionConstants.js.map +0 -1
- package/dist/esm/querying/DataLayersMerger.js.map +0 -1
- package/dist/esm/querying/DataProviderProxy.js.map +0 -1
- package/dist/esm/querying/ExtraQueryProvider.js.map +0 -1
- package/dist/esm/querying/RuntimeDataSource.js.map +0 -1
- package/dist/esm/querying/SceneDataLayerSet.js.map +0 -1
- package/dist/esm/querying/SceneDataTransformer.js.map +0 -1
- package/dist/esm/querying/SceneQueryRunner.js.map +0 -1
- package/dist/esm/querying/extraQueryProcessingOperator.js.map +0 -1
- package/dist/esm/querying/getEnrichedDataRequest.js.map +0 -1
- package/dist/esm/querying/layers/SceneDataLayerBase.js.map +0 -1
- package/dist/esm/querying/layers/SceneDataLayerControls.js.map +0 -1
- package/dist/esm/querying/layers/annotations/AnnotationsDataLayer.js.map +0 -1
- package/dist/esm/querying/layers/annotations/filterAnnotations.js.map +0 -1
- package/dist/esm/querying/layers/annotations/standardAnnotationQuery.js.map +0 -1
- package/dist/esm/querying/layers/annotations/standardAnnotationsSupport.js.map +0 -1
- package/dist/esm/querying/layers/annotations/utils.js.map +0 -1
- package/dist/esm/querying/registerQueryWithController.js.map +0 -1
- package/dist/esm/services/SceneObjectUrlSyncConfig.js.map +0 -1
- package/dist/esm/services/UniqueUrlKeyMapper.js.map +0 -1
- package/dist/esm/services/UrlSyncContextProvider.js.map +0 -1
- package/dist/esm/services/UrlSyncManager.js.map +0 -1
- package/dist/esm/services/useUrlSync.js.map +0 -1
- package/dist/esm/services/utils.js.map +0 -1
- package/dist/esm/utils/ControlsLabel.js.map +0 -1
- package/dist/esm/utils/LoadingIndicator.js.map +0 -1
- package/dist/esm/utils/SafeSerializableSceneObject.js.map +0 -1
- package/dist/esm/utils/compatibility/setWindowGrafanaSceneContext.js.map +0 -1
- package/dist/esm/utils/date.js.map +0 -1
- package/dist/esm/utils/evaluateTimeRange.js.map +0 -1
- package/dist/esm/utils/explore.js.map +0 -1
- package/dist/esm/utils/findPanelProfiler.js.map +0 -1
- package/dist/esm/utils/getCompareSeriesRefId.js.map +0 -1
- package/dist/esm/utils/getDataSource.js.map +0 -1
- package/dist/esm/utils/getMessageFromError.js.map +0 -1
- package/dist/esm/utils/loadResources.js.map +0 -1
- package/dist/esm/utils/metricTree.js.map +0 -1
- package/dist/esm/utils/parseUrlParam.js.map +0 -1
- package/dist/esm/utils/pathId.js.map +0 -1
- package/dist/esm/utils/utils.js.map +0 -1
- package/dist/esm/utils/wrapInSafeSerializableSceneObject.js.map +0 -1
- package/dist/esm/utils/writePerformanceLog.js.map +0 -1
- package/dist/esm/utils/writeSceneLog.js.map +0 -1
- package/dist/esm/variables/DrilldownDependenciesManager.js.map +0 -1
- package/dist/esm/variables/VariableDependencyConfig.js.map +0 -1
- package/dist/esm/variables/VariableValueRecorder.js.map +0 -1
- package/dist/esm/variables/adhoc/AdHocFilterBuilder.js.map +0 -1
- package/dist/esm/variables/adhoc/AdHocFilterRenderer.js.map +0 -1
- package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js.map +0 -1
- package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js.map +0 -1
- package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js.map +0 -1
- package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js.map +0 -1
- package/dist/esm/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js.map +0 -1
- package/dist/esm/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js.map +0 -1
- package/dist/esm/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js.map +0 -1
- package/dist/esm/variables/adhoc/AdHocFiltersCombobox/utils.js.map +0 -1
- package/dist/esm/variables/adhoc/AdHocFiltersVariable.js.map +0 -1
- package/dist/esm/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js.map +0 -1
- package/dist/esm/variables/adhoc/controller/AdHocFiltersVariableController.js.map +0 -1
- package/dist/esm/variables/adhoc/getAdHocFiltersFromScopes.js.map +0 -1
- package/dist/esm/variables/adhoc/getAdhocOptionSearcher.js.map +0 -1
- package/dist/esm/variables/adhoc/patchGetAdhocFilters.js.map +0 -1
- package/dist/esm/variables/components/VariableValueControl.js.map +0 -1
- package/dist/esm/variables/components/VariableValueInput.js.map +0 -1
- package/dist/esm/variables/components/VariableValueSelect.js.map +0 -1
- package/dist/esm/variables/components/VariableValueSelectors.js.map +0 -1
- package/dist/esm/variables/components/getOptionSearcher.js.map +0 -1
- package/dist/esm/variables/constants.js.map +0 -1
- package/dist/esm/variables/filter.js.map +0 -1
- package/dist/esm/variables/getEnrichedFiltersRequest.js.map +0 -1
- package/dist/esm/variables/groupby/DefaultGroupByCustomIndicatorContainer.js.map +0 -1
- package/dist/esm/variables/groupby/GroupByValueContainer.js.map +0 -1
- package/dist/esm/variables/groupby/GroupByVariable.js.map +0 -1
- package/dist/esm/variables/groupby/GroupByVariableUrlSyncHandler.js.map +0 -1
- package/dist/esm/variables/groupby/findActiveGroupByVariablesByUid.js.map +0 -1
- package/dist/esm/variables/interpolation/ScopedVarsVariable.js.map +0 -1
- package/dist/esm/variables/interpolation/defaults.js.map +0 -1
- package/dist/esm/variables/interpolation/fieldAccessorCache.js.map +0 -1
- package/dist/esm/variables/interpolation/formatRegistry.js.map +0 -1
- package/dist/esm/variables/interpolation/sceneInterpolator.js.map +0 -1
- package/dist/esm/variables/lookupVariable.js.map +0 -1
- package/dist/esm/variables/macros/AllVariablesMacro.js.map +0 -1
- package/dist/esm/variables/macros/contextMacros.js.map +0 -1
- package/dist/esm/variables/macros/dataMacros.js.map +0 -1
- package/dist/esm/variables/macros/index.js.map +0 -1
- package/dist/esm/variables/macros/templateProxies.js.map +0 -1
- package/dist/esm/variables/macros/timeMacros.js.map +0 -1
- package/dist/esm/variables/macros/types.js.map +0 -1
- package/dist/esm/variables/macros/urlMacros.js.map +0 -1
- package/dist/esm/variables/sets/SceneVariableSet.js.map +0 -1
- package/dist/esm/variables/types.js.map +0 -1
- package/dist/esm/variables/utils.js.map +0 -1
- package/dist/esm/variables/variants/ConstantVariable.js.map +0 -1
- package/dist/esm/variables/variants/CustomVariable.js.map +0 -1
- package/dist/esm/variables/variants/DataSourceVariable.js.map +0 -1
- package/dist/esm/variables/variants/IntervalVariable.js.map +0 -1
- package/dist/esm/variables/variants/LocalValueVariable.js.map +0 -1
- package/dist/esm/variables/variants/MultiValueVariable.js.map +0 -1
- package/dist/esm/variables/variants/ScopesVariable.js.map +0 -1
- package/dist/esm/variables/variants/SwitchVariable.js.map +0 -1
- package/dist/esm/variables/variants/TestVariable.js.map +0 -1
- package/dist/esm/variables/variants/TextBoxVariable.js.map +0 -1
- package/dist/esm/variables/variants/guards.js.map +0 -1
- package/dist/esm/variables/variants/query/QueryVariable.js.map +0 -1
- package/dist/esm/variables/variants/query/createQueryVariableRunner.js.map +0 -1
- package/dist/esm/variables/variants/query/guards.js.map +0 -1
- package/dist/esm/variables/variants/query/toMetricFindValues.js.map +0 -1
- package/dist/esm/variables/variants/query/utils.js.map +0 -1
- /package/dist/esm/{behaviors → packages/scenes/src/behaviors}/ActWhenVariableChanged.js +0 -0
- /package/dist/esm/{behaviors → packages/scenes/src/behaviors}/CursorSync.js +0 -0
- /package/dist/esm/{behaviors → packages/scenes/src/behaviors}/LiveNowTimer.js +0 -0
- /package/dist/esm/{behaviors → packages/scenes/src/behaviors}/SceneInteractionTracker.js +0 -0
- /package/dist/esm/{behaviors → packages/scenes/src/behaviors}/SceneQueryController.js +0 -0
- /package/dist/esm/{behaviors → packages/scenes/src/behaviors}/index.js +0 -0
- /package/dist/esm/{behaviors → packages/scenes/src/behaviors}/index.js.map +0 -0
- /package/dist/esm/{components → packages/scenes/src/components}/EmbeddedScene.js +0 -0
- /package/dist/esm/{components → packages/scenes/src/components}/NestedScene.js +0 -0
- /package/dist/esm/{components → packages/scenes/src/components}/SceneApp/SceneApp.js +0 -0
- /package/dist/esm/{components → packages/scenes/src/components}/SceneApp/SceneAppPage.js +0 -0
- /package/dist/esm/{components → packages/scenes/src/components}/SceneApp/SceneAppPageView.js +0 -0
- /package/dist/esm/{components → packages/scenes/src/components}/SceneApp/utils.js +0 -0
- /package/dist/esm/{components → packages/scenes/src/components}/SceneByFrameRepeater.js +0 -0
- /package/dist/esm/{components → packages/scenes/src/components}/SceneByVariableRepeater.js +0 -0
- /package/dist/esm/{components → packages/scenes/src/components}/SceneCanvasText.js +0 -0
- /package/dist/esm/{components → packages/scenes/src/components}/SceneControlsSpacer.js +0 -0
- /package/dist/esm/{components → packages/scenes/src/components}/SceneDebugger/DebugDetails.js +0 -0
- /package/dist/esm/{components → packages/scenes/src/components}/SceneDebugger/DebugTreeNode.js +0 -0
- /package/dist/esm/{components → packages/scenes/src/components}/SceneDebugger/SceneDebugger.js +0 -0
- /package/dist/esm/{components → packages/scenes/src/components}/SceneReactObject.js +0 -0
- /package/dist/esm/{components → packages/scenes/src/components}/SceneRefreshPicker.js +0 -0
- /package/dist/esm/{components → packages/scenes/src/components}/SceneTimePicker.js +0 -0
- /package/dist/esm/{components → packages/scenes/src/components}/SceneTimeRangeCompare.js +0 -0
- /package/dist/esm/{components → packages/scenes/src/components}/SceneToolbarButton.js +0 -0
- /package/dist/esm/{components → packages/scenes/src/components}/VizPanel/VizPanel.js +0 -0
- /package/dist/esm/{components → packages/scenes/src/components}/VizPanel/VizPanelExploreButton.js +0 -0
- /package/dist/esm/{components → packages/scenes/src/components}/VizPanel/VizPanelMenu.js +0 -0
- /package/dist/esm/{components → packages/scenes/src/components}/VizPanel/VizPanelRenderer.js +0 -0
- /package/dist/esm/{components → packages/scenes/src/components}/VizPanel/VizPanelSeriesLimit.js +0 -0
- /package/dist/esm/{components → packages/scenes/src/components}/VizPanel/colorSeriesConfigFactory.js +0 -0
- /package/dist/esm/{components → packages/scenes/src/components}/VizPanel/registerRuntimePanelPlugin.js +0 -0
- /package/dist/esm/{components → packages/scenes/src/components}/VizPanel/seriesVisibilityConfigFactory.js +0 -0
- /package/dist/esm/{components → packages/scenes/src/components}/layout/CSSGrid/SceneCSSGridLayout.js +0 -0
- /package/dist/esm/{components → packages/scenes/src/components}/layout/LazyLoader.js +0 -0
- /package/dist/esm/{components → packages/scenes/src/components}/layout/SceneFlexLayout.js +0 -0
- /package/dist/esm/{components → packages/scenes/src/components}/layout/grid/SceneGridItem.js +0 -0
- /package/dist/esm/{components → packages/scenes/src/components}/layout/grid/SceneGridLayout.js +0 -0
- /package/dist/esm/{components → packages/scenes/src/components}/layout/grid/SceneGridLayoutRenderer.js +0 -0
- /package/dist/esm/{components → packages/scenes/src/components}/layout/grid/SceneGridRow.js +0 -0
- /package/dist/esm/{components → packages/scenes/src/components}/layout/grid/constants.js +0 -0
- /package/dist/esm/{components → packages/scenes/src/components}/layout/grid/types.js +0 -0
- /package/dist/esm/{components → packages/scenes/src/components}/layout/grid/utils.js +0 -0
- /package/dist/esm/{components → packages/scenes/src/components}/layout/split/SplitLayout.js +0 -0
- /package/dist/esm/{components → packages/scenes/src/components}/layout/split/SplitLayoutRenderer.js +0 -0
- /package/dist/esm/{components → packages/scenes/src/components}/layout/split/Splitter.js +0 -0
- /package/dist/esm/{core → packages/scenes/src/core}/PanelBuilders/FieldConfigBuilder.js +0 -0
- /package/dist/esm/{core → packages/scenes/src/core}/PanelBuilders/FieldConfigBuilders.js +0 -0
- /package/dist/esm/{core → packages/scenes/src/core}/PanelBuilders/FieldConfigOverridesBuilder.js +0 -0
- /package/dist/esm/{core → packages/scenes/src/core}/PanelBuilders/PanelOptionsBuilder.js +0 -0
- /package/dist/esm/{core → packages/scenes/src/core}/PanelBuilders/PanelOptionsBuilders.js +0 -0
- /package/dist/esm/{core → packages/scenes/src/core}/PanelBuilders/StandardFieldConfigBuilders.js +0 -0
- /package/dist/esm/{core → packages/scenes/src/core}/PanelBuilders/VizConfigBuilder.js +0 -0
- /package/dist/esm/{core → packages/scenes/src/core}/PanelBuilders/VizConfigBuilders.js +0 -0
- /package/dist/esm/{core → packages/scenes/src/core}/PanelBuilders/VizPanelBuilder.js +0 -0
- /package/dist/esm/{core → packages/scenes/src/core}/PanelBuilders/index.js +0 -0
- /package/dist/esm/{core → packages/scenes/src/core}/SceneComponentWrapper.js +0 -0
- /package/dist/esm/{core → packages/scenes/src/core}/SceneDataNode.js +0 -0
- /package/dist/esm/{core → packages/scenes/src/core}/SceneObjectBase.js +0 -0
- /package/dist/esm/{core → packages/scenes/src/core}/SceneObjectRef.js +0 -0
- /package/dist/esm/{core → packages/scenes/src/core}/SceneTimeRange.js +0 -0
- /package/dist/esm/{core → packages/scenes/src/core}/SceneTimeRangeTransformerBase.js +0 -0
- /package/dist/esm/{core → packages/scenes/src/core}/SceneTimeZoneOverride.js +0 -0
- /package/dist/esm/{core → packages/scenes/src/core}/events.js +0 -0
- /package/dist/esm/{core → packages/scenes/src/core}/sceneGraph/cloneSceneObject.js +0 -0
- /package/dist/esm/{core → packages/scenes/src/core}/sceneGraph/getInteractionTracker.js +0 -0
- /package/dist/esm/{core → packages/scenes/src/core}/sceneGraph/getQueryController.js +0 -0
- /package/dist/esm/{core → packages/scenes/src/core}/sceneGraph/getTimeRange.js +0 -0
- /package/dist/esm/{core → packages/scenes/src/core}/sceneGraph/index.js +0 -0
- /package/dist/esm/{core → packages/scenes/src/core}/sceneGraph/sceneGraph.js +0 -0
- /package/dist/esm/{core → packages/scenes/src/core}/sceneGraph/utils.js +0 -0
- /package/dist/esm/{core → packages/scenes/src/core}/types.js +0 -0
- /package/dist/esm/{index.js → packages/scenes/src/index.js} +0 -0
- /package/dist/esm/{locales → packages/scenes/src/locales}/cs-CZ/grafana-scenes.json.js +0 -0
- /package/dist/esm/{locales → packages/scenes/src/locales}/cs-CZ/grafana-scenes.json.js.map +0 -0
- /package/dist/esm/{locales → packages/scenes/src/locales}/de-DE/grafana-scenes.json.js +0 -0
- /package/dist/esm/{locales → packages/scenes/src/locales}/de-DE/grafana-scenes.json.js.map +0 -0
- /package/dist/esm/{locales → packages/scenes/src/locales}/en-US/grafana-scenes.json.js +0 -0
- /package/dist/esm/{locales → packages/scenes/src/locales}/en-US/grafana-scenes.json.js.map +0 -0
- /package/dist/esm/{locales → packages/scenes/src/locales}/es-ES/grafana-scenes.json.js +0 -0
- /package/dist/esm/{locales → packages/scenes/src/locales}/es-ES/grafana-scenes.json.js.map +0 -0
- /package/dist/esm/{locales → packages/scenes/src/locales}/fr-FR/grafana-scenes.json.js +0 -0
- /package/dist/esm/{locales → packages/scenes/src/locales}/fr-FR/grafana-scenes.json.js.map +0 -0
- /package/dist/esm/{locales → packages/scenes/src/locales}/hu-HU/grafana-scenes.json.js +0 -0
- /package/dist/esm/{locales → packages/scenes/src/locales}/hu-HU/grafana-scenes.json.js.map +0 -0
- /package/dist/esm/{locales → packages/scenes/src/locales}/id-ID/grafana-scenes.json.js +0 -0
- /package/dist/esm/{locales → packages/scenes/src/locales}/id-ID/grafana-scenes.json.js.map +0 -0
- /package/dist/esm/{locales → packages/scenes/src/locales}/it-IT/grafana-scenes.json.js +0 -0
- /package/dist/esm/{locales → packages/scenes/src/locales}/it-IT/grafana-scenes.json.js.map +0 -0
- /package/dist/esm/{locales → packages/scenes/src/locales}/ja-JP/grafana-scenes.json.js +0 -0
- /package/dist/esm/{locales → packages/scenes/src/locales}/ja-JP/grafana-scenes.json.js.map +0 -0
- /package/dist/esm/{locales → packages/scenes/src/locales}/ko-KR/grafana-scenes.json.js +0 -0
- /package/dist/esm/{locales → packages/scenes/src/locales}/ko-KR/grafana-scenes.json.js.map +0 -0
- /package/dist/esm/{locales → packages/scenes/src/locales}/nl-NL/grafana-scenes.json.js +0 -0
- /package/dist/esm/{locales → packages/scenes/src/locales}/nl-NL/grafana-scenes.json.js.map +0 -0
- /package/dist/esm/{locales → packages/scenes/src/locales}/pl-PL/grafana-scenes.json.js +0 -0
- /package/dist/esm/{locales → packages/scenes/src/locales}/pl-PL/grafana-scenes.json.js.map +0 -0
- /package/dist/esm/{locales → packages/scenes/src/locales}/pt-BR/grafana-scenes.json.js +0 -0
- /package/dist/esm/{locales → packages/scenes/src/locales}/pt-BR/grafana-scenes.json.js.map +0 -0
- /package/dist/esm/{locales → packages/scenes/src/locales}/pt-PT/grafana-scenes.json.js +0 -0
- /package/dist/esm/{locales → packages/scenes/src/locales}/pt-PT/grafana-scenes.json.js.map +0 -0
- /package/dist/esm/{locales → packages/scenes/src/locales}/ru-RU/grafana-scenes.json.js +0 -0
- /package/dist/esm/{locales → packages/scenes/src/locales}/ru-RU/grafana-scenes.json.js.map +0 -0
- /package/dist/esm/{locales → packages/scenes/src/locales}/sv-SE/grafana-scenes.json.js +0 -0
- /package/dist/esm/{locales → packages/scenes/src/locales}/sv-SE/grafana-scenes.json.js.map +0 -0
- /package/dist/esm/{locales → packages/scenes/src/locales}/tr-TR/grafana-scenes.json.js +0 -0
- /package/dist/esm/{locales → packages/scenes/src/locales}/tr-TR/grafana-scenes.json.js.map +0 -0
- /package/dist/esm/{locales → packages/scenes/src/locales}/zh-Hans/grafana-scenes.json.js +0 -0
- /package/dist/esm/{locales → packages/scenes/src/locales}/zh-Hans/grafana-scenes.json.js.map +0 -0
- /package/dist/esm/{locales → packages/scenes/src/locales}/zh-Hant/grafana-scenes.json.js +0 -0
- /package/dist/esm/{locales → packages/scenes/src/locales}/zh-Hant/grafana-scenes.json.js.map +0 -0
- /package/dist/esm/{performance → packages/scenes/src/performance}/LongFrameDetector.js +0 -0
- /package/dist/esm/{performance → packages/scenes/src/performance}/PanelProfilingManager.js +0 -0
- /package/dist/esm/{performance → packages/scenes/src/performance}/ScenePerformanceTracker.js +0 -0
- /package/dist/esm/{performance → packages/scenes/src/performance}/SceneRenderProfiler.js +0 -0
- /package/dist/esm/{performance → packages/scenes/src/performance}/VizPanelRenderProfiler.js +0 -0
- /package/dist/esm/{performance → packages/scenes/src/performance}/index.js +0 -0
- /package/dist/esm/{performance → packages/scenes/src/performance}/index.js.map +0 -0
- /package/dist/esm/{performance → packages/scenes/src/performance}/interactionConstants.js +0 -0
- /package/dist/esm/{querying → packages/scenes/src/querying}/DataLayersMerger.js +0 -0
- /package/dist/esm/{querying → packages/scenes/src/querying}/DataProviderProxy.js +0 -0
- /package/dist/esm/{querying → packages/scenes/src/querying}/ExtraQueryProvider.js +0 -0
- /package/dist/esm/{querying → packages/scenes/src/querying}/RuntimeDataSource.js +0 -0
- /package/dist/esm/{querying → packages/scenes/src/querying}/SceneDataLayerSet.js +0 -0
- /package/dist/esm/{querying → packages/scenes/src/querying}/SceneDataTransformer.js +0 -0
- /package/dist/esm/{querying → packages/scenes/src/querying}/SceneQueryRunner.js +0 -0
- /package/dist/esm/{querying → packages/scenes/src/querying}/extraQueryProcessingOperator.js +0 -0
- /package/dist/esm/{querying → packages/scenes/src/querying}/getEnrichedDataRequest.js +0 -0
- /package/dist/esm/{querying → packages/scenes/src/querying}/layers/SceneDataLayerBase.js +0 -0
- /package/dist/esm/{querying → packages/scenes/src/querying}/layers/SceneDataLayerControls.js +0 -0
- /package/dist/esm/{querying → packages/scenes/src/querying}/layers/annotations/AnnotationsDataLayer.js +0 -0
- /package/dist/esm/{querying → packages/scenes/src/querying}/layers/annotations/filterAnnotations.js +0 -0
- /package/dist/esm/{querying → packages/scenes/src/querying}/layers/annotations/standardAnnotationQuery.js +0 -0
- /package/dist/esm/{querying → packages/scenes/src/querying}/layers/annotations/standardAnnotationsSupport.js +0 -0
- /package/dist/esm/{querying → packages/scenes/src/querying}/layers/annotations/utils.js +0 -0
- /package/dist/esm/{querying → packages/scenes/src/querying}/layers/index.js +0 -0
- /package/dist/esm/{querying → packages/scenes/src/querying}/layers/index.js.map +0 -0
- /package/dist/esm/{querying → packages/scenes/src/querying}/registerQueryWithController.js +0 -0
- /package/dist/esm/{services → packages/scenes/src/services}/SceneObjectUrlSyncConfig.js +0 -0
- /package/dist/esm/{services → packages/scenes/src/services}/UniqueUrlKeyMapper.js +0 -0
- /package/dist/esm/{services → packages/scenes/src/services}/UrlSyncContextProvider.js +0 -0
- /package/dist/esm/{services → packages/scenes/src/services}/UrlSyncManager.js +0 -0
- /package/dist/esm/{services → packages/scenes/src/services}/useUrlSync.js +0 -0
- /package/dist/esm/{services → packages/scenes/src/services}/utils.js +0 -0
- /package/dist/esm/{utils → packages/scenes/src/utils}/ControlsLabel.js +0 -0
- /package/dist/esm/{utils → packages/scenes/src/utils}/LoadingIndicator.js +0 -0
- /package/dist/esm/{utils → packages/scenes/src/utils}/SafeSerializableSceneObject.js +0 -0
- /package/dist/esm/{utils → packages/scenes/src/utils}/compatibility/setWindowGrafanaSceneContext.js +0 -0
- /package/dist/esm/{utils → packages/scenes/src/utils}/date.js +0 -0
- /package/dist/esm/{utils → packages/scenes/src/utils}/evaluateTimeRange.js +0 -0
- /package/dist/esm/{utils → packages/scenes/src/utils}/explore.js +0 -0
- /package/dist/esm/{utils → packages/scenes/src/utils}/findPanelProfiler.js +0 -0
- /package/dist/esm/{utils → packages/scenes/src/utils}/getCompareSeriesRefId.js +0 -0
- /package/dist/esm/{utils → packages/scenes/src/utils}/getDataSource.js +0 -0
- /package/dist/esm/{utils → packages/scenes/src/utils}/getMessageFromError.js +0 -0
- /package/dist/esm/{utils → packages/scenes/src/utils}/loadResources.js +0 -0
- /package/dist/esm/{utils → packages/scenes/src/utils}/metricTree.js +0 -0
- /package/dist/esm/{utils → packages/scenes/src/utils}/parseUrlParam.js +0 -0
- /package/dist/esm/{utils → packages/scenes/src/utils}/pathId.js +0 -0
- /package/dist/esm/{utils → packages/scenes/src/utils}/utils.js +0 -0
- /package/dist/esm/{utils → packages/scenes/src/utils}/wrapInSafeSerializableSceneObject.js +0 -0
- /package/dist/esm/{utils → packages/scenes/src/utils}/writePerformanceLog.js +0 -0
- /package/dist/esm/{utils → packages/scenes/src/utils}/writeSceneLog.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/DrilldownDependenciesManager.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/VariableDependencyConfig.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/VariableValueRecorder.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/adhoc/AdHocFilterBuilder.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/adhoc/AdHocFilterRenderer.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/adhoc/AdHocFiltersCombobox/DropdownItem.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/adhoc/AdHocFiltersCombobox/MultiValuePill.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/adhoc/AdHocFiltersCombobox/utils.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/adhoc/AdHocFiltersVariable.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/adhoc/AdHocFiltersVariableUrlSyncHandler.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/adhoc/controller/AdHocFiltersVariableController.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/adhoc/getAdHocFiltersFromScopes.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/adhoc/getAdhocOptionSearcher.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/adhoc/patchGetAdhocFilters.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/components/VariableValueControl.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/components/VariableValueInput.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/components/VariableValueSelect.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/components/VariableValueSelectors.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/components/getOptionSearcher.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/constants.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/filter.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/getEnrichedFiltersRequest.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/groupby/DefaultGroupByCustomIndicatorContainer.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/groupby/GroupByValueContainer.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/groupby/GroupByVariableUrlSyncHandler.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/groupby/findActiveGroupByVariablesByUid.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/interpolation/ScopedVarsVariable.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/interpolation/defaults.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/interpolation/fieldAccessorCache.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/interpolation/formatRegistry.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/interpolation/sceneInterpolator.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/lookupVariable.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/macros/AllVariablesMacro.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/macros/contextMacros.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/macros/dataMacros.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/macros/index.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/macros/templateProxies.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/macros/timeMacros.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/macros/types.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/macros/urlMacros.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/sets/SceneVariableSet.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/types.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/utils.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/variants/ConstantVariable.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/variants/CustomVariable.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/variants/DataSourceVariable.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/variants/IntervalVariable.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/variants/LocalValueVariable.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/variants/MultiValueVariable.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/variants/ScopesVariable.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/variants/SwitchVariable.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/variants/TestVariable.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/variants/TextBoxVariable.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/variants/guards.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/variants/query/QueryVariable.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/variants/query/createQueryVariableRunner.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/variants/query/guards.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/variants/query/toMetricFindValues.js +0 -0
- /package/dist/esm/{variables → packages/scenes/src/variables}/variants/query/utils.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../../../../../../src/variables/constants.ts"],"sourcesContent":["export const ALL_VARIABLE_TEXT = 'All';\nexport const ALL_VARIABLE_VALUE = '$__all';\nexport const NONE_VARIABLE_TEXT = 'None';\nexport const NONE_VARIABLE_VALUE = '';\nexport const AUTO_VARIABLE_TEXT = 'Auto';\nexport const AUTO_VARIABLE_VALUE = '$__auto';\n\n// Grafana core source: https://github.com/grafana/grafana/blob/main/public/app/features/variables/utils.ts#L23\n/*\n * This regex matches 3 types of variable reference with an optional format specifier\n * \\$(\\w+) $var1\n * \\[\\[(\\w+?)(?::(\\w+))?\\]\\] [[var2]] or [[var2:fmt2]]\n * \\${(\\w+)(?::(\\w+))?} ${var3} or ${var3:fmt3}\n */\nexport const VARIABLE_REGEX = /\\$(\\w+)|\\[\\[(\\w+?)(?::(\\w+))?\\]\\]|\\${(\\w+)(?:\\.([^:^\\}]+))?(?::([^\\}]+))?}/g;\nexport const SEARCH_FILTER_VARIABLE = '__searchFilter';\nexport const SCOPES_VARIABLE_NAME = '__scopes';\n"],"names":[],"mappings":"AAAO,MAAM,iBAAoB,GAAA;AAC1B,MAAM,kBAAqB,GAAA;AAG3B,MAAM,kBAAqB,GAAA;AAC3B,MAAM,mBAAsB,GAAA;AAS5B,MAAM,cAAiB,GAAA;AACvB,MAAM,sBAAyB,GAAA;AAC/B,MAAM,oBAAuB,GAAA;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter.js","sources":["../../../../../../src/variables/filter.ts"],"sourcesContent":["import { SelectableValue } from '@grafana/data';\nimport uFuzzy from '@leeoniya/ufuzzy';\nimport { VariableValueOption } from './types';\n\n// https://catonmat.net/my-favorite-regex :)\nconst REGEXP_NON_ASCII = /[^ -~]/m;\n// https://www.asciitable.com/\n// matches only these: `~!@#$%^&*()_+-=[]\\{}|;':\",./<>?\nconst REGEXP_ONLY_SYMBOLS = /^[\\x21-\\x2F\\x3A-\\x40\\x5B-\\x60\\x7B-\\x7E]+$/m;\n// limit max terms in needle that qualify for re-ordering\nconst outOfOrderLimit = 5;\n// beyond 25 chars fall back to substring search\nconst maxNeedleLength = 25;\n// beyond 5 terms fall back to substring match\nconst maxFuzzyTerms = 5;\n// when number of matches <= 1e4, do ranking + sorting by quality\nconst rankThreshold = 1e4;\n\n// typo tolerance mode\nconst uf = new uFuzzy({ intraMode: 1 });\n\nexport function fuzzyFind<T extends SelectableValue | VariableValueOption>(\n options: T[],\n haystack: string[],\n needle: string\n) {\n let matches: T[] = [];\n\n if (needle === '') {\n matches = options;\n }\n // fallback to substring matches to avoid badness\n else if (\n // contains non-ascii\n REGEXP_NON_ASCII.test(needle) ||\n // is only ascii symbols (operators)\n REGEXP_ONLY_SYMBOLS.test(needle) ||\n // too long (often copy-paste from somewhere)\n needle.length > maxNeedleLength ||\n uf.split(needle).length > maxFuzzyTerms\n ) {\n for (let i = 0; i < haystack.length; i++) {\n let item = haystack[i];\n\n if (item.includes(needle)) {\n matches.push(options[i]);\n }\n }\n }\n // fuzzy search\n else {\n const [idxs, info, order] = uf.search(haystack, needle, outOfOrderLimit, rankThreshold);\n\n if (idxs?.length) {\n if (info && order) {\n matches = order.map((idx) => options[info.idx[idx]]);\n } else {\n matches = idxs.map((idx) => options[idx]);\n }\n }\n }\n\n return matches;\n}\n"],"names":[],"mappings":";;AAKA,MAAM,gBAAmB,GAAA,SAAA;AAGzB,MAAM,mBAAsB,GAAA,4CAAA;AAE5B,MAAM,eAAkB,GAAA,CAAA;AAExB,MAAM,eAAkB,GAAA,EAAA;AAExB,MAAM,aAAgB,GAAA,CAAA;AAEtB,MAAM,aAAgB,GAAA,GAAA;AAGtB,MAAM,KAAK,IAAI,MAAA,CAAO,EAAE,SAAA,EAAW,GAAG,CAAA;AAEtB,SAAA,SAAA,CACd,OACA,EAAA,QAAA,EACA,MACA,EAAA;AACA,EAAA,IAAI,UAAe,EAAC;AAEpB,EAAA,IAAI,WAAW,EAAI,EAAA;AACjB,IAAU,OAAA,GAAA,OAAA;AAAA,GACZ,MAAA;AAAA;AAAA,IAIE,gBAAA,CAAiB,KAAK,MAAM,CAAA;AAAA,IAE5B,mBAAA,CAAoB,KAAK,MAAM,CAAA;AAAA,IAE/B,OAAO,MAAS,GAAA,eAAA,IAChB,GAAG,KAAM,CAAA,MAAM,EAAE,MAAS,GAAA;AAAA,IAC1B;AACA,IAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,QAAA,CAAS,QAAQ,CAAK,EAAA,EAAA;AACxC,MAAI,IAAA,IAAA,GAAO,SAAS,CAAC,CAAA;AAErB,MAAI,IAAA,IAAA,CAAK,QAAS,CAAA,MAAM,CAAG,EAAA;AACzB,QAAQ,OAAA,CAAA,IAAA,CAAK,OAAQ,CAAA,CAAC,CAAC,CAAA;AAAA;AACzB;AACF,GAGG,MAAA;AACH,IAAM,MAAA,CAAC,IAAM,EAAA,IAAA,EAAM,KAAK,CAAA,GAAI,GAAG,MAAO,CAAA,QAAA,EAAU,MAAQ,EAAA,eAAA,EAAiB,aAAa,CAAA;AAEtF,IAAA,IAAI,6BAAM,MAAQ,EAAA;AAChB,MAAA,IAAI,QAAQ,KAAO,EAAA;AACjB,QAAU,OAAA,GAAA,KAAA,CAAM,IAAI,CAAC,GAAA,KAAQ,QAAQ,IAAK,CAAA,GAAA,CAAI,GAAG,CAAC,CAAC,CAAA;AAAA,OAC9C,MAAA;AACL,QAAA,OAAA,GAAU,KAAK,GAAI,CAAA,CAAC,GAAQ,KAAA,OAAA,CAAQ,GAAG,CAAC,CAAA;AAAA;AAC1C;AACF;AAGF,EAAO,OAAA,OAAA;AACT;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getEnrichedFiltersRequest.js","sources":["../../../../../../src/variables/getEnrichedFiltersRequest.ts"],"sourcesContent":["import { DataSourceGetTagKeysOptions, DataSourceGetTagValuesOptions } from '@grafana/data';\nimport { isFiltersRequestEnricher, SceneObject } from '../core/types';\n\nexport function getEnrichedFiltersRequest(\n sourceRunner: SceneObject\n): Partial<DataSourceGetTagKeysOptions | DataSourceGetTagValuesOptions> | null {\n const root = sourceRunner.getRoot();\n\n if (isFiltersRequestEnricher(root)) {\n return root.enrichFiltersRequest(sourceRunner);\n }\n\n return null;\n}\n"],"names":[],"mappings":";;AAGO,SAAS,0BACd,YAC6E,EAAA;AAC7E,EAAM,MAAA,IAAA,GAAO,aAAa,OAAQ,EAAA;AAElC,EAAI,IAAA,wBAAA,CAAyB,IAAI,CAAG,EAAA;AAClC,IAAO,OAAA,IAAA,CAAK,qBAAqB,YAAY,CAAA;AAAA;AAG/C,EAAO,OAAA,IAAA;AACT;;;;"}
|
package/dist/esm/packages/scenes/src/variables/groupby/DefaultGroupByCustomIndicatorContainer.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DefaultGroupByCustomIndicatorContainer.js","sources":["../../../../../../../src/variables/groupby/DefaultGroupByCustomIndicatorContainer.tsx"],"sourcesContent":["import { t } from '@grafana/i18n';\nimport React from 'react';\nimport { Icon, IconButton, Tooltip, getInputStyles, useTheme2 } from '@grafana/ui';\nimport { GroupByVariable } from './GroupByVariable';\nimport { isArray } from 'lodash';\nimport { css, cx } from '@emotion/css';\nimport { GrafanaTheme2 } from '@grafana/data';\n\ntype DefaultGroupByCustomIndicatorProps = {\n model: GroupByVariable;\n};\n\nexport function DefaultGroupByCustomIndicatorContainer(props: DefaultGroupByCustomIndicatorProps) {\n const { model } = props;\n const theme = useTheme2();\n const styles = getStyles(theme);\n const inputStyles = getInputStyles({ theme, invalid: false });\n const value = isArray(model.state.value) ? model.state.value : model.state.value ? [model.state.value] : [];\n\n let buttons: React.ReactNode[] = [];\n\n if (value && value.length) {\n buttons.push(\n <IconButton\n aria-label={t('grafana-scenes.variables.default-group-by-custom-indicator-container.aria-label-clear', 'clear')}\n key=\"clear\"\n name=\"times\"\n size=\"md\"\n className={styles.clearIcon}\n onClick={(e) => {\n model.changeValueTo([], undefined, true);\n if (model.checkIfRestorable([])) {\n model.setState({ restorable: true });\n }\n }}\n />\n );\n }\n\n if (model.state.restorable) {\n buttons.push(\n <IconButton\n onClick={(e) => {\n props.model.restoreDefaultValues();\n }}\n onKeyDownCapture={(e) => {\n if (e.key === 'Enter') {\n props.model.restoreDefaultValues();\n }\n }}\n key=\"restore\"\n name=\"history\"\n size=\"md\"\n className={styles.clearIcon}\n tooltip={t(\n 'grafana-scenes.variables.default-group-by-custom-indicator-container.tooltip-restore-groupby-set-by-this-dashboard',\n 'Restore groupby set by this dashboard.'\n )}\n />\n );\n }\n\n if (!model.state.restorable) {\n buttons.push(\n <Tooltip\n key=\"tooltip\"\n content={t(\n 'grafana-scenes.variables.default-group-by-custom-indicator-container.tooltip',\n 'Applied by default in this dashboard. If edited, it carries over to other dashboards.'\n )}\n placement=\"bottom\"\n >\n <Icon name=\"info-circle\" size=\"md\" />\n </Tooltip>\n );\n }\n\n return (\n <div\n onMouseDown={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n className={cx(\n inputStyles.suffix,\n css({\n position: 'relative',\n })\n )}\n >\n {buttons}\n </div>\n );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n clearIcon: css({\n color: theme.colors.action.disabledText,\n cursor: 'pointer',\n '&:hover:before': {\n backgroundColor: 'transparent',\n },\n '&:hover': {\n color: theme.colors.text.primary,\n },\n }),\n});\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GroupByValueContainer.js","sources":["../../../../../../../src/variables/groupby/GroupByValueContainer.tsx"],"sourcesContent":["import React from 'react';\nimport { getSelectStyles, useTheme2 } from '@grafana/ui';\n// @ts-expect-error (temporary till we update grafana/data)\nimport { DrilldownsApplicability, GrafanaTheme2 } from '@grafana/data';\nimport { cx } from '@emotion/css';\nimport { getNonApplicablePillStyles } from '../utils';\n\nexport interface GroupByContainerProps {\n innerProps: JSX.IntrinsicElements['div'];\n keysApplicability?: DrilldownsApplicability[];\n}\n\nexport const GroupByValueContainer = ({\n keysApplicability,\n children,\n}: React.PropsWithChildren<GroupByContainerProps>) => {\n const theme = useTheme2();\n const styles = getSelectStyles(theme);\n const { disabledPill, strikethrough } = getNonApplicablePillStyles(theme);\n\n // Get the value from the first child (the label div)\n const firstChild = React.Children.toArray(children)[0];\n let isApplicable = true;\n\n if (React.isValidElement(firstChild) && firstChild.props?.data?.value) {\n const value = firstChild.props.data.value;\n const applicability = keysApplicability?.find((item) => item.key === value);\n\n if (applicability && !applicability.applicable) {\n isApplicable = false;\n }\n }\n\n return (\n <div className={cx(styles.multiValueContainer, !isApplicable && cx(disabledPill, strikethrough))}>{children}</div>\n );\n};\n"],"names":[],"mappings":";;;;;AAYO,MAAM,wBAAwB,CAAC;AAAA,EACpC,iBAAA;AAAA,EACA;AACF,CAAsD,KAAA;AAftD,EAAA,IAAA,EAAA,EAAA,EAAA;AAgBE,EAAA,MAAM,QAAQ,SAAU,EAAA;AACxB,EAAM,MAAA,MAAA,GAAS,gBAAgB,KAAK,CAAA;AACpC,EAAA,MAAM,EAAE,YAAA,EAAc,aAAc,EAAA,GAAI,2BAA2B,KAAK,CAAA;AAGxE,EAAA,MAAM,aAAa,KAAM,CAAA,QAAA,CAAS,OAAQ,CAAA,QAAQ,EAAE,CAAC,CAAA;AACrD,EAAA,IAAI,YAAe,GAAA,IAAA;AAEnB,EAAI,IAAA,KAAA,CAAM,eAAe,UAAU,CAAA,KAAA,CAAK,sBAAW,KAAX,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAkB,IAAlB,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAwB,KAAO,CAAA,EAAA;AACrE,IAAM,MAAA,KAAA,GAAQ,UAAW,CAAA,KAAA,CAAM,IAAK,CAAA,KAAA;AACpC,IAAA,MAAM,gBAAgB,iBAAmB,IAAA,IAAA,GAAA,MAAA,GAAA,iBAAA,CAAA,IAAA,CAAK,CAAC,IAAA,KAAS,KAAK,GAAQ,KAAA,KAAA,CAAA;AAErE,IAAI,IAAA,aAAA,IAAiB,CAAC,aAAA,CAAc,UAAY,EAAA;AAC9C,MAAe,YAAA,GAAA,KAAA;AAAA;AACjB;AAGF,EAAA,uBACG,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAI,SAAW,EAAA,EAAA,CAAG,MAAO,CAAA,mBAAA,EAAqB,CAAC,YAAA,IAAgB,EAAG,CAAA,YAAA,EAAc,aAAa,CAAC,KAAI,QAAS,CAAA;AAEhH;;;;"}
|
|
@@ -18,6 +18,7 @@ import { DefaultGroupByCustomIndicatorContainer } from './DefaultGroupByCustomIn
|
|
|
18
18
|
import { GroupByValueContainer } from './GroupByValueContainer.js';
|
|
19
19
|
import { getInteractionTracker } from '../../core/sceneGraph/getInteractionTracker.js';
|
|
20
20
|
import { GROUPBY_DIMENSIONS_INTERACTION } from '../../performance/interactionConstants.js';
|
|
21
|
+
import { c as components } from '../../../../../node_modules/react-select/dist/index-641ee5b8.esm.js';
|
|
21
22
|
|
|
22
23
|
class GroupByVariable extends MultiValueVariable {
|
|
23
24
|
constructor(initialState) {
|
|
@@ -308,6 +309,7 @@ function GroupByVariableRenderer({ model }) {
|
|
|
308
309
|
isLoading: isFetchingOptions,
|
|
309
310
|
components: {
|
|
310
311
|
Option: OptionWithCheckbox,
|
|
312
|
+
Menu: WideMenu,
|
|
311
313
|
...hasDefaultValue ? {
|
|
312
314
|
IndicatorsContainer: () => /* @__PURE__ */ React.createElement(DefaultGroupByCustomIndicatorContainer, { model })
|
|
313
315
|
} : {},
|
|
@@ -331,6 +333,7 @@ function GroupByVariableRenderer({ model }) {
|
|
|
331
333
|
model.changeValueTo([], void 0, true);
|
|
332
334
|
}
|
|
333
335
|
setUncommittedValue(newValue);
|
|
336
|
+
setInputValue("");
|
|
334
337
|
},
|
|
335
338
|
onOpenMenu: async () => {
|
|
336
339
|
const profiler = getInteractionTracker(model);
|
|
@@ -374,6 +377,7 @@ function GroupByVariableRenderer({ model }) {
|
|
|
374
377
|
hideSelectedOptions: false,
|
|
375
378
|
noValueOnClear: true,
|
|
376
379
|
isLoading: isFetchingOptions,
|
|
380
|
+
components: { Menu: WideMenu },
|
|
377
381
|
onInputChange,
|
|
378
382
|
onChange: (newValue, action) => {
|
|
379
383
|
if (action.action === "clear") {
|
|
@@ -404,6 +408,9 @@ function GroupByVariableRenderer({ model }) {
|
|
|
404
408
|
);
|
|
405
409
|
}
|
|
406
410
|
const filterNoOp = () => true;
|
|
411
|
+
function WideMenu(props) {
|
|
412
|
+
return /* @__PURE__ */ React.createElement(components.Menu, { ...props }, /* @__PURE__ */ React.createElement("div", { style: { minWidth: "220px" } }, props.children));
|
|
413
|
+
}
|
|
407
414
|
function toSelectableValue(input) {
|
|
408
415
|
const { label, value, group } = input;
|
|
409
416
|
const result = {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GroupByVariable.js","sources":["../../../../../../../src/variables/groupby/GroupByVariable.tsx"],"sourcesContent":["import { t } from '@grafana/i18n';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport {\n AdHocVariableFilter,\n DataSourceApi,\n // @ts-expect-error (temporary till we update grafana/data)\n DrilldownsApplicability,\n GetTagResponse,\n MetricFindValue,\n SelectableValue,\n} from '@grafana/data';\nimport { allActiveGroupByVariables } from './findActiveGroupByVariablesByUid';\nimport { DataSourceRef, VariableType } from '@grafana/schema';\nimport { SceneComponentProps, ControlsLayout, SceneObjectUrlSyncHandler, SceneDataQuery } from '../../core/types';\nimport { sceneGraph } from '../../core/sceneGraph';\nimport {\n SceneVariableValueChangedEvent,\n ValidateAndUpdateResult,\n VariableValue,\n VariableValueOption,\n VariableValueSingle,\n} from '../types';\nimport { MultiValueVariable, MultiValueVariableState, VariableGetOptionsArgs } from '../variants/MultiValueVariable';\nimport { from, lastValueFrom, map, mergeMap, Observable, of, take, tap } from 'rxjs';\nimport { getDataSource } from '../../utils/getDataSource';\nimport { InputActionMeta, MultiSelect, Select } from '@grafana/ui';\nimport { components, GroupBase, MenuProps } from 'react-select';\nimport { isArray, isEqual } from 'lodash';\nimport { dataFromResponse, getQueriesForVariables, handleOptionGroups, responseHasError } from '../utils';\nimport { OptionWithCheckbox } from '../components/VariableValueSelect';\nimport { GroupByVariableUrlSyncHandler } from './GroupByVariableUrlSyncHandler';\nimport { getOptionSearcher } from '../components/getOptionSearcher';\nimport { getEnrichedFiltersRequest } from '../getEnrichedFiltersRequest';\nimport { wrapInSafeSerializableSceneObject } from '../../utils/wrapInSafeSerializableSceneObject';\nimport { DefaultGroupByCustomIndicatorContainer } from './DefaultGroupByCustomIndicatorContainer';\nimport { GroupByValueContainer, GroupByContainerProps } from './GroupByValueContainer';\nimport { getInteractionTracker } from '../../core/sceneGraph/getInteractionTracker';\nimport { GROUPBY_DIMENSIONS_INTERACTION } from '../../performance/interactionConstants';\n\nexport interface GroupByVariableState extends MultiValueVariableState {\n /** Defaults to \"Group\" */\n name: string;\n /** The visible keys to group on */\n // TODO review this type and name (naming is hard)\n defaultOptions?: MetricFindValue[];\n /** Base filters to always apply when looking up keys */\n baseFilters?: AdHocVariableFilter[];\n /** Datasource to use for getTagKeys and also controls which scene queries the group by should apply to */\n datasource: DataSourceRef | null;\n /** Default value set for this groupBy. When this field is set, changing value will allow the user to restore back to this default value */\n defaultValue?: { text: VariableValue; value: VariableValue };\n /** Needed for url sync when passing flag to another dashboard */\n restorable?: boolean;\n /** Controls if the group by can be changed */\n readOnly?: boolean;\n /**\n * @experimental\n * Controls the layout and design of the label.\n * Vertical layout does not yet support operator selector.\n */\n layout?: ControlsLayout;\n /**\n * Defaults to same-datasource which means group by will automatically be applied to all queries with the same data source as this GroupBySet.\n * In manual mode no queries are re-run on changes, and you have to manually apply the filter to whatever queries you want.\n */\n applyMode?: 'auto' | 'manual';\n /**\n * Filter out the keys that do not match the regex.\n */\n tagKeyRegexFilter?: RegExp;\n /**\n * Extension hook for customizing the key lookup.\n * Return replace: true if you want to override the default lookup\n * Return replace: false if you want to combine the results with the default lookup\n */\n getTagKeysProvider?: getTagKeysProvider;\n /**\n * Holds the applicability for each of the selected keys\n */\n keysApplicability?: DrilldownsApplicability[];\n /**\n * state for checking whether drilldown applicability is enabled\n */\n applicabilityEnabled?: boolean;\n}\n\nexport type getTagKeysProvider = (\n set: GroupByVariable,\n currentKey: string | null\n) => Promise<{ replace?: boolean; values: MetricFindValue[] | GetTagResponse }>;\n\nexport class GroupByVariable extends MultiValueVariable<GroupByVariableState> {\n static Component = GroupByVariableRenderer;\n isLazy = true;\n\n protected _urlSync: SceneObjectUrlSyncHandler = new GroupByVariableUrlSyncHandler(this);\n\n public validateAndUpdate(): Observable<ValidateAndUpdateResult> {\n return this.getValueOptions({}).pipe(\n map((options) => {\n this._updateValueGivenNewOptions(options);\n return {};\n })\n );\n }\n\n private _updateValueGivenNewOptions(options: VariableValueOption[]) {\n const { value: currentValue, text: currentText } = this.state;\n\n const stateUpdate: Partial<MultiValueVariableState> = {\n options,\n loading: false,\n value: currentValue ?? [],\n text: currentText ?? [],\n };\n\n this.setState(stateUpdate);\n }\n\n public getValueOptions(args: VariableGetOptionsArgs): Observable<VariableValueOption[]> {\n // When default dimensions are provided, return the static list\n if (this.state.defaultOptions) {\n return of(\n this.state.defaultOptions.map((o) => ({\n label: o.text,\n value: String(o.value),\n group: o.group,\n }))\n );\n }\n\n this.setState({ loading: true, error: null });\n\n return from(\n getDataSource(this.state.datasource, {\n __sceneObject: wrapInSafeSerializableSceneObject(this),\n })\n ).pipe(\n mergeMap((ds) => {\n return from(this._getKeys(ds)).pipe(\n tap((response) => {\n if (responseHasError(response)) {\n this.setState({ error: response.error.message });\n }\n }),\n map((response) => dataFromResponse(response)),\n take(1),\n mergeMap((data) => {\n const a: VariableValueOption[] = data.map((i) => {\n return {\n label: i.text,\n value: i.value ? String(i.value) : i.text,\n group: i.group,\n };\n });\n return of(a);\n })\n );\n })\n );\n }\n\n public constructor(initialState: Partial<GroupByVariableState>) {\n super({\n isMulti: true,\n name: '',\n value: [],\n text: [],\n options: [],\n datasource: null,\n baseFilters: [],\n applyMode: 'auto',\n layout: 'horizontal',\n type: 'groupby' as VariableType,\n ...initialState,\n noValueOnClear: true,\n });\n\n if (this.state.defaultValue) {\n this.changeValueTo(this.state.defaultValue.value, this.state.defaultValue.text, false);\n }\n\n if (this.state.applyMode === 'auto') {\n this.addActivationHandler(() => {\n allActiveGroupByVariables.add(this);\n\n return () => allActiveGroupByVariables.delete(this);\n });\n }\n\n this.addActivationHandler(this._activationHandler);\n }\n\n private _activationHandler = () => {\n this._verifyApplicability();\n\n if (this.state.defaultValue) {\n if (this.checkIfRestorable(this.state.value)) {\n this.setState({ restorable: true });\n }\n }\n\n return () => {\n if (this.state.defaultValue) {\n this.restoreDefaultValues();\n }\n\n this.setState({ applicabilityEnabled: false });\n };\n };\n\n public getApplicableKeys(): VariableValue {\n const { value, keysApplicability } = this.state;\n\n const valueArray = isArray(value) ? value : value ? [value] : [];\n\n if (!keysApplicability || keysApplicability.length === 0) {\n return valueArray;\n }\n\n const applicableValues = valueArray.filter((val) => {\n const applicability = keysApplicability.find((item) => item.key === val);\n return !applicability || applicability.applicable !== false;\n });\n\n return applicableValues;\n }\n\n public async getGroupByApplicabilityForQueries(\n value: VariableValue,\n queries: SceneDataQuery[]\n ): Promise<DrilldownsApplicability[] | undefined> {\n const ds = await getDataSource(this.state.datasource, {\n __sceneObject: wrapInSafeSerializableSceneObject(this),\n });\n\n // @ts-expect-error (temporary till we update grafana/data)\n if (!ds.getDrilldownsApplicability) {\n return;\n }\n\n const timeRange = sceneGraph.getTimeRange(this).state.value;\n\n // @ts-expect-error (temporary till we update grafana/data)\n return await ds.getDrilldownsApplicability({\n groupByKeys: Array.isArray(value) ? value.map((v) => String(v)) : value ? [String(value)] : [],\n queries,\n timeRange,\n scopes: sceneGraph.getScopes(this),\n ...getEnrichedFiltersRequest(this),\n });\n }\n\n public async _verifyApplicability() {\n const queries = getQueriesForVariables(this);\n const value = this.state.value;\n\n const response = await this.getGroupByApplicabilityForQueries(value, queries);\n\n if (!response) {\n return;\n }\n\n if (!isEqual(response, this.state.keysApplicability)) {\n this.setState({ keysApplicability: response ?? undefined, applicabilityEnabled: true });\n\n this.publishEvent(new SceneVariableValueChangedEvent(this), true);\n } else {\n this.setState({ applicabilityEnabled: true });\n }\n }\n\n // This method is related to the defaultValue property. We check if the current value\n // is different from the default value. If it is, the groupBy will show a button\n // allowing the user to restore the default values.\n public checkIfRestorable(values: VariableValue) {\n const originalValues = isArray(this.state.defaultValue?.value)\n ? this.state.defaultValue?.value\n : this.state.defaultValue?.value\n ? [this.state.defaultValue?.value]\n : [];\n const vals = isArray(values) ? values : [values];\n\n if (vals.length !== originalValues.length) {\n return true;\n }\n\n return !isEqual(vals, originalValues);\n }\n\n public restoreDefaultValues() {\n this.setState({ restorable: false });\n\n if (!this.state.defaultValue) {\n return;\n }\n\n this.changeValueTo(this.state.defaultValue.value, this.state.defaultValue.text, true);\n }\n\n /**\n * Get possible keys given current filters. Do not call from plugins directly\n */\n public _getKeys = async (ds: DataSourceApi) => {\n // TODO: provide current dimensions?\n const override = await this.state.getTagKeysProvider?.(this, null);\n\n if (override && override.replace) {\n return override.values;\n }\n\n if (this.state.defaultOptions) {\n return this.state.defaultOptions.concat(dataFromResponse(override?.values ?? []));\n }\n\n if (!ds.getTagKeys) {\n return [];\n }\n\n const queries = getQueriesForVariables(this);\n\n const otherFilters = this.state.baseFilters || [];\n const timeRange = sceneGraph.getTimeRange(this).state.value;\n const response = await ds.getTagKeys({\n filters: otherFilters,\n queries,\n timeRange,\n scopes: sceneGraph.getScopes(this),\n ...getEnrichedFiltersRequest(this),\n });\n if (responseHasError(response)) {\n this.setState({ error: response.error.message });\n }\n\n let keys = dataFromResponse(response);\n if (override) {\n keys = keys.concat(dataFromResponse(override.values));\n }\n\n const tagKeyRegexFilter = this.state.tagKeyRegexFilter;\n if (tagKeyRegexFilter) {\n keys = keys.filter((f) => f.text.match(tagKeyRegexFilter));\n }\n\n return keys;\n };\n\n /**\n * Allows clearing the value of the variable to an empty value. Overrides default behavior of a MultiValueVariable\n */\n public getDefaultMultiState(options: VariableValueOption[]) {\n return { value: [], text: [] };\n }\n}\n\nexport function GroupByVariableRenderer({ model }: SceneComponentProps<GroupByVariable>) {\n const {\n value,\n text,\n key,\n isMulti = true,\n maxVisibleValues,\n noValueOnClear,\n options,\n includeAll,\n allowCustomValue = true,\n defaultValue,\n keysApplicability,\n } = model.useState();\n\n const values = useMemo<Array<SelectableValue<VariableValueSingle>>>(() => {\n const arrayValue = isArray(value) ? value : [value];\n const arrayText = isArray(text) ? text : [text];\n\n return arrayValue.map((value, idx) => ({\n value,\n label: String(arrayText[idx] ?? value),\n }));\n }, [value, text]);\n\n const [isFetchingOptions, setIsFetchingOptions] = useState(false);\n const [isOptionsOpen, setIsOptionsOpen] = useState(false);\n const [inputValue, setInputValue] = useState('');\n\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(values);\n\n const optionSearcher = useMemo(() => getOptionSearcher(options, includeAll), [options, includeAll]);\n\n const hasDefaultValue = defaultValue !== undefined;\n\n // Detect value changes outside\n useEffect(() => {\n setUncommittedValue(values);\n }, [values]);\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 filteredOptions = useMemo(\n () => handleOptionGroups(optionSearcher(inputValue).map(toSelectableValue)),\n [optionSearcher, inputValue]\n );\n\n return isMulti ? (\n <MultiSelect<VariableValueSingle>\n aria-label={t(\n 'grafana-scenes.variables.group-by-variable-renderer.aria-label-group-by-selector',\n 'Group by selector'\n )}\n data-testid={`GroupBySelect-${key}`}\n id={key}\n placeholder={t(\n 'grafana-scenes.variables.group-by-variable-renderer.placeholder-group-by-label',\n 'Group by label'\n )}\n width=\"auto\"\n allowCustomValue={allowCustomValue}\n inputValue={inputValue}\n value={uncommittedValue}\n noMultiValueWrap={true}\n maxVisibleValues={maxVisibleValues ?? 5}\n tabSelectsValue={false}\n virtualized\n options={filteredOptions}\n filterOption={filterNoOp}\n closeMenuOnSelect={false}\n isOpen={isOptionsOpen}\n isClearable={true}\n hideSelectedOptions={false}\n isLoading={isFetchingOptions}\n components={{\n Option: OptionWithCheckbox,\n Menu: WideMenu,\n ...(hasDefaultValue\n ? {\n IndicatorsContainer: () => <DefaultGroupByCustomIndicatorContainer model={model} />,\n }\n : {}),\n MultiValueContainer: ({ innerProps, children }: React.PropsWithChildren<GroupByContainerProps>) => (\n <GroupByValueContainer innerProps={innerProps} keysApplicability={keysApplicability}>\n {children}\n </GroupByValueContainer>\n ),\n }}\n onInputChange={onInputChange}\n onBlur={() => {\n model.changeValueTo(\n uncommittedValue.map((x) => x.value!),\n uncommittedValue.map((x) => x.label!),\n true\n );\n\n const restorable = model.checkIfRestorable(uncommittedValue.map((v) => v.value!));\n\n if (restorable !== model.state.restorable) {\n model.setState({ restorable: restorable });\n }\n\n model._verifyApplicability();\n }}\n onChange={(newValue, action) => {\n if (action.action === 'clear' && noValueOnClear) {\n model.changeValueTo([], undefined, true);\n }\n\n setUncommittedValue(newValue);\n setInputValue('');\n }}\n onOpenMenu={async () => {\n const profiler = getInteractionTracker(model);\n profiler?.startInteraction(GROUPBY_DIMENSIONS_INTERACTION);\n\n setIsFetchingOptions(true);\n await lastValueFrom(model.validateAndUpdate());\n setIsFetchingOptions(false);\n setIsOptionsOpen(true);\n\n profiler?.stopInteraction();\n }}\n onCloseMenu={() => {\n setIsOptionsOpen(false);\n }}\n />\n ) : (\n <Select\n aria-label={t(\n 'grafana-scenes.variables.group-by-variable-renderer.aria-label-group-by-selector',\n 'Group by selector'\n )}\n data-testid={`GroupBySelect-${key}`}\n id={key}\n placeholder={t(\n 'grafana-scenes.variables.group-by-variable-renderer.placeholder-group-by-label',\n 'Group by label'\n )}\n width=\"auto\"\n inputValue={inputValue}\n value={uncommittedValue && uncommittedValue.length > 0 ? uncommittedValue : null}\n allowCustomValue={allowCustomValue}\n noMultiValueWrap={true}\n maxVisibleValues={maxVisibleValues ?? 5}\n tabSelectsValue={false}\n virtualized\n options={filteredOptions}\n filterOption={filterNoOp}\n closeMenuOnSelect={true}\n isOpen={isOptionsOpen}\n isClearable={true}\n hideSelectedOptions={false}\n noValueOnClear={true}\n isLoading={isFetchingOptions}\n components={{ Menu: WideMenu }}\n onInputChange={onInputChange}\n onChange={(newValue, action) => {\n if (action.action === 'clear') {\n setUncommittedValue([]);\n if (noValueOnClear) {\n model.changeValueTo([]);\n }\n return;\n }\n if (newValue?.value) {\n setUncommittedValue([newValue]);\n model.changeValueTo([newValue.value], newValue.label ? [newValue.label] : undefined);\n }\n }}\n onOpenMenu={async () => {\n const profiler = getInteractionTracker(model);\n profiler?.startInteraction(GROUPBY_DIMENSIONS_INTERACTION);\n\n setIsFetchingOptions(true);\n await lastValueFrom(model.validateAndUpdate());\n setIsFetchingOptions(false);\n setIsOptionsOpen(true);\n\n profiler?.stopInteraction();\n }}\n onCloseMenu={() => {\n setIsOptionsOpen(false);\n }}\n />\n );\n}\n\nconst filterNoOp = () => true;\n\n// custom minWidth menu component to fit custom value message\nfunction WideMenu<Option, IsMulti extends boolean, Group extends GroupBase<Option>>(\n props: MenuProps<Option, IsMulti, Group>\n) {\n return (\n <components.Menu {...props}>\n <div style={{ minWidth: '220px' }}>{props.children}</div>\n </components.Menu>\n );\n}\n\nfunction toSelectableValue(input: VariableValueOption): SelectableValue<VariableValueSingle> {\n const { label, value, group } = input;\n const result: SelectableValue<VariableValueSingle> = {\n label,\n value,\n };\n\n if (group) {\n result.group = group;\n }\n\n return result;\n}\n"],"names":["value"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GroupByVariableUrlSyncHandler.js","sources":["../../../../../../../src/variables/groupby/GroupByVariableUrlSyncHandler.ts"],"sourcesContent":["import { SceneObjectUrlSyncHandler, SceneObjectUrlValues } from '../../core/types';\nimport { GroupByVariable } from './GroupByVariable';\nimport { toUrlCommaDelimitedString, unescapeUrlDelimiters } from '../utils';\nimport { VariableValue } from '../types';\n\nexport class GroupByVariableUrlSyncHandler implements SceneObjectUrlSyncHandler {\n public constructor(private _sceneObject: GroupByVariable) {}\n\n protected _nextChangeShouldAddHistoryStep = false;\n\n private getRestorableKey(): string {\n return `restorable-var-${this._sceneObject.state.name}`;\n }\n\n private getKey(): string {\n return `var-${this._sceneObject.state.name}`;\n }\n\n public getKeys(): string[] {\n if (this._sceneObject.state.skipUrlSync) {\n return [];\n }\n\n return [this.getKey(), this.getRestorableKey()];\n }\n\n public getUrlState(): SceneObjectUrlValues {\n if (this._sceneObject.state.skipUrlSync) {\n return {};\n }\n\n return {\n [this.getKey()]:\n this._sceneObject.state.defaultValue && !this._sceneObject.state.restorable\n ? ['']\n : toUrlValues(this._sceneObject.state.value, this._sceneObject.state.text),\n [this.getRestorableKey()]: this._sceneObject.state.defaultValue\n ? this._sceneObject.state.restorable\n ? 'true'\n : 'false'\n : null,\n };\n }\n\n public updateFromUrl(values: SceneObjectUrlValues): void {\n let urlValue = values[this.getKey()];\n let restorableValue = values[this.getRestorableKey()];\n\n if (urlValue != null) {\n /**\n * Initial URL Sync happens before scene objects are activated.\n * We need to skip validation in this case to make sure values set via URL are maintained.\n */\n if (!this._sceneObject.isActive) {\n this._sceneObject.skipNextValidation = true;\n }\n\n const { values, texts } = fromUrlValues(urlValue);\n\n if (this._sceneObject.state.defaultValue && (restorableValue === 'false' || restorableValue === undefined)) {\n return;\n }\n\n if (restorableValue === 'false') {\n this._sceneObject.changeValueTo([], [], false);\n return;\n }\n\n this._sceneObject.changeValueTo(values, texts);\n }\n }\n\n public performBrowserHistoryAction(callback: () => void) {\n this._nextChangeShouldAddHistoryStep = true;\n callback();\n this._nextChangeShouldAddHistoryStep = false;\n }\n\n public shouldCreateHistoryStep(values: SceneObjectUrlValues): boolean {\n return this._nextChangeShouldAddHistoryStep;\n }\n}\n\nfunction toUrlValues(values: VariableValue, texts: VariableValue): string[] {\n values = Array.isArray(values) ? values : [values];\n texts = Array.isArray(texts) ? texts : [texts];\n\n return values.map((value, idx) => {\n if (value === undefined || value === null) {\n return '';\n }\n\n value = String(value);\n\n let text = texts[idx];\n text = text === undefined || text === null ? value : String(text);\n\n return toUrlCommaDelimitedString(value, text);\n });\n}\n\nfunction fromUrlValues(urlValues: string | string[]): { values: string[]; texts: string[] } {\n urlValues = Array.isArray(urlValues) ? urlValues : [urlValues];\n\n return urlValues.reduce<{ values: string[]; texts: string[] }>(\n (acc, urlValue) => {\n const [value, label] = (urlValue ?? '').split(',');\n\n acc.values.push(unescapeUrlDelimiters(value));\n acc.texts.push(unescapeUrlDelimiters(label ?? value));\n\n return acc;\n },\n {\n values: [],\n texts: [],\n }\n );\n}\n"],"names":["values"],"mappings":";;AAKO,MAAM,6BAAmE,CAAA;AAAA,EACvE,YAAoB,YAA+B,EAAA;AAA/B,IAAA,IAAA,CAAA,YAAA,GAAA,YAAA;AAE3B,IAAA,IAAA,CAAU,+BAAkC,GAAA,KAAA;AAAA;AAFe,EAInD,gBAA2B,GAAA;AACjC,IAAA,OAAO,CAAkB,eAAA,EAAA,IAAA,CAAK,YAAa,CAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AAAA;AACvD,EAEQ,MAAiB,GAAA;AACvB,IAAA,OAAO,CAAO,IAAA,EAAA,IAAA,CAAK,YAAa,CAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AAAA;AAC5C,EAEO,OAAoB,GAAA;AACzB,IAAI,IAAA,IAAA,CAAK,YAAa,CAAA,KAAA,CAAM,WAAa,EAAA;AACvC,MAAA,OAAO,EAAC;AAAA;AAGV,IAAA,OAAO,CAAC,IAAK,CAAA,MAAA,EAAU,EAAA,IAAA,CAAK,kBAAkB,CAAA;AAAA;AAChD,EAEO,WAAoC,GAAA;AACzC,IAAI,IAAA,IAAA,CAAK,YAAa,CAAA,KAAA,CAAM,WAAa,EAAA;AACvC,MAAA,OAAO,EAAC;AAAA;AAGV,IAAO,OAAA;AAAA,MACL,CAAC,IAAK,CAAA,MAAA,EAAQ,GACZ,KAAK,YAAa,CAAA,KAAA,CAAM,YAAgB,IAAA,CAAC,IAAK,CAAA,YAAA,CAAa,MAAM,UAC7D,GAAA,CAAC,EAAE,CAAA,GACH,WAAY,CAAA,IAAA,CAAK,YAAa,CAAA,KAAA,CAAM,KAAO,EAAA,IAAA,CAAK,YAAa,CAAA,KAAA,CAAM,IAAI,CAAA;AAAA,MAC7E,CAAC,IAAA,CAAK,gBAAiB,EAAC,GAAG,IAAK,CAAA,YAAA,CAAa,KAAM,CAAA,YAAA,GAC/C,IAAK,CAAA,YAAA,CAAa,KAAM,CAAA,UAAA,GACtB,SACA,OACF,GAAA;AAAA,KACN;AAAA;AACF,EAEO,cAAc,MAAoC,EAAA;AACvD,IAAA,IAAI,QAAW,GAAA,MAAA,CAAO,IAAK,CAAA,MAAA,EAAQ,CAAA;AACnC,IAAA,IAAI,eAAkB,GAAA,MAAA,CAAO,IAAK,CAAA,gBAAA,EAAkB,CAAA;AAEpD,IAAA,IAAI,YAAY,IAAM,EAAA;AAKpB,MAAI,IAAA,CAAC,IAAK,CAAA,YAAA,CAAa,QAAU,EAAA;AAC/B,QAAA,IAAA,CAAK,aAAa,kBAAqB,GAAA,IAAA;AAAA;AAGzC,MAAA,MAAM,EAAE,MAAAA,EAAAA,OAAAA,EAAQ,KAAM,EAAA,GAAI,cAAc,QAAQ,CAAA;AAEhD,MAAA,IAAI,KAAK,YAAa,CAAA,KAAA,CAAM,iBAAiB,eAAoB,KAAA,OAAA,IAAW,oBAAoB,MAAY,CAAA,EAAA;AAC1G,QAAA;AAAA;AAGF,MAAA,IAAI,oBAAoB,OAAS,EAAA;AAC/B,QAAA,IAAA,CAAK,aAAa,aAAc,CAAA,EAAI,EAAA,IAAI,KAAK,CAAA;AAC7C,QAAA;AAAA;AAGF,MAAK,IAAA,CAAA,YAAA,CAAa,aAAcA,CAAAA,OAAAA,EAAQ,KAAK,CAAA;AAAA;AAC/C;AACF,EAEO,4BAA4B,QAAsB,EAAA;AACvD,IAAA,IAAA,CAAK,+BAAkC,GAAA,IAAA;AACvC,IAAS,QAAA,EAAA;AACT,IAAA,IAAA,CAAK,+BAAkC,GAAA,KAAA;AAAA;AACzC,EAEO,wBAAwB,MAAuC,EAAA;AACpE,IAAA,OAAO,IAAK,CAAA,+BAAA;AAAA;AAEhB;AAEA,SAAS,WAAA,CAAY,QAAuB,KAAgC,EAAA;AAC1E,EAAA,MAAA,GAAS,MAAM,OAAQ,CAAA,MAAM,CAAI,GAAA,MAAA,GAAS,CAAC,MAAM,CAAA;AACjD,EAAA,KAAA,GAAQ,MAAM,OAAQ,CAAA,KAAK,CAAI,GAAA,KAAA,GAAQ,CAAC,KAAK,CAAA;AAE7C,EAAA,OAAO,MAAO,CAAA,GAAA,CAAI,CAAC,KAAA,EAAO,GAAQ,KAAA;AAChC,IAAI,IAAA,KAAA,KAAU,MAAa,IAAA,KAAA,KAAU,IAAM,EAAA;AACzC,MAAO,OAAA,EAAA;AAAA;AAGT,IAAA,KAAA,GAAQ,OAAO,KAAK,CAAA;AAEpB,IAAI,IAAA,IAAA,GAAO,MAAM,GAAG,CAAA;AACpB,IAAA,IAAA,GAAO,SAAS,MAAa,IAAA,IAAA,KAAS,IAAO,GAAA,KAAA,GAAQ,OAAO,IAAI,CAAA;AAEhE,IAAO,OAAA,yBAAA,CAA0B,OAAO,IAAI,CAAA;AAAA,GAC7C,CAAA;AACH;AAEA,SAAS,cAAc,SAAqE,EAAA;AAC1F,EAAA,SAAA,GAAY,MAAM,OAAQ,CAAA,SAAS,CAAI,GAAA,SAAA,GAAY,CAAC,SAAS,CAAA;AAE7D,EAAA,OAAO,SAAU,CAAA,MAAA;AAAA,IACf,CAAC,KAAK,QAAa,KAAA;AACjB,MAAA,MAAM,CAAC,KAAO,EAAA,KAAK,KAAK,QAAY,IAAA,IAAA,GAAA,QAAA,GAAA,EAAA,EAAI,MAAM,GAAG,CAAA;AAEjD,MAAA,GAAA,CAAI,MAAO,CAAA,IAAA,CAAK,qBAAsB,CAAA,KAAK,CAAC,CAAA;AAC5C,MAAA,GAAA,CAAI,KAAM,CAAA,IAAA,CAAK,qBAAsB,CAAA,KAAA,IAAA,IAAA,GAAA,KAAA,GAAS,KAAK,CAAC,CAAA;AAEpD,MAAO,OAAA,GAAA;AAAA,KACT;AAAA,IACA;AAAA,MACE,QAAQ,EAAC;AAAA,MACT,OAAO;AAAC;AACV,GACF;AACF;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findActiveGroupByVariablesByUid.js","sources":["../../../../../../../src/variables/groupby/findActiveGroupByVariablesByUid.ts"],"sourcesContent":["import { interpolate } from '../../core/sceneGraph/sceneGraph';\nimport { GroupByVariable } from './GroupByVariable';\n\nexport const allActiveGroupByVariables = new Set<GroupByVariable>();\n\nexport function findActiveGroupByVariablesByUid(dsUid: string | undefined): GroupByVariable | undefined {\n for (const groupByVariable of allActiveGroupByVariables.values()) {\n if (interpolate(groupByVariable, groupByVariable.state.datasource?.uid) === dsUid) {\n return groupByVariable;\n }\n }\n\n return undefined;\n}\n"],"names":[],"mappings":";;AAGa,MAAA,yBAAA,uBAAgC,GAAqB;AAE3D,SAAS,gCAAgC,KAAwD,EAAA;AALxG,EAAA,IAAA,EAAA;AAME,EAAW,KAAA,MAAA,eAAA,IAAmB,yBAA0B,CAAA,MAAA,EAAU,EAAA;AAChE,IAAI,IAAA,WAAA,CAAY,kBAAiB,EAAgB,GAAA,eAAA,CAAA,KAAA,CAAM,eAAtB,IAAkC,GAAA,MAAA,GAAA,EAAA,CAAA,GAAG,MAAM,KAAO,EAAA;AACjF,MAAO,OAAA,eAAA;AAAA;AACT;AAGF,EAAO,OAAA,MAAA;AACT;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScopedVarsVariable.js","sources":["../../../../../../../src/variables/interpolation/ScopedVarsVariable.ts"],"sourcesContent":["import { ScopedVar } from '@grafana/data';\n\nimport { VariableValue } from '../types';\n\nimport { FormatVariable } from './formatRegistry';\nimport { getFieldAccessor } from './fieldAccessorCache';\n\nexport class ScopedVarsVariable implements FormatVariable {\n public state: { name: string; value: ScopedVar; type: string };\n\n public constructor(name: string, value: ScopedVar) {\n this.state = { name, value, type: 'scopedvar' };\n }\n\n public getValue(fieldPath: string): VariableValue {\n let { value } = this.state;\n let realValue = value.value;\n\n if (fieldPath) {\n realValue = getFieldAccessor(fieldPath)(value.value);\n } else {\n realValue = value.value;\n }\n\n if (realValue === 'string' || realValue === 'number' || realValue === 'boolean') {\n return realValue;\n }\n\n return String(realValue);\n }\n\n public getValueText(): string {\n const { value } = this.state;\n\n if (value.text != null) {\n return String(value.text);\n }\n\n return String(value);\n }\n}\n\nlet scopedVarsVariable: ScopedVarsVariable | undefined;\n\n/**\n * Reuses a single instance to avoid unnecessary memory allocations\n */\nexport function getSceneVariableForScopedVar(name: string, value: ScopedVar): FormatVariable {\n if (!scopedVarsVariable) {\n scopedVarsVariable = new ScopedVarsVariable(name, value);\n } else {\n scopedVarsVariable.state.name = name;\n scopedVarsVariable.state.value = value;\n }\n\n return scopedVarsVariable;\n}\n"],"names":[],"mappings":";;AAOO,MAAM,kBAA6C,CAAA;AAAA,EAGjD,WAAA,CAAY,MAAc,KAAkB,EAAA;AACjD,IAAA,IAAA,CAAK,KAAQ,GAAA,EAAE,IAAM,EAAA,KAAA,EAAO,MAAM,WAAY,EAAA;AAAA;AAChD,EAEO,SAAS,SAAkC,EAAA;AAChD,IAAI,IAAA,EAAE,KAAM,EAAA,GAAI,IAAK,CAAA,KAAA;AACrB,IAAA,IAAI,YAAY,KAAM,CAAA,KAAA;AAEtB,IAAA,IAAI,SAAW,EAAA;AACb,MAAA,SAAA,GAAY,gBAAiB,CAAA,SAAS,CAAE,CAAA,KAAA,CAAM,KAAK,CAAA;AAAA,KAC9C,MAAA;AACL,MAAA,SAAA,GAAY,KAAM,CAAA,KAAA;AAAA;AAGpB,IAAA,IAAI,SAAc,KAAA,QAAA,IAAY,SAAc,KAAA,QAAA,IAAY,cAAc,SAAW,EAAA;AAC/E,MAAO,OAAA,SAAA;AAAA;AAGT,IAAA,OAAO,OAAO,SAAS,CAAA;AAAA;AACzB,EAEO,YAAuB,GAAA;AAC5B,IAAM,MAAA,EAAE,KAAM,EAAA,GAAI,IAAK,CAAA,KAAA;AAEvB,IAAI,IAAA,KAAA,CAAM,QAAQ,IAAM,EAAA;AACtB,MAAO,OAAA,MAAA,CAAO,MAAM,IAAI,CAAA;AAAA;AAG1B,IAAA,OAAO,OAAO,KAAK,CAAA;AAAA;AAEvB;AAEA,IAAI,kBAAA;AAKY,SAAA,4BAAA,CAA6B,MAAc,KAAkC,EAAA;AAC3F,EAAA,IAAI,CAAC,kBAAoB,EAAA;AACvB,IAAqB,kBAAA,GAAA,IAAI,kBAAmB,CAAA,IAAA,EAAM,KAAK,CAAA;AAAA,GAClD,MAAA;AACL,IAAA,kBAAA,CAAmB,MAAM,IAAO,GAAA,IAAA;AAChC,IAAA,kBAAA,CAAmB,MAAM,KAAQ,GAAA,KAAA;AAAA;AAGnC,EAAO,OAAA,kBAAA;AACT;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.js","sources":["../../../../../../../src/variables/interpolation/defaults.ts"],"sourcesContent":["import { SceneDataNode } from '../../core/SceneDataNode';\nimport { SceneObjectBase } from '../../core/SceneObjectBase';\nimport { SceneTimeRange } from '../../core/SceneTimeRange';\nimport { SceneVariable, SceneVariables, SceneVariableSetState, SceneVariableState } from '../types';\n\nexport const EmptyDataNode = new SceneDataNode();\nexport const DefaultTimeRange = new SceneTimeRange();\n\n/**\n * Since this is used from sceneGraph.getVariables we cannot reference SceneVariableSet here as it would create a circular reference\n */\nexport class EmptyVariableSetImpl extends SceneObjectBase<SceneVariableSetState> implements SceneVariables {\n public constructor() {\n super({ variables: [] });\n }\n\n public getByName(name: string): SceneVariable<SceneVariableState> | undefined {\n return undefined;\n }\n\n public isVariableLoadingOrWaitingToUpdate(variable: SceneVariable<SceneVariableState>): boolean {\n return false;\n }\n}\n\nexport const EmptyVariableSet = new EmptyVariableSetImpl();\n"],"names":[],"mappings":";;;;AAKa,MAAA,aAAA,GAAgB,IAAI,aAAc;AAClC,MAAA,gBAAA,GAAmB,IAAI,cAAe;AAK5C,MAAM,6BAA6B,eAAiE,CAAA;AAAA,EAClG,WAAc,GAAA;AACnB,IAAA,KAAA,CAAM,EAAE,SAAA,EAAW,EAAC,EAAG,CAAA;AAAA;AACzB,EAEO,UAAU,IAA6D,EAAA;AAC5E,IAAO,OAAA,MAAA;AAAA;AACT,EAEO,mCAAmC,QAAsD,EAAA;AAC9F,IAAO,OAAA,KAAA;AAAA;AAEX;AAEa,MAAA,gBAAA,GAAmB,IAAI,oBAAqB;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fieldAccessorCache.js","sources":["../../../../../../../src/variables/interpolation/fieldAccessorCache.ts"],"sourcesContent":["import { property } from 'lodash';\n\ninterface FieldAccessorCache {\n [key: string]: (obj: object) => any;\n}\n\nlet fieldAccessorCache: FieldAccessorCache = {};\n\nexport function getFieldAccessor(fieldPath: string) {\n const accessor = fieldAccessorCache[fieldPath];\n if (accessor) {\n return accessor;\n }\n\n return (fieldAccessorCache[fieldPath] = property(fieldPath));\n}\n"],"names":[],"mappings":";;AAMA,IAAI,qBAAyC,EAAC;AAEvC,SAAS,iBAAiB,SAAmB,EAAA;AAClD,EAAM,MAAA,QAAA,GAAW,mBAAmB,SAAS,CAAA;AAC7C,EAAA,IAAI,QAAU,EAAA;AACZ,IAAO,OAAA,QAAA;AAAA;AAGT,EAAA,OAAQ,kBAAmB,CAAA,SAAS,CAAI,GAAA,QAAA,CAAS,SAAS,CAAA;AAC5D;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatRegistry.js","sources":["../../../../../../../src/variables/interpolation/formatRegistry.ts"],"sourcesContent":["import { t } from '@grafana/i18n';\nimport { isArray, map, replace } from 'lodash';\n\nimport { dateTime, Registry, RegistryItem, textUtil, escapeRegex, urlUtil } from '@grafana/data';\nimport { VariableType, VariableFormatID } from '@grafana/schema';\n\nimport { VariableValue, VariableValueSingle } from '../types';\nimport { ALL_VARIABLE_VALUE } from '../constants';\nimport { SceneObjectUrlSyncHandler } from '../../core/types';\n\nexport interface FormatRegistryItem extends RegistryItem {\n formatter(value: VariableValue, args: string[], variable: FormatVariable, fieldPath?: string): string;\n}\n\n/**\n * Slimmed down version of the SceneVariable interface so that it only contains what the formatters actually use.\n * This is useful as we have some implementations of this interface that does not need to be full scene objects.\n * For example ScopedVarsVariable and LegacyVariableWrapper.\n */\nexport interface FormatVariable {\n state: {\n name: string;\n type: VariableType | string;\n isMulti?: boolean;\n includeAll?: boolean;\n };\n\n getValue(fieldPath?: string): VariableValue | undefined | null;\n getValueText?(fieldPath?: string): string;\n urlSync?: SceneObjectUrlSyncHandler;\n}\n\nexport const formatRegistry = new Registry<FormatRegistryItem>(() => {\n const formats: FormatRegistryItem[] = [\n {\n id: VariableFormatID.Lucene,\n name: 'Lucene',\n description: 'Values are lucene escaped and multi-valued variables generate an OR expression',\n formatter: (value) => {\n if (typeof value === 'string') {\n return luceneEscape(value);\n }\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return '__empty__';\n }\n const quotedValues = map(value, (val: string) => {\n return '\"' + luceneEscape(val) + '\"';\n });\n return '(' + quotedValues.join(' OR ') + ')';\n } else {\n return luceneEscape(`${value}`);\n }\n },\n },\n {\n id: VariableFormatID.Raw,\n name: 'raw',\n description: t(\n 'grafana-scenes.variables.format-registry.formats.description.keep-value-as-is',\n 'Keep value as is'\n ),\n formatter: (value) => String(value),\n },\n {\n id: VariableFormatID.Regex,\n name: 'Regex',\n description: 'Values are regex escaped and multi-valued variables generate a (<value>|<value>) expression',\n formatter: (value) => {\n if (typeof value === 'string') {\n return escapeRegex(value);\n }\n\n if (Array.isArray(value)) {\n const escapedValues = value.map((item) => {\n if (typeof item === 'string') {\n return escapeRegex(item);\n } else {\n return escapeRegex(String(item));\n }\n });\n\n if (escapedValues.length === 1) {\n return escapedValues[0];\n }\n\n return '(' + escapedValues.join('|') + ')';\n }\n\n return escapeRegex(`${value}`);\n },\n },\n {\n id: VariableFormatID.Pipe,\n name: 'Pipe',\n description: t(\n 'grafana-scenes.variables.format-registry.formats.description.values-are-separated-by-character',\n 'Values are separated by | character'\n ),\n formatter: (value) => {\n if (typeof value === 'string') {\n return value;\n }\n\n if (Array.isArray(value)) {\n return value.join('|');\n }\n\n return `${value}`;\n },\n },\n {\n id: VariableFormatID.Distributed,\n name: 'Distributed',\n description: t(\n 'grafana-scenes.variables.format-registry.formats.description.multiple-values-are-formatted-like-variablevalue',\n 'Multiple values are formatted like variable=value'\n ),\n formatter: (value, args, variable) => {\n if (typeof value === 'string') {\n return value;\n }\n\n if (Array.isArray(value)) {\n value = map(value, (val: string, index: number) => {\n if (index !== 0) {\n return variable.state.name + '=' + val;\n } else {\n return val;\n }\n });\n\n return value.join(',');\n }\n\n return `${value}`;\n },\n },\n {\n id: VariableFormatID.CSV,\n name: 'Csv',\n description: t(\n 'grafana-scenes.variables.format-registry.formats.description.commaseparated-values',\n 'Comma-separated values'\n ),\n formatter: (value) => {\n if (typeof value === 'string') {\n return value;\n }\n\n if (isArray(value)) {\n return value.join(',');\n }\n\n return String(value);\n },\n },\n {\n id: VariableFormatID.HTML,\n name: 'HTML',\n description: t(\n 'grafana-scenes.variables.format-registry.formats.description.html-escaping-of-values',\n 'HTML escaping of values'\n ),\n formatter: (value) => {\n if (typeof value === 'string') {\n return textUtil.escapeHtml(value);\n }\n\n if (isArray(value)) {\n return textUtil.escapeHtml(value.join(', '));\n }\n\n return textUtil.escapeHtml(String(value));\n },\n },\n {\n id: VariableFormatID.JSON,\n name: 'JSON',\n description: t(\n 'grafana-scenes.variables.format-registry.formats.description.json-stringify-value',\n 'JSON stringify value'\n ),\n formatter: (value) => {\n if (typeof value === 'string') {\n return value;\n }\n return JSON.stringify(value);\n },\n },\n {\n id: VariableFormatID.PercentEncode,\n name: 'Percent encode',\n description: t(\n 'grafana-scenes.variables.format-registry.formats.description.useful-for-url-escaping-values',\n 'Useful for URL escaping values'\n ),\n formatter: (value) => {\n // like glob, but url escaped\n if (isArray(value)) {\n return encodeURIComponentStrict('{' + value.join(',') + '}');\n }\n\n return encodeURIComponentStrict(value);\n },\n },\n {\n id: VariableFormatID.SingleQuote,\n name: 'Single quote',\n description: t(\n 'grafana-scenes.variables.format-registry.formats.description.single-quoted-values',\n 'Single quoted values'\n ),\n formatter: (value) => {\n // escape single quotes with backslash\n const regExp = new RegExp(`'`, 'g');\n\n if (isArray(value)) {\n return map(value, (v: string) => `'${replace(v, regExp, `\\\\'`)}'`).join(',');\n }\n\n let strVal = typeof value === 'string' ? value : String(value);\n return `'${replace(strVal, regExp, `\\\\'`)}'`;\n },\n },\n {\n id: VariableFormatID.DoubleQuote,\n name: 'Double quote',\n description: t(\n 'grafana-scenes.variables.format-registry.formats.description.double-quoted-values',\n 'Double quoted values'\n ),\n formatter: (value) => {\n // escape double quotes with backslash\n const regExp = new RegExp('\"', 'g');\n if (isArray(value)) {\n return map(value, (v: string) => `\"${replace(v, regExp, '\\\\\"')}\"`).join(',');\n }\n\n let strVal = typeof value === 'string' ? value : String(value);\n return `\"${replace(strVal, regExp, '\\\\\"')}\"`;\n },\n },\n {\n id: VariableFormatID.SQLString,\n name: 'SQL string',\n description: 'SQL string quoting and commas for use in IN statements and other scenarios',\n formatter: sqlStringFormatter,\n },\n {\n id: 'join', // join not yet available in depended @grafana/schema version\n name: 'Join',\n description: t(\n 'grafana-scenes.variables.format-registry.formats.description.join-values-with-a-comma',\n 'Join values with a comma'\n ),\n formatter: (value, args) => {\n if (isArray(value)) {\n const separator = args[0] ?? ',';\n return value.join(separator);\n }\n return String(value);\n },\n },\n {\n id: VariableFormatID.Date,\n name: 'Date',\n description: t(\n 'grafana-scenes.variables.format-registry.formats.description.format-date-in-different-ways',\n 'Format date in different ways'\n ),\n formatter: (value, args) => {\n let nrValue = NaN;\n\n if (typeof value === 'number') {\n nrValue = value;\n } else if (typeof value === 'string') {\n nrValue = parseInt(value, 10);\n }\n\n if (isNaN(nrValue)) {\n return 'NaN';\n }\n\n const arg = args[0] ?? 'iso';\n switch (arg) {\n case 'ms':\n return String(value);\n case 'seconds':\n return `${Math.round(nrValue! / 1000)}`;\n case 'iso':\n return dateTime(nrValue).toISOString();\n default:\n if ((args || []).length > 1) {\n return dateTime(nrValue).format(args.join(':'));\n }\n return dateTime(nrValue).format(arg);\n }\n },\n },\n {\n id: VariableFormatID.Glob,\n name: 'Glob',\n description: t(\n 'grafana-scenes.variables.format-registry.formats.description.format-multivalued-variables-using-syntax-example',\n 'Format multi-valued variables using glob syntax, example {value1,value2}'\n ),\n formatter: (value) => {\n if (isArray(value) && value.length > 1) {\n return '{' + value.join(',') + '}';\n }\n return String(value);\n },\n },\n {\n id: VariableFormatID.Text,\n name: 'Text',\n description: 'Format variables in their text representation. Example in multi-variable scenario A + B + C.',\n formatter: (value, _args, variable) => {\n if (variable.getValueText) {\n return variable.getValueText();\n }\n\n return String(value);\n },\n },\n {\n id: VariableFormatID.QueryParam,\n name: 'Query parameter',\n description:\n 'Format variables as URL parameters. Example in multi-variable scenario A + B + C => var-foo=A&var-foo=B&var-foo=C.',\n formatter: (value, _args, variable, fieldPath) => {\n if (variable.urlSync && !fieldPath) {\n const urlParam = variable.urlSync.getUrlState();\n return urlUtil.toUrlParams(urlParam);\n }\n\n if (Array.isArray(value)) {\n return value.map((v) => formatQueryParameter(variable.state.name, v)).join('&');\n }\n\n return formatQueryParameter(variable.state.name, value);\n },\n },\n {\n id: 'customqueryparam',\n name: 'Custom query parameter',\n description:\n 'Format variables as URL parameters with custom name and value prefix. Example in multi-variable scenario A + B + C => p-foo=x-A&p-foo=x-B&p-foo=x-C.',\n formatter: (value, args, variable) => {\n const name = encodeURIComponentStrict(args[0] || variable.state.name);\n const valuePrefix = encodeURIComponentStrict(args[1] || '');\n\n if (Array.isArray(value)) {\n return value.map((v) => customFormatQueryParameter(name, v, valuePrefix)).join('&');\n }\n\n return customFormatQueryParameter(name, value, valuePrefix);\n },\n },\n {\n id: VariableFormatID.UriEncode,\n name: 'Percent encode as URI',\n description: t(\n 'grafana-scenes.variables.format-registry.formats.description.useful-escaping-values-taking-syntax-characters',\n 'Useful for URL escaping values, taking into URI syntax characters'\n ),\n formatter: (value: VariableValue) => {\n if (isArray(value)) {\n return encodeURIStrict('{' + value.join(',') + '}');\n }\n\n return encodeURIStrict(value);\n },\n },\n ];\n\n return formats;\n});\n\nfunction luceneEscape(value: string) {\n if (isNaN(+value) === false) {\n return value;\n }\n\n return value.replace(/([\\!\\*\\+\\-\\=<>\\s\\&\\|\\(\\)\\[\\]\\{\\}\\^\\~\\?\\:\\\\/\"])/g, '\\\\$1');\n}\n\n/**\n * encode string according to RFC 3986; in contrast to encodeURIComponent()\n * also the sub-delims \"!\", \"'\", \"(\", \")\" and \"*\" are encoded;\n * unicode handling uses UTF-8 as in ECMA-262.\n */\nfunction encodeURIComponentStrict(str: VariableValueSingle) {\n if (typeof str === 'object') {\n str = String(str);\n }\n\n return replaceSpecialCharactersToASCII(encodeURIComponent(str));\n}\n\nconst encodeURIStrict = (str: VariableValueSingle): string => replaceSpecialCharactersToASCII(encodeURI(String(str)));\n\nconst replaceSpecialCharactersToASCII = (value: string): string =>\n value.replace(/[!'()*]/g, (c) => {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase();\n });\n\nfunction formatQueryParameter(name: string, value: VariableValueSingle): string {\n return `var-${name}=${encodeURIComponentStrict(value)}`;\n}\n\nfunction customFormatQueryParameter(name: string, value: VariableValueSingle, valuePrefix = ''): string {\n return `${name}=${valuePrefix}${encodeURIComponentStrict(value)}`;\n}\n\nexport function isAllValue(value: VariableValueSingle) {\n return value === ALL_VARIABLE_VALUE || (Array.isArray(value) && value[0] === ALL_VARIABLE_VALUE);\n}\n\nconst SQL_ESCAPE_MAP: Record<string, string> = {\n \"'\": \"''\",\n '\"': '\\\\\"',\n};\n\nfunction sqlStringFormatter(value: VariableValue) {\n // escape single quotes by pairing them\n const regExp = new RegExp(`'|\"`, 'g');\n\n if (isArray(value)) {\n return map(value, (v: string) => `'${replace(v, regExp, (match) => SQL_ESCAPE_MAP[match] ?? '')}'`).join(',');\n }\n\n let strVal = typeof value === 'string' ? value : String(value);\n return `'${replace(strVal, regExp, (match) => SQL_ESCAPE_MAP[match] ?? '')}'`;\n}\n"],"names":[],"mappings":";;;;;AAgCa,MAAA,cAAA,GAAiB,IAAI,QAAA,CAA6B,MAAM;AACnE,EAAA,MAAM,OAAgC,GAAA;AAAA,IACpC;AAAA,MACE,IAAI,gBAAiB,CAAA,MAAA;AAAA,MACrB,IAAM,EAAA,QAAA;AAAA,MACN,WAAa,EAAA,gFAAA;AAAA,MACb,SAAA,EAAW,CAAC,KAAU,KAAA;AACpB,QAAI,IAAA,OAAO,UAAU,QAAU,EAAA;AAC7B,UAAA,OAAO,aAAa,KAAK,CAAA;AAAA;AAG3B,QAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,KAAK,CAAG,EAAA;AACxB,UAAI,IAAA,KAAA,CAAM,WAAW,CAAG,EAAA;AACtB,YAAO,OAAA,WAAA;AAAA;AAET,UAAA,MAAM,YAAe,GAAA,GAAA,CAAI,KAAO,EAAA,CAAC,GAAgB,KAAA;AAC/C,YAAO,OAAA,GAAA,GAAM,YAAa,CAAA,GAAG,CAAI,GAAA,GAAA;AAAA,WAClC,CAAA;AACD,UAAA,OAAO,GAAM,GAAA,YAAA,CAAa,IAAK,CAAA,MAAM,CAAI,GAAA,GAAA;AAAA,SACpC,MAAA;AACL,UAAO,OAAA,YAAA,CAAa,CAAG,EAAA,KAAK,CAAE,CAAA,CAAA;AAAA;AAChC;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAI,gBAAiB,CAAA,GAAA;AAAA,MACrB,IAAM,EAAA,KAAA;AAAA,MACN,WAAa,EAAA,CAAA;AAAA,QACX,+EAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,SAAW,EAAA,CAAC,KAAU,KAAA,MAAA,CAAO,KAAK;AAAA,KACpC;AAAA,IACA;AAAA,MACE,IAAI,gBAAiB,CAAA,KAAA;AAAA,MACrB,IAAM,EAAA,OAAA;AAAA,MACN,WAAa,EAAA,6FAAA;AAAA,MACb,SAAA,EAAW,CAAC,KAAU,KAAA;AACpB,QAAI,IAAA,OAAO,UAAU,QAAU,EAAA;AAC7B,UAAA,OAAO,YAAY,KAAK,CAAA;AAAA;AAG1B,QAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,KAAK,CAAG,EAAA;AACxB,UAAA,MAAM,aAAgB,GAAA,KAAA,CAAM,GAAI,CAAA,CAAC,IAAS,KAAA;AACxC,YAAI,IAAA,OAAO,SAAS,QAAU,EAAA;AAC5B,cAAA,OAAO,YAAY,IAAI,CAAA;AAAA,aAClB,MAAA;AACL,cAAO,OAAA,WAAA,CAAY,MAAO,CAAA,IAAI,CAAC,CAAA;AAAA;AACjC,WACD,CAAA;AAED,UAAI,IAAA,aAAA,CAAc,WAAW,CAAG,EAAA;AAC9B,YAAA,OAAO,cAAc,CAAC,CAAA;AAAA;AAGxB,UAAA,OAAO,GAAM,GAAA,aAAA,CAAc,IAAK,CAAA,GAAG,CAAI,GAAA,GAAA;AAAA;AAGzC,QAAO,OAAA,WAAA,CAAY,CAAG,EAAA,KAAK,CAAE,CAAA,CAAA;AAAA;AAC/B,KACF;AAAA,IACA;AAAA,MACE,IAAI,gBAAiB,CAAA,IAAA;AAAA,MACrB,IAAM,EAAA,MAAA;AAAA,MACN,WAAa,EAAA,CAAA;AAAA,QACX,gGAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,SAAA,EAAW,CAAC,KAAU,KAAA;AACpB,QAAI,IAAA,OAAO,UAAU,QAAU,EAAA;AAC7B,UAAO,OAAA,KAAA;AAAA;AAGT,QAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,KAAK,CAAG,EAAA;AACxB,UAAO,OAAA,KAAA,CAAM,KAAK,GAAG,CAAA;AAAA;AAGvB,QAAA,OAAO,GAAG,KAAK,CAAA,CAAA;AAAA;AACjB,KACF;AAAA,IACA;AAAA,MACE,IAAI,gBAAiB,CAAA,WAAA;AAAA,MACrB,IAAM,EAAA,aAAA;AAAA,MACN,WAAa,EAAA,CAAA;AAAA,QACX,+GAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,SAAW,EAAA,CAAC,KAAO,EAAA,IAAA,EAAM,QAAa,KAAA;AACpC,QAAI,IAAA,OAAO,UAAU,QAAU,EAAA;AAC7B,UAAO,OAAA,KAAA;AAAA;AAGT,QAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,KAAK,CAAG,EAAA;AACxB,UAAA,KAAA,GAAQ,GAAI,CAAA,KAAA,EAAO,CAAC,GAAA,EAAa,KAAkB,KAAA;AACjD,YAAA,IAAI,UAAU,CAAG,EAAA;AACf,cAAO,OAAA,QAAA,CAAS,KAAM,CAAA,IAAA,GAAO,GAAM,GAAA,GAAA;AAAA,aAC9B,MAAA;AACL,cAAO,OAAA,GAAA;AAAA;AACT,WACD,CAAA;AAED,UAAO,OAAA,KAAA,CAAM,KAAK,GAAG,CAAA;AAAA;AAGvB,QAAA,OAAO,GAAG,KAAK,CAAA,CAAA;AAAA;AACjB,KACF;AAAA,IACA;AAAA,MACE,IAAI,gBAAiB,CAAA,GAAA;AAAA,MACrB,IAAM,EAAA,KAAA;AAAA,MACN,WAAa,EAAA,CAAA;AAAA,QACX,oFAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,SAAA,EAAW,CAAC,KAAU,KAAA;AACpB,QAAI,IAAA,OAAO,UAAU,QAAU,EAAA;AAC7B,UAAO,OAAA,KAAA;AAAA;AAGT,QAAI,IAAA,OAAA,CAAQ,KAAK,CAAG,EAAA;AAClB,UAAO,OAAA,KAAA,CAAM,KAAK,GAAG,CAAA;AAAA;AAGvB,QAAA,OAAO,OAAO,KAAK,CAAA;AAAA;AACrB,KACF;AAAA,IACA;AAAA,MACE,IAAI,gBAAiB,CAAA,IAAA;AAAA,MACrB,IAAM,EAAA,MAAA;AAAA,MACN,WAAa,EAAA,CAAA;AAAA,QACX,sFAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,SAAA,EAAW,CAAC,KAAU,KAAA;AACpB,QAAI,IAAA,OAAO,UAAU,QAAU,EAAA;AAC7B,UAAO,OAAA,QAAA,CAAS,WAAW,KAAK,CAAA;AAAA;AAGlC,QAAI,IAAA,OAAA,CAAQ,KAAK,CAAG,EAAA;AAClB,UAAA,OAAO,QAAS,CAAA,UAAA,CAAW,KAAM,CAAA,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA;AAG7C,QAAA,OAAO,QAAS,CAAA,UAAA,CAAW,MAAO,CAAA,KAAK,CAAC,CAAA;AAAA;AAC1C,KACF;AAAA,IACA;AAAA,MACE,IAAI,gBAAiB,CAAA,IAAA;AAAA,MACrB,IAAM,EAAA,MAAA;AAAA,MACN,WAAa,EAAA,CAAA;AAAA,QACX,mFAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,SAAA,EAAW,CAAC,KAAU,KAAA;AACpB,QAAI,IAAA,OAAO,UAAU,QAAU,EAAA;AAC7B,UAAO,OAAA,KAAA;AAAA;AAET,QAAO,OAAA,IAAA,CAAK,UAAU,KAAK,CAAA;AAAA;AAC7B,KACF;AAAA,IACA;AAAA,MACE,IAAI,gBAAiB,CAAA,aAAA;AAAA,MACrB,IAAM,EAAA,gBAAA;AAAA,MACN,WAAa,EAAA,CAAA;AAAA,QACX,6FAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,SAAA,EAAW,CAAC,KAAU,KAAA;AAEpB,QAAI,IAAA,OAAA,CAAQ,KAAK,CAAG,EAAA;AAClB,UAAA,OAAO,yBAAyB,GAAM,GAAA,KAAA,CAAM,IAAK,CAAA,GAAG,IAAI,GAAG,CAAA;AAAA;AAG7D,QAAA,OAAO,yBAAyB,KAAK,CAAA;AAAA;AACvC,KACF;AAAA,IACA;AAAA,MACE,IAAI,gBAAiB,CAAA,WAAA;AAAA,MACrB,IAAM,EAAA,cAAA;AAAA,MACN,WAAa,EAAA,CAAA;AAAA,QACX,mFAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,SAAA,EAAW,CAAC,KAAU,KAAA;AAEpB,QAAA,MAAM,MAAS,GAAA,IAAI,MAAO,CAAA,CAAA,CAAA,CAAA,EAAK,GAAG,CAAA;AAElC,QAAI,IAAA,OAAA,CAAQ,KAAK,CAAG,EAAA;AAClB,UAAA,OAAO,GAAI,CAAA,KAAA,EAAO,CAAC,CAAA,KAAc,CAAI,CAAA,EAAA,OAAA,CAAQ,CAAG,EAAA,MAAA,EAAQ,CAAK,GAAA,CAAA,CAAC,CAAG,CAAA,CAAA,CAAA,CAAE,KAAK,GAAG,CAAA;AAAA;AAG7E,QAAA,IAAI,SAAS,OAAO,KAAA,KAAU,QAAW,GAAA,KAAA,GAAQ,OAAO,KAAK,CAAA;AAC7D,QAAA,OAAO,CAAI,CAAA,EAAA,OAAA,CAAQ,MAAQ,EAAA,MAAA,EAAQ,KAAK,CAAC,CAAA,CAAA,CAAA;AAAA;AAC3C,KACF;AAAA,IACA;AAAA,MACE,IAAI,gBAAiB,CAAA,WAAA;AAAA,MACrB,IAAM,EAAA,cAAA;AAAA,MACN,WAAa,EAAA,CAAA;AAAA,QACX,mFAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,SAAA,EAAW,CAAC,KAAU,KAAA;AAEpB,QAAA,MAAM,MAAS,GAAA,IAAI,MAAO,CAAA,GAAA,EAAK,GAAG,CAAA;AAClC,QAAI,IAAA,OAAA,CAAQ,KAAK,CAAG,EAAA;AAClB,UAAA,OAAO,GAAI,CAAA,KAAA,EAAO,CAAC,CAAA,KAAc,CAAI,CAAA,EAAA,OAAA,CAAQ,CAAG,EAAA,MAAA,EAAQ,KAAK,CAAC,CAAG,CAAA,CAAA,CAAA,CAAE,KAAK,GAAG,CAAA;AAAA;AAG7E,QAAA,IAAI,SAAS,OAAO,KAAA,KAAU,QAAW,GAAA,KAAA,GAAQ,OAAO,KAAK,CAAA;AAC7D,QAAA,OAAO,CAAI,CAAA,EAAA,OAAA,CAAQ,MAAQ,EAAA,MAAA,EAAQ,KAAK,CAAC,CAAA,CAAA,CAAA;AAAA;AAC3C,KACF;AAAA,IACA;AAAA,MACE,IAAI,gBAAiB,CAAA,SAAA;AAAA,MACrB,IAAM,EAAA,YAAA;AAAA,MACN,WAAa,EAAA,4EAAA;AAAA,MACb,SAAW,EAAA;AAAA,KACb;AAAA,IACA;AAAA,MACE,EAAI,EAAA,MAAA;AAAA;AAAA,MACJ,IAAM,EAAA,MAAA;AAAA,MACN,WAAa,EAAA,CAAA;AAAA,QACX,uFAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,SAAA,EAAW,CAAC,KAAA,EAAO,IAAS,KAAA;AAjQlC,QAAA,IAAA,EAAA;AAkQQ,QAAI,IAAA,OAAA,CAAQ,KAAK,CAAG,EAAA;AAClB,UAAA,MAAM,SAAY,GAAA,CAAA,EAAA,GAAA,IAAA,CAAK,CAAC,CAAA,KAAN,IAAW,GAAA,EAAA,GAAA,GAAA;AAC7B,UAAO,OAAA,KAAA,CAAM,KAAK,SAAS,CAAA;AAAA;AAE7B,QAAA,OAAO,OAAO,KAAK,CAAA;AAAA;AACrB,KACF;AAAA,IACA;AAAA,MACE,IAAI,gBAAiB,CAAA,IAAA;AAAA,MACrB,IAAM,EAAA,MAAA;AAAA,MACN,WAAa,EAAA,CAAA;AAAA,QACX,4FAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,SAAA,EAAW,CAAC,KAAA,EAAO,IAAS,KAAA;AAhRlC,QAAA,IAAA,EAAA;AAiRQ,QAAA,IAAI,OAAU,GAAA,GAAA;AAEd,QAAI,IAAA,OAAO,UAAU,QAAU,EAAA;AAC7B,UAAU,OAAA,GAAA,KAAA;AAAA,SACZ,MAAA,IAAW,OAAO,KAAA,KAAU,QAAU,EAAA;AACpC,UAAU,OAAA,GAAA,QAAA,CAAS,OAAO,EAAE,CAAA;AAAA;AAG9B,QAAI,IAAA,KAAA,CAAM,OAAO,CAAG,EAAA;AAClB,UAAO,OAAA,KAAA;AAAA;AAGT,QAAA,MAAM,GAAM,GAAA,CAAA,EAAA,GAAA,IAAA,CAAK,CAAC,CAAA,KAAN,IAAW,GAAA,EAAA,GAAA,KAAA;AACvB,QAAA,QAAQ,GAAK;AAAA,UACX,KAAK,IAAA;AACH,YAAA,OAAO,OAAO,KAAK,CAAA;AAAA,UACrB,KAAK,SAAA;AACH,YAAA,OAAO,CAAG,EAAA,IAAA,CAAK,KAAM,CAAA,OAAA,GAAW,GAAI,CAAC,CAAA,CAAA;AAAA,UACvC,KAAK,KAAA;AACH,YAAO,OAAA,QAAA,CAAS,OAAO,CAAA,CAAE,WAAY,EAAA;AAAA,UACvC;AACE,YAAA,IAAA,CAAK,IAAQ,IAAA,EAAI,EAAA,MAAA,GAAS,CAAG,EAAA;AAC3B,cAAA,OAAO,SAAS,OAAO,CAAA,CAAE,OAAO,IAAK,CAAA,IAAA,CAAK,GAAG,CAAC,CAAA;AAAA;AAEhD,YAAA,OAAO,QAAS,CAAA,OAAO,CAAE,CAAA,MAAA,CAAO,GAAG,CAAA;AAAA;AACvC;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAI,gBAAiB,CAAA,IAAA;AAAA,MACrB,IAAM,EAAA,MAAA;AAAA,MACN,WAAa,EAAA,CAAA;AAAA,QACX,gHAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,SAAA,EAAW,CAAC,KAAU,KAAA;AACpB,QAAA,IAAI,OAAQ,CAAA,KAAK,CAAK,IAAA,KAAA,CAAM,SAAS,CAAG,EAAA;AACtC,UAAA,OAAO,GAAM,GAAA,KAAA,CAAM,IAAK,CAAA,GAAG,CAAI,GAAA,GAAA;AAAA;AAEjC,QAAA,OAAO,OAAO,KAAK,CAAA;AAAA;AACrB,KACF;AAAA,IACA;AAAA,MACE,IAAI,gBAAiB,CAAA,IAAA;AAAA,MACrB,IAAM,EAAA,MAAA;AAAA,MACN,WAAa,EAAA,8FAAA;AAAA,MACb,SAAW,EAAA,CAAC,KAAO,EAAA,KAAA,EAAO,QAAa,KAAA;AACrC,QAAA,IAAI,SAAS,YAAc,EAAA;AACzB,UAAA,OAAO,SAAS,YAAa,EAAA;AAAA;AAG/B,QAAA,OAAO,OAAO,KAAK,CAAA;AAAA;AACrB,KACF;AAAA,IACA;AAAA,MACE,IAAI,gBAAiB,CAAA,UAAA;AAAA,MACrB,IAAM,EAAA,iBAAA;AAAA,MACN,WACE,EAAA,oHAAA;AAAA,MACF,SAAW,EAAA,CAAC,KAAO,EAAA,KAAA,EAAO,UAAU,SAAc,KAAA;AAChD,QAAI,IAAA,QAAA,CAAS,OAAW,IAAA,CAAC,SAAW,EAAA;AAClC,UAAM,MAAA,QAAA,GAAW,QAAS,CAAA,OAAA,CAAQ,WAAY,EAAA;AAC9C,UAAO,OAAA,OAAA,CAAQ,YAAY,QAAQ,CAAA;AAAA;AAGrC,QAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,KAAK,CAAG,EAAA;AACxB,UAAA,OAAO,KAAM,CAAA,GAAA,CAAI,CAAC,CAAA,KAAM,oBAAqB,CAAA,QAAA,CAAS,KAAM,CAAA,IAAA,EAAM,CAAC,CAAC,CAAE,CAAA,IAAA,CAAK,GAAG,CAAA;AAAA;AAGhF,QAAA,OAAO,oBAAqB,CAAA,QAAA,CAAS,KAAM,CAAA,IAAA,EAAM,KAAK,CAAA;AAAA;AACxD,KACF;AAAA,IACA;AAAA,MACE,EAAI,EAAA,kBAAA;AAAA,MACJ,IAAM,EAAA,wBAAA;AAAA,MACN,WACE,EAAA,sJAAA;AAAA,MACF,SAAW,EAAA,CAAC,KAAO,EAAA,IAAA,EAAM,QAAa,KAAA;AACpC,QAAA,MAAM,OAAO,wBAAyB,CAAA,IAAA,CAAK,CAAC,CAAK,IAAA,QAAA,CAAS,MAAM,IAAI,CAAA;AACpE,QAAA,MAAM,WAAc,GAAA,wBAAA,CAAyB,IAAK,CAAA,CAAC,KAAK,EAAE,CAAA;AAE1D,QAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,KAAK,CAAG,EAAA;AACxB,UAAO,OAAA,KAAA,CAAM,GAAI,CAAA,CAAC,CAAM,KAAA,0BAAA,CAA2B,IAAM,EAAA,CAAA,EAAG,WAAW,CAAC,CAAE,CAAA,IAAA,CAAK,GAAG,CAAA;AAAA;AAGpF,QAAO,OAAA,0BAAA,CAA2B,IAAM,EAAA,KAAA,EAAO,WAAW,CAAA;AAAA;AAC5D,KACF;AAAA,IACA;AAAA,MACE,IAAI,gBAAiB,CAAA,SAAA;AAAA,MACrB,IAAM,EAAA,uBAAA;AAAA,MACN,WAAa,EAAA,CAAA;AAAA,QACX,8GAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,SAAA,EAAW,CAAC,KAAyB,KAAA;AACnC,QAAI,IAAA,OAAA,CAAQ,KAAK,CAAG,EAAA;AAClB,UAAA,OAAO,gBAAgB,GAAM,GAAA,KAAA,CAAM,IAAK,CAAA,GAAG,IAAI,GAAG,CAAA;AAAA;AAGpD,QAAA,OAAO,gBAAgB,KAAK,CAAA;AAAA;AAC9B;AACF,GACF;AAEA,EAAO,OAAA,OAAA;AACT,CAAC;AAED,SAAS,aAAa,KAAe,EAAA;AACnC,EAAA,IAAI,KAAM,CAAA,CAAC,KAAK,CAAA,KAAM,KAAO,EAAA;AAC3B,IAAO,OAAA,KAAA;AAAA;AAGT,EAAO,OAAA,KAAA,CAAM,OAAQ,CAAA,iDAAA,EAAmD,MAAM,CAAA;AAChF;AAOA,SAAS,yBAAyB,GAA0B,EAAA;AAC1D,EAAI,IAAA,OAAO,QAAQ,QAAU,EAAA;AAC3B,IAAA,GAAA,GAAM,OAAO,GAAG,CAAA;AAAA;AAGlB,EAAO,OAAA,+BAAA,CAAgC,kBAAmB,CAAA,GAAG,CAAC,CAAA;AAChE;AAEA,MAAM,eAAA,GAAkB,CAAC,GAAqC,KAAA,+BAAA,CAAgC,UAAU,MAAO,CAAA,GAAG,CAAC,CAAC,CAAA;AAEpH,MAAM,kCAAkC,CAAC,KAAA,KACvC,MAAM,OAAQ,CAAA,UAAA,EAAY,CAAC,CAAM,KAAA;AAC/B,EAAO,OAAA,GAAA,GAAM,EAAE,UAAW,CAAA,CAAC,EAAE,QAAS,CAAA,EAAE,EAAE,WAAY,EAAA;AACxD,CAAC,CAAA;AAEH,SAAS,oBAAA,CAAqB,MAAc,KAAoC,EAAA;AAC9E,EAAA,OAAO,CAAO,IAAA,EAAA,IAAI,CAAI,CAAA,EAAA,wBAAA,CAAyB,KAAK,CAAC,CAAA,CAAA;AACvD;AAEA,SAAS,0BAA2B,CAAA,IAAA,EAAc,KAA4B,EAAA,WAAA,GAAc,EAAY,EAAA;AACtG,EAAA,OAAO,GAAG,IAAI,CAAA,CAAA,EAAI,WAAW,CAAG,EAAA,wBAAA,CAAyB,KAAK,CAAC,CAAA,CAAA;AACjE;AAMA,MAAM,cAAyC,GAAA;AAAA,EAC7C,GAAK,EAAA,IAAA;AAAA,EACL,GAAK,EAAA;AACP,CAAA;AAEA,SAAS,mBAAmB,KAAsB,EAAA;AAEhD,EAAA,MAAM,MAAS,GAAA,IAAI,MAAO,CAAA,CAAA,GAAA,CAAA,EAAO,GAAG,CAAA;AAEpC,EAAI,IAAA,OAAA,CAAQ,KAAK,CAAG,EAAA;AAClB,IAAO,OAAA,GAAA,CAAI,OAAO,CAAC,CAAA,KAAc,IAAI,OAAQ,CAAA,CAAA,EAAG,MAAQ,EAAA,CAAC,KAAO,KAAA;AA/apE,MAAA,IAAA,EAAA;AA+auE,MAAe,OAAA,CAAA,EAAA,GAAA,cAAA,CAAA,KAAK,MAApB,IAAyB,GAAA,EAAA,GAAA,EAAA;AAAA,KAAE,CAAC,CAAA,CAAA,CAAG,CAAE,CAAA,IAAA,CAAK,GAAG,CAAA;AAAA;AAG9G,EAAA,IAAI,SAAS,OAAO,KAAA,KAAU,QAAW,GAAA,KAAA,GAAQ,OAAO,KAAK,CAAA;AAC7D,EAAA,OAAO,CAAI,CAAA,EAAA,OAAA,CAAQ,MAAQ,EAAA,MAAA,EAAQ,CAAC,KAAO,KAAA;AAnb7C,IAAA,IAAA,EAAA;AAmbgD,IAAe,OAAA,CAAA,EAAA,GAAA,cAAA,CAAA,KAAK,MAApB,IAAyB,GAAA,EAAA,GAAA,EAAA;AAAA,GAAE,CAAC,CAAA,CAAA,CAAA;AAC5E;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sceneInterpolator.js","sources":["../../../../../../../src/variables/interpolation/sceneInterpolator.ts"],"sourcesContent":["import { ScopedVars } from '@grafana/data';\nimport { VariableInterpolation } from '@grafana/runtime';\nimport { VariableType, VariableFormatID } from '@grafana/schema';\n\nimport { SceneObject } from '../../core/types';\nimport { InterpolationFormatParameter, isCustomVariableValue, VariableValue } from '../types';\n\nimport { getSceneVariableForScopedVar } from './ScopedVarsVariable';\nimport { formatRegistry, FormatVariable } from './formatRegistry';\nimport { VARIABLE_REGEX } from '../constants';\nimport { lookupVariable } from '../lookupVariable';\nimport { macrosIndex } from '../macros';\n\n/**\n * This function will try to parse and replace any variable expression found in the target string. The sceneObject will be used as the source of variables. It will\n * use the scene graph and walk up the parent tree until it finds the closest variable.\n *\n * ScopedVars should not really be needed much in the new scene architecture as they can be added to the local scene node instead of passed in interpolate function.\n * It is supported here for backward compatibility and some edge cases where adding scoped vars to local scene node is not practical.\n */\nexport function sceneInterpolator(\n sceneObject: SceneObject,\n target: string | undefined | null,\n scopedVars?: ScopedVars,\n format?: InterpolationFormatParameter,\n interpolations?: VariableInterpolation[]\n): string {\n if (!target || typeof target !== 'string') {\n return target ?? '';\n }\n\n VARIABLE_REGEX.lastIndex = 0;\n\n return target.replace(VARIABLE_REGEX, (match, var1, var2, fmt2, var3, fieldPath, fmt3) => {\n const variableName = var1 || var2 || var3;\n const fmt = fmt2 || fmt3 || format;\n const variable = lookupFormatVariable(variableName, match, scopedVars, sceneObject);\n\n if (!variable) {\n if (interpolations) {\n // Set `value` equal to `match` as documented in the `VariableInterpolation` interface.\n interpolations.push({ match, variableName, fieldPath, format: fmt, value: match, found: false });\n }\n return match;\n }\n\n const value = formatValue(sceneObject, variable, variable.getValue(fieldPath), fmt, fieldPath);\n\n if (interpolations) {\n interpolations.push({ match, variableName, fieldPath, format: fmt, value, found: value !== match });\n }\n\n return value;\n });\n}\n\nfunction lookupFormatVariable(\n name: string,\n match: string,\n scopedVars: ScopedVars | undefined,\n sceneObject: SceneObject\n): FormatVariable | null {\n if (scopedVars && scopedVars.hasOwnProperty(name)) {\n const scopedVar = scopedVars[name];\n\n if (scopedVar) {\n return getSceneVariableForScopedVar(name, scopedVar);\n }\n }\n\n const variable = lookupVariable(name, sceneObject);\n if (variable) {\n return variable;\n }\n\n const Macro = macrosIndex.get(name);\n if (Macro) {\n return new Macro(name, sceneObject, match, scopedVars);\n }\n\n return null;\n}\n\nfunction formatValue(\n context: SceneObject,\n variable: FormatVariable,\n value: VariableValue | undefined | null,\n formatNameOrFn?: InterpolationFormatParameter,\n fieldPath?: string\n): string {\n if (value === null || value === undefined) {\n return '';\n }\n\n // Variable can return a custom value that handles formatting\n // This is useful for customAllValue and macros that return values that are already formatted or need special formatting\n if (isCustomVariableValue(value)) {\n return sceneInterpolator(context, value.formatter(formatNameOrFn));\n }\n\n // if it's an object transform value to string\n if (!Array.isArray(value) && typeof value === 'object') {\n value = `${value}`;\n }\n\n if (typeof formatNameOrFn === 'function') {\n return formatNameOrFn(value, {\n name: variable.state.name,\n type: variable.state.type as VariableType,\n multi: variable.state.isMulti,\n includeAll: variable.state.includeAll,\n });\n }\n\n let args: string[] = [];\n\n if (!formatNameOrFn) {\n formatNameOrFn = VariableFormatID.Glob;\n } else {\n // some formats have arguments that come after ':' character\n args = formatNameOrFn.split(':');\n if (args.length > 1) {\n formatNameOrFn = args[0];\n args = args.slice(1);\n } else {\n args = [];\n }\n }\n\n let formatter = formatRegistry.getIfExists(formatNameOrFn);\n\n if (!formatter) {\n console.error(`Variable format ${formatNameOrFn} not found. Using glob format as fallback.`);\n formatter = formatRegistry.get(VariableFormatID.Glob);\n }\n\n return formatter.formatter(value, args, variable, fieldPath);\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lookupVariable.js","sources":["../../../../../../src/variables/lookupVariable.ts"],"sourcesContent":["import { SceneObject } from '../core/types';\nimport { SceneVariable } from './types';\n\n/**\n * Will walk the scene object graph up to the root looking for the first variable with the specified name\n */\nexport function lookupVariable(name: string, sceneObject: SceneObject): SceneVariable | null {\n const variables = sceneObject.state.$variables;\n if (!variables) {\n if (sceneObject.parent) {\n return lookupVariable(name, sceneObject.parent);\n } else {\n return null;\n }\n }\n\n const found = variables.getByName(name);\n if (found) {\n return found;\n } else if (sceneObject.parent) {\n return lookupVariable(name, sceneObject.parent);\n }\n\n return null;\n}\n"],"names":[],"mappings":"AAMgB,SAAA,cAAA,CAAe,MAAc,WAAgD,EAAA;AAC3F,EAAM,MAAA,SAAA,GAAY,YAAY,KAAM,CAAA,UAAA;AACpC,EAAA,IAAI,CAAC,SAAW,EAAA;AACd,IAAA,IAAI,YAAY,MAAQ,EAAA;AACtB,MAAO,OAAA,cAAA,CAAe,IAAM,EAAA,WAAA,CAAY,MAAM,CAAA;AAAA,KACzC,MAAA;AACL,MAAO,OAAA,IAAA;AAAA;AACT;AAGF,EAAM,MAAA,KAAA,GAAQ,SAAU,CAAA,SAAA,CAAU,IAAI,CAAA;AACtC,EAAA,IAAI,KAAO,EAAA;AACT,IAAO,OAAA,KAAA;AAAA,GACT,MAAA,IAAW,YAAY,MAAQ,EAAA;AAC7B,IAAO,OAAA,cAAA,CAAe,IAAM,EAAA,WAAA,CAAY,MAAM,CAAA;AAAA;AAGhD,EAAO,OAAA,IAAA;AACT;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AllVariablesMacro.js","sources":["../../../../../../../src/variables/macros/AllVariablesMacro.ts"],"sourcesContent":["import { SceneObject } from '../../core/types';\nimport { isCustomVariableValue, SceneVariable } from '../types';\nimport { formatRegistry, FormatVariable } from '../interpolation/formatRegistry';\nimport { SkipFormattingValue } from './types';\nimport { VariableFormatID } from '@grafana/schema';\nimport { MultiValueVariable } from '../variants/MultiValueVariable';\nimport { ALL_VARIABLE_VALUE } from '../constants';\n\nexport class AllVariablesMacro implements FormatVariable {\n public state: { name: string; type: string };\n private _sceneObject: SceneObject;\n\n public constructor(name: string, sceneObject: SceneObject) {\n this.state = { name, type: 'url_variable' };\n this._sceneObject = sceneObject;\n }\n\n public getValue(): SkipFormattingValue {\n const allVars = collectAllVariables(this._sceneObject);\n const format = formatRegistry.get(VariableFormatID.QueryParam);\n const params: string[] = [];\n\n for (const name of Object.keys(allVars)) {\n const variable = allVars[name];\n\n if (variable instanceof MultiValueVariable && variable.hasAllValue() && !variable.state.allValue) {\n params.push(format.formatter(ALL_VARIABLE_VALUE, [], variable));\n continue;\n }\n\n const value = variable.getValue();\n\n if (!value) {\n continue;\n }\n\n if (isCustomVariableValue(value)) {\n params.push(value.formatter(VariableFormatID.QueryParam));\n } else {\n params.push(format.formatter(value, [], variable));\n }\n }\n\n return new SkipFormattingValue(params.join('&'));\n }\n\n public getValueText?(): string {\n return '';\n }\n}\n\nfunction collectAllVariables(\n sceneObject: SceneObject,\n record: Record<string, SceneVariable> = {}\n): Record<string, SceneVariable> {\n if (sceneObject.state.$variables) {\n for (const variable of sceneObject.state.$variables.state.variables) {\n if (variable.state.skipUrlSync) {\n continue;\n }\n\n if (!record[variable.state.name]) {\n record[variable.state.name] = variable;\n }\n }\n }\n\n if (sceneObject.parent) {\n collectAllVariables(sceneObject.parent, record);\n }\n\n return record;\n}\n"],"names":[],"mappings":";;;;;;;AAQO,MAAM,iBAA4C,CAAA;AAAA,EAIhD,WAAA,CAAY,MAAc,WAA0B,EAAA;AACzD,IAAA,IAAA,CAAK,KAAQ,GAAA,EAAE,IAAM,EAAA,IAAA,EAAM,cAAe,EAAA;AAC1C,IAAA,IAAA,CAAK,YAAe,GAAA,WAAA;AAAA;AACtB,EAEO,QAAgC,GAAA;AACrC,IAAM,MAAA,OAAA,GAAU,mBAAoB,CAAA,IAAA,CAAK,YAAY,CAAA;AACrD,IAAA,MAAM,MAAS,GAAA,cAAA,CAAe,GAAI,CAAA,gBAAA,CAAiB,UAAU,CAAA;AAC7D,IAAA,MAAM,SAAmB,EAAC;AAE1B,IAAA,KAAA,MAAW,IAAQ,IAAA,MAAA,CAAO,IAAK,CAAA,OAAO,CAAG,EAAA;AACvC,MAAM,MAAA,QAAA,GAAW,QAAQ,IAAI,CAAA;AAE7B,MAAI,IAAA,QAAA,YAAoB,sBAAsB,QAAS,CAAA,WAAA,MAAiB,CAAC,QAAA,CAAS,MAAM,QAAU,EAAA;AAChG,QAAA,MAAA,CAAO,KAAK,MAAO,CAAA,SAAA,CAAU,oBAAoB,EAAC,EAAG,QAAQ,CAAC,CAAA;AAC9D,QAAA;AAAA;AAGF,MAAM,MAAA,KAAA,GAAQ,SAAS,QAAS,EAAA;AAEhC,MAAA,IAAI,CAAC,KAAO,EAAA;AACV,QAAA;AAAA;AAGF,MAAI,IAAA,qBAAA,CAAsB,KAAK,CAAG,EAAA;AAChC,QAAA,MAAA,CAAO,IAAK,CAAA,KAAA,CAAM,SAAU,CAAA,gBAAA,CAAiB,UAAU,CAAC,CAAA;AAAA,OACnD,MAAA;AACL,QAAA,MAAA,CAAO,KAAK,MAAO,CAAA,SAAA,CAAU,OAAO,EAAC,EAAG,QAAQ,CAAC,CAAA;AAAA;AACnD;AAGF,IAAA,OAAO,IAAI,mBAAA,CAAoB,MAAO,CAAA,IAAA,CAAK,GAAG,CAAC,CAAA;AAAA;AACjD,EAEO,YAAwB,GAAA;AAC7B,IAAO,OAAA,EAAA;AAAA;AAEX;AAEA,SAAS,mBACP,CAAA,WAAA,EACA,MAAwC,GAAA,EACT,EAAA;AAC/B,EAAI,IAAA,WAAA,CAAY,MAAM,UAAY,EAAA;AAChC,IAAA,KAAA,MAAW,QAAY,IAAA,WAAA,CAAY,KAAM,CAAA,UAAA,CAAW,MAAM,SAAW,EAAA;AACnE,MAAI,IAAA,QAAA,CAAS,MAAM,WAAa,EAAA;AAC9B,QAAA;AAAA;AAGF,MAAA,IAAI,CAAC,MAAA,CAAO,QAAS,CAAA,KAAA,CAAM,IAAI,CAAG,EAAA;AAChC,QAAO,MAAA,CAAA,QAAA,CAAS,KAAM,CAAA,IAAI,CAAI,GAAA,QAAA;AAAA;AAChC;AACF;AAGF,EAAA,IAAI,YAAY,MAAQ,EAAA;AACtB,IAAoB,mBAAA,CAAA,WAAA,CAAY,QAAQ,MAAM,CAAA;AAAA;AAGhD,EAAO,OAAA,MAAA;AACT;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contextMacros.js","sources":["../../../../../../../src/variables/macros/contextMacros.ts"],"sourcesContent":["import { SceneObject } from '../../core/types';\nimport { FormatVariable } from '../interpolation/formatRegistry';\nimport { config } from '@grafana/runtime';\n\n/**\n * Handles expressions like ${__user.login}\n */\nexport class UserMacro implements FormatVariable {\n public state: { name: string; type: string };\n\n public constructor(name: string, _: SceneObject) {\n this.state = { name: name, type: 'user_macro' };\n }\n\n public getValue(fieldPath?: string): string {\n const user = config.bootData.user;\n\n switch (fieldPath) {\n case 'login':\n return user.login;\n case 'email':\n return user.email;\n case 'id':\n default:\n return String(user.id);\n }\n }\n\n public getValueText?(): string {\n return '';\n }\n}\n\n/**\n * Handles expressions like ${__org.name}\n */\nexport class OrgMacro implements FormatVariable {\n public state: { name: string; type: string };\n\n public constructor(name: string, _: SceneObject) {\n this.state = { name: name, type: 'org_macro' };\n }\n\n public getValue(fieldPath?: string): string {\n const user = config.bootData.user;\n\n switch (fieldPath) {\n case 'name':\n return user.orgName;\n case 'id':\n default:\n return String(user.orgId);\n }\n }\n\n public getValueText?(): string {\n return '';\n }\n}\n"],"names":[],"mappings":";;AAOO,MAAM,SAAoC,CAAA;AAAA,EAGxC,WAAA,CAAY,MAAc,CAAgB,EAAA;AAC/C,IAAA,IAAA,CAAK,KAAQ,GAAA,EAAE,IAAY,EAAA,IAAA,EAAM,YAAa,EAAA;AAAA;AAChD,EAEO,SAAS,SAA4B,EAAA;AAC1C,IAAM,MAAA,IAAA,GAAO,OAAO,QAAS,CAAA,IAAA;AAE7B,IAAA,QAAQ,SAAW;AAAA,MACjB,KAAK,OAAA;AACH,QAAA,OAAO,IAAK,CAAA,KAAA;AAAA,MACd,KAAK,OAAA;AACH,QAAA,OAAO,IAAK,CAAA,KAAA;AAAA,MACd,KAAK,IAAA;AAAA,MACL;AACE,QAAO,OAAA,MAAA,CAAO,KAAK,EAAE,CAAA;AAAA;AACzB;AACF,EAEO,YAAwB,GAAA;AAC7B,IAAO,OAAA,EAAA;AAAA;AAEX;AAKO,MAAM,QAAmC,CAAA;AAAA,EAGvC,WAAA,CAAY,MAAc,CAAgB,EAAA;AAC/C,IAAA,IAAA,CAAK,KAAQ,GAAA,EAAE,IAAY,EAAA,IAAA,EAAM,WAAY,EAAA;AAAA;AAC/C,EAEO,SAAS,SAA4B,EAAA;AAC1C,IAAM,MAAA,IAAA,GAAO,OAAO,QAAS,CAAA,IAAA;AAE7B,IAAA,QAAQ,SAAW;AAAA,MACjB,KAAK,MAAA;AACH,QAAA,OAAO,IAAK,CAAA,OAAA;AAAA,MACd,KAAK,IAAA;AAAA,MACL;AACE,QAAO,OAAA,MAAA,CAAO,KAAK,KAAK,CAAA;AAAA;AAC5B;AACF,EAEO,YAAwB,GAAA;AAC7B,IAAO,OAAA,EAAA;AAAA;AAEX;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataMacros.js","sources":["../../../../../../../src/variables/macros/dataMacros.ts"],"sourcesContent":["import {\n FieldType,\n formattedValueToString,\n getDisplayProcessor,\n ScopedVars,\n DataContextScopedVar,\n getFieldDisplayValuesProxy,\n getFrameDisplayName,\n} from '@grafana/data';\nimport { SceneObject } from '../../core/types';\nimport { getFieldAccessor } from '../interpolation/fieldAccessorCache';\nimport { FormatVariable } from '../interpolation/formatRegistry';\nimport { VariableValue } from '../types';\nimport { getTemplateProxyForField } from './templateProxies';\n\n/**\n * This macro handles the ${__value.*} interpolation\n * match represents the regex match and is the full expression, example `${varname.fieldpath}`\n * Macros can return the match when they identify that there required data context is not provided.\n * This leaves the expression intact so that it can be interpolated later when the data context is available.\n */\nexport class ValueMacro implements FormatVariable {\n public state: { name: string; type: string };\n\n public constructor(name: string, sceneObject: SceneObject, private _match: string, private _scopedVars?: ScopedVars) {\n this.state = { name, type: '__value' };\n }\n\n public getValue(fieldPath?: string): VariableValue {\n const dataContext: DataContextScopedVar | undefined = this._scopedVars?.__dataContext;\n if (!dataContext) {\n return this._match;\n }\n\n const { frame, rowIndex, field, calculatedValue } = dataContext.value;\n\n if (calculatedValue) {\n switch (fieldPath) {\n case 'numeric':\n return calculatedValue.numeric;\n case 'raw':\n return calculatedValue.numeric;\n case 'time':\n return '';\n case 'text':\n default:\n return formattedValueToString(calculatedValue);\n }\n }\n\n if (rowIndex == null) {\n return this._match;\n }\n\n if (fieldPath === 'time') {\n const timeField = frame.fields.find((f) => f.type === FieldType.time);\n return timeField ? timeField.values.get(rowIndex) : undefined;\n }\n\n if (!field) {\n return this._match;\n }\n\n const value = field.values.get(rowIndex);\n if (fieldPath === 'raw') {\n return value;\n }\n\n const displayProcessor = field.display ?? fallbackDisplayProcessor;\n const result = displayProcessor(value);\n\n switch (fieldPath) {\n case 'numeric':\n return result.numeric;\n case 'text':\n default:\n return formattedValueToString(result);\n }\n }\n\n public getValueText?(): string {\n return '';\n }\n}\n\nconst fallbackDisplayProcessor = getDisplayProcessor();\n\n/**\n * This macro handles the ${__data.*} interpolation. This is a bit poorly named as most of the\n * expressions that this macro evaluates are really \"row\" based values enabling you to access\n * values in other fields on the same row.\n */\nexport class DataMacro implements FormatVariable {\n public state: { name: string; type: string };\n\n public constructor(name: string, sceneObject: SceneObject, private _match: string, private _scopedVars?: ScopedVars) {\n this.state = { name, type: '__data' };\n }\n\n public getValue(fieldPath?: string): VariableValue {\n const dataContext = this._scopedVars?.__dataContext;\n if (!dataContext || !fieldPath) {\n return this._match;\n }\n\n const { frame, rowIndex } = dataContext.value;\n\n if (rowIndex === undefined || fieldPath === undefined) {\n return this._match;\n }\n\n const obj = {\n name: frame.name,\n refId: frame.refId,\n fields: getFieldDisplayValuesProxy({ frame, rowIndex }),\n };\n\n return getFieldAccessor(fieldPath)(obj) ?? '';\n }\n\n public getValueText?(): string {\n return '';\n }\n}\n\n/**\n * This macro handles the ${__series.name} interpolation.\n */\nexport class SeriesMacro implements FormatVariable {\n public state: { name: string; type: string };\n\n public constructor(name: string, sceneObject: SceneObject, private _match: string, private _scopedVars?: ScopedVars) {\n this.state = { name, type: '__series' };\n }\n\n public getValue(fieldPath?: string): VariableValue {\n const dataContext = this._scopedVars?.__dataContext;\n if (!dataContext || !fieldPath) {\n return this._match;\n }\n\n if (fieldPath !== 'name') {\n return this._match;\n }\n\n const { frame, frameIndex } = dataContext.value;\n return getFrameDisplayName(frame, frameIndex);\n }\n\n public getValueText?(): string {\n return '';\n }\n}\n\n/**\n * This macro handles the ${__field.*} interpolation. These do not require a data context.\n * And can be easily used in field config options like displayName.\n */\nexport class FieldMacro implements FormatVariable {\n public state: { name: string; type: string };\n\n public constructor(name: string, sceneObject: SceneObject, private _match: string, private _scopedVars?: ScopedVars) {\n this.state = { name, type: '__field' };\n }\n\n public getValue(fieldPath?: string): VariableValue {\n const dataContext = this._scopedVars?.__dataContext;\n if (!dataContext || !fieldPath) {\n return this._match;\n }\n\n if (fieldPath === undefined || fieldPath === '') {\n return this._match;\n }\n\n const { frame, field, data } = dataContext.value;\n const obj = getTemplateProxyForField(field, frame, data);\n\n return getFieldAccessor(fieldPath)(obj) ?? '';\n }\n\n public getValueText?(): string {\n return '';\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../../src/variables/macros/index.ts"],"sourcesContent":["import { DataLinkBuiltInVars } from '@grafana/data';\nimport { MacroVariableConstructor } from './types';\nimport { IntervalMacro, TimeFromAndToMacro, TimezoneMacro, UrlTimeRangeMacro } from './timeMacros';\nimport { AllVariablesMacro } from './AllVariablesMacro';\nimport { DataMacro, FieldMacro, SeriesMacro, ValueMacro } from './dataMacros';\nimport { UrlMacro } from './urlMacros';\nimport { OrgMacro, UserMacro } from './contextMacros';\n\nexport const macrosIndex = new Map<string, MacroVariableConstructor>([\n [DataLinkBuiltInVars.includeVars, AllVariablesMacro],\n [DataLinkBuiltInVars.keepTime, UrlTimeRangeMacro],\n ['__value', ValueMacro],\n ['__data', DataMacro],\n ['__series', SeriesMacro],\n ['__field', FieldMacro],\n ['__url', UrlMacro],\n ['__from', TimeFromAndToMacro],\n ['__to', TimeFromAndToMacro],\n ['__timezone', TimezoneMacro],\n ['__user', UserMacro],\n ['__org', OrgMacro],\n ['__interval', IntervalMacro],\n ['__interval_ms', IntervalMacro],\n]);\n\n/**\n * Allows you to register a variable expression macro that can then be used in strings with syntax ${<macro_name>.<fieldPath>}\n * Call this on app activation and unregister the macro on deactivation.\n * @param replace WARNING! If true, this will replace the existing macro with the same name. This is global and will affect all apps. Unregistering the macro will restore the original macro.\n * @returns a function that unregisters the macro\n */\nexport function registerVariableMacro(name: string, macro: MacroVariableConstructor, replace = false): () => void {\n if (!replace && macrosIndex.get(name)) {\n throw new Error(`Macro already registered ${name}`);\n }\n\n macrosIndex.set(name, macro);\n\n return () => {\n if (replace) {\n throw new Error(`Replaced macros can not be unregistered. They need to be restored manually.`);\n } else {\n macrosIndex.delete(name);\n }\n };\n}\n"],"names":[],"mappings":";;;;;;;AAQa,MAAA,WAAA,uBAAkB,GAAsC,CAAA;AAAA,EACnE,CAAC,mBAAoB,CAAA,WAAA,EAAa,iBAAiB,CAAA;AAAA,EACnD,CAAC,mBAAoB,CAAA,QAAA,EAAU,iBAAiB,CAAA;AAAA,EAChD,CAAC,WAAW,UAAU,CAAA;AAAA,EACtB,CAAC,UAAU,SAAS,CAAA;AAAA,EACpB,CAAC,YAAY,WAAW,CAAA;AAAA,EACxB,CAAC,WAAW,UAAU,CAAA;AAAA,EACtB,CAAC,SAAS,QAAQ,CAAA;AAAA,EAClB,CAAC,UAAU,kBAAkB,CAAA;AAAA,EAC7B,CAAC,QAAQ,kBAAkB,CAAA;AAAA,EAC3B,CAAC,cAAc,aAAa,CAAA;AAAA,EAC5B,CAAC,UAAU,SAAS,CAAA;AAAA,EACpB,CAAC,SAAS,QAAQ,CAAA;AAAA,EAClB,CAAC,cAAc,aAAa,CAAA;AAAA,EAC5B,CAAC,iBAAiB,aAAa;AACjC,CAAC;AAQM,SAAS,qBAAsB,CAAA,IAAA,EAAc,KAAiC,EAAA,OAAA,GAAU,KAAmB,EAAA;AAChH,EAAA,IAAI,CAAC,OAAA,IAAW,WAAY,CAAA,GAAA,CAAI,IAAI,CAAG,EAAA;AACrC,IAAA,MAAM,IAAI,KAAA,CAAM,CAA4B,yBAAA,EAAA,IAAI,CAAE,CAAA,CAAA;AAAA;AAGpD,EAAY,WAAA,CAAA,GAAA,CAAI,MAAM,KAAK,CAAA;AAE3B,EAAA,OAAO,MAAM;AACX,IAAA,IAAI,OAAS,EAAA;AACX,MAAM,MAAA,IAAI,MAAM,CAA6E,2EAAA,CAAA,CAAA;AAAA,KACxF,MAAA;AACL,MAAA,WAAA,CAAY,OAAO,IAAI,CAAA;AAAA;AACzB,GACF;AACF;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templateProxies.js","sources":["../../../../../../../src/variables/macros/templateProxies.ts"],"sourcesContent":["import { Field, DataFrame, getFieldDisplayName, formatLabels } from '@grafana/data';\n\n/**\n * This object is created often, and only used when tmplates exist. Using a proxy lets us delay\n * calculations of the more complex structures (label names) until they are actually used\n */\nexport function getTemplateProxyForField(field: Field, frame?: DataFrame, frames?: DataFrame[]): any {\n return new Proxy(\n {}, // This object shows up in test snapshots\n {\n get: (obj, key) => {\n if (key === 'name') {\n return field.name;\n }\n\n if (key === 'displayName') {\n return getFieldDisplayName(field, frame, frames);\n }\n\n if (key === 'labels' || key === 'formattedLabels') {\n // formattedLabels deprecated\n if (!field.labels) {\n return '';\n }\n return {\n ...field.labels,\n __values: Object.values(field.labels).sort().join(', '),\n toString: () => {\n return formatLabels(field.labels!, '', true);\n },\n };\n }\n return undefined;\n },\n }\n );\n}\n"],"names":[],"mappings":";;AAMgB,SAAA,wBAAA,CAAyB,KAAc,EAAA,KAAA,EAAmB,MAA2B,EAAA;AACnG,EAAA,OAAO,IAAI,KAAA;AAAA,IACT,EAAC;AAAA;AAAA,IACD;AAAA,MACE,GAAA,EAAK,CAAC,GAAA,EAAK,GAAQ,KAAA;AACjB,QAAA,IAAI,QAAQ,MAAQ,EAAA;AAClB,UAAA,OAAO,KAAM,CAAA,IAAA;AAAA;AAGf,QAAA,IAAI,QAAQ,aAAe,EAAA;AACzB,UAAO,OAAA,mBAAA,CAAoB,KAAO,EAAA,KAAA,EAAO,MAAM,CAAA;AAAA;AAGjD,QAAI,IAAA,GAAA,KAAQ,QAAY,IAAA,GAAA,KAAQ,iBAAmB,EAAA;AAEjD,UAAI,IAAA,CAAC,MAAM,MAAQ,EAAA;AACjB,YAAO,OAAA,EAAA;AAAA;AAET,UAAO,OAAA;AAAA,YACL,GAAG,KAAM,CAAA,MAAA;AAAA,YACT,QAAA,EAAU,OAAO,MAAO,CAAA,KAAA,CAAM,MAAM,CAAE,CAAA,IAAA,EAAO,CAAA,IAAA,CAAK,IAAI,CAAA;AAAA,YACtD,UAAU,MAAM;AACd,cAAA,OAAO,YAAa,CAAA,KAAA,CAAM,MAAS,EAAA,EAAA,EAAI,IAAI,CAAA;AAAA;AAC7C,WACF;AAAA;AAEF,QAAO,OAAA,MAAA;AAAA;AACT;AACF,GACF;AACF;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeMacros.js","sources":["../../../../../../../src/variables/macros/timeMacros.ts"],"sourcesContent":["import { dateTimeFormat, urlUtil } from '@grafana/data';\nimport { getTimeRange } from '../../core/sceneGraph/getTimeRange';\nimport { getData } from '../../core/sceneGraph/sceneGraph';\nimport { SceneObject } from '../../core/types';\nimport { FormatVariable } from '../interpolation/formatRegistry';\nimport { SkipFormattingValue } from './types';\n\n/**\n * Handles expressions like $__url_time_range.\n */\nexport class UrlTimeRangeMacro implements FormatVariable {\n public state: { name: string; type: string };\n private _sceneObject: SceneObject;\n\n public constructor(name: string, sceneObject: SceneObject) {\n this.state = { name: name, type: 'url_variable' };\n this._sceneObject = sceneObject;\n }\n\n public getValue(): SkipFormattingValue {\n const timeRange = getTimeRange(this._sceneObject);\n const urlState = timeRange.urlSync?.getUrlState();\n return new SkipFormattingValue(urlUtil.toUrlParams(urlState));\n }\n\n public getValueText?(): string {\n return '';\n }\n}\n\n/**\n * Handles expressions like $__from and $__to.\n */\nexport class TimeFromAndToMacro implements FormatVariable {\n public state: { name: string; type: string };\n private _sceneObject: SceneObject;\n\n public constructor(name: string, sceneObject: SceneObject) {\n this.state = { name: name, type: 'time_macro' };\n this._sceneObject = sceneObject;\n }\n\n public getValue() {\n const timeRange = getTimeRange(this._sceneObject);\n if (this.state.name === '__from') {\n return timeRange.state.value.from.valueOf();\n } else {\n return timeRange.state.value.to.valueOf();\n }\n }\n\n public getValueText?(): string {\n const timeRange = getTimeRange(this._sceneObject);\n if (this.state.name === '__from') {\n return dateTimeFormat(timeRange.state.value.from, { timeZone: timeRange.getTimeZone() });\n } else {\n return dateTimeFormat(timeRange.state.value.to, { timeZone: timeRange.getTimeZone() });\n }\n }\n}\n\n/**\n * Handles $__timezone expression.\n */\nexport class TimezoneMacro implements FormatVariable {\n public state: { name: string; type: string };\n private _sceneObject: SceneObject;\n\n public constructor(name: string, sceneObject: SceneObject) {\n this.state = { name: name, type: 'time_macro' };\n this._sceneObject = sceneObject;\n }\n\n public getValue() {\n const timeRange = getTimeRange(this._sceneObject);\n const timeZone = timeRange.getTimeZone();\n\n if (timeZone === 'browser') {\n return Intl.DateTimeFormat().resolvedOptions().timeZone;\n }\n\n return timeZone;\n }\n\n public getValueText?(): string {\n return this.getValue();\n }\n}\n\n/**\n * Handles $__interval and $__intervalMs expression.\n */\nexport class IntervalMacro implements FormatVariable {\n public state: { name: string; type: string; match: string };\n private _sceneObject: SceneObject;\n\n public constructor(name: string, sceneObject: SceneObject, match: string) {\n this.state = { name: name, type: 'time_macro', match: match };\n this._sceneObject = sceneObject;\n }\n\n public getValue() {\n const data = getData(this._sceneObject);\n\n if (data) {\n const request = data.state.data?.request;\n if (!request) {\n return this.state.match;\n }\n if (this.state.name === '__interval_ms') {\n return request.intervalMs;\n }\n return request.interval;\n }\n\n return this.state.match;\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../../../../../../../src/variables/macros/types.ts"],"sourcesContent":["import { ScopedVars } from '@grafana/data';\nimport { SceneObject } from '../../core/types';\nimport { FormatVariable } from '../interpolation/formatRegistry';\nimport { CustomVariableValue } from '../types';\n\nexport interface MacroVariableConstructor {\n new (name: string, sceneObject: SceneObject, fullMatch: string, scopedVars?: ScopedVars): FormatVariable;\n}\n\n/**\n * The sceneInterpolator will detect if getValue returns VariableValueCustom and will skip the normal formatting\n * This is useful as otherwise we would url encode macros like $__all_variables twice.\n */\nexport class SkipFormattingValue implements CustomVariableValue {\n public constructor(private _value: string) {}\n\n public formatter(): string {\n return this._value;\n }\n}\n"],"names":[],"mappings":"AAaO,MAAM,mBAAmD,CAAA;AAAA,EACvD,YAAoB,MAAgB,EAAA;AAAhB,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAAA;AAAiB,EAErC,SAAoB,GAAA;AACzB,IAAA,OAAO,IAAK,CAAA,MAAA;AAAA;AAEhB;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"urlMacros.js","sources":["../../../../../../../src/variables/macros/urlMacros.ts"],"sourcesContent":["import { config, locationService } from '@grafana/runtime';\nimport { SceneObject } from '../../core/types';\nimport { FormatVariable } from '../interpolation/formatRegistry';\nimport { CustomVariableValue } from '../types';\n\nexport class UrlMacro implements FormatVariable {\n public state: { name: string; type: string };\n\n public constructor(name: string, _: SceneObject) {\n this.state = { name: name, type: 'url_macro' };\n }\n\n public getValue(fieldPath?: string) {\n const location = locationService.getLocation();\n const subUrl = config.appSubUrl ?? '';\n\n switch (fieldPath ?? '') {\n case 'params':\n return new UrlStateFormatter(location.search);\n case 'path':\n return subUrl + location.pathname;\n case '':\n default:\n return subUrl + location.pathname + location.search;\n }\n }\n\n public getValueText?(): string {\n return '';\n }\n}\n\nclass UrlStateFormatter implements CustomVariableValue {\n public constructor(private _urlQueryParams: string) {}\n\n public formatter(options: string): string {\n if (!options) {\n return this._urlQueryParams;\n }\n\n const params = options.split(':');\n if (params[0] === 'exclude' && params.length > 1) {\n const allParams = new URLSearchParams(this._urlQueryParams);\n for (const param of params[1].split(',')) {\n allParams.delete(param);\n }\n\n return `?${allParams}`;\n }\n\n if (params[0] === 'include' && params.length > 1) {\n const allParams = new URLSearchParams(this._urlQueryParams);\n const includeOnly = params[1].split(',');\n\n for (const param of allParams.keys()) {\n if (!includeOnly.includes(param)) {\n allParams.delete(param);\n }\n }\n\n return `?${allParams}`;\n }\n\n return this._urlQueryParams;\n }\n}\n"],"names":[],"mappings":";;AAKO,MAAM,QAAmC,CAAA;AAAA,EAGvC,WAAA,CAAY,MAAc,CAAgB,EAAA;AAC/C,IAAA,IAAA,CAAK,KAAQ,GAAA,EAAE,IAAY,EAAA,IAAA,EAAM,WAAY,EAAA;AAAA;AAC/C,EAEO,SAAS,SAAoB,EAAA;AAZtC,IAAA,IAAA,EAAA;AAaI,IAAM,MAAA,QAAA,GAAW,gBAAgB,WAAY,EAAA;AAC7C,IAAM,MAAA,MAAA,GAAA,CAAS,EAAO,GAAA,MAAA,CAAA,SAAA,KAAP,IAAoB,GAAA,EAAA,GAAA,EAAA;AAEnC,IAAA,QAAQ,gCAAa,EAAI;AAAA,MACvB,KAAK,QAAA;AACH,QAAO,OAAA,IAAI,iBAAkB,CAAA,QAAA,CAAS,MAAM,CAAA;AAAA,MAC9C,KAAK,MAAA;AACH,QAAA,OAAO,SAAS,QAAS,CAAA,QAAA;AAAA,MAC3B,KAAK,EAAA;AAAA,MACL;AACE,QAAO,OAAA,MAAA,GAAS,QAAS,CAAA,QAAA,GAAW,QAAS,CAAA,MAAA;AAAA;AACjD;AACF,EAEO,YAAwB,GAAA;AAC7B,IAAO,OAAA,EAAA;AAAA;AAEX;AAEA,MAAM,iBAAiD,CAAA;AAAA,EAC9C,YAAoB,eAAyB,EAAA;AAAzB,IAAA,IAAA,CAAA,eAAA,GAAA,eAAA;AAAA;AAA0B,EAE9C,UAAU,OAAyB,EAAA;AACxC,IAAA,IAAI,CAAC,OAAS,EAAA;AACZ,MAAA,OAAO,IAAK,CAAA,eAAA;AAAA;AAGd,IAAM,MAAA,MAAA,GAAS,OAAQ,CAAA,KAAA,CAAM,GAAG,CAAA;AAChC,IAAA,IAAI,OAAO,CAAC,CAAA,KAAM,SAAa,IAAA,MAAA,CAAO,SAAS,CAAG,EAAA;AAChD,MAAA,MAAM,SAAY,GAAA,IAAI,eAAgB,CAAA,IAAA,CAAK,eAAe,CAAA;AAC1D,MAAA,KAAA,MAAW,SAAS,MAAO,CAAA,CAAC,CAAE,CAAA,KAAA,CAAM,GAAG,CAAG,EAAA;AACxC,QAAA,SAAA,CAAU,OAAO,KAAK,CAAA;AAAA;AAGxB,MAAA,OAAO,IAAI,SAAS,CAAA,CAAA;AAAA;AAGtB,IAAA,IAAI,OAAO,CAAC,CAAA,KAAM,SAAa,IAAA,MAAA,CAAO,SAAS,CAAG,EAAA;AAChD,MAAA,MAAM,SAAY,GAAA,IAAI,eAAgB,CAAA,IAAA,CAAK,eAAe,CAAA;AAC1D,MAAA,MAAM,WAAc,GAAA,MAAA,CAAO,CAAC,CAAA,CAAE,MAAM,GAAG,CAAA;AAEvC,MAAW,KAAA,MAAA,KAAA,IAAS,SAAU,CAAA,IAAA,EAAQ,EAAA;AACpC,QAAA,IAAI,CAAC,WAAA,CAAY,QAAS,CAAA,KAAK,CAAG,EAAA;AAChC,UAAA,SAAA,CAAU,OAAO,KAAK,CAAA;AAAA;AACxB;AAGF,MAAA,OAAO,IAAI,SAAS,CAAA,CAAA;AAAA;AAGtB,IAAA,OAAO,IAAK,CAAA,eAAA;AAAA;AAEhB;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SceneVariableSet.js","sources":["../../../../../../../src/variables/sets/SceneVariableSet.ts"],"sourcesContent":["import { VariableRefresh } from '@grafana/data';\nimport { Unsubscribable } from 'rxjs';\nimport { sceneGraph } from '../../core/sceneGraph';\n\nimport { SceneObjectBase } from '../../core/SceneObjectBase';\nimport { SceneObject } from '../../core/types';\nimport { writeSceneLog } from '../../utils/writeSceneLog';\nimport {\n SceneVariable,\n SceneVariableDependencyConfigLike,\n SceneVariables,\n SceneVariableSetState,\n SceneVariableValueChangedEvent,\n} from '../types';\nimport { VariableValueRecorder } from '../VariableValueRecorder';\n\nexport class SceneVariableSet extends SceneObjectBase<SceneVariableSetState> implements SceneVariables {\n /** Variables that are scheduled to be validated and updated */\n private _variablesToUpdate = new Set<SceneVariable>();\n\n /** Variables currently updating */\n private _updating = new Map<SceneVariable, VariableUpdateInProgress>();\n\n private _variableValueRecorder = new VariableValueRecorder();\n\n /**\n * This makes sure SceneVariableSet's higher up in the chain notify us when parent level variables complete update batches.\n **/\n protected _variableDependency = new SceneVariableSetVariableDependencyHandler(\n this._handleParentVariableUpdatesCompleted.bind(this)\n );\n\n public getByName(name: string): SceneVariable | undefined {\n // TODO: Replace with index\n return this.state.variables.find((x) => x.state.name === name);\n }\n\n public constructor(state: SceneVariableSetState) {\n super(state);\n\n this.addActivationHandler(this._onActivate);\n }\n\n /**\n * Subscribes to child variable value changes, and starts the variable value validation process\n */\n private _onActivate = () => {\n const timeRange = sceneGraph.getTimeRange(this);\n // Subscribe to changes to child variables\n this._subs.add(\n this.subscribeToEvent(SceneVariableValueChangedEvent, (event) => this._handleVariableValueChanged(event.payload))\n );\n\n this._subs.add(\n timeRange.subscribeToState(() => {\n this._refreshTimeRangeBasedVariables();\n })\n );\n\n // Subscribe to state changes\n this._subs.add(this.subscribeToState(this._onStateChanged));\n\n this._checkForVariablesThatChangedWhileInactive();\n\n // Add all variables that need updating to queue\n for (const variable of this.state.variables) {\n if (this._variableNeedsUpdate(variable)) {\n this._variablesToUpdate.add(variable);\n }\n }\n\n this._updateNextBatch();\n\n // Return deactivation handler;\n return this._onDeactivate;\n };\n\n /**\n * Add all variables that depend on the changed variable to the update queue\n */\n private _refreshTimeRangeBasedVariables() {\n for (const variable of this.state.variables) {\n if ('refresh' in variable.state && variable.state.refresh === VariableRefresh.onTimeRangeChanged) {\n this._variablesToUpdate.add(variable);\n }\n }\n this._updateNextBatch();\n }\n\n /**\n * Cancel all currently running updates\n */\n private _onDeactivate = () => {\n for (const update of this._updating.values()) {\n update.subscription?.unsubscribe();\n }\n\n // Remember current variable values\n for (const variable of this.state.variables) {\n // if the current variable is not in queue to update and validate and not being actively updated then the value is ok\n if (!this._variablesToUpdate.has(variable) && !this._updating.has(variable)) {\n this._variableValueRecorder.recordCurrentValue(variable);\n }\n }\n\n this._variablesToUpdate.clear();\n this._updating.clear();\n };\n\n /**\n * Look for new variables that need to be initialized\n */\n private _onStateChanged = (newState: SceneVariableSetState, oldState: SceneVariableSetState) => {\n const variablesToUpdateCountStart = this._variablesToUpdate.size;\n\n // Check for removed variables\n for (const variable of oldState.variables) {\n if (!newState.variables.includes(variable)) {\n const updating = this._updating.get(variable);\n if (updating?.subscription) {\n updating.subscription.unsubscribe();\n }\n this._updating.delete(variable);\n this._variablesToUpdate.delete(variable);\n }\n }\n\n // Check for new variables\n for (const variable of newState.variables) {\n if (!oldState.variables.includes(variable)) {\n if (this._variableNeedsUpdate(variable)) {\n this._variablesToUpdate.add(variable);\n }\n }\n }\n\n // Only start a new batch if there was no batch already running\n if (variablesToUpdateCountStart === 0 && this._variablesToUpdate.size > 0) {\n this._updateNextBatch();\n }\n };\n\n /**\n * If variables changed while in in-active state we don't get any change events, so we need to check for that here.\n */\n private _checkForVariablesThatChangedWhileInactive() {\n if (!this._variableValueRecorder.hasValues()) {\n return;\n }\n\n for (const variable of this.state.variables) {\n if (this._variableValueRecorder.hasValueChanged(variable)) {\n writeVariableTraceLog(variable, 'Changed while in-active');\n this._addDependentVariablesToUpdateQueue(variable);\n }\n }\n }\n\n private _variableNeedsUpdate(variable: SceneVariable): boolean {\n if (variable.isLazy) {\n return false;\n }\n\n if (!variable.validateAndUpdate) {\n return false;\n }\n\n // If we have recorded valid value (even if it has changed since we do not need to re-validate this variable)\n if (this._variableValueRecorder.hasRecordedValue(variable)) {\n writeVariableTraceLog(variable, 'Skipping updateAndValidate current value valid');\n return false;\n }\n\n return true;\n }\n\n /**\n * This loops through variablesToUpdate and update all that can.\n * If one has a dependency that is currently in variablesToUpdate it will be skipped for now.\n */\n private _updateNextBatch() {\n for (const variable of this._variablesToUpdate) {\n if (!variable.validateAndUpdate) {\n console.error('Variable added to variablesToUpdate but does not have validateAndUpdate');\n continue;\n }\n\n // Ignore it if it's already started\n if (this._updating.has(variable)) {\n continue;\n }\n\n // Wait for variables that has dependencies that also needs updates\n if (sceneGraph.hasVariableDependencyInLoadingState(variable)) {\n continue;\n }\n\n const variableToUpdate: VariableUpdateInProgress = {\n variable,\n };\n\n this._updating.set(variable, variableToUpdate);\n writeVariableTraceLog(variable, 'updateAndValidate started');\n\n variableToUpdate.subscription = variable.validateAndUpdate().subscribe({\n next: () => this._validateAndUpdateCompleted(variable),\n complete: () => this._validateAndUpdateCompleted(variable),\n error: (err) => this._handleVariableError(variable, err),\n });\n }\n }\n\n /**\n * A variable has completed its update process. This could mean that variables that depend on it can now be updated in turn.\n */\n private _validateAndUpdateCompleted(variable: SceneVariable) {\n if (!this._updating.has(variable)) {\n return;\n }\n\n const update = this._updating.get(variable);\n update?.subscription?.unsubscribe();\n\n this._updating.delete(variable);\n this._variablesToUpdate.delete(variable);\n\n writeVariableTraceLog(variable, 'updateAndValidate completed');\n\n this._notifyDependentSceneObjects(variable);\n this._updateNextBatch();\n }\n\n public cancel(variable: SceneVariable) {\n const update = this._updating.get(variable);\n update?.subscription?.unsubscribe();\n\n this._updating.delete(variable);\n this._variablesToUpdate.delete(variable);\n }\n\n private _handleVariableError(variable: SceneVariable, err: Error) {\n const update = this._updating.get(variable);\n update?.subscription?.unsubscribe();\n\n this._updating.delete(variable);\n this._variablesToUpdate.delete(variable);\n\n variable.setState({ loading: false, error: err.message });\n\n console.error('SceneVariableSet updateAndValidate error', err);\n\n writeVariableTraceLog(variable, 'updateAndValidate error', err);\n\n this._notifyDependentSceneObjects(variable);\n this._updateNextBatch();\n }\n\n private _handleVariableValueChanged(variableThatChanged: SceneVariable) {\n this._addDependentVariablesToUpdateQueue(variableThatChanged);\n\n // Ignore this change if it is currently updating\n if (!this._updating.has(variableThatChanged)) {\n this._updateNextBatch();\n this._notifyDependentSceneObjects(variableThatChanged);\n }\n }\n\n /**\n * This is called by any parent level variable set to notify scene that an update batch is completed.\n * This is the main mechanism lower level variable set's react to changes on higher levels.\n */\n private _handleParentVariableUpdatesCompleted(variable: SceneVariable, hasChanged: boolean) {\n // First loop through changed variables and add any of our variables that depend on the higher level variable to the update queue\n if (hasChanged) {\n this._addDependentVariablesToUpdateQueue(variable);\n }\n\n // If we have variables to update but none are currently updating kick of a new update batch\n if (this._variablesToUpdate.size > 0 && this._updating.size === 0) {\n this._updateNextBatch();\n }\n }\n\n private _addDependentVariablesToUpdateQueue(variableThatChanged: SceneVariable) {\n for (const otherVariable of this.state.variables) {\n if (otherVariable.variableDependency) {\n if (otherVariable.variableDependency.hasDependencyOn(variableThatChanged.state.name)) {\n writeVariableTraceLog(otherVariable, 'Added to update queue, dependant variable value changed');\n\n if (this._updating.has(otherVariable) && otherVariable.onCancel) {\n otherVariable.onCancel();\n }\n\n if (otherVariable.validateAndUpdate) {\n this._variablesToUpdate.add(otherVariable);\n }\n\n // Because _traverseSceneAndNotify skips itself (and this sets variables) we call this here to notify the variable of the change\n otherVariable.variableDependency.variableUpdateCompleted(variableThatChanged, true);\n }\n }\n }\n }\n\n /**\n * Walk scene object graph and update all objects that depend on variables that have changed\n */\n private _notifyDependentSceneObjects(variable: SceneVariable) {\n if (!this.parent) {\n return;\n }\n\n this._traverseSceneAndNotify(this.parent, variable, true);\n }\n\n /**\n * Recursivly walk the full scene object graph and notify all objects with dependencies that include any of changed variables\n */\n private _traverseSceneAndNotify(sceneObject: SceneObject, variable: SceneVariable, hasChanged: boolean) {\n // No need to notify variables under this SceneVariableSet\n if (this === sceneObject) {\n return;\n }\n\n // Skip non active scene objects\n if (!sceneObject.isActive) {\n return;\n }\n\n // If we find a nested SceneVariableSet that has a variable with the same name we stop the traversal\n if (sceneObject.state.$variables && sceneObject.state.$variables !== this) {\n const localVar = sceneObject.state.$variables.getByName(variable.state.name);\n // If local variable is viewed as loading when ancestor is loading we propagate a change\n if (localVar?.isAncestorLoading) {\n variable = localVar;\n } else if (localVar) {\n return;\n }\n }\n\n if (sceneObject.variableDependency) {\n sceneObject.variableDependency.variableUpdateCompleted(variable, hasChanged);\n }\n\n sceneObject.forEachChild((child) => this._traverseSceneAndNotify(child, variable, hasChanged));\n }\n\n /**\n * Return true if variable is waiting to update or currently updating.\n * It also returns true if a dependency of the variable is loading.\n *\n * For example if C depends on variable B which depends on variable A and A is loading this returns true for variable C and B.\n */\n public isVariableLoadingOrWaitingToUpdate(variable: SceneVariable) {\n if (variable.state.loading) {\n return true;\n }\n\n if (variable.isAncestorLoading && variable.isAncestorLoading()) {\n return true;\n }\n\n if (this._variablesToUpdate.has(variable) || this._updating.has(variable)) {\n return true;\n }\n\n // Last scenario is to check the variable's own dependencies as well\n return sceneGraph.hasVariableDependencyInLoadingState(variable);\n }\n}\n\nexport interface VariableUpdateInProgress {\n variable: SceneVariable;\n subscription?: Unsubscribable;\n}\n\nfunction writeVariableTraceLog(variable: SceneVariable, message: string, err?: Error) {\n if (err) {\n writeSceneLog('SceneVariableSet', `Variable[${variable.state.name}]: ${message}`, err);\n } else {\n writeSceneLog('SceneVariableSet', `Variable[${variable.state.name}]: ${message}`);\n }\n}\n\nclass SceneVariableSetVariableDependencyHandler implements SceneVariableDependencyConfigLike {\n public constructor(private _variableUpdatesCompleted: (variable: SceneVariable, hasChanged: boolean) => void) {}\n\n private _emptySet = new Set<string>();\n\n public getNames(): Set<string> {\n return this._emptySet;\n }\n\n public hasDependencyOn(name: string): boolean {\n return false;\n }\n\n public variableUpdateCompleted(variable: SceneVariable, hasChanged: boolean): void {\n this._variableUpdatesCompleted(variable, hasChanged);\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../../../../../../src/variables/types.ts"],"sourcesContent":["import { Observable } from 'rxjs';\n\nimport { BusEventWithPayload } from '@grafana/data';\nimport { VariableType, VariableHide } from '@grafana/schema';\n\nimport { SceneObject, SceneObjectState } from '../core/types';\n\nexport interface SceneVariableState extends SceneObjectState {\n type: VariableType;\n name: string;\n label?: string;\n hide?: VariableHide;\n skipUrlSync?: boolean;\n loading?: boolean;\n error?: any | null;\n description?: string | null;\n // A default variable is something that is not coming from the JSON definition, but usually registered by datasources.\n // It also doesn't get persisted back to the dashboard JSON.\n isDefault?: boolean;\n}\n\nexport interface SceneVariable<TState extends SceneVariableState = SceneVariableState> extends SceneObject<TState> {\n /**\n * This function is called on activation or when a dependency changes.\n */\n validateAndUpdate?(): Observable<ValidateAndUpdateResult>;\n\n /**\n * Should return the value for the given field path\n */\n getValue(fieldPath?: string): VariableValue | undefined | null;\n\n /**\n * Should return the value display text, used by the \"text\" formatter\n * Example: ${podId:text}\n * Useful for variables that have non user friendly values but friendly display text names.\n */\n getValueText?(fieldPath?: string): string;\n\n /**\n * For special edge case senarios. For example local function that locally scoped variables can implement.\n **/\n isAncestorLoading?(): boolean;\n\n /**\n * Allows cancelling variable execution.\n */\n onCancel?(): void;\n\n /**\n * Edge case for variables that are hidden but wants to be render to access react contexts (ScopesVariable)\n */\n UNSAFE_renderAsHidden?: boolean;\n\n /**\n * @experimental\n * Indicates that a variable loads values lazily when user interacts with the variable dropdown.\n */\n isLazy?: boolean;\n}\n\nexport type VariableValue = VariableValueSingle | VariableValueSingle[];\n\nexport type VariableValueSingle = string | boolean | number | CustomVariableValue;\n\n/**\n * This is for edge case values like the custom \"allValue\" that should not be escaped/formatted like other values\n * The custom all value usually contain wildcards that should not be escaped.\n */\nexport interface CustomVariableValue {\n /**\n * The format name or function used in the expression\n */\n formatter(formatNameOrFn?: string | VariableCustomFormatterFn): string;\n}\n\nexport interface ValidateAndUpdateResult {}\nexport type VariableValueOptionProperties = Record<string, any>;\nexport interface VariableValueOption {\n label: string;\n value: VariableValueSingle;\n group?: string;\n properties?: VariableValueOptionProperties;\n}\n\nexport interface SceneVariableSetState extends SceneObjectState {\n variables: SceneVariable[];\n}\n\nexport interface SceneVariables extends SceneObject<SceneVariableSetState> {\n /**\n * Will look for and return variable matching name\n */\n getByName(name: string): SceneVariable | undefined;\n /**\n * Will return true if the variable is loading or waiting for an update to complete.\n */\n isVariableLoadingOrWaitingToUpdate(variable: SceneVariable): boolean;\n}\n\nexport class SceneVariableValueChangedEvent extends BusEventWithPayload<SceneVariable> {\n public static type = 'scene-variable-changed-value';\n}\n\nexport interface SceneVariableDependencyConfigLike {\n /** Return all variable names this object depend on */\n getNames(): Set<string>;\n\n /** Used to check for dependency on a specific variable */\n hasDependencyOn(name: string): boolean;\n\n /**\n * Will be called when the VariableSet have completed an update process or when a variable has changed value.\n **/\n variableUpdateCompleted(variable: SceneVariable, hasChanged: boolean): void;\n}\n\n/**\n * Used in CustomFormatterFn\n */\nexport interface CustomFormatterVariable {\n name: string;\n type: VariableType;\n multi?: boolean;\n includeAll?: boolean;\n}\n\nexport type VariableCustomFormatterFn = (\n value: unknown,\n legacyVariableModel: Partial<CustomFormatterVariable>,\n legacyDefaultFormatter?: VariableCustomFormatterFn\n) => string;\n\nexport type InterpolationFormatParameter = string | VariableCustomFormatterFn | undefined;\n\nexport function isCustomVariableValue(value: VariableValue): value is CustomVariableValue {\n return typeof value === 'object' && 'formatter' in value;\n}\n"],"names":[],"mappings":";;AAoGO,MAAM,uCAAuC,mBAAmC,CAAA;AAEvF;AAFa,8BAAA,CACG,IAAO,GAAA,8BAAA;AAkChB,SAAS,sBAAsB,KAAoD,EAAA;AACxF,EAAO,OAAA,OAAO,KAAU,KAAA,QAAA,IAAY,WAAe,IAAA,KAAA;AACrD;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../../../../src/variables/utils.ts"],"sourcesContent":["import { isEqual } from 'lodash';\nimport { VariableValue } from './types';\nimport {\n AdHocVariableFilter,\n DataQueryError,\n GetTagResponse,\n GrafanaTheme2,\n MetricFindValue,\n SelectableValue,\n} from '@grafana/data';\nimport { sceneGraph } from '../core/sceneGraph';\nimport { SceneDataQuery, SceneObject, SceneObjectState } from '../core/types';\nimport { SceneQueryRunner } from '../querying/SceneQueryRunner';\nimport { DataSourceRef } from '@grafana/schema';\nimport { css } from '@emotion/css';\n\nexport function isVariableValueEqual(a: VariableValue | null | undefined, b: VariableValue | null | undefined) {\n if (a === b) {\n return true;\n }\n\n return isEqual(a, b);\n}\n\nexport function safeStringifyValue(value: unknown) {\n // Avoid circular references ignoring those references\n const getCircularReplacer = () => {\n const seen = new WeakSet();\n return (_: string, value: object | null) => {\n if (typeof value === 'object' && value !== null) {\n if (seen.has(value)) {\n return;\n }\n seen.add(value);\n }\n return value;\n };\n };\n\n try {\n return JSON.stringify(value, getCircularReplacer());\n } catch (error) {\n console.error(error);\n }\n\n return '';\n}\n\nexport function renderPrometheusLabelFilters(filters: AdHocVariableFilter[]) {\n return filters.map((filter) => renderFilter(filter)).join(',');\n}\n\nfunction renderFilter(filter: AdHocVariableFilter) {\n let value = '';\n let operator = filter.operator;\n\n // map \"one of\" operator to regex\n if (operator === '=|') {\n operator = '=~';\n // TODO remove when we're on the latest version of @grafana/data\n // @ts-expect-error\n value = filter.values?.map(escapeLabelValueInRegexSelector).join('|');\n } else if (operator === '!=|') {\n operator = '!~';\n // TODO remove when we're on the latest version of @grafana/data\n // @ts-expect-error\n value = filter.values?.map(escapeLabelValueInRegexSelector).join('|');\n } else if (operator === '=~' || operator === '!~') {\n value = escapeLabelValueInRegexSelector(filter.value);\n } else {\n value = escapeLabelValueInExactSelector(filter.value);\n }\n\n return `${filter.key}${operator}\"${value}\"`;\n}\n\n// based on the openmetrics-documentation, the 3 symbols we have to handle are:\n// - \\n ... the newline character\n// - \\ ... the backslash character\n// - \" ... the double-quote character\nexport function escapeLabelValueInExactSelector(labelValue: string): string {\n return labelValue.replace(/\\\\/g, '\\\\\\\\').replace(/\\n/g, '\\\\n').replace(/\"/g, '\\\\\"');\n}\n\nexport function escapeLabelValueInRegexSelector(labelValue: string): string {\n return escapeLabelValueInExactSelector(escapeLokiRegexp(labelValue));\n}\n\nexport function isRegexSelector(selector?: string) {\n if (selector && (selector.includes('=~') || selector.includes('!~'))) {\n return true;\n }\n return false;\n}\n\n// Loki regular-expressions use the RE2 syntax (https://github.com/google/re2/wiki/Syntax),\n// so every character that matches something in that list has to be escaped.\n// the list of meta characters is: *+?()|\\.[]{}^$\n// we make a javascript regular expression that matches those characters:\nconst RE2_METACHARACTERS = /[*+?()|\\\\.\\[\\]{}^$]/g;\nfunction escapeLokiRegexp(value: string): string {\n return value.replace(RE2_METACHARACTERS, '\\\\$&');\n}\n\n/**\n * Get all queries in the scene that have the same datasource as provided source object\n */\nexport function getQueriesForVariables(\n sourceObject: SceneObject<SceneObjectState & { datasource: DataSourceRef | null }>\n) {\n const runners = sceneGraph.findAllObjects(\n sourceObject.getRoot(),\n (o) => o instanceof SceneQueryRunner\n ) as SceneQueryRunner[];\n\n const interpolatedDsUuid = sceneGraph.interpolate(sourceObject, sourceObject.state.datasource?.uid);\n\n const applicableRunners = filterOutInactiveRunnerDuplicates(runners).filter((r) => {\n const interpolatedQueryDsUuid = sceneGraph.interpolate(sourceObject, r.state.datasource?.uid);\n\n return interpolatedQueryDsUuid === interpolatedDsUuid;\n });\n\n if (applicableRunners.length === 0) {\n return [];\n }\n\n const result: SceneDataQuery[] = [];\n applicableRunners.forEach((r) => {\n result.push(\n ...r.state.queries.filter((q) => {\n if (!q.datasource || !q.datasource.uid) {\n return true;\n }\n\n const interpolatedQueryDsUuid = sceneGraph.interpolate(sourceObject, q.datasource.uid);\n return interpolatedQueryDsUuid === interpolatedDsUuid;\n })\n );\n });\n\n return result;\n}\n\n// Filters out inactive runner duplicates, keeping only the ones that are currently active.\n// This is needed for scnearios whan a query runner is cloned and the original is not removed but de-activated.\n// Can happen i.e. when editing a panel in Grafana Core dashboards.\nfunction filterOutInactiveRunnerDuplicates(runners: SceneQueryRunner[]) {\n // Group items by key\n const groupedItems: { [key: string]: SceneQueryRunner[] } = {};\n\n for (const item of runners) {\n if (item.state.key) {\n if (!(item.state.key in groupedItems)) {\n groupedItems[item.state.key] = [];\n }\n groupedItems[item.state.key].push(item);\n }\n }\n\n // Filter out inactive items and concatenate active items\n return Object.values(groupedItems).flatMap((group) => {\n const activeItems = group.filter((item) => item.isActive);\n // Keep inactive items if there's only one item with the key\n if (activeItems.length === 0 && group.length === 1) {\n return group;\n }\n return activeItems;\n });\n}\n\nexport function escapeUrlPipeDelimiters(value: string | undefined): string {\n if (value === null || value === undefined) {\n return '';\n }\n\n // Replace the pipe due to using it as a filter separator\n return (value = /\\|/g[Symbol.replace](value, '__gfp__'));\n}\n\nexport function escapeUrlCommaDelimiters(value: string | undefined): string {\n if (value === null || value === undefined) {\n return '';\n }\n\n // Replace the comma due to using it as a value/label separator\n return /,/g[Symbol.replace](value, '__gfc__');\n}\n\nexport function escapeUrlHashDelimiters(value: string | undefined): string {\n if (value === null || value === undefined) {\n return '';\n }\n\n // Replace the hash due to using it as a value/label separator\n return /#/g[Symbol.replace](value, '__gfh__');\n}\n\nexport function escapeOriginFilterUrlDelimiters(value: string | undefined): string {\n return escapeUrlHashDelimiters(escapeUrlPipeDelimiters(value));\n}\n\nexport function escapeURLDelimiters(value: string | undefined): string {\n return escapeUrlCommaDelimiters(escapeUrlPipeDelimiters(value));\n}\n\nexport function unescapeUrlDelimiters(value: string | undefined): string {\n if (value === null || value === undefined) {\n return '';\n }\n\n value = /__gfp__/g[Symbol.replace](value, '|');\n value = /__gfc__/g[Symbol.replace](value, ',');\n value = /__gfh__/g[Symbol.replace](value, '#');\n\n return value;\n}\n\nexport function toUrlCommaDelimitedString(key: string, label?: string): string {\n // Omit for identical key/label or when label is not set at all\n if (!label || key === label) {\n return escapeUrlCommaDelimiters(key);\n }\n\n return [key, label].map(escapeUrlCommaDelimiters).join(',');\n}\n\nexport function dataFromResponse(response: GetTagResponse | MetricFindValue[]) {\n return Array.isArray(response) ? response : response.data;\n}\n\nexport function responseHasError(\n response: GetTagResponse | MetricFindValue[]\n): response is GetTagResponse & { error: DataQueryError } {\n return !Array.isArray(response) && Boolean(response.error);\n}\n\n// Collect a flat list of SelectableValues with a `group` property into a hierarchical list with groups\nexport function handleOptionGroups(values: SelectableValue[]): Array<SelectableValue<string>> {\n const result: Array<SelectableValue<string>> = [];\n const groupedResults = new Map<string, Array<SelectableValue<string>>>();\n\n for (const value of values) {\n const groupLabel = value.group;\n if (groupLabel) {\n let group = groupedResults.get(groupLabel);\n\n if (!group) {\n group = [];\n groupedResults.set(groupLabel, group);\n result.push({ label: groupLabel, options: group });\n }\n\n group.push(value);\n } else {\n result.push(value);\n }\n }\n\n return result;\n}\n\nexport function getNonApplicablePillStyles(theme: GrafanaTheme2) {\n return {\n disabledPill: css({\n background: theme.colors.action.selected,\n color: theme.colors.text.disabled,\n border: 0,\n '&:hover': {\n background: theme.colors.action.selected,\n },\n }),\n strikethrough: css({\n textDecoration: 'line-through',\n }),\n };\n}\n"],"names":["value","_a"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
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;;;;"}
|
|
@@ -0,0 +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 { MultiOrSingleValueSelect } from '../components/VariableValueSelect';\nimport { VariableValueOption } from '../types';\n\nimport { MultiValueVariable, MultiValueVariableState, VariableGetOptionsArgs } from './MultiValueVariable';\nimport { sceneGraph } from '../../core/sceneGraph';\nimport React from 'react';\nimport { omit } from 'lodash';\n\nexport interface CustomVariableState extends MultiValueVariableState {\n query: string;\n valuesFormat?: 'csv' | 'json';\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 valuesFormat: 'csv',\n value: '',\n text: '',\n options: [],\n name: '',\n ...initialState,\n });\n }\n\n // We expose this publicly as we also need it outside the variable\n // The interpolate flag is needed since we don't always want to get the interpolated options\n public transformCsvStringToOptions(str: string, interpolate = true): VariableValueOption[] {\n str = interpolate ? sceneGraph.interpolate(this, str) : str;\n const match = str.match(/(?:\\\\,|[^,])+/g) ?? [];\n\n return match.map((text) => {\n text = text.replace(/\\\\,/g, ',');\n const textMatch = /^\\s*(.+)\\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\n public transformJsonToOptions(json: string): VariableValueOption[] {\n if (!json) {\n return [];\n }\n\n const parsedOptions = JSON.parse(json);\n\n if (!Array.isArray(parsedOptions) || parsedOptions.some((o) => typeof o !== 'object' || o === null)) {\n throw new Error('Query must be a JSON array of objects');\n }\n\n const textProp = 'text';\n const valueProp = 'value';\n\n return parsedOptions.map((o) => ({\n label: String(o[textProp] || o[valueProp])?.trim(),\n value: String(o[valueProp]).trim(),\n properties: omit(o, [textProp, valueProp]),\n }));\n }\n\n public getValueOptions(args: VariableGetOptionsArgs): Observable<VariableValueOption[]> {\n const options =\n this.state.valuesFormat === 'json'\n ? this.transformJsonToOptions(this.state.query)\n : this.transformCsvStringToOptions(this.state.query);\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":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataSourceVariable.js","sources":["../../../../../../../src/variables/variants/DataSourceVariable.tsx"],"sourcesContent":["import { t } from '@grafana/i18n';\nimport { 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({\n label: t('grafana-scenes.variables.data-source-variable.label.default', 'default'),\n value: 'default',\n });\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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"}
|