@dxos/plugin-explorer 0.8.4-main.c1de068 → 0.8.4-main.dedc0f3

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 (80) hide show
  1. package/dist/lib/browser/{ExplorerContainer-OGHSHZD5.mjs → ExplorerContainer-7MTDS2TQ.mjs} +3 -3
  2. package/dist/lib/browser/{ExplorerContainer-OGHSHZD5.mjs.map → ExplorerContainer-7MTDS2TQ.mjs.map} +2 -2
  3. package/dist/lib/browser/{chunk-OAOY7SHY.mjs → chunk-2MKBRIUT.mjs} +6 -5
  4. package/dist/lib/browser/chunk-2MKBRIUT.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-J2BBZOSF.mjs → chunk-3YITRGGW.mjs} +23 -7
  6. package/dist/lib/browser/{chunk-J2BBZOSF.mjs.map → chunk-3YITRGGW.mjs.map} +3 -3
  7. package/dist/lib/browser/{chunk-EF4BFHTI.mjs → chunk-CZZ3DDR7.mjs} +1 -1
  8. package/dist/lib/browser/{chunk-EF4BFHTI.mjs.map → chunk-CZZ3DDR7.mjs.map} +2 -2
  9. package/dist/lib/browser/{chunk-PVFZFKQ6.mjs → chunk-VNOGW2JS.mjs} +34 -22
  10. package/dist/lib/browser/{chunk-PVFZFKQ6.mjs.map → chunk-VNOGW2JS.mjs.map} +3 -3
  11. package/dist/lib/browser/index.mjs +7 -7
  12. package/dist/lib/browser/index.mjs.map +3 -3
  13. package/dist/lib/browser/{intent-resolver-XH2UO2FM.mjs → intent-resolver-7MVEYNX7.mjs} +3 -3
  14. package/dist/lib/browser/{intent-resolver-XH2UO2FM.mjs.map → intent-resolver-7MVEYNX7.mjs.map} +3 -3
  15. package/dist/lib/browser/meta.json +1 -1
  16. package/dist/lib/browser/{react-surface-65VQ42HX.mjs → react-surface-VLGQKYBI.mjs} +4 -4
  17. package/dist/lib/browser/types/index.mjs +1 -1
  18. package/dist/lib/node-esm/{ExplorerContainer-6ON5NA2P.mjs → ExplorerContainer-OBSRVHZZ.mjs} +3 -3
  19. package/dist/lib/node-esm/{ExplorerContainer-6ON5NA2P.mjs.map → ExplorerContainer-OBSRVHZZ.mjs.map} +2 -2
  20. package/dist/lib/node-esm/{chunk-PPBUWC7F.mjs → chunk-3ODK27PU.mjs} +6 -5
  21. package/dist/lib/node-esm/chunk-3ODK27PU.mjs.map +7 -0
  22. package/dist/lib/node-esm/{chunk-VKCOKQRG.mjs → chunk-4GWDNZ4Z.mjs} +1 -1
  23. package/dist/lib/node-esm/{chunk-VKCOKQRG.mjs.map → chunk-4GWDNZ4Z.mjs.map} +2 -2
  24. package/dist/lib/node-esm/{chunk-4VMSNXYL.mjs → chunk-GFYXDQQV.mjs} +23 -7
  25. package/dist/lib/node-esm/{chunk-4VMSNXYL.mjs.map → chunk-GFYXDQQV.mjs.map} +3 -3
  26. package/dist/lib/node-esm/{chunk-S5A2EUSJ.mjs → chunk-ODMJ7DPA.mjs} +34 -22
  27. package/dist/lib/node-esm/{chunk-S5A2EUSJ.mjs.map → chunk-ODMJ7DPA.mjs.map} +3 -3
  28. package/dist/lib/node-esm/index.mjs +7 -7
  29. package/dist/lib/node-esm/index.mjs.map +3 -3
  30. package/dist/lib/node-esm/{intent-resolver-AGBBNA67.mjs → intent-resolver-NL3SR2XF.mjs} +3 -3
  31. package/dist/lib/node-esm/{intent-resolver-AGBBNA67.mjs.map → intent-resolver-NL3SR2XF.mjs.map} +3 -3
  32. package/dist/lib/node-esm/meta.json +1 -1
  33. package/dist/lib/node-esm/{react-surface-IJIMYAST.mjs → react-surface-BYJABDS5.mjs} +4 -4
  34. package/dist/lib/node-esm/types/index.mjs +1 -1
  35. package/dist/types/src/capabilities/index.d.ts +2 -2
  36. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  37. package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
  38. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  39. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  40. package/dist/types/src/components/Chart/Chart.d.ts.map +1 -1
  41. package/dist/types/src/components/Chart/Chart.stories.d.ts +5 -3
  42. package/dist/types/src/components/Chart/Chart.stories.d.ts.map +1 -1
  43. package/dist/types/src/components/ExplorerContainer.d.ts.map +1 -1
  44. package/dist/types/src/components/Globe/Globe.d.ts.map +1 -1
  45. package/dist/types/src/components/Globe/Globe.stories.d.ts +5 -3
  46. package/dist/types/src/components/Globe/Globe.stories.d.ts.map +1 -1
  47. package/dist/types/src/components/Graph/D3ForceGraph.stories.d.ts +17 -3
  48. package/dist/types/src/components/Graph/D3ForceGraph.stories.d.ts.map +1 -1
  49. package/dist/types/src/components/Graph/ForceGraph.stories.d.ts +10 -3
  50. package/dist/types/src/components/Graph/ForceGraph.stories.d.ts.map +1 -1
  51. package/dist/types/src/components/Graph/testing.d.ts +1 -1
  52. package/dist/types/src/components/Graph/testing.d.ts.map +1 -1
  53. package/dist/types/src/components/Tree/Tree.stories.d.ts +13 -15
  54. package/dist/types/src/components/Tree/Tree.stories.d.ts.map +1 -1
  55. package/dist/types/src/hooks/useGraphModel.d.ts +2 -2
  56. package/dist/types/src/hooks/useGraphModel.d.ts.map +1 -1
  57. package/dist/types/src/types/types.d.ts.map +1 -1
  58. package/dist/types/tsconfig.tsbuildinfo +1 -1
  59. package/package.json +32 -29
  60. package/src/ExplorerPlugin.tsx +2 -2
  61. package/src/capabilities/intent-resolver.ts +1 -1
  62. package/src/components/Chart/Chart.stories.tsx +4 -3
  63. package/src/components/Chart/Chart.tsx +1 -1
  64. package/src/components/ExplorerContainer.tsx +2 -1
  65. package/src/components/Globe/Globe.stories.tsx +9 -8
  66. package/src/components/Globe/Globe.tsx +1 -1
  67. package/src/components/Graph/D3ForceGraph.stories.tsx +10 -7
  68. package/src/components/Graph/D3ForceGraph.tsx +1 -1
  69. package/src/components/Graph/ForceGraph.stories.tsx +10 -7
  70. package/src/components/Graph/ForceGraph.tsx +1 -1
  71. package/src/components/Graph/testing.ts +2 -2
  72. package/src/components/Tree/Tree.stories.tsx +27 -19
  73. package/src/components/Tree/Tree.tsx +1 -1
  74. package/src/components/Tree/types/tree.test.ts +2 -1
  75. package/src/hooks/useGraphModel.ts +5 -4
  76. package/src/types/types.ts +2 -1
  77. package/dist/lib/browser/chunk-OAOY7SHY.mjs.map +0 -7
  78. package/dist/lib/node-esm/chunk-PPBUWC7F.mjs.map +0 -7
  79. /package/dist/lib/browser/{react-surface-65VQ42HX.mjs.map → react-surface-VLGQKYBI.mjs.map} +0 -0
  80. /package/dist/lib/node-esm/{react-surface-IJIMYAST.mjs.map → react-surface-BYJABDS5.mjs.map} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/plugin-explorer",
