@dxos/plugin-explorer 0.8.3-main.672df60 → 0.8.3-staging.0fa589b

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 (73) hide show
  1. package/dist/lib/browser/{ExplorerContainer-BBZ54DJS.mjs → ExplorerContainer-DXL34I3F.mjs} +6 -6
  2. package/dist/lib/browser/ExplorerContainer-DXL34I3F.mjs.map +7 -0
  3. package/dist/lib/browser/{chunk-73GQ46YO.mjs → chunk-JRKQNHS6.mjs} +14 -16
  4. package/dist/lib/browser/{chunk-73GQ46YO.mjs.map → chunk-JRKQNHS6.mjs.map} +3 -3
  5. package/dist/lib/browser/{chunk-M2BGAY6H.mjs → chunk-Z5BGAHLD.mjs} +22 -12
  6. package/dist/lib/browser/chunk-Z5BGAHLD.mjs.map +7 -0
  7. package/dist/lib/browser/index.mjs +9 -5
  8. package/dist/lib/browser/index.mjs.map +3 -3
  9. package/dist/lib/browser/{intent-resolver-FJDVBDE3.mjs → intent-resolver-JZKYVFQJ.mjs} +3 -3
  10. package/dist/lib/browser/intent-resolver-JZKYVFQJ.mjs.map +7 -0
  11. package/dist/lib/browser/meta.json +1 -1
  12. package/dist/lib/browser/{react-surface-H3YDMXAQ.mjs → react-surface-IAEP2GBT.mjs} +5 -5
  13. package/dist/lib/browser/react-surface-IAEP2GBT.mjs.map +7 -0
  14. package/dist/lib/node/{ExplorerContainer-MVP2AM7R.cjs → ExplorerContainer-VUXH55VV.cjs} +8 -8
  15. package/dist/lib/node/ExplorerContainer-VUXH55VV.cjs.map +7 -0
  16. package/dist/lib/node/{chunk-72H5HBTK.cjs → chunk-SVU4VMYX.cjs} +16 -18
  17. package/dist/lib/node/{chunk-72H5HBTK.cjs.map → chunk-SVU4VMYX.cjs.map} +3 -3
  18. package/dist/lib/node/{chunk-NELWWGBU.cjs → chunk-TY543HPV.cjs} +24 -14
  19. package/dist/lib/node/chunk-TY543HPV.cjs.map +7 -0
  20. package/dist/lib/node/index.cjs +16 -12
  21. package/dist/lib/node/index.cjs.map +3 -3
  22. package/dist/lib/node/{intent-resolver-DRT67ZU4.cjs → intent-resolver-G2MFNIXA.cjs} +6 -6
  23. package/dist/lib/node/intent-resolver-G2MFNIXA.cjs.map +7 -0
  24. package/dist/lib/node/meta.json +1 -1
  25. package/dist/lib/node/{react-surface-6ESLSM33.cjs → react-surface-UJD5RGRZ.cjs} +9 -9
  26. package/dist/lib/node/react-surface-UJD5RGRZ.cjs.map +7 -0
  27. package/dist/lib/node-esm/{ExplorerContainer-APGUQI4M.mjs → ExplorerContainer-MFE7PXF4.mjs} +6 -6
  28. package/dist/lib/node-esm/ExplorerContainer-MFE7PXF4.mjs.map +7 -0
  29. package/dist/lib/node-esm/{chunk-PVII2K2B.mjs → chunk-AE7VHUJM.mjs} +22 -12
  30. package/dist/lib/node-esm/chunk-AE7VHUJM.mjs.map +7 -0
  31. package/dist/lib/node-esm/{chunk-34X2VFQN.mjs → chunk-IUFYOE44.mjs} +14 -16
  32. package/dist/lib/node-esm/{chunk-34X2VFQN.mjs.map → chunk-IUFYOE44.mjs.map} +3 -3
  33. package/dist/lib/node-esm/index.mjs +9 -5
  34. package/dist/lib/node-esm/index.mjs.map +3 -3
  35. package/dist/lib/node-esm/{intent-resolver-4RBV644N.mjs → intent-resolver-7G6ZKM6E.mjs} +3 -3
  36. package/dist/lib/node-esm/intent-resolver-7G6ZKM6E.mjs.map +7 -0
  37. package/dist/lib/node-esm/meta.json +1 -1
  38. package/dist/lib/node-esm/{react-surface-ZEVL3FXG.mjs → react-surface-XBH3WZDL.mjs} +5 -5
  39. package/dist/lib/node-esm/react-surface-XBH3WZDL.mjs.map +7 -0
  40. package/dist/types/src/components/Graph/ForceGraph.d.ts.map +1 -1
  41. package/dist/types/src/components/Graph/adapter.d.ts +3 -0
  42. package/dist/types/src/components/Graph/adapter.d.ts.map +1 -1
  43. package/dist/types/src/components/Graph/testing.d.ts.map +1 -1
  44. package/dist/types/src/components/Tree/types/tree.d.ts +14 -9
  45. package/dist/types/src/components/Tree/types/tree.d.ts.map +1 -1
  46. package/dist/types/src/translations.d.ts +14 -2
  47. package/dist/types/src/translations.d.ts.map +1 -1
  48. package/package.json +27 -26
  49. package/src/capabilities/intent-resolver.ts +2 -2
  50. package/src/capabilities/react-surface.tsx +2 -2
  51. package/src/components/ExplorerContainer.tsx +4 -4
  52. package/src/components/Graph/D3ForceGraph.stories.tsx +2 -2
  53. package/src/components/Graph/D3ForceGraph.tsx +2 -2
  54. package/src/components/Graph/ForceGraph.stories.tsx +2 -2
  55. package/src/components/Graph/ForceGraph.tsx +33 -24
  56. package/src/components/Graph/adapter.ts +3 -0
  57. package/src/components/Graph/testing.ts +12 -14
  58. package/src/components/Tree/testing/generator.ts +2 -2
  59. package/src/components/Tree/types/tree.test.ts +3 -3
  60. package/src/components/Tree/types/tree.ts +12 -14
  61. package/src/translations.ts +6 -1
  62. package/dist/lib/browser/ExplorerContainer-BBZ54DJS.mjs.map +0 -7
  63. package/dist/lib/browser/chunk-M2BGAY6H.mjs.map +0 -7
  64. package/dist/lib/browser/intent-resolver-FJDVBDE3.mjs.map +0 -7
  65. package/dist/lib/browser/react-surface-H3YDMXAQ.mjs.map +0 -7
  66. package/dist/lib/node/ExplorerContainer-MVP2AM7R.cjs.map +0 -7
  67. package/dist/lib/node/chunk-NELWWGBU.cjs.map +0 -7
  68. package/dist/lib/node/intent-resolver-DRT67ZU4.cjs.map +0 -7
  69. package/dist/lib/node/react-surface-6ESLSM33.cjs.map +0 -7
  70. package/dist/lib/node-esm/ExplorerContainer-APGUQI4M.mjs.map +0 -7
  71. package/dist/lib/node-esm/chunk-PVII2K2B.mjs.map +0 -7
  72. package/dist/lib/node-esm/intent-resolver-4RBV644N.mjs.map +0 -7
  73. package/dist/lib/node-esm/react-surface-ZEVL3FXG.mjs.map +0 -7
