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