@dxos/plugin-explorer 0.8.4-main.9be5663bfe → 0.8.4-main.abd8ff62ef

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 (74) hide show
  1. package/dist/lib/browser/{chunk-LSUP47BZ.mjs → chunk-HPIS2WXY.mjs} +1 -1
  2. package/dist/lib/browser/{chunk-LSUP47BZ.mjs.map → chunk-HPIS2WXY.mjs.map} +2 -2
  3. package/dist/lib/browser/components/index.mjs +11254 -0
  4. package/dist/lib/browser/components/index.mjs.map +7 -0
  5. package/dist/lib/browser/hooks/index.mjs +40 -0
  6. package/dist/lib/browser/hooks/index.mjs.map +7 -0
  7. package/dist/lib/browser/index.mjs +4 -11365
  8. package/dist/lib/browser/index.mjs.map +4 -4
  9. package/dist/lib/browser/meta.json +1 -1
  10. package/dist/lib/browser/meta.mjs +1 -1
  11. package/dist/lib/browser/types/index.mjs +3 -1
  12. package/dist/lib/browser/types/index.mjs.map +3 -3
  13. package/dist/lib/node-esm/{chunk-EN3JZNEY.mjs → chunk-6EUBRHHX.mjs} +1 -1
  14. package/dist/lib/node-esm/{chunk-EN3JZNEY.mjs.map → chunk-6EUBRHHX.mjs.map} +2 -2
  15. package/dist/lib/node-esm/components/index.mjs +11255 -0
  16. package/dist/lib/node-esm/components/index.mjs.map +7 -0
  17. package/dist/lib/node-esm/hooks/index.mjs +41 -0
  18. package/dist/lib/node-esm/hooks/index.mjs.map +7 -0
  19. package/dist/lib/node-esm/index.mjs +4 -11365
  20. package/dist/lib/node-esm/index.mjs.map +4 -4
  21. package/dist/lib/node-esm/meta.json +1 -1
  22. package/dist/lib/node-esm/meta.mjs +1 -1
  23. package/dist/lib/node-esm/types/index.mjs +3 -1
  24. package/dist/lib/node-esm/types/index.mjs.map +3 -3
  25. package/dist/types/data/cities.d.ts +4 -4
  26. package/dist/types/data/cities.d.ts.map +1 -1
  27. package/dist/types/data/countries-110m.d.ts +19 -22
  28. package/dist/types/data/countries-110m.d.ts.map +1 -1
  29. package/dist/types/src/ExplorerPlugin.d.ts +1 -0
  30. package/dist/types/src/ExplorerPlugin.d.ts.map +1 -1
  31. package/dist/types/src/ExplorerPlugin.test.d.ts +2 -0
  32. package/dist/types/src/ExplorerPlugin.test.d.ts.map +1 -0
  33. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  34. package/dist/types/src/components/Chart/Chart.d.ts.map +1 -1
  35. package/dist/types/src/components/Chart/Chart.stories.d.ts.map +1 -1
  36. package/dist/types/src/components/Globe/Globe.d.ts.map +1 -1
  37. package/dist/types/src/components/Globe/Globe.stories.d.ts.map +1 -1
  38. package/dist/types/src/components/Graph/D3ForceGraph.d.ts +1 -1
  39. package/dist/types/src/components/Graph/D3ForceGraph.stories.d.ts +1 -1
  40. package/dist/types/src/components/Graph/D3ForceGraph.stories.d.ts.map +1 -1
  41. package/dist/types/src/components/Graph/ForceGraph.stories.d.ts.map +1 -1
  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/Tree.d.ts.map +1 -1
  45. package/dist/types/src/components/Tree/Tree.stories.d.ts.map +1 -1
  46. package/dist/types/src/components/Tree/layout/HierarchicalEdgeBundling.d.ts.map +1 -1
  47. package/dist/types/src/components/Tree/layout/RadialTree.d.ts.map +1 -1
  48. package/dist/types/src/components/Tree/layout/TidyTree.d.ts.map +1 -1
  49. package/dist/types/src/components/Tree/testing/generator.d.ts.map +1 -1
  50. package/dist/types/src/components/Tree/types/tree.d.ts +6 -6
  51. package/dist/types/src/components/Tree/types/tree.d.ts.map +1 -1
  52. package/dist/types/src/components/Tree/types/types.d.ts.map +1 -1
  53. package/dist/types/src/components/plot.d.ts.map +1 -1
  54. package/dist/types/src/containers/ExplorerContainer/ExplorerContainer.d.ts +1 -1
  55. package/dist/types/src/containers/ExplorerContainer/ExplorerContainer.d.ts.map +1 -1
  56. package/dist/types/src/hooks/useGraphModel.d.ts.map +1 -1
  57. package/dist/types/src/index.d.ts +2 -3
  58. package/dist/types/src/index.d.ts.map +1 -1
  59. package/dist/types/src/translations.d.ts +17 -17
  60. package/dist/types/src/translations.d.ts.map +1 -1
  61. package/dist/types/src/types/Graph.d.ts +2 -2
  62. package/dist/types/src/types/Graph.d.ts.map +1 -1
  63. package/dist/types/tsconfig.tsbuildinfo +1 -1
  64. package/package.json +53 -42
  65. package/src/ExplorerPlugin.test.ts +26 -0
  66. package/src/ExplorerPlugin.tsx +4 -3
  67. package/src/capabilities/react-surface.tsx +4 -2
  68. package/src/components/Tree/testing/generator.ts +1 -1
  69. package/src/components/Tree/types/tree.test.ts +1 -1
  70. package/src/components/Tree/types/tree.ts +9 -9
  71. package/src/containers/ExplorerContainer/ExplorerContainer.tsx +2 -2
  72. package/src/index.ts +5 -3
  73. package/src/translations.ts +1 -1
  74. package/src/types/Graph.ts +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/plugin-explorer",