@@ -3,7 +3,7 @@ import { createRequire } from 'node:module';const require = createRequire(import
3
3
  // packages/plugins/plugin-explorer/src/components/Graph/D3ForceGraph.tsx
4
4
  import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
5
5
  import React, { useCallback, useEffect, useMemo, useRef } from "react";
6
- import { getTypename } from "@dxos/echo-schema";
6
+ import { Obj } from "@dxos/echo";
7
7
  import { SelectionModel } from "@dxos/graph";
8
8
  import { GraphForceProjector, SVG } from "@dxos/react-ui-graph";
9
9
  import { getHashColor } from "@dxos/react-ui-theme";
@@ -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 && getTypename(obj))?.color
74
+ color: getHashColor(obj && Obj.getTypename(obj))?.color
75
75
  },
76
76
  classes: {
77
77
  "dx-selected": selection.contains(node.id)
@@ -90,7 +90,7 @@ var D3ForceGraph = ({ classNames, model, selection: _selection, grid, ...props }
90
90
  import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
91
91
  import { forceLink, forceManyBody } from "d3";
92
92
  import NativeForceGraph from "force-graph";
93
- import React2, { useEffect as useEffect2, useRef as useRef2 } from "react";
93
+ import React2, { useEffect as useEffect2, useRef as useRef2, useState } from "react";
94
94
  import { useResizeDetector } from "react-resize-detector";
95
95
  import { filterObjectsSync } from "@dxos/plugin-search";
96
96
 
@@ -131,6 +131,14 @@ var ForceGraph = ({ model, match }) => {
131
131
  const forceGraph = useRef2();
132
132
  const filteredRef = useRef2();
133
133
  filteredRef.current = filterObjectsSync(model?.objects ?? [], match);
134
+ const [data, setData] = useState();
135
+ useEffect2(() => {
136
+ return model?.subscribe((model2) => {
137
+ setData(new GraphAdapter(model2.graph));
138
+ });
139
+ }, [
140
+ model
141
+ ]);
134
142
  useEffect2(() => {
135
143
  if (rootRef.current) {
136
144
  forceGraph.current = new NativeForceGraph(rootRef.current).nodeRelSize(6).nodeLabel((node) => node.type === "schema" ? node.data.typename : node.data.label ?? node.id).nodeAutoColorBy((node) => node.type === "schema" ? "schema" : node.data.typename).linkAutoColorBy((link) => link.type);
@@ -144,17 +152,19 @@ var ForceGraph = ({ model, match }) => {
144
152
  };
145
153
  }, []);
146
154
  useEffect2(() => {
147
- if (forceGraph.current && width && height && model) {
148
- forceGraph.current.pauseAnimation().width(width).height(height).onEngineStop(() => {
149
- handleZoomToFit();
150
- }).onNodeClick((node) => {
151
- forceGraph.current?.emitParticle(node);
152
- }).d3Force("link", forceLink().distance(160).strength(0.5)).d3Force("charge", forceManyBody().strength(-30)).graphData(new GraphAdapter(model)).warmupTicks(100).cooldownTime(1e3).resumeAnimation();
155
+ if (!data || !width || !height || !forceGraph.current) {
156
+ return;
153
157
  }
158
+ forceGraph.current.pauseAnimation().width(width).height(height).onEngineStop(() => {
159
+ handleZoomToFit();
160
+ }).onNodeClick((node) => {
161
+ forceGraph.current?.emitParticle(node);
162
+ }).d3Force("link", forceLink().distance(160).strength(0.5)).d3Force("charge", forceManyBody().strength(-30)).graphData(data).warmupTicks(100).cooldownTime(1e3).resumeAnimation();
154
163
  }, [
155
- model,
164
+ data,
156
165
  width,
157
- height
166
+ height,
167
+ forceGraph.current
158
168
  ]);
159
169
  const handleZoomToFit = () => {
160
170
  forceGraph.current?.zoomToFit(400, 40);
@@ -176,4 +186,4 @@ export {
176
186
  D3ForceGraph,
177
187
  ForceGraph
178
188
  };
179
- //# sourceMappingURL=chunk-PVII2K2B.mjs.map
189
+ //# sourceMappingURL=chunk-AE7VHUJM.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, { 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 SpaceGraphNode, type SpaceGraphModel, type SpaceGraphEdge } 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 { filterObjectsSync, type SearchResult } 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", "graph", "_nodes", "_links", "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
+ }
@@ -10976,24 +10976,22 @@ var TidyTree_default = TidyTree;
10976
10976
 
10977
10977
  // packages/plugins/plugin-explorer/src/components/Tree/types/tree.ts
10978
10978
  import { Schema } from "effect";
10979
- import { Type } from "@dxos/echo";
10980
- import { ObjectId, Ref, Expando } from "@dxos/echo-schema";
10979
+ import { Key, Obj, Type } from "@dxos/echo";
10981
10980
  import { invariant } from "@dxos/invariant";
10982
- import { live } from "@dxos/live-object";
10983
10981
  var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-explorer/src/components/Tree/types/tree.ts";
10984
10982
  var TreeNodeType = Schema.Struct({
10985
- id: ObjectId,
10986
- children: Schema.mutable(Schema.Array(ObjectId)),
10983
+ id: Key.ObjectId,
10984
+ children: Schema.mutable(Schema.Array(Key.ObjectId)),
10987
10985
  data: Schema.mutable(Schema.Record({
10988
10986
  key: Schema.String,
10989
10987
  value: Schema.Any
10990
10988
  })),
10991
- ref: Schema.optional(Ref(Expando))
10989
+ ref: Schema.optional(Type.Ref(Type.Expando))
10992
10990
  }).pipe(Schema.mutable);
10993
10991
  var TreeType = Schema.Struct({
10994
- root: ObjectId,
10992
+ root: Key.ObjectId,
10995
10993
  nodes: Schema.mutable(Schema.Record({
10996
- key: ObjectId,
10994
+ key: Key.ObjectId,
10997
10995
  value: TreeNodeType
10998
10996
  }))
10999
10997
  }).pipe(Type.Obj({
@@ -11003,8 +11001,8 @@ var TreeType = Schema.Struct({
11003
11001
  var Tree = class _Tree {
11004
11002
  static {
11005
11003
  this.create = () => {
11006
- const id = ObjectId.random();
11007
- return live(TreeType, {
11004
+ const id = Key.ObjectId.random();
11005
+ return Obj.make(TreeType, {
11008
11006
  root: id,
11009
11007
  nodes: {
11010
11008
  [id]: {
@@ -11054,7 +11052,7 @@ var Tree = class _Tree {
11054
11052
  const node = this._tree.nodes[id];
11055
11053
  invariant(node, void 0, {
11056
11054
  F: __dxlog_file,
11057
- L: 100,
11055
+ L: 98,
11058
11056
  S: this,
11059
11057
  A: [
11060
11058
  "node",
@@ -11145,7 +11143,7 @@ var Tree = class _Tree {
11145
11143
  */
11146
11144
  addNode(parent, node, index) {
11147
11145
  if (!node) {
11148
- const id = ObjectId.random();
11146
+ const id = Key.ObjectId.random();
11149
11147
  node = {
11150
11148
  id,
11151
11149
  children: [],
@@ -11179,7 +11177,7 @@ var Tree = class _Tree {
11179
11177
  moveNode(node, from, to) {
11180
11178
  invariant(from >= 0 && from < node.children.length, void 0, {
11181
11179
  F: __dxlog_file,
11182
- L: 230,
11180
+ L: 228,
11183
11181
  S: this,
11184
11182
  A: [
11185
11183
  "from >= 0 && from < node.children.length",
@@ -11188,7 +11186,7 @@ var Tree = class _Tree {
11188
11186
  });
11189
11187
  invariant(to >= 0 && to < node.children.length, void 0, {
11190
11188
  F: __dxlog_file,
11191
- L: 231,
11189
+ L: 229,
11192
11190
  S: this,
11193
11191
  A: [
11194
11192
  "to >= 0 && to < node.children.length",
@@ -11321,7 +11319,7 @@ var Tree2 = ({ space, selected, variant = "tidy", onNodeClick }) => {
11321
11319
 
11322
11320
  // packages/plugins/plugin-explorer/src/components/index.ts
11323
11321
  import { lazy } from "react";
11324
- var ExplorerContainer = lazy(() => import("./ExplorerContainer-APGUQI4M.mjs"));
11322
+ var ExplorerContainer = lazy(() => import("./ExplorerContainer-MFE7PXF4.mjs"));
11325
11323
 
11326
11324
  export {
11327
11325
  Chart,
@@ -11330,4 +11328,4 @@ export {
11330
11328
  Tree2 as Tree,
11331
11329
  ExplorerContainer
11332
11330
  };
11333
- //# sourceMappingURL=chunk-34X2VFQN.mjs.map
11331
+ //# sourceMappingURL=chunk-IUFYOE44.mjs.map