@grafana/scenes 6.20.3--canary.1151.15707564301.0 → 6.20.3--canary.1154.15711774010.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/components/NestedScene.js +2 -3
- package/dist/esm/components/NestedScene.js.map +1 -1
- package/dist/esm/components/SceneApp/SceneAppPage.js +3 -4
- package/dist/esm/components/SceneApp/SceneAppPage.js.map +1 -1
- package/dist/esm/components/SceneDebugger/SceneDebugger.js +1 -10
- package/dist/esm/components/SceneDebugger/SceneDebugger.js.map +1 -1
- package/dist/esm/components/SceneTimeRangeCompare.js +2 -3
- package/dist/esm/components/SceneTimeRangeCompare.js.map +1 -1
- package/dist/esm/components/VizPanel/VizPanel.js +1 -2
- package/dist/esm/components/VizPanel/VizPanel.js.map +1 -1
- package/dist/esm/components/VizPanel/VizPanelExploreButton.js +1 -2
- package/dist/esm/components/VizPanel/VizPanelExploreButton.js.map +1 -1
- package/dist/esm/components/VizPanel/VizPanelRenderer.js +2 -3
- package/dist/esm/components/VizPanel/VizPanelRenderer.js.map +1 -1
- package/dist/esm/components/VizPanel/VizPanelSeriesLimit.js +2 -15
- package/dist/esm/components/VizPanel/VizPanelSeriesLimit.js.map +1 -1
- package/dist/esm/components/layout/grid/SceneGridRow.js +1 -2
- package/dist/esm/components/layout/grid/SceneGridRow.js.map +1 -1
- package/dist/esm/components/layout/split/Splitter.js +1 -2
- package/dist/esm/components/layout/split/Splitter.js.map +1 -1
- package/dist/esm/index.js +0 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/utils/ControlsLabel.js +1 -11
- package/dist/esm/utils/ControlsLabel.js.map +1 -1
- package/dist/esm/utils/LoadingIndicator.js +1 -2
- package/dist/esm/utils/LoadingIndicator.js.map +1 -1
- package/dist/esm/variables/adhoc/AdHocFilterBuilder.js +2 -3
- package/dist/esm/variables/adhoc/AdHocFilterBuilder.js.map +1 -1
- package/dist/esm/variables/adhoc/AdHocFilterRenderer.js +5 -14
- package/dist/esm/variables/adhoc/AdHocFilterRenderer.js.map +1 -1
- package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js +3 -17
- package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js.map +1 -1
- package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +2 -8
- package/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js.map +1 -1
- package/dist/esm/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js +4 -5
- package/dist/esm/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js.map +1 -1
- package/dist/esm/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js +1 -4
- package/dist/esm/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js.map +1 -1
- package/dist/esm/variables/components/VariableValueInput.js +1 -2
- package/dist/esm/variables/components/VariableValueInput.js.map +1 -1
- package/dist/esm/variables/components/VariableValueSelect.js +1 -2
- package/dist/esm/variables/components/VariableValueSelect.js.map +1 -1
- package/dist/esm/variables/groupby/DefaultGroupByCustomIndicatorContainer.js +3 -10
- package/dist/esm/variables/groupby/DefaultGroupByCustomIndicatorContainer.js.map +1 -1
- package/dist/esm/variables/groupby/GroupByVariable.js +4 -5
- package/dist/esm/variables/groupby/GroupByVariable.js.map +1 -1
- package/dist/esm/variables/interpolation/formatRegistry.js +12 -34
- package/dist/esm/variables/interpolation/formatRegistry.js.map +1 -1
- package/dist/esm/variables/variants/DataSourceVariable.js +1 -2
- package/dist/esm/variables/variants/DataSourceVariable.js.map +1 -1
- package/dist/esm/variables/variants/IntervalVariable.js +1 -2
- package/dist/esm/variables/variants/IntervalVariable.js.map +1 -1
- package/dist/esm/variables/variants/TestVariable.js +1 -2
- package/dist/esm/variables/variants/TestVariable.js.map +1 -1
- package/dist/index.d.ts +1 -5
- package/dist/index.js +59 -167
- package/dist/index.js.map +1 -1
- package/package.json +3 -8
- package/dist/esm/locales/en-US/grafana-scenes.json.js +0 -152
- package/dist/esm/locales/en-US/grafana-scenes.json.js.map +0 -1
- package/dist/esm/utils/loadTranslationResources.js +0 -26
- package/dist/esm/utils/loadTranslationResources.js.map +0 -1
- package/dist/grafana-scenes-8mJSrmSH.js +0 -157
- package/dist/grafana-scenes-8mJSrmSH.js.map +0 -1
@@ -1 +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): 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('variables.format-registry.formats.description.keep-value-as-is', 'Keep value as is'),\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 '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 '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('variables.format-registry.formats.description.commaseparated-values', 'Comma-separated values'),\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 '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('variables.format-registry.formats.description.json-stringify-value', 'JSON stringify value'),\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 '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('variables.format-registry.formats.description.single-quoted-values', 'Single quoted values'),\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('variables.format-registry.formats.description.double-quoted-values', 'Double quoted values'),\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: VariableFormatID.Date,\n name: 'Date',\n description: t(\n '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 '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) => {\n if (variable.urlSync) {\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: VariableFormatID.UriEncode,\n name: 'Percent encode as URI',\n description: t(\n '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\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":"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"}
|
1
|
+
{"version":3,"file":"formatRegistry.js","sources":["../../../../src/variables/interpolation/formatRegistry.ts"],"sourcesContent":["import { 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): 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: 'Keep value as is',\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: 'Values are separated by | character',\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: 'Multiple values are formatted like variable=value',\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: 'Comma-separated values',\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: 'HTML escaping of values',\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: 'JSON stringify value',\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: 'Useful for URL escaping values',\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: 'Single quoted values',\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: 'Double quoted values',\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: VariableFormatID.Date,\n name: 'Date',\n description: 'Format date in different ways',\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: 'Format multi-valued variables using glob syntax, example {value1,value2}',\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) => {\n if (variable.urlSync) {\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: VariableFormatID.UriEncode,\n name: 'Percent encode as URI',\n description: 'Useful for URL escaping values, taking into URI syntax characters',\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\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":"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"}
|
@@ -1,4 +1,3 @@
|
|
1
|
-
import { t } from '@grafana/i18n';
|
2
1
|
import { of } from 'rxjs';
|
3
2
|
import { stringToJsRegex } from '@grafana/data';
|
4
3
|
import { getDataSourceSrv } from '@grafana/runtime';
|
@@ -41,7 +40,7 @@ class DataSourceVariable extends MultiValueVariable {
|
|
41
40
|
options.push({ label: source.name, value: source.uid });
|
42
41
|
}
|
43
42
|
if (this.state.defaultOptionEnabled && isDefault(source, regex)) {
|
44
|
-
options.push({ label:
|
43
|
+
options.push({ label: "default", value: "default" });
|
45
44
|
}
|
46
45
|
}
|
47
46
|
if (options.length === 0) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"DataSourceVariable.js","sources":["../../../../src/variables/variants/DataSourceVariable.tsx"],"sourcesContent":["import {
|
1
|
+
{"version":3,"file":"DataSourceVariable.js","sources":["../../../../src/variables/variants/DataSourceVariable.tsx"],"sourcesContent":["import { Observable, of } from 'rxjs';\n\nimport { stringToJsRegex, DataSourceInstanceSettings } from '@grafana/data';\nimport { getDataSourceSrv } from '@grafana/runtime';\n\nimport { sceneGraph } from '../../core/sceneGraph';\nimport { SceneComponentProps } from '../../core/types';\nimport { VariableDependencyConfig } from '../VariableDependencyConfig';\nimport { MultiOrSingleValueSelect } from '../components/VariableValueSelect';\nimport { VariableValueOption } from '../types';\n\nimport { MultiValueVariable, MultiValueVariableState, VariableGetOptionsArgs } from './MultiValueVariable';\nimport React from 'react';\n\nexport interface DataSourceVariableState extends MultiValueVariableState {\n /**\n * Include all data source instances with this plugin id\n */\n pluginId: string;\n /**\n * Filter data source instances based on name\n */\n regex: string;\n /**\n * For backwards compatability with old dashboards, will likely be removed\n */\n defaultOptionEnabled?: boolean;\n}\n\nexport class DataSourceVariable extends MultiValueVariable<DataSourceVariableState> {\n protected _variableDependency = new VariableDependencyConfig(this, {\n statePaths: ['regex'],\n });\n\n public constructor(initialState: Partial<DataSourceVariableState>) {\n super({\n type: 'datasource',\n value: '',\n text: '',\n options: [],\n name: '',\n regex: '',\n pluginId: '',\n ...initialState,\n });\n }\n\n public getValueOptions(args: VariableGetOptionsArgs): Observable<VariableValueOption[]> {\n if (!this.state.pluginId) {\n return of([]);\n }\n\n const dataSources = getDataSourceSrv().getList({ metrics: true, variables: false, pluginId: this.state.pluginId });\n\n let regex;\n if (this.state.regex) {\n const interpolated = sceneGraph.interpolate(this, this.state.regex, undefined, 'regex');\n regex = stringToJsRegex(interpolated);\n }\n\n const options: VariableValueOption[] = [];\n\n for (let i = 0; i < dataSources.length; i++) {\n const source = dataSources[i];\n\n if (isValid(source, regex)) {\n options.push({ label: source.name, value: source.uid });\n }\n\n if (this.state.defaultOptionEnabled && isDefault(source, regex)) {\n options.push({ label: 'default', value: 'default' });\n }\n }\n\n if (options.length === 0) {\n this.setState({ error: 'No data sources found' });\n } else if (this.state.error) {\n this.setState({ error: null });\n }\n\n return of(options);\n }\n\n public static Component = ({ model }: SceneComponentProps<MultiValueVariable>) => {\n return <MultiOrSingleValueSelect model={model} />;\n };\n}\n\nfunction isValid(source: DataSourceInstanceSettings, regex?: RegExp) {\n if (!regex) {\n return true;\n }\n\n return regex.exec(source.name);\n}\n\nfunction isDefault(source: DataSourceInstanceSettings, regex?: RegExp) {\n if (!source.isDefault) {\n return false;\n }\n\n if (!regex) {\n return true;\n }\n\n return regex.exec('default');\n}\n"],"names":[],"mappings":"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"}
|
@@ -1,4 +1,3 @@
|
|
1
|
-
import { t } from '@grafana/i18n';
|
2
1
|
import { rangeUtil } from '@grafana/data';
|
3
2
|
import { VariableRefresh } from '@grafana/schema';
|
4
3
|
import { Select } from '@grafana/ui';
|
@@ -92,7 +91,7 @@ IntervalVariable.Component = ({ model }) => {
|
|
92
91
|
Select,
|
93
92
|
{
|
94
93
|
id: key,
|
95
|
-
placeholder:
|
94
|
+
placeholder: "Select value",
|
96
95
|
width: "auto",
|
97
96
|
value,
|
98
97
|
tabSelectsValue: false,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"IntervalVariable.js","sources":["../../../../src/variables/variants/IntervalVariable.tsx"],"sourcesContent":["import {
|
1
|
+
{"version":3,"file":"IntervalVariable.js","sources":["../../../../src/variables/variants/IntervalVariable.tsx"],"sourcesContent":["import { rangeUtil, SelectableValue } from '@grafana/data';\nimport { VariableRefresh } from '@grafana/schema';\nimport { Select } from '@grafana/ui';\nimport React from 'react';\nimport { Observable, of } from 'rxjs';\nimport { sceneGraph } from '../../core/sceneGraph';\nimport { SceneObjectBase } from '../../core/SceneObjectBase';\nimport { SceneComponentProps, SceneObjectUrlValues } from '../../core/types';\nimport { SceneObjectUrlSyncConfig } from '../../services/SceneObjectUrlSyncConfig';\nimport { AUTO_VARIABLE_TEXT, AUTO_VARIABLE_VALUE } from '../constants';\nimport {\n SceneVariable,\n SceneVariableState,\n SceneVariableValueChangedEvent,\n ValidateAndUpdateResult,\n VariableValue,\n} from '../types';\n\nexport interface IntervalVariableState extends SceneVariableState {\n intervals: string[];\n value: string;\n autoEnabled: boolean;\n autoMinInterval: string;\n autoStepCount: number;\n refresh: VariableRefresh;\n}\n\nexport class IntervalVariable\n extends SceneObjectBase<IntervalVariableState>\n implements SceneVariable<IntervalVariableState>\n{\n public constructor(initialState: Partial<IntervalVariableState>) {\n super({\n type: 'interval',\n value: '',\n intervals: ['1m', '10m', '30m', '1h', '6h', '12h', '1d', '7d', '14d', '30d'],\n name: '',\n autoStepCount: 30,\n autoMinInterval: '10s',\n autoEnabled: false,\n refresh: VariableRefresh.onTimeRangeChanged,\n ...initialState,\n });\n\n this._urlSync = new SceneObjectUrlSyncConfig(this, { keys: () => [this.getKey()] });\n }\n\n private getKey(): string {\n return `var-${this.state.name}`;\n }\n\n public getUrlState() {\n return { [this.getKey()]: this.state.value };\n }\n\n public updateFromUrl(values: SceneObjectUrlValues) {\n const update: Partial<IntervalVariableState> = {};\n const val = values[this.getKey()];\n if (typeof val === 'string') {\n // support old auto interval url value\n if (val.startsWith('$__auto_interval_')) {\n update.value = AUTO_VARIABLE_VALUE;\n } else {\n update.value = val;\n }\n }\n this.setState(update);\n }\n\n public getOptionsForSelect(): Array<SelectableValue<string>> {\n const { value: currentValue, intervals, autoEnabled } = this.state;\n\n let options = intervals.map((interval) => ({ value: interval, label: interval }));\n\n if (autoEnabled) {\n options = [{ value: AUTO_VARIABLE_VALUE, label: AUTO_VARIABLE_TEXT }, ...options];\n }\n\n // If the current value is not in the list of intervals, add it to the list\n if (currentValue && !options.some((option) => option.value === currentValue)) {\n options.push({ value: currentValue, label: currentValue });\n }\n\n return options;\n }\n\n public getValue(): VariableValue {\n const { value, autoStepCount, autoMinInterval } = this.state;\n if (value === AUTO_VARIABLE_VALUE) {\n return this.getAutoRefreshInteval(autoStepCount, autoMinInterval);\n }\n\n return value;\n }\n\n private getAutoRefreshInteval(autoStepCount: number, minRefreshInterval: string) {\n const timeRange = sceneGraph.getTimeRange(this).state.value;\n const intervalObject = rangeUtil.calculateInterval(timeRange, autoStepCount, minRefreshInterval);\n return intervalObject.interval;\n }\n\n public _onChange = (value: SelectableValue<string>) => {\n this.setState({ value: value.value! });\n this.publishEvent(new SceneVariableValueChangedEvent(this), true);\n };\n\n public validateAndUpdate(): Observable<ValidateAndUpdateResult> {\n const { value, intervals } = this.state;\n let shouldPublish = false;\n\n if (value === AUTO_VARIABLE_VALUE) {\n shouldPublish = true;\n } else if (!value && intervals.length > 0) {\n const firstOption = intervals[0];\n this.setState({ value: firstOption });\n shouldPublish = true;\n }\n\n if (shouldPublish) {\n this.publishEvent(new SceneVariableValueChangedEvent(this), true);\n }\n\n return of({});\n }\n\n public static Component = ({ model }: SceneComponentProps<IntervalVariable>) => {\n const { key, value } = model.useState();\n return (\n <Select\n id={key}\n placeholder=\"Select value\"\n width=\"auto\"\n value={value}\n tabSelectsValue={false}\n options={model.getOptionsForSelect()}\n onChange={model._onChange}\n />\n );\n };\n}\n"],"names":[],"mappings":"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"}
|
@@ -1,4 +1,3 @@
|
|
1
|
-
import { t } from '@grafana/i18n';
|
2
1
|
import { Subject, Observable } from 'rxjs';
|
3
2
|
import { sceneGraph } from '../../core/sceneGraph/index.js';
|
4
3
|
import { queryMetricTree } from '../../utils/metricTree.js';
|
@@ -16,7 +15,7 @@ class TestVariable extends MultiValueVariable {
|
|
16
15
|
type: "custom",
|
17
16
|
name: "Test",
|
18
17
|
value: "Value",
|
19
|
-
text:
|
18
|
+
text: "Text",
|
20
19
|
query: "Query",
|
21
20
|
options: [],
|
22
21
|
refresh: VariableRefresh.onDashboardLoad,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"TestVariable.js","sources":["../../../../src/variables/variants/TestVariable.tsx"],"sourcesContent":["import {
|
1
|
+
{"version":3,"file":"TestVariable.js","sources":["../../../../src/variables/variants/TestVariable.tsx"],"sourcesContent":["import { Observable, Subject } from 'rxjs';\n\nimport { sceneGraph } from '../../core/sceneGraph';\nimport { SceneComponentProps } from '../../core/types';\nimport { queryMetricTree } from '../../utils/metricTree';\nimport { VariableDependencyConfig } from '../VariableDependencyConfig';\nimport { MultiOrSingleValueSelect } from '../components/VariableValueSelect';\nimport { VariableValueOption } from '../types';\n\nimport { MultiValueVariable, MultiValueVariableState, VariableGetOptionsArgs } from './MultiValueVariable';\nimport { VariableRefresh } from '@grafana/data';\nimport { getClosest } from '../../core/sceneGraph/utils';\nimport { SceneVariableSet } from '../sets/SceneVariableSet';\nimport { SceneQueryControllerEntry } from '../../behaviors/types';\nimport React from 'react';\n\nexport interface TestVariableState extends MultiValueVariableState {\n query: string;\n delayMs?: number;\n issuedQuery?: string;\n refresh?: VariableRefresh;\n throwError?: string;\n optionsToReturn?: VariableValueOption[];\n updateOptions?: boolean;\n}\n\n/**\n * This variable is only designed for unit tests and potentially e2e tests.\n */\nexport class TestVariable extends MultiValueVariable<TestVariableState> {\n private completeUpdate = new Subject<number>();\n public isGettingValues = true;\n public getValueOptionsCount = 0;\n isLazy = false;\n\n protected _variableDependency = new VariableDependencyConfig(this, {\n statePaths: ['query'],\n });\n\n public constructor(initialState: Partial<TestVariableState>, isLazy = false) {\n super({\n type: 'custom',\n name: 'Test',\n value: 'Value',\n text: 'Text',\n query: 'Query',\n options: [],\n refresh: VariableRefresh.onDashboardLoad,\n updateOptions: true,\n ...initialState,\n });\n this.isLazy = isLazy;\n }\n\n public getValueOptions(args: VariableGetOptionsArgs): Observable<VariableValueOption[]> {\n const { delayMs } = this.state;\n\n this.getValueOptionsCount += 1;\n\n const queryController = sceneGraph.getQueryController(this);\n\n return new Observable<VariableValueOption[]>((observer) => {\n const queryEntry: SceneQueryControllerEntry = {\n type: 'variable',\n origin: this,\n cancel: () => observer.complete(),\n };\n\n if (queryController) {\n queryController.queryStarted(queryEntry);\n }\n\n this.setState({ loading: true });\n\n if (this.state.throwError) {\n throw new Error(this.state.throwError);\n }\n\n const interpolatedQuery = sceneGraph.interpolate(this, this.state.query);\n const options = this.getOptions(interpolatedQuery);\n\n const sub = this.completeUpdate.subscribe({\n next: () => {\n const newState: Partial<TestVariableState> = { issuedQuery: interpolatedQuery, loading: false };\n\n if (this.state.updateOptions) {\n newState.options = options;\n }\n\n this.setState(newState);\n observer.next(options);\n observer.complete();\n },\n });\n\n let timeout: number | undefined;\n if (delayMs) {\n timeout = window.setTimeout(() => this.signalUpdateCompleted(), delayMs);\n } else if (delayMs === 0) {\n this.signalUpdateCompleted();\n }\n\n this.isGettingValues = true;\n\n return () => {\n sub.unsubscribe();\n window.clearTimeout(timeout);\n this.isGettingValues = false;\n\n if (this.state.loading) {\n this.setState({ loading: false });\n }\n\n if (queryController) {\n queryController.queryCompleted(queryEntry);\n }\n };\n });\n }\n\n public cancel() {\n const sceneVarSet = getClosest(this, (s) => (s instanceof SceneVariableSet ? s : undefined));\n sceneVarSet?.cancel(this);\n }\n\n private getOptions(interpolatedQuery: string) {\n if (this.state.optionsToReturn) {\n return this.state.optionsToReturn;\n }\n\n return queryMetricTree(interpolatedQuery).map((x) => ({ label: x.name, value: x.name }));\n }\n\n /** Useful from tests */\n public signalUpdateCompleted() {\n this.completeUpdate.next(1);\n }\n\n public static Component = ({ model }: SceneComponentProps<MultiValueVariable>) => {\n return <MultiOrSingleValueSelect model={model} />;\n };\n}\n"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
@@ -2994,10 +2994,6 @@ declare class SafeSerializableSceneObject implements ScopedVar {
|
|
2994
2994
|
*/
|
2995
2995
|
declare function getExploreURL(data: PanelData, model: SceneObject, timeRange: RawTimeRange, transform?: (query: DataQuery) => DataQuery): Promise<string>;
|
2996
2996
|
|
2997
|
-
declare const initTranslations: () => Promise<{
|
2998
|
-
language: string;
|
2999
|
-
}>;
|
3000
|
-
|
3001
2997
|
|
3002
2998
|
|
3003
2999
|
|
@@ -3049,5 +3045,5 @@ declare const sceneUtils: {
|
|
3049
3045
|
isGroupByVariable: typeof isGroupByVariable;
|
3050
3046
|
};
|
3051
3047
|
|
3052
|
-
export { AdHocFiltersVariable, ConstantVariable, ControlsLabel, CustomVariable, DataProviderProxy, DataSourceVariable, EmbeddedScene, FieldConfigBuilder, FieldConfigBuilders, FieldConfigOverridesBuilder, GroupByVariable, IntervalVariable, LazyLoader, LocalValueVariable, MultiOrSingleValueSelect, MultiValueVariable, NestedScene, NewSceneObjectAddedEvent, PanelBuilders, PanelOptionsBuilders, QueryVariable, RuntimeDataSource, SafeSerializableSceneObject, SceneApp, SceneAppPage, SceneByFrameRepeater, SceneByVariableRepeater, SceneCSSGridItem, SceneCSSGridLayout, SceneCanvasText, SceneControlsSpacer, SceneDataLayerBase, SceneDataLayerControls, SceneDataLayerSet, SceneDataLayerSetBase, SceneDataNode, SceneDataTransformer, SceneDebugger, SceneFlexItem, SceneFlexLayout, SceneGridItem, SceneGridLayout, SceneGridLayoutDragStartEvent, SceneGridRow, SceneObjectBase, SceneObjectRef, SceneObjectStateChangedEvent, SceneObjectUrlSyncConfig, SceneQueryRunner, SceneReactObject, SceneRefreshPicker, SceneTimePicker, SceneTimeRange, SceneTimeRangeCompare, SceneTimeRangeTransformerBase, SceneTimeZoneOverride, SceneToolbarButton, SceneToolbarInput, SceneVariableSet, SceneVariableValueChangedEvent, ScopesVariable, SplitLayout, TestVariable, TextBoxVariable, UrlSyncContextProvider, UrlSyncManager, UserActionEvent, VariableDependencyConfig, VariableValueControl, VariableValueSelectWrapper, VariableValueSelectors, VizConfigBuilder, VizConfigBuilders, VizPanel, VizPanelBuilder, VizPanelExploreButton, VizPanelMenu, index$1 as behaviors, index as dataLayers, formatRegistry, getExploreURL,
|
3048
|
+
export { AdHocFiltersVariable, ConstantVariable, ControlsLabel, CustomVariable, DataProviderProxy, DataSourceVariable, EmbeddedScene, FieldConfigBuilder, FieldConfigBuilders, FieldConfigOverridesBuilder, GroupByVariable, IntervalVariable, LazyLoader, LocalValueVariable, MultiOrSingleValueSelect, MultiValueVariable, NestedScene, NewSceneObjectAddedEvent, PanelBuilders, PanelOptionsBuilders, QueryVariable, RuntimeDataSource, SafeSerializableSceneObject, SceneApp, SceneAppPage, SceneByFrameRepeater, SceneByVariableRepeater, SceneCSSGridItem, SceneCSSGridLayout, SceneCanvasText, SceneControlsSpacer, SceneDataLayerBase, SceneDataLayerControls, SceneDataLayerSet, SceneDataLayerSetBase, SceneDataNode, SceneDataTransformer, SceneDebugger, SceneFlexItem, SceneFlexLayout, SceneGridItem, SceneGridLayout, SceneGridLayoutDragStartEvent, SceneGridRow, SceneObjectBase, SceneObjectRef, SceneObjectStateChangedEvent, SceneObjectUrlSyncConfig, SceneQueryRunner, SceneReactObject, SceneRefreshPicker, SceneTimePicker, SceneTimeRange, SceneTimeRangeCompare, SceneTimeRangeTransformerBase, SceneTimeZoneOverride, SceneToolbarButton, SceneToolbarInput, SceneVariableSet, SceneVariableValueChangedEvent, ScopesVariable, SplitLayout, TestVariable, TextBoxVariable, UrlSyncContextProvider, UrlSyncManager, UserActionEvent, VariableDependencyConfig, VariableValueControl, VariableValueSelectWrapper, VariableValueSelectors, VizConfigBuilder, VizConfigBuilders, VizPanel, VizPanelBuilder, VizPanelExploreButton, VizPanelMenu, index$1 as behaviors, index as dataLayers, formatRegistry, getExploreURL, isCustomVariableValue, isDataLayer, isDataRequestEnricher, isFiltersRequestEnricher, isSceneObject, registerQueryWithController, registerRuntimeDataSource, sceneGraph, sceneUtils, useSceneApp, useSceneObjectState, useUrlSync };
|
3053
3049
|
export type { AdHocFilterWithLabels, CancelActivationHandler, ControlsLayout, CustomFormatterVariable, CustomTransformOperator, CustomTransformerDefinition, CustomVariableValue, DataLayerFilter, DataRequestEnricher, DeepPartial, EmbeddedSceneState, ExtraQueryDataProcessor, ExtraQueryDescriptor, ExtraQueryProvider, FiltersRequestEnricher, FormatVariable, InterpolationFormatParameter, MacroVariableConstructor, MultiValueVariableState, QueryRunnerState, SceneActivationHandler, SceneAppDrilldownView, SceneAppPageLike, SceneAppPageState, SceneAppRoute, SceneComponent, SceneComponentProps, SceneDataLayerProvider, SceneDataLayerProviderState, SceneDataProvider, SceneDataProviderResult, SceneDataQuery, SceneDataState, SceneDataTransformerState, SceneDeactivationHandler, SceneFlexItemLike, SceneFlexItemState, SceneGridItemLike, SceneGridItemStateLike, SceneInteractionProfileEvent, SceneLayout, SceneLayoutChildOptions, SceneLayoutState, SceneObject, SceneObjectState, SceneObjectStateChangedPayload, SceneObjectUrlSyncHandler, SceneObjectUrlValue, SceneObjectUrlValues, SceneObjectWithUrlSync, SceneQueryControllerEntry, SceneQueryControllerEntryType, SceneQueryControllerLike, SceneRefreshPickerState, SceneRouteMatch, SceneStateChangedHandler, SceneStatelessBehavior, SceneTimeRangeLike, SceneTimeRangeState, SceneUrlSyncOptions, SceneVariable, SceneVariableDependencyConfigLike, SceneVariableSetState, SceneVariableState, SceneVariables, UrlSyncManagerLike, UseStateHookOptions, ValidateAndUpdateResult, VariableCustomFormatterFn, VariableGetOptionsArgs, VariableValue, VariableValueOption, VariableValueSingle, VizConfig, VizPanelState };
|