@dxos/plugin-explorer 0.8.4-main.5ea62a8 → 0.8.4-main.ae835ea

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 (122) hide show
  1. package/dist/lib/browser/ExplorerContainer-L5RVUJRL.mjs +50 -0
  2. package/dist/lib/browser/ExplorerContainer-L5RVUJRL.mjs.map +7 -0
  3. package/dist/lib/browser/{chunk-3YITRGGW.mjs → chunk-6BVXZQPP.mjs} +15 -30
  4. package/dist/lib/browser/chunk-6BVXZQPP.mjs.map +7 -0
  5. package/dist/lib/browser/chunk-BGNRYZUN.mjs +79 -0
  6. package/dist/lib/browser/chunk-BGNRYZUN.mjs.map +7 -0
  7. package/dist/lib/browser/{chunk-VNOGW2JS.mjs → chunk-CRN65FY3.mjs} +6 -258
  8. package/dist/lib/browser/{chunk-VNOGW2JS.mjs.map → chunk-CRN65FY3.mjs.map} +3 -3
  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/browser/chunk-UBHZGWZQ.mjs +24 -0
  12. package/dist/lib/browser/chunk-UBHZGWZQ.mjs.map +7 -0
  13. package/dist/lib/browser/index.mjs +25 -18
  14. package/dist/lib/browser/index.mjs.map +3 -3
  15. package/dist/lib/browser/intent-resolver-FX5H52QN.mjs +31 -0
  16. package/dist/lib/browser/intent-resolver-FX5H52QN.mjs.map +7 -0
  17. package/dist/lib/browser/meta.json +1 -1
  18. package/dist/lib/browser/meta.mjs +2 -3
  19. package/dist/lib/browser/react-surface-VS3ZFL2Y.mjs +35 -0
  20. package/dist/lib/browser/react-surface-VS3ZFL2Y.mjs.map +7 -0
  21. package/dist/lib/browser/types/index.mjs +7 -6
  22. package/dist/lib/node-esm/{ExplorerContainer-OBSRVHZZ.mjs → ExplorerContainer-BBLPHH7K.mjs} +19 -6
  23. package/dist/lib/node-esm/ExplorerContainer-BBLPHH7K.mjs.map +7 -0
  24. package/dist/lib/node-esm/{chunk-GFYXDQQV.mjs → chunk-CRSVAZNA.mjs} +15 -30
  25. package/dist/lib/node-esm/chunk-CRSVAZNA.mjs.map +7 -0
  26. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  27. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
  28. package/dist/lib/node-esm/{chunk-ODMJ7DPA.mjs → chunk-RSZFBKZM.mjs} +6 -258
  29. package/dist/lib/node-esm/{chunk-ODMJ7DPA.mjs.map → chunk-RSZFBKZM.mjs.map} +3 -3
  30. package/dist/lib/node-esm/chunk-TQESRBUJ.mjs +80 -0
  31. package/dist/lib/node-esm/chunk-TQESRBUJ.mjs.map +7 -0
  32. package/dist/lib/node-esm/{chunk-PIAXA43R.mjs → chunk-UXZM5VJB.mjs} +8 -5
  33. package/dist/lib/node-esm/chunk-UXZM5VJB.mjs.map +7 -0
  34. package/dist/lib/node-esm/index.mjs +25 -18
  35. package/dist/lib/node-esm/index.mjs.map +3 -3
  36. package/dist/lib/node-esm/intent-resolver-RGBBXXYM.mjs +32 -0
  37. package/dist/lib/node-esm/intent-resolver-RGBBXXYM.mjs.map +7 -0
  38. package/dist/lib/node-esm/meta.json +1 -1
  39. package/dist/lib/node-esm/meta.mjs +2 -3
  40. package/dist/lib/node-esm/react-surface-SXPT2T37.mjs +36 -0
  41. package/dist/lib/node-esm/react-surface-SXPT2T37.mjs.map +7 -0
  42. package/dist/lib/node-esm/types/index.mjs +7 -6
  43. package/dist/types/src/ExplorerPlugin.d.ts +1 -1
  44. package/dist/types/src/ExplorerPlugin.d.ts.map +1 -1
  45. package/dist/types/src/capabilities/index.d.ts +1 -1
  46. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  47. package/dist/types/src/capabilities/intent-resolver.d.ts +2 -2
  48. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  49. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  50. package/dist/types/src/components/Chart/Chart.stories.d.ts +3 -1
  51. package/dist/types/src/components/Chart/Chart.stories.d.ts.map +1 -1
  52. package/dist/types/src/components/ExplorerContainer.d.ts +2 -2
  53. package/dist/types/src/components/ExplorerContainer.d.ts.map +1 -1
  54. package/dist/types/src/components/Globe/Globe.stories.d.ts +3 -1
  55. package/dist/types/src/components/Globe/Globe.stories.d.ts.map +1 -1
  56. package/dist/types/src/components/Graph/D3ForceGraph.d.ts +2 -2
  57. package/dist/types/src/components/Graph/D3ForceGraph.d.ts.map +1 -1
  58. package/dist/types/src/components/Graph/D3ForceGraph.stories.d.ts +5 -10
  59. package/dist/types/src/components/Graph/D3ForceGraph.stories.d.ts.map +1 -1
  60. package/dist/types/src/components/Graph/ForceGraph.stories.d.ts +4 -2
  61. package/dist/types/src/components/Graph/ForceGraph.stories.d.ts.map +1 -1
  62. package/dist/types/src/components/Tree/Tree.stories.d.ts +0 -1
  63. package/dist/types/src/components/Tree/Tree.stories.d.ts.map +1 -1
  64. package/dist/types/src/components/Tree/types/tree.d.ts +1 -1
  65. package/dist/types/src/components/Tree/types/tree.d.ts.map +1 -1
  66. package/dist/types/src/components/index.d.ts +1 -1
  67. package/dist/types/src/meta.d.ts +0 -1
  68. package/dist/types/src/meta.d.ts.map +1 -1
  69. package/dist/types/src/translations.d.ts +14 -2
  70. package/dist/types/src/translations.d.ts.map +1 -1
  71. package/dist/types/src/types/ExplorerAction.d.ts +23 -0
  72. package/dist/types/src/types/ExplorerAction.d.ts.map +1 -0
  73. package/dist/types/src/types/Graph.d.ts +33 -0
  74. package/dist/types/src/types/Graph.d.ts.map +1 -0
  75. package/dist/types/src/types/index.d.ts +2 -2
  76. package/dist/types/src/types/index.d.ts.map +1 -1
  77. package/dist/types/tsconfig.tsbuildinfo +1 -1
  78. package/package.json +37 -36
  79. package/src/ExplorerPlugin.tsx +48 -46
  80. package/src/capabilities/intent-resolver.ts +10 -8
  81. package/src/capabilities/react-surface.tsx +9 -5
  82. package/src/components/Chart/Chart.stories.tsx +5 -4
  83. package/src/components/ExplorerContainer.tsx +22 -5
  84. package/src/components/Globe/Globe.stories.tsx +5 -4
  85. package/src/components/Graph/D3ForceGraph.stories.tsx +22 -12
  86. package/src/components/Graph/D3ForceGraph.tsx +4 -4
  87. package/src/components/Graph/ForceGraph.stories.tsx +22 -12
  88. package/src/components/Graph/ForceGraph.tsx +3 -3
  89. package/src/components/Tree/Tree.stories.tsx +2 -4
  90. package/src/components/Tree/Tree.tsx +2 -2
  91. package/src/components/Tree/types/tree.ts +1 -1
  92. package/src/meta.ts +7 -4
  93. package/src/translations.ts +4 -2
  94. package/src/types/ExplorerAction.ts +29 -0
  95. package/src/types/Graph.ts +45 -0
  96. package/src/types/index.ts +2 -2
  97. package/dist/lib/browser/ExplorerContainer-7MTDS2TQ.mjs +0 -37
  98. package/dist/lib/browser/ExplorerContainer-7MTDS2TQ.mjs.map +0 -7
  99. package/dist/lib/browser/chunk-3YITRGGW.mjs.map +0 -7
  100. package/dist/lib/browser/chunk-CZZ3DDR7.mjs +0 -38
  101. package/dist/lib/browser/chunk-CZZ3DDR7.mjs.map +0 -7
  102. package/dist/lib/browser/chunk-UL5EDJPE.mjs +0 -21
  103. package/dist/lib/browser/chunk-UL5EDJPE.mjs.map +0 -7
  104. package/dist/lib/browser/intent-resolver-7MVEYNX7.mjs +0 -24
  105. package/dist/lib/browser/intent-resolver-7MVEYNX7.mjs.map +0 -7
  106. package/dist/lib/browser/react-surface-VLGQKYBI.mjs +0 -31
  107. package/dist/lib/browser/react-surface-VLGQKYBI.mjs.map +0 -7
  108. package/dist/lib/node-esm/ExplorerContainer-OBSRVHZZ.mjs.map +0 -7
  109. package/dist/lib/node-esm/chunk-4GWDNZ4Z.mjs +0 -39
  110. package/dist/lib/node-esm/chunk-4GWDNZ4Z.mjs.map +0 -7
  111. package/dist/lib/node-esm/chunk-GFYXDQQV.mjs.map +0 -7
  112. package/dist/lib/node-esm/chunk-PIAXA43R.mjs.map +0 -7
  113. package/dist/lib/node-esm/intent-resolver-NL3SR2XF.mjs +0 -25
  114. package/dist/lib/node-esm/intent-resolver-NL3SR2XF.mjs.map +0 -7
  115. package/dist/lib/node-esm/react-surface-BYJABDS5.mjs +0 -32
  116. package/dist/lib/node-esm/react-surface-BYJABDS5.mjs.map +0 -7
  117. package/dist/types/src/types/schema.d.ts +0 -12
  118. package/dist/types/src/types/schema.d.ts.map +0 -1
  119. package/dist/types/src/types/types.d.ts +0 -18
  120. package/dist/types/src/types/types.d.ts.map +0 -1
  121. package/src/types/schema.ts +0 -16
  122. package/src/types/types.ts +0 -22
