@dxos/plugin-explorer 0.8.4-main.2e9d522 → 0.8.4-main.406dc2a

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 (140) hide show
  1. package/dist/lib/browser/ExplorerContainer-6SHZJ6AK.mjs +50 -0
  2. package/dist/lib/browser/ExplorerContainer-6SHZJ6AK.mjs.map +7 -0
  3. package/dist/lib/browser/{chunk-UL5EDJPE.mjs → chunk-2DGFNLRO.mjs} +2 -4
  4. package/dist/lib/browser/chunk-2DGFNLRO.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-OAOY7SHY.mjs → chunk-2MKBRIUT.mjs} +6 -5
  6. package/dist/lib/browser/chunk-2MKBRIUT.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-BZ65T5M3.mjs +79 -0
  8. package/dist/lib/browser/chunk-BZ65T5M3.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  10. package/dist/lib/browser/chunk-J5LGTIGS.mjs.map +7 -0
  11. package/dist/lib/{node-esm/chunk-S5A2EUSJ.mjs → browser/chunk-MOM5KCKC.mjs} +36 -26
  12. package/dist/lib/browser/{chunk-PVFZFKQ6.mjs.map → chunk-MOM5KCKC.mjs.map} +3 -3
  13. package/dist/lib/browser/{chunk-J2BBZOSF.mjs → chunk-NXGP6NTP.mjs} +28 -12
  14. package/dist/lib/browser/chunk-NXGP6NTP.mjs.map +7 -0
  15. package/dist/lib/browser/index.mjs +25 -19
  16. package/dist/lib/browser/index.mjs.map +3 -3
  17. package/dist/lib/browser/intent-resolver-K57C3LIX.mjs +31 -0
  18. package/dist/lib/browser/intent-resolver-K57C3LIX.mjs.map +7 -0
  19. package/dist/lib/browser/meta.json +1 -1
  20. package/dist/lib/browser/meta.mjs +2 -3
  21. package/dist/lib/browser/react-surface-OPBND5W3.mjs +35 -0
  22. package/dist/lib/browser/react-surface-OPBND5W3.mjs.map +7 -0
  23. package/dist/lib/browser/types/index.mjs +7 -6
  24. package/dist/lib/node-esm/ExplorerContainer-FRTDXZI5.mjs +51 -0
  25. package/dist/lib/node-esm/ExplorerContainer-FRTDXZI5.mjs.map +7 -0
  26. package/dist/lib/node-esm/{chunk-PPBUWC7F.mjs → chunk-3ODK27PU.mjs} +6 -5
  27. package/dist/lib/node-esm/chunk-3ODK27PU.mjs.map +7 -0
  28. package/dist/lib/node-esm/{chunk-4VMSNXYL.mjs → chunk-6JACZE7E.mjs} +28 -12
  29. package/dist/lib/node-esm/chunk-6JACZE7E.mjs.map +7 -0
  30. package/dist/lib/node-esm/chunk-ES6AOMCY.mjs +80 -0
  31. package/dist/lib/node-esm/chunk-ES6AOMCY.mjs.map +7 -0
  32. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  33. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
  34. package/dist/lib/node-esm/{chunk-PIAXA43R.mjs → chunk-PX6LHR2N.mjs} +2 -4
  35. package/dist/lib/node-esm/chunk-PX6LHR2N.mjs.map +7 -0
  36. package/dist/lib/{browser/chunk-PVFZFKQ6.mjs → node-esm/chunk-ZCV4U7LT.mjs} +38 -24
  37. package/dist/lib/node-esm/{chunk-S5A2EUSJ.mjs.map → chunk-ZCV4U7LT.mjs.map} +3 -3
  38. package/dist/lib/node-esm/index.mjs +25 -19
  39. package/dist/lib/node-esm/index.mjs.map +3 -3
  40. package/dist/lib/node-esm/intent-resolver-BLPPTTEY.mjs +32 -0
  41. package/dist/lib/node-esm/intent-resolver-BLPPTTEY.mjs.map +7 -0
  42. package/dist/lib/node-esm/meta.json +1 -1
  43. package/dist/lib/node-esm/meta.mjs +2 -3
  44. package/dist/lib/node-esm/react-surface-HCKQSHKJ.mjs +36 -0
  45. package/dist/lib/node-esm/react-surface-HCKQSHKJ.mjs.map +7 -0
  46. package/dist/lib/node-esm/types/index.mjs +7 -6
  47. package/dist/types/src/ExplorerPlugin.d.ts +1 -1
  48. package/dist/types/src/ExplorerPlugin.d.ts.map +1 -1
  49. package/dist/types/src/capabilities/index.d.ts +2 -2
  50. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  51. package/dist/types/src/capabilities/intent-resolver.d.ts +2 -2
  52. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  53. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  54. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  55. package/dist/types/src/components/Chart/Chart.d.ts.map +1 -1
  56. package/dist/types/src/components/Chart/Chart.stories.d.ts +8 -4
  57. package/dist/types/src/components/Chart/Chart.stories.d.ts.map +1 -1
  58. package/dist/types/src/components/ExplorerContainer.d.ts +2 -2
  59. package/dist/types/src/components/ExplorerContainer.d.ts.map +1 -1
  60. package/dist/types/src/components/Globe/Globe.d.ts.map +1 -1
  61. package/dist/types/src/components/Globe/Globe.stories.d.ts +8 -4
  62. package/dist/types/src/components/Globe/Globe.stories.d.ts.map +1 -1
  63. package/dist/types/src/components/Graph/D3ForceGraph.d.ts +2 -2
  64. package/dist/types/src/components/Graph/D3ForceGraph.d.ts.map +1 -1
  65. package/dist/types/src/components/Graph/D3ForceGraph.stories.d.ts +13 -4
  66. package/dist/types/src/components/Graph/D3ForceGraph.stories.d.ts.map +1 -1
  67. package/dist/types/src/components/Graph/ForceGraph.stories.d.ts +13 -4
  68. package/dist/types/src/components/Graph/ForceGraph.stories.d.ts.map +1 -1
  69. package/dist/types/src/components/Graph/testing.d.ts +1 -1
  70. package/dist/types/src/components/Graph/testing.d.ts.map +1 -1
  71. package/dist/types/src/components/Tree/Tree.stories.d.ts +13 -16
  72. package/dist/types/src/components/Tree/Tree.stories.d.ts.map +1 -1
  73. package/dist/types/src/components/Tree/types/tree.d.ts +1 -1
  74. package/dist/types/src/components/Tree/types/tree.d.ts.map +1 -1
  75. package/dist/types/src/components/index.d.ts +1 -1
  76. package/dist/types/src/hooks/useGraphModel.d.ts +2 -2
  77. package/dist/types/src/hooks/useGraphModel.d.ts.map +1 -1
  78. package/dist/types/src/meta.d.ts +0 -1
  79. package/dist/types/src/meta.d.ts.map +1 -1
  80. package/dist/types/src/translations.d.ts +14 -2
  81. package/dist/types/src/translations.d.ts.map +1 -1
  82. package/dist/types/src/types/ExplorerAction.d.ts +23 -0
  83. package/dist/types/src/types/ExplorerAction.d.ts.map +1 -0
  84. package/dist/types/src/types/Graph.d.ts +33 -0
  85. package/dist/types/src/types/Graph.d.ts.map +1 -0
  86. package/dist/types/src/types/index.d.ts +2 -2
  87. package/dist/types/src/types/index.d.ts.map +1 -1
  88. package/dist/types/tsconfig.tsbuildinfo +1 -1
  89. package/package.json +40 -36
  90. package/src/ExplorerPlugin.tsx +48 -47
  91. package/src/capabilities/intent-resolver.ts +10 -8
  92. package/src/capabilities/react-surface.tsx +9 -5
  93. package/src/components/Chart/Chart.stories.tsx +9 -7
  94. package/src/components/Chart/Chart.tsx +1 -1
  95. package/src/components/ExplorerContainer.tsx +24 -6
  96. package/src/components/Globe/Globe.stories.tsx +14 -12
  97. package/src/components/Globe/Globe.tsx +1 -1
  98. package/src/components/Graph/D3ForceGraph.stories.tsx +30 -17
  99. package/src/components/Graph/D3ForceGraph.tsx +5 -5
  100. package/src/components/Graph/ForceGraph.stories.tsx +30 -17
  101. package/src/components/Graph/ForceGraph.tsx +4 -4
  102. package/src/components/Graph/testing.ts +2 -2
  103. package/src/components/Tree/Tree.stories.tsx +28 -22
  104. package/src/components/Tree/Tree.tsx +3 -3
  105. package/src/components/Tree/types/tree.test.ts +2 -1
  106. package/src/components/Tree/types/tree.ts +1 -1
  107. package/src/hooks/useGraphModel.ts +5 -4
  108. package/src/meta.ts +1 -3
  109. package/src/translations.ts +4 -2
  110. package/src/types/ExplorerAction.ts +29 -0
  111. package/src/types/Graph.ts +45 -0
  112. package/src/types/index.ts +2 -2
  113. package/dist/lib/browser/ExplorerContainer-OGHSHZD5.mjs +0 -37
  114. package/dist/lib/browser/ExplorerContainer-OGHSHZD5.mjs.map +0 -7
  115. package/dist/lib/browser/chunk-EF4BFHTI.mjs +0 -38
  116. package/dist/lib/browser/chunk-EF4BFHTI.mjs.map +0 -7
  117. package/dist/lib/browser/chunk-J2BBZOSF.mjs.map +0 -7
  118. package/dist/lib/browser/chunk-OAOY7SHY.mjs.map +0 -7
  119. package/dist/lib/browser/chunk-UL5EDJPE.mjs.map +0 -7
  120. package/dist/lib/browser/intent-resolver-XH2UO2FM.mjs +0 -24
  121. package/dist/lib/browser/intent-resolver-XH2UO2FM.mjs.map +0 -7
  122. package/dist/lib/browser/react-surface-65VQ42HX.mjs +0 -31
  123. package/dist/lib/browser/react-surface-65VQ42HX.mjs.map +0 -7
  124. package/dist/lib/node-esm/ExplorerContainer-6ON5NA2P.mjs +0 -38
  125. package/dist/lib/node-esm/ExplorerContainer-6ON5NA2P.mjs.map +0 -7
  126. package/dist/lib/node-esm/chunk-4VMSNXYL.mjs.map +0 -7
  127. package/dist/lib/node-esm/chunk-PIAXA43R.mjs.map +0 -7
  128. package/dist/lib/node-esm/chunk-PPBUWC7F.mjs.map +0 -7
  129. package/dist/lib/node-esm/chunk-VKCOKQRG.mjs +0 -39
  130. package/dist/lib/node-esm/chunk-VKCOKQRG.mjs.map +0 -7
  131. package/dist/lib/node-esm/intent-resolver-AGBBNA67.mjs +0 -25
  132. package/dist/lib/node-esm/intent-resolver-AGBBNA67.mjs.map +0 -7
  133. package/dist/lib/node-esm/react-surface-IJIMYAST.mjs +0 -32
  134. package/dist/lib/node-esm/react-surface-IJIMYAST.mjs.map +0 -7
  135. package/dist/types/src/types/schema.d.ts +0 -12
  136. package/dist/types/src/types/schema.d.ts.map +0 -1
  137. package/dist/types/src/types/types.d.ts +0 -18
  138. package/dist/types/src/types/types.d.ts.map +0 -1
  139. package/src/types/schema.ts +0 -16
  140. package/src/types/types.ts +0 -21
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/ExplorerContainer.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useCallback, useMemo, useState } from 'react';\n\nimport { type Filter } from '@dxos/echo';\nimport { QueryBuilder } from '@dxos/echo-query';\nimport { useGlobalSearch } from '@dxos/plugin-search';\nimport { getSpace } from '@dxos/react-client/echo';\nimport { Toolbar } from '@dxos/react-ui';\nimport { QueryEditor, type QueryEditorProps } from '@dxos/react-ui-components';\nimport { StackItem } from '@dxos/react-ui-stack';\nimport { type DataType } from '@dxos/schema';\n\nimport { useGraphModel } from '../hooks';\n\nimport { D3ForceGraph } from './Graph';\n\ntype ExplorerContainerProps = {\n role: string;\n view: DataType.View;\n};\n\nconst ExplorerContainer = ({ role, view }: ExplorerContainerProps) => {\n const space = getSpace(view);\n const [filter, setFilter] = useState<Filter.Any>();\n const model = useGraphModel(space, filter);\n const { match } = useGlobalSearch();\n\n const builder = useMemo(() => new QueryBuilder(), []);\n const handleChange = useCallback<NonNullable<QueryEditorProps['onChange']>>((value) => {\n setFilter(builder.build(value));\n }, []);\n\n const showToolbar = role === 'article';\n\n if (!space || !model) {\n return null;\n }\n\n return (\n <StackItem.Content toolbar={showToolbar}>\n {showToolbar && (\n <Toolbar.Root>\n <QueryEditor db={space.db} onChange={handleChange} />\n </Toolbar.Root>\n )}\n <D3ForceGraph model={model} match={match} />\n </StackItem.Content>\n );\n};\n\nexport default ExplorerContainer;\n"],
5
+ "mappings": ";;;;;;;;;;;AAIA,OAAOA,SAASC,aAAaC,SAASC,gBAAgB;AAGtD,SAASC,oBAAoB;AAC7B,SAASC,uBAAuB;AAChC,SAASC,gBAAgB;AACzB,SAASC,eAAe;AACxB,SAASC,mBAA0C;AACnD,SAASC,iBAAiB;AAY1B,IAAMC,oBAAoB,CAAC,EAAEC,MAAMC,KAAI,MAA0B;;;AAC/D,UAAMC,QAAQC,SAASF,IAAAA;AACvB,UAAM,CAACG,QAAQC,SAAAA,IAAaC,SAAAA;AAC5B,UAAMC,QAAQC,cAAcN,OAAOE,MAAAA;AACnC,UAAM,EAAEK,MAAK,IAAKC,gBAAAA;AAElB,UAAMC,UAAUC,QAAQ,MAAM,IAAIC,aAAAA,GAAgB,CAAA,CAAE;AACpD,UAAMC,eAAeC,YAAuD,CAACC,UAAAA;AAC3EX,gBAAUM,QAAQM,MAAMD,KAAAA,CAAAA;IAC1B,GAAG,CAAA,CAAE;AAEL,UAAME,cAAclB,SAAS;AAE7B,QAAI,CAACE,SAAS,CAACK,OAAO;AACpB,aAAO;IACT;AAEA,WACE,sBAAA,cAACY,UAAUC,SAAO;MAACC,SAASH;OACzBA,eACC,sBAAA,cAACI,QAAQC,MAAI,MACX,sBAAA,cAACC,aAAAA;MAAYC,IAAIvB,MAAMuB;MAAIC,UAAUZ;SAGzC,sBAAA,cAACa,cAAAA;MAAapB;MAAcE;;;;;AAGlC;AAEA,IAAA,4BAAeV;",
6
+ "names": ["React", "useCallback", "useMemo", "useState", "QueryBuilder", "useGlobalSearch", "getSpace", "Toolbar", "QueryEditor", "StackItem", "ExplorerContainer", "role", "view", "space", "getSpace", "filter", "setFilter", "useState", "model", "useGraphModel", "match", "useGlobalSearch", "builder", "useMemo", "QueryBuilder", "handleChange", "useCallback", "value", "build", "showToolbar", "StackItem", "Content", "toolbar", "Toolbar", "Root", "QueryEditor", "db", "onChange", "D3ForceGraph"]
7
+ }
@@ -3,7 +3,7 @@ import { createRequire } from 'node:module';const require = createRequire(import
3
3
  // src/hooks/useGraphModel.ts
4
4
  import { useEffect, useState } from "react";
5
5
  import { SpaceGraphModel } from "@dxos/schema";
6
- var useGraphModel = (space, filter, options) => {
6
+ var useGraphModel = (space, filter, options, queue) => {
7
7
  const [model, setModel] = useState(void 0);
8
8
  useEffect(() => {
9
9
  if (!space) {
@@ -11,9 +11,9 @@ var useGraphModel = (space, filter, options) => {
11
11
  setModel(void 0);
12
12
  return;
13
13
  }
14
- if (!model) {
14
+ if (!model || model.queue !== queue) {
15
15
  const model2 = new SpaceGraphModel().setFilter(filter).setOptions(options);
16
- void model2.open(space);
16
+ void model2.open(space, queue);
17
17
  setModel(model2);
18
18
  } else {
19
19
  model.setFilter(filter).setOptions(options);
@@ -21,7 +21,8 @@ var useGraphModel = (space, filter, options) => {
21
21
  }, [
22
22
  space,
23
23
  filter,
24
- options
24
+ options,
25
+ queue
25
26
  ]);
26
27
  return model;
27
28
  };
@@ -29,4 +30,4 @@ var useGraphModel = (space, filter, options) => {
29
30
  export {
30
31
  useGraphModel
31
32
  };
32
- //# sourceMappingURL=chunk-PPBUWC7F.mjs.map
33
+ //# sourceMappingURL=chunk-3ODK27PU.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
+ }
@@ -6,7 +6,7 @@ import React, { useCallback, useEffect, useMemo, useRef } from "react";
6
6
  import { Obj } from "@dxos/echo";
7
7
  import { SelectionModel } from "@dxos/graph";
8
8
  import { GraphForceProjector, SVG } from "@dxos/react-ui-graph";
9
- import { getHashColor } from "@dxos/react-ui-theme";
9
+ import { getHashStyles } from "@dxos/react-ui-theme";
10
10
  import "@dxos/react-ui-graph/styles/graph.css";
11
11
  var D3ForceGraph = ({ classNames, model, selection: _selection, grid, ...props }) => {
12
12
  var _effect = _useSignals();
@@ -71,7 +71,7 @@ var D3ForceGraph = ({ classNames, model, selection: _selection, grid, ...props }
71
71
  const obj = node.data?.data.object;
72
72
  return {
73
73
  data: {
74
- color: getHashColor(obj && Obj.getTypename(obj))?.color
74
+ color: getHashStyles(obj && Obj.getTypename(obj))?.hue
75
75
  },
76
76
  classes: {
77
77
  "dx-selected": selection.contains(node.id)
@@ -95,8 +95,30 @@ import { useResizeDetector } from "react-resize-detector";
95
95
  import { filterObjectsSync } from "@dxos/plugin-search";
96
96
 
97
97
  // src/components/Graph/adapter.ts
98
+ function _define_property(obj, key, value) {
99
+ if (key in obj) {
100
+ Object.defineProperty(obj, key, {
101
+ value,
102
+ enumerable: true,
103
+ configurable: true,
104
+ writable: true
105
+ });
106
+ } else {
107
+ obj[key] = value;
108
+ }
109
+ return obj;
110
+ }
98
111
  var GraphAdapter = class {
112
+ get nodes() {
113
+ return this._nodes;
114
+ }
115
+ get links() {
116
+ return this._links;
117
+ }
99
118
  constructor(graph) {
119
+ _define_property(this, "graph", void 0);
120
+ _define_property(this, "_nodes", void 0);
121
+ _define_property(this, "_links", void 0);
100
122
  this.graph = graph;
101
123
  this._nodes = [];
102
124
  this._links = [];
@@ -112,12 +134,6 @@ var GraphAdapter = class {
112
134
  data: edge.data
113
135
  }));
114
136
  }
115
- get nodes() {
116
- return this._nodes;
117
- }
118
- get links() {
119
- return this._links;
120
- }
121
137
  };
122
138
 
123
139
  // src/components/Graph/ForceGraph.tsx
@@ -128,8 +144,8 @@ var ForceGraph = ({ model, match }) => {
128
144
  refreshRate: 200
129
145
  });
130
146
  const rootRef = useRef2(null);
131
- const forceGraph = useRef2();
132
- const filteredRef = useRef2();
147
+ const forceGraph = useRef2(null);
148
+ const filteredRef = useRef2([]);
133
149
  filteredRef.current = filterObjectsSync(model?.objects ?? [], match);
134
150
  const [data, setData] = useState();
135
151
  useEffect2(() => {
@@ -148,7 +164,7 @@ var ForceGraph = ({ model, match }) => {
148
164
  nodes: [],
149
165
  links: []
150
166
  });
151
- forceGraph.current = void 0;
167
+ forceGraph.current = null;
152
168
  };
153
169
  }, []);
154
170
  useEffect2(() => {
@@ -186,4 +202,4 @@ export {
186
202
  D3ForceGraph,
187
203
  ForceGraph
188
204
  };
189
- //# sourceMappingURL=chunk-4VMSNXYL.mjs.map
205
+ //# sourceMappingURL=chunk-6JACZE7E.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 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, { 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 { getHashStyles } 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 = ({ classNames, model, selection: _selection, grid, ...props }: D3ForceGraphProps) => {\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: getHashStyles(obj && Obj.getTypename(obj))?.hue,\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>(null);\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 = null;\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", "getHashStyles", "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", "getHashStyles", "Obj", "getTypename", "hue", "classes", "onSelect", "forceLink", "forceManyBody", "NativeForceGraph", "React", "useEffect", "useRef", "useState", "useResizeDetector", "filterObjectsSync", "GraphAdapter", "nodes", "_nodes", "links", "_links", "graph", "map", "node", "id", "type", "data", "edges", "edge", "source", "target", "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", "onEngineStop", "handleZoomToFit", "onNodeClick", "emitParticle", "d3Force", "forceLink", "distance", "strength", "forceManyBody", "warmupTicks", "cooldownTime", "resumeAnimation", "zoomToFit", "React", "div", "className", "onClick"]
7
+ }
@@ -0,0 +1,80 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ meta
4
+ } from "./chunk-PX6LHR2N.mjs";
5
+ import {
6
+ __export
7
+ } from "./chunk-HSLMI22Q.mjs";
8
+
9
+ // src/types/ExplorerAction.ts
10
+ var ExplorerAction_exports = {};
11
+ __export(ExplorerAction_exports, {
12
+ CreateGraph: () => CreateGraph,
13
+ GraphProps: () => GraphProps
14
+ });
15
+ import * as Schema from "effect/Schema";
16
+ import { SpaceSchema } from "@dxos/react-client/echo";
17
+ import { DataType, TypenameAnnotationId } from "@dxos/schema";
18
+ var EXPLORER_ACTION = `${meta.id}/action`;
19
+ var GraphProps = Schema.Struct({
20
+ name: Schema.optional(Schema.String),
21
+ typename: Schema.String.annotations({
22
+ [TypenameAnnotationId]: [
23
+ "used-static",
24
+ "dynamic"
25
+ ],
26
+ title: "Select graph record type"
27
+ })
28
+ });
29
+ var CreateGraph = class extends Schema.TaggedClass()(`${EXPLORER_ACTION}/create-graph`, {
30
+ input: Schema.Struct({
31
+ space: SpaceSchema
32
+ }).pipe(Schema.extend(GraphProps)),
33
+ output: Schema.Struct({
34
+ object: DataType.View
35
+ })
36
+ }) {
37
+ };
38
+
39
+ // src/types/Graph.ts
40
+ var Graph_exports = {};
41
+ __export(Graph_exports, {
42
+ Graph: () => Graph,
43
+ make: () => make,
44
+ makeView: () => makeView
45
+ });
46
+ import * as Schema2 from "effect/Schema";
47
+ import { Filter, Obj, Query, QueryAST, Type } from "@dxos/echo";
48
+ import { LabelAnnotation, ViewAnnotation } from "@dxos/echo/internal";
49
+ import { createViewFromSpace } from "@dxos/schema";
50
+ var Graph = Schema2.Struct({
51
+ name: Schema2.optional(Schema2.String),
52
+ query: Schema2.Struct({
53
+ raw: Schema2.optional(Schema2.String),
54
+ ast: QueryAST.Query
55
+ }).pipe(Schema2.mutable)
56
+ }).pipe(Type.Obj({
57
+ typename: "dxos.org/type/Graph",
58
+ version: "0.1.0"
59
+ }), LabelAnnotation.set([
60
+ "name"
61
+ ]), ViewAnnotation.set(true));
62
+ var make = (props = {
63
+ query: {
64
+ raw: "",
65
+ ast: Query.select(Filter.nothing()).ast
66
+ }
67
+ }) => Obj.make(Graph, props);
68
+ var makeView = async ({ presentation, ...props }) => {
69
+ const graph = make(presentation);
70
+ return createViewFromSpace({
71
+ ...props,
72
+ presentation: graph
73
+ });
74
+ };
75
+
76
+ export {
77
+ ExplorerAction_exports,
78
+ Graph_exports
79
+ };
80
+ //# sourceMappingURL=chunk-ES6AOMCY.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/types/ExplorerAction.ts", "../../../src/types/Graph.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { SpaceSchema } from '@dxos/react-client/echo';\nimport { DataType, TypenameAnnotationId } from '@dxos/schema';\n\nimport { meta } from '../meta';\n\nconst EXPLORER_ACTION = `${meta.id}/action`;\n\nexport const GraphProps = Schema.Struct({\n name: Schema.optional(Schema.String),\n typename: Schema.String.annotations({\n [TypenameAnnotationId]: ['used-static', 'dynamic'],\n title: 'Select graph record type',\n }),\n});\n\nexport class CreateGraph extends Schema.TaggedClass<CreateGraph>()(`${EXPLORER_ACTION}/create-graph`, {\n input: Schema.Struct({\n space: SpaceSchema,\n }).pipe(Schema.extend(GraphProps)),\n output: Schema.Struct({\n object: DataType.View,\n }),\n}) {}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { Filter, Obj, Query, QueryAST, Type } from '@dxos/echo';\nimport { LabelAnnotation, ViewAnnotation } from '@dxos/echo/internal';\nimport { type CreateViewFromSpaceProps, createViewFromSpace } from '@dxos/schema';\n\nexport const Graph = Schema.Struct({\n name: Schema.optional(Schema.String),\n query: Schema.Struct({\n raw: Schema.optional(Schema.String),\n ast: QueryAST.Query,\n }).pipe(Schema.mutable),\n}).pipe(\n Type.Obj({\n typename: 'dxos.org/type/Graph',\n version: '0.1.0',\n }),\n LabelAnnotation.set(['name']),\n ViewAnnotation.set(true),\n);\n\nexport type Graph = Schema.Schema.Type<typeof Graph>;\n\n/**\n * Make a graph object.\n */\nexport const make = (\n props: Obj.MakeProps<typeof Graph> = { query: { raw: '', ast: Query.select(Filter.nothing()).ast } },\n) => Obj.make(Graph, props);\n\ntype MakeViewProps = Omit<CreateViewFromSpaceProps, 'presentation'> & {\n presentation?: Omit<Obj.MakeProps<typeof Graph>, 'name'>;\n};\n\n/**\n * Make a graph as a view of a data set.\n */\nexport const makeView = async ({ presentation, ...props }: MakeViewProps) => {\n const graph = make(presentation);\n return createViewFromSpace({ ...props, presentation: graph });\n};\n"],
5
+ "mappings": ";;;;;;;;;AAAA;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,mBAAmB;AAC5B,SAASC,UAAUC,4BAA4B;AAI/C,IAAMC,kBAAkB,GAAGC,KAAKC,EAAE;AAE3B,IAAMC,aAAoBC,cAAO;EACtCC,MAAaC,gBAAgBC,aAAM;EACnCC,UAAiBD,cAAOE,YAAY;IAClC,CAACC,oBAAAA,GAAuB;MAAC;MAAe;;IACxCC,OAAO;EACT,CAAA;AACF,CAAA;AAEO,IAAMC,cAAN,cAAiCC,mBAAW,EAAgB,GAAGb,eAAAA,iBAAgC;EACpGc,OAAcV,cAAO;IACnBW,OAAOC;EACT,CAAA,EAAGC,KAAYC,cAAOf,UAAAA,CAAAA;EACtBgB,QAAef,cAAO;IACpBgB,QAAQC,SAASC;EACnB,CAAA;AACF,CAAA,EAAA;AAAI;;;AC5BJ;;;;;;AAIA,YAAYC,aAAY;AAExB,SAASC,QAAQC,KAAKC,OAAOC,UAAUC,YAAY;AACnD,SAASC,iBAAiBC,sBAAsB;AAChD,SAAwCC,2BAA2B;AAE5D,IAAMC,QAAeC,eAAO;EACjCC,MAAaC,iBAAgBC,cAAM;EACnCC,OAAcJ,eAAO;IACnBK,KAAYH,iBAAgBC,cAAM;IAClCG,KAAKC,SAASC;EAChB,CAAA,EAAGC,KAAYC,eAAO;AACxB,CAAA,EAAGD,KACDE,KAAKC,IAAI;EACPC,UAAU;EACVC,SAAS;AACX,CAAA,GACAC,gBAAgBC,IAAI;EAAC;CAAO,GAC5BC,eAAeD,IAAI,IAAA,CAAA;AAQd,IAAME,OAAO,CAClBC,QAAqC;EAAEf,OAAO;IAAEC,KAAK;IAAIC,KAAKE,MAAMY,OAAOC,OAAOC,QAAO,CAAA,EAAIhB;EAAI;AAAE,MAChGM,IAAIM,KAAKnB,OAAOoB,KAAAA;AASd,IAAMI,WAAW,OAAO,EAAEC,cAAc,GAAGL,MAAAA,MAAsB;AACtE,QAAMM,QAAQP,KAAKM,YAAAA;AACnB,SAAOE,oBAAoB;IAAE,GAAGP;IAAOK,cAAcC;EAAM,CAAA;AAC7D;",
6
+ "names": ["Schema", "SpaceSchema", "DataType", "TypenameAnnotationId", "EXPLORER_ACTION", "meta", "id", "GraphProps", "Struct", "name", "optional", "String", "typename", "annotations", "TypenameAnnotationId", "title", "CreateGraph", "TaggedClass", "input", "space", "SpaceSchema", "pipe", "extend", "output", "object", "DataType", "View", "Schema", "Filter", "Obj", "Query", "QueryAST", "Type", "LabelAnnotation", "ViewAnnotation", "createViewFromSpace", "Graph", "Struct", "name", "optional", "String", "query", "raw", "ast", "QueryAST", "Query", "pipe", "mutable", "Type", "Obj", "typename", "version", "LabelAnnotation", "set", "ViewAnnotation", "make", "props", "select", "Filter", "nothing", "makeView", "presentation", "graph", "createViewFromSpace"]
7
+ }
@@ -0,0 +1,11 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ var __defProp = Object.defineProperty;
3
+ var __export = (target, all) => {
4
+ for (var name in all)
5
+ __defProp(target, name, { get: all[name], enumerable: true });
6
+ };
7
+
8
+ export {
9
+ __export
10
+ };
11
+ //# sourceMappingURL=chunk-HSLMI22Q.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -1,9 +1,8 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
 
3
3
  // src/meta.ts
4
- var EXPLORER_PLUGIN = "dxos.org/plugin/explorer";
5
4
  var meta = {
6
- id: EXPLORER_PLUGIN,
5
+ id: "dxos.org/plugin/explorer",
7
6
  name: "Explorer",
8
7
  description: "Install this plugin to view a hypergraph of all objects inside of your Space.",
9
8
  icon: "ph--graph--regular",
@@ -17,7 +16,6 @@ var meta = {
17
16
  };
18
17
 
19
18
  export {
20
- EXPLORER_PLUGIN,
21
19
  meta
22
20
  };
23
- //# sourceMappingURL=chunk-PIAXA43R.mjs.map
21
+ //# sourceMappingURL=chunk-PX6LHR2N.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/meta.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const meta: PluginMeta = {\n id: 'dxos.org/plugin/explorer',\n name: 'Explorer',\n description: 'Install this plugin to view a hypergraph of all objects inside of your Space.',\n icon: 'ph--graph--regular',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-explorer',\n tags: ['labs'],\n screenshots: ['https://dxos.network/plugin-details-explorer-dark.png'],\n};\n"],
5
+ "mappings": ";;;AAMO,IAAMA,OAAmB;EAC9BC,IAAI;EACJC,MAAM;EACNC,aAAa;EACbC,MAAM;EACNC,QAAQ;EACRC,MAAM;IAAC;;EACPC,aAAa;IAAC;;AAChB;",
6
+ "names": ["meta", "id", "name", "description", "icon", "source", "tags", "screenshots"]
7
+ }
@@ -1,3 +1,5 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+
1
3
  // src/components/Chart/Chart.tsx
2
4
  import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
3
5
  import * as Plot from "@observablehq/plot";
@@ -10973,9 +10975,22 @@ var TidyTree = (s, data, options) => {
10973
10975
  var TidyTree_default = TidyTree;
10974
10976
 
10975
10977
  // src/components/Tree/types/tree.ts
10976
- import { Schema } from "effect";
10978
+ import * as Schema from "effect/Schema";
10977
10979
  import { Key, Obj, Type } from "@dxos/echo";
10978
10980
  import { invariant } from "@dxos/invariant";
10981
+ function _define_property(obj, key, value) {
10982
+ if (key in obj) {
10983
+ Object.defineProperty(obj, key, {
10984
+ value,
10985
+ enumerable: true,
10986
+ configurable: true,
10987
+ writable: true
10988
+ });
10989
+ } else {
10990
+ obj[key] = value;
10991
+ }
10992
+ return obj;
10993
+ }
10979
10994
  var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-explorer/src/components/Tree/types/tree.ts";
10980
10995
  var TreeNodeType = Schema.Struct({
10981
10996
  id: Key.ObjectId,
@@ -10997,26 +11012,6 @@ var TreeType = Schema.Struct({
10997
11012
  version: "0.1.0"
10998
11013
  }));
10999
11014
  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
11015
  get tree() {
11021
11016
  return this._tree;
11022
11017
  }
@@ -11234,7 +11229,26 @@ var Tree = class _Tree {
11234
11229
  ancestor.children.splice(parentIdx + 1, 0, node.id);
11235
11230
  node.children.push(...rest);
11236
11231
  }
11232
+ constructor(tree3) {
11233
+ _define_property(this, "_tree", void 0);
11234
+ this._tree = tree3 ?? _Tree.create();
11235
+ }
11237
11236
  };
11237
+ _define_property(Tree, "create", () => {
11238
+ const id = Key.ObjectId.random();
11239
+ return Obj.make(TreeType, {
11240
+ root: id,
11241
+ nodes: {
11242
+ [id]: {
11243
+ id,
11244
+ children: [],
11245
+ data: {
11246
+ text: ""
11247
+ }
11248
+ }
11249
+ }
11250
+ });
11251
+ });
11238
11252
 
11239
11253
  // src/components/Tree/types/types.ts
11240
11254
  var mapGraphToTreeData = (model, maxDepth = 8) => {
@@ -11280,7 +11294,7 @@ var Tree2 = ({ space, selected, variant = "tidy", onNodeClick }) => {
11280
11294
  ]);
11281
11295
  const context = useRef(null);
11282
11296
  useEffect3(() => {
11283
- if (context.current) {
11297
+ if (context.current?.size) {
11284
11298
  const { width, height } = context.current.size;
11285
11299
  const size = Math.min(width, height);
11286
11300
  const radius = size * 0.4;
@@ -11317,7 +11331,7 @@ var Tree2 = ({ space, selected, variant = "tidy", onNodeClick }) => {
11317
11331
 
11318
11332
  // src/components/index.ts
11319
11333
  import { lazy } from "react";
11320
- var ExplorerContainer = lazy(() => import("./ExplorerContainer-OGHSHZD5.mjs"));
11334
+ var ExplorerContainer = lazy(() => import("./ExplorerContainer-FRTDXZI5.mjs"));
11321
11335
 
11322
11336
  export {
11323
11337
  Chart,
@@ -11326,4 +11340,4 @@ export {
11326
11340
  Tree2 as Tree,
11327
11341
  ExplorerContainer
11328
11342
  };
11329
- //# sourceMappingURL=chunk-PVFZFKQ6.mjs.map
11343
+ //# sourceMappingURL=chunk-ZCV4U7LT.mjs.map