3
- "version": "0.8.4-main.c1de068",
3
+ "version": "0.8.4-main.dedc0f3",
4
4
  "description": "Braneframe data visualization plugin",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -10,16 +10,19 @@
10
10
  "type": "module",
11
11
  "exports": {
12
12
  ".": {
13
+ "source": "./src/index.ts",
13
14
  "types": "./dist/types/src/index.d.ts",
14
15
  "browser": "./dist/lib/browser/index.mjs",
15
16
  "node": "./dist/lib/node-esm/index.mjs"
16
17
  },
17
18
  "./meta": {
19
+ "source": "./src/meta.ts",
18
20
  "types": "./dist/types/src/meta.d.ts",
19
21
  "browser": "./dist/lib/browser/meta.mjs",
20
22
  "node": "./dist/lib/node-esm/meta.mjs"
21
23
  },
22
24
  "./types": {
25
+ "source": "./src/types/index.ts",
23
26
  "types": "./dist/types/src/types/index.d.ts",
24
27
  "browser": "./dist/lib/browser/types/index.mjs",
25
28
  "node": "./dist/lib/node-esm/types/index.mjs"
@@ -46,31 +49,31 @@
46
49
  "@preact-signals/safe-react": "^0.9.0",
47
50
  "@preact/signals-core": "^1.9.0",
48
51
  "d3": "^7.9.0",
49
- "effect": "3.17.0",
52
+ "effect": "3.17.7",
50
53
  "force-graph": "^1.49.4",
51
54
  "lodash.defaultsdeep": "^4.6.1",
52
55
  "react-resize-detector": "^11.0.1",
53
56
  "three": "^0.178.0",
54
57
  "topojson-client": "^3.1.0",
55
- "@dxos/app-framework": "0.8.4-main.c1de068",
56
- "@dxos/async": "0.8.4-main.c1de068",
57
- "@dxos/client": "0.8.4-main.c1de068",
58
- "@dxos/echo": "0.8.4-main.c1de068",
59
- "@dxos/echo-schema": "0.8.4-main.c1de068",
60
- "@dxos/invariant": "0.8.4-main.c1de068",
61
- "@dxos/graph": "0.8.4-main.c1de068",
62
- "@dxos/live-object": "0.8.4-main.c1de068",
63
- "@dxos/log": "0.8.4-main.c1de068",
64
- "@dxos/plugin-client": "0.8.4-main.c1de068",
65
- "@dxos/plugin-graph": "0.8.4-main.c1de068",
66
- "@dxos/plugin-space": "0.8.4-main.c1de068",
67
- "@dxos/plugin-search": "0.8.4-main.c1de068",
68
- "@dxos/react-client": "0.8.4-main.c1de068",
69
- "@dxos/react-ui-attention": "0.8.4-main.c1de068",
70
- "@dxos/react-ui-graph": "0.8.4-main.c1de068",
71
- "@dxos/react-ui-stack": "0.8.4-main.c1de068",
72
- "@dxos/util": "0.8.4-main.c1de068",
73
- "@dxos/schema": "0.8.4-main.c1de068"
58
+ "@dxos/app-framework": "0.8.4-main.dedc0f3",
59
+ "@dxos/async": "0.8.4-main.dedc0f3",
60
+ "@dxos/client": "0.8.4-main.dedc0f3",
61
+ "@dxos/echo": "0.8.4-main.dedc0f3",
62
+ "@dxos/echo-schema": "0.8.4-main.dedc0f3",
63
+ "@dxos/invariant": "0.8.4-main.dedc0f3",
64
+ "@dxos/graph": "0.8.4-main.dedc0f3",
65
+ "@dxos/live-object": "0.8.4-main.dedc0f3",
66
+ "@dxos/log": "0.8.4-main.dedc0f3",
67
+ "@dxos/plugin-client": "0.8.4-main.dedc0f3",
68
+ "@dxos/plugin-graph": "0.8.4-main.dedc0f3",
69
+ "@dxos/plugin-search": "0.8.4-main.dedc0f3",
70
+ "@dxos/react-client": "0.8.4-main.dedc0f3",
71
+ "@dxos/react-ui-attention": "0.8.4-main.dedc0f3",
72
+ "@dxos/plugin-space": "0.8.4-main.dedc0f3",
73
+ "@dxos/react-ui-graph": "0.8.4-main.dedc0f3",
74
+ "@dxos/react-ui-stack": "0.8.4-main.dedc0f3",
75
+ "@dxos/util": "0.8.4-main.dedc0f3",
76
+ "@dxos/schema": "0.8.4-main.dedc0f3"
74
77
  },
75
78
  "devDependencies": {
76
79
  "@types/d3": "^7.4.3",
@@ -82,19 +85,19 @@
82
85
  "@types/topojson-specification": "^1.0.5",
83
86
  "react": "~18.2.0",
84
87
  "react-dom": "~18.2.0",
85
- "vite": "5.4.7",
86
- "@dxos/echo-generator": "0.8.4-main.c1de068",
87
- "@dxos/random": "0.8.4-main.c1de068",
88
- "@dxos/react-ui": "0.8.4-main.c1de068",
89
- "@dxos/storybook-utils": "0.8.4-main.c1de068",
90
- "@dxos/react-ui-theme": "0.8.4-main.c1de068"
88
+ "vite": "7.1.1",
89
+ "@dxos/echo-generator": "0.8.4-main.dedc0f3",
90
+ "@dxos/random": "0.8.4-main.dedc0f3",
91
+ "@dxos/storybook-utils": "0.8.4-main.dedc0f3",
92
+ "@dxos/react-ui": "0.8.4-main.dedc0f3",
93
+ "@dxos/react-ui-theme": "0.8.4-main.dedc0f3"
91
94
  },
92
95
  "peerDependencies": {
93
96
  "effect": "^3.13.3",
94
97
  "react": "~18.2.0",
95
98
  "react-dom": "~18.2.0",
96
- "@dxos/react-ui": "0.8.4-main.c1de068",
97
- "@dxos/react-ui-theme": "0.8.4-main.c1de068"
99
+ "@dxos/react-ui": "0.8.4-main.dedc0f3",
100
+ "@dxos/react-ui-theme": "0.8.4-main.dedc0f3"
98
101
  },
99
102
  "publishConfig": {
100
103
  "access": "public"
@@ -2,7 +2,7 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { Capabilities, contributes, createIntent, defineModule, definePlugin, Events } from '@dxos/app-framework';
5
+ import { Capabilities, Events, contributes, createIntent, defineModule, definePlugin } from '@dxos/app-framework';
6
6
  import { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';
7
7
  import { SpaceCapabilities } from '@dxos/plugin-space';
8
8
  import { defineObjectForm } from '@dxos/plugin-space/types';
@@ -10,7 +10,7 @@ import { defineObjectForm } from '@dxos/plugin-space/types';
10
10
  import { IntentResolver, ReactSurface } from './capabilities';
11
11
  import { meta } from './meta';
12
12
  import { translations } from './translations';
13
- import { ViewType, ExplorerAction } from './types';
13
+ import { ExplorerAction, ViewType } from './types';
14
14
 
15
15
  export const ExplorerPlugin = () =>
16
16
  definePlugin(meta, [
@@ -2,7 +2,7 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { contributes, Capabilities, createResolver } from '@dxos/app-framework';
5
+ import { Capabilities, contributes, createResolver } from '@dxos/app-framework';
6
6
  import { Obj } from '@dxos/echo';
7
7
 
8
8
  import { ExplorerAction, ViewType } from '../types';
@@ -10,9 +10,10 @@ import React from 'react';
10
10
  import { ClientRepeater } from '@dxos/react-client/testing';
11
11
  import { withLayout, withTheme } from '@dxos/storybook-utils';
12
12
 
13
- import { Chart } from './Chart';
14
13
  import CitiesData from '../../../data/cities.js';
15
14
 
15
+ import { Chart } from './Chart';
16
+
16
17
  // TODO(burdon): Generate data with geo lat/lng.
17
18
  // TODO(burdon): How to provide geo service via agent?
18
19
 
@@ -32,10 +33,10 @@ const Story = () => {
32
33
  // TODO(burdon): Change to decorator.
33
34
  export const Default = () => <ClientRepeater component={Story} />;
34
35
 
35
- const meta: Meta<typeof Chart> = {
36
+ const meta = {
36
37
  title: 'plugins/plugin-explorer/Chart',
37
38
  component: Chart,
38
39
  decorators: [withTheme, withLayout({ fullscreen: true })],
39
- };
40
+ } satisfies Meta<typeof Chart>;
40
41
 
41
42
  export default meta;
@@ -7,7 +7,7 @@ import { type DotOptions } from '@observablehq/plot';
7
7
  import React, { useEffect } from 'react';
8
8
  import { useResizeDetector } from 'react-resize-detector';
9
9
 
10
- import { type Accessor, createAdapter, type Point } from '../plot';
10
+ import { type Accessor, type Point, createAdapter } from '../plot';
11
11
 
12
12
  const defaultOptions: DotOptions = {
13
13
  r: 4,
@@ -8,10 +8,11 @@ import { useGlobalSearch } from '@dxos/plugin-search';
8
8
  import { getSpace } from '@dxos/react-client/echo';
9
9
  import { StackItem } from '@dxos/react-ui-stack';
10
10
 
11
- import { D3ForceGraph } from './Graph';
12
11
  import { useGraphModel } from '../hooks';
13
12
  import { type ViewType } from '../types';
14
13
 
14
+ import { D3ForceGraph } from './Graph';
15
+
15
16
  type ExplorerContainerProps = {
16
17
  role: string;
17
18
  view: ViewType;
@@ -4,7 +4,7 @@
4
4
 
5
5
  import '@dxos-theme';
6
6
 
7
- import { plot, sphere, geo, graticule, dot } from '@observablehq/plot';
7
+ import { dot, geo, graticule, plot, sphere } from '@observablehq/plot';
8
8
  import { type Meta } from '@storybook/react-vite';
9
9
  import { geoCircle } from 'd3';
10
10
  import React, { useEffect } from 'react';
@@ -14,10 +14,11 @@ import { feature } from 'topojson-client';
14
14
  import { ClientRepeater } from '@dxos/react-client/testing';
15
15
  import { withLayout, withTheme } from '@dxos/storybook-utils';
16
16
 
17
- import { Globe } from './Globe';
18
17
  import CitiesData from '../../../data/cities.js';
19
18
  import CountriesData from '../../../data/countries-110m.js';
20
19
 
20
+ import { Globe } from './Globe';
21
+
21
22
  // TODO(burdon): Generate data with geo lat/lng.
22
23
  // TODO(burdon): How to provide geo service via agent?
23
24
 
@@ -80,13 +81,13 @@ const ExtendedStory = () => {
80
81
  return <div ref={containerRef} className='grow p-8' />;
81
82
  };
82
83
 
83
- export const Default = () => <ClientRepeater component={DefaultStory} createSpace />;
84
-
85
- export const Extended = () => <ClientRepeater component={ExtendedStory} createSpace />;
86
-
87
- const meta: Meta = {
84
+ const meta = {
88
85
  title: 'plugins/plugin-explorer/Globe',
89
86
  decorators: [withTheme, withLayout({ fullscreen: true })],
90
- };
87
+ } satisfies Meta;
91
88
 
92
89
  export default meta;
90
+
91
+ export const Default = () => <ClientRepeater component={DefaultStory} createSpace />;
92
+
93
+ export const Extended = () => <ClientRepeater component={ExtendedStory} createSpace />;
@@ -9,7 +9,7 @@ import { useResizeDetector } from 'react-resize-detector';
9
9
  import * as topojson from 'topojson-client';
10
10
 
11
11
  import CountriesData from '../../../data/countries-110m.js';
12
- import { type Accessor, createAdapter, type GeoLocation } from '../plot';
12
+ import { type Accessor, type GeoLocation, createAdapter } from '../plot';
13
13
 
14
14
  const defaultOptions: DotOptions = {
15
15
  r: 4,
@@ -4,7 +4,7 @@
4
4
 
5
5
  import '@dxos-theme';
6
6
 
7
- import { type Meta } from '@storybook/react-vite';
7
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
8
8
  import React, { useEffect, useState } from 'react';
9
9
 
10
10
  import { Obj } from '@dxos/echo';
@@ -14,13 +14,14 @@ import { type Space } from '@dxos/react-client/echo';
14
14
  import { withClientProvider } from '@dxos/react-client/testing';
15
15
  import { DataType } from '@dxos/schema';
16
16
  import { type ValueGenerator } from '@dxos/schema/testing';
17
- import { withLayout, withTheme, render } from '@dxos/storybook-utils';
17
+ import { render, withLayout, withTheme } from '@dxos/storybook-utils';
18
18
 
19
- import { D3ForceGraph } from './D3ForceGraph';
20
- import { generate } from './testing';
21
19
  import { useGraphModel } from '../../hooks';
22
20
  import { ViewType } from '../../types';
23
21
 
22
+ import { D3ForceGraph } from './D3ForceGraph';
23
+ import { generate } from './testing';
24
+
24
25
  const generator = faker as any as ValueGenerator;
25
26
 
26
27
  faker.seed(1);
@@ -45,7 +46,7 @@ const DefaultStory = () => {
45
46
  return <D3ForceGraph model={model} />;
46
47
  };
47
48
 
48
- const meta: Meta = {
49
+ const meta = {
49
50
  title: 'plugins/plugin-explorer/D3ForceGraph',
50
51
  component: D3ForceGraph,
51
52
  render: render(DefaultStory),
@@ -57,8 +58,10 @@ const meta: Meta = {
57
58
  withTheme,
58
59
  withLayout({ fullscreen: true }),
59
60
  ],
60
- };
61
+ } satisfies Meta<typeof D3ForceGraph>;
61
62
 
62
63
  export default meta;
63
64
 
64
- export const Default = {};
65
+ type Story = StoryObj<typeof meta>;
66
+
67
+ export const Default: Story = {};
@@ -16,7 +16,7 @@ import {
16
16
  type SVGContext,
17
17
  } from '@dxos/react-ui-graph';
18
18
  import { getHashColor } from '@dxos/react-ui-theme';
19
- import { type SpaceGraphNode, type SpaceGraphModel, type SpaceGraphEdge } from '@dxos/schema';
19
+ import { type SpaceGraphEdge, type SpaceGraphModel, type SpaceGraphNode } from '@dxos/schema';
20
20
 
21
21
  import '@dxos/react-ui-graph/styles/graph.css';
22
22
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  import '@dxos-theme';
6
6
 
7
- import { type Meta } from '@storybook/react-vite';
7
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
8
8
  import React, { useEffect, useState } from 'react';
9
9
 
10
10
  import { Obj } from '@dxos/echo';
@@ -14,13 +14,14 @@ import { type Space } from '@dxos/react-client/echo';
14
14
  import { withClientProvider } from '@dxos/react-client/testing';
15
15
  import { DataType } from '@dxos/schema';
16
16
  import { type ValueGenerator } from '@dxos/schema/testing';
17
- import { withLayout, withTheme, render } from '@dxos/storybook-utils';
17
+ import { render, withLayout, withTheme } from '@dxos/storybook-utils';
18
18
 
19
- import { ForceGraph } from './ForceGraph';
20
- import { generate } from './testing';
21
19
  import { useGraphModel } from '../../hooks';
22
20
  import { ViewType } from '../../types';
23
21
 
22
+ import { ForceGraph } from './ForceGraph';
23
+ import { generate } from './testing';
24
+
24
25
  const generator = faker as any as ValueGenerator;
25
26
 
26
27
  faker.seed(1);
@@ -45,7 +46,7 @@ const DefaultStory = () => {
45
46
  return <ForceGraph model={model} />;
46
47
  };
47
48
 
48
- const meta: Meta = {
49
+ const meta = {
49
50
  title: 'plugins/plugin-explorer/ForceGraph',
50
51
  component: ForceGraph,
51
52
  render: render(DefaultStory),
@@ -57,8 +58,10 @@ const meta: Meta = {
57
58
  withTheme,
58
59
  withLayout({ fullscreen: true }),
59
60
  ],
60
- };
61
+ } satisfies Meta<typeof ForceGraph>;
61
62
 
62
63
  export default meta;
63
64
 
64
- export const Default = {};
65
+ type Story = StoryObj<typeof meta>;
66
+
67
+ export const Default: Story = {};
@@ -7,7 +7,7 @@ import NativeForceGraph from 'force-graph';
7
7
  import React, { type FC, useEffect, useRef, useState } from 'react';
8
8
  import { useResizeDetector } from 'react-resize-detector';
9
9
 
10
- import { filterObjectsSync, type SearchResult } from '@dxos/plugin-search';
10
+ import { type SearchResult, filterObjectsSync } from '@dxos/plugin-search';
11
11
  import { type SpaceGraphModel } from '@dxos/schema';
12
12
 
13
13
  import { GraphAdapter } from './adapter';
@@ -3,9 +3,9 @@
3
3
  //
4
4
 
5
5
  import { type Space } from '@dxos/client/echo';
6
- import { Query, Relation, type Obj } from '@dxos/echo';
6
+ import { type Obj, Query, Relation } from '@dxos/echo';
7
7
  import { DataType } from '@dxos/schema';
8
- import { createObjectFactory, type ValueGenerator, type TypeSpec } from '@dxos/schema/testing';
8
+ import { type TypeSpec, type ValueGenerator, createObjectFactory } from '@dxos/schema/testing';
9
9
  import { range } from '@dxos/util';
10
10
 
11
11
  const getObject = (objects: Obj.Any[]) => objects[Math.floor(Math.random() * objects.length)];
@@ -4,8 +4,8 @@
4
4
 
5
5
  import '@dxos-theme';
6
6
 
7
- import { type Meta } from '@storybook/react-vite';
8
- import React, { type FC, useEffect, useState } from 'react';
7
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
8
+ import React, { useEffect, useState } from 'react';
9
9
 
10
10
  import { faker } from '@dxos/random';
11
11
  import { useClient } from '@dxos/react-client';
@@ -13,14 +13,16 @@ import { type ClientRepeatedComponentProps, ClientRepeater } from '@dxos/react-c
13
13
  import { withLayout, withTheme } from '@dxos/storybook-utils';
14
14
 
15
15
  import { Tree, type TreeComponentProps } from './Tree';
16
- import { TreeType, Tree as TreeModel } from './types';
16
+ import { Tree as TreeModel, TreeType } from './types';
17
17
 
18
18
  // TODO(burdon): Storybook for Graph/Tree/Plot (generics); incl. GraphModel.
19
19
  // TODO(burdon): Type for all Explorer components (Space, Object, Query, etc.) incl.
20
20
 
21
21
  faker.seed(1);
22
22
 
23
- const Story: FC<ClientRepeatedComponentProps & { type?: TreeComponentProps<any>['variant'] }> = ({ type }) => {
23
+ type ComponentProps = ClientRepeatedComponentProps & { type?: TreeComponentProps<any>['variant'] };
24
+
25
+ const Component = ({ type }: ComponentProps) => {
24
26
  const client = useClient();
25
27
  const space = client.spaces.default;
26
28
  const [object, setObject] = useState<TreeType>();
@@ -38,32 +40,38 @@ const Story: FC<ClientRepeatedComponentProps & { type?: TreeComponentProps<any>[
38
40
  return <Tree space={space} selected={object?.id} variant={type} />;
39
41
  };
40
42
 
41
- export const Tidy = {
43
+ const DefaultStory = () => {
44
+ return <ClientRepeater component={Component} types={[TreeType]} createSpace />;
45
+ };
46
+
47
+ const meta = {
48
+ title: 'plugins/plugin-explorer/Tree',
49
+ component: Tree as any,
50
+ render: DefaultStory,
51
+ decorators: [withTheme, withLayout({ fullscreen: true })],
52
+ parameters: {
53
+ layout: 'fullscreen',
54
+ },
55
+ } satisfies Meta<typeof DefaultStory>;
56
+
57
+ export default meta;
58
+
59
+ type Story = StoryObj<typeof meta>;
60
+
61
+ export const Tidy: Story = {
42
62
  args: {
43
63
  type: 'tidy',
44
64
  },
45
65
  };
46
66
 
47
- export const Radial = {
67
+ export const Radial: Story = {
48
68
  args: {
49
69
  type: 'radial',
50
70
  },
51
71
  };
52
72
 
53
- export const Edge = {
73
+ export const Edge: Story = {
54
74
  args: {
55
75
  type: 'edge',
56
76
  },
57
77
  };
58
-
59
- const meta: Meta = {
60
- title: 'plugins/plugin-explorer/Tree',
61
- component: Tree,
62
- render: () => <ClientRepeater component={Story} types={[TreeType]} createSpace />,
63
- decorators: [withTheme, withLayout({ fullscreen: true })],
64
- parameters: {
65
- layout: 'fullscreen',
66
- },
67
- };
68
-
69
- export default meta;
@@ -10,7 +10,7 @@ import { SVG, type SVGContext } from '@dxos/react-ui-graph';
10
10
  import { SpaceGraphModel } from '@dxos/schema';
11
11
 
12
12
  import { HierarchicalEdgeBundling, RadialTree, TidyTree } from './layout';
13
- import { mapGraphToTreeData, type TreeNode } from './types';
13
+ import { type TreeNode, mapGraphToTreeData } from './types';
14
14
 
15
15
  // TODO(burdon): Create dge bundling graph using d3.hierarchy.
16
16
  // https://observablehq.com/@d3/hierarchical-edge-bundling?intent=fork
@@ -8,9 +8,10 @@ import { Obj, Ref } from '@dxos/echo';
8
8
  import { faker } from '@dxos/random';
9
9
  import { DataType } from '@dxos/schema';
10
10
 
11
- import { type Tree } from './tree';
12
11
  import { createTree } from '../testing';
13
12
 
13
+ import { type Tree } from './tree';
14
+
14
15
  faker.seed(0);
15
16
 
16
17
  const print = (tree: Tree) => {
@@ -4,7 +4,7 @@
4
4
 
5
5
  import { useEffect, useState } from 'react';
6
6
 
7
- import { type Filter, type Space } from '@dxos/client/echo';
7
+ import { type Filter, type Queue, type Space } from '@dxos/client/echo';
8
8
  import { SpaceGraphModel, type SpaceGraphModelOptions } from '@dxos/schema';
9
9
 
10
10
  // TODO(burdon): Factor out.
@@ -12,6 +12,7 @@ export const useGraphModel = (
12
12
  space: Space | undefined,
13
13
  filter?: Filter.Any | undefined,
14
14
  options?: SpaceGraphModelOptions,
15
+ queue?: Queue,
15
16
  ): SpaceGraphModel | undefined => {
16
17
  const [model, setModel] = useState<SpaceGraphModel | undefined>(undefined);
17
18
  useEffect(() => {
@@ -22,14 +23,14 @@ export const useGraphModel = (
22
23
  }
23
24
 
24
25
  // TODO(burdon): Does this need to be a dependency?
25
- if (!model) {
26
+ if (!model || model.queue !== queue) {
26
27
  const model = new SpaceGraphModel().setFilter(filter).setOptions(options);
27
- void model.open(space);
28
+ void model.open(space, queue);
28
29
  setModel(model);
29
30
  } else {
30
31
  model.setFilter(filter).setOptions(options);
31
32
  }
32
- }, [space, filter, options]);
33
+ }, [space, filter, options, queue]);
33
34
 
34
35
  return model;
35
36
  };
@@ -4,9 +4,10 @@
4
4
 
5
5
  import { Schema } from 'effect';
6
6
 
7
- import { ViewType } from './schema';
8
7
  import { EXPLORER_PLUGIN } from '../meta';
9
8
 
9
+ import { ViewType } from './schema';
10
+
10
11
  export namespace ExplorerAction {
11
12
  const EXPLORER_ACTION = `${EXPLORER_PLUGIN}/action`;
12
13
 
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/hooks/useGraphModel.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\nimport { type Filter, type Space } from '@dxos/client/echo';\nimport { SpaceGraphModel, type SpaceGraphModelOptions } from '@dxos/schema';\n\n// TODO(burdon): Factor out.\nexport const useGraphModel = (\n space: Space | undefined,\n filter?: Filter.Any | undefined,\n options?: SpaceGraphModelOptions,\n): SpaceGraphModel | undefined => {\n const [model, setModel] = useState<SpaceGraphModel | undefined>(undefined);\n useEffect(() => {\n if (!space) {\n void model?.close();\n setModel(undefined);\n return;\n }\n\n // TODO(burdon): Does this need to be a dependency?\n if (!model) {\n const model = new SpaceGraphModel().setFilter(filter).setOptions(options);\n void model.open(space);\n setModel(model);\n } else {\n model.setFilter(filter).setOptions(options);\n }\n }, [space, filter, options]);\n\n return model;\n};\n"],
5
- "mappings": ";AAIA,SAASA,WAAWC,gBAAgB;AAGpC,SAASC,uBAAoD;AAGtD,IAAMC,gBAAgB,CAC3BC,OACAC,QACAC,YAAAA;AAEA,QAAM,CAACC,OAAOC,QAAAA,IAAYC,SAAsCC,MAAAA;AAChEC,YAAU,MAAA;AACR,QAAI,CAACP,OAAO;AACV,WAAKG,OAAOK,MAAAA;AACZJ,eAASE,MAAAA;AACT;IACF;AAGA,QAAI,CAACH,OAAO;AACV,YAAMA,SAAQ,IAAIM,gBAAAA,EAAkBC,UAAUT,MAAAA,EAAQU,WAAWT,OAAAA;AACjE,WAAKC,OAAMS,KAAKZ,KAAAA;AAChBI,eAASD,MAAAA;IACX,OAAO;AACLA,YAAMO,UAAUT,MAAAA,EAAQU,WAAWT,OAAAA;IACrC;EACF,GAAG;IAACF;IAAOC;IAAQC;GAAQ;AAE3B,SAAOC;AACT;",
6
- "names": ["useEffect", "useState", "SpaceGraphModel", "useGraphModel", "space", "filter", "options", "model", "setModel", "useState", "undefined", "useEffect", "close", "SpaceGraphModel", "setFilter", "setOptions", "open"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/hooks/useGraphModel.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\nimport { type Filter, type Space } from '@dxos/client/echo';\nimport { SpaceGraphModel, type SpaceGraphModelOptions } from '@dxos/schema';\n\n// TODO(burdon): Factor out.\nexport const useGraphModel = (\n space: Space | undefined,\n filter?: Filter.Any | undefined,\n options?: SpaceGraphModelOptions,\n): SpaceGraphModel | undefined => {\n const [model, setModel] = useState<SpaceGraphModel | undefined>(undefined);\n useEffect(() => {\n if (!space) {\n void model?.close();\n setModel(undefined);\n return;\n }\n\n // TODO(burdon): Does this need to be a dependency?\n if (!model) {\n const model = new SpaceGraphModel().setFilter(filter).setOptions(options);\n void model.open(space);\n setModel(model);\n } else {\n model.setFilter(filter).setOptions(options);\n }\n }, [space, filter, options]);\n\n return model;\n};\n"],
5
- "mappings": ";;;AAIA,SAASA,WAAWC,gBAAgB;AAGpC,SAASC,uBAAoD;AAGtD,IAAMC,gBAAgB,CAC3BC,OACAC,QACAC,YAAAA;AAEA,QAAM,CAACC,OAAOC,QAAAA,IAAYC,SAAsCC,MAAAA;AAChEC,YAAU,MAAA;AACR,QAAI,CAACP,OAAO;AACV,WAAKG,OAAOK,MAAAA;AACZJ,eAASE,MAAAA;AACT;IACF;AAGA,QAAI,CAACH,OAAO;AACV,YAAMA,SAAQ,IAAIM,gBAAAA,EAAkBC,UAAUT,MAAAA,EAAQU,WAAWT,OAAAA;AACjE,WAAKC,OAAMS,KAAKZ,KAAAA;AAChBI,eAASD,MAAAA;IACX,OAAO;AACLA,YAAMO,UAAUT,MAAAA,EAAQU,WAAWT,OAAAA;IACrC;EACF,GAAG;IAACF;IAAOC;IAAQC;GAAQ;AAE3B,SAAOC;AACT;",
6
- "names": ["useEffect", "useState", "SpaceGraphModel", "useGraphModel", "space", "filter", "options", "model", "setModel", "useState", "undefined", "useEffect", "close", "SpaceGraphModel", "setFilter", "setOptions", "open"]
7
- }