@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.
Files changed (39) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/esm/caching/SceneObjectCache.js +15 -28
  3. package/dist/esm/caching/SceneObjectCache.js.map +1 -1
  4. package/dist/esm/components/AnnotationLayer.js.map +1 -1
  5. package/dist/esm/components/DataLayerControl.js +1 -3
  6. package/dist/esm/components/DataLayerControl.js.map +1 -1
  7. package/dist/esm/components/RefreshPicker.js +5 -22
  8. package/dist/esm/components/RefreshPicker.js.map +1 -1
  9. package/dist/esm/components/TimeRangePicker.js +18 -15
  10. package/dist/esm/components/TimeRangePicker.js.map +1 -1
  11. package/dist/esm/components/VariableControl.js +1 -6
  12. package/dist/esm/components/VariableControl.js.map +1 -1
  13. package/dist/esm/components/VizGridLayout.js +1 -3
  14. package/dist/esm/components/VizGridLayout.js.map +1 -1
  15. package/dist/esm/components/VizPanel.js +1 -3
  16. package/dist/esm/components/VizPanel.js.map +1 -1
  17. package/dist/esm/contexts/BreadcrumbContext.js +15 -11
  18. package/dist/esm/contexts/BreadcrumbContext.js.map +1 -1
  19. package/dist/esm/contexts/SceneContextObject.js +3 -21
  20. package/dist/esm/contexts/SceneContextObject.js.map +1 -1
  21. package/dist/esm/contexts/SceneContextProvider.js +2 -8
  22. package/dist/esm/contexts/SceneContextProvider.js.map +1 -1
  23. package/dist/esm/hooks/hooks.js.map +1 -1
  24. package/dist/esm/hooks/useDataTransformer.js.map +1 -1
  25. package/dist/esm/hooks/useQueryRunner.js.map +1 -1
  26. package/dist/esm/hooks/useQueryVariable.js.map +1 -1
  27. package/dist/esm/hooks/useSceneObject.js.map +1 -1
  28. package/dist/esm/hooks/useVariableValue.js.map +1 -1
  29. package/dist/esm/hooks/useVariableValues.js.map +1 -1
  30. package/dist/esm/interoperability/EmbeddedSceneWithContext.js +2 -25
  31. package/dist/esm/interoperability/EmbeddedSceneWithContext.js.map +1 -1
  32. package/dist/esm/utils.js.map +1 -1
  33. package/dist/esm/variables/CustomVariable.js.map +1 -1
  34. package/dist/esm/variables/DataSourceVariable.js.map +1 -1
  35. package/dist/esm/variables/QueryVariable.js.map +1 -1
  36. package/dist/index.d.ts +3 -2
  37. package/dist/index.js +67 -148
  38. package/dist/index.js.map +1 -1
  39. 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,sBAAA;AAAA,KACjC,CAAA;AAAA,IACH,iBAAmB,EAAA,gBAAA;AAAA,IACnB,UAAU,OAAQ,CAAA,QAAA;AAAA,GACnB,CAAA,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,CAAA;AACjD,MAAA,WAAA,CAAY,UAAW,EAAA,CAAA;AAAA,KACzB;AAAA,GACC,EAAA,CAAC,WAAa,EAAA,OAAO,CAAC,CAAA,CAAA;AAEzB,EAAO,OAAA,WAAA,CAAA;AACT;;;;"}
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,CAAA;AAC9B,EAAA,IAAI,QAAW,GAAA,UAAA,CAAW,cAAe,CAAA,OAAA,CAAQ,MAAM,KAAK,CAAA,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,KAAA;AAAA,KAChB,CAAA,CAAA;AAAA,GACH;AAEA,EAAI,IAAA,EAAE,oBAAoB,aAAgB,CAAA,EAAA;AACxC,IAAW,QAAA,GAAA,IAAA,CAAA;AAAA,GACb;AAEA,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,QAAU,EAAA;AACZ,MAAA,KAAA,CAAM,YAAY,QAAQ,CAAA,CAAA;AAAA,KAC5B;AAAA,GACC,EAAA,CAAC,QAAU,EAAA,KAAK,CAAC,CAAA,CAAA;AAEpB,EAAA,SAAA,CAAU,MAAM;AAvDlB,IAAA,IAAA,EAAA,CAAA;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,KAAA,CAAA,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,CAAA;AACzG,MAAU,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,cAAA,EAAA,CAAA;AAAA,KACZ;AAAA,GACC,EAAA,CAAC,OAAS,EAAA,QAAQ,CAAC,CAAA,CAAA;AAEtB,EAAO,OAAA,QAAA,CAAA;AACT;;;;"}
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,CAAA;AAC9B,EAAA,MAAM,MAAM,KAAM,EAAA,CAAA;AAClB,EAAA,MAAM,QAAQ,mBAAoB,EAAA,CAAA;AAClC,EAAI,IAAA,YAAA,GAAe,QAAQ,QAAW,GAAA,KAAA,CAAM,WAAW,OAAQ,CAAA,QAAA,EAAU,OAAQ,CAAA,iBAAiB,CAAI,GAAA,KAAA,CAAA,CAAA;AAEtG,EAAI,IAAA,GAAA,GAAM,KAAM,CAAA,SAAA,CAAa,GAAG,CAAA,CAAA;AAEhC,EAAI,IAAA,CAAC,OAAO,YAAc,EAAA;AACxB,IAAM,GAAA,GAAA,KAAA,CAAM,IAAO,YAAY,CAAA,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,CAAA;AACvF,QAAM,GAAA,GAAA,KAAA,CAAA,CAAA;AAEN,QAAe,YAAA,GAAA,KAAA,CAAA,CAAA;AAAA,OACV,MAAA;AACL,QAAA,GAAA,CAAI,WAAY,EAAA,CAAA;AAAA,OAClB;AAAA,KACF;AAAA,GACF;AAEA,EAAA,IAAI,CAAC,GAAK,EAAA;AACR,IAAM,GAAA,GAAA,OAAA,CAAQ,QAAQ,GAAG,CAAA,CAAA;AACzB,IAAA,IAAI,YAAc,EAAA;AAChB,MAAM,KAAA,CAAA,GAAA,CAAI,cAAc,GAAG,CAAA,CAAA;AAAA,KAC7B;AAAA,GACF;AAEA,EAAU,SAAA,CAAA,MAAM,MAAM,UAAW,CAAA,GAAG,GAAG,CAAC,GAAA,EAAK,KAAK,CAAC,CAAA,CAAA;AAEnD,EAAO,OAAA,GAAA,CAAA;AACT;;;;"}
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,CAAA;AAC9B,EAAA,MAAM,QAAW,GAAA,UAAA,CAAW,cAAe,CAAA,IAAA,EAAM,KAAK,CAAA,CAAA;AAEtD,EAAA,IAAI,CAAC,QAAa,IAAA,QAAA,YAAoB,sBAAsB,QAAS,CAAA,KAAA,CAAM,YAAY,IAAO,EAAA;AAC5F,IAAO,OAAA,CAAC,QAAW,KAAK,CAAA,CAAA;AAAA,GAC1B;AAEA,EAAA,QAAA,CAAS,QAAS,EAAA,CAAA;AAElB,EAAA,MAAM,MAAM,QAAS,CAAA,MAAA,CAAA;AACrB,EAAM,MAAA,SAAA,GAAY,GAAI,CAAA,kCAAA,CAAmC,QAAQ,CAAA,CAAA;AACjE,EAAI,IAAA,KAAA,GAAQ,SAAS,QAAS,EAAA,CAAA;AAE9B,EAAA,IAAI,SAAS,IAAM,EAAA;AACjB,IAAO,OAAA,CAAC,QAAW,SAAS,CAAA,CAAA;AAAA,GAC9B;AAEA,EAAO,OAAA,CAAC,OAAY,SAAS,CAAA,CAAA;AAC/B;;;;"}
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,CAAA;AAC9B,EAAA,MAAM,QAAW,GAAA,UAAA,CAAW,cAAe,CAAA,IAAA,EAAM,KAAK,CAAA,CAAA;AAEtD,EAAA,IAAI,CAAC,QAAU,EAAA;AACb,IAAO,OAAA,CAAC,QAAW,KAAK,CAAA,CAAA;AAAA,GAC1B;AAEA,EAAA,QAAA,CAAS,QAAS,EAAA,CAAA;AAElB,EAAA,MAAM,MAAM,QAAS,CAAA,MAAA,CAAA;AACrB,EAAM,MAAA,SAAA,GAAY,GAAI,CAAA,kCAAA,CAAmC,QAAQ,CAAA,CAAA;AACjE,EAAI,IAAA,KAAA,GAAQ,SAAS,QAAS,EAAA,CAAA;AAE9B,EAAA,IAAI,SAAS,IAAM,EAAA;AACjB,IAAO,OAAA,CAAC,QAAW,SAAS,CAAA,CAAA;AAAA,GAC9B;AAEA,EAAA,IAAI,CAAC,KAAA,CAAM,OAAQ,CAAA,KAAK,CAAG,EAAA;AACzB,IAAA,KAAA,GAAQ,CAAC,KAAK,CAAA,CAAA;AAAA,GAChB;AAEA,EAAO,OAAA,CAAC,OAAc,SAAS,CAAA,CAAA;AACjC;;;;"}
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(__spreadProps(__spreadValues({}, state), { context: new SceneContextObject() }));
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":";;;;;;;;;;;;;;;;;;;;;;;;AAKO,MAAM,iCAAiC,aAAc,CAAA;AAAA,EACnD,YAAY,KAA2B,EAAA;AAC5C,IAAA,KAAA,CAAM,iCAAK,KAAL,CAAA,EAAA,EAAY,SAAS,IAAI,kBAAA,IAAsB,CAAA,CAAA,CAAA;AAAA,GACvD;AASF,CAAA;AAZa,wBAAA,CAKG,SAAY,GAAA,CAAC,EAAE,KAAA,EAA2D,KAAA;AACtF,EACE,uBAAA,KAAA,CAAA,aAAA,CAAC,aAAa,QAAb,EAAA;AAAA,IAAsB,KAAA,EAAO,MAAM,KAAM,CAAA,OAAA;AAAA,GACxC,kBAAA,KAAA,CAAA,aAAA,CAAC,cAAc,SAAd,EAAA;AAAA,IAAwB,KAAA;AAAA,GAAc,CACzC,CAAA,CAAA;AAEJ,CAAA;;;;"}
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;;;;"}
@@ -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,CAAA;AAErB,EAAI,IAAA,OAAO,WAAW,WAAa,EAAA;AACjC,IAAiB,cAAA,GAAA,YAAA,CAAa,OAAQ,CAAA,sBAAsB,CAAM,KAAA,MAAA,CAAA;AAAA,GACpE;AAEA,EAAA,IAAI,cAAgB,EAAA;AAClB,IAAA,OAAA,CAAQ,GAAI,CAAA,CAAA,EAAG,MAAY,CAAA,EAAA,CAAA,EAAA,OAAA,EAAS,GAAG,IAAI,CAAA,CAAA;AAAA,GAC7C;AACF;;;;"}
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,QAAA;AACF,CAAyC,EAAA;AACvC,EAAA,MAAM,QAAQ,eAAgB,EAAA,CAAA;AAC9B,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,QAAkB,EAAA,CAAA;AAE5D,EAAI,IAAA,QAAA,GAA6C,KAAM,CAAA,YAAA,CAAa,IAAI,CAAA,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,CAAA;AAAA,GAC5G;AAEA,EAAA,SAAA,CAAU,MAAM;AACd,IAAM,MAAA,QAAA,GAAW,KAAM,CAAA,WAAA,CAAY,QAAQ,CAAA,CAAA;AAC3C,IAAA,gBAAA,CAAiB,IAAI,CAAA,CAAA;AACrB,IAAO,OAAA,QAAA,CAAA;AAAA,GACN,EAAA,CAAC,QAAU,EAAA,KAAA,EAAO,IAAI,CAAC,CAAA,CAAA;AAE1B,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAU,QAAS,CAAA;AAAA,MACjB,KAAA;AAAA,MACA,KAAA;AAAA,MACA,IAAA;AAAA,MACA,OAAA;AAAA,MACA,UAAA;AAAA,KACF,CAAA,CAAA;AAAA,GACF,EAAG,CAAC,IAAM,EAAA,UAAA,EAAY,SAAS,KAAO,EAAA,KAAA,EAAO,QAAQ,CAAC,CAAA,CAAA;AAGtD,EAAA,IAAI,CAAC,aAAe,EAAA;AAClB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAO,OAAA,QAAA,CAAA;AACT;;;;"}
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,QAAA;AACF,CAA6C,EAAA;AAC3C,EAAA,MAAM,QAAQ,eAAgB,EAAA,CAAA;AAC9B,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,QAAkB,EAAA,CAAA;AAE5D,EAAI,IAAA,QAAA,GAAiD,KAAM,CAAA,YAAA,CAAa,IAAI,CAAA,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,UAAA;AAAA,KACD,CAAA,CAAA;AAAA,GACH;AAEA,EAAA,SAAA,CAAU,MAAM;AACd,IAAM,MAAA,QAAA,GAAW,KAAM,CAAA,WAAA,CAAY,QAAQ,CAAA,CAAA;AAC3C,IAAA,gBAAA,CAAiB,IAAI,CAAA,CAAA;AACrB,IAAO,OAAA,QAAA,CAAA;AAAA,GACN,EAAA,CAAC,QAAU,EAAA,KAAA,EAAO,IAAI,CAAC,CAAA,CAAA;AAE1B,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,aAAe,EAAA;AAClB,MAAA,OAAA;AAAA,KACF;AAEA,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,OAAA;AAAA,KACF;AAEA,IAAA,QAAA,CAAS,QAAS,CAAA;AAAA,MAChB,QAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA;AAAA,MACA,IAAA;AAAA,MACA,UAAA;AAAA,KACD,CAAA,CAAA;AAED,IAAA,QAAA,CAAS,cAAe,EAAA,CAAA;AAAA,GAC1B,EAAG,CAAC,IAAM,EAAA,UAAA,EAAY,OAAO,QAAU,EAAA,KAAA,EAAO,QAAU,EAAA,aAAa,CAAC,CAAA,CAAA;AAGtE,EAAA,IAAI,CAAC,aAAe,EAAA;AAClB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAO,OAAA,QAAA,CAAA;AACT;;;;"}
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,QAAA;AACF,CAAwC,EAAA;AACtC,EAAA,MAAM,QAAQ,eAAgB,EAAA,CAAA;AAC9B,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,QAAkB,EAAA,CAAA;AAE5D,EAAI,IAAA,QAAA,GAA4C,KAAM,CAAA,YAAA,CAAa,IAAI,CAAA,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,UAAA;AAAA,KACD,CAAA,CAAA;AAAA,GACH;AAEA,EAAA,SAAA,CAAU,MAAM;AACd,IAAM,MAAA,QAAA,GAAW,KAAM,CAAA,WAAA,CAAY,QAAQ,CAAA,CAAA;AAC3C,IAAA,gBAAA,CAAiB,IAAI,CAAA,CAAA;AACrB,IAAO,OAAA,QAAA,CAAA;AAAA,GACN,EAAA,CAAC,QAAU,EAAA,KAAA,EAAO,IAAI,CAAC,CAAA,CAAA;AAE1B,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,aAAe,EAAA;AAClB,MAAA,OAAA;AAAA,KACF;AAEA,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,OAAA;AAAA,KACF;AAEA,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,UAAA;AAAA,KACD,CAAA,CAAA;AAED,IAAA,QAAA,CAAS,cAAe,EAAA,CAAA;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,CAAA;AAG9F,EAAA,IAAI,CAAC,aAAe,EAAA;AAClB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAO,OAAA,QAAA,CAAA;AACT;;;;"}
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 { SceneQueryRunner, SceneDataQuery, SceneDataTransformer, CustomTransformerDefinition, SceneDataProvider, SceneObjectBase, SceneObject, SceneVariable, SceneObjectState, SceneTimeRangeState, ControlsLayout, VizConfig, VizPanelMenu, VizPanel as VizPanel$1, VariableValue, VariableValueSingle, QueryVariable as QueryVariable$1, EmbeddedScene, EmbeddedSceneState, SceneComponentProps, SceneTimeRangeLike } from '@grafana/scenes';
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, SceneContextProviderProps, TimeRangePicker, UseUpdateWhenSceneChangesOptions, UseUpdateWhenSceneChangesReason, VariableControl, VizGridLayout, VizPanel, useDataTransformer, useQueryRunner, useQueryVariable, useSceneContext, useTimeRange, useUpdateWhenSceneChanges, useVariableInterpolator, useVariableValue, useVariableValues, useVariables };
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 _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
16
+ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
17
17
 
