@dxos/plugin-explorer 0.8.4-main.f9ba587 → 0.8.4-main.fd6878d
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/browser/{ExplorerContainer-WYPM7YXU.mjs → ExplorerContainer-5QHLD2B2.mjs} +3 -3
- package/dist/lib/browser/{ExplorerContainer-WYPM7YXU.mjs.map → ExplorerContainer-5QHLD2B2.mjs.map} +2 -2
- package/dist/lib/browser/{chunk-OAOY7SHY.mjs → chunk-2MKBRIUT.mjs} +6 -5
- package/dist/lib/browser/chunk-2MKBRIUT.mjs.map +7 -0
- package/dist/lib/browser/{chunk-EF4BFHTI.mjs → chunk-CZZ3DDR7.mjs} +1 -1
- package/dist/lib/browser/{chunk-EF4BFHTI.mjs.map → chunk-CZZ3DDR7.mjs.map} +2 -2
- package/dist/lib/browser/{chunk-ZZX52LNU.mjs → chunk-L4U4MPSZ.mjs} +4 -1
- package/dist/lib/browser/{chunk-ZZX52LNU.mjs.map → chunk-L4U4MPSZ.mjs.map} +3 -3
- package/dist/lib/browser/{chunk-4UVJNXCE.mjs → chunk-LGK64HLU.mjs} +4 -244
- package/dist/lib/browser/{chunk-4UVJNXCE.mjs.map → chunk-LGK64HLU.mjs.map} +3 -3
- package/dist/lib/browser/index.mjs +10 -8
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-XH2UO2FM.mjs → intent-resolver-7MVEYNX7.mjs} +3 -3
- package/dist/lib/browser/{intent-resolver-XH2UO2FM.mjs.map → intent-resolver-7MVEYNX7.mjs.map} +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-surface-5ENPAK3V.mjs → react-surface-FABRDFTF.mjs} +4 -4
- package/dist/lib/browser/types/index.mjs +1 -1
- package/dist/lib/node-esm/{ExplorerContainer-S5GL733T.mjs → ExplorerContainer-AMYAVLO4.mjs} +3 -3
- package/dist/lib/node-esm/{ExplorerContainer-S5GL733T.mjs.map → ExplorerContainer-AMYAVLO4.mjs.map} +2 -2
- package/dist/lib/node-esm/{chunk-PPBUWC7F.mjs → chunk-3ODK27PU.mjs} +6 -5
- package/dist/lib/node-esm/chunk-3ODK27PU.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-VKCOKQRG.mjs → chunk-4GWDNZ4Z.mjs} +1 -1
- package/dist/lib/node-esm/{chunk-VKCOKQRG.mjs.map → chunk-4GWDNZ4Z.mjs.map} +2 -2
- package/dist/lib/node-esm/{chunk-6M6W7DKH.mjs → chunk-MCOXQ3ML.mjs} +4 -1
- package/dist/lib/node-esm/{chunk-6M6W7DKH.mjs.map → chunk-MCOXQ3ML.mjs.map} +3 -3
- package/dist/lib/node-esm/{chunk-HCV3J2HM.mjs → chunk-W4ZNCGOD.mjs} +4 -244
- package/dist/lib/node-esm/{chunk-HCV3J2HM.mjs.map → chunk-W4ZNCGOD.mjs.map} +3 -3
- package/dist/lib/node-esm/index.mjs +10 -8
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{intent-resolver-AGBBNA67.mjs → intent-resolver-NL3SR2XF.mjs} +3 -3
- package/dist/lib/node-esm/{intent-resolver-AGBBNA67.mjs.map → intent-resolver-NL3SR2XF.mjs.map} +3 -3
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-surface-4MDNPYQ6.mjs → react-surface-EYCZUAAI.mjs} +4 -4
- package/dist/lib/node-esm/types/index.mjs +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
- package/dist/types/src/components/Chart/Chart.d.ts.map +1 -1
- package/dist/types/src/components/Chart/Chart.stories.d.ts.map +1 -1
- package/dist/types/src/components/ExplorerContainer.d.ts.map +1 -1
- package/dist/types/src/components/Globe/Globe.d.ts.map +1 -1
- package/dist/types/src/components/Globe/Globe.stories.d.ts.map +1 -1
- package/dist/types/src/components/Graph/D3ForceGraph.stories.d.ts.map +1 -1
- package/dist/types/src/components/Graph/ForceGraph.stories.d.ts.map +1 -1
- package/dist/types/src/components/Graph/testing.d.ts +1 -1
- package/dist/types/src/components/Graph/testing.d.ts.map +1 -1
- package/dist/types/src/hooks/useGraphModel.d.ts +2 -2
- package/dist/types/src/hooks/useGraphModel.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +2 -0
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +31 -28
- package/src/ExplorerPlugin.tsx +2 -2
- package/src/capabilities/intent-resolver.ts +1 -1
- package/src/components/Chart/Chart.stories.tsx +2 -1
- package/src/components/Chart/Chart.tsx +1 -1
- package/src/components/ExplorerContainer.tsx +2 -1
- package/src/components/Globe/Globe.stories.tsx +3 -2
- package/src/components/Globe/Globe.tsx +1 -1
- package/src/components/Graph/D3ForceGraph.stories.tsx +4 -3
- package/src/components/Graph/D3ForceGraph.tsx +1 -1
- package/src/components/Graph/ForceGraph.stories.tsx +4 -3
- package/src/components/Graph/ForceGraph.tsx +2 -2
- package/src/components/Graph/testing.ts +2 -2
- package/src/components/Tree/Tree.stories.tsx +1 -1
- package/src/components/Tree/Tree.tsx +1 -1
- package/src/components/Tree/types/tree.test.ts +4 -3
- package/src/hooks/useGraphModel.ts +5 -4
- package/src/translations.ts +2 -0
- package/src/types/types.ts +2 -1
- package/dist/lib/browser/chunk-OAOY7SHY.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-PPBUWC7F.mjs.map +0 -7
- /package/dist/lib/browser/{react-surface-5ENPAK3V.mjs.map → react-surface-FABRDFTF.mjs.map} +0 -0
- /package/dist/lib/node-esm/{react-surface-4MDNPYQ6.mjs.map → react-surface-EYCZUAAI.mjs.map} +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
useGraphModel
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-2MKBRIUT.mjs";
|
|
4
4
|
import {
|
|
5
5
|
D3ForceGraph
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-L4U4MPSZ.mjs";
|
|
7
7
|
|
|
8
8
|
// src/components/ExplorerContainer.tsx
|
|
9
9
|
import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
|
|
@@ -34,4 +34,4 @@ var ExplorerContainer_default = ExplorerContainer;
|
|
|
34
34
|
export {
|
|
35
35
|
ExplorerContainer_default as default
|
|
36
36
|
};
|
|
37
|
-
//# sourceMappingURL=ExplorerContainer-
|
|
37
|
+
//# sourceMappingURL=ExplorerContainer-5QHLD2B2.mjs.map
|
package/dist/lib/browser/{ExplorerContainer-WYPM7YXU.mjs.map → ExplorerContainer-5QHLD2B2.mjs.map}
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/components/ExplorerContainer.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { useGlobalSearch } from '@dxos/plugin-search';\nimport { getSpace } from '@dxos/react-client/echo';\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport {
|
|
5
|
-
"mappings": ";;;;;;;;;AAIA,OAAOA,WAAW;AAElB,SAASC,uBAAuB;AAChC,SAASC,gBAAgB;AACzB,SAASC,iBAAiB;
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { useGlobalSearch } from '@dxos/plugin-search';\nimport { getSpace } from '@dxos/react-client/echo';\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport { useGraphModel } from '../hooks';\nimport { type ViewType } from '../types';\n\nimport { D3ForceGraph } from './Graph';\n\ntype ExplorerContainerProps = {\n role: string;\n view: ViewType;\n};\n\nconst ExplorerContainer = ({ role, view }: ExplorerContainerProps) => {\n const space = getSpace(view);\n const model = useGraphModel(space);\n const { match } = useGlobalSearch();\n\n if (!space || !model) {\n return null;\n }\n\n return (\n <StackItem.Content size={role === 'section' ? 'square' : 'intrinsic'}>\n <D3ForceGraph model={model} match={match} />\n </StackItem.Content>\n );\n};\n\nexport default ExplorerContainer;\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;AAIA,OAAOA,WAAW;AAElB,SAASC,uBAAuB;AAChC,SAASC,gBAAgB;AACzB,SAASC,iBAAiB;AAY1B,IAAMC,oBAAoB,CAAC,EAAEC,MAAMC,KAAI,MAA0B;;;AAC/D,UAAMC,QAAQC,SAASF,IAAAA;AACvB,UAAMG,QAAQC,cAAcH,KAAAA;AAC5B,UAAM,EAAEI,MAAK,IAAKC,gBAAAA;AAElB,QAAI,CAACL,SAAS,CAACE,OAAO;AACpB,aAAO;IACT;AAEA,WACE,sBAAA,cAACI,UAAUC,SAAO;MAACC,MAAMV,SAAS,YAAY,WAAW;OACvD,sBAAA,cAACW,cAAAA;MAAaP;MAAcE;;;;;AAGlC;AAEA,IAAA,4BAAeP;",
|
|
6
6
|
"names": ["React", "useGlobalSearch", "getSpace", "StackItem", "ExplorerContainer", "role", "view", "space", "getSpace", "model", "useGraphModel", "match", "useGlobalSearch", "StackItem", "Content", "size", "D3ForceGraph"]
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// src/hooks/useGraphModel.ts
|
|
2
2
|
import { useEffect, useState } from "react";
|
|
3
3
|
import { SpaceGraphModel } from "@dxos/schema";
|
|
4
|
-
var useGraphModel = (space, filter, options) => {
|
|
4
|
+
var useGraphModel = (space, filter, options, queue) => {
|
|
5
5
|
const [model, setModel] = useState(void 0);
|
|
6
6
|
useEffect(() => {
|
|
7
7
|
if (!space) {
|
|
@@ -9,9 +9,9 @@ var useGraphModel = (space, filter, options) => {
|
|
|
9
9
|
setModel(void 0);
|
|
10
10
|
return;
|
|
11
11
|
}
|
|
12
|
-
if (!model) {
|
|
12
|
+
if (!model || model.queue !== queue) {
|
|
13
13
|
const model2 = new SpaceGraphModel().setFilter(filter).setOptions(options);
|
|
14
|
-
void model2.open(space);
|
|
14
|
+
void model2.open(space, queue);
|
|
15
15
|
setModel(model2);
|
|
16
16
|
} else {
|
|
17
17
|
model.setFilter(filter).setOptions(options);
|
|
@@ -19,7 +19,8 @@ var useGraphModel = (space, filter, options) => {
|
|
|
19
19
|
}, [
|
|
20
20
|
space,
|
|
21
21
|
filter,
|
|
22
|
-
options
|
|
22
|
+
options,
|
|
23
|
+
queue
|
|
23
24
|
]);
|
|
24
25
|
return model;
|
|
25
26
|
};
|
|
@@ -27,4 +28,4 @@ var useGraphModel = (space, filter, options) => {
|
|
|
27
28
|
export {
|
|
28
29
|
useGraphModel
|
|
29
30
|
};
|
|
30
|
-
//# sourceMappingURL=chunk-
|
|
31
|
+
//# sourceMappingURL=chunk-2MKBRIUT.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/hooks/useGraphModel.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\nimport { type Filter, type Queue, type Space } from '@dxos/client/echo';\nimport { SpaceGraphModel, type SpaceGraphModelOptions } from '@dxos/schema';\n\n// TODO(burdon): Factor out.\nexport const useGraphModel = (\n space: Space | undefined,\n filter?: Filter.Any | undefined,\n options?: SpaceGraphModelOptions,\n queue?: Queue,\n): SpaceGraphModel | undefined => {\n const [model, setModel] = useState<SpaceGraphModel | undefined>(undefined);\n useEffect(() => {\n if (!space) {\n void model?.close();\n setModel(undefined);\n return;\n }\n\n // TODO(burdon): Does this need to be a dependency?\n if (!model || model.queue !== queue) {\n const model = new SpaceGraphModel().setFilter(filter).setOptions(options);\n void model.open(space, queue);\n setModel(model);\n } else {\n model.setFilter(filter).setOptions(options);\n }\n }, [space, filter, options, queue]);\n\n return model;\n};\n"],
|
|
5
|
+
"mappings": ";AAIA,SAASA,WAAWC,gBAAgB;AAGpC,SAASC,uBAAoD;AAGtD,IAAMC,gBAAgB,CAC3BC,OACAC,QACAC,SACAC,UAAAA;AAEA,QAAM,CAACC,OAAOC,QAAAA,IAAYC,SAAsCC,MAAAA;AAChEC,YAAU,MAAA;AACR,QAAI,CAACR,OAAO;AACV,WAAKI,OAAOK,MAAAA;AACZJ,eAASE,MAAAA;AACT;IACF;AAGA,QAAI,CAACH,SAASA,MAAMD,UAAUA,OAAO;AACnC,YAAMC,SAAQ,IAAIM,gBAAAA,EAAkBC,UAAUV,MAAAA,EAAQW,WAAWV,OAAAA;AACjE,WAAKE,OAAMS,KAAKb,OAAOG,KAAAA;AACvBE,eAASD,MAAAA;IACX,OAAO;AACLA,YAAMO,UAAUV,MAAAA,EAAQW,WAAWV,OAAAA;IACrC;EACF,GAAG;IAACF;IAAOC;IAAQC;IAASC;GAAM;AAElC,SAAOC;AACT;",
|
|
6
|
+
"names": ["useEffect", "useState", "SpaceGraphModel", "useGraphModel", "space", "filter", "options", "queue", "model", "setModel", "useState", "undefined", "useEffect", "close", "SpaceGraphModel", "setFilter", "setOptions", "open"]
|
|
7
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/types/schema.ts", "../../../src/types/types.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { TypedObject } from '@dxos/echo-schema';\n\n// TODO(burdon): Clashes with sdk/view.\nexport class ViewType extends TypedObject({\n typename: 'dxos.org/type/ExplorerView',\n version: '0.1.0',\n})({\n name: Schema.optional(Schema.String),\n type: Schema.String,\n}) {}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport {
|
|
5
|
-
"mappings": ";;;;;AAIA,SAASA,cAAc;AAEvB,SAASC,mBAAmB;AAGrB,IAAMC,WAAN,cAAuBC,YAAY;EACxCC,UAAU;EACVC,SAAS;AACX,CAAA,EAAG;EACDC,MAAMC,OAAOC,SAASD,OAAOE,MAAM;EACnCC,MAAMH,OAAOE;AACf,CAAA,EAAA;AAAI;;;ACXJ,SAASE,UAAAA,eAAc;
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { TypedObject } from '@dxos/echo-schema';\n\n// TODO(burdon): Clashes with sdk/view.\nexport class ViewType extends TypedObject({\n typename: 'dxos.org/type/ExplorerView',\n version: '0.1.0',\n})({\n name: Schema.optional(Schema.String),\n type: Schema.String,\n}) {}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { EXPLORER_PLUGIN } from '../meta';\n\nimport { ViewType } from './schema';\n\nexport namespace ExplorerAction {\n const EXPLORER_ACTION = `${EXPLORER_PLUGIN}/action`;\n\n export class Create extends Schema.TaggedClass<Create>()(`${EXPLORER_ACTION}/create`, {\n input: Schema.Struct({\n name: Schema.optional(Schema.String),\n }),\n output: Schema.Struct({\n object: ViewType,\n }),\n }) {}\n}\n"],
|
|
5
|
+
"mappings": ";;;;;AAIA,SAASA,cAAc;AAEvB,SAASC,mBAAmB;AAGrB,IAAMC,WAAN,cAAuBC,YAAY;EACxCC,UAAU;EACVC,SAAS;AACX,CAAA,EAAG;EACDC,MAAMC,OAAOC,SAASD,OAAOE,MAAM;EACnCC,MAAMH,OAAOE;AACf,CAAA,EAAA;AAAI;;;ACXJ,SAASE,UAAAA,eAAc;UAMNC,iBAAAA;AACf,QAAMC,kBAAkB,GAAGC,eAAAA;EAEpB,MAAMC,eAAeC,QAAOC,YAAW,EAAW,GAAGJ,eAAAA,WAA0B;IACpFK,OAAOF,QAAOG,OAAO;MACnBC,MAAMJ,QAAOK,SAASL,QAAOM,MAAM;IACrC,CAAA;IACAC,QAAQP,QAAOG,OAAO;MACpBK,QAAQC;IACV,CAAA;EACF,CAAA,EAAA;EAAI;kBAPSV,SAAAA;AAQf,GAXiBH,mBAAAA,iBAAAA,CAAAA,EAAAA;;",
|
|
6
6
|
"names": ["Schema", "TypedObject", "ViewType", "TypedObject", "typename", "version", "name", "Schema", "optional", "String", "type", "Schema", "ExplorerAction", "EXPLORER_ACTION", "EXPLORER_PLUGIN", "Create", "Schema", "TaggedClass", "input", "Struct", "name", "optional", "String", "output", "object", "ViewType"]
|
|
7
7
|
}
|
|
@@ -94,6 +94,9 @@ import { filterObjectsSync } from "@dxos/plugin-search";
|
|
|
94
94
|
|
|
95
95
|
// src/components/Graph/adapter.ts
|
|
96
96
|
var GraphAdapter = class {
|
|
97
|
+
graph;
|
|
98
|
+
_nodes;
|
|
99
|
+
_links;
|
|
97
100
|
constructor(graph) {
|
|
98
101
|
this.graph = graph;
|
|
99
102
|
this._nodes = [];
|
|
@@ -184,4 +187,4 @@ export {
|
|
|
184
187
|
D3ForceGraph,
|
|
185
188
|
ForceGraph
|
|
186
189
|
};
|
|
187
|
-
//# sourceMappingURL=chunk-
|
|
190
|
+
//# sourceMappingURL=chunk-L4U4MPSZ.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/components/Graph/D3ForceGraph.tsx", "../../../src/components/Graph/ForceGraph.tsx", "../../../src/components/Graph/adapter.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { type FC, useCallback, useEffect, useMemo, useRef } from 'react';\n\nimport { Obj } from '@dxos/echo';\nimport { SelectionModel } from '@dxos/graph';\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport {\n type GraphController,\n GraphForceProjector,\n type GraphLayoutNode,\n type GraphProps,\n SVG,\n type SVGContext,\n} from '@dxos/react-ui-graph';\nimport { getHashColor } from '@dxos/react-ui-theme';\nimport { type
|
|
5
|
-
"mappings": ";;AAIA,OAAOA,SAAkBC,aAAaC,WAAWC,SAASC,cAAc;AAExE,SAASC,WAAW;AACpB,SAASC,sBAAsB;AAE/B,SAEEC,qBAGAC,WAEK;AACP,SAASC,oBAAoB;AAG7B,OAAO;AAWA,IAAMC,eAAsC,CAAC,EAAEC,YAAYC,OAAOC,WAAWC,YAAYC,MAAM,GAAGC,MAAAA,MAAO;;;AAC9G,UAAMC,UAAUC,OAAmB,IAAA;AACnC,UAAMC,YAAYC,QAAyC,MAAA;AACzD,UAAIH,QAAQI,SAAS;AACnB,eAAO,IAAIC,oBAAoBL,QAAQI,SAAS;UAC9CE,YAAY;YACVC,WAAW,CAACC,SAAAA;AAGV,qBAAOA,KAAKC,MAAMC,QAAQC,WAAW;YACvC;UACF;UACAC,QAAQ;YACNC,OAAO;cACLC,UAAU;YACZ;UACF;QACF,CAAA;MACF;IACF,GAAG;MAACd,QAAQI;KAAQ;AAEpB,UAAMW,QAAQd,OAAwB,IAAA;AACtC,UAAML,YAAYO,QAAQ,MAAMN,cAAc,IAAImB,eAAAA,GAAkB;MAACnB;KAAW;AAChFoB,cAAU,MAAMF,MAAMX,SAASc,QAAAA,GAAW;MAACtB,UAAUuB,SAASC;KAAM;AAEpE,UAAMC,eAAeC,YACnB,CAACC,SAAAA;AACC,UAAI3B,UAAU4B,SAASD,KAAKE,EAAE,GAAG;AAC/B7B,kBAAU8B,OAAOH,KAAKE,EAAE;MAC1B,OAAO;AACL7B,kBAAU+B,IAAIJ,KAAKE,EAAE;MACvB;IACF,GACA;MAAC7B;KAAU;AAGb,WACE,sBAAA,cAACgC,IAAIC,MAAI;MAACC,KAAK9B;MAASN;OACtB,sBAAA,cAACkC,IAAIG,SAAO,IAAA,GACXjC,QAAQ,sBAAA,cAAC8B,IAAII,MAAI;MAACC,MAAAA;QACnB,sBAAA,cAACL,IAAIM,MAAI;MAACC,QAAQ;QAAC,IAAI;QAAG;;OACxB,sBAAA,cAACP,IAAIQ,OAAK;MACP,GAAGrC;MACJ+B,KAAKf;MACLpB;MACAO;MACAmC,QAAQ;QACNC,MAAM,CAACf,SAAAA;AACL,iBAAOA,KAAKd,MAAMA,KAAK8B,SAAShB,KAAKE;QACvC;MACF;MACAnB,YAAY;QACViB,MAAM,CAACA,SAAAA;AACL,gBAAMiB,MAAMjB,KAAKd,MAAMA,KAAKC;AAC5B,iBAAO;YACLD,MAAM;cACJgC,OAAOC,aAAaF,OAAOG,IAAIC,YAAYJ,GAAAA,CAAAA,GAAOC;YACpD;YACAI,SAAS;cACP,eAAejD,UAAU4B,SAASD,KAAKE,EAAE;YAC3C;UACF;QACF;MACF;MACAqB,UAAUzB;;;;;AAKpB;;;;AChGA,SAAS0B,WAAWC,qBAAqB;AACzC,OAAOC,sBAAsB;AAC7B,OAAOC,UAAkBC,aAAAA,YAAWC,UAAAA,SAAQC,gBAAgB;AAC5D,SAASC,yBAAyB;AAElC,
|
|
6
|
-
"names": ["React", "useCallback", "useEffect", "useMemo", "useRef", "Obj", "SelectionModel", "GraphForceProjector", "SVG", "getHashColor", "D3ForceGraph", "classNames", "model", "selection", "_selection", "grid", "props", "context", "useRef", "projector", "useMemo", "current", "GraphForceProjector", "attributes", "linkForce", "edge", "data", "object", "active", "forces", "point", "strength", "graph", "SelectionModel", "useEffect", "repaint", "selected", "value", "handleSelect", "useCallback", "node", "contains", "id", "remove", "add", "SVG", "Root", "ref", "Markers", "Grid", "axis", "Zoom", "extent", "Graph", "labels", "text", "label", "obj", "color", "getHashColor", "Obj", "getTypename", "classes", "onSelect", "forceLink", "forceManyBody", "NativeForceGraph", "React", "useEffect", "useRef", "useState", "useResizeDetector", "filterObjectsSync", "GraphAdapter", "
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { type FC, useCallback, useEffect, useMemo, useRef } from 'react';\n\nimport { Obj } from '@dxos/echo';\nimport { SelectionModel } from '@dxos/graph';\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport {\n type GraphController,\n GraphForceProjector,\n type GraphLayoutNode,\n type GraphProps,\n SVG,\n type SVGContext,\n} from '@dxos/react-ui-graph';\nimport { getHashColor } from '@dxos/react-ui-theme';\nimport { type SpaceGraphEdge, type SpaceGraphModel, type SpaceGraphNode } from '@dxos/schema';\n\nimport '@dxos/react-ui-graph/styles/graph.css';\n\nexport type D3ForceGraphProps = ThemedClassName<\n {\n model?: SpaceGraphModel;\n match?: RegExp;\n selection?: SelectionModel;\n grid?: boolean;\n } & Pick<GraphProps, 'drag'>\n>;\n\nexport const D3ForceGraph: FC<D3ForceGraphProps> = ({ classNames, model, selection: _selection, grid, ...props }) => {\n const context = useRef<SVGContext>(null);\n const projector = useMemo<GraphForceProjector | undefined>(() => {\n if (context.current) {\n return new GraphForceProjector(context.current, {\n attributes: {\n linkForce: (edge) => {\n // TODO(burdon): Check type (currently assumes Employee property).\n // Edge shouldn't contribute to force if it's not active.\n return edge.data?.object?.active !== false;\n },\n },\n forces: {\n point: {\n strength: 0.01,\n },\n },\n });\n }\n }, [context.current]);\n\n const graph = useRef<GraphController>(null);\n const selection = useMemo(() => _selection ?? new SelectionModel(), [_selection]);\n useEffect(() => graph.current?.repaint(), [selection.selected.value]);\n\n const handleSelect = useCallback<NonNullable<GraphProps['onSelect']>>(\n (node) => {\n if (selection.contains(node.id)) {\n selection.remove(node.id);\n } else {\n selection.add(node.id);\n }\n },\n [selection],\n );\n\n return (\n <SVG.Root ref={context} classNames={classNames}>\n <SVG.Markers />\n {grid && <SVG.Grid axis />}\n <SVG.Zoom extent={[1 / 2, 2]}>\n <SVG.Graph<SpaceGraphNode, SpaceGraphEdge>\n {...props}\n ref={graph}\n model={model}\n projector={projector}\n labels={{\n text: (node) => {\n return node.data?.data.label ?? node.id;\n },\n }}\n attributes={{\n node: (node: GraphLayoutNode<SpaceGraphNode>) => {\n const obj = node.data?.data.object;\n return {\n data: {\n color: getHashColor(obj && Obj.getTypename(obj))?.color,\n },\n classes: {\n 'dx-selected': selection.contains(node.id),\n },\n };\n },\n }}\n onSelect={handleSelect}\n />\n </SVG.Zoom>\n </SVG.Root>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { forceLink, forceManyBody } from 'd3';\nimport NativeForceGraph from 'force-graph';\nimport React, { type FC, useEffect, useRef, useState } from 'react';\nimport { useResizeDetector } from 'react-resize-detector';\n\nimport { type SearchResult, filterObjectsSync } from '@dxos/plugin-search';\nimport { type SpaceGraphModel } from '@dxos/schema';\n\nimport { GraphAdapter } from './adapter';\n\nexport type ForceGraphProps = {\n model?: SpaceGraphModel;\n match?: RegExp;\n};\n\nexport const ForceGraph: FC<ForceGraphProps> = ({ model, match }) => {\n const { ref, width, height } = useResizeDetector({ refreshRate: 200 });\n const rootRef = useRef<HTMLDivElement>(null);\n const forceGraph = useRef<NativeForceGraph>();\n\n const filteredRef = useRef<SearchResult[]>();\n filteredRef.current = filterObjectsSync(model?.objects ?? [], match);\n\n const [data, setData] = useState<GraphAdapter>();\n useEffect(() => {\n return model?.subscribe((model) => {\n setData(new GraphAdapter(model.graph));\n });\n }, [model]);\n\n useEffect(() => {\n if (rootRef.current) {\n // https://github.com/vasturiano/force-graph\n // https://github.com/vasturiano/3d-force-graph\n forceGraph.current = new NativeForceGraph(rootRef.current)\n // https://github.com/vasturiano/force-graph?tab=readme-ov-file#node-styling\n .nodeRelSize(6)\n .nodeLabel((node: any) => (node.type === 'schema' ? node.data.typename : (node.data.label ?? node.id)))\n .nodeAutoColorBy((node: any) => (node.type === 'schema' ? 'schema' : node.data.typename))\n\n // https://github.com/vasturiano/force-graph?tab=readme-ov-file#link-styling\n .linkAutoColorBy((link: any) => link.type);\n }\n\n return () => {\n forceGraph.current?.pauseAnimation().graphData({ nodes: [], links: [] });\n forceGraph.current = undefined;\n };\n }, []);\n\n useEffect(() => {\n if (!data || !width || !height || !forceGraph.current) {\n return;\n }\n\n // https://github.com/vasturiano/force-graph?tab=readme-ov-file#container-layout\n forceGraph.current\n .pauseAnimation()\n .width(width)\n .height(height)\n .onEngineStop(() => {\n handleZoomToFit();\n })\n .onNodeClick((node: any) => {\n forceGraph.current?.emitParticle(node);\n })\n\n // https://github.com/vasturiano/force-graph?tab=readme-ov-file#force-engine-d3-force-configuration\n // .d3Force('center', forceCenter().strength(0.9))\n .d3Force('link', forceLink().distance(160).strength(0.5))\n .d3Force('charge', forceManyBody().strength(-30))\n\n .graphData(data)\n .warmupTicks(100)\n .cooldownTime(1_000)\n .resumeAnimation();\n }, [data, width, height, forceGraph.current]);\n\n const handleZoomToFit = () => {\n forceGraph.current?.zoomToFit(400, 40);\n };\n\n return (\n <div ref={ref} className='relative grow' onClick={handleZoomToFit}>\n <div ref={rootRef} className='absolute inset-0' />\n </div>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Graph } from '@dxos/graph';\n\nexport type GraphNode = {\n id?: string;\n};\n\nexport type GraphLink = {\n source?: string;\n target?: string;\n};\n\nexport type GraphData = {\n nodes: GraphNode[];\n links: GraphLink[];\n};\n\n/**\n * Map common graph to force-graph format.\n */\nexport class GraphAdapter implements GraphData {\n private readonly _nodes: GraphNode[] = [];\n private readonly _links: GraphLink[] = [];\n\n constructor(private readonly graph: Graph) {\n this._nodes = graph.nodes.map((node) => ({\n id: node.id,\n type: node.type,\n data: node.data,\n }));\n\n this._links = graph.edges.map((edge) => ({\n type: edge.type,\n source: edge.source,\n target: edge.target,\n data: edge.data,\n }));\n }\n\n get nodes() {\n return this._nodes;\n }\n\n get links() {\n return this._links;\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["React", "useCallback", "useEffect", "useMemo", "useRef", "Obj", "SelectionModel", "GraphForceProjector", "SVG", "getHashColor", "D3ForceGraph", "classNames", "model", "selection", "_selection", "grid", "props", "context", "useRef", "projector", "useMemo", "current", "GraphForceProjector", "attributes", "linkForce", "edge", "data", "object", "active", "forces", "point", "strength", "graph", "SelectionModel", "useEffect", "repaint", "selected", "value", "handleSelect", "useCallback", "node", "contains", "id", "remove", "add", "SVG", "Root", "ref", "Markers", "Grid", "axis", "Zoom", "extent", "Graph", "labels", "text", "label", "obj", "color", "getHashColor", "Obj", "getTypename", "classes", "onSelect", "forceLink", "forceManyBody", "NativeForceGraph", "React", "useEffect", "useRef", "useState", "useResizeDetector", "filterObjectsSync", "GraphAdapter", "_nodes", "_links", "graph", "nodes", "map", "node", "id", "type", "data", "edges", "edge", "source", "target", "links", "ForceGraph", "model", "match", "ref", "width", "height", "useResizeDetector", "refreshRate", "rootRef", "useRef", "forceGraph", "filteredRef", "current", "filterObjectsSync", "objects", "data", "setData", "useState", "useEffect", "subscribe", "GraphAdapter", "graph", "NativeForceGraph", "nodeRelSize", "nodeLabel", "node", "type", "typename", "label", "id", "nodeAutoColorBy", "linkAutoColorBy", "link", "pauseAnimation", "graphData", "nodes", "links", "undefined", "onEngineStop", "handleZoomToFit", "onNodeClick", "emitParticle", "d3Force", "forceLink", "distance", "strength", "forceManyBody", "warmupTicks", "cooldownTime", "resumeAnimation", "zoomToFit", "React", "div", "className", "onClick"]
|
|
7
7
|
}
|
|
@@ -10976,7 +10976,6 @@ var TidyTree_default = TidyTree;
|
|
|
10976
10976
|
import { Schema } from "effect";
|
|
10977
10977
|
import { Key, Obj, Type } from "@dxos/echo";
|
|
10978
10978
|
import { invariant } from "@dxos/invariant";
|
|
10979
|
-
var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-explorer/src/components/Tree/types/tree.ts";
|
|
10980
10979
|
var TreeNodeType = Schema.Struct({
|
|
10981
10980
|
id: Key.ObjectId,
|
|
10982
10981
|
children: Schema.mutable(Schema.Array(Key.ObjectId)),
|
|
@@ -10996,245 +10995,6 @@ var TreeType = Schema.Struct({
|
|
|
10996
10995
|
typename: "dxos.org/type/Tree",
|
|
10997
10996
|
version: "0.1.0"
|
|
10998
10997
|
}));
|
|
10999
|
-
var Tree = class _Tree {
|
|
11000
|
-
static {
|
|
11001
|
-
this.create = () => {
|
|
11002
|
-
const id = Key.ObjectId.random();
|
|
11003
|
-
return Obj.make(TreeType, {
|
|
11004
|
-
root: id,
|
|
11005
|
-
nodes: {
|
|
11006
|
-
[id]: {
|
|
11007
|
-
id,
|
|
11008
|
-
children: [],
|
|
11009
|
-
data: {
|
|
11010
|
-
text: ""
|
|
11011
|
-
}
|
|
11012
|
-
}
|
|
11013
|
-
}
|
|
11014
|
-
});
|
|
11015
|
-
};
|
|
11016
|
-
}
|
|
11017
|
-
constructor(tree3) {
|
|
11018
|
-
this._tree = tree3 ?? _Tree.create();
|
|
11019
|
-
}
|
|
11020
|
-
get tree() {
|
|
11021
|
-
return this._tree;
|
|
11022
|
-
}
|
|
11023
|
-
// TODO(burdon): Make reactive.
|
|
11024
|
-
get size() {
|
|
11025
|
-
return Object.keys(this._tree.nodes).length;
|
|
11026
|
-
}
|
|
11027
|
-
get root() {
|
|
11028
|
-
return this.getNode(this._tree.root);
|
|
11029
|
-
}
|
|
11030
|
-
//
|
|
11031
|
-
// Traversal
|
|
11032
|
-
//
|
|
11033
|
-
/**
|
|
11034
|
-
* Recursively traverse the tree until the callback returns a value.
|
|
11035
|
-
*/
|
|
11036
|
-
tranverse(callback, root = this._tree.root, depth = 0) {
|
|
11037
|
-
const node = this._tree.nodes[root];
|
|
11038
|
-
const result = callback(node, depth);
|
|
11039
|
-
if (result !== void 0) {
|
|
11040
|
-
return result;
|
|
11041
|
-
}
|
|
11042
|
-
for (const childId of node.children) {
|
|
11043
|
-
const result2 = this.tranverse(callback, childId, depth + 1);
|
|
11044
|
-
if (result2 !== void 0) {
|
|
11045
|
-
return result2;
|
|
11046
|
-
}
|
|
11047
|
-
}
|
|
11048
|
-
}
|
|
11049
|
-
getNode(id) {
|
|
11050
|
-
const node = this._tree.nodes[id];
|
|
11051
|
-
invariant(node, void 0, {
|
|
11052
|
-
F: __dxlog_file,
|
|
11053
|
-
L: 98,
|
|
11054
|
-
S: this,
|
|
11055
|
-
A: [
|
|
11056
|
-
"node",
|
|
11057
|
-
""
|
|
11058
|
-
]
|
|
11059
|
-
});
|
|
11060
|
-
return node;
|
|
11061
|
-
}
|
|
11062
|
-
/**
|
|
11063
|
-
* Get the children of a node.
|
|
11064
|
-
*/
|
|
11065
|
-
getChildNodes(node) {
|
|
11066
|
-
return node.children.map((id) => this.getNode(id));
|
|
11067
|
-
}
|
|
11068
|
-
/**
|
|
11069
|
-
* Get the parent of a node.
|
|
11070
|
-
*/
|
|
11071
|
-
getParent(node) {
|
|
11072
|
-
const parent = this.tranverse((n) => {
|
|
11073
|
-
if (n.children.includes(node.id)) {
|
|
11074
|
-
return n;
|
|
11075
|
-
}
|
|
11076
|
-
});
|
|
11077
|
-
return parent ?? null;
|
|
11078
|
-
}
|
|
11079
|
-
/**
|
|
11080
|
-
* Get the next node in the tree.
|
|
11081
|
-
*/
|
|
11082
|
-
getNext(node, hierarchical = true) {
|
|
11083
|
-
if (hierarchical && node.children.length) {
|
|
11084
|
-
return this.getChildNodes(node)[0];
|
|
11085
|
-
} else {
|
|
11086
|
-
const parent = this.getParent(node);
|
|
11087
|
-
if (parent) {
|
|
11088
|
-
const idx = this.getChildNodes(parent).findIndex(({ id }) => id === node.id);
|
|
11089
|
-
if (idx < parent.children.length - 1) {
|
|
11090
|
-
return this.getNode(parent.children[idx + 1]);
|
|
11091
|
-
} else {
|
|
11092
|
-
return this.getNext(parent, false);
|
|
11093
|
-
}
|
|
11094
|
-
}
|
|
11095
|
-
}
|
|
11096
|
-
}
|
|
11097
|
-
/**
|
|
11098
|
-
* Get the previous node in the tree.
|
|
11099
|
-
*/
|
|
11100
|
-
getPrevious(node, hierarchical = true) {
|
|
11101
|
-
const parent = this.getParent(node);
|
|
11102
|
-
const idx = this.getChildNodes(parent).findIndex(({ id }) => id === node.id);
|
|
11103
|
-
if (idx === 0) {
|
|
11104
|
-
if (hierarchical) {
|
|
11105
|
-
return parent;
|
|
11106
|
-
}
|
|
11107
|
-
} else {
|
|
11108
|
-
const previous = this.getNode(parent.children[idx - 1]);
|
|
11109
|
-
if (hierarchical && previous.children.length) {
|
|
11110
|
-
return this.getLastDescendent(previous);
|
|
11111
|
-
}
|
|
11112
|
-
return previous;
|
|
11113
|
-
}
|
|
11114
|
-
}
|
|
11115
|
-
/**
|
|
11116
|
-
* Get the last descendent of a node.
|
|
11117
|
-
*/
|
|
11118
|
-
getLastDescendent(node) {
|
|
11119
|
-
const children = this.getChildNodes(node);
|
|
11120
|
-
const last = children.length ? children[children.length - 1] : void 0;
|
|
11121
|
-
if (last) {
|
|
11122
|
-
return this.getLastDescendent(last);
|
|
11123
|
-
}
|
|
11124
|
-
return node;
|
|
11125
|
-
}
|
|
11126
|
-
//
|
|
11127
|
-
// Mutations
|
|
11128
|
-
//
|
|
11129
|
-
/**
|
|
11130
|
-
* Clear tree.
|
|
11131
|
-
*/
|
|
11132
|
-
clear() {
|
|
11133
|
-
const root = this._tree.nodes[this._tree.root];
|
|
11134
|
-
root.children.length = 0;
|
|
11135
|
-
this._tree.nodes = {
|
|
11136
|
-
[root.id]: root
|
|
11137
|
-
};
|
|
11138
|
-
}
|
|
11139
|
-
/**
|
|
11140
|
-
* Add node.
|
|
11141
|
-
*/
|
|
11142
|
-
addNode(parent, node, index) {
|
|
11143
|
-
if (!node) {
|
|
11144
|
-
const id = Key.ObjectId.random();
|
|
11145
|
-
node = {
|
|
11146
|
-
id,
|
|
11147
|
-
children: [],
|
|
11148
|
-
data: {
|
|
11149
|
-
text: ""
|
|
11150
|
-
}
|
|
11151
|
-
};
|
|
11152
|
-
}
|
|
11153
|
-
this._tree.nodes[node.id] = node;
|
|
11154
|
-
parent.children.splice(index ?? parent.children.length, 0, node.id);
|
|
11155
|
-
return node;
|
|
11156
|
-
}
|
|
11157
|
-
/**
|
|
11158
|
-
* Delete node.
|
|
11159
|
-
*/
|
|
11160
|
-
deleteNode(parent, id) {
|
|
11161
|
-
const node = this._tree.nodes[id];
|
|
11162
|
-
if (!node) {
|
|
11163
|
-
return void 0;
|
|
11164
|
-
}
|
|
11165
|
-
delete this._tree.nodes[node.id];
|
|
11166
|
-
const idx = parent.children.findIndex((child) => child === id);
|
|
11167
|
-
if (idx !== -1) {
|
|
11168
|
-
parent.children.splice(idx, 1);
|
|
11169
|
-
}
|
|
11170
|
-
return node;
|
|
11171
|
-
}
|
|
11172
|
-
/**
|
|
11173
|
-
* Move child node.
|
|
11174
|
-
*/
|
|
11175
|
-
moveNode(node, from, to) {
|
|
11176
|
-
invariant(from >= 0 && from < node.children.length, void 0, {
|
|
11177
|
-
F: __dxlog_file,
|
|
11178
|
-
L: 228,
|
|
11179
|
-
S: this,
|
|
11180
|
-
A: [
|
|
11181
|
-
"from >= 0 && from < node.children.length",
|
|
11182
|
-
""
|
|
11183
|
-
]
|
|
11184
|
-
});
|
|
11185
|
-
invariant(to >= 0 && to < node.children.length, void 0, {
|
|
11186
|
-
F: __dxlog_file,
|
|
11187
|
-
L: 229,
|
|
11188
|
-
S: this,
|
|
11189
|
-
A: [
|
|
11190
|
-
"to >= 0 && to < node.children.length",
|
|
11191
|
-
""
|
|
11192
|
-
]
|
|
11193
|
-
});
|
|
11194
|
-
if (from === to) {
|
|
11195
|
-
return null;
|
|
11196
|
-
}
|
|
11197
|
-
const child = node.children[from];
|
|
11198
|
-
node.children.splice(from, 1);
|
|
11199
|
-
node.children.splice(to, 0, child);
|
|
11200
|
-
return this.getNode(child);
|
|
11201
|
-
}
|
|
11202
|
-
/**
|
|
11203
|
-
* Indent node.
|
|
11204
|
-
*/
|
|
11205
|
-
indentNode(node) {
|
|
11206
|
-
const parent = this.getParent(node);
|
|
11207
|
-
if (!parent) {
|
|
11208
|
-
return;
|
|
11209
|
-
}
|
|
11210
|
-
const idx = parent.children.findIndex((child) => child === node.id);
|
|
11211
|
-
if (idx < 1 || idx >= parent.children.length) {
|
|
11212
|
-
return;
|
|
11213
|
-
}
|
|
11214
|
-
const previous = this.getNode(parent.children[idx - 1]);
|
|
11215
|
-
parent.children.splice(idx, 1);
|
|
11216
|
-
previous.children.push(node.id);
|
|
11217
|
-
}
|
|
11218
|
-
/**
|
|
11219
|
-
* Unindent node.
|
|
11220
|
-
*/
|
|
11221
|
-
unindentNode(node) {
|
|
11222
|
-
const parent = this.getParent(node);
|
|
11223
|
-
if (!parent) {
|
|
11224
|
-
return;
|
|
11225
|
-
}
|
|
11226
|
-
const ancestor = this.getParent(parent);
|
|
11227
|
-
if (!ancestor) {
|
|
11228
|
-
return;
|
|
11229
|
-
}
|
|
11230
|
-
const nodeIdx = parent.children.findIndex((id) => id === node.id);
|
|
11231
|
-
const [_, ...rest] = parent.children.splice(nodeIdx, parent.children.length - nodeIdx);
|
|
11232
|
-
parent.children.splice(nodeIdx, parent.children.length - nodeIdx);
|
|
11233
|
-
const parentIdx = this.getChildNodes(ancestor).findIndex((n) => n.id === parent.id);
|
|
11234
|
-
ancestor.children.splice(parentIdx + 1, 0, node.id);
|
|
11235
|
-
node.children.push(...rest);
|
|
11236
|
-
}
|
|
11237
|
-
};
|
|
11238
10998
|
|
|
11239
10999
|
// src/components/Tree/types/types.ts
|
|
11240
11000
|
var mapGraphToTreeData = (model, maxDepth = 8) => {
|
|
@@ -11262,7 +11022,7 @@ var renderers = /* @__PURE__ */ new Map([
|
|
|
11262
11022
|
HierarchicalEdgeBundling_default
|
|
11263
11023
|
]
|
|
11264
11024
|
]);
|
|
11265
|
-
var
|
|
11025
|
+
var Tree = ({ space, selected, variant = "tidy", onNodeClick }) => {
|
|
11266
11026
|
var _effect = _useSignals3();
|
|
11267
11027
|
try {
|
|
11268
11028
|
const [model] = useAsyncState(async () => space ? new SpaceGraphModel().open(space) : void 0, [
|
|
@@ -11317,13 +11077,13 @@ var Tree2 = ({ space, selected, variant = "tidy", onNodeClick }) => {
|
|
|
11317
11077
|
|
|
11318
11078
|
// src/components/index.ts
|
|
11319
11079
|
import { lazy } from "react";
|
|
11320
|
-
var ExplorerContainer = lazy(() => import("./ExplorerContainer-
|
|
11080
|
+
var ExplorerContainer = lazy(() => import("./ExplorerContainer-5QHLD2B2.mjs"));
|
|
11321
11081
|
|
|
11322
11082
|
export {
|
|
11323
11083
|
Chart,
|
|
11324
11084
|
Globe,
|
|
11325
11085
|
defaultTreeLayoutSlots,
|
|
11326
|
-
|
|
11086
|
+
Tree,
|
|
11327
11087
|
ExplorerContainer
|
|
11328
11088
|
};
|
|
11329
|
-
//# sourceMappingURL=chunk-
|
|
11089
|
+
//# sourceMappingURL=chunk-LGK64HLU.mjs.map
|