@grafana/scenes-react 6.6.0 → 6.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/dist/esm/caching/SceneObjectCache.js +15 -28
- package/dist/esm/caching/SceneObjectCache.js.map +1 -1
- package/dist/esm/components/AnnotationLayer.js.map +1 -1
- package/dist/esm/components/DataLayerControl.js +1 -3
- package/dist/esm/components/DataLayerControl.js.map +1 -1
- package/dist/esm/components/RefreshPicker.js +5 -22
- package/dist/esm/components/RefreshPicker.js.map +1 -1
- package/dist/esm/components/TimeRangePicker.js +18 -15
- package/dist/esm/components/TimeRangePicker.js.map +1 -1
- package/dist/esm/components/VariableControl.js +1 -6
- package/dist/esm/components/VariableControl.js.map +1 -1
- package/dist/esm/components/VizGridLayout.js +1 -3
- package/dist/esm/components/VizGridLayout.js.map +1 -1
- package/dist/esm/components/VizPanel.js +1 -3
- package/dist/esm/components/VizPanel.js.map +1 -1
- package/dist/esm/contexts/BreadcrumbContext.js +15 -11
- package/dist/esm/contexts/BreadcrumbContext.js.map +1 -1
- package/dist/esm/contexts/SceneContextObject.js +3 -21
- package/dist/esm/contexts/SceneContextObject.js.map +1 -1
- package/dist/esm/contexts/SceneContextProvider.js +2 -8
- package/dist/esm/contexts/SceneContextProvider.js.map +1 -1
- package/dist/esm/hooks/hooks.js.map +1 -1
- package/dist/esm/hooks/useDataTransformer.js.map +1 -1
- package/dist/esm/hooks/useQueryRunner.js.map +1 -1
- package/dist/esm/hooks/useQueryVariable.js.map +1 -1
- package/dist/esm/hooks/useSceneObject.js.map +1 -1
- package/dist/esm/hooks/useVariableValue.js.map +1 -1
- package/dist/esm/hooks/useVariableValues.js.map +1 -1
- package/dist/esm/interoperability/EmbeddedSceneWithContext.js +2 -25
- package/dist/esm/interoperability/EmbeddedSceneWithContext.js.map +1 -1
- package/dist/esm/utils.js.map +1 -1
- package/dist/esm/variables/CustomVariable.js.map +1 -1
- package/dist/esm/variables/DataSourceVariable.js.map +1 -1
- package/dist/esm/variables/QueryVariable.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.js +67 -148
- package/dist/index.js.map +1 -1
- package/package.json +11 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useQueryRunner.js","sources":["../../../src/hooks/useQueryRunner.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { SceneDataQuery, SceneQueryRunner } from '@grafana/scenes';\nimport { DataSourceRef } from '@grafana/schema';\nimport { isEqual } from 'lodash';\nimport { CacheKey } from '../caching/SceneObjectCache';\nimport { useSceneObject } from './useSceneObject';\n\nexport interface UseQueryOptions {\n queries: SceneDataQuery[];\n maxDataPoints?: number;\n datasource?: DataSourceRef;\n cacheKey?: CacheKey;\n liveStreaming?: boolean;\n maxDataPointsFromWidth?: boolean;\n}\n\n/**\n * Maintains the state of SceneQueryRunner in the scene\n *\n * @example // To access query results do\n * const query = useQueryRunner(...);\n * const { data } = query.useState();\n */\nexport function useQueryRunner(options: UseQueryOptions): SceneQueryRunner {\n const queryRunner = useSceneObject({\n factory: (key) =>\n new SceneQueryRunner({\n key: key,\n queries: options.queries,\n maxDataPoints: options.maxDataPoints,\n datasource: options.datasource,\n liveStreaming: options.liveStreaming,\n maxDataPointsFromWidth: options.maxDataPointsFromWidth,\n }),\n objectConstructor: SceneQueryRunner,\n cacheKey: options.cacheKey,\n });\n\n // Update queries when they change\n useEffect(() => {\n if (!isEqual(queryRunner.state.queries, options.queries)) {\n queryRunner.setState({ queries: options.queries });\n queryRunner.runQueries();\n }\n }, [queryRunner, options]);\n\n return queryRunner;\n}\n"],"names":[],"mappings":";;;;;AAuBO,SAAS,eAAe,OAA4C,EAAA;AACzE,EAAA,MAAM,cAAc,cAAe,CAAA;AAAA,IACjC,OAAS,EAAA,CAAC,GACR,KAAA,IAAI,gBAAiB,CAAA;AAAA,MACnB,GAAA;AAAA,MACA,SAAS,OAAQ,CAAA,OAAA;AAAA,MACjB,eAAe,OAAQ,CAAA,aAAA;AAAA,MACvB,YAAY,OAAQ,CAAA,UAAA;AAAA,MACpB,eAAe,OAAQ,CAAA,aAAA;AAAA,MACvB,wBAAwB,OAAQ,CAAA
|
|
1
|
+
{"version":3,"file":"useQueryRunner.js","sources":["../../../src/hooks/useQueryRunner.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { SceneDataQuery, SceneQueryRunner } from '@grafana/scenes';\nimport { DataSourceRef } from '@grafana/schema';\nimport { isEqual } from 'lodash';\nimport { CacheKey } from '../caching/SceneObjectCache';\nimport { useSceneObject } from './useSceneObject';\n\nexport interface UseQueryOptions {\n queries: SceneDataQuery[];\n maxDataPoints?: number;\n datasource?: DataSourceRef;\n cacheKey?: CacheKey;\n liveStreaming?: boolean;\n maxDataPointsFromWidth?: boolean;\n}\n\n/**\n * Maintains the state of SceneQueryRunner in the scene\n *\n * @example // To access query results do\n * const query = useQueryRunner(...);\n * const { data } = query.useState();\n */\nexport function useQueryRunner(options: UseQueryOptions): SceneQueryRunner {\n const queryRunner = useSceneObject({\n factory: (key) =>\n new SceneQueryRunner({\n key: key,\n queries: options.queries,\n maxDataPoints: options.maxDataPoints,\n datasource: options.datasource,\n liveStreaming: options.liveStreaming,\n maxDataPointsFromWidth: options.maxDataPointsFromWidth,\n }),\n objectConstructor: SceneQueryRunner,\n cacheKey: options.cacheKey,\n });\n\n // Update queries when they change\n useEffect(() => {\n if (!isEqual(queryRunner.state.queries, options.queries)) {\n queryRunner.setState({ queries: options.queries });\n queryRunner.runQueries();\n }\n }, [queryRunner, options]);\n\n return queryRunner;\n}\n"],"names":[],"mappings":";;;;;AAuBO,SAAS,eAAe,OAA4C,EAAA;AACzE,EAAA,MAAM,cAAc,cAAe,CAAA;AAAA,IACjC,OAAS,EAAA,CAAC,GACR,KAAA,IAAI,gBAAiB,CAAA;AAAA,MACnB,GAAA;AAAA,MACA,SAAS,OAAQ,CAAA,OAAA;AAAA,MACjB,eAAe,OAAQ,CAAA,aAAA;AAAA,MACvB,YAAY,OAAQ,CAAA,UAAA;AAAA,MACpB,eAAe,OAAQ,CAAA,aAAA;AAAA,MACvB,wBAAwB,OAAQ,CAAA;AAAA,KACjC,CAAA;AAAA,IACH,iBAAmB,EAAA,gBAAA;AAAA,IACnB,UAAU,OAAQ,CAAA;AAAA,GACnB,CAAA;AAGD,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,OAAQ,CAAA,WAAA,CAAY,MAAM,OAAS,EAAA,OAAA,CAAQ,OAAO,CAAG,EAAA;AACxD,MAAA,WAAA,CAAY,QAAS,CAAA,EAAE,OAAS,EAAA,OAAA,CAAQ,SAAS,CAAA;AACjD,MAAA,WAAA,CAAY,UAAW,EAAA;AAAA;AACzB,GACC,EAAA,CAAC,WAAa,EAAA,OAAO,CAAC,CAAA;AAEzB,EAAO,OAAA,WAAA;AACT;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useQueryVariable.js","sources":["../../../src/hooks/useQueryVariable.ts"],"sourcesContent":["import { QueryVariable, SceneDataQuery, sceneGraph } from '@grafana/scenes';\nimport { useSceneContext } from './hooks';\nimport { useEffect } from 'react';\nimport { isEqual } from 'lodash';\n\ninterface QueryVariableOptions {\n name: string;\n datasource: string;\n query: string | SceneDataQuery;\n regex?: string;\n}\n\n/**\n * A custom hook that creates or updates a `QueryVariable` in the scene context.\n *\n * @param {QueryVariableOptions} options - Options for configuring the `QueryVariable`.\n * @returns {QueryVariable | null} The `QueryVariable` instance or `null`.\n *\n * @example\n * // Usage example\n * const variable = useQueryVariable({\n * name: \"myQueryVariable\",\n * datasource: \"gdev-testdata\",\n * query: \"*\",\n * regex: \".*someFilter.*\"\n * });\n *\n * // Returns a QueryVariable instance or null if not a valid QueryVariable\n * if (variable) {\n * console.log(\"Variable added to the scene:\", variable);\n * }\n */\nexport function useQueryVariable(options: QueryVariableOptions): QueryVariable | null {\n const scene = useSceneContext();\n let variable = sceneGraph.lookupVariable(options.name, scene);\n\n if (!variable) {\n variable = new QueryVariable({\n name: options.name,\n datasource: { uid: options.datasource },\n query: options.query,\n regex: options.regex,\n });\n }\n\n if (!(variable instanceof QueryVariable)) {\n variable = null;\n }\n\n useEffect(() => {\n if (variable) {\n scene.addVariable(variable);\n }\n }, [variable, scene]);\n\n useEffect(() => {\n if (\n variable?.state.datasource?.uid !== options.datasource ||\n !isEqual(variable?.state.query, options.query) ||\n variable?.state.regex !== options.regex\n ) {\n variable?.setState({ datasource: { uid: options.datasource }, query: options.query, regex: options.regex });\n variable?.refreshOptions();\n }\n }, [options, variable]);\n\n return variable;\n}\n"],"names":[],"mappings":";;;;;AAgCO,SAAS,iBAAiB,OAAqD,EAAA;AACpF,EAAA,MAAM,QAAQ,eAAgB,EAAA
|
|
1
|
+
{"version":3,"file":"useQueryVariable.js","sources":["../../../src/hooks/useQueryVariable.ts"],"sourcesContent":["import { QueryVariable, SceneDataQuery, sceneGraph } from '@grafana/scenes';\nimport { useSceneContext } from './hooks';\nimport { useEffect } from 'react';\nimport { isEqual } from 'lodash';\n\ninterface QueryVariableOptions {\n name: string;\n datasource: string;\n query: string | SceneDataQuery;\n regex?: string;\n}\n\n/**\n * A custom hook that creates or updates a `QueryVariable` in the scene context.\n *\n * @param {QueryVariableOptions} options - Options for configuring the `QueryVariable`.\n * @returns {QueryVariable | null} The `QueryVariable` instance or `null`.\n *\n * @example\n * // Usage example\n * const variable = useQueryVariable({\n * name: \"myQueryVariable\",\n * datasource: \"gdev-testdata\",\n * query: \"*\",\n * regex: \".*someFilter.*\"\n * });\n *\n * // Returns a QueryVariable instance or null if not a valid QueryVariable\n * if (variable) {\n * console.log(\"Variable added to the scene:\", variable);\n * }\n */\nexport function useQueryVariable(options: QueryVariableOptions): QueryVariable | null {\n const scene = useSceneContext();\n let variable = sceneGraph.lookupVariable(options.name, scene);\n\n if (!variable) {\n variable = new QueryVariable({\n name: options.name,\n datasource: { uid: options.datasource },\n query: options.query,\n regex: options.regex,\n });\n }\n\n if (!(variable instanceof QueryVariable)) {\n variable = null;\n }\n\n useEffect(() => {\n if (variable) {\n scene.addVariable(variable);\n }\n }, [variable, scene]);\n\n useEffect(() => {\n if (\n variable?.state.datasource?.uid !== options.datasource ||\n !isEqual(variable?.state.query, options.query) ||\n variable?.state.regex !== options.regex\n ) {\n variable?.setState({ datasource: { uid: options.datasource }, query: options.query, regex: options.regex });\n variable?.refreshOptions();\n }\n }, [options, variable]);\n\n return variable;\n}\n"],"names":[],"mappings":";;;;;AAgCO,SAAS,iBAAiB,OAAqD,EAAA;AACpF,EAAA,MAAM,QAAQ,eAAgB,EAAA;AAC9B,EAAA,IAAI,QAAW,GAAA,UAAA,CAAW,cAAe,CAAA,OAAA,CAAQ,MAAM,KAAK,CAAA;AAE5D,EAAA,IAAI,CAAC,QAAU,EAAA;AACb,IAAA,QAAA,GAAW,IAAI,aAAc,CAAA;AAAA,MAC3B,MAAM,OAAQ,CAAA,IAAA;AAAA,MACd,UAAY,EAAA,EAAE,GAAK,EAAA,OAAA,CAAQ,UAAW,EAAA;AAAA,MACtC,OAAO,OAAQ,CAAA,KAAA;AAAA,MACf,OAAO,OAAQ,CAAA;AAAA,KAChB,CAAA;AAAA;AAGH,EAAI,IAAA,EAAE,oBAAoB,aAAgB,CAAA,EAAA;AACxC,IAAW,QAAA,GAAA,IAAA;AAAA;AAGb,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,QAAU,EAAA;AACZ,MAAA,KAAA,CAAM,YAAY,QAAQ,CAAA;AAAA;AAC5B,GACC,EAAA,CAAC,QAAU,EAAA,KAAK,CAAC,CAAA;AAEpB,EAAA,SAAA,CAAU,MAAM;AAvDlB,IAAA,IAAA,EAAA;AAwDI,IAAA,IAAA,CAAA,CACE,0CAAU,KAAM,CAAA,UAAA,KAAhB,mBAA4B,GAAQ,MAAA,OAAA,CAAQ,cAC5C,CAAC,OAAA,CAAQ,qCAAU,KAAM,CAAA,KAAA,EAAO,QAAQ,KAAK,CAAA,IAAA,CAC7C,qCAAU,KAAM,CAAA,KAAA,MAAU,QAAQ,KAClC,EAAA;AACA,MAAA,QAAA,IAAA,IAAA,GAAA,MAAA,GAAA,QAAA,CAAU,QAAS,CAAA,EAAE,UAAY,EAAA,EAAE,GAAK,EAAA,OAAA,CAAQ,UAAW,EAAA,EAAG,KAAO,EAAA,OAAA,CAAQ,KAAO,EAAA,KAAA,EAAO,QAAQ,KAAM,EAAA,CAAA;AACzG,MAAU,QAAA,IAAA,IAAA,GAAA,MAAA,GAAA,QAAA,CAAA,cAAA,EAAA;AAAA;AACZ,GACC,EAAA,CAAC,OAAS,EAAA,QAAQ,CAAC,CAAA;AAEtB,EAAO,OAAA,QAAA;AACT;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSceneObject.js","sources":["../../../src/hooks/useSceneObject.ts"],"sourcesContent":["import { useEffect, useId } from 'react';\nimport { SceneObject, sceneGraph } from '@grafana/scenes';\nimport { useSceneContext } from './hooks';\nimport { CacheKey, SceneObjectConstructor, getSceneObjectCache } from '../caching/SceneObjectCache';\n\nexport interface UseSceneObjectProps<T extends SceneObject> {\n factory: (key: string) => T;\n cacheKey?: CacheKey;\n objectConstructor: SceneObjectConstructor;\n}\n\n/**\n * Helper hook that handles adding and removing the scene object from the scene object graph.\n * Also handles the lookup of the object from the cache if a cache key is provided.\n */\nexport function useSceneObject<T extends SceneObject>(options: UseSceneObjectProps<T>) {\n const scene = useSceneContext();\n const key = useId();\n const cache = getSceneObjectCache();\n let cacheKeyHash = options.cacheKey ? cache.getHashKey(options.cacheKey, options.objectConstructor) : undefined;\n\n let obj = scene.findByKey<T>(key);\n\n if (!obj && cacheKeyHash) {\n obj = cache.get<T>(cacheKeyHash);\n\n if (obj && obj.parent !== scene) {\n // Before clearing parent make sure the object is not already in the scene\n if (sceneGraph.findObject(scene, (sceneObj) => sceneObj === obj)) {\n console.error('A scene object cache key matched an object that is already in the scene');\n obj = undefined;\n // Setting this to undefined so that we later do not add/overwrite the object that is already in the scene\n cacheKeyHash = undefined;\n } else {\n obj.clearParent();\n }\n }\n }\n\n if (!obj) {\n obj = options.factory(key);\n if (cacheKeyHash) {\n cache.add(cacheKeyHash, obj);\n }\n }\n\n useEffect(() => scene.addToScene(obj), [obj, scene]);\n\n return obj;\n}\n"],"names":[],"mappings":";;;;;AAeO,SAAS,eAAsC,OAAiC,EAAA;AACrF,EAAA,MAAM,QAAQ,eAAgB,EAAA
|
|
1
|
+
{"version":3,"file":"useSceneObject.js","sources":["../../../src/hooks/useSceneObject.ts"],"sourcesContent":["import { useEffect, useId } from 'react';\nimport { SceneObject, sceneGraph } from '@grafana/scenes';\nimport { useSceneContext } from './hooks';\nimport { CacheKey, SceneObjectConstructor, getSceneObjectCache } from '../caching/SceneObjectCache';\n\nexport interface UseSceneObjectProps<T extends SceneObject> {\n factory: (key: string) => T;\n cacheKey?: CacheKey;\n objectConstructor: SceneObjectConstructor;\n}\n\n/**\n * Helper hook that handles adding and removing the scene object from the scene object graph.\n * Also handles the lookup of the object from the cache if a cache key is provided.\n */\nexport function useSceneObject<T extends SceneObject>(options: UseSceneObjectProps<T>) {\n const scene = useSceneContext();\n const key = useId();\n const cache = getSceneObjectCache();\n let cacheKeyHash = options.cacheKey ? cache.getHashKey(options.cacheKey, options.objectConstructor) : undefined;\n\n let obj = scene.findByKey<T>(key);\n\n if (!obj && cacheKeyHash) {\n obj = cache.get<T>(cacheKeyHash);\n\n if (obj && obj.parent !== scene) {\n // Before clearing parent make sure the object is not already in the scene\n if (sceneGraph.findObject(scene, (sceneObj) => sceneObj === obj)) {\n console.error('A scene object cache key matched an object that is already in the scene');\n obj = undefined;\n // Setting this to undefined so that we later do not add/overwrite the object that is already in the scene\n cacheKeyHash = undefined;\n } else {\n obj.clearParent();\n }\n }\n }\n\n if (!obj) {\n obj = options.factory(key);\n if (cacheKeyHash) {\n cache.add(cacheKeyHash, obj);\n }\n }\n\n useEffect(() => scene.addToScene(obj), [obj, scene]);\n\n return obj;\n}\n"],"names":[],"mappings":";;;;;AAeO,SAAS,eAAsC,OAAiC,EAAA;AACrF,EAAA,MAAM,QAAQ,eAAgB,EAAA;AAC9B,EAAA,MAAM,MAAM,KAAM,EAAA;AAClB,EAAA,MAAM,QAAQ,mBAAoB,EAAA;AAClC,EAAI,IAAA,YAAA,GAAe,QAAQ,QAAW,GAAA,KAAA,CAAM,WAAW,OAAQ,CAAA,QAAA,EAAU,OAAQ,CAAA,iBAAiB,CAAI,GAAA,MAAA;AAEtG,EAAI,IAAA,GAAA,GAAM,KAAM,CAAA,SAAA,CAAa,GAAG,CAAA;AAEhC,EAAI,IAAA,CAAC,OAAO,YAAc,EAAA;AACxB,IAAM,GAAA,GAAA,KAAA,CAAM,IAAO,YAAY,CAAA;AAE/B,IAAI,IAAA,GAAA,IAAO,GAAI,CAAA,MAAA,KAAW,KAAO,EAAA;AAE/B,MAAA,IAAI,WAAW,UAAW,CAAA,KAAA,EAAO,CAAC,QAAa,KAAA,QAAA,KAAa,GAAG,CAAG,EAAA;AAChE,QAAA,OAAA,CAAQ,MAAM,yEAAyE,CAAA;AACvF,QAAM,GAAA,GAAA,MAAA;AAEN,QAAe,YAAA,GAAA,MAAA;AAAA,OACV,MAAA;AACL,QAAA,GAAA,CAAI,WAAY,EAAA;AAAA;AAClB;AACF;AAGF,EAAA,IAAI,CAAC,GAAK,EAAA;AACR,IAAM,GAAA,GAAA,OAAA,CAAQ,QAAQ,GAAG,CAAA;AACzB,IAAA,IAAI,YAAc,EAAA;AAChB,MAAM,KAAA,CAAA,GAAA,CAAI,cAAc,GAAG,CAAA;AAAA;AAC7B;AAGF,EAAU,SAAA,CAAA,MAAM,MAAM,UAAW,CAAA,GAAG,GAAG,CAAC,GAAA,EAAK,KAAK,CAAC,CAAA;AAEnD,EAAO,OAAA,GAAA;AACT;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useVariableValue.js","sources":["../../../src/hooks/useVariableValue.ts"],"sourcesContent":["import { MultiValueVariable, SceneVariables, VariableValueSingle, sceneGraph } from '@grafana/scenes';\nimport { useSceneContext } from './hooks';\n\nexport function useVariableValue<T = VariableValueSingle>(name: string): [T | undefined, boolean] {\n const scene = useSceneContext();\n const variable = sceneGraph.lookupVariable(name, scene);\n\n if (!variable || (variable instanceof MultiValueVariable && variable.state.isMulti === true)) {\n return [undefined, false];\n }\n\n variable.useState();\n\n const set = variable.parent as SceneVariables;\n const isLoading = set.isVariableLoadingOrWaitingToUpdate(variable);\n let value = variable.getValue();\n\n if (value == null) {\n return [undefined, isLoading];\n }\n\n return [value as T, isLoading];\n}\n"],"names":[],"mappings":";;;AAGO,SAAS,iBAA0C,IAAwC,EAAA;AAChG,EAAA,MAAM,QAAQ,eAAgB,EAAA
|
|
1
|
+
{"version":3,"file":"useVariableValue.js","sources":["../../../src/hooks/useVariableValue.ts"],"sourcesContent":["import { MultiValueVariable, SceneVariables, VariableValueSingle, sceneGraph } from '@grafana/scenes';\nimport { useSceneContext } from './hooks';\n\nexport function useVariableValue<T = VariableValueSingle>(name: string): [T | undefined, boolean] {\n const scene = useSceneContext();\n const variable = sceneGraph.lookupVariable(name, scene);\n\n if (!variable || (variable instanceof MultiValueVariable && variable.state.isMulti === true)) {\n return [undefined, false];\n }\n\n variable.useState();\n\n const set = variable.parent as SceneVariables;\n const isLoading = set.isVariableLoadingOrWaitingToUpdate(variable);\n let value = variable.getValue();\n\n if (value == null) {\n return [undefined, isLoading];\n }\n\n return [value as T, isLoading];\n}\n"],"names":[],"mappings":";;;AAGO,SAAS,iBAA0C,IAAwC,EAAA;AAChG,EAAA,MAAM,QAAQ,eAAgB,EAAA;AAC9B,EAAA,MAAM,QAAW,GAAA,UAAA,CAAW,cAAe,CAAA,IAAA,EAAM,KAAK,CAAA;AAEtD,EAAA,IAAI,CAAC,QAAa,IAAA,QAAA,YAAoB,sBAAsB,QAAS,CAAA,KAAA,CAAM,YAAY,IAAO,EAAA;AAC5F,IAAO,OAAA,CAAC,QAAW,KAAK,CAAA;AAAA;AAG1B,EAAA,QAAA,CAAS,QAAS,EAAA;AAElB,EAAA,MAAM,MAAM,QAAS,CAAA,MAAA;AACrB,EAAM,MAAA,SAAA,GAAY,GAAI,CAAA,kCAAA,CAAmC,QAAQ,CAAA;AACjE,EAAI,IAAA,KAAA,GAAQ,SAAS,QAAS,EAAA;AAE9B,EAAA,IAAI,SAAS,IAAM,EAAA;AACjB,IAAO,OAAA,CAAC,QAAW,SAAS,CAAA;AAAA;AAG9B,EAAO,OAAA,CAAC,OAAY,SAAS,CAAA;AAC/B;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useVariableValues.js","sources":["../../../src/hooks/useVariableValues.ts"],"sourcesContent":["import { SceneVariables, VariableValueSingle, sceneGraph } from '@grafana/scenes';\nimport { useSceneContext } from './hooks';\n\nexport function useVariableValues<T = VariableValueSingle>(name: string): [T[] | undefined, boolean] {\n const scene = useSceneContext();\n const variable = sceneGraph.lookupVariable(name, scene);\n\n if (!variable) {\n return [undefined, false];\n }\n\n variable.useState();\n\n const set = variable.parent as SceneVariables;\n const isLoading = set.isVariableLoadingOrWaitingToUpdate(variable);\n let value = variable.getValue();\n\n if (value == null) {\n return [undefined, isLoading];\n }\n\n if (!Array.isArray(value)) {\n value = [value];\n }\n\n return [value as T[], isLoading];\n}\n"],"names":[],"mappings":";;;AAGO,SAAS,kBAA2C,IAA0C,EAAA;AACnG,EAAA,MAAM,QAAQ,eAAgB,EAAA
|
|
1
|
+
{"version":3,"file":"useVariableValues.js","sources":["../../../src/hooks/useVariableValues.ts"],"sourcesContent":["import { SceneVariables, VariableValueSingle, sceneGraph } from '@grafana/scenes';\nimport { useSceneContext } from './hooks';\n\nexport function useVariableValues<T = VariableValueSingle>(name: string): [T[] | undefined, boolean] {\n const scene = useSceneContext();\n const variable = sceneGraph.lookupVariable(name, scene);\n\n if (!variable) {\n return [undefined, false];\n }\n\n variable.useState();\n\n const set = variable.parent as SceneVariables;\n const isLoading = set.isVariableLoadingOrWaitingToUpdate(variable);\n let value = variable.getValue();\n\n if (value == null) {\n return [undefined, isLoading];\n }\n\n if (!Array.isArray(value)) {\n value = [value];\n }\n\n return [value as T[], isLoading];\n}\n"],"names":[],"mappings":";;;AAGO,SAAS,kBAA2C,IAA0C,EAAA;AACnG,EAAA,MAAM,QAAQ,eAAgB,EAAA;AAC9B,EAAA,MAAM,QAAW,GAAA,UAAA,CAAW,cAAe,CAAA,IAAA,EAAM,KAAK,CAAA;AAEtD,EAAA,IAAI,CAAC,QAAU,EAAA;AACb,IAAO,OAAA,CAAC,QAAW,KAAK,CAAA;AAAA;AAG1B,EAAA,QAAA,CAAS,QAAS,EAAA;AAElB,EAAA,MAAM,MAAM,QAAS,CAAA,MAAA;AACrB,EAAM,MAAA,SAAA,GAAY,GAAI,CAAA,kCAAA,CAAmC,QAAQ,CAAA;AACjE,EAAI,IAAA,KAAA,GAAQ,SAAS,QAAS,EAAA;AAE9B,EAAA,IAAI,SAAS,IAAM,EAAA;AACjB,IAAO,OAAA,CAAC,QAAW,SAAS,CAAA;AAAA;AAG9B,EAAA,IAAI,CAAC,KAAA,CAAM,OAAQ,CAAA,KAAK,CAAG,EAAA;AACzB,IAAA,KAAA,GAAQ,CAAC,KAAK,CAAA;AAAA;AAGhB,EAAO,OAAA,CAAC,OAAc,SAAS,CAAA;AACjC;;;;"}
|
|
@@ -3,36 +3,13 @@ import { EmbeddedScene } from '@grafana/scenes';
|
|
|
3
3
|
import { SceneContext } from '../contexts/SceneContextProvider.js';
|
|
4
4
|
import { SceneContextObject } from '../contexts/SceneContextObject.js';
|
|
5
5
|
|
|
6
|
-
var __defProp = Object.defineProperty;
|
|
7
|
-
var __defProps = Object.defineProperties;
|
|
8
|
-
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
9
|
-
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
10
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
11
|
-
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
12
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
13
|
-
var __spreadValues = (a, b) => {
|
|
14
|
-
for (var prop in b || (b = {}))
|
|
15
|
-
if (__hasOwnProp.call(b, prop))
|
|
16
|
-
__defNormalProp(a, prop, b[prop]);
|
|
17
|
-
if (__getOwnPropSymbols)
|
|
18
|
-
for (var prop of __getOwnPropSymbols(b)) {
|
|
19
|
-
if (__propIsEnum.call(b, prop))
|
|
20
|
-
__defNormalProp(a, prop, b[prop]);
|
|
21
|
-
}
|
|
22
|
-
return a;
|
|
23
|
-
};
|
|
24
|
-
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
25
6
|
class EmbeddedSceneWithContext extends EmbeddedScene {
|
|
26
7
|
constructor(state) {
|
|
27
|
-
super(
|
|
8
|
+
super({ ...state, context: new SceneContextObject() });
|
|
28
9
|
}
|
|
29
10
|
}
|
|
30
11
|
EmbeddedSceneWithContext.Component = ({ model }) => {
|
|
31
|
-
return /* @__PURE__ */ React.createElement(SceneContext.Provider, {
|
|
32
|
-
value: model.state.context
|
|
33
|
-
}, /* @__PURE__ */ React.createElement(EmbeddedScene.Component, {
|
|
34
|
-
model
|
|
35
|
-
}));
|
|
12
|
+
return /* @__PURE__ */ React.createElement(SceneContext.Provider, { value: model.state.context }, /* @__PURE__ */ React.createElement(EmbeddedScene.Component, { model }));
|
|
36
13
|
};
|
|
37
14
|
|
|
38
15
|
export { EmbeddedSceneWithContext };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmbeddedSceneWithContext.js","sources":["../../../src/interoperability/EmbeddedSceneWithContext.tsx"],"sourcesContent":["import React from 'react';\nimport { EmbeddedScene, EmbeddedSceneState, SceneComponentProps } from '@grafana/scenes';\nimport { SceneContext } from '../contexts/SceneContextProvider';\nimport { SceneContextObject } from '../contexts/SceneContextObject';\n\nexport class EmbeddedSceneWithContext extends EmbeddedScene {\n public constructor(state: EmbeddedSceneState) {\n super({ ...state, context: new SceneContextObject() });\n }\n\n public static Component = ({ model }: SceneComponentProps<EmbeddedSceneWithContext>) => {\n return (\n <SceneContext.Provider value={model.state.context as SceneContextObject}>\n <EmbeddedScene.Component model={model} />\n </SceneContext.Provider>\n );\n };\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"EmbeddedSceneWithContext.js","sources":["../../../src/interoperability/EmbeddedSceneWithContext.tsx"],"sourcesContent":["import React from 'react';\nimport { EmbeddedScene, EmbeddedSceneState, SceneComponentProps } from '@grafana/scenes';\nimport { SceneContext } from '../contexts/SceneContextProvider';\nimport { SceneContextObject } from '../contexts/SceneContextObject';\n\nexport class EmbeddedSceneWithContext extends EmbeddedScene {\n public constructor(state: EmbeddedSceneState) {\n super({ ...state, context: new SceneContextObject() });\n }\n\n public static Component = ({ model }: SceneComponentProps<EmbeddedSceneWithContext>) => {\n return (\n <SceneContext.Provider value={model.state.context as SceneContextObject}>\n <EmbeddedScene.Component model={model} />\n </SceneContext.Provider>\n );\n };\n}\n"],"names":[],"mappings":";;;;;AAKO,MAAM,iCAAiC,aAAc,CAAA;AAAA,EACnD,YAAY,KAA2B,EAAA;AAC5C,IAAA,KAAA,CAAM,EAAE,GAAG,KAAA,EAAO,SAAS,IAAI,kBAAA,IAAsB,CAAA;AAAA;AAUzD;AAZa,wBAAA,CAKG,SAAY,GAAA,CAAC,EAAE,KAAA,EAA2D,KAAA;AACtF,EAAA,uBACG,KAAA,CAAA,aAAA,CAAA,YAAA,CAAa,QAAb,EAAA,EAAsB,KAAO,EAAA,KAAA,CAAM,KAAM,CAAA,OAAA,EAAA,kBACvC,KAAA,CAAA,aAAA,CAAA,aAAA,CAAc,SAAd,EAAA,EAAwB,OAAc,CACzC,CAAA;AAEJ,CAAA;;;;"}
|
package/dist/esm/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../src/utils.ts"],"sourcesContent":["export function writeSceneLog(logger: string, message: string, ...rest: unknown[]) {\n let loggingEnabled = false;\n\n if (typeof window !== 'undefined') {\n loggingEnabled = localStorage.getItem('grafana.debug.scenes') === 'true';\n }\n\n if (loggingEnabled) {\n console.log(`${logger}: `, message, ...rest);\n }\n}\n"],"names":[],"mappings":"AAAgB,SAAA,aAAA,CAAc,MAAgB,EAAA,OAAA,EAAA,GAAoB,IAAiB,EAAA;AACjF,EAAA,IAAI,cAAiB,GAAA,KAAA
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../src/utils.ts"],"sourcesContent":["export function writeSceneLog(logger: string, message: string, ...rest: unknown[]) {\n let loggingEnabled = false;\n\n if (typeof window !== 'undefined') {\n loggingEnabled = localStorage.getItem('grafana.debug.scenes') === 'true';\n }\n\n if (loggingEnabled) {\n console.log(`${logger}: `, message, ...rest);\n }\n}\n"],"names":[],"mappings":"AAAgB,SAAA,aAAA,CAAc,MAAgB,EAAA,OAAA,EAAA,GAAoB,IAAiB,EAAA;AACjF,EAAA,IAAI,cAAiB,GAAA,KAAA;AAErB,EAAI,IAAA,OAAO,WAAW,WAAa,EAAA;AACjC,IAAiB,cAAA,GAAA,YAAA,CAAa,OAAQ,CAAA,sBAAsB,CAAM,KAAA,MAAA;AAAA;AAGpE,EAAA,IAAI,cAAgB,EAAA;AAClB,IAAA,OAAA,CAAQ,IAAI,CAAG,EAAA,MAAM,CAAM,EAAA,CAAA,EAAA,OAAA,EAAS,GAAG,IAAI,CAAA;AAAA;AAE/C;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CustomVariable.js","sources":["../../../src/variables/CustomVariable.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { CustomVariable as CustomVariableObject } from '@grafana/scenes';\nimport { useSceneContext } from '../hooks/hooks';\nimport { VariableProps } from './types';\n\nexport interface CustomVariableProps extends VariableProps {\n query: string;\n isMulti?: boolean;\n includeAll?: boolean;\n children: React.ReactNode;\n}\n\nexport function CustomVariable({\n query,\n name,\n label,\n hide,\n initialValue,\n isMulti,\n includeAll,\n children,\n}: CustomVariableProps): React.ReactNode {\n const scene = useSceneContext();\n const [variableAdded, setVariableAdded] = useState<boolean>();\n\n let variable: CustomVariableObject | undefined = scene.findVariable(name);\n\n if (!variable) {\n variable = new CustomVariableObject({ name, label, query, value: initialValue, isMulti, includeAll, hide });\n }\n\n useEffect(() => {\n const removeFn = scene.addVariable(variable);\n setVariableAdded(true);\n return removeFn;\n }, [variable, scene, name]);\n\n useEffect(() => {\n variable?.setState({\n label,\n query,\n hide,\n isMulti,\n includeAll,\n });\n }, [hide, includeAll, isMulti, label, query, variable]);\n\n // Need to block child rendering until the variable is added so that child components like RVariableSelect find the variable\n if (!variableAdded) {\n return null;\n }\n\n return children;\n}\n"],"names":["CustomVariableObject"],"mappings":";;;;AAYO,SAAS,cAAe,CAAA;AAAA,EAC7B,KAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,YAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA;AAAA,EACA
|
|
1
|
+
{"version":3,"file":"CustomVariable.js","sources":["../../../src/variables/CustomVariable.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { CustomVariable as CustomVariableObject } from '@grafana/scenes';\nimport { useSceneContext } from '../hooks/hooks';\nimport { VariableProps } from './types';\n\nexport interface CustomVariableProps extends VariableProps {\n query: string;\n isMulti?: boolean;\n includeAll?: boolean;\n children: React.ReactNode;\n}\n\nexport function CustomVariable({\n query,\n name,\n label,\n hide,\n initialValue,\n isMulti,\n includeAll,\n children,\n}: CustomVariableProps): React.ReactNode {\n const scene = useSceneContext();\n const [variableAdded, setVariableAdded] = useState<boolean>();\n\n let variable: CustomVariableObject | undefined = scene.findVariable(name);\n\n if (!variable) {\n variable = new CustomVariableObject({ name, label, query, value: initialValue, isMulti, includeAll, hide });\n }\n\n useEffect(() => {\n const removeFn = scene.addVariable(variable);\n setVariableAdded(true);\n return removeFn;\n }, [variable, scene, name]);\n\n useEffect(() => {\n variable?.setState({\n label,\n query,\n hide,\n isMulti,\n includeAll,\n });\n }, [hide, includeAll, isMulti, label, query, variable]);\n\n // Need to block child rendering until the variable is added so that child components like RVariableSelect find the variable\n if (!variableAdded) {\n return null;\n }\n\n return children;\n}\n"],"names":["CustomVariableObject"],"mappings":";;;;AAYO,SAAS,cAAe,CAAA;AAAA,EAC7B,KAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,YAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAyC,EAAA;AACvC,EAAA,MAAM,QAAQ,eAAgB,EAAA;AAC9B,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,QAAkB,EAAA;AAE5D,EAAI,IAAA,QAAA,GAA6C,KAAM,CAAA,YAAA,CAAa,IAAI,CAAA;AAExE,EAAA,IAAI,CAAC,QAAU,EAAA;AACb,IAAW,QAAA,GAAA,IAAIA,gBAAqB,CAAA,EAAE,IAAM,EAAA,KAAA,EAAO,KAAO,EAAA,KAAA,EAAO,YAAc,EAAA,OAAA,EAAS,UAAY,EAAA,IAAA,EAAM,CAAA;AAAA;AAG5G,EAAA,SAAA,CAAU,MAAM;AACd,IAAM,MAAA,QAAA,GAAW,KAAM,CAAA,WAAA,CAAY,QAAQ,CAAA;AAC3C,IAAA,gBAAA,CAAiB,IAAI,CAAA;AACrB,IAAO,OAAA,QAAA;AAAA,GACN,EAAA,CAAC,QAAU,EAAA,KAAA,EAAO,IAAI,CAAC,CAAA;AAE1B,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,QAAA,IAAA,IAAA,GAAA,MAAA,GAAA,QAAA,CAAU,QAAS,CAAA;AAAA,MACjB,KAAA;AAAA,MACA,KAAA;AAAA,MACA,IAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA,KACF,CAAA;AAAA,GACF,EAAG,CAAC,IAAM,EAAA,UAAA,EAAY,SAAS,KAAO,EAAA,KAAA,EAAO,QAAQ,CAAC,CAAA;AAGtD,EAAA,IAAI,CAAC,aAAe,EAAA;AAClB,IAAO,OAAA,IAAA;AAAA;AAGT,EAAO,OAAA,QAAA;AACT;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataSourceVariable.js","sources":["../../../src/variables/DataSourceVariable.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { DataSourceVariable as DataSourceVariableObject } from '@grafana/scenes';\nimport { useSceneContext } from '../hooks/hooks';\nimport { VariableRefresh, VariableSort } from '@grafana/schema';\nimport { VariableProps } from './types';\n\nexport interface DataSourceVariableProps extends VariableProps {\n pluginId: string;\n regex?: string;\n refresh?: VariableRefresh;\n sort?: VariableSort;\n isMulti?: boolean;\n includeAll?: boolean;\n children: React.ReactNode;\n}\n\nexport function DataSourceVariable({\n pluginId,\n regex,\n name,\n label,\n hide,\n initialValue,\n isMulti,\n includeAll,\n children,\n}: DataSourceVariableProps): React.ReactNode {\n const scene = useSceneContext();\n const [variableAdded, setVariableAdded] = useState<boolean>();\n\n let variable: DataSourceVariableObject | undefined = scene.findVariable(name);\n\n if (!variable) {\n variable = new DataSourceVariableObject({\n pluginId,\n regex,\n name,\n label,\n value: initialValue,\n isMulti,\n hide,\n includeAll,\n });\n }\n\n useEffect(() => {\n const removeFn = scene.addVariable(variable);\n setVariableAdded(true);\n return removeFn;\n }, [variable, scene, name]);\n\n useEffect(() => {\n if (!variableAdded) {\n return;\n }\n\n if (\n variable.state.pluginId === pluginId &&\n variable.state.regex === regex &&\n variable.state.label === label &&\n variable.state.hide === hide &&\n variable.state.includeAll === includeAll\n ) {\n return;\n }\n\n variable.setState({\n pluginId,\n regex,\n label,\n hide,\n includeAll,\n });\n\n variable.refreshOptions();\n }, [hide, includeAll, label, pluginId, regex, variable, variableAdded]);\n\n // Need to block child rendering until the variable is added so that child components like RVariableSelect find the variable\n if (!variableAdded) {\n return null;\n }\n\n return children;\n}\n"],"names":["DataSourceVariableObject"],"mappings":";;;;AAgBO,SAAS,kBAAmB,CAAA;AAAA,EACjC,QAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,YAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA;AAAA,EACA
|
|
1
|
+
{"version":3,"file":"DataSourceVariable.js","sources":["../../../src/variables/DataSourceVariable.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { DataSourceVariable as DataSourceVariableObject } from '@grafana/scenes';\nimport { useSceneContext } from '../hooks/hooks';\nimport { VariableRefresh, VariableSort } from '@grafana/schema';\nimport { VariableProps } from './types';\n\nexport interface DataSourceVariableProps extends VariableProps {\n pluginId: string;\n regex?: string;\n refresh?: VariableRefresh;\n sort?: VariableSort;\n isMulti?: boolean;\n includeAll?: boolean;\n children: React.ReactNode;\n}\n\nexport function DataSourceVariable({\n pluginId,\n regex,\n name,\n label,\n hide,\n initialValue,\n isMulti,\n includeAll,\n children,\n}: DataSourceVariableProps): React.ReactNode {\n const scene = useSceneContext();\n const [variableAdded, setVariableAdded] = useState<boolean>();\n\n let variable: DataSourceVariableObject | undefined = scene.findVariable(name);\n\n if (!variable) {\n variable = new DataSourceVariableObject({\n pluginId,\n regex,\n name,\n label,\n value: initialValue,\n isMulti,\n hide,\n includeAll,\n });\n }\n\n useEffect(() => {\n const removeFn = scene.addVariable(variable);\n setVariableAdded(true);\n return removeFn;\n }, [variable, scene, name]);\n\n useEffect(() => {\n if (!variableAdded) {\n return;\n }\n\n if (\n variable.state.pluginId === pluginId &&\n variable.state.regex === regex &&\n variable.state.label === label &&\n variable.state.hide === hide &&\n variable.state.includeAll === includeAll\n ) {\n return;\n }\n\n variable.setState({\n pluginId,\n regex,\n label,\n hide,\n includeAll,\n });\n\n variable.refreshOptions();\n }, [hide, includeAll, label, pluginId, regex, variable, variableAdded]);\n\n // Need to block child rendering until the variable is added so that child components like RVariableSelect find the variable\n if (!variableAdded) {\n return null;\n }\n\n return children;\n}\n"],"names":["DataSourceVariableObject"],"mappings":";;;;AAgBO,SAAS,kBAAmB,CAAA;AAAA,EACjC,QAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,YAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAA6C,EAAA;AAC3C,EAAA,MAAM,QAAQ,eAAgB,EAAA;AAC9B,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,QAAkB,EAAA;AAE5D,EAAI,IAAA,QAAA,GAAiD,KAAM,CAAA,YAAA,CAAa,IAAI,CAAA;AAE5E,EAAA,IAAI,CAAC,QAAU,EAAA;AACb,IAAA,QAAA,GAAW,IAAIA,oBAAyB,CAAA;AAAA,MACtC,QAAA;AAAA,MACA,KAAA;AAAA,MACA,IAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAO,EAAA,YAAA;AAAA,MACP,OAAA;AAAA,MACA,IAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA;AAGH,EAAA,SAAA,CAAU,MAAM;AACd,IAAM,MAAA,QAAA,GAAW,KAAM,CAAA,WAAA,CAAY,QAAQ,CAAA;AAC3C,IAAA,gBAAA,CAAiB,IAAI,CAAA;AACrB,IAAO,OAAA,QAAA;AAAA,GACN,EAAA,CAAC,QAAU,EAAA,KAAA,EAAO,IAAI,CAAC,CAAA;AAE1B,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,aAAe,EAAA;AAClB,MAAA;AAAA;AAGF,IAAA,IACE,SAAS,KAAM,CAAA,QAAA,KAAa,YAC5B,QAAS,CAAA,KAAA,CAAM,UAAU,KACzB,IAAA,QAAA,CAAS,MAAM,KAAU,KAAA,KAAA,IACzB,SAAS,KAAM,CAAA,IAAA,KAAS,QACxB,QAAS,CAAA,KAAA,CAAM,eAAe,UAC9B,EAAA;AACA,MAAA;AAAA;AAGF,IAAA,QAAA,CAAS,QAAS,CAAA;AAAA,MAChB,QAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA;AAAA,MACA,IAAA;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,QAAA,CAAS,cAAe,EAAA;AAAA,GAC1B,EAAG,CAAC,IAAM,EAAA,UAAA,EAAY,OAAO,QAAU,EAAA,KAAA,EAAO,QAAU,EAAA,aAAa,CAAC,CAAA;AAGtE,EAAA,IAAI,CAAC,aAAe,EAAA;AAClB,IAAO,OAAA,IAAA;AAAA;AAGT,EAAO,OAAA,QAAA;AACT;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryVariable.js","sources":["../../../src/variables/QueryVariable.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { QueryVariable as QueryVariableObject, SceneDataQuery } from '@grafana/scenes';\nimport { useSceneContext } from '../hooks/hooks';\nimport { DataSourceRef, VariableRefresh, VariableSort } from '@grafana/schema';\nimport { VariableProps } from './types';\nimport { isEqual } from 'lodash';\n\nexport interface QueryVariableProps extends VariableProps {\n query: string | SceneDataQuery;\n datasource: DataSourceRef | null;\n regex?: string;\n refresh?: VariableRefresh;\n sort?: VariableSort;\n isMulti?: boolean;\n includeAll?: boolean;\n children: React.ReactNode;\n}\n\nexport function QueryVariable({\n query,\n name,\n datasource,\n label,\n hide,\n regex,\n refresh,\n sort,\n initialValue,\n isMulti,\n includeAll,\n children,\n}: QueryVariableProps): React.ReactNode {\n const scene = useSceneContext();\n const [variableAdded, setVariableAdded] = useState<boolean>();\n\n let variable: QueryVariableObject | undefined = scene.findVariable(name);\n\n if (!variable) {\n variable = new QueryVariableObject({\n name,\n label,\n query,\n datasource,\n refresh,\n sort,\n regex,\n value: initialValue,\n isMulti,\n hide,\n includeAll,\n });\n }\n\n useEffect(() => {\n const removeFn = scene.addVariable(variable);\n setVariableAdded(true);\n return removeFn;\n }, [variable, scene, name]);\n\n useEffect(() => {\n if (!variableAdded) {\n return;\n }\n\n if (\n isEqual(variable.state.query, query) &&\n isEqual(variable.state.datasource, datasource) &&\n variable.state.regex === regex &&\n variable.state.label === label &&\n variable.state.hide === hide &&\n variable.state.includeAll === includeAll &&\n variable.state.refresh === refresh &&\n variable.state.sort === sort\n ) {\n return;\n }\n\n variable.setState({\n label,\n query,\n datasource,\n refresh,\n sort,\n regex,\n hide,\n includeAll,\n });\n\n variable.refreshOptions();\n }, [datasource, hide, includeAll, label, query, refresh, regex, sort, variable, variableAdded]);\n\n // Need to block child rendering until the variable is added so that child components like RVariableSelect find the variable\n if (!variableAdded) {\n return null;\n }\n\n return children;\n}\n"],"names":["QueryVariableObject"],"mappings":";;;;;AAkBO,SAAS,aAAc,CAAA;AAAA,EAC5B,KAAA;AAAA,EACA,IAAA;AAAA,EACA,UAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,YAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA;AAAA,EACA
|
|
1
|
+
{"version":3,"file":"QueryVariable.js","sources":["../../../src/variables/QueryVariable.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { QueryVariable as QueryVariableObject, SceneDataQuery } from '@grafana/scenes';\nimport { useSceneContext } from '../hooks/hooks';\nimport { DataSourceRef, VariableRefresh, VariableSort } from '@grafana/schema';\nimport { VariableProps } from './types';\nimport { isEqual } from 'lodash';\n\nexport interface QueryVariableProps extends VariableProps {\n query: string | SceneDataQuery;\n datasource: DataSourceRef | null;\n regex?: string;\n refresh?: VariableRefresh;\n sort?: VariableSort;\n isMulti?: boolean;\n includeAll?: boolean;\n children: React.ReactNode;\n}\n\nexport function QueryVariable({\n query,\n name,\n datasource,\n label,\n hide,\n regex,\n refresh,\n sort,\n initialValue,\n isMulti,\n includeAll,\n children,\n}: QueryVariableProps): React.ReactNode {\n const scene = useSceneContext();\n const [variableAdded, setVariableAdded] = useState<boolean>();\n\n let variable: QueryVariableObject | undefined = scene.findVariable(name);\n\n if (!variable) {\n variable = new QueryVariableObject({\n name,\n label,\n query,\n datasource,\n refresh,\n sort,\n regex,\n value: initialValue,\n isMulti,\n hide,\n includeAll,\n });\n }\n\n useEffect(() => {\n const removeFn = scene.addVariable(variable);\n setVariableAdded(true);\n return removeFn;\n }, [variable, scene, name]);\n\n useEffect(() => {\n if (!variableAdded) {\n return;\n }\n\n if (\n isEqual(variable.state.query, query) &&\n isEqual(variable.state.datasource, datasource) &&\n variable.state.regex === regex &&\n variable.state.label === label &&\n variable.state.hide === hide &&\n variable.state.includeAll === includeAll &&\n variable.state.refresh === refresh &&\n variable.state.sort === sort\n ) {\n return;\n }\n\n variable.setState({\n label,\n query,\n datasource,\n refresh,\n sort,\n regex,\n hide,\n includeAll,\n });\n\n variable.refreshOptions();\n }, [datasource, hide, includeAll, label, query, refresh, regex, sort, variable, variableAdded]);\n\n // Need to block child rendering until the variable is added so that child components like RVariableSelect find the variable\n if (!variableAdded) {\n return null;\n }\n\n return children;\n}\n"],"names":["QueryVariableObject"],"mappings":";;;;;AAkBO,SAAS,aAAc,CAAA;AAAA,EAC5B,KAAA;AAAA,EACA,IAAA;AAAA,EACA,UAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,YAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAwC,EAAA;AACtC,EAAA,MAAM,QAAQ,eAAgB,EAAA;AAC9B,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,QAAkB,EAAA;AAE5D,EAAI,IAAA,QAAA,GAA4C,KAAM,CAAA,YAAA,CAAa,IAAI,CAAA;AAEvE,EAAA,IAAI,CAAC,QAAU,EAAA;AACb,IAAA,QAAA,GAAW,IAAIA,eAAoB,CAAA;AAAA,MACjC,IAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA;AAAA,MACA,UAAA;AAAA,MACA,OAAA;AAAA,MACA,IAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAO,EAAA,YAAA;AAAA,MACP,OAAA;AAAA,MACA,IAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA;AAGH,EAAA,SAAA,CAAU,MAAM;AACd,IAAM,MAAA,QAAA,GAAW,KAAM,CAAA,WAAA,CAAY,QAAQ,CAAA;AAC3C,IAAA,gBAAA,CAAiB,IAAI,CAAA;AACrB,IAAO,OAAA,QAAA;AAAA,GACN,EAAA,CAAC,QAAU,EAAA,KAAA,EAAO,IAAI,CAAC,CAAA;AAE1B,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,aAAe,EAAA;AAClB,MAAA;AAAA;AAGF,IAAA,IACE,OAAQ,CAAA,QAAA,CAAS,KAAM,CAAA,KAAA,EAAO,KAAK,CACnC,IAAA,OAAA,CAAQ,QAAS,CAAA,KAAA,CAAM,YAAY,UAAU,CAAA,IAC7C,QAAS,CAAA,KAAA,CAAM,UAAU,KACzB,IAAA,QAAA,CAAS,KAAM,CAAA,KAAA,KAAU,SACzB,QAAS,CAAA,KAAA,CAAM,IAAS,KAAA,IAAA,IACxB,SAAS,KAAM,CAAA,UAAA,KAAe,UAC9B,IAAA,QAAA,CAAS,MAAM,OAAY,KAAA,OAAA,IAC3B,QAAS,CAAA,KAAA,CAAM,SAAS,IACxB,EAAA;AACA,MAAA;AAAA;AAGF,IAAA,QAAA,CAAS,QAAS,CAAA;AAAA,MAChB,KAAA;AAAA,MACA,KAAA;AAAA,MACA,UAAA;AAAA,MACA,OAAA;AAAA,MACA,IAAA;AAAA,MACA,KAAA;AAAA,MACA,IAAA;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,QAAA,CAAS,cAAe,EAAA;AAAA,GACvB,EAAA,CAAC,UAAY,EAAA,IAAA,EAAM,UAAY,EAAA,KAAA,EAAO,KAAO,EAAA,OAAA,EAAS,KAAO,EAAA,IAAA,EAAM,QAAU,EAAA,aAAa,CAAC,CAAA;AAG9F,EAAA,IAAI,CAAC,aAAe,EAAA;AAClB,IAAO,OAAA,IAAA;AAAA;AAGT,EAAO,OAAA,QAAA;AACT;;;;"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SceneDataQuery, SceneQueryRunner, CustomTransformerDefinition, SceneDataProvider, SceneDataTransformer, SceneObjectBase, SceneObjectState, SceneObject, SceneVariable, SceneTimeRangeState, ControlsLayout, VizConfig, VizPanelMenu, VizPanel as VizPanel$1, VariableValue, VariableValueSingle, QueryVariable as QueryVariable$1, EmbeddedScene, EmbeddedSceneState, SceneComponentProps, SceneTimeRangeLike } from '@grafana/scenes';
|
|
2
2
|
import { DataSourceRef, DataTransformerConfig, VariableHide, VariableRefresh, VariableSort } from '@grafana/schema';
|
|
3
3
|
import React from 'react';
|
|
4
4
|
import { PanelContext } from '@grafana/ui';
|
|
@@ -246,4 +246,5 @@ declare function useUpdateWhenSceneChanges({ timeRange, variables }: UseUpdateWh
|
|
|
246
246
|
*/
|
|
247
247
|
declare function useVariableInterpolator(options: UseUpdateWhenSceneChangesOptions): (str: string) => string;
|
|
248
248
|
|
|
249
|
-
export { AnnotationLayer, Breadcrumb, BreadcrumbContext, BreadcrumbProvider, CustomVariable, DataLayerControl, DataSourceVariable, EmbeddedSceneWithContext, QueryVariable, RefreshPicker, SceneContext, SceneContextObject, SceneContextProvider,
|
|
249
|
+
export { AnnotationLayer, Breadcrumb, BreadcrumbContext, BreadcrumbProvider, CustomVariable, DataLayerControl, DataSourceVariable, EmbeddedSceneWithContext, QueryVariable, RefreshPicker, SceneContext, SceneContextObject, SceneContextProvider, TimeRangePicker, VariableControl, VizGridLayout, VizPanel, useDataTransformer, useQueryRunner, useQueryVariable, useSceneContext, useTimeRange, useUpdateWhenSceneChanges, useVariableInterpolator, useVariableValue, useVariableValues, useVariables };
|
|
250
|
+
export type { SceneContextProviderProps, UseUpdateWhenSceneChangesOptions, UseUpdateWhenSceneChangesReason };
|
package/dist/index.js
CHANGED
|
@@ -13,9 +13,9 @@ var data = require('@grafana/data');
|
|
|
13
13
|
var runtime = require('@grafana/runtime');
|
|
14
14
|
var reactRouterDom = require('react-router-dom');
|
|
15
15
|
|
|
16
|
-
function
|
|
16
|
+
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
17
17
|
|
|
18
|
-
var React__default = /*#__PURE__*/
|
|
18
|
+
var React__default = /*#__PURE__*/_interopDefaultCompat(React);
|
|
19
19
|
|
|
20
20
|
function writeSceneLog(logger, message, ...rest) {
|
|
21
21
|
let loggingEnabled = false;
|
|
@@ -27,32 +27,14 @@ function writeSceneLog(logger, message, ...rest) {
|
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
var __defProp$2 = Object.defineProperty;
|
|
31
|
-
var __defProps$1 = Object.defineProperties;
|
|
32
|
-
var __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors;
|
|
33
|
-
var __getOwnPropSymbols$2 = Object.getOwnPropertySymbols;
|
|
34
|
-
var __hasOwnProp$2 = Object.prototype.hasOwnProperty;
|
|
35
|
-
var __propIsEnum$2 = Object.prototype.propertyIsEnumerable;
|
|
36
|
-
var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
37
|
-
var __spreadValues$2 = (a, b) => {
|
|
38
|
-
for (var prop in b || (b = {}))
|
|
39
|
-
if (__hasOwnProp$2.call(b, prop))
|
|
40
|
-
__defNormalProp$2(a, prop, b[prop]);
|
|
41
|
-
if (__getOwnPropSymbols$2)
|
|
42
|
-
for (var prop of __getOwnPropSymbols$2(b)) {
|
|
43
|
-
if (__propIsEnum$2.call(b, prop))
|
|
44
|
-
__defNormalProp$2(a, prop, b[prop]);
|
|
45
|
-
}
|
|
46
|
-
return a;
|
|
47
|
-
};
|
|
48
|
-
var __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b));
|
|
49
30
|
class SceneContextObject extends scenes.SceneObjectBase {
|
|
50
31
|
constructor(state) {
|
|
51
32
|
var _a, _b;
|
|
52
|
-
super(
|
|
33
|
+
super({
|
|
34
|
+
...state,
|
|
53
35
|
children: (_a = state == null ? void 0 : state.children) != null ? _a : [],
|
|
54
36
|
childContexts: (_b = state == null ? void 0 : state.childContexts) != null ? _b : []
|
|
55
|
-
})
|
|
37
|
+
});
|
|
56
38
|
}
|
|
57
39
|
addToScene(obj) {
|
|
58
40
|
this.publishEvent(new scenes.NewSceneObjectAddedEvent(obj), true);
|
|
@@ -134,17 +116,11 @@ function SceneContextProvider({ children, timeRange, withQueryController }) {
|
|
|
134
116
|
if (!childContext) {
|
|
135
117
|
return null;
|
|
136
118
|
}
|
|
137
|
-
const innerProvider = /* @__PURE__ */ React__default
|
|
138
|
-
value: childContext
|
|
139
|
-
}, children);
|
|
119
|
+
const innerProvider = /* @__PURE__ */ React__default.default.createElement(SceneContext.Provider, { value: childContext }, children);
|
|
140
120
|
if (parentContext) {
|
|
141
121
|
return innerProvider;
|
|
142
122
|
}
|
|
143
|
-
return /* @__PURE__ */ React__default
|
|
144
|
-
scene: childContext,
|
|
145
|
-
updateUrlOnInit: true,
|
|
146
|
-
createBrowserHistorySteps: true
|
|
147
|
-
}, innerProvider);
|
|
123
|
+
return /* @__PURE__ */ React__default.default.createElement(scenes.UrlSyncContextProvider, { scene: childContext, updateUrlOnInit: true, createBrowserHistorySteps: true }, innerProvider);
|
|
148
124
|
}
|
|
149
125
|
|
|
150
126
|
function useSceneContext() {
|
|
@@ -205,38 +181,25 @@ function useVariableInterpolator(options) {
|
|
|
205
181
|
);
|
|
206
182
|
}
|
|
207
183
|
|
|
208
|
-
var
|
|
209
|
-
|
|
210
|
-
throw TypeError("Cannot " + msg);
|
|
211
|
-
};
|
|
212
|
-
var __privateGet = (obj, member, getter) => {
|
|
213
|
-
__accessCheck(obj, member, "read from private field");
|
|
214
|
-
return getter ? getter.call(obj) : member.get(obj);
|
|
215
|
-
};
|
|
216
|
-
var __privateAdd = (obj, member, value) => {
|
|
217
|
-
if (member.has(obj))
|
|
218
|
-
throw TypeError("Cannot add the same private member more than once");
|
|
219
|
-
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
220
|
-
};
|
|
221
|
-
var __privateSet = (obj, member, value, setter) => {
|
|
222
|
-
__accessCheck(obj, member, "write to private field");
|
|
223
|
-
setter ? setter.call(obj, value) : member.set(obj, value);
|
|
224
|
-
return value;
|
|
225
|
-
};
|
|
226
|
-
var __privateWrapper = (obj, member, setter, getter) => {
|
|
227
|
-
return {
|
|
228
|
-
set _(value) {
|
|
229
|
-
__privateSet(obj, member, value, setter);
|
|
230
|
-
},
|
|
231
|
-
get _() {
|
|
232
|
-
return __privateGet(obj, member, getter);
|
|
233
|
-
}
|
|
234
|
-
};
|
|
184
|
+
var __typeError = (msg) => {
|
|
185
|
+
throw TypeError(msg);
|
|
235
186
|
};
|
|
187
|
+
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
|
|
188
|
+
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
189
|
+
var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
190
|
+
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
|
|
191
|
+
var __privateWrapper = (obj, member, setter, getter) => ({
|
|
192
|
+
set _(value) {
|
|
193
|
+
__privateSet(obj, member, value);
|
|
194
|
+
},
|
|
195
|
+
get _() {
|
|
196
|
+
return __privateGet(obj, member, getter);
|
|
197
|
+
}
|
|
198
|
+
});
|
|
236
199
|
var _cache, _objectRefIds, _objectRefIdCounter;
|
|
237
200
|
class SceneObjectCache {
|
|
238
201
|
constructor() {
|
|
239
|
-
__privateAdd(this, _cache
|
|
202
|
+
__privateAdd(this, _cache);
|
|
240
203
|
__privateAdd(this, _objectRefIds, /* @__PURE__ */ new WeakMap());
|
|
241
204
|
__privateAdd(this, _objectRefIdCounter, 0);
|
|
242
205
|
__privateSet(this, _cache, new lruCache.LRUCache({
|
|
@@ -364,36 +327,34 @@ function useDataTransformer(options) {
|
|
|
364
327
|
|
|
365
328
|
function TimeRangePicker(props) {
|
|
366
329
|
const [value, sceneTimeRange] = useTimeRange();
|
|
367
|
-
return /* @__PURE__ */ React__default
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
330
|
+
return /* @__PURE__ */ React__default.default.createElement(
|
|
331
|
+
ui.TimeRangePicker,
|
|
332
|
+
{
|
|
333
|
+
isOnCanvas: true,
|
|
334
|
+
value,
|
|
335
|
+
onChange: sceneTimeRange.onTimeRangeChange,
|
|
336
|
+
timeZone: sceneTimeRange.getTimeZone(),
|
|
337
|
+
onMoveBackward: () => {
|
|
338
|
+
},
|
|
339
|
+
onMoveForward: () => {
|
|
340
|
+
},
|
|
341
|
+
onZoom: () => {
|
|
342
|
+
},
|
|
343
|
+
onChangeTimeZone: () => {
|
|
344
|
+
},
|
|
345
|
+
onChangeFiscalYearStartMonth: () => {
|
|
346
|
+
}
|
|
381
347
|
}
|
|
382
|
-
|
|
348
|
+
);
|
|
383
349
|
}
|
|
384
350
|
|
|
385
351
|
function VariableControl({ name, hideLabel, layout }) {
|
|
386
352
|
const scene = useSceneContext();
|
|
387
353
|
const variable = scenes.sceneGraph.lookupVariable(name, scene);
|
|
388
354
|
if (!variable) {
|
|
389
|
-
return /* @__PURE__ */ React__default
|
|
355
|
+
return /* @__PURE__ */ React__default.default.createElement("div", null, "Variable ", name, " not found");
|
|
390
356
|
}
|
|
391
|
-
return /* @__PURE__ */ React__default
|
|
392
|
-
key: variable.state.key,
|
|
393
|
-
variable,
|
|
394
|
-
hideLabel,
|
|
395
|
-
layout
|
|
396
|
-
});
|
|
357
|
+
return /* @__PURE__ */ React__default.default.createElement(scenes.VariableValueSelectWrapper, { key: variable.state.key, variable, hideLabel, layout });
|
|
397
358
|
}
|
|
398
359
|
|
|
399
360
|
function VizPanel(props) {
|
|
@@ -524,9 +485,7 @@ function VizPanel(props) {
|
|
|
524
485
|
collapsed,
|
|
525
486
|
prevProps
|
|
526
487
|
]);
|
|
527
|
-
return /* @__PURE__ */ React__default
|
|
528
|
-
model: panel
|
|
529
|
-
});
|
|
488
|
+
return /* @__PURE__ */ React__default.default.createElement(panel.Component, { model: panel });
|
|
530
489
|
}
|
|
531
490
|
function getDataProviderForVizPanel(data) {
|
|
532
491
|
if (data && !(data instanceof scenes.SceneDataNode)) {
|
|
@@ -535,31 +494,16 @@ function getDataProviderForVizPanel(data) {
|
|
|
535
494
|
return data;
|
|
536
495
|
}
|
|
537
496
|
|
|
538
|
-
var __defProp$1 = Object.defineProperty;
|
|
539
|
-
var __getOwnPropSymbols$1 = Object.getOwnPropertySymbols;
|
|
540
|
-
var __hasOwnProp$1 = Object.prototype.hasOwnProperty;
|
|
541
|
-
var __propIsEnum$1 = Object.prototype.propertyIsEnumerable;
|
|
542
|
-
var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
543
|
-
var __spreadValues$1 = (a, b) => {
|
|
544
|
-
for (var prop in b || (b = {}))
|
|
545
|
-
if (__hasOwnProp$1.call(b, prop))
|
|
546
|
-
__defNormalProp$1(a, prop, b[prop]);
|
|
547
|
-
if (__getOwnPropSymbols$1)
|
|
548
|
-
for (var prop of __getOwnPropSymbols$1(b)) {
|
|
549
|
-
if (__propIsEnum$1.call(b, prop))
|
|
550
|
-
__defNormalProp$1(a, prop, b[prop]);
|
|
551
|
-
}
|
|
552
|
-
return a;
|
|
553
|
-
};
|
|
554
497
|
function RefreshPicker(props) {
|
|
555
498
|
const scene = useSceneContext();
|
|
556
499
|
const key = React.useId();
|
|
557
500
|
const prevProps = reactUse.usePrevious(props);
|
|
558
501
|
let picker = scene.findByKey(key);
|
|
559
502
|
if (!picker) {
|
|
560
|
-
picker = new scenes.SceneRefreshPicker(
|
|
561
|
-
key
|
|
562
|
-
|
|
503
|
+
picker = new scenes.SceneRefreshPicker({
|
|
504
|
+
key,
|
|
505
|
+
...props
|
|
506
|
+
});
|
|
563
507
|
}
|
|
564
508
|
React.useEffect(() => scene.addToScene(picker), [picker, scene]);
|
|
565
509
|
React.useEffect(() => {
|
|
@@ -575,9 +519,7 @@ function RefreshPicker(props) {
|
|
|
575
519
|
}
|
|
576
520
|
picker.setState(stateUpdate);
|
|
577
521
|
}, [picker, props, prevProps]);
|
|
578
|
-
return /* @__PURE__ */ React__default
|
|
579
|
-
model: picker
|
|
580
|
-
});
|
|
522
|
+
return /* @__PURE__ */ React__default.default.createElement(picker.Component, { model: picker });
|
|
581
523
|
}
|
|
582
524
|
|
|
583
525
|
function DataLayerControl({ name }) {
|
|
@@ -585,11 +527,9 @@ function DataLayerControl({ name }) {
|
|
|
585
527
|
const layerSets = scenes.sceneGraph.getDataLayers(scene);
|
|
586
528
|
const layer = getLayer(layerSets, name);
|
|
587
529
|
if (!layer) {
|
|
588
|
-
return /* @__PURE__ */ React__default
|
|
530
|
+
return /* @__PURE__ */ React__default.default.createElement("div", null, "Annotation ", name, " not found");
|
|
589
531
|
}
|
|
590
|
-
return /* @__PURE__ */ React__default
|
|
591
|
-
model: layer
|
|
592
|
-
});
|
|
532
|
+
return /* @__PURE__ */ React__default.default.createElement(layer.Component, { model: layer });
|
|
593
533
|
}
|
|
594
534
|
function getLayer(layers, name) {
|
|
595
535
|
for (let i = 0; i < layers.length; i++) {
|
|
@@ -761,16 +701,20 @@ const BreadcrumbContext = React.createContext({
|
|
|
761
701
|
});
|
|
762
702
|
function BreadcrumbProvider({ children }) {
|
|
763
703
|
const [breadcrumbs, setBreadcrumbs] = React.useState([]);
|
|
764
|
-
return /* @__PURE__ */ React__default
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
(breadcrumb) => setBreadcrumbs((prev) => prev
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
704
|
+
return /* @__PURE__ */ React__default.default.createElement(
|
|
705
|
+
BreadcrumbContext.Provider,
|
|
706
|
+
{
|
|
707
|
+
value: {
|
|
708
|
+
breadcrumbs,
|
|
709
|
+
addBreadcrumb: React.useCallback((breadcrumb) => setBreadcrumbs((prev) => [...prev, breadcrumb]), []),
|
|
710
|
+
removeBreadcrumb: React.useCallback(
|
|
711
|
+
(breadcrumb) => setBreadcrumbs((prev) => prev.filter((b) => b.url !== breadcrumb.url)),
|
|
712
|
+
[]
|
|
713
|
+
)
|
|
714
|
+
}
|
|
715
|
+
},
|
|
716
|
+
children
|
|
717
|
+
);
|
|
774
718
|
}
|
|
775
719
|
function Breadcrumb({ text, path, extraKeys }) {
|
|
776
720
|
const { addBreadcrumb, removeBreadcrumb } = React.useContext(BreadcrumbContext);
|
|
@@ -928,36 +872,13 @@ function addAnnotationLayer(scene, layer) {
|
|
|
928
872
|
};
|
|
929
873
|
}
|
|
930
874
|
|
|
931
|
-
var __defProp = Object.defineProperty;
|
|
932
|
-
var __defProps = Object.defineProperties;
|
|
933
|
-
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
934
|
-
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
935
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
936
|
-
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
937
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
938
|
-
var __spreadValues = (a, b) => {
|
|
939
|
-
for (var prop in b || (b = {}))
|
|
940
|
-
if (__hasOwnProp.call(b, prop))
|
|
941
|
-
__defNormalProp(a, prop, b[prop]);
|
|
942
|
-
if (__getOwnPropSymbols)
|
|
943
|
-
for (var prop of __getOwnPropSymbols(b)) {
|
|
944
|
-
if (__propIsEnum.call(b, prop))
|
|
945
|
-
__defNormalProp(a, prop, b[prop]);
|
|
946
|
-
}
|
|
947
|
-
return a;
|
|
948
|
-
};
|
|
949
|
-
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
950
875
|
class EmbeddedSceneWithContext extends scenes.EmbeddedScene {
|
|
951
876
|
constructor(state) {
|
|
952
|
-
super(
|
|
877
|
+
super({ ...state, context: new SceneContextObject() });
|
|
953
878
|
}
|
|
954
879
|
}
|
|
955
880
|
EmbeddedSceneWithContext.Component = ({ model }) => {
|
|
956
|
-
return /* @__PURE__ */ React__default
|
|
957
|
-
value: model.state.context
|
|
958
|
-
}, /* @__PURE__ */ React__default["default"].createElement(scenes.EmbeddedScene.Component, {
|
|
959
|
-
model
|
|
960
|
-
}));
|
|
881
|
+
return /* @__PURE__ */ React__default.default.createElement(SceneContext.Provider, { value: model.state.context }, /* @__PURE__ */ React__default.default.createElement(scenes.EmbeddedScene.Component, { model }));
|
|
961
882
|
};
|
|
962
883
|
|
|
963
884
|
function VizGridLayout({ children, minWidth = 400, minHeight = 320 }) {
|
|
@@ -970,9 +891,7 @@ function VizGridLayout({ children, minWidth = 400, minHeight = 320 }) {
|
|
|
970
891
|
columnGap: theme.spacing(1),
|
|
971
892
|
rowGap: theme.spacing(1)
|
|
972
893
|
};
|
|
973
|
-
return /* @__PURE__ */ React__default
|
|
974
|
-
style
|
|
975
|
-
}, children);
|
|
894
|
+
return /* @__PURE__ */ React__default.default.createElement("div", { style }, children);
|
|
976
895
|
}
|
|
977
896
|
|
|
978
897
|
exports.AnnotationLayer = AnnotationLayer;
|