@grafana/scenes 4.26.3--canary.765.9397990341.0 → 4.26.3--canary.765.9398400471.0
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/esm/core/sceneGraph/sceneGraph.js +1 -1
- package/dist/esm/services/UniqueUrlKeyMapper.js +15 -11
- package/dist/esm/services/UniqueUrlKeyMapper.js.map +1 -1
- package/dist/esm/services/UrlSyncManager.js +4 -8
- package/dist/esm/services/UrlSyncManager.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js +646 -648
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
@@ -1,4 +1,4 @@
|
|
1
|
-
import {
|
1
|
+
import { EmptyDataNode, EmptyVariableSet } from '../../variables/interpolation/defaults.js';
|
2
2
|
import { sceneInterpolator } from '../../variables/interpolation/sceneInterpolator.js';
|
3
3
|
import { isDataLayer } from '../types.js';
|
4
4
|
import { lookupVariable } from '../../variables/lookupVariable.js';
|
@@ -1,16 +1,18 @@
|
|
1
|
+
import { sceneGraph } from '../core/sceneGraph/index.js';
|
2
|
+
|
1
3
|
class UniqueUrlKeyMapper {
|
2
4
|
constructor() {
|
3
5
|
this.index = /* @__PURE__ */ new Map();
|
4
6
|
}
|
5
7
|
getUniqueKey(key, obj) {
|
6
|
-
|
8
|
+
const objectsWithKey = this.index.get(key);
|
7
9
|
if (!objectsWithKey) {
|
8
10
|
this.index.set(key, [obj]);
|
9
11
|
return key;
|
10
12
|
}
|
11
13
|
let address = objectsWithKey.findIndex((o) => o === obj);
|
12
14
|
if (address === -1) {
|
13
|
-
|
15
|
+
filterOutOrphanedObjects(objectsWithKey);
|
14
16
|
objectsWithKey.push(obj);
|
15
17
|
address = objectsWithKey.length - 1;
|
16
18
|
}
|
@@ -23,18 +25,20 @@ class UniqueUrlKeyMapper {
|
|
23
25
|
this.index.clear();
|
24
26
|
}
|
25
27
|
}
|
26
|
-
function
|
27
|
-
const filtered = [];
|
28
|
+
function filterOutOrphanedObjects(sceneObjects) {
|
28
29
|
for (const obj of sceneObjects) {
|
29
|
-
if (obj
|
30
|
-
|
31
|
-
|
32
|
-
filtered.push(child);
|
33
|
-
}
|
34
|
-
});
|
30
|
+
if (isOrphanOrInActive(obj)) {
|
31
|
+
const index = sceneObjects.indexOf(obj);
|
32
|
+
sceneObjects.splice(index, 1);
|
35
33
|
}
|
36
34
|
}
|
37
|
-
|
35
|
+
}
|
36
|
+
function isOrphanOrInActive(obj) {
|
37
|
+
const root = obj.getRoot();
|
38
|
+
if (!sceneGraph.findObject(root, (child) => child === obj)) {
|
39
|
+
return true;
|
40
|
+
}
|
41
|
+
return false;
|
38
42
|
}
|
39
43
|
|
40
44
|
export { UniqueUrlKeyMapper };
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"UniqueUrlKeyMapper.js","sources":["../../../src/services/UniqueUrlKeyMapper.ts"],"sourcesContent":["import { SceneObject } from '../core/types';\n\nexport interface SceneObjectWithDepth {\n sceneObject: SceneObject;\n depth: number;\n}\n\nexport class UniqueUrlKeyMapper {\n private index = new Map<string, SceneObject[]>();\n\n public getUniqueKey(key: string, obj: SceneObject) {\n
|
1
|
+
{"version":3,"file":"UniqueUrlKeyMapper.js","sources":["../../../src/services/UniqueUrlKeyMapper.ts"],"sourcesContent":["import { sceneGraph } from '../core/sceneGraph';\nimport { SceneObject } from '../core/types';\n\nexport interface SceneObjectWithDepth {\n sceneObject: SceneObject;\n depth: number;\n}\n\nexport class UniqueUrlKeyMapper {\n private index = new Map<string, SceneObject[]>();\n\n public getUniqueKey(key: string, obj: SceneObject) {\n const objectsWithKey = this.index.get(key);\n\n if (!objectsWithKey) {\n this.index.set(key, [obj]);\n return key;\n }\n\n let address = objectsWithKey.findIndex((o) => o === obj);\n if (address === -1) {\n filterOutOrphanedObjects(objectsWithKey);\n objectsWithKey.push(obj);\n\n address = objectsWithKey.length - 1;\n }\n\n if (address > 0) {\n return `${key}-${address + 1}`;\n }\n\n return key;\n }\n\n public clear() {\n this.index.clear();\n }\n}\n\nfunction filterOutOrphanedObjects(sceneObjects: SceneObject[]) {\n for (const obj of sceneObjects) {\n if (isOrphanOrInActive(obj)) {\n const index = sceneObjects.indexOf(obj);\n sceneObjects.splice(index, 1);\n }\n }\n}\n\nfunction isOrphanOrInActive(obj: SceneObject) {\n const root = obj.getRoot();\n\n // If we cannot find it from the root it's an orphan\n if (!sceneGraph.findObject(root, (child) => child === obj)) {\n return true;\n }\n\n return false;\n}\n"],"names":[],"mappings":";;AAQO,MAAM,kBAAmB,CAAA;AAAA,EAAzB,WAAA,GAAA;AACL,IAAQ,IAAA,CAAA,KAAA,uBAAY,GAA2B,EAAA,CAAA;AAAA,GAAA;AAAA,EAExC,YAAA,CAAa,KAAa,GAAkB,EAAA;AACjD,IAAA,MAAM,cAAiB,GAAA,IAAA,CAAK,KAAM,CAAA,GAAA,CAAI,GAAG,CAAA,CAAA;AAEzC,IAAA,IAAI,CAAC,cAAgB,EAAA;AACnB,MAAA,IAAA,CAAK,KAAM,CAAA,GAAA,CAAI,GAAK,EAAA,CAAC,GAAG,CAAC,CAAA,CAAA;AACzB,MAAO,OAAA,GAAA,CAAA;AAAA,KACT;AAEA,IAAA,IAAI,UAAU,cAAe,CAAA,SAAA,CAAU,CAAC,CAAA,KAAM,MAAM,GAAG,CAAA,CAAA;AACvD,IAAA,IAAI,YAAY,CAAI,CAAA,EAAA;AAClB,MAAA,wBAAA,CAAyB,cAAc,CAAA,CAAA;AACvC,MAAA,cAAA,CAAe,KAAK,GAAG,CAAA,CAAA;AAEvB,MAAA,OAAA,GAAU,eAAe,MAAS,GAAA,CAAA,CAAA;AAAA,KACpC;AAEA,IAAA,IAAI,UAAU,CAAG,EAAA;AACf,MAAO,OAAA,CAAA,EAAG,OAAO,OAAU,GAAA,CAAA,CAAA,CAAA,CAAA;AAAA,KAC7B;AAEA,IAAO,OAAA,GAAA,CAAA;AAAA,GACT;AAAA,EAEO,KAAQ,GAAA;AACb,IAAA,IAAA,CAAK,MAAM,KAAM,EAAA,CAAA;AAAA,GACnB;AACF,CAAA;AAEA,SAAS,yBAAyB,YAA6B,EAAA;AAC7D,EAAA,KAAA,MAAW,OAAO,YAAc,EAAA;AAC9B,IAAI,IAAA,kBAAA,CAAmB,GAAG,CAAG,EAAA;AAC3B,MAAM,MAAA,KAAA,GAAQ,YAAa,CAAA,OAAA,CAAQ,GAAG,CAAA,CAAA;AACtC,MAAa,YAAA,CAAA,MAAA,CAAO,OAAO,CAAC,CAAA,CAAA;AAAA,KAC9B;AAAA,GACF;AACF,CAAA;AAEA,SAAS,mBAAmB,GAAkB,EAAA;AAC5C,EAAM,MAAA,IAAA,GAAO,IAAI,OAAQ,EAAA,CAAA;AAGzB,EAAI,IAAA,CAAC,WAAW,UAAW,CAAA,IAAA,EAAM,CAAC,KAAU,KAAA,KAAA,KAAU,GAAG,CAAG,EAAA;AAC1D,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAO,OAAA,KAAA,CAAA;AACT;;;;"}
|
@@ -25,6 +25,7 @@ class UrlSyncManager {
|
|
25
25
|
writeSceneLog("UrlSyncManager", "onStateChange updating URL");
|
26
26
|
locationService.partial(mappedUpdated, true);
|
27
27
|
this._lastLocation = locationService.getLocation();
|
28
|
+
this._urlParams = new URLSearchParams(this._lastLocation.search);
|
28
29
|
}
|
29
30
|
}
|
30
31
|
};
|
@@ -36,13 +37,12 @@ class UrlSyncManager {
|
|
36
37
|
this._stateSub.unsubscribe();
|
37
38
|
}
|
38
39
|
writeSceneLog("UrlSyncManager", "init", root.state.key);
|
39
|
-
const location = locationService.getLocation();
|
40
40
|
this._sceneRoot = root;
|
41
|
-
this._lastLocation = location;
|
42
|
-
this._urlParams = new URLSearchParams(location.search);
|
43
41
|
this._stateSub = root.subscribeToEvent(SceneObjectStateChangedEvent, this._onStateChanged);
|
44
42
|
this._urlKeyMapper.clear();
|
45
|
-
this.
|
43
|
+
this._lastLocation = locationService.getLocation();
|
44
|
+
this._urlParams = new URLSearchParams(this._lastLocation.search);
|
45
|
+
this.handleNewObject(this._sceneRoot);
|
46
46
|
}
|
47
47
|
cleanUp(root) {
|
48
48
|
if (this._sceneRoot !== root) {
|
@@ -62,10 +62,6 @@ class UrlSyncManager {
|
|
62
62
|
this._sceneRoot = void 0;
|
63
63
|
this._urlParams = void 0;
|
64
64
|
}
|
65
|
-
syncFrom(sceneObj) {
|
66
|
-
const urlParams = locationService.getSearch();
|
67
|
-
syncStateFromUrl(sceneObj, urlParams, this._urlKeyMapper);
|
68
|
-
}
|
69
65
|
handleNewLocation(location) {
|
70
66
|
if (!this._sceneRoot || this._lastLocation === location) {
|
71
67
|
return;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"UrlSyncManager.js","sources":["../../../src/services/UrlSyncManager.ts"],"sourcesContent":["import { Location } from 'history';\n\nimport { locationService } from '@grafana/runtime';\n\nimport { SceneObjectStateChangedEvent } from '../core/events';\nimport { SceneObject, SceneObjectUrlValues } from '../core/types';\nimport { writeSceneLog } from '../utils/writeSceneLog';\nimport { Unsubscribable } from 'rxjs';\nimport { UniqueUrlKeyMapper } from './UniqueUrlKeyMapper';\nimport { getUrlState, isUrlValueEqual, syncStateFromUrl } from './utils';\n\nexport interface UrlSyncManagerLike {\n initSync(root: SceneObject): void;\n cleanUp(root: SceneObject): void;\n getUrlState(root: SceneObject): SceneObjectUrlValues;\n handleNewLocation(location: Location): void;\n handleNewObject(sceneObj: SceneObject): void;\n}\n\nexport class UrlSyncManager implements UrlSyncManagerLike {\n private _urlKeyMapper = new UniqueUrlKeyMapper();\n private _sceneRoot?: SceneObject;\n private _stateSub: Unsubscribable | null = null;\n private _lastLocation: Location | undefined;\n private _urlParams: URLSearchParams | undefined;\n\n /**\n * Updates the current scene state to match URL state.\n */\n public initSync(root: SceneObject) {\n if (this._stateSub) {\n writeSceneLog('UrlSyncManager', 'Unregister previous scene state subscription', this._sceneRoot?.state.key);\n this._stateSub.unsubscribe();\n }\n\n writeSceneLog('UrlSyncManager', 'init', root.state.key);\n\n
|
1
|
+
{"version":3,"file":"UrlSyncManager.js","sources":["../../../src/services/UrlSyncManager.ts"],"sourcesContent":["import { Location } from 'history';\n\nimport { locationService } from '@grafana/runtime';\n\nimport { SceneObjectStateChangedEvent } from '../core/events';\nimport { SceneObject, SceneObjectUrlValues } from '../core/types';\nimport { writeSceneLog } from '../utils/writeSceneLog';\nimport { Unsubscribable } from 'rxjs';\nimport { UniqueUrlKeyMapper } from './UniqueUrlKeyMapper';\nimport { getUrlState, isUrlValueEqual, syncStateFromUrl } from './utils';\n\nexport interface UrlSyncManagerLike {\n initSync(root: SceneObject): void;\n cleanUp(root: SceneObject): void;\n getUrlState(root: SceneObject): SceneObjectUrlValues;\n handleNewLocation(location: Location): void;\n handleNewObject(sceneObj: SceneObject): void;\n}\n\nexport class UrlSyncManager implements UrlSyncManagerLike {\n private _urlKeyMapper = new UniqueUrlKeyMapper();\n private _sceneRoot?: SceneObject;\n private _stateSub: Unsubscribable | null = null;\n private _lastLocation: Location | undefined;\n private _urlParams: URLSearchParams | undefined;\n\n /**\n * Updates the current scene state to match URL state.\n */\n public initSync(root: SceneObject) {\n if (this._stateSub) {\n writeSceneLog('UrlSyncManager', 'Unregister previous scene state subscription', this._sceneRoot?.state.key);\n this._stateSub.unsubscribe();\n }\n\n writeSceneLog('UrlSyncManager', 'init', root.state.key);\n\n this._sceneRoot = root;\n this._stateSub = root.subscribeToEvent(SceneObjectStateChangedEvent, this._onStateChanged);\n\n this._urlKeyMapper.clear();\n\n this._lastLocation = locationService.getLocation();\n this._urlParams = new URLSearchParams(this._lastLocation.search);\n\n this.handleNewObject(this._sceneRoot);\n }\n\n public cleanUp(root: SceneObject) {\n // Ignore this if we have a new or different root\n if (this._sceneRoot !== root) {\n return;\n }\n\n writeSceneLog('UrlSyncManager', 'Clean up');\n\n if (this._stateSub) {\n this._stateSub.unsubscribe();\n this._stateSub = null;\n writeSceneLog(\n 'UrlSyncManager',\n 'Root deactived, unsub to state',\n 'same key',\n this._sceneRoot.state.key === root.state.key\n );\n }\n\n this._sceneRoot = undefined;\n this._urlParams = undefined;\n }\n\n public handleNewLocation(location: Location) {\n if (!this._sceneRoot || this._lastLocation === location) {\n return;\n }\n\n writeSceneLog('UrlSyncManager', 'handleNewLocation');\n\n this._urlParams = new URLSearchParams(location.search);\n this._lastLocation = location;\n\n // Sync scene state tree from url\n syncStateFromUrl(this._sceneRoot!, this._urlParams, this._urlKeyMapper);\n }\n\n public handleNewObject(sceneObj: SceneObject) {\n if (!this._sceneRoot || !this._urlParams) {\n return;\n }\n\n syncStateFromUrl(sceneObj, this._urlParams, this._urlKeyMapper);\n }\n\n private _onStateChanged = ({ payload }: SceneObjectStateChangedEvent) => {\n const changedObject = payload.changedObject;\n\n if (changedObject.urlSync) {\n const newUrlState = changedObject.urlSync.getUrlState();\n\n const searchParams = locationService.getSearch();\n const mappedUpdated: SceneObjectUrlValues = {};\n\n for (const [key, newUrlValue] of Object.entries(newUrlState)) {\n const uniqueKey = this._urlKeyMapper.getUniqueKey(key, changedObject);\n const currentUrlValue = searchParams.getAll(uniqueKey);\n\n if (!isUrlValueEqual(currentUrlValue, newUrlValue)) {\n mappedUpdated[uniqueKey] = newUrlValue;\n }\n }\n\n if (Object.keys(mappedUpdated).length > 0) {\n writeSceneLog('UrlSyncManager', 'onStateChange updating URL');\n locationService.partial(mappedUpdated, true);\n\n /// Mark the location already handled\n this._lastLocation = locationService.getLocation();\n this._urlParams = new URLSearchParams(this._lastLocation.search);\n }\n }\n };\n\n public getUrlState(root: SceneObject): SceneObjectUrlValues {\n return getUrlState(root);\n }\n}\n\nlet urlSyncManager: UrlSyncManagerLike | undefined;\n\nexport function getUrlSyncManager(): UrlSyncManagerLike {\n if (!urlSyncManager) {\n urlSyncManager = new UrlSyncManager();\n }\n\n return urlSyncManager;\n}\n"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
@@ -1574,7 +1574,6 @@ declare class UrlSyncManager implements UrlSyncManagerLike {
|
|
1574
1574
|
*/
|
1575
1575
|
initSync(root: SceneObject): void;
|
1576
1576
|
cleanUp(root: SceneObject): void;
|
1577
|
-
syncFrom(sceneObj: SceneObject): void;
|
1578
1577
|
handleNewLocation(location: Location): void;
|
1579
1578
|
handleNewObject(sceneObj: SceneObject): void;
|
1580
1579
|
private _onStateChanged;
|