3
- "version": "0.8.4-main.9be5663bfe",
3
+ "version": "0.8.4-main.abd8ff62ef",
4
4
  "description": "Braneframe data visualization plugin",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -13,11 +13,13 @@
13
13
  "sideEffects": true,
14
14
  "type": "module",
15
15
  "imports": {
16
+ "#plugin": "./src/ExplorerPlugin.tsx",
16
17
  "#capabilities": "./src/capabilities/index.ts",
17
18
  "#components": "./src/components/index.ts",
18
19
  "#containers": "./src/containers/index.ts",
19
20
  "#hooks": "./src/hooks/index.ts",
20
21
  "#meta": "./src/meta.ts",
22
+ "#translations": "./src/translations.ts",
21
23
  "#types": "./src/types/index.ts"
22
24
  },
23
25
  "exports": {
@@ -33,6 +35,24 @@
33
35
  "node": "./dist/lib/node-esm/meta.mjs",
34
36
  "types": "./dist/types/src/meta.d.ts"
35
37
  },
38
+ "./translations": {
39
+ "source": "./src/translations.ts",
40
+ "types": "./dist/types/src/translations.d.ts",
41
+ "browser": "./dist/lib/browser/translations.mjs",
42
+ "node": "./dist/lib/node-esm/translations.mjs"
43
+ },
44
+ "./components": {
45
+ "source": "./src/components/index.ts",
46
+ "browser": "./dist/lib/browser/components/index.mjs",
47
+ "node": "./dist/lib/node-esm/components/index.mjs",
48
+ "types": "./dist/types/src/components/index.d.ts"
49
+ },
50
+ "./hooks": {
51
+ "source": "./src/hooks/index.ts",
52
+ "browser": "./dist/lib/browser/hooks/index.mjs",
53
+ "node": "./dist/lib/node-esm/hooks/index.mjs",
54
+ "types": "./dist/types/src/hooks/index.d.ts"
55
+ },
36
56
  "./types": {
37
57
  "source": "./src/types/index.ts",
38
58
  "browser": "./dist/lib/browser/types/index.mjs",
@@ -41,16 +61,6 @@
41
61
  }
