@dxos/plugin-explorer 0.8.4-main.2e9d522 → 0.8.4-main.3eb6e50203

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 (158) hide show
  1. package/dist/lib/browser/ExplorerContainer-46BHUF6R.mjs +45 -0
  2. package/dist/lib/browser/ExplorerContainer-46BHUF6R.mjs.map +7 -0
  3. package/dist/lib/browser/chunk-HIFLWHXR.mjs +83 -0
  4. package/dist/lib/browser/chunk-HIFLWHXR.mjs.map +7 -0
  5. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  6. package/dist/lib/browser/chunk-J5LGTIGS.mjs.map +7 -0
  7. package/dist/lib/{node-esm/chunk-S5A2EUSJ.mjs → browser/chunk-JZSBQYJQ.mjs} +138 -393
  8. package/dist/lib/{node-esm/chunk-S5A2EUSJ.mjs.map → browser/chunk-JZSBQYJQ.mjs.map} +3 -3
  9. package/dist/lib/browser/chunk-KIXHZZ2C.mjs +35 -0
  10. package/dist/lib/browser/chunk-KIXHZZ2C.mjs.map +7 -0
  11. package/dist/lib/browser/chunk-MGBT2ZFU.mjs +177 -0
  12. package/dist/lib/browser/chunk-MGBT2ZFU.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-YNQF4CPY.mjs +24 -0
  14. package/dist/lib/browser/chunk-YNQF4CPY.mjs.map +7 -0
  15. package/dist/lib/browser/index.mjs +54 -65
  16. package/dist/lib/browser/index.mjs.map +4 -4
  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-TPQAT5EI.mjs +36 -0
  20. package/dist/lib/browser/react-surface-TPQAT5EI.mjs.map +7 -0
  21. package/dist/lib/browser/types/index.mjs +6 -6
  22. package/dist/lib/node-esm/ExplorerContainer-OZNG47QB.mjs +46 -0
  23. package/dist/lib/node-esm/ExplorerContainer-OZNG47QB.mjs.map +7 -0
  24. package/dist/lib/node-esm/chunk-3OE6TBJI.mjs +84 -0
  25. package/dist/lib/node-esm/chunk-3OE6TBJI.mjs.map +7 -0
  26. package/dist/lib/node-esm/{chunk-PPBUWC7F.mjs → chunk-ASRWO2N5.mjs} +11 -6
  27. package/dist/lib/node-esm/chunk-ASRWO2N5.mjs.map +7 -0
  28. package/dist/lib/node-esm/{chunk-PIAXA43R.mjs → chunk-DK77RB6M.mjs} +8 -5
  29. package/dist/lib/node-esm/chunk-DK77RB6M.mjs.map +7 -0
  30. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  31. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
  32. package/dist/lib/{browser/chunk-PVFZFKQ6.mjs → node-esm/chunk-K5BYG7BW.mjs} +140 -391
  33. package/dist/lib/{browser/chunk-PVFZFKQ6.mjs.map → node-esm/chunk-K5BYG7BW.mjs.map} +3 -3
  34. package/dist/lib/node-esm/chunk-YWJBDETV.mjs +179 -0
  35. package/dist/lib/node-esm/chunk-YWJBDETV.mjs.map +7 -0
  36. package/dist/lib/node-esm/index.mjs +54 -65
  37. package/dist/lib/node-esm/index.mjs.map +4 -4
  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-CYHGJJDU.mjs +37 -0
  41. package/dist/lib/node-esm/react-surface-CYHGJJDU.mjs.map +7 -0
  42. package/dist/lib/node-esm/types/index.mjs +6 -6
  43. package/dist/types/src/ExplorerPlugin.d.ts +2 -1
  44. package/dist/types/src/ExplorerPlugin.d.ts.map +1 -1
  45. package/dist/types/src/capabilities/index.d.ts +1 -2
  46. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  47. package/dist/types/src/capabilities/react-surface/index.d.ts +3 -0
  48. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -0
  49. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +5 -0
  50. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -0
  51. package/dist/types/src/components/Chart/Chart.d.ts.map +1 -1
  52. package/dist/types/src/components/Chart/Chart.stories.d.ts +8 -4
  53. package/dist/types/src/components/Chart/Chart.stories.d.ts.map +1 -1
  54. package/dist/types/src/components/ExplorerContainer.d.ts +4 -6
  55. package/dist/types/src/components/ExplorerContainer.d.ts.map +1 -1
  56. package/dist/types/src/components/Globe/Globe.d.ts.map +1 -1
  57. package/dist/types/src/components/Globe/Globe.stories.d.ts +8 -4
  58. package/dist/types/src/components/Globe/Globe.stories.d.ts.map +1 -1
  59. package/dist/types/src/components/Graph/D3ForceGraph.d.ts +2 -2
  60. package/dist/types/src/components/Graph/D3ForceGraph.d.ts.map +1 -1
  61. package/dist/types/src/components/Graph/D3ForceGraph.stories.d.ts +13 -4
  62. package/dist/types/src/components/Graph/D3ForceGraph.stories.d.ts.map +1 -1
  63. package/dist/types/src/components/Graph/ForceGraph.stories.d.ts +13 -4
  64. package/dist/types/src/components/Graph/ForceGraph.stories.d.ts.map +1 -1
  65. package/dist/types/src/components/Graph/adapter.d.ts +1 -1
  66. package/dist/types/src/components/Graph/adapter.d.ts.map +1 -1
  67. package/dist/types/src/components/Graph/testing.d.ts +1 -1
  68. package/dist/types/src/components/Graph/testing.d.ts.map +1 -1
  69. package/dist/types/src/components/Tree/Tree.d.ts.map +1 -1
  70. package/dist/types/src/components/Tree/Tree.stories.d.ts +13 -16
  71. package/dist/types/src/components/Tree/Tree.stories.d.ts.map +1 -1
  72. package/dist/types/src/components/Tree/testing/generator.d.ts.map +1 -1
  73. package/dist/types/src/components/Tree/types/tree.d.ts +18 -16
  74. package/dist/types/src/components/Tree/types/tree.d.ts.map +1 -1
  75. package/dist/types/src/components/Tree/types/types.d.ts +1 -1
  76. package/dist/types/src/components/Tree/types/types.d.ts.map +1 -1
  77. package/dist/types/src/components/index.d.ts +2 -4
  78. package/dist/types/src/components/index.d.ts.map +1 -1
  79. package/dist/types/src/hooks/useGraphModel.d.ts +2 -2
  80. package/dist/types/src/hooks/useGraphModel.d.ts.map +1 -1
  81. package/dist/types/src/meta.d.ts +2 -3
  82. package/dist/types/src/meta.d.ts.map +1 -1
  83. package/dist/types/src/translations.d.ts +24 -5
  84. package/dist/types/src/translations.d.ts.map +1 -1
  85. package/dist/types/src/types/ExplorerAction.d.ts +6 -0
  86. package/dist/types/src/types/ExplorerAction.d.ts.map +1 -0
  87. package/dist/types/src/types/Graph.d.ts +30 -0
  88. package/dist/types/src/types/Graph.d.ts.map +1 -0
  89. package/dist/types/src/types/index.d.ts +2 -2
  90. package/dist/types/src/types/index.d.ts.map +1 -1
  91. package/dist/types/tsconfig.tsbuildinfo +1 -1
  92. package/package.json +54 -44
  93. package/src/ExplorerPlugin.tsx +30 -52
  94. package/src/capabilities/index.ts +1 -4
  95. package/src/capabilities/react-surface/index.ts +7 -0
  96. package/src/capabilities/react-surface/react-surface.tsx +31 -0
  97. package/src/components/Chart/Chart.stories.tsx +9 -7
  98. package/src/components/Chart/Chart.tsx +1 -1
  99. package/src/components/ExplorerContainer.tsx +30 -14
  100. package/src/components/Globe/Globe.stories.tsx +14 -12
  101. package/src/components/Globe/Globe.tsx +1 -1
  102. package/src/components/Graph/D3ForceGraph.stories.tsx +40 -21
  103. package/src/components/Graph/D3ForceGraph.tsx +6 -6
  104. package/src/components/Graph/ForceGraph.stories.tsx +40 -21
  105. package/src/components/Graph/ForceGraph.tsx +4 -4
  106. package/src/components/Graph/adapter.ts +14 -8
  107. package/src/components/Graph/testing.ts +13 -10
  108. package/src/components/Tree/Tree.stories.tsx +29 -22
  109. package/src/components/Tree/Tree.tsx +11 -6
  110. package/src/components/Tree/testing/generator.ts +4 -2
  111. package/src/components/Tree/types/tree.test.ts +7 -4
  112. package/src/components/Tree/types/tree.ts +40 -19
  113. package/src/components/Tree/types/types.ts +1 -1
  114. package/src/components/index.ts +3 -3
  115. package/src/hooks/useGraphModel.ts +9 -5
  116. package/src/meta.ts +9 -6
  117. package/src/translations.ts +6 -2
  118. package/src/types/ExplorerAction.ts +21 -0
  119. package/src/types/Graph.ts +62 -0
  120. package/src/types/index.ts +2 -2
  121. package/dist/lib/browser/ExplorerContainer-OGHSHZD5.mjs +0 -37
  122. package/dist/lib/browser/ExplorerContainer-OGHSHZD5.mjs.map +0 -7
  123. package/dist/lib/browser/chunk-EF4BFHTI.mjs +0 -38
  124. package/dist/lib/browser/chunk-EF4BFHTI.mjs.map +0 -7
  125. package/dist/lib/browser/chunk-J2BBZOSF.mjs +0 -187
  126. package/dist/lib/browser/chunk-J2BBZOSF.mjs.map +0 -7
  127. package/dist/lib/browser/chunk-OAOY7SHY.mjs +0 -30
  128. package/dist/lib/browser/chunk-OAOY7SHY.mjs.map +0 -7
  129. package/dist/lib/browser/chunk-UL5EDJPE.mjs +0 -21
  130. package/dist/lib/browser/chunk-UL5EDJPE.mjs.map +0 -7
  131. package/dist/lib/browser/intent-resolver-XH2UO2FM.mjs +0 -24
  132. package/dist/lib/browser/intent-resolver-XH2UO2FM.mjs.map +0 -7
  133. package/dist/lib/browser/react-surface-65VQ42HX.mjs +0 -31
  134. package/dist/lib/browser/react-surface-65VQ42HX.mjs.map +0 -7
  135. package/dist/lib/node-esm/ExplorerContainer-6ON5NA2P.mjs +0 -38
  136. package/dist/lib/node-esm/ExplorerContainer-6ON5NA2P.mjs.map +0 -7
  137. package/dist/lib/node-esm/chunk-4VMSNXYL.mjs +0 -189
  138. package/dist/lib/node-esm/chunk-4VMSNXYL.mjs.map +0 -7
  139. package/dist/lib/node-esm/chunk-PIAXA43R.mjs.map +0 -7
  140. package/dist/lib/node-esm/chunk-PPBUWC7F.mjs.map +0 -7
  141. package/dist/lib/node-esm/chunk-VKCOKQRG.mjs +0 -39
  142. package/dist/lib/node-esm/chunk-VKCOKQRG.mjs.map +0 -7
  143. package/dist/lib/node-esm/intent-resolver-AGBBNA67.mjs +0 -25
  144. package/dist/lib/node-esm/intent-resolver-AGBBNA67.mjs.map +0 -7
  145. package/dist/lib/node-esm/react-surface-IJIMYAST.mjs +0 -32
  146. package/dist/lib/node-esm/react-surface-IJIMYAST.mjs.map +0 -7
  147. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  148. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  149. package/dist/types/src/capabilities/react-surface.d.ts +0 -4
  150. package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
  151. package/dist/types/src/types/schema.d.ts +0 -12
  152. package/dist/types/src/types/schema.d.ts.map +0 -1
  153. package/dist/types/src/types/types.d.ts +0 -18
  154. package/dist/types/src/types/types.d.ts.map +0 -1
  155. package/src/capabilities/intent-resolver.ts +0 -19
  156. package/src/capabilities/react-surface.tsx +0 -23
  157. package/src/types/schema.ts +0 -16
  158. package/src/types/types.ts +0 -21