18
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
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(__spreadProps$1(__spreadValues$2({}, state), {
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["default"].createElement(SceneContext.Provider, {
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["default"].createElement(scenes.UrlSyncContextProvider, {
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 __accessCheck = (obj, member, msg) => {
209
- if (!member.has(obj))
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, void 0);
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["default"].createElement(ui.TimeRangePicker, {
368
- isOnCanvas: true,
369
- value,
370
- onChange: sceneTimeRange.onTimeRangeChange,
371
- timeZone: sceneTimeRange.getTimeZone(),
372
- onMoveBackward: () => {
373
- },
374
- onMoveForward: () => {
375
- },
376
- onZoom: () => {
377
- },
378
- onChangeTimeZone: () => {
379
- },
380
- onChangeFiscalYearStartMonth: () => {
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["default"].createElement("div", null, "Variable ", name, " not found");
355
+ return /* @__PURE__ */ React__default.default.createElement("div", null, "Variable ", name, " not found");
390
356
  }
391
- return /* @__PURE__ */ React__default["default"].createElement(scenes.VariableValueSelectWrapper, {
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["default"].createElement(panel.Component, {
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(__spreadValues$1({
561
- key
562
- }, props));
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["default"].createElement(picker.Component, {
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["default"].createElement("div", null, "Annotation ", name, " not found");
530
+ return /* @__PURE__ */ React__default.default.createElement("div", null, "Annotation ", name, " not found");
589
531
  }
590
- return /* @__PURE__ */ React__default["default"].createElement(layer.Component, {
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["default"].createElement(BreadcrumbContext.Provider, {
765
- value: {
766
- breadcrumbs,
767
- addBreadcrumb: React.useCallback((breadcrumb) => setBreadcrumbs((prev) => [...prev, breadcrumb]), []),
768
- removeBreadcrumb: React.useCallback(
769
- (breadcrumb) => setBreadcrumbs((prev) => prev.filter((b) => b.url !== breadcrumb.url)),
770
- []
771
- )
772
- }
773
- }, children);
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(__spreadProps(__spreadValues({}, state), { context: new SceneContextObject() }));
877
+ super({ ...state, context: new SceneContextObject() });
953
878
  }
954
879
  }
955
880
  EmbeddedSceneWithContext.Component = ({ model }) => {
956
- return /* @__PURE__ */ React__default["default"].createElement(SceneContext.Provider, {
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["default"].createElement("div", {
974
- style
975
- }, children);
894
+ return /* @__PURE__ */ React__default.default.createElement("div", { style }, children);
976
895
  }
977
896
 
978
897
  exports.AnnotationLayer = AnnotationLayer;