42
62
  },
43
63
  "types": "dist/types/src/index.d.ts",
44
- "typesVersions": {
45
- "*": {
46
- "meta": [
47
- "dist/types/src/meta.d.ts"
48
- ],
49
- "types": [
50
- "dist/types/src/types/index.d.ts"
51
- ]
52
- }
53
- },
54
64
  "files": [
55
65
  "dist",
56
66
  "src"
@@ -66,29 +76,29 @@
66
76
  "react-resize-detector": "^11.0.1",
67
77
  "three": "^0.178.0",
68
78
  "topojson-client": "^3.1.0",
69
- "@dxos/app-framework": "0.8.4-main.9be5663bfe",
70
- "@dxos/app-toolkit": "0.8.4-main.9be5663bfe",
71
- "@dxos/async": "0.8.4-main.9be5663bfe",
72
- "@dxos/echo": "0.8.4-main.9be5663bfe",
73
- "@dxos/client": "0.8.4-main.9be5663bfe",
74
- "@dxos/echo-query": "0.8.4-main.9be5663bfe",
75
- "@dxos/graph": "0.8.4-main.9be5663bfe",
76
- "@dxos/invariant": "0.8.4-main.9be5663bfe",
77
- "@dxos/operation": "0.8.4-main.9be5663bfe",
78
- "@dxos/log": "0.8.4-main.9be5663bfe",
79
- "@dxos/plugin-client": "0.8.4-main.9be5663bfe",
80
- "@dxos/plugin-graph": "0.8.4-main.9be5663bfe",
81
- "@dxos/plugin-search": "0.8.4-main.9be5663bfe",
82
- "@dxos/plugin-space": "0.8.4-main.9be5663bfe",
83
- "@dxos/react-client": "0.8.4-main.9be5663bfe",
84
- "@dxos/react-ui-attention": "0.8.4-main.9be5663bfe",
85
- "@dxos/react-ui-components": "0.8.4-main.9be5663bfe",
86
- "@dxos/react-ui-graph": "0.8.4-main.9be5663bfe",
87
- "@dxos/react-ui-stack": "0.8.4-main.9be5663bfe",
88
- "@dxos/react-ui-mosaic": "0.8.4-main.9be5663bfe",
89
- "@dxos/schema": "0.8.4-main.9be5663bfe",
90
- "@dxos/types": "0.8.4-main.9be5663bfe",
91
- "@dxos/util": "0.8.4-main.9be5663bfe"
79
+ "@dxos/app-framework": "0.8.4-main.abd8ff62ef",
80
+ "@dxos/async": "0.8.4-main.abd8ff62ef",
81
+ "@dxos/client": "0.8.4-main.abd8ff62ef",
82
+ "@dxos/compute": "0.8.4-main.abd8ff62ef",
83
+ "@dxos/app-toolkit": "0.8.4-main.abd8ff62ef",
84
+ "@dxos/echo": "0.8.4-main.abd8ff62ef",
85
+ "@dxos/echo-query": "0.8.4-main.abd8ff62ef",
86
+ "@dxos/graph": "0.8.4-main.abd8ff62ef",
87
+ "@dxos/invariant": "0.8.4-main.abd8ff62ef",
88
+ "@dxos/log": "0.8.4-main.abd8ff62ef",
89
+ "@dxos/plugin-client": "0.8.4-main.abd8ff62ef",
90
+ "@dxos/plugin-search": "0.8.4-main.abd8ff62ef",
91
+ "@dxos/plugin-space": "0.8.4-main.abd8ff62ef",
92
+ "@dxos/react-client": "0.8.4-main.abd8ff62ef",
93
+ "@dxos/react-ui-attention": "0.8.4-main.abd8ff62ef",
94
+ "@dxos/plugin-graph": "0.8.4-main.abd8ff62ef",
95
+ "@dxos/react-ui-components": "0.8.4-main.abd8ff62ef",
96
+ "@dxos/react-ui-graph": "0.8.4-main.abd8ff62ef",
97
+ "@dxos/react-ui-mosaic": "0.8.4-main.abd8ff62ef",
98
+ "@dxos/react-ui-stack": "0.8.4-main.abd8ff62ef",
99
+ "@dxos/schema": "0.8.4-main.abd8ff62ef",
100
+ "@dxos/types": "0.8.4-main.abd8ff62ef",
101
+ "@dxos/util": "0.8.4-main.abd8ff62ef"
92
102
  },