@@ -1,7 +1,4 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
-
3
1
  // src/components/Chart/Chart.tsx
4
- import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
5
2
  import * as Plot from "@observablehq/plot";
6
3
  import React, { useEffect } from "react";
7
4
  import { useResizeDetector } from "react-resize-detector";
@@ -19,49 +16,43 @@ var defaultOptions = {
19
16
  fillOpacity: 0.2
20
17
  };
21
18
  var Chart = ({ items = [], accessor, options = defaultOptions }) => {
22
- var _effect = _useSignals();
23
- try {
24
- const { ref: containerRef, width = 0, height = 0 } = useResizeDetector({
25
- refreshRate: 200
26
- });
27
- useEffect(() => {
28
- if (!width || !height) {
29
- return;
30
- }
31
- const plot3 = Plot.plot({
32
- grid: true,
33
- width,
34
- height,
35
- style: {
36
- background: "transparent"
37
- },
38
- marks: [
39
- Plot.frame(),
40
- Plot.dot(items, {
41
- x: createAdapter("x", accessor),
42
- y: createAdapter("y", accessor),
43
- ...options
44
- })
45
- ]
46
- });
47
- containerRef.current.append(plot3);
48
- return () => plot3?.remove();
49
- }, [
50
- items,
19
+ const { ref: containerRef, width = 0, height = 0 } = useResizeDetector({
20
+ refreshRate: 200
21
+ });
22
+ useEffect(() => {
23
+ if (!width || !height) {
24
+ return;
25
+ }
26
+ const plot3 = Plot.plot({
27
+ grid: true,
51
28
  width,
52
- height
53
- ]);
54
- return /* @__PURE__ */ React.createElement("div", {
55
- ref: containerRef,
56
- className: "grow"
29
+ height,
30
+ style: {
31
+ background: "transparent"
32
+ },
33
+ marks: [
34
+ Plot.frame(),
35
+ Plot.dot(items, {
36
+ x: createAdapter("x", accessor),
37
+ y: createAdapter("y", accessor),
38
+ ...options
39
+ })
40
+ ]
57
41
  });
58
- } finally {
59
- _effect.f();
60
- }
42
+ containerRef.current.append(plot3);
43
+ return () => plot3?.remove();
44
+ }, [
45
+ items,
46
+ width,
47
+ height
48
+ ]);
49
+ return /* @__PURE__ */ React.createElement("div", {
50
+ ref: containerRef,
51
+ className: "grow"
52
+ });
61
53
  };
62
54
 
63
55
  // src/components/Globe/Globe.tsx
64
- import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
65
56
  import * as Plot2 from "@observablehq/plot";
66
57
  import React2, { useEffect as useEffect2 } from "react";
67
58
  import { useResizeDetector as useResizeDetector2 } from "react-resize-detector";
@@ -10775,68 +10766,63 @@ var defaultOptions2 = {
10775
10766
  fill: "#003300"
10776
10767
  };
10777
10768
  var Globe = ({ items = [], accessor, projection = "orthographic", options = defaultOptions2 }) => {
10778
- var _effect = _useSignals2();
10779
- try {
10780
- const { ref: containerRef, width = 0, height = 0 } = useResizeDetector2({
10781
- refreshRate: 200
10782
- });
10783
- const land = topojson.feature(countries_110m_default, countries_110m_default.objects.land);
10784
- useEffect2(() => {
10785
- if (!width || !height) {
10786
- return;
10787
- }
10788
- const plot3 = Plot2.plot({
10789
- // https://observablehq.com/plot/features/projections
10790
- projection: {
10791
- type: projection,
10792
- rotate: [
10793
- -100,
10794
- -20
10795
- ]
10796
- },
10797
- // projection: { type: 'equirectangular', rotate: [-140, -30] },
10798
- width,
10799
- height,
10800
- style: {
10801
- background: "transparent"
10802
- },
10803
- // TODO(burdon): Create simple wrapper for Plot with good defaults.
10804
- marks: [
10805
- Plot2.sphere({
10806
- fill: "lightblue",
10807
- fillOpacity: 0.5
10808
- }),
10809
- Plot2.geo(land, {
10810
- fill: "darkgreen",
10811
- fillOpacity: 0.5
10812
- }),
10813
- Plot2.graticule(),
10814
- Plot2.dot(items, {
10815
- x: createAdapter("lat", accessor),
10816
- y: createAdapter("lng", accessor),
10817
- ...options
10818
- })
10769
+ const { ref: containerRef, width = 0, height = 0 } = useResizeDetector2({
10770
+ refreshRate: 200
10771
+ });
10772
+ const land = topojson.feature(countries_110m_default, countries_110m_default.objects.land);
10773
+ useEffect2(() => {
10774
+ if (!width || !height) {
10775
+ return;
10776
+ }
10777
+ const plot3 = Plot2.plot({
10778
+ // https://observablehq.com/plot/features/projections
10779
+ projection: {
10780
+ type: projection,
10781
+ rotate: [
10782
+ -100,
10783
+ -20
10819
10784
  ]
10820
- });
10821
- containerRef.current.append(plot3);
10822
- return () => plot3?.remove();
10823
- }, [
10824
- items,
10785
+ },
10786
+ // projection: { type: 'equirectangular', rotate: [-140, -30] },
10825
10787
  width,
10826
- height
10827
- ]);
10828
- return /* @__PURE__ */ React2.createElement("div", {
10829
- ref: containerRef,
10830
- className: "grow p-4"
10788
+ height,
10789
+ style: {
10790
+ background: "transparent"
10791
+ },
10792
+ // TODO(burdon): Create simple wrapper for Plot with good defaults.
10793
+ marks: [
10794
+ Plot2.sphere({
10795
+ fill: "lightblue",
10796
+ fillOpacity: 0.5
10797
+ }),
10798
+ Plot2.geo(land, {
10799
+ fill: "darkgreen",
10800
+ fillOpacity: 0.5
10801
+ }),
10802
+ Plot2.graticule(),
10803
+ Plot2.dot(items, {
10804
+ x: createAdapter("lat", accessor),
10805
+ y: createAdapter("lng", accessor),
10806
+ ...options
10807
+ })
10808
+ ]
10831
10809
  });
10832
- } finally {
10833
- _effect.f();
10834
- }
10810
+ containerRef.current.append(plot3);
10811
+ return () => plot3?.remove();
10812
+ }, [
10813
+ items,
10814
+ width,
10815
+ height
10816
+ ]);
10817
+ return /* @__PURE__ */ React2.createElement("div", {
10818
+ ref: containerRef,
10819
+ className: "grow p-4"
10820
+ });
10835
10821
  };
10836
10822
 
10837
10823
  // src/components/Tree/Tree.tsx
10838
- import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
10839
- import React3, { useEffect as useEffect3, useRef, useState } from "react";
10824
+ import { RegistryContext } from "@effect-atom/atom-react";
10825
+ import React3, { useContext, useEffect as useEffect3, useRef, useState } from "react";
10840
10826
  import { useAsyncState } from "@dxos/react-ui";
10841
10827
  import { SVG } from "@dxos/react-ui-graph";
10842
10828
  import { SpaceGraphModel } from "@dxos/schema";
@@ -10975,10 +10961,10 @@ var TidyTree = (s, data, options) => {
10975
10961
  var TidyTree_default = TidyTree;
10976
10962
 
10977
10963
  // src/components/Tree/types/tree.ts
10978
- import { Schema } from "effect";
10964
+ import * as Schema from "effect/Schema";
10979
10965
  import { Key, Obj, Type } from "@dxos/echo";
10966
+ import { TestSchema } from "@dxos/echo/testing";
10980
10967
  import { invariant } from "@dxos/invariant";
10981
- var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-explorer/src/components/Tree/types/tree.ts";
10982
10968
  var TreeNodeType = Schema.Struct({
10983
10969
  id: Key.ObjectId,
10984
10970
  children: Schema.mutable(Schema.Array(Key.ObjectId)),
@@ -10986,7 +10972,7 @@ var TreeNodeType = Schema.Struct({
10986
10972
  key: Schema.String,
10987
10973
  value: Schema.Any
10988
10974
  })),
10989
- ref: Schema.optional(Type.Ref(Type.Expando))
10975
+ ref: Schema.optional(Type.Ref(TestSchema.Expando))
10990
10976
  }).pipe(Schema.mutable);
10991
10977
  var TreeType = Schema.Struct({
10992
10978
  root: Key.ObjectId,
@@ -10994,249 +10980,10 @@ var TreeType = Schema.Struct({
10994
10980
  key: Key.ObjectId,
10995
10981
  value: TreeNodeType
10996
10982
  }))
10997
- }).pipe(Type.Obj({
10983
+ }).pipe(Type.object({
10998
10984
  typename: "dxos.org/type/Tree",
10999
10985
  version: "0.1.0"
11000
10986
  }));
11001
- var Tree = class _Tree {
11002
- static {
11003
- this.create = () => {
11004
- const id = Key.ObjectId.random();
11005
- return Obj.make(TreeType, {
11006
- root: id,
11007
- nodes: {
11008
- [id]: {
11009
- id,
11010
- children: [],
11011
- data: {
11012
- text: ""
11013
- }
11014
- }
11015
- }
11016
- });
11017
- };
11018
- }
11019
- constructor(tree3) {
11020
- this._tree = tree3 ?? _Tree.create();
11021
- }
11022
- get tree() {
11023
- return this._tree;
11024
- }
11025
- // TODO(burdon): Make reactive.
11026
- get size() {
11027
- return Object.keys(this._tree.nodes).length;
11028
- }
11029
- get root() {
11030
- return this.getNode(this._tree.root);
11031
- }
11032
- //
11033
- // Traversal
11034
- //
11035
- /**
11036
- * Recursively traverse the tree until the callback returns a value.
11037
- */
11038
- tranverse(callback, root = this._tree.root, depth = 0) {
11039
- const node = this._tree.nodes[root];
11040
- const result = callback(node, depth);
11041
- if (result !== void 0) {
11042
- return result;
11043
- }
11044
- for (const childId of node.children) {
11045
- const result2 = this.tranverse(callback, childId, depth + 1);
11046
- if (result2 !== void 0) {
11047
- return result2;
11048
- }
11049
- }
11050
- }
11051
- getNode(id) {
11052
- const node = this._tree.nodes[id];
11053
- invariant(node, void 0, {
11054
- F: __dxlog_file,
11055
- L: 98,
11056
- S: this,
11057
- A: [
11058
- "node",
11059
- ""
11060
- ]
11061
- });
11062
- return node;
11063
- }
11064
- /**
11065
- * Get the children of a node.
11066
- */
11067
- getChildNodes(node) {
11068
- return node.children.map((id) => this.getNode(id));
11069
- }
11070
- /**
11071
- * Get the parent of a node.
11072
- */
11073
- getParent(node) {
11074
- const parent = this.tranverse((n) => {
11075
- if (n.children.includes(node.id)) {
11076
- return n;
11077
- }
11078
- });
11079
- return parent ?? null;
11080
- }
11081
- /**
11082
- * Get the next node in the tree.
11083
- */
11084
- getNext(node, hierarchical = true) {
11085
- if (hierarchical && node.children.length) {
11086
- return this.getChildNodes(node)[0];
11087
- } else {
11088
- const parent = this.getParent(node);
11089
- if (parent) {
11090
- const idx = this.getChildNodes(parent).findIndex(({ id }) => id === node.id);
11091
- if (idx < parent.children.length - 1) {
11092
- return this.getNode(parent.children[idx + 1]);
11093
- } else {
11094
- return this.getNext(parent, false);
11095
- }
11096
- }
11097
- }
11098
- }
11099
- /**
11100
- * Get the previous node in the tree.
11101
- */
11102
- getPrevious(node, hierarchical = true) {
11103
- const parent = this.getParent(node);
11104
- const idx = this.getChildNodes(parent).findIndex(({ id }) => id === node.id);
11105
- if (idx === 0) {
11106
- if (hierarchical) {
11107
- return parent;
11108
- }
11109
- } else {
11110
- const previous = this.getNode(parent.children[idx - 1]);
11111
- if (hierarchical && previous.children.length) {
11112
- return this.getLastDescendent(previous);
11113
- }
11114
- return previous;
11115
- }
11116
- }
11117
- /**
11118
- * Get the last descendent of a node.
11119
- */
11120
- getLastDescendent(node) {
11121
- const children = this.getChildNodes(node);
11122
- const last = children.length ? children[children.length - 1] : void 0;
11123
- if (last) {
11124
- return this.getLastDescendent(last);
11125
- }
11126
- return node;
11127
- }
11128
- //
11129
- // Mutations
11130
- //
11131
- /**
11132
- * Clear tree.
11133
- */
11134
- clear() {
11135
- const root = this._tree.nodes[this._tree.root];
11136
- root.children.length = 0;
11137
- this._tree.nodes = {
11138
- [root.id]: root
11139
- };
11140
- }
11141
- /**
11142
- * Add node.
11143
- */
11144
- addNode(parent, node, index) {
11145
- if (!node) {
11146
- const id = Key.ObjectId.random();
11147
- node = {
11148
- id,
11149
- children: [],
11150
- data: {
11151
- text: ""
11152
- }
11153
- };
11154
- }
11155
- this._tree.nodes[node.id] = node;
11156
- parent.children.splice(index ?? parent.children.length, 0, node.id);
11157
- return node;
11158
- }
11159
- /**
11160
- * Delete node.
11161
- */
11162
- deleteNode(parent, id) {
11163
- const node = this._tree.nodes[id];
11164
- if (!node) {
11165
- return void 0;
11166
- }
11167
- delete this._tree.nodes[node.id];
11168
- const idx = parent.children.findIndex((child) => child === id);
11169
- if (idx !== -1) {
11170
- parent.children.splice(idx, 1);
11171
- }
11172
- return node;
11173
- }
11174
- /**
11175
- * Move child node.
11176
- */
11177
- moveNode(node, from, to) {
11178
- invariant(from >= 0 && from < node.children.length, void 0, {
11179
- F: __dxlog_file,
11180
- L: 228,
11181
- S: this,
11182
- A: [
11183
- "from >= 0 && from < node.children.length",
11184
- ""
11185
- ]
11186
- });
11187
- invariant(to >= 0 && to < node.children.length, void 0, {
11188
- F: __dxlog_file,
11189
- L: 229,
11190
- S: this,
11191
- A: [
11192
- "to >= 0 && to < node.children.length",
11193
- ""
11194
- ]
11195
- });
11196
- if (from === to) {
11197
- return null;
11198
- }
11199
- const child = node.children[from];
11200
- node.children.splice(from, 1);
11201
- node.children.splice(to, 0, child);
11202
- return this.getNode(child);
11203
- }
11204
- /**
11205
- * Indent node.
11206
- */
11207
- indentNode(node) {
11208
- const parent = this.getParent(node);
11209
- if (!parent) {
11210
- return;
11211
- }
11212
- const idx = parent.children.findIndex((child) => child === node.id);
11213
- if (idx < 1 || idx >= parent.children.length) {
11214
- return;
11215
- }
11216
- const previous = this.getNode(parent.children[idx - 1]);
11217
- parent.children.splice(idx, 1);
11218
- previous.children.push(node.id);
11219
- }
11220
- /**
11221
- * Unindent node.
11222
- */
11223
- unindentNode(node) {
11224
- const parent = this.getParent(node);
11225
- if (!parent) {
11226
- return;
11227
- }
11228
- const ancestor = this.getParent(parent);
11229
- if (!ancestor) {
11230
- return;
11231
- }
11232
- const nodeIdx = parent.children.findIndex((id) => id === node.id);
11233
- const [_, ...rest] = parent.children.splice(nodeIdx, parent.children.length - nodeIdx);
11234
- parent.children.splice(nodeIdx, parent.children.length - nodeIdx);
11235
- const parentIdx = this.getChildNodes(ancestor).findIndex((n) => n.id === parent.id);
11236
- ancestor.children.splice(parentIdx + 1, 0, node.id);
11237
- node.children.push(...rest);
11238
- }
11239
- };
11240
10987
 
11241
10988
  // src/components/Tree/types/types.ts
11242
10989
  var mapGraphToTreeData = (model, maxDepth = 8) => {
@@ -11264,68 +11011,66 @@ var renderers = /* @__PURE__ */ new Map([
11264
11011
  HierarchicalEdgeBundling_default
11265
11012
  ]
11266
11013
  ]);
11267
- var Tree2 = ({ space, selected, variant = "tidy", onNodeClick }) => {
11268
- var _effect = _useSignals3();
11269
- try {
11270
- const [model] = useAsyncState(async () => space ? new SpaceGraphModel().open(space) : void 0, [
11271
- space,
11272
- selected
11273
- ]);
11274
- const [tree3, setTree] = useState();
11275
- useEffect3(() => {
11276
- return model?.subscribe(() => {
11277
- const tree4 = mapGraphToTreeData(model);
11278
- setTree(tree4);
11279
- }, true);
11280
- }, [
11281
- model
11282
- ]);
11283
- const context = useRef(null);
11284
- useEffect3(() => {
11285
- if (context.current) {
11286
- const { width, height } = context.current.size;
11287
- const size = Math.min(width, height);
11288
- const radius = size * 0.4;
11289
- const options = {
11290
- // TODO(burdon): Type.
11291
- label: (d) => d.label ?? d.id,
11292
- width,
11293
- height,
11294
- radius,
11295
- marginLeft: (width - radius * 2) / 2,
11296
- marginRight: (width - radius * 2) / 2,
11297
- marginTop: (height - radius * 2) / 2,
11298
- marginBottom: (height - radius * 2) / 2,
11299
- slots: defaultTreeLayoutSlots
11300
- };
11301
- if (tree3) {
11302
- const renderer = renderers.get(variant);
11303
- renderer?.(context.current.svg, tree3, options);
11304
- }
11014
+ var Tree = ({ space, selected, variant = "tidy", onNodeClick }) => {
11015
+ const registry = useContext(RegistryContext);
11016
+ const [model] = useAsyncState(async () => space ? new SpaceGraphModel(registry).open(space.db) : void 0, [
11017
+ space,
11018
+ selected,
11019
+ registry
11020
+ ]);
11021
+ const [tree3, setTree] = useState();
11022
+ useEffect3(() => {
11023
+ return model?.subscribe(() => {
11024
+ const tree4 = mapGraphToTreeData(model);
11025
+ setTree(tree4);
11026
+ }, true);
11027
+ }, [
11028
+ model
11029
+ ]);
11030
+ const context = useRef(null);
11031
+ useEffect3(() => {
11032
+ if (context.current?.size) {
11033
+ const { width, height } = context.current.size;
11034
+ const size = Math.min(width, height);
11035
+ const radius = size * 0.4;
11036
+ const options = {
11037
+ // TODO(burdon): Type.
11038
+ label: (d) => d.label ?? d.id,
11039
+ width,
11040
+ height,
11041
+ radius,
11042
+ marginLeft: (width - radius * 2) / 2,
11043
+ marginRight: (width - radius * 2) / 2,
11044
+ marginTop: (height - radius * 2) / 2,
11045
+ marginBottom: (height - radius * 2) / 2,
11046
+ slots: defaultTreeLayoutSlots
11047
+ };
11048
+ if (tree3) {
11049
+ const renderer = renderers.get(variant);
11050
+ renderer?.(context.current.svg, tree3, options);
11305
11051
  }
11306
- }, [
11307
- context.current,
11308
- tree3
11309
- ]);
11310
- return /* @__PURE__ */ React3.createElement("div", {
11311
- onClick: () => onNodeClick?.()
11312
- }, /* @__PURE__ */ React3.createElement(SVG.Root, {
11313
- ref: context
11314
- }));
11315
- } finally {
11316
- _effect.f();
11317
- }
11052
+ }
11053
+ }, [
11054
+ context.current,
11055
+ tree3
11056
+ ]);
11057
+ return /* @__PURE__ */ React3.createElement("div", {
11058
+ className: "grow",
11059
+ onClick: () => onNodeClick?.()
11060
+ }, /* @__PURE__ */ React3.createElement(SVG.Root, {
11061
+ ref: context
11062
+ }));
11318
11063
  };
11319
11064
 
11320
11065
  // src/components/index.ts
11321
11066
  import { lazy } from "react";
11322
- var ExplorerContainer = lazy(() => import("./ExplorerContainer-6ON5NA2P.mjs"));
11067
+ var ExplorerContainer = lazy(() => import("./ExplorerContainer-46BHUF6R.mjs"));
11323
11068
 
11324
11069
  export {
11325
11070
  Chart,
11326
11071
  Globe,
11327
11072
  defaultTreeLayoutSlots,
11328
- Tree2 as Tree,
11073
+ Tree,
11329
11074
  ExplorerContainer
11330
11075
  };
11331
- //# sourceMappingURL=chunk-S5A2EUSJ.mjs.map
11076
+ //# sourceMappingURL=chunk-JZSBQYJQ.mjs.map