@@ -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,33 +95,12 @@ 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
- }
111
98
  var GraphAdapter = class {
112
- get nodes() {
113
- return this._nodes;
114
- }
115
- get links() {
116
- return this._links;
117
- }
99
+ graph;
100
+ _nodes = [];
101
+ _links = [];
118
102
  constructor(graph) {
119
- _define_property(this, "graph", void 0);
120
- _define_property(this, "_nodes", void 0);
121
- _define_property(this, "_links", void 0);
122
103
  this.graph = graph;
123
- this._nodes = [];
124
- this._links = [];
125
104
  this._nodes = graph.nodes.map((node) => ({
126
105
  id: node.id,
127
106
  type: node.type,
@@ -134,6 +113,12 @@ var GraphAdapter = class {
134
113
  data: edge.data
135
114
  }));
136
115
  }
116
+ get nodes() {
117
+ return this._nodes;
118
+ }
119
+ get links() {
120
+ return this._links;
121
+ }
137
122
  };
138
123
 
139
124
  // src/components/Graph/ForceGraph.tsx
@@ -144,8 +129,8 @@ var ForceGraph = ({ model, match }) => {
144
129
  refreshRate: 200
145
130
  });
146
131
  const rootRef = useRef2(null);
147
- const forceGraph = useRef2();
148
- const filteredRef = useRef2();
132
+ const forceGraph = useRef2(null);
133
+ const filteredRef = useRef2([]);
149
134
  filteredRef.current = filterObjectsSync(model?.objects ?? [], match);