93
103
  "devDependencies": {
94
104
  "@types/d3": "^7.4.3",
@@ -100,19 +110,20 @@
100
110
  "@types/topojson-specification": "^1.0.5",
101
111
  "react": "~19.2.3",
102
112
  "react-dom": "~19.2.3",
103
- "vite": "^7.1.11",
104
- "@dxos/echo-generator": "0.8.4-main.9be5663bfe",
105
- "@dxos/random": "0.8.4-main.9be5663bfe",
106
- "@dxos/react-ui": "0.8.4-main.9be5663bfe",
107
- "@dxos/ui-theme": "0.8.4-main.9be5663bfe",
108
- "@dxos/storybook-utils": "0.8.4-main.9be5663bfe"
113
+ "vite": "^8.0.10",
114
+ "@dxos/echo-generator": "0.8.4-main.abd8ff62ef",
115
+ "@dxos/react-ui": "0.8.4-main.abd8ff62ef",
116
+ "@dxos/plugin-testing": "0.8.4-main.abd8ff62ef",
117
+ "@dxos/random": "0.8.4-main.abd8ff62ef",
118
+ "@dxos/storybook-utils": "0.8.4-main.abd8ff62ef",
119
+ "@dxos/ui-theme": "0.8.4-main.abd8ff62ef"
109
120
  },
110
121
  "peerDependencies": {
111
122
  "effect": "3.20.0",
112
123
  "react": "~19.2.3",
113
124
  "react-dom": "~19.2.3",
114
- "@dxos/react-ui": "0.8.4-main.9be5663bfe",
115
- "@dxos/ui-theme": "0.8.4-main.9be5663bfe"
125
+ "@dxos/react-ui": "0.8.4-main.abd8ff62ef",
126
+ "@dxos/ui-theme": "0.8.4-main.abd8ff62ef"
116
127
  },
