@grafana/scenes 5.20.4 → 5.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
    
        package/CHANGELOG.md
    CHANGED
    
    | 
         @@ -1,3 +1,15 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # v5.21.0 (Tue Oct 29 2024)
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            #### 🚀 Enhancement
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            - SceneObject: Improve cloning logic [#944](https://github.com/grafana/scenes/pull/944) ([@torkelo](https://github.com/torkelo))
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            #### Authors: 1
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            - Torkel Ödegaard ([@torkelo](https://github.com/torkelo))
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            ---
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
       1 
13 
     | 
    
         
             
            # v5.20.4 (Wed Oct 23 2024)
         
     | 
| 
       2 
14 
     | 
    
         | 
| 
       3 
15 
     | 
    
         
             
            #### 🐛 Bug Fix
         
     | 
| 
         @@ -23,13 +23,15 @@ function cloneSceneObject(sceneObject, withState) { 
     | 
|
| 
       23 
23 
     | 
    
         
             
            }
         
     | 
| 
       24 
24 
     | 
    
         
             
            function cloneSceneObjectState(sceneState, withState) {
         
     | 
| 
       25 
25 
     | 
    
         
             
              const clonedState = __spreadValues({}, sceneState);
         
     | 
| 
      
 26 
     | 
    
         
            +
              Object.assign(clonedState, withState);
         
     | 
| 
       26 
27 
     | 
    
         
             
              for (const key in clonedState) {
         
     | 
| 
       27 
28 
     | 
    
         
             
                const propValue = clonedState[key];
         
     | 
| 
       28 
29 
     | 
    
         
             
                if (propValue instanceof SceneObjectBase) {
         
     | 
| 
       29 
30 
     | 
    
         
             
                  clonedState[key] = propValue.clone();
         
     | 
| 
       30 
31 
     | 
    
         
             
                }
         
     | 
| 
       31 
32 
     | 
    
         
             
                if (propValue instanceof SceneObjectRef) {
         
     | 
| 
       32 
     | 
    
         
            -
                   
     | 
| 
      
 33 
     | 
    
         
            +
                  console.warn("Cloning object with SceneObjectRef");
         
     | 
| 
      
 34 
     | 
    
         
            +
                  continue;
         
     | 
| 
       33 
35 
     | 
    
         
             
                }
         
     | 
| 
       34 
36 
     | 
    
         
             
                if (Array.isArray(propValue)) {
         
     | 
| 
       35 
37 
     | 
    
         
             
                  const newArray = [];
         
     | 
| 
         @@ -43,7 +45,6 @@ function cloneSceneObjectState(sceneState, withState) { 
     | 
|
| 
       43 
45 
     | 
    
         
             
                  clonedState[key] = newArray;
         
     | 
| 
       44 
46 
     | 
    
         
             
                }
         
     | 
| 
       45 
47 
     | 
    
         
             
              }
         
     | 
| 
       46 
     | 
    
         
            -
              Object.assign(clonedState, withState);
         
     | 
| 
       47 
48 
     | 
    
         
             
              return clonedState;
         
     | 
| 
       48 
49 
     | 
    
         
             
            }
         
     | 
| 
       49 
50 
     | 
    
         
             
            function getClosest(sceneObject, extract) {
         
     | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"utils.js","sources":["../../../../src/core/sceneGraph/utils.ts"],"sourcesContent":["import { SceneObject, SceneObjectState } from '../types';\n\nimport { SceneObjectBase } from '../SceneObjectBase';\nimport { SceneObjectRef } from '../SceneObjectRef';\n\n/**\n * Will create new SceneItem with shalled cloned state, but all states items of type SceneObject are deep cloned\n */\nexport function cloneSceneObject<T extends SceneObjectBase<TState>, TState extends SceneObjectState>(\n  sceneObject: SceneObjectBase<TState>,\n  withState?: Partial<TState>\n): T {\n  const clonedState = cloneSceneObjectState(sceneObject.state, withState);\n  return new (sceneObject.constructor as any)(clonedState);\n}\n\nexport function cloneSceneObjectState<TState extends SceneObjectState>(\n  sceneState: TState,\n  withState?: Partial<TState>\n): TState {\n  const clonedState = { ...sceneState };\n\n  // Clone any SceneItems in state\n  for (const key in clonedState) {\n    const propValue = clonedState[key];\n    if (propValue instanceof SceneObjectBase) {\n      clonedState[key] = propValue.clone();\n    }\n\n    if (propValue instanceof SceneObjectRef) {\n       
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"utils.js","sources":["../../../../src/core/sceneGraph/utils.ts"],"sourcesContent":["import { SceneObject, SceneObjectState } from '../types';\n\nimport { SceneObjectBase } from '../SceneObjectBase';\nimport { SceneObjectRef } from '../SceneObjectRef';\n\n/**\n * Will create new SceneItem with shalled cloned state, but all states items of type SceneObject are deep cloned\n */\nexport function cloneSceneObject<T extends SceneObjectBase<TState>, TState extends SceneObjectState>(\n  sceneObject: SceneObjectBase<TState>,\n  withState?: Partial<TState>\n): T {\n  const clonedState = cloneSceneObjectState(sceneObject.state, withState);\n  return new (sceneObject.constructor as any)(clonedState);\n}\n\nexport function cloneSceneObjectState<TState extends SceneObjectState>(\n  sceneState: TState,\n  withState?: Partial<TState>\n): TState {\n  const clonedState = { ...sceneState };\n\n  Object.assign(clonedState, withState);\n\n  // Clone any SceneItems in state\n  for (const key in clonedState) {\n    const propValue = clonedState[key];\n    if (propValue instanceof SceneObjectBase) {\n      clonedState[key] = propValue.clone();\n    }\n\n    if (propValue instanceof SceneObjectRef) {\n      console.warn('Cloning object with SceneObjectRef');\n      continue;\n    }\n\n    // Clone scene objects in arrays\n    if (Array.isArray(propValue)) {\n      const newArray: any = [];\n      for (const child of propValue) {\n        if (child instanceof SceneObjectBase) {\n          newArray.push(child.clone());\n        } else {\n          newArray.push(child);\n        }\n      }\n      clonedState[key] = newArray;\n    }\n  }\n\n  return clonedState;\n}\n\n/** Walks up the scene graph, returning the first non-undefined result of `extract` */\nexport function getClosest<T>(sceneObject: SceneObject, extract: (s: SceneObject) => T | undefined): T | undefined {\n  let curSceneObject: SceneObject | undefined = sceneObject;\n  let extracted: T | undefined = undefined;\n\n  while (curSceneObject && !extracted) {\n    extracted = extract(curSceneObject);\n    curSceneObject = curSceneObject.parent;\n  }\n\n  return extracted;\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAQgB,SAAA,gBAAA,CACd,aACA,SACG,EAAA;AACH,EAAA,MAAM,WAAc,GAAA,qBAAA,CAAsB,WAAY,CAAA,KAAA,EAAO,SAAS,CAAA,CAAA;AACtE,EAAO,OAAA,IAAK,WAAY,CAAA,WAAA,CAAoB,WAAW,CAAA,CAAA;AACzD,CAAA;AAEgB,SAAA,qBAAA,CACd,YACA,SACQ,EAAA;AACR,EAAA,MAAM,cAAc,cAAK,CAAA,EAAA,EAAA,UAAA,CAAA,CAAA;AAEzB,EAAO,MAAA,CAAA,MAAA,CAAO,aAAa,SAAS,CAAA,CAAA;AAGpC,EAAA,KAAA,MAAW,OAAO,WAAa,EAAA;AAC7B,IAAA,MAAM,YAAY,WAAY,CAAA,GAAA,CAAA,CAAA;AAC9B,IAAA,IAAI,qBAAqB,eAAiB,EAAA;AACxC,MAAY,WAAA,CAAA,GAAA,CAAA,GAAO,UAAU,KAAM,EAAA,CAAA;AAAA,KACrC;AAEA,IAAA,IAAI,qBAAqB,cAAgB,EAAA;AACvC,MAAA,OAAA,CAAQ,KAAK,oCAAoC,CAAA,CAAA;AACjD,MAAA,SAAA;AAAA,KACF;AAGA,IAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,SAAS,CAAG,EAAA;AAC5B,MAAA,MAAM,WAAgB,EAAC,CAAA;AACvB,MAAA,KAAA,MAAW,SAAS,SAAW,EAAA;AAC7B,QAAA,IAAI,iBAAiB,eAAiB,EAAA;AACpC,UAAS,QAAA,CAAA,IAAA,CAAK,KAAM,CAAA,KAAA,EAAO,CAAA,CAAA;AAAA,SACtB,MAAA;AACL,UAAA,QAAA,CAAS,KAAK,KAAK,CAAA,CAAA;AAAA,SACrB;AAAA,OACF;AACA,MAAA,WAAA,CAAY,GAAO,CAAA,GAAA,QAAA,CAAA;AAAA,KACrB;AAAA,GACF;AAEA,EAAO,OAAA,WAAA,CAAA;AACT,CAAA;AAGgB,SAAA,UAAA,CAAc,aAA0B,OAA2D,EAAA;AACjH,EAAA,IAAI,cAA0C,GAAA,WAAA,CAAA;AAC9C,EAAA,IAAI,SAA2B,GAAA,KAAA,CAAA,CAAA;AAE/B,EAAO,OAAA,cAAA,IAAkB,CAAC,SAAW,EAAA;AACnC,IAAA,SAAA,GAAY,QAAQ,cAAc,CAAA,CAAA;AAClC,IAAA,cAAA,GAAiB,cAAe,CAAA,MAAA,CAAA;AAAA,GAClC;AAEA,EAAO,OAAA,SAAA,CAAA;AACT;;;;"}
         
     | 
    
        package/dist/index.js
    CHANGED
    
    | 
         @@ -511,13 +511,15 @@ function cloneSceneObject(sceneObject, withState) { 
     | 
|
| 
       511 
511 
     | 
    
         
             
            }
         
     | 
| 
       512 
512 
     | 
    
         
             
            function cloneSceneObjectState(sceneState, withState) {
         
     | 
| 
       513 
513 
     | 
    
         
             
              const clonedState = __spreadValues$K({}, sceneState);
         
     | 
| 
      
 514 
     | 
    
         
            +
              Object.assign(clonedState, withState);
         
     | 
| 
       514 
515 
     | 
    
         
             
              for (const key in clonedState) {
         
     | 
| 
       515 
516 
     | 
    
         
             
                const propValue = clonedState[key];
         
     | 
| 
       516 
517 
     | 
    
         
             
                if (propValue instanceof SceneObjectBase) {
         
     | 
| 
       517 
518 
     | 
    
         
             
                  clonedState[key] = propValue.clone();
         
     | 
| 
       518 
519 
     | 
    
         
             
                }
         
     | 
| 
       519 
520 
     | 
    
         
             
                if (propValue instanceof SceneObjectRef) {
         
     | 
| 
       520 
     | 
    
         
            -
                   
     | 
| 
      
 521 
     | 
    
         
            +
                  console.warn("Cloning object with SceneObjectRef");
         
     | 
| 
      
 522 
     | 
    
         
            +
                  continue;
         
     | 
| 
       521 
523 
     | 
    
         
             
                }
         
     | 
| 
       522 
524 
     | 
    
         
             
                if (Array.isArray(propValue)) {
         
     | 
| 
       523 
525 
     | 
    
         
             
                  const newArray = [];
         
     | 
| 
         @@ -531,7 +533,6 @@ function cloneSceneObjectState(sceneState, withState) { 
     | 
|
| 
       531 
533 
     | 
    
         
             
                  clonedState[key] = newArray;
         
     | 
| 
       532 
534 
     | 
    
         
             
                }
         
     | 
| 
       533 
535 
     | 
    
         
             
              }
         
     | 
| 
       534 
     | 
    
         
            -
              Object.assign(clonedState, withState);
         
     | 
| 
       535 
536 
     | 
    
         
             
              return clonedState;
         
     | 
| 
       536 
537 
     | 
    
         
             
            }
         
     | 
| 
       537 
538 
     | 
    
         
             
            function getClosest(sceneObject, extract) {
         
     |