150
135
  const [data, setData] = useState();
151
136
  useEffect2(() => {
@@ -164,7 +149,7 @@ var ForceGraph = ({ model, match }) => {
164
149
  nodes: [],
165
150
  links: []
166
151
  });
167
- forceGraph.current = void 0;
152
+ forceGraph.current = null;
168
153
  };
169
154
  }, []);
170
155
  useEffect2(() => {
@@ -202,4 +187,4 @@ export {
202
187
  D3ForceGraph,
203
188
  ForceGraph
204
189
  };
205
- //# sourceMappingURL=chunk-GFYXDQQV.mjs.map
190
+ //# sourceMappingURL=chunk-CRSVAZNA.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", "_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", "onEngineStop", "handleZoomToFit", "onNodeClick", "emitParticle", "d3Force", "forceLink", "distance", "strength", "forceManyBody", "warmupTicks", "cooldownTime", "resumeAnimation", "zoomToFit", "React", "div", "className", "onClick"]
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
+ }
@@ -10975,23 +10975,9 @@ var TidyTree = (s, data, options) => {
10975
10975
  var TidyTree_default = TidyTree;
10976
10976
 
10977
10977
  // src/components/Tree/types/tree.ts
10978
- import { Schema } from "effect";
10978
+ import * as Schema from "effect/Schema";
10979
10979
  import { Key, Obj, Type } from "@dxos/echo";
10980
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
- }
10994
- var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-explorer/src/components/Tree/types/tree.ts";
10995
10981
  var TreeNodeType = Schema.Struct({
10996
10982
  id: Key.ObjectId,
10997
10983
  children: Schema.mutable(Schema.Array(Key.ObjectId)),
@@ -11011,244 +10997,6 @@ var TreeType = Schema.Struct({
11011
10997
  typename: "dxos.org/type/Tree",
11012
10998
  version: "0.1.0"
11013
10999
  }));
11014
- var Tree = class _Tree {
11015
- get tree() {
11016
- return this._tree;
11017
- }
11018
- // TODO(burdon): Make reactive.
11019
- get size() {
11020
- return Object.keys(this._tree.nodes).length;
11021
- }
11022
- get root() {
11023
- return this.getNode(this._tree.root);
11024
- }
11025
- //
11026
- // Traversal
11027
- //
11028
- /**
11029
- * Recursively traverse the tree until the callback returns a value.
11030
- */
11031
- tranverse(callback, root = this._tree.root, depth = 0) {
11032
- const node = this._tree.nodes[root];
11033
- const result = callback(node, depth);
11034
- if (result !== void 0) {
11035
- return result;
11036
- }
11037
- for (const childId of node.children) {
11038
- const result2 = this.tranverse(callback, childId, depth + 1);
11039
- if (result2 !== void 0) {
11040
- return result2;
11041
- }
11042
- }
11043
- }
11044
- getNode(id) {
11045
- const node = this._tree.nodes[id];
11046
- invariant(node, void 0, {
11047
- F: __dxlog_file,
11048
- L: 98,
11049
- S: this,
11050
- A: [
11051
- "node",
11052
- ""
11053
- ]
11054
- });
11055
- return node;
11056
- }
11057
- /**
11058
- * Get the children of a node.
11059
- */
11060
- getChildNodes(node) {
11061
- return node.children.map((id) => this.getNode(id));
11062
- }
11063
- /**
11064
- * Get the parent of a node.
11065
- */
11066
- getParent(node) {
11067
- const parent = this.tranverse((n) => {
11068
- if (n.children.includes(node.id)) {
11069
- return n;
11070
- }
11071
- });
11072
- return parent ?? null;
11073
- }
11074
- /**
11075
- * Get the next node in the tree.
11076
- */
11077
- getNext(node, hierarchical = true) {
11078
- if (hierarchical && node.children.length) {
11079
- return this.getChildNodes(node)[0];
11080
- } else {
11081
- const parent = this.getParent(node);
11082
- if (parent) {
11083
- const idx = this.getChildNodes(parent).findIndex(({ id }) => id === node.id);
11084
- if (idx < parent.children.length - 1) {
11085
- return this.getNode(parent.children[idx + 1]);
11086
- } else {
11087
- return this.getNext(parent, false);
11088
- }
11089
- }
11090
- }
11091
- }
11092
- /**
11093
- * Get the previous node in the tree.
11094
- */
11095
- getPrevious(node, hierarchical = true) {
11096
- const parent = this.getParent(node);
11097
- const idx = this.getChildNodes(parent).findIndex(({ id }) => id === node.id);
11098
- if (idx === 0) {
11099
- if (hierarchical) {
11100
- return parent;
11101
- }
11102
- } else {
11103
- const previous = this.getNode(parent.children[idx - 1]);
11104
- if (hierarchical && previous.children.length) {
11105
- return this.getLastDescendent(previous);
11106
- }
11107
- return previous;
11108
- }
11109
- }
11110
- /**
11111
- * Get the last descendent of a node.
11112
- */
11113
- getLastDescendent(node) {
11114
- const children = this.getChildNodes(node);
11115
- const last = children.length ? children[children.length - 1] : void 0;
11116
- if (last) {
11117
- return this.getLastDescendent(last);
11118
- }
11119
- return node;
11120
- }
11121
- //
11122
- // Mutations
11123
- //
11124
- /**
11125
- * Clear tree.
11126
- */
11127
- clear() {
11128
- const root = this._tree.nodes[this._tree.root];
11129
- root.children.length = 0;
11130
- this._tree.nodes = {
11131
- [root.id]: root
11132
- };
11133
- }
11134
- /**
11135
- * Add node.
11136
- */
11137
- addNode(parent, node, index) {
11138
- if (!node) {
11139
- const id = Key.ObjectId.random();
11140
- node = {
11141
- id,
11142
- children: [],
11143
- data: {
11144
- text: ""
11145
- }
11146
- };
11147
- }
11148
- this._tree.nodes[node.id] = node;
11149
- parent.children.splice(index ?? parent.children.length, 0, node.id);
11150
- return node;
11151
- }
11152
- /**
11153
- * Delete node.
11154
- */
11155
- deleteNode(parent, id) {
11156
- const node = this._tree.nodes[id];
11157
- if (!node) {
11158
- return void 0;
11159
- }
11160
- delete this._tree.nodes[node.id];
11161
- const idx = parent.children.findIndex((child) => child === id);
11162
- if (idx !== -1) {
11163
- parent.children.splice(idx, 1);
11164
- }
11165
- return node;
11166
- }
11167
- /**
11168
- * Move child node.
11169
- */
11170
- moveNode(node, from, to) {
11171
- invariant(from >= 0 && from < node.children.length, void 0, {
11172
- F: __dxlog_file,
11173
- L: 228,
11174
- S: this,
11175
- A: [
11176
- "from >= 0 && from < node.children.length",
11177
- ""
11178
- ]
11179
- });
11180
- invariant(to >= 0 && to < node.children.length, void 0, {
11181
- F: __dxlog_file,
11182
- L: 229,
11183
- S: this,
11184
- A: [
11185
- "to >= 0 && to < node.children.length",
11186
- ""
11187
- ]
11188
- });
11189
- if (from === to) {
11190
- return null;
11191
- }
11192
- const child = node.children[from];
11193
- node.children.splice(from, 1);
11194
- node.children.splice(to, 0, child);
11195
- return this.getNode(child);
11196
- }
11197
- /**
11198
- * Indent node.
11199
- */
11200
- indentNode(node) {
11201
- const parent = this.getParent(node);
11202
- if (!parent) {
11203
- return;
11204
- }
11205
- const idx = parent.children.findIndex((child) => child === node.id);
11206
- if (idx < 1 || idx >= parent.children.length) {
11207
- return;
11208
- }
11209
- const previous = this.getNode(parent.children[idx - 1]);
11210
- parent.children.splice(idx, 1);
11211
- previous.children.push(node.id);
11212
- }
11213
- /**
11214
- * Unindent node.
11215
- */
11216
- unindentNode(node) {
11217
- const parent = this.getParent(node);
11218
- if (!parent) {
11219
- return;
11220
- }
11221
- const ancestor = this.getParent(parent);
11222
- if (!ancestor) {
11223
- return;
11224
- }
11225
- const nodeIdx = parent.children.findIndex((id) => id === node.id);
11226
- const [_, ...rest] = parent.children.splice(nodeIdx, parent.children.length - nodeIdx);
11227
- parent.children.splice(nodeIdx, parent.children.length - nodeIdx);
11228
- const parentIdx = this.getChildNodes(ancestor).findIndex((n) => n.id === parent.id);
11229
- ancestor.children.splice(parentIdx + 1, 0, node.id);
11230
- node.children.push(...rest);
11231
- }
11232
- constructor(tree3) {
11233
- _define_property(this, "_tree", void 0);
11234
- this._tree = tree3 ?? _Tree.create();
11235
- }
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
- });
11252
11000
 
11253
11001
  // src/components/Tree/types/types.ts
11254
11002
  var mapGraphToTreeData = (model, maxDepth = 8) => {
@@ -11276,7 +11024,7 @@ var renderers = /* @__PURE__ */ new Map([
11276
11024
  HierarchicalEdgeBundling_default
11277
11025
  ]
11278
11026
  ]);
11279
- var Tree2 = ({ space, selected, variant = "tidy", onNodeClick }) => {
11027
+ var Tree = ({ space, selected, variant = "tidy", onNodeClick }) => {
11280
11028
  var _effect = _useSignals3();
11281
11029
  try {
11282
11030
  const [model] = useAsyncState(async () => space ? new SpaceGraphModel().open(space) : void 0, [
@@ -11294,7 +11042,7 @@ var Tree2 = ({ space, selected, variant = "tidy", onNodeClick }) => {
11294
11042
  ]);
11295
11043
  const context = useRef(null);
11296
11044
  useEffect3(() => {
11297
- if (context.current) {
11045
+ if (context.current?.size) {
11298
11046
  const { width, height } = context.current.size;
11299
11047
  const size = Math.min(width, height);
11300
11048
  const radius = size * 0.4;
@@ -11331,13 +11079,13 @@ var Tree2 = ({ space, selected, variant = "tidy", onNodeClick }) => {
11331
11079
 
11332
11080
  // src/components/index.ts
11333
11081
  import { lazy } from "react";
11334
- var ExplorerContainer = lazy(() => import("./ExplorerContainer-OBSRVHZZ.mjs"));
11082
+ var ExplorerContainer = lazy(() => import("./ExplorerContainer-BBLPHH7K.mjs"));
11335
11083
 
11336
11084
  export {
11337
11085
  Chart,
11338
11086
  Globe,
11339
11087
  defaultTreeLayoutSlots,
11340
- Tree2 as Tree,
11088
+ Tree,
11341
11089
  ExplorerContainer
11342
11090
  };
11343
- //# sourceMappingURL=chunk-ODMJ7DPA.mjs.map
11091
+ //# sourceMappingURL=chunk-RSZFBKZM.mjs.map