117
128
  "publishConfig": {
118
129
  "access": "public"
@@ -0,0 +1,26 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ import { describe, test } from 'vitest';
6
+
7
+ import { ClientPlugin } from '@dxos/plugin-client';
8
+ import { createComposerTestApp } from '@dxos/plugin-testing/harness';
9
+
10
+ import { ExplorerPlugin } from '#plugin';
11
+
12
+ import { meta } from './meta';
13
+
14
+ const moduleId = (name: string) => `${meta.id}.module.${name}`;
15
+
16
+ describe('ExplorerPlugin', () => {
17
+ test('modules activate on the expected events', async ({ expect }) => {
18
+ await using harness = await createComposerTestApp({
19
+ plugins: [ClientPlugin({}), ExplorerPlugin()],
20
+ });
21
+
22
+ expect(harness.manager.getActive()).toEqual(
23
+ expect.arrayContaining([moduleId('metadata'), moduleId('schema'), moduleId('ReactSurface')]),
24
+ );
25
+ });
26
+ });
@@ -7,18 +7,17 @@ import * as Option from 'effect/Option';
7
7
 
8
8
  import { Plugin } from '@dxos/app-framework';
9
9
  import { AppPlugin } from '@dxos/app-toolkit';
10
+ import { Operation } from '@dxos/compute';
10
11
  import { Annotation, Type } from '@dxos/echo';
11
- import { Operation } from '@dxos/operation';
12
12
  import { SpaceOperation } from '@dxos/plugin-space/operations';
13
13
  import { type CreateObject } from '@dxos/plugin-space/types';
14
14
  import { ViewModel } from '@dxos/schema';
15
15
 
16
16
  import { ReactSurface } from '#capabilities';
17
17
  import { meta } from '#meta';
18
+ import { translations } from '#translations';
18
19
  import { ExplorerAction, Graph } from '#types';
19
20
 
20
- import { translations } from './translations';
21
-
22
21
  export const ExplorerPlugin = Plugin.define(meta).pipe(
23
22
  AppPlugin.addMetadataModule({
24
23
  metadata: {
@@ -48,3 +47,5 @@ export const ExplorerPlugin = Plugin.define(meta).pipe(
48
47
  AppPlugin.addTranslationsModule({ translations }),
49
48
  Plugin.make,
50
49
  );
50
+
51
+ export default ExplorerPlugin;
@@ -19,8 +19,10 @@ export default Capability.makeModule(() =>
19
19
  Surface.create({
20
20
  id: 'article',
21
21
  // TODO(wittjosiah): Split into multiple surfaces if this filter proves too strict for non-article roles.
22
- role: ['article', 'section'],
23
- filter: AppSurface.objectArticle(Graph.Graph),
22
+ filter: AppSurface.oneOf(
23
+ AppSurface.object(AppSurface.Article, Graph.Graph),
24
+ AppSurface.object(AppSurface.Section, Graph.Graph),
25
+ ),
24
26
  component: ({ data, role }) => {
25
27
  return <ExplorerContainer role={role} subject={data.subject} attendableId={data.attendableId} />;
26
28
  },
@@ -16,7 +16,7 @@ const random = (min: number, max: number) => Math.floor(Math.random() * (max - m
16
16
  */
17
17
  export const createTree = (spec: NumberOrNumberArray[] = [], createText?: () => string): Tree => {
18
18
  const tree = new Tree();
19
- Obj.change(tree.tree, () => {
19
+ Obj.update(tree.tree, () => {
20
20
  tree.root.data = { text: 'root' };
21
21
  });
22
22
 
@@ -128,7 +128,7 @@ describe('tree', () => {
128
128
 
129
129
  const tree = createTree();
130
130
  const node = tree.addNode(tree.root);
131
- Obj.change(tree.tree, () => {
131
+ Obj.update(tree.tree, () => {
132
132
  node.ref = Ref.make(task);
133
133
  });
134
134
  });
@@ -185,7 +185,7 @@ export class Tree {
185
185
  clear(): void {
186
186
  const root = this._tree.nodes[this._tree.root];
187
187
  root.children.length = 0;
188
- Obj.change(this._tree, (obj) => {
188
+ Obj.update(this._tree, (obj) => {
189
189
  obj.nodes = {
190
190
  [root.id]: root,
191
191
  };
@@ -202,7 +202,7 @@ export class Tree {
202
202
  }
203
203
 
204
204
  const nodeToAdd = node;
205
- Obj.change(this._tree, (obj) => {
205
+ Obj.update(this._tree, (obj) => {
206
206
  obj.nodes[nodeToAdd.id] = nodeToAdd;
207
207
  parent.children.splice(index ?? parent.children.length, 0, nodeToAdd.id);
208
208
  });
@@ -218,12 +218,12 @@ export class Tree {
218
218
  return undefined;
219
219
  }
220
220
 
221
- Obj.change(this._tree, (obj) => {
221
+ Obj.update(this._tree, (obj) => {
222
222
  delete obj.nodes[node.id];
223
223
  });
224
224
  const idx = parent.children.findIndex((child) => child === id);
225
225
  if (idx !== -1) {
226
- Obj.change(this._tree, () => {
226
+ Obj.update(this._tree, () => {
227
227
  parent.children.splice(idx, 1);
228
228
  });
229
229
  }
@@ -242,7 +242,7 @@ export class Tree {
242
242
  }
243
243
 
244
244
  const child = node.children[from];
245
- Obj.change(this._tree, () => {
245
+ Obj.update(this._tree, () => {
246
246
  node.children.splice(from, 1);
247
247
  node.children.splice(to, 0, child);
248
248
  });
@@ -264,7 +264,7 @@ export class Tree {
264
264
  }
265
265
 
266
266
  const previous = this.getNode(parent.children[idx - 1]);
267
- Obj.change(this._tree, () => {
267
+ Obj.update(this._tree, () => {
268
268
  parent.children.splice(idx, 1);
269
269
  previous.children.push(node.id);
270
270
  });
@@ -287,19 +287,19 @@ export class Tree {
287
287
  // Remove node from parent and get following siblings.
288
288
  const nodeIdx = parent.children.findIndex((id) => id === node.id);
289
289
  let rest: Key.ObjectId[] = [];
290
- Obj.change(this._tree, () => {
290
+ Obj.update(this._tree, () => {
291
291
  const removed = parent.children.splice(nodeIdx, parent.children.length - nodeIdx);
292
292
  rest = removed.slice(1); // Skip the node itself.
293
293
  });
294
294
 
295
295
  // Add to ancestor.
296
296
  const parentIdx = this.getChildNodes(ancestor).findIndex((n) => n.id === parent.id);
297
- Obj.change(this._tree, () => {
297
+ Obj.update(this._tree, () => {
298
298
  ancestor.children.splice(parentIdx + 1, 0, node.id);
299
299
  });
300
300
 
301
301
  // Transplant following siblings to current node.
302
- Obj.change(this._tree, () => {
302
+ Obj.update(this._tree, () => {
303
303
  node.children.push(...rest);
304
304
  });
305
305
  }
@@ -18,8 +18,8 @@ import { useGraphModel } from '#hooks';
18
18
 
19
19
  export type ExplorerContainerProps = AppSurface.ObjectArticleProps<View.View>;
20
20
 
21
- export const ExplorerContainer = ({ role, subject: view, attendableId: _attendableId }: ExplorerContainerProps) => {
22
- useObject(view);
21
+ export const ExplorerContainer = ({ role, subject, attendableId: _attendableId }: ExplorerContainerProps) => {
22
+ const [view] = useObject(subject);
23
23
  const space = view && getSpace(view);
24
24
  const [filter, setFilter] = useState<Filter.Any>();
25
25
  const model = useGraphModel(space, filter);
package/src/index.ts CHANGED
@@ -2,8 +2,10 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- export * from './components';
6
- export * from './hooks';
5
+ import { Plugin } from '@dxos/app-framework';
6
+
7
+ import { meta } from './meta';
8
+
7
9
  export * from './meta';
8
10
 
9
- export * from './ExplorerPlugin';
11
+ export const ExplorerPlugin = Plugin.lazy(meta, () => import('#plugin'));
@@ -4,7 +4,7 @@
4
4
 
5
5
  import { Type } from '@dxos/echo';
6
6
  import { type Resource } from '@dxos/react-ui';
7
- import { translations as componentsTranslations } from '@dxos/react-ui-components';
7
+ import { translations as componentsTranslations } from '@dxos/react-ui-components/translations';
8
8
 
9
9
  import { meta } from '#meta';
10
10
  import { Graph } from '#types';
@@ -24,7 +24,7 @@ const GraphSchema = Schema.Struct({
24
24
  version: '0.1.0',
25
25
  }),
26
26
  LabelAnnotation.set(['name']),
27
- ViewAnnotation.set(true),
27
+ ViewAnnotation.set(['view']),
28
28
  Annotation.IconAnnotation.set({
29
29
  icon: 'ph--graph--regular',
30
30
  hue: 'green',