@dxos/plugin-explorer 0.8.3 → 0.8.4-main.28f8d3d

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 (108) hide show
  1. package/dist/lib/browser/{ExplorerContainer-DXL34I3F.mjs → ExplorerContainer-5QHLD2B2.mjs} +4 -4
  2. package/dist/lib/browser/{ExplorerContainer-DXL34I3F.mjs.map → ExplorerContainer-5QHLD2B2.mjs.map} +2 -2
  3. package/dist/lib/browser/{chunk-SLB2F5AO.mjs → chunk-2MKBRIUT.mjs} +7 -6
  4. package/dist/lib/browser/chunk-2MKBRIUT.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-73YTQHOT.mjs → chunk-CZZ3DDR7.mjs} +4 -4
  6. package/dist/lib/browser/{chunk-73YTQHOT.mjs.map → chunk-CZZ3DDR7.mjs.map} +2 -2
  7. package/dist/lib/browser/{chunk-Z5BGAHLD.mjs → chunk-L4U4MPSZ.mjs} +8 -5
  8. package/dist/lib/browser/{chunk-Z5BGAHLD.mjs.map → chunk-L4U4MPSZ.mjs.map} +3 -3
  9. package/dist/lib/browser/{chunk-JRKQNHS6.mjs → chunk-LGK64HLU.mjs} +18 -258
  10. package/dist/lib/browser/{chunk-JRKQNHS6.mjs.map → chunk-LGK64HLU.mjs.map} +3 -3
  11. package/dist/lib/browser/{chunk-OBAFAA5V.mjs → chunk-UL5EDJPE.mjs} +2 -2
  12. package/dist/lib/browser/index.mjs +19 -18
  13. package/dist/lib/browser/index.mjs.map +3 -3
  14. package/dist/lib/browser/{intent-resolver-JZKYVFQJ.mjs → intent-resolver-7MVEYNX7.mjs} +5 -5
  15. package/dist/lib/browser/{intent-resolver-JZKYVFQJ.mjs.map → intent-resolver-7MVEYNX7.mjs.map} +3 -3
  16. package/dist/lib/browser/meta.json +1 -1
  17. package/dist/lib/browser/meta.mjs +1 -1
  18. package/dist/lib/browser/{react-surface-IAEP2GBT.mjs → react-surface-FABRDFTF.mjs} +6 -6
  19. package/dist/lib/browser/types/index.mjs +2 -2
  20. package/dist/lib/node-esm/{ExplorerContainer-MFE7PXF4.mjs → ExplorerContainer-AMYAVLO4.mjs} +4 -4
  21. package/dist/lib/node-esm/{ExplorerContainer-MFE7PXF4.mjs.map → ExplorerContainer-AMYAVLO4.mjs.map} +2 -2
  22. package/dist/lib/node-esm/{chunk-VSORIAHH.mjs → chunk-3ODK27PU.mjs} +7 -6
  23. package/dist/lib/node-esm/chunk-3ODK27PU.mjs.map +7 -0
  24. package/dist/lib/node-esm/{chunk-N6VEANUZ.mjs → chunk-4GWDNZ4Z.mjs} +4 -4
  25. package/dist/lib/node-esm/{chunk-N6VEANUZ.mjs.map → chunk-4GWDNZ4Z.mjs.map} +2 -2
  26. package/dist/lib/node-esm/{chunk-AE7VHUJM.mjs → chunk-MCOXQ3ML.mjs} +8 -5
  27. package/dist/lib/node-esm/{chunk-AE7VHUJM.mjs.map → chunk-MCOXQ3ML.mjs.map} +3 -3
  28. package/dist/lib/node-esm/{chunk-3CMBLK6W.mjs → chunk-PIAXA43R.mjs} +2 -2
  29. package/dist/lib/node-esm/{chunk-IUFYOE44.mjs → chunk-W4ZNCGOD.mjs} +18 -258
  30. package/dist/lib/node-esm/{chunk-IUFYOE44.mjs.map → chunk-W4ZNCGOD.mjs.map} +3 -3
  31. package/dist/lib/node-esm/index.mjs +19 -18
  32. package/dist/lib/node-esm/index.mjs.map +3 -3
  33. package/dist/lib/node-esm/{intent-resolver-7G6ZKM6E.mjs → intent-resolver-NL3SR2XF.mjs} +5 -5
  34. package/dist/lib/node-esm/{intent-resolver-7G6ZKM6E.mjs.map → intent-resolver-NL3SR2XF.mjs.map} +3 -3
  35. package/dist/lib/node-esm/meta.json +1 -1
  36. package/dist/lib/node-esm/meta.mjs +1 -1
  37. package/dist/lib/node-esm/{react-surface-XBH3WZDL.mjs → react-surface-EYCZUAAI.mjs} +6 -6
  38. package/dist/lib/node-esm/types/index.mjs +2 -2
  39. package/dist/types/src/capabilities/intent-resolver.d.ts.map +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 +1 -1
  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 +1 -1
  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 +1 -1
  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 +1 -1
  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 +1 -1
  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/translations.d.ts +16 -23
  58. package/dist/types/src/translations.d.ts.map +1 -1
  59. package/dist/types/src/types/types.d.ts.map +1 -1
  60. package/dist/types/tsconfig.tsbuildinfo +1 -1
  61. package/package.json +40 -30
  62. package/src/ExplorerPlugin.tsx +3 -3
  63. package/src/capabilities/intent-resolver.ts +1 -1
  64. package/src/components/Chart/Chart.stories.tsx +3 -2
  65. package/src/components/Chart/Chart.tsx +1 -1
  66. package/src/components/ExplorerContainer.tsx +2 -1
  67. package/src/components/Globe/Globe.stories.tsx +4 -3
  68. package/src/components/Globe/Globe.tsx +1 -1
  69. package/src/components/Graph/D3ForceGraph.stories.tsx +5 -4
  70. package/src/components/Graph/D3ForceGraph.tsx +1 -1
  71. package/src/components/Graph/ForceGraph.stories.tsx +5 -4
  72. package/src/components/Graph/ForceGraph.tsx +2 -2
  73. package/src/components/Graph/testing.ts +2 -2
  74. package/src/components/Tree/Tree.stories.tsx +2 -2
  75. package/src/components/Tree/Tree.tsx +1 -1
  76. package/src/components/Tree/types/tree.test.ts +4 -3
  77. package/src/hooks/useGraphModel.ts +5 -4
  78. package/src/translations.ts +8 -6
  79. package/src/types/types.ts +2 -1
  80. package/dist/lib/browser/chunk-SLB2F5AO.mjs.map +0 -7
  81. package/dist/lib/node/ExplorerContainer-VUXH55VV.cjs +0 -61
  82. package/dist/lib/node/ExplorerContainer-VUXH55VV.cjs.map +0 -7
  83. package/dist/lib/node/chunk-4T4LCT5R.cjs +0 -52
  84. package/dist/lib/node/chunk-4T4LCT5R.cjs.map +0 -7
  85. package/dist/lib/node/chunk-BCDVG2CH.cjs +0 -44
  86. package/dist/lib/node/chunk-BCDVG2CH.cjs.map +0 -7
  87. package/dist/lib/node/chunk-MLRYW4WQ.cjs +0 -56
  88. package/dist/lib/node/chunk-MLRYW4WQ.cjs.map +0 -7
  89. package/dist/lib/node/chunk-SVU4VMYX.cjs +0 -11339
  90. package/dist/lib/node/chunk-SVU4VMYX.cjs.map +0 -7
  91. package/dist/lib/node/chunk-TY543HPV.cjs +0 -214
  92. package/dist/lib/node/chunk-TY543HPV.cjs.map +0 -7
  93. package/dist/lib/node/index.cjs +0 -130
  94. package/dist/lib/node/index.cjs.map +0 -7
  95. package/dist/lib/node/intent-resolver-G2MFNIXA.cjs +0 -39
  96. package/dist/lib/node/intent-resolver-G2MFNIXA.cjs.map +0 -7
  97. package/dist/lib/node/meta.cjs +0 -31
  98. package/dist/lib/node/meta.cjs.map +0 -7
  99. package/dist/lib/node/meta.json +0 -1
  100. package/dist/lib/node/react-surface-UJD5RGRZ.cjs +0 -53
  101. package/dist/lib/node/react-surface-UJD5RGRZ.cjs.map +0 -7
  102. package/dist/lib/node/types/index.cjs +0 -32
  103. package/dist/lib/node/types/index.cjs.map +0 -7
  104. package/dist/lib/node-esm/chunk-VSORIAHH.mjs.map +0 -7
  105. /package/dist/lib/browser/{chunk-OBAFAA5V.mjs.map → chunk-UL5EDJPE.mjs.map} +0 -0
  106. /package/dist/lib/browser/{react-surface-IAEP2GBT.mjs.map → react-surface-FABRDFTF.mjs.map} +0 -0
  107. /package/dist/lib/node-esm/{chunk-3CMBLK6W.mjs.map → chunk-PIAXA43R.mjs.map} +0 -0
  108. /package/dist/lib/node-esm/{react-surface-XBH3WZDL.mjs.map → react-surface-EYCZUAAI.mjs.map} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/plugin-explorer",
