@dxos/plugin-explorer 0.8.0 → 0.8.1-main.013e445
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.
- package/dist/lib/browser/{ExplorerContainer-GJTCBEM4.mjs → ExplorerContainer-3FC557MG.mjs} +2 -2
- package/dist/lib/browser/{chunk-S3QNIEBS.mjs → chunk-4OFGICWF.mjs} +241 -2
- package/dist/lib/{node-esm/chunk-BRJI3QC2.mjs.map → browser/chunk-4OFGICWF.mjs.map} +4 -4
- package/dist/lib/browser/{chunk-PMHCTMKT.mjs → chunk-B3EX52V3.mjs} +2 -2
- package/dist/lib/browser/{chunk-QOKAZK4V.mjs → chunk-KYB47PZA.mjs} +1 -1
- package/dist/lib/browser/chunk-KYB47PZA.mjs.map +7 -0
- package/dist/lib/browser/chunk-X5CI43J6.mjs +205 -0
- package/dist/lib/browser/chunk-X5CI43J6.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +13 -20
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-UJNDAIDZ.mjs → intent-resolver-5UXBTZAM.mjs} +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/meta.mjs +1 -1
- package/dist/lib/browser/{react-surface-3X2V3VPN.mjs → react-surface-7HHUAS3J.mjs} +7 -6
- package/dist/lib/browser/react-surface-7HHUAS3J.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +2 -2
- package/dist/lib/node/{ExplorerContainer-RJT54IOS.cjs → ExplorerContainer-2DQFUEG7.cjs} +6 -6
- package/dist/lib/node/{chunk-5MTMJYC4.cjs → chunk-6VLMSRD5.cjs} +4 -4
- package/dist/lib/node/chunk-6VLMSRD5.cjs.map +7 -0
- package/dist/lib/node/chunk-AABHIUUW.cjs +236 -0
- package/dist/lib/node/chunk-AABHIUUW.cjs.map +7 -0
- package/dist/lib/node/{chunk-YUY7P7R2.cjs → chunk-C4DXEIBU.cjs} +6 -6
- package/dist/lib/node/{chunk-VSACDC6F.cjs → chunk-ZJL53DLS.cjs} +234 -8
- package/dist/lib/node/chunk-ZJL53DLS.cjs.map +7 -0
- package/dist/lib/node/index.cjs +31 -38
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/{intent-resolver-XQV24IAA.cjs → intent-resolver-WDMZJTJ5.cjs} +8 -8
- package/dist/lib/node/meta.cjs +3 -3
- package/dist/lib/node/meta.cjs.map +1 -1
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/{react-surface-36YIY7NA.cjs → react-surface-UKU6NFBS.cjs} +12 -11
- package/dist/lib/node/react-surface-UKU6NFBS.cjs.map +7 -0
- package/dist/lib/node/types/index.cjs +4 -4
- package/dist/lib/node/types/index.cjs.map +1 -1
- package/dist/lib/node-esm/{ExplorerContainer-TM3VIXVK.mjs → ExplorerContainer-RBGUFI5X.mjs} +2 -2
- package/dist/lib/node-esm/{chunk-BRJI3QC2.mjs → chunk-PIOV7IOO.mjs} +240 -2
- package/dist/lib/{browser/chunk-S3QNIEBS.mjs.map → node-esm/chunk-PIOV7IOO.mjs.map} +4 -4
- package/dist/lib/node-esm/{chunk-UHJZUVRI.mjs → chunk-RKQR2GVZ.mjs} +1 -1
- package/dist/lib/node-esm/chunk-RKQR2GVZ.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-TI3P4L2P.mjs +207 -0
- package/dist/lib/node-esm/chunk-TI3P4L2P.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-57K7ORAW.mjs → chunk-WJ6AML7W.mjs} +2 -2
- package/dist/lib/node-esm/index.mjs +13 -20
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{intent-resolver-RZQ3EEOE.mjs → intent-resolver-KBRYGW6I.mjs} +3 -3
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/meta.mjs +1 -1
- package/dist/lib/node-esm/{react-surface-YDY7IBMY.mjs → react-surface-UZYRBRXP.mjs} +7 -6
- package/dist/lib/node-esm/react-surface-UZYRBRXP.mjs.map +7 -0
- package/dist/lib/node-esm/types/index.mjs +2 -2
- package/dist/types/src/ExplorerPlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/components/Chart/Chart.d.ts +2 -1
- package/dist/types/src/components/Chart/Chart.d.ts.map +1 -1
- package/dist/types/src/components/Chart/Chart.stories.d.ts +2 -1
- package/dist/types/src/components/Chart/Chart.stories.d.ts.map +1 -1
- package/dist/types/src/components/ExplorerContainer.d.ts +2 -1
- package/dist/types/src/components/ExplorerContainer.d.ts.map +1 -1
- package/dist/types/src/components/Globe/Globe.d.ts +2 -1
- package/dist/types/src/components/Globe/Globe.d.ts.map +1 -1
- package/dist/types/src/components/Globe/Globe.stories.d.ts +3 -2
- package/dist/types/src/components/Globe/Globe.stories.d.ts.map +1 -1
- package/dist/types/src/components/Graph/Graph.d.ts +0 -3
- package/dist/types/src/components/Graph/Graph.d.ts.map +1 -1
- package/dist/types/src/components/Graph/Graph.stories.d.ts +1 -1
- package/dist/types/src/components/Graph/Graph.stories.d.ts.map +1 -1
- package/dist/types/src/components/Graph/graph-model.d.ts.map +1 -1
- package/dist/types/src/components/Tree/Tree.d.ts +2 -1
- package/dist/types/src/components/Tree/Tree.d.ts.map +1 -1
- package/dist/types/src/components/Tree/Tree.stories.d.ts.map +1 -1
- package/dist/types/src/components/Tree/types.d.ts +1 -1
- package/dist/types/src/components/Tree/types.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +1 -1
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +2 -9
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +2 -6
- package/dist/types/src/translations.d.ts.map +1 -1
- package/package.json +26 -26
- package/src/ExplorerPlugin.tsx +1 -2
- package/src/capabilities/react-surface.tsx +2 -1
- package/src/components/Graph/Graph.stories.tsx +2 -2
- package/src/components/Graph/Graph.tsx +16 -142
- package/src/components/Graph/graph-model.ts +2 -0
- package/src/components/Tree/Tree.stories.tsx +3 -36
- package/src/components/Tree/types.ts +2 -1
- package/src/meta.ts +2 -2
- package/src/translations.ts +1 -2
- package/dist/lib/browser/chunk-QOKAZK4V.mjs.map +0 -7
- package/dist/lib/browser/chunk-YQL7YE6N.mjs +0 -546
- package/dist/lib/browser/chunk-YQL7YE6N.mjs.map +0 -7
- package/dist/lib/browser/react-surface-3X2V3VPN.mjs.map +0 -7
- package/dist/lib/node/chunk-5MTMJYC4.cjs.map +0 -7
- package/dist/lib/node/chunk-VSACDC6F.cjs.map +0 -7
- package/dist/lib/node/chunk-YH4QYCZH.cjs +0 -567
- package/dist/lib/node/chunk-YH4QYCZH.cjs.map +0 -7
- package/dist/lib/node/react-surface-36YIY7NA.cjs.map +0 -7
- package/dist/lib/node-esm/chunk-3KRWHGBM.mjs +0 -548
- package/dist/lib/node-esm/chunk-3KRWHGBM.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-UHJZUVRI.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-YDY7IBMY.mjs.map +0 -7
- /package/dist/lib/browser/{ExplorerContainer-GJTCBEM4.mjs.map → ExplorerContainer-3FC557MG.mjs.map} +0 -0
- /package/dist/lib/browser/{chunk-PMHCTMKT.mjs.map → chunk-B3EX52V3.mjs.map} +0 -0
- /package/dist/lib/browser/{intent-resolver-UJNDAIDZ.mjs.map → intent-resolver-5UXBTZAM.mjs.map} +0 -0
- /package/dist/lib/node/{ExplorerContainer-RJT54IOS.cjs.map → ExplorerContainer-2DQFUEG7.cjs.map} +0 -0
- /package/dist/lib/node/{chunk-YUY7P7R2.cjs.map → chunk-C4DXEIBU.cjs.map} +0 -0
- /package/dist/lib/node/{intent-resolver-XQV24IAA.cjs.map → intent-resolver-WDMZJTJ5.cjs.map} +0 -0
- /package/dist/lib/node-esm/{ExplorerContainer-TM3VIXVK.mjs.map → ExplorerContainer-RBGUFI5X.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-57K7ORAW.mjs.map → chunk-WJ6AML7W.mjs.map} +0 -0
- /package/dist/lib/node-esm/{intent-resolver-RZQ3EEOE.mjs.map → intent-resolver-KBRYGW6I.mjs.map} +0 -0
|
@@ -4,100 +4,37 @@
|
|
|
4
4
|
|
|
5
5
|
import { forceLink, forceManyBody } from 'd3';
|
|
6
6
|
import ForceGraph from 'force-graph';
|
|
7
|
-
import React, { type FC, useEffect,
|
|
7
|
+
import React, { type FC, useEffect, useRef } from 'react';
|
|
8
8
|
import { useResizeDetector } from 'react-resize-detector';
|
|
9
9
|
|
|
10
|
-
import {
|
|
11
|
-
import { createSvgContext, defaultGridStyles, Grid, SVG, SVGRoot, Zoom } from '@dxos/gem-core';
|
|
12
|
-
import {
|
|
13
|
-
defaultStyles,
|
|
14
|
-
Graph as GraphComponent,
|
|
15
|
-
GraphForceProjector,
|
|
16
|
-
type GraphLayoutNode,
|
|
17
|
-
Markers,
|
|
18
|
-
} from '@dxos/gem-spore';
|
|
10
|
+
import { type Space } from '@dxos/client/echo';
|
|
19
11
|
import { filterObjectsSync, type SearchResult } from '@dxos/plugin-search';
|
|
20
|
-
import { useAsyncState
|
|
21
|
-
import { mx } from '@dxos/react-ui-theme';
|
|
22
|
-
import '@dxos/gem-spore/styles';
|
|
12
|
+
import { useAsyncState } from '@dxos/react-ui';
|
|
23
13
|
|
|
24
|
-
import {
|
|
25
|
-
import { Tree } from '../Tree';
|
|
26
|
-
|
|
27
|
-
type Slots = {
|
|
28
|
-
root?: { className?: string };
|
|
29
|
-
grid?: { className?: string };
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
const slots: Slots = {};
|
|
33
|
-
|
|
34
|
-
const colors = [
|
|
35
|
-
'[&>circle]:!fill-black-300 [&>circle]:!stroke-black-600',
|
|
36
|
-
'[&>circle]:!fill-slate-300 [&>circle]:!stroke-slate-600',
|
|
37
|
-
'[&>circle]:!fill-green-300 [&>circle]:!stroke-green-600',
|
|
38
|
-
'[&>circle]:!fill-sky-300 [&>circle]:!stroke-sky-600',
|
|
39
|
-
'[&>circle]:!fill-cyan-300 [&>circle]:!stroke-cyan-600',
|
|
40
|
-
'[&>circle]:!fill-rose-300 [&>circle]:!stroke-rose-600',
|
|
41
|
-
'[&>circle]:!fill-purple-300 [&>circle]:!stroke-purple-600',
|
|
42
|
-
'[&>circle]:!fill-orange-300 [&>circle]:!stroke-orange-600',
|
|
43
|
-
'[&>circle]:!fill-teal-300 [&>circle]:!stroke-teal-600',
|
|
44
|
-
'[&>circle]:!fill-indigo-300 [&>circle]:!stroke-indigo-600',
|
|
45
|
-
];
|
|
14
|
+
import { SpaceGraphModel } from './graph-model';
|
|
46
15
|
|
|
47
16
|
export type GraphProps = {
|
|
48
17
|
space: Space;
|
|
49
18
|
match?: RegExp;
|
|
50
|
-
grid?: boolean;
|
|
51
|
-
svg?: boolean;
|
|
52
19
|
};
|
|
53
20
|
|
|
54
|
-
export const Graph: FC<GraphProps> = ({ space, match
|
|
55
|
-
const {
|
|
56
|
-
const
|
|
21
|
+
export const Graph: FC<GraphProps> = ({ space, match }) => {
|
|
22
|
+
const { ref, width, height } = useResizeDetector({ refreshRate: 200 });
|
|
23
|
+
const rootRef = useRef<HTMLDivElement>(null);
|
|
24
|
+
const forceGraph = useRef<ForceGraph>();
|
|
57
25
|
|
|
58
26
|
const [model] = useAsyncState(
|
|
59
27
|
async () => (space ? new SpaceGraphModel({ schema: true }).open(space) : undefined),
|
|
60
28
|
[space],
|
|
61
29
|
);
|
|
62
30
|
|
|
63
|
-
const context = createSvgContext();
|
|
64
|
-
const projector = useMemo(
|
|
65
|
-
() =>
|
|
66
|
-
new GraphForceProjector<EchoGraphNode>(context, {
|
|
67
|
-
forces: {
|
|
68
|
-
manyBody: {
|
|
69
|
-
strength: -100,
|
|
70
|
-
},
|
|
71
|
-
link: {
|
|
72
|
-
distance: 100,
|
|
73
|
-
},
|
|
74
|
-
radial: {
|
|
75
|
-
radius: 150,
|
|
76
|
-
strength: 0.05,
|
|
77
|
-
},
|
|
78
|
-
},
|
|
79
|
-
attributes: {
|
|
80
|
-
radius: (node: GraphLayoutNode<EchoGraphNode>) => (node.data?.type === 'schema' ? 12 : 8),
|
|
81
|
-
},
|
|
82
|
-
}),
|
|
83
|
-
[],
|
|
84
|
-
);
|
|
85
|
-
|
|
86
31
|
const filteredRef = useRef<SearchResult[]>();
|
|
87
32
|
filteredRef.current = filterObjectsSync(model?.objects ?? [], match);
|
|
88
|
-
useEffect(() => {
|
|
89
|
-
void projector.start();
|
|
90
|
-
}, [match]);
|
|
91
|
-
|
|
92
|
-
const [colorMap] = useState(new Map<string, string>());
|
|
93
|
-
|
|
94
|
-
// https://github.com/vasturiano/force-graph
|
|
95
|
-
const { ref, width, height } = useResizeDetector();
|
|
96
|
-
const rootRef = useRef<HTMLDivElement>(null);
|
|
97
|
-
const forceGraph = useRef<ForceGraph>();
|
|
98
33
|
|
|
99
34
|
useEffect(() => {
|
|
100
35
|
if (rootRef.current) {
|
|
36
|
+
// https://github.com/vasturiano/force-graph
|
|
37
|
+
// https://github.com/vasturiano/3d-force-graph
|
|
101
38
|
forceGraph.current = new ForceGraph(rootRef.current)
|
|
102
39
|
.nodeRelSize(6)
|
|
103
40
|
.nodeLabel((node: any) => {
|
|
@@ -117,7 +54,6 @@ export const Graph: FC<GraphProps> = ({ space, match, grid, svg }) => {
|
|
|
117
54
|
};
|
|
118
55
|
}, []);
|
|
119
56
|
|
|
120
|
-
// Update.
|
|
121
57
|
useEffect(() => {
|
|
122
58
|
if (forceGraph.current && width && height && model) {
|
|
123
59
|
forceGraph.current
|
|
@@ -125,7 +61,7 @@ export const Graph: FC<GraphProps> = ({ space, match, grid, svg }) => {
|
|
|
125
61
|
.width(width)
|
|
126
62
|
.height(height)
|
|
127
63
|
.onEngineStop(() => {
|
|
128
|
-
|
|
64
|
+
handleZoomToFit();
|
|
129
65
|
})
|
|
130
66
|
|
|
131
67
|
// https://github.com/vasturiano/force-graph?tab=readme-ov-file#force-engine-d3-force-configuration
|
|
@@ -134,11 +70,10 @@ export const Graph: FC<GraphProps> = ({ space, match, grid, svg }) => {
|
|
|
134
70
|
.d3Force('charge', forceManyBody().strength(-30))
|
|
135
71
|
// .d3AlphaDecay(0.0228)
|
|
136
72
|
// .d3VelocityDecay(0.4)
|
|
137
|
-
.warmupTicks(100)
|
|
138
|
-
// .cooldownTime(1000)
|
|
139
73
|
|
|
140
|
-
//
|
|
141
74
|
.graphData(model.graph)
|
|
75
|
+
.warmupTicks(100)
|
|
76
|
+
.cooldownTime(1000)
|
|
142
77
|
.resumeAnimation();
|
|
143
78
|
}
|
|
144
79
|
}, [model, width, height]);
|
|
@@ -147,70 +82,9 @@ export const Graph: FC<GraphProps> = ({ space, match, grid, svg }) => {
|
|
|
147
82
|
forceGraph.current?.zoomToFit(400, 40);
|
|
148
83
|
};
|
|
149
84
|
|
|
150
|
-
if (!svg) {
|
|
151
|
-
return (
|
|
152
|
-
<div ref={ref} className='relative grow' onClick={handleZoomToFit}>
|
|
153
|
-
<div ref={rootRef} className='absolute inset-0' />
|
|
154
|
-
</div>
|
|
155
|
-
);
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
if (selected) {
|
|
159
|
-
return <Tree space={space} selected={selected} variant='tidy' onNodeClick={() => setSelected(undefined)} />;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
85
|
return (
|
|
163
|
-
<
|
|
164
|
-
<
|
|
165
|
-
|
|
166
|
-
{grid && <Grid className={slots?.grid?.className ?? defaultGridStyles(themeMode)} />}
|
|
167
|
-
<Zoom extent={[1 / 2, 4]}>
|
|
168
|
-
<GraphComponent
|
|
169
|
-
model={model}
|
|
170
|
-
projector={projector}
|
|
171
|
-
drag
|
|
172
|
-
arrows
|
|
173
|
-
onSelect={(node) => setSelected(node?.data?.id)}
|
|
174
|
-
labels={{
|
|
175
|
-
text: (node: GraphLayoutNode<ReactiveEchoObject<any>>) => {
|
|
176
|
-
if (filteredRef.current?.length && !filteredRef.current.some((object) => object.id === node.data?.id)) {
|
|
177
|
-
return undefined;
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
// TODO(burdon): Use schema.
|
|
181
|
-
return node.data?.label ?? node.data?.title ?? node.data?.name ?? node.data?.id.slice(0, 8);
|
|
182
|
-
},
|
|
183
|
-
}}
|
|
184
|
-
attributes={{
|
|
185
|
-
node: (node: GraphLayoutNode<ReactiveEchoObject<any>>) => {
|
|
186
|
-
let className: string | undefined;
|
|
187
|
-
if (node.data) {
|
|
188
|
-
const { object } = node.data;
|
|
189
|
-
if (object) {
|
|
190
|
-
const typename = getTypename(object);
|
|
191
|
-
if (typename) {
|
|
192
|
-
className = colorMap.get(typename);
|
|
193
|
-
if (!className) {
|
|
194
|
-
className = colors[colorMap.size % colors.length];
|
|
195
|
-
colorMap.set(typename, className);
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
const selected = filteredRef.current?.some((object) => object.id === node.data?.id);
|
|
202
|
-
const blur = !selected && !!filteredRef.current?.length;
|
|
203
|
-
return {
|
|
204
|
-
class: mx(className, blur && 'opacity-70'),
|
|
205
|
-
};
|
|
206
|
-
},
|
|
207
|
-
link: () => ({
|
|
208
|
-
class: '[&>path]:!stroke-neutral-300 dark:[&>path]:!stroke-neutral-700',
|
|
209
|
-
}),
|
|
210
|
-
}}
|
|
211
|
-
/>
|
|
212
|
-
</Zoom>
|
|
213
|
-
</SVG>
|
|
214
|
-
</SVGRoot>
|
|
86
|
+
<div ref={ref} className='relative grow' onClick={handleZoomToFit}>
|
|
87
|
+
<div ref={rootRef} className='absolute inset-0' />
|
|
88
|
+
</div>
|
|
215
89
|
);
|
|
216
90
|
};
|
|
@@ -7,59 +7,26 @@ import '@dxos-theme';
|
|
|
7
7
|
import { type Meta } from '@storybook/react';
|
|
8
8
|
import React, { type FC, useEffect, useState } from 'react';
|
|
9
9
|
|
|
10
|
-
import {
|
|
11
|
-
import { TreeItemType, TreeType } from '@dxos/plugin-outliner/types';
|
|
10
|
+
import { TreeType, Tree as TreeModel } from '@dxos/plugin-outliner/types';
|
|
12
11
|
import { faker } from '@dxos/random';
|
|
13
12
|
import { useClient } from '@dxos/react-client';
|
|
14
13
|
import { type ClientRepeatedComponentProps, ClientRepeater } from '@dxos/react-client/testing';
|
|
15
14
|
import { withLayout, withTheme } from '@dxos/storybook-utils';
|
|
16
|
-
import { range } from '@dxos/util';
|
|
17
15
|
|
|
18
16
|
import { Tree, type TreeComponentProps } from './Tree';
|
|
19
17
|
|
|
20
18
|
// TODO(burdon): Storybook for Graph/Tree/Plot (generics); incl. GraphModel.
|
|
21
19
|
// TODO(burdon): Type for all Explorer components (Space, Object, Query, etc.) incl.
|
|
22
|
-
// TODO(burdon): Factor out to gem?
|
|
23
20
|
|
|
24
21
|
faker.seed(1);
|
|
25
22
|
|
|
26
|
-
const makeTreeItems = <T extends number>(count: T, items: TreeItemType[] = []) => {
|
|
27
|
-
return range(count, () => create(TreeItemType, { content: '', items: items.map((item) => makeRef(item)) }));
|
|
28
|
-
};
|
|
29
|
-
|
|
30
23
|
const Story: FC<ClientRepeatedComponentProps & { type?: TreeComponentProps<any>['variant'] }> = ({ type }) => {
|
|
31
24
|
const client = useClient();
|
|
32
25
|
const space = client.spaces.default;
|
|
33
26
|
const [object, setObject] = useState<TreeType>();
|
|
34
27
|
useEffect(() => {
|
|
35
28
|
setTimeout(() => {
|
|
36
|
-
const tree = create(
|
|
37
|
-
root: makeRef(
|
|
38
|
-
makeTreeItems(1, [
|
|
39
|
-
...makeTreeItems(7),
|
|
40
|
-
...makeTreeItems(1, [
|
|
41
|
-
...makeTreeItems(1),
|
|
42
|
-
...makeTreeItems(1, [
|
|
43
|
-
...makeTreeItems(3),
|
|
44
|
-
...makeTreeItems(1, makeTreeItems(2)),
|
|
45
|
-
...makeTreeItems(2),
|
|
46
|
-
...makeTreeItems(1, makeTreeItems(2)),
|
|
47
|
-
...makeTreeItems(2),
|
|
48
|
-
]),
|
|
49
|
-
...makeTreeItems(1),
|
|
50
|
-
]),
|
|
51
|
-
...makeTreeItems(2),
|
|
52
|
-
...makeTreeItems(1, [
|
|
53
|
-
...makeTreeItems(1),
|
|
54
|
-
...makeTreeItems(1, [...makeTreeItems(2), ...makeTreeItems(1, makeTreeItems(2))]),
|
|
55
|
-
...makeTreeItems(1),
|
|
56
|
-
]),
|
|
57
|
-
...makeTreeItems(2),
|
|
58
|
-
])[0],
|
|
59
|
-
),
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
space.db.add(tree);
|
|
29
|
+
const tree = space.db.add(TreeModel.create());
|
|
63
30
|
setObject(tree);
|
|
64
31
|
});
|
|
65
32
|
}, []);
|
|
@@ -92,7 +59,7 @@ export const Edge = {
|
|
|
92
59
|
const meta: Meta = {
|
|
93
60
|
title: 'plugins/plugin-explorer/Tree',
|
|
94
61
|
component: Tree,
|
|
95
|
-
render: () => <ClientRepeater component={Story} types={[TreeType
|
|
62
|
+
render: () => <ClientRepeater component={Story} types={[TreeType]} createSpace />,
|
|
96
63
|
decorators: [withTheme, withLayout({ fullscreen: true })],
|
|
97
64
|
parameters: {
|
|
98
65
|
layout: 'fullscreen',
|
package/src/meta.ts
CHANGED
|
@@ -6,7 +6,7 @@ import { type PluginMeta } from '@dxos/app-framework';
|
|
|
6
6
|
|
|
7
7
|
export const EXPLORER_PLUGIN = 'dxos.org/plugin/explorer';
|
|
8
8
|
|
|
9
|
-
export const meta = {
|
|
9
|
+
export const meta: PluginMeta = {
|
|
10
10
|
id: EXPLORER_PLUGIN,
|
|
11
11
|
name: 'Explorer',
|
|
12
12
|
description: 'Install this plugin to view a hypergraph of all objects inside of your Space.',
|
|
@@ -14,4 +14,4 @@ export const meta = {
|
|
|
14
14
|
source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/experimental/plugin-explorer',
|
|
15
15
|
tags: ['experimental'],
|
|
16
16
|
screenshots: ['https://dxos.network/plugin-details-explorer-dark.png'],
|
|
17
|
-
}
|
|
17
|
+
};
|
package/src/translations.ts
CHANGED
|
@@ -10,12 +10,11 @@ export default [
|
|
|
10
10
|
'en-US': {
|
|
11
11
|
[ViewType.typename]: {
|
|
12
12
|
'typename label': 'Explorer',
|
|
13
|
+
'object name placeholder': 'New explorer',
|
|
13
14
|
},
|
|
14
15
|
[EXPLORER_PLUGIN]: {
|
|
15
16
|
'plugin name': 'Explorer',
|
|
16
17
|
'object title label': 'Title',
|
|
17
|
-
'object title placeholder': 'New explorer',
|
|
18
|
-
'create object label': 'Create explorer',
|
|
19
18
|
},
|
|
20
19
|
},
|
|
21
20
|
},
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/meta.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const EXPLORER_PLUGIN = 'dxos.org/plugin/explorer';\n\nexport const meta = {\n id: EXPLORER_PLUGIN,\n name: 'Explorer',\n description: 'Install this plugin to view a hypergraph of all objects inside of your Space.',\n icon: 'ph--graph--regular',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/experimental/plugin-explorer',\n tags: ['experimental'],\n screenshots: ['https://dxos.network/plugin-details-explorer-dark.png'],\n} satisfies PluginMeta;\n"],
|
|
5
|
-
"mappings": ";AAMO,IAAMA,kBAAkB;AAExB,IAAMC,OAAO;EAClBC,IAAIF;EACJG,MAAM;EACNC,aAAa;EACbC,MAAM;EACNC,QAAQ;EACRC,MAAM;IAAC;;EACPC,aAAa;IAAC;;AAChB;",
|
|
6
|
-
"names": ["EXPLORER_PLUGIN", "meta", "id", "name", "description", "icon", "source", "tags", "screenshots"]
|
|
7
|
-
}
|