3
- "version": "0.8.3",
3
+ "version": "0.8.4-main.28f8d3d",
4
4
  "description": "Braneframe data visualization plugin",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -10,11 +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
  },
18
+ "./meta": {
19
+ "source": "./src/meta.ts",
20
+ "types": "./dist/types/src/meta.d.ts",
21
+ "browser": "./dist/lib/browser/meta.mjs",
22
+ "node": "./dist/lib/node-esm/meta.mjs"
23
+ },
17
24
  "./types": {
25
+ "source": "./src/types/index.ts",
18
26
  "types": "./dist/types/src/types/index.d.ts",
19
27
  "browser": "./dist/lib/browser/types/index.mjs",
20
28
  "node": "./dist/lib/node-esm/types/index.mjs"
@@ -23,6 +31,9 @@
23
31
  "types": "dist/types/src/index.d.ts",
24
32
  "typesVersions": {
25
33
  "*": {
34
+ "meta": [
35
+ "dist/types/src/meta.d.ts"
36
+ ],
26
37
  "types": [
27
38
  "dist/types/src/types/index.d.ts"
28
39
  ]
@@ -38,33 +49,33 @@
38
49
  "@preact-signals/safe-react": "^0.9.0",
39
50
  "@preact/signals-core": "^1.9.0",
40
51
  "d3": "^7.9.0",
41
- "effect": "^3.13.3",
52
+ "effect": "3.17.7",
42
53
  "force-graph": "^1.49.4",
43
54
  "lodash.defaultsdeep": "^4.6.1",
44
55
  "react-resize-detector": "^11.0.1",
56
+ "three": "^0.178.0",
45
57
  "topojson-client": "^3.1.0",
46
- "@dxos/async": "0.8.3",
47
- "@dxos/app-framework": "0.8.3",
48
- "@dxos/client": "0.8.3",
49
- "@dxos/echo-schema": "0.8.3",
50
- "@dxos/echo": "0.8.3",
51
- "@dxos/graph": "0.8.3",
52
- "@dxos/invariant": "0.8.3",
53
- "@dxos/live-object": "0.8.3",
54
- "@dxos/plugin-client": "0.8.3",
55
- "@dxos/log": "0.8.3",
56
- "@dxos/plugin-search": "0.8.3",
57
- "@dxos/plugin-graph": "0.8.3",
58
- "@dxos/plugin-space": "0.8.3",
59
- "@dxos/react-client": "0.8.3",
60
- "@dxos/react-ui-attention": "0.8.3",
61
- "@dxos/react-ui-graph": "0.8.3",
62
- "@dxos/schema": "0.8.3",
63
- "@dxos/util": "0.8.3",
64
- "@dxos/react-ui-stack": "0.8.3"
58
+ "@dxos/client": "0.8.4-main.28f8d3d",
59
+ "@dxos/echo": "0.8.4-main.28f8d3d",
60
+ "@dxos/app-framework": "0.8.4-main.28f8d3d",
61
+ "@dxos/echo-schema": "0.8.4-main.28f8d3d",
62
+ "@dxos/invariant": "0.8.4-main.28f8d3d",
63
+ "@dxos/graph": "0.8.4-main.28f8d3d",
64
+ "@dxos/async": "0.8.4-main.28f8d3d",
65
+ "@dxos/live-object": "0.8.4-main.28f8d3d",
66
+ "@dxos/log": "0.8.4-main.28f8d3d",
67
+ "@dxos/plugin-client": "0.8.4-main.28f8d3d",
68
+ "@dxos/plugin-graph": "0.8.4-main.28f8d3d",
69
+ "@dxos/plugin-search": "0.8.4-main.28f8d3d",
70
+ "@dxos/plugin-space": "0.8.4-main.28f8d3d",
71
+ "@dxos/react-client": "0.8.4-main.28f8d3d",
72
+ "@dxos/react-ui-attention": "0.8.4-main.28f8d3d",
73
+ "@dxos/react-ui-graph": "0.8.4-main.28f8d3d",
74
+ "@dxos/schema": "0.8.4-main.28f8d3d",
75
+ "@dxos/util": "0.8.4-main.28f8d3d",
76
+ "@dxos/react-ui-stack": "0.8.4-main.28f8d3d"
65
77
  },
66
78
  "devDependencies": {
67
- "@phosphor-icons/react": "^2.1.5",
68
79
  "@types/d3": "^7.4.3",
69
80
  "@types/d3-hierarchy": "^3.1.6",
70
81
  "@types/lodash.defaultsdeep": "^4.6.6",
@@ -75,19 +86,18 @@
75
86
  "react": "~18.2.0",
76
87
  "react-dom": "~18.2.0",
77
88
  "vite": "5.4.7",
78
- "@dxos/random": "0.8.3",
79
- "@dxos/react-ui": "0.8.3",
80
- "@dxos/echo-generator": "0.8.3",
81
- "@dxos/storybook-utils": "0.8.3",
82
- "@dxos/react-ui-theme": "0.8.3"
89
+ "@dxos/echo-generator": "0.8.4-main.28f8d3d",
90
+ "@dxos/storybook-utils": "0.8.4-main.28f8d3d",
91
+ "@dxos/react-ui": "0.8.4-main.28f8d3d",
92
+ "@dxos/random": "0.8.4-main.28f8d3d",
93
+ "@dxos/react-ui-theme": "0.8.4-main.28f8d3d"
83
94
  },
84
95
  "peerDependencies": {
85
- "@phosphor-icons/react": "^2.1.5",
86
96
  "effect": "^3.13.3",
87
97
  "react": "~18.2.0",
88
98
  "react-dom": "~18.2.0",
89
- "@dxos/react-ui-theme": "0.8.3",
90
- "@dxos/react-ui": "0.8.3"
99
+ "@dxos/react-ui": "0.8.4-main.28f8d3d",
100
+ "@dxos/react-ui-theme": "0.8.4-main.28f8d3d"
91
101
  },
92
102
  "publishConfig": {
93
103
  "access": "public"
@@ -2,15 +2,15 @@
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';
9
9
 
10
10
  import { IntentResolver, ReactSurface } from './capabilities';
11
11
  import { meta } from './meta';
12
- import translations from './translations';
13
- import { ViewType, ExplorerAction } from './types';
12
+ import { translations } from './translations';
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';
@@ -4,15 +4,16 @@
4
4
 
5
5
  import '@dxos-theme';
6
6
 
7
- import { type Meta } from '@storybook/react';
7
+ import { type Meta } from '@storybook/react-vite';
8
8
  import React from 'react';
9
9
 
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
 
@@ -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,8 +4,8 @@
4
4
 
5
5
  import '@dxos-theme';
6
6
 
7
- import { plot, sphere, geo, graticule, dot } from '@observablehq/plot';
8
- import { type Meta } from '@storybook/react';
7
+ import { dot, geo, graticule, plot, sphere } from '@observablehq/plot';
8
+ import { type Meta } from '@storybook/react-vite';
9
9
  import { geoCircle } from 'd3';
10
10
  import React, { useEffect } from 'react';
11
11
  import { useResizeDetector } from 'react-resize-detector';
@@ -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
 
@@ -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';
7
+ import { type Meta } 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);
@@ -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';
7
+ import { type Meta } 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);
@@ -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';
@@ -39,7 +39,7 @@ export const ForceGraph: FC<ForceGraphProps> = ({ model, match }) => {
39
39
  forceGraph.current = new NativeForceGraph(rootRef.current)
40
40
  // https://github.com/vasturiano/force-graph?tab=readme-ov-file#node-styling
41
41
  .nodeRelSize(6)
42
- .nodeLabel((node: any) => (node.type === 'schema' ? node.data.typename : node.data.label ?? node.id))
42
+ .nodeLabel((node: any) => (node.type === 'schema' ? node.data.typename : (node.data.label ?? node.id)))
43
43
  .nodeAutoColorBy((node: any) => (node.type === 'schema' ? 'schema' : node.data.typename))
44
44
 
45
45
  // https://github.com/vasturiano/force-graph?tab=readme-ov-file#link-styling
@@ -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,7 +4,7 @@
4
4
 
5
5
  import '@dxos-theme';
6
6
 
7
- import { type Meta } from '@storybook/react';
7
+ import { type Meta } from '@storybook/react-vite';
8
8
  import React, { type FC, useEffect, useState } from 'react';
9
9
 
10
10
  import { faker } from '@dxos/random';
@@ -13,7 +13,7 @@ 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.
@@ -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) => {
@@ -123,8 +124,8 @@ describe('tree', () => {
123
124
  });
124
125
 
125
126
  test('task', ({ expect }) => {
126
- const task = Obj.make(DataType.Task, { text: 'Test task.' });
127
- expect(task.text).to.eq('Test task.');
127
+ const task = Obj.make(DataType.Task, { title: 'Test task.' });
128
+ expect(task.title).to.eq('Test task.');
128
129
 
129
130
  const tree = createTree();
130
131
  const node = tree.addNode(tree.root);
@@ -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
  };
@@ -2,25 +2,27 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { Type } from '@dxos/echo';
5
+ import { type Resource } from '@dxos/react-ui';
6
6
 
7
- import { EXPLORER_PLUGIN } from './meta';
7
+ import { meta } from './meta';
8
8
  import { ViewType } from './types';
9
9
 
10
- export default [
10
+ export const translations = [
11
11
  {
12
12
  'en-US': {
13
- [Type.getTypename(ViewType)]: {
13
+ [ViewType.typename]: {
14
14
  'typename label': 'Explorer',
15
15
  'typename label_zero': 'Explorers',
16
16
  'typename label_one': 'Explorer',
17
17
  'typename label_other': 'Explorers',
18
18
  'object name placeholder': 'New explorer',
19
+ 'rename object label': 'Rename explorer',
20
+ 'delete object label': 'Delete explorer',
19
21
  },
20
- [EXPLORER_PLUGIN]: {
22
+ [meta.id]: {
21
23
  'plugin name': 'Explorer',
22
24
  'object title label': 'Title',
23
25
  },
24
26
  },
25
27
  },
26
- ];
28
+ ] as const satisfies Resource[];
@@ -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,61 +0,0 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var ExplorerContainer_VUXH55VV_exports = {};
30
- __export(ExplorerContainer_VUXH55VV_exports, {
31
- default: () => ExplorerContainer_default
32
- });
33
- module.exports = __toCommonJS(ExplorerContainer_VUXH55VV_exports);
34
- var import_chunk_4T4LCT5R = require("./chunk-4T4LCT5R.cjs");
35
- var import_chunk_TY543HPV = require("./chunk-TY543HPV.cjs");
36
- var import_tracking = require("@preact-signals/safe-react/tracking");
37
- var import_react = __toESM(require("react"));
38
- var import_plugin_search = require("@dxos/plugin-search");
39
- var import_echo = require("@dxos/react-client/echo");
40
- var import_react_ui_stack = require("@dxos/react-ui-stack");
41
- var ExplorerContainer = ({ role, view }) => {
42
- var _effect = (0, import_tracking.useSignals)();
43
- try {
44
- const space = (0, import_echo.getSpace)(view);
45
- const model = (0, import_chunk_4T4LCT5R.useGraphModel)(space);
46
- const { match } = (0, import_plugin_search.useGlobalSearch)();
47
- if (!space || !model) {
48
- return null;
49
- }
50
- return /* @__PURE__ */ import_react.default.createElement(import_react_ui_stack.StackItem.Content, {
51
- size: role === "section" ? "square" : "intrinsic"
52
- }, /* @__PURE__ */ import_react.default.createElement(import_chunk_TY543HPV.D3ForceGraph, {
53
- model,
54
- match
55
- }));
56
- } finally {
57
- _effect.f();
58
- }
59
- };
60
- var ExplorerContainer_default = ExplorerContainer;
61
- //# sourceMappingURL=ExplorerContainer-VUXH55VV.cjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/ExplorerContainer.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { useGlobalSearch } from '@dxos/plugin-search';\nimport { getSpace } from '@dxos/react-client/echo';\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport { D3ForceGraph } from './Graph';\nimport { useGraphModel } from '../hooks';\nimport { type ViewType } from '../types';\n\ntype ExplorerContainerProps = {\n role: string;\n view: ViewType;\n};\n\nconst ExplorerContainer = ({ role, view }: ExplorerContainerProps) => {\n const space = getSpace(view);\n const model = useGraphModel(space);\n const { match } = useGlobalSearch();\n\n if (!space || !model) {\n return null;\n }\n\n return (\n <StackItem.Content size={role === 'section' ? 'square' : 'intrinsic'}>\n <D3ForceGraph model={model} match={match} />\n </StackItem.Content>\n );\n};\n\nexport default ExplorerContainer;\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,mBAAkB;AAElB,2BAAgC;AAChC,kBAAyB;AACzB,4BAA0B;AAW1B,IAAMA,oBAAoB,CAAC,EAAEC,MAAMC,KAAI,MAA0B;;;AAC/D,UAAMC,YAAQC,sBAASF,IAAAA;AACvB,UAAMG,YAAQC,qCAAcH,KAAAA;AAC5B,UAAM,EAAEI,MAAK,QAAKC,sCAAAA;AAElB,QAAI,CAACL,SAAS,CAACE,OAAO;AACpB,aAAO;IACT;AAEA,WACE,6BAAAI,QAAA,cAACC,gCAAUC,SAAO;MAACC,MAAMX,SAAS,YAAY,WAAW;OACvD,6BAAAQ,QAAA,cAACI,oCAAAA;MAAaR;MAAcE;;;;;AAGlC;AAEA,IAAA,4BAAeP;",
6
- "names": ["ExplorerContainer", "role", "view", "space", "getSpace", "model", "useGraphModel", "match", "useGlobalSearch", "React", "StackItem", "Content", "size", "D3ForceGraph"]
7
- }
@@ -1,52 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var chunk_4T4LCT5R_exports = {};
20
- __export(chunk_4T4LCT5R_exports, {
21
- useGraphModel: () => useGraphModel
22
- });
23
- module.exports = __toCommonJS(chunk_4T4LCT5R_exports);
24
- var import_react = require("react");
25
- var import_schema = require("@dxos/schema");
26
- var useGraphModel = (space, filter, options) => {
27
- const [model, setModel] = (0, import_react.useState)(void 0);
28
- (0, import_react.useEffect)(() => {
29
- if (!space) {
30
- void model?.close();
31
- setModel(void 0);
32
- return;
33
- }
34
- if (!model) {
35
- const model2 = new import_schema.SpaceGraphModel().setFilter(filter).setOptions(options);
36
- void model2.open(space);
37
- setModel(model2);
38
- } else {
39
- model.setFilter(filter).setOptions(options);
40
- }
41
- }, [
42
- space,
43
- filter,
44
- options
45
- ]);
46
- return model;
47
- };
48
- // Annotate the CommonJS export names for ESM import in node:
49
- 0 && (module.exports = {
50
- useGraphModel
51
- });
52
- //# sourceMappingURL=chunk-4T4LCT5R.cjs.map
@@ -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,mBAAoC;AAGpC,oBAA6D;AAGtD,IAAMA,gBAAgB,CAC3BC,OACAC,QACAC,YAAAA;AAEA,QAAM,CAACC,OAAOC,QAAAA,QAAYC,uBAAsCC,MAAAA;AAChEC,8BAAU,MAAA;AACR,QAAI,CAACP,OAAO;AACV,WAAKG,OAAOK,MAAAA;AACZJ,eAASE,MAAAA;AACT;IACF;AAGA,QAAI,CAACH,OAAO;AACV,YAAMA,SAAQ,IAAIM,8BAAAA,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": ["useGraphModel", "space", "filter", "options", "model", "setModel", "useState", "undefined", "useEffect", "close", "SpaceGraphModel", "setFilter", "setOptions", "open"]
7
- }