@dxos/plugin-debug 0.7.3-staging.cc8dd3e → 0.7.3
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/{SpaceGenerator-2Z5WFX4T.mjs → SpaceGenerator-BQ3645OS.mjs} +22 -218
- package/dist/lib/browser/SpaceGenerator-BQ3645OS.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +9 -1
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/types/src/DebugPlugin.d.ts.map +1 -1
- package/dist/types/src/components/SpaceGenerator/ObjectGenerator.d.ts.map +1 -1
- package/dist/types/src/components/SpaceGenerator/draw-util.d.ts.map +1 -1
- package/package.json +41 -41
- package/src/DebugPlugin.tsx +16 -0
- package/src/components/SpaceGenerator/ObjectGenerator.tsx +22 -59
- package/src/components/SpaceGenerator/draw-util.ts +1 -10
- package/dist/lib/browser/SpaceGenerator-2Z5WFX4T.mjs.map +0 -7
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/plugin-debug",
|
|
3
|
-
"version": "0.7.3
|
|
3
|
+
"version": "0.7.3",
|
|
4
4
|
"description": "DXOS Surface plugin for testing.",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -40,40 +40,40 @@
|
|
|
40
40
|
"react-json-tree": "^0.18.0",
|
|
41
41
|
"react-resize-detector": "^11.0.1",
|
|
42
42
|
"workerize-loader": "^2.0.2",
|
|
43
|
-
"@dxos/app-framework": "0.7.3
|
|
44
|
-
"@dxos/
|
|
45
|
-
"@dxos/
|
|
46
|
-
"@dxos/
|
|
47
|
-
"@dxos/
|
|
48
|
-
"@dxos/
|
|
49
|
-
"@dxos/echo-
|
|
50
|
-
"@dxos/echo-
|
|
51
|
-
"@dxos/
|
|
52
|
-
"@dxos/
|
|
53
|
-
"@dxos/
|
|
54
|
-
"@dxos/live-object": "0.7.3
|
|
55
|
-
"@dxos/local-storage": "0.7.3
|
|
56
|
-
"@dxos/log": "0.7.3
|
|
57
|
-
"@dxos/plugin-
|
|
58
|
-
"@dxos/plugin-
|
|
59
|
-
"@dxos/plugin-graph": "0.7.3
|
|
60
|
-
"@dxos/plugin-markdown": "0.7.3
|
|
61
|
-
"@dxos/plugin-
|
|
62
|
-
"@dxos/plugin-
|
|
63
|
-
"@dxos/plugin-
|
|
64
|
-
"@dxos/plugin-
|
|
65
|
-
"@dxos/plugin-
|
|
66
|
-
"@dxos/plugin-
|
|
67
|
-
"@dxos/protocols": "0.7.3
|
|
68
|
-
"@dxos/random": "0.7.3
|
|
69
|
-
"@dxos/react-client": "0.7.3
|
|
70
|
-
"@dxos/react-hooks": "0.7.3
|
|
71
|
-
"@dxos/react-ui-attention": "0.7.3
|
|
72
|
-
"@dxos/react-ui-form": "0.7.3
|
|
73
|
-
"@dxos/react-ui-
|
|
74
|
-
"@dxos/react-ui-
|
|
75
|
-
"@dxos/util": "0.7.3
|
|
76
|
-
"@dxos/schema": "0.7.3
|
|
43
|
+
"@dxos/app-framework": "0.7.3",
|
|
44
|
+
"@dxos/config": "0.7.3",
|
|
45
|
+
"@dxos/client-services": "0.7.3",
|
|
46
|
+
"@dxos/automerge": "0.7.3",
|
|
47
|
+
"@dxos/devtools": "0.7.3",
|
|
48
|
+
"@dxos/async": "0.7.3",
|
|
49
|
+
"@dxos/echo-generator": "0.7.3",
|
|
50
|
+
"@dxos/echo-pipeline": "0.7.3",
|
|
51
|
+
"@dxos/echo-schema": "0.7.3",
|
|
52
|
+
"@dxos/keys": "0.7.3",
|
|
53
|
+
"@dxos/invariant": "0.7.3",
|
|
54
|
+
"@dxos/live-object": "0.7.3",
|
|
55
|
+
"@dxos/local-storage": "0.7.3",
|
|
56
|
+
"@dxos/log": "0.7.3",
|
|
57
|
+
"@dxos/plugin-client": "0.7.3",
|
|
58
|
+
"@dxos/plugin-deck": "0.7.3",
|
|
59
|
+
"@dxos/plugin-graph": "0.7.3",
|
|
60
|
+
"@dxos/plugin-markdown": "0.7.3",
|
|
61
|
+
"@dxos/plugin-space": "0.7.3",
|
|
62
|
+
"@dxos/plugin-status-bar": "0.7.3",
|
|
63
|
+
"@dxos/plugin-table": "0.7.3",
|
|
64
|
+
"@dxos/plugin-sheet": "0.7.3",
|
|
65
|
+
"@dxos/plugin-sketch": "0.7.3",
|
|
66
|
+
"@dxos/plugin-theme": "0.7.3",
|
|
67
|
+
"@dxos/protocols": "0.7.3",
|
|
68
|
+
"@dxos/random": "0.7.3",
|
|
69
|
+
"@dxos/react-client": "0.7.3",
|
|
70
|
+
"@dxos/react-hooks": "0.7.3",
|
|
71
|
+
"@dxos/react-ui-attention": "0.7.3",
|
|
72
|
+
"@dxos/react-ui-form": "0.7.3",
|
|
73
|
+
"@dxos/react-ui-table": "0.7.3",
|
|
74
|
+
"@dxos/react-ui-syntax-highlighter": "0.7.3",
|
|
75
|
+
"@dxos/util": "0.7.3",
|
|
76
|
+
"@dxos/schema": "0.7.3"
|
|
77
77
|
},
|
|
78
78
|
"devDependencies": {
|
|
79
79
|
"@phosphor-icons/react": "^2.1.5",
|
|
@@ -83,17 +83,17 @@
|
|
|
83
83
|
"react": "~18.2.0",
|
|
84
84
|
"react-dom": "~18.2.0",
|
|
85
85
|
"vite": "5.4.7",
|
|
86
|
-
"@dxos/react-ui": "0.7.3
|
|
87
|
-
"@dxos/
|
|
88
|
-
"@dxos/
|
|
86
|
+
"@dxos/react-ui-theme": "0.7.3",
|
|
87
|
+
"@dxos/react-ui": "0.7.3",
|
|
88
|
+
"@dxos/storybook-utils": "0.7.3"
|
|
89
89
|
},
|
|
90
90
|
"peerDependencies": {
|
|
91
91
|
"@phosphor-icons/react": "^2.1.5",
|
|
92
92
|
"react": "~18.2.0",
|
|
93
93
|
"react-dom": "~18.2.0",
|
|
94
|
-
"@dxos/
|
|
95
|
-
"@dxos/
|
|
96
|
-
"@dxos/react-ui-theme": "0.7.3
|
|
94
|
+
"@dxos/random": "0.7.3",
|
|
95
|
+
"@dxos/react-ui": "0.7.3",
|
|
96
|
+
"@dxos/react-ui-theme": "0.7.3"
|
|
97
97
|
},
|
|
98
98
|
"publishConfig": {
|
|
99
99
|
"access": "public"
|
package/src/DebugPlugin.tsx
CHANGED
|
@@ -170,6 +170,22 @@ export const DebugPlugin = definePlugin<DebugPluginProvides>((context) => {
|
|
|
170
170
|
filter: (node): node is Node<Space> => !!settings.debug && isSpace(node.data),
|
|
171
171
|
connector: ({ node }) => {
|
|
172
172
|
const space = node.data;
|
|
173
|
+
const state = toSignal(
|
|
174
|
+
(onChange) => space.state.subscribe(() => onChange()).unsubscribe,
|
|
175
|
+
() => space.state.get(),
|
|
176
|
+
);
|
|
177
|
+
if (state !== SpaceState.SPACE_READY) {
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
// Not adding the debug node until the root collection is available aligns the behaviour of this
|
|
182
|
+
// extension with that of the space plugin adding objects. This ensures that the debug node is added at
|
|
183
|
+
// the same time as objects and prevents order from changing as the nodes are added.
|
|
184
|
+
const collection = space.properties[CollectionType.typename] as CollectionType | undefined;
|
|
185
|
+
if (!collection) {
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
|
|
173
189
|
return [
|
|
174
190
|
{
|
|
175
191
|
id: `${space.id}-debug`, // TODO(burdon): Change to slashes consistently.
|
|
@@ -2,23 +2,13 @@
|
|
|
2
2
|
// Copyright 2024 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import {
|
|
6
|
-
createTLStore,
|
|
7
|
-
defaultBindingUtils,
|
|
8
|
-
defaultShapeUtils,
|
|
9
|
-
defaultShapeTools,
|
|
10
|
-
defaultTools,
|
|
11
|
-
Editor,
|
|
12
|
-
type TLEditorOptions,
|
|
13
|
-
} from '@tldraw/tldraw';
|
|
14
|
-
|
|
15
5
|
import { type AbstractSchema, type BaseObject } from '@dxos/echo-schema';
|
|
16
6
|
import { create, type ReactiveObject } from '@dxos/live-object';
|
|
17
7
|
import { DocumentType, TextType } from '@dxos/plugin-markdown/types';
|
|
18
8
|
import { addressToA1Notation, createSheet } from '@dxos/plugin-sheet';
|
|
19
9
|
import { type CellValue } from '@dxos/plugin-sheet/types';
|
|
20
10
|
import { SheetType } from '@dxos/plugin-sheet/types';
|
|
21
|
-
import {
|
|
11
|
+
import { CanvasType, DiagramType } from '@dxos/plugin-sketch/types';
|
|
22
12
|
import { faker } from '@dxos/random';
|
|
23
13
|
import { Filter, type Space } from '@dxos/react-client/echo';
|
|
24
14
|
import { TableType } from '@dxos/react-ui-table';
|
|
@@ -26,11 +16,12 @@ import { createView } from '@dxos/schema';
|
|
|
26
16
|
import { createAsyncGenerator, type ValueGenerator } from '@dxos/schema/testing';
|
|
27
17
|
import { range } from '@dxos/util';
|
|
28
18
|
|
|
29
|
-
import { drawGraph, generateGraph } from './draw-util';
|
|
30
|
-
|
|
31
19
|
const generator: ValueGenerator = faker as any;
|
|
32
20
|
|
|
33
21
|
// TODO(burdon): Add objects to collections.
|
|
22
|
+
// TODO(burdon): Create docs.
|
|
23
|
+
// TODO(burdon): Create sketches.
|
|
24
|
+
// TODO(burdon): Create sheets.
|
|
34
25
|
// TODO(burdon): Create comments.
|
|
35
26
|
// TODO(burdon): Reuse in testbench-app.
|
|
36
27
|
// TODO(burdon): Mutator running in background (factor out): from echo-generator.
|
|
@@ -41,23 +32,15 @@ export type ObjectGenerator<T extends BaseObject> = (
|
|
|
41
32
|
cb?: (objects: ReactiveObject<any>[]) => void,
|
|
42
33
|
) => Promise<ReactiveObject<T>[]>;
|
|
43
34
|
|
|
44
|
-
// TODO(burdon): Factor out and create unit tests. See "fuzz" patterns.
|
|
45
35
|
export const staticGenerators = new Map<string, ObjectGenerator<any>>([
|
|
46
|
-
//
|
|
47
|
-
// DocumentType
|
|
48
|
-
//
|
|
49
36
|
[
|
|
50
37
|
DocumentType.typename,
|
|
51
38
|
async (space, n, cb) => {
|
|
52
39
|
const objects = range(n).map(() => {
|
|
53
|
-
const content = range(faker.number.int({ min: 3, max: 8 }))
|
|
54
|
-
.map(() => faker.lorem.sentences(faker.number.int({ min: 3, max: 16 })))
|
|
55
|
-
.join('\n\n');
|
|
56
|
-
|
|
57
40
|
const obj = space.db.add(
|
|
58
41
|
create(DocumentType, {
|
|
59
42
|
name: faker.commerce.productName(),
|
|
60
|
-
content: create(TextType, { content }),
|
|
43
|
+
content: create(TextType, { content: faker.lorem.sentences(5) }),
|
|
61
44
|
threads: [],
|
|
62
45
|
}),
|
|
63
46
|
);
|
|
@@ -69,57 +52,36 @@ export const staticGenerators = new Map<string, ObjectGenerator<any>>([
|
|
|
69
52
|
return objects;
|
|
70
53
|
},
|
|
71
54
|
],
|
|
72
|
-
//
|
|
73
|
-
// DiagramType
|
|
74
|
-
//
|
|
75
55
|
[
|
|
76
56
|
DiagramType.typename,
|
|
77
57
|
async (space, n, cb) => {
|
|
78
|
-
const
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
range(n).map(async () => {
|
|
87
|
-
const store = createTLStore();
|
|
88
|
-
const editor = new Editor({ ...options, store });
|
|
89
|
-
const graph = generateGraph();
|
|
90
|
-
const content = await drawGraph(editor, graph);
|
|
91
|
-
editor.dispose();
|
|
92
|
-
store.dispose();
|
|
93
|
-
|
|
94
|
-
const obj = space.db.add(
|
|
95
|
-
create(DiagramType, {
|
|
96
|
-
name: faker.commerce.productName(),
|
|
97
|
-
canvas: create(CanvasType, { schema: TLDRAW_SCHEMA, content }),
|
|
98
|
-
}),
|
|
99
|
-
);
|
|
58
|
+
const objects = range(n).map(() => {
|
|
59
|
+
// TODO(burdon): Generate diagram.
|
|
60
|
+
const obj = space.db.add(
|
|
61
|
+
create(DiagramType, {
|
|
62
|
+
name: faker.commerce.productName(),
|
|
63
|
+
canvas: create(CanvasType, { content: {} }),
|
|
64
|
+
}),
|
|
65
|
+
);
|
|
100
66
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
);
|
|
67
|
+
return obj;
|
|
68
|
+
});
|
|
104
69
|
|
|
105
70
|
cb?.(objects);
|
|
106
71
|
return objects;
|
|
107
72
|
},
|
|
108
73
|
],
|
|
109
|
-
//
|
|
110
|
-
// SheetType
|
|
111
|
-
//
|
|
74
|
+
// TODO(burdon): Create unit tests.
|
|
112
75
|
[
|
|
113
76
|
SheetType.typename,
|
|
114
77
|
async (space, n, cb) => {
|
|
115
78
|
const objects = range(n).map(() => {
|
|
116
|
-
|
|
79
|
+
const cells: Record<string, CellValue> = {};
|
|
117
80
|
const year = new Date().getFullYear();
|
|
118
81
|
const cols = 4;
|
|
119
|
-
const rows =
|
|
120
|
-
const cells: Record<string, CellValue> = {};
|
|
82
|
+
const rows = 16;
|
|
121
83
|
for (let col = 1; col <= cols; col++) {
|
|
122
|
-
for (let row = 1; row <=
|
|
84
|
+
for (let row = 1; row <= rows; row++) {
|
|
123
85
|
const cell = addressToA1Notation({ col, row });
|
|
124
86
|
if (row === 1) {
|
|
125
87
|
cells[cell] = { value: `${year} Q${col}` };
|
|
@@ -134,6 +96,7 @@ export const staticGenerators = new Map<string, ObjectGenerator<any>>([
|
|
|
134
96
|
}
|
|
135
97
|
|
|
136
98
|
// TODO(burdon): Set width.
|
|
99
|
+
// TODO(burdon): Set formatting for columns.
|
|
137
100
|
return space.db.add(
|
|
138
101
|
createSheet({
|
|
139
102
|
name: faker.commerce.productName(),
|
|
@@ -160,12 +123,12 @@ export const createGenerator = <T extends BaseObject>(type: AbstractSchema<T>):
|
|
|
160
123
|
mutableSchema.find((schema) => schema.typename === type.typename) ?? space.db.schemaRegistry.addSchema(type);
|
|
161
124
|
|
|
162
125
|
// Create objects.
|
|
163
|
-
const generate = createAsyncGenerator(generator, schema.schema, space.db);
|
|
126
|
+
const generate = createAsyncGenerator(generator, schema.schema, { db: space.db });
|
|
164
127
|
const objects = await generate.createObjects(n);
|
|
165
128
|
|
|
166
129
|
// Find or create table and view.
|
|
167
130
|
const { objects: tables } = await space.db.query(Filter.schema(TableType)).run();
|
|
168
|
-
const table = tables.find((table) => table.view?.query?.
|
|
131
|
+
const table = tables.find((table) => table.view?.query?.type === type.typename);
|
|
169
132
|
if (!table) {
|
|
170
133
|
const name = type.typename.split('/').pop() ?? type.typename;
|
|
171
134
|
const view = createView({ name, typename: type.typename, jsonSchema: schema.jsonSchema });
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
// TODO(burdon): workerize-loader dep.
|
|
6
6
|
import { Graph, type Edge, type PlainObject } from '@antv/graphlib';
|
|
7
7
|
import {
|
|
8
|
+
type Layout,
|
|
8
9
|
D3ForceLayout,
|
|
9
10
|
type D3ForceLayoutOptions,
|
|
10
11
|
GridLayout,
|
|
@@ -12,7 +13,6 @@ import {
|
|
|
12
13
|
RadialLayout,
|
|
13
14
|
type RadialLayoutOptions,
|
|
14
15
|
} from '@antv/layout';
|
|
15
|
-
import { type Layout } from '@antv/layout/lib/types';
|
|
16
16
|
import { createBindingId, createShapeId, type Editor, type SerializedStore, type TLRecord } from '@tldraw/tldraw';
|
|
17
17
|
|
|
18
18
|
import { faker } from '@dxos/random';
|
|
@@ -26,15 +26,6 @@ import { isNotFalsy, range } from '@dxos/util';
|
|
|
26
26
|
// - https://github.com/dagrejs/dagre/wiki
|
|
27
27
|
// - https://www.npmjs.com/package/elkjs
|
|
28
28
|
|
|
29
|
-
// TLDraw structure:
|
|
30
|
-
// svg tl-svg-context
|
|
31
|
-
// div tl-html-layer tl-shapes
|
|
32
|
-
// div tl-shape
|
|
33
|
-
// svg tl-svg-container
|
|
34
|
-
// div class tl-html-container
|
|
35
|
-
// div tl-overlays
|
|
36
|
-
// svg
|
|
37
|
-
|
|
38
29
|
/**
|
|
39
30
|
* https://github.com/antvis/graphlib/blob/master/docs/classes/Graph.md
|
|
40
31
|
*/
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/components/SpaceGenerator/SpaceGenerator.tsx", "../../../src/components/SpaceGenerator/ObjectGenerator.tsx", "../../../src/components/SpaceGenerator/draw-util.ts", "../../../src/components/SpaceGenerator/SchemaTable.tsx", "../../../src/components/SpaceGenerator/index.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useCallback, useMemo, useState } from 'react';\n\nimport { type ReactiveObject } from '@dxos/live-object';\nimport { DocumentType } from '@dxos/plugin-markdown/types';\nimport { SheetType } from '@dxos/plugin-sheet/types';\nimport { DiagramType } from '@dxos/plugin-sketch/types';\nimport { useClient } from '@dxos/react-client';\nimport { getTypename, type Space } from '@dxos/react-client/echo';\nimport { IconButton, Input, Toolbar, useAsyncEffect } from '@dxos/react-ui';\nimport { SyntaxHighlighter } from '@dxos/react-ui-syntax-highlighter';\nimport { Testing } from '@dxos/schema/testing';\nimport { jsonKeyReplacer, sortKeys } from '@dxos/util';\n\nimport { type ObjectGenerator, createGenerator, staticGenerators } from './ObjectGenerator';\nimport { SchemaTable } from './SchemaTable';\n\nexport type SpaceGeneratorProps = {\n space: Space;\n onCreateObjects?: (objects: ReactiveObject<any>[]) => void;\n};\n\nexport const SpaceGenerator = ({ space, onCreateObjects }: SpaceGeneratorProps) => {\n const client = useClient();\n const staticTypes = [DocumentType, DiagramType, SheetType]; // TODO(burdon): Make extensible.\n const mutableTypes = [Testing.OrgType, Testing.ProjectType, Testing.ContactType];\n const [count, setCount] = useState(1);\n const [info, setInfo] = useState<any>({});\n\n // Create type generators.\n const typeMap = useMemo(() => {\n client.addTypes(staticTypes);\n const mutableGenerators = new Map<string, ObjectGenerator<any>>(\n mutableTypes.map((type) => [type.typename, createGenerator(type)]),\n );\n\n return new Map([...staticGenerators, ...mutableGenerators]);\n }, [client, mutableTypes]);\n\n // Query space to get info.\n const updateInfo = async () => {\n // Create schema map.\n const mutableSchema = await space.db.schemaRegistry.query();\n const staticSchema = space.db.graph.schemaRegistry.schemas;\n\n // Create object map.\n const { objects } = await space.db.query().run();\n const objectMap = sortKeys(\n objects.reduce<Record<string, number>>((map, obj) => {\n const type = getTypename(obj);\n if (type) {\n const count = map[type] ?? 0;\n map[type] = count + 1;\n }\n return map;\n }, {}),\n );\n\n setInfo({\n schema: {\n static: staticSchema.length,\n mutable: mutableSchema.length,\n },\n objects: objectMap,\n });\n };\n\n useAsyncEffect(updateInfo, [space]);\n\n const handleCreateData = useCallback(\n async (typename: string) => {\n const constructor = typeMap.get(typename);\n if (constructor) {\n // TODO(burdon): Input to specify number of objects.\n await constructor(space, count, onCreateObjects);\n await updateInfo();\n }\n },\n [typeMap, count],\n );\n\n return (\n <div role='none' className='flex flex-col divide-y divide-separator'>\n <Toolbar.Root classNames='p-1'>\n <IconButton icon='ph--arrow-clockwise--regular' iconOnly label='Refresh' onClick={updateInfo} />\n <Toolbar.Expander />\n <div className='flex'>\n <Input.Root>\n <Input.TextInput\n type='number'\n min={1}\n max={100}\n placeholder={'Count'}\n classNames='w-[80px]'\n value={count}\n onChange={(ev) => setCount(parseInt(ev.target.value))}\n />\n </Input.Root>\n </div>\n </Toolbar.Root>\n\n <SchemaTable types={staticTypes} objects={info.objects} label='Static Types' onClick={handleCreateData} />\n <SchemaTable types={mutableTypes} objects={info.objects} label='Mutable Types' onClick={handleCreateData} />\n\n <SyntaxHighlighter classNames='flex text-xs' language='json'>\n {JSON.stringify({ space, ...info }, jsonKeyReplacer({ truncate: true }), 2)}\n </SyntaxHighlighter>\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport {\n createTLStore,\n defaultBindingUtils,\n defaultShapeUtils,\n defaultShapeTools,\n defaultTools,\n Editor,\n type TLEditorOptions,\n} from '@tldraw/tldraw';\n\nimport { type AbstractSchema, type BaseObject } from '@dxos/echo-schema';\nimport { create, type ReactiveObject } from '@dxos/live-object';\nimport { DocumentType, TextType } from '@dxos/plugin-markdown/types';\nimport { addressToA1Notation, createSheet } from '@dxos/plugin-sheet';\nimport { type CellValue } from '@dxos/plugin-sheet/types';\nimport { SheetType } from '@dxos/plugin-sheet/types';\nimport { TLDRAW_SCHEMA, CanvasType, DiagramType } from '@dxos/plugin-sketch/types';\nimport { faker } from '@dxos/random';\nimport { Filter, type Space } from '@dxos/react-client/echo';\nimport { TableType } from '@dxos/react-ui-table';\nimport { createView } from '@dxos/schema';\nimport { createAsyncGenerator, type ValueGenerator } from '@dxos/schema/testing';\nimport { range } from '@dxos/util';\n\nimport { drawGraph, generateGraph } from './draw-util';\n\nconst generator: ValueGenerator = faker as any;\n\n// TODO(burdon): Add objects to collections.\n// TODO(burdon): Create comments.\n// TODO(burdon): Reuse in testbench-app.\n// TODO(burdon): Mutator running in background (factor out): from echo-generator.\n\nexport type ObjectGenerator<T extends BaseObject> = (\n space: Space,\n n: number,\n cb?: (objects: ReactiveObject<any>[]) => void,\n) => Promise<ReactiveObject<T>[]>;\n\n// TODO(burdon): Factor out and create unit tests. See \"fuzz\" patterns.\nexport const staticGenerators = new Map<string, ObjectGenerator<any>>([\n //\n // DocumentType\n //\n [\n DocumentType.typename,\n async (space, n, cb) => {\n const objects = range(n).map(() => {\n const content = range(faker.number.int({ min: 3, max: 8 }))\n .map(() => faker.lorem.sentences(faker.number.int({ min: 3, max: 16 })))\n .join('\\n\\n');\n\n const obj = space.db.add(\n create(DocumentType, {\n name: faker.commerce.productName(),\n content: create(TextType, { content }),\n threads: [],\n }),\n );\n\n return obj;\n });\n\n cb?.(objects);\n return objects;\n },\n ],\n //\n // DiagramType\n //\n [\n DiagramType.typename,\n async (space, n, cb) => {\n const options: Pick<TLEditorOptions, 'bindingUtils' | 'shapeUtils' | 'tools' | 'getContainer'> = {\n bindingUtils: defaultBindingUtils,\n shapeUtils: defaultShapeUtils,\n tools: [...defaultTools, ...defaultShapeTools],\n getContainer: () => document.body, // TODO(burdon): Fake via JSDOM?\n };\n\n const objects = await Promise.all(\n range(n).map(async () => {\n const store = createTLStore();\n const editor = new Editor({ ...options, store });\n const graph = generateGraph();\n const content = await drawGraph(editor, graph);\n editor.dispose();\n store.dispose();\n\n const obj = space.db.add(\n create(DiagramType, {\n name: faker.commerce.productName(),\n canvas: create(CanvasType, { schema: TLDRAW_SCHEMA, content }),\n }),\n );\n\n return obj;\n }),\n );\n\n cb?.(objects);\n return objects;\n },\n ],\n //\n // SheetType\n //\n [\n SheetType.typename,\n async (space, n, cb) => {\n const objects = range(n).map(() => {\n // TODO(burdon): Reconcile with plugin-sheet/testing\n const year = new Date().getFullYear();\n const cols = 4;\n const rows = 20;\n const cells: Record<string, CellValue> = {};\n for (let col = 1; col <= cols; col++) {\n for (let row = 1; row <= 10; row++) {\n const cell = addressToA1Notation({ col, row });\n if (row === 1) {\n cells[cell] = { value: `${year} Q${col}` };\n } else if (row === rows) {\n const from = addressToA1Notation({ col, row: 2 });\n const to = addressToA1Notation({ col, row: rows - 1 });\n cells[cell] = { value: `=SUM(${from}:${to})` };\n } else if (row > 2 && row < rows - 1) {\n cells[cell] = { value: Math.floor(Math.random() * 10_000) };\n }\n }\n }\n\n // TODO(burdon): Set width.\n return space.db.add(\n createSheet({\n name: faker.commerce.productName(),\n cells,\n }),\n );\n });\n\n cb?.(objects);\n return objects;\n },\n ],\n]);\n\nexport const createGenerator = <T extends BaseObject>(type: AbstractSchema<T>): ObjectGenerator<T> => {\n return async (\n space: Space,\n n: number,\n cb?: (objects: ReactiveObject<any>[]) => void,\n ): Promise<ReactiveObject<T>[]> => {\n // Find or create mutable schema.\n const mutableSchema = await space.db.schemaRegistry.query();\n const schema =\n mutableSchema.find((schema) => schema.typename === type.typename) ?? space.db.schemaRegistry.addSchema(type);\n\n // Create objects.\n const generate = createAsyncGenerator(generator, schema.schema, space.db);\n const objects = await generate.createObjects(n);\n\n // Find or create table and view.\n const { objects: tables } = await space.db.query(Filter.schema(TableType)).run();\n const table = tables.find((table) => table.view?.query?.typename === type.typename);\n if (!table) {\n const name = type.typename.split('/').pop() ?? type.typename;\n const view = createView({ name, typename: type.typename, jsonSchema: schema.jsonSchema });\n const table = space.db.add(create(TableType, { name, view }));\n cb?.([table]);\n }\n\n return objects;\n };\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\n// TODO(burdon): workerize-loader dep.\nimport { Graph, type Edge, type PlainObject } from '@antv/graphlib';\nimport {\n D3ForceLayout,\n type D3ForceLayoutOptions,\n GridLayout,\n type GridLayoutOptions,\n RadialLayout,\n type RadialLayoutOptions,\n} from '@antv/layout';\nimport { type Layout } from '@antv/layout/lib/types';\nimport { createBindingId, createShapeId, type Editor, type SerializedStore, type TLRecord } from '@tldraw/tldraw';\n\nimport { faker } from '@dxos/random';\nimport { isNotFalsy, range } from '@dxos/util';\n\n// TODO(burdon): Graph layout:\n// - https://www.npmjs.com/package/@antv/layout (uses d3)\n// - https://observablehq.com/d/2db6b0cc5e97d8d6\n// - https://github.com/antvis/graphlib\n// - https://www.npmjs.com/package/@dagrejs/dagre\n// - https://github.com/dagrejs/dagre/wiki\n// - https://www.npmjs.com/package/elkjs\n\n// TLDraw structure:\n// svg tl-svg-context\n// div tl-html-layer tl-shapes\n// div tl-shape\n// svg tl-svg-container\n// div class tl-html-container\n// div tl-overlays\n// svg\n\n/**\n * https://github.com/antvis/graphlib/blob/master/docs/classes/Graph.md\n */\n// TODO(burdon): Factor out.\n// TODO(burdon): Map ECHO to Graph.\nexport const generateGraph = (): Graph<PlainObject, PlainObject> => {\n const nodes = range(faker.number.int({ min: 8, max: 32 })).map(() => ({\n id: faker.string.uuid(),\n data: {\n label: faker.lorem\n .words(2)\n .split(' ')\n .map((word) => word.charAt(0).toUpperCase())\n .join('-'),\n },\n }));\n\n const unlinked = new Set(nodes.map((node) => node.id));\n const pop = () => {\n if (unlinked.size) {\n const id = faker.helpers.arrayElement(Array.from(unlinked));\n unlinked.delete(id);\n return id;\n }\n };\n\n const edges: Edge<PlainObject>[] = [];\n const link = (source: string, target: string) => {\n edges.push({ id: faker.string.uuid(), source, target, data: {} });\n };\n\n const branching = 3;\n const traverse = (source: string) => {\n const targets = range(faker.number.int({ min: 1, max: branching }))\n .map(() => {\n const target = pop();\n if (target) {\n link(source, target);\n }\n return target;\n })\n .filter(isNotFalsy);\n\n for (const target of targets) {\n traverse(target);\n }\n };\n\n const source = pop();\n if (source) {\n traverse(source);\n }\n\n return new Graph<PlainObject, PlainObject>({ nodes, edges });\n};\n\nexport const drawGraph = async (\n editor: Editor,\n graph: Graph<PlainObject, PlainObject>,\n): Promise<SerializedStore<TLRecord>> => {\n const grid = 40;\n const nodeSize = 80;\n\n const snap = (n: number) => Math.round(n / grid) * grid;\n\n type Intersection<Types extends readonly unknown[]> = Types extends [infer First, ...infer Rest]\n ? First & Intersection<Rest>\n : unknown;\n\n const defaultOptions: Intersection<[D3ForceLayoutOptions, GridLayoutOptions, RadialLayoutOptions]> = {\n center: [0, 0],\n width: grid * 20,\n height: grid * 20,\n linkDistance: grid * 2,\n nodeSize,\n nodeSpacing: nodeSize,\n preventOverlap: true,\n };\n\n const layoutType = faker.helpers.arrayElement(['d3force', 'grid', 'radial']);\n let layout: Layout<any>;\n switch (layoutType) {\n case 'd3force': {\n layout = new D3ForceLayout({\n ...defaultOptions,\n nodeStrength: 0.3,\n collideStrength: 0.8,\n });\n break;\n }\n\n case 'grid': {\n layout = new GridLayout({\n ...defaultOptions,\n });\n break;\n }\n\n case 'radial':\n default: {\n layout = new RadialLayout({\n ...defaultOptions,\n focusNode: graph.getAllNodes()[0],\n unitRadius: grid * 2,\n });\n }\n }\n\n const { nodes, edges } = await layout.execute(graph);\n\n for (const node of nodes) {\n const id = createShapeId(node.id as string);\n editor.createShape({\n id,\n type: 'geo',\n x: snap(node.data.x),\n y: snap(node.data.y),\n props: {\n w: nodeSize,\n h: nodeSize,\n text: node.data.label,\n },\n });\n }\n\n for (const edge of edges) {\n const arrowId = createShapeId(edge.id as string);\n editor.createShape({ id: arrowId, type: 'arrow' });\n\n editor.createBinding({\n id: createBindingId(),\n type: 'arrow',\n fromId: arrowId,\n toId: createShapeId(edge.source as string),\n props: {\n terminal: 'start',\n isExact: false,\n isPrecise: false,\n normalizedAnchor: { x: 0.5, y: 0.5 },\n },\n });\n\n editor.createBinding({\n id: createBindingId(),\n type: 'arrow',\n fromId: arrowId,\n toId: createShapeId(edge.target as string),\n props: {\n terminal: 'end',\n isExact: false,\n isPrecise: false,\n normalizedAnchor: { x: 0.5, y: 0.5 },\n },\n });\n }\n\n const data = editor.store.getStoreSnapshot();\n // TODO(burdon): Strip readonly properties (e.g., `meta`). Factor out.\n const content: SerializedStore<TLRecord> = JSON.parse(JSON.stringify(data.store));\n\n return content;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { IconButton } from '@dxos/react-ui';\n\nexport type SchemaTableProps = {\n types: any[];\n objects?: Record<string, number | undefined>;\n label: string;\n onClick: (typename: string) => void;\n};\n\nexport const SchemaTable = ({ types, objects = {}, label, onClick }: SchemaTableProps) => {\n return (\n <div className='grid grid-cols-[1fr_80px_40px] gap-1 overflow-hidden'>\n <div className='grid grid-cols-subgrid col-span-3'>\n <div className='px-2 text-sm text-primary-500'>{label}</div>\n <div className='px-2 text-xs text-subdued text-right'>count</div>\n </div>\n {types.map((type) => (\n <div key={type.typename} className='grid grid-cols-subgrid col-span-3 items-center'>\n <div className='px-2 text-sm font-mono text-green-500'>{type.typename}</div>\n <div className='px-2 text-right font-mono'>{objects[type.typename] ?? 0}</div>\n <IconButton\n variant='ghost'\n icon='ph--plus--regular'\n iconOnly\n label='Create data'\n onClick={() => onClick(type.typename)}\n />\n </div>\n ))}\n </div>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { SpaceGenerator } from './SpaceGenerator';\n\nexport default SpaceGenerator;\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["React", "useCallback", "useMemo", "useState", "DocumentType", "SheetType", "DiagramType", "useClient", "getTypename", "IconButton", "Input", "Toolbar", "useAsyncEffect", "SyntaxHighlighter", "Testing", "jsonKeyReplacer", "sortKeys", "createTLStore", "defaultBindingUtils", "defaultShapeUtils", "defaultShapeTools", "defaultTools", "Editor", "create", "DocumentType", "TextType", "addressToA1Notation", "createSheet", "SheetType", "TLDRAW_SCHEMA", "CanvasType", "DiagramType", "faker", "Filter", "TableType", "createView", "createAsyncGenerator", "range", "Graph", "D3ForceLayout", "GridLayout", "RadialLayout", "createBindingId", "createShapeId", "faker", "isNotFalsy", "range", "generateGraph", "nodes", "range", "faker", "number", "int", "min", "max", "map", "id", "string", "uuid", "data", "label", "lorem", "words", "split", "word", "charAt", "toUpperCase", "join", "unlinked", "Set", "node", "pop", "size", "helpers", "arrayElement", "Array", "from", "delete", "edges", "link", "source", "target", "push", "branching", "traverse", "targets", "filter", "isNotFalsy", "Graph", "drawGraph", "editor", "graph", "grid", "nodeSize", "snap", "n", "Math", "round", "defaultOptions", "center", "width", "height", "linkDistance", "nodeSpacing", "preventOverlap", "layoutType", "layout", "D3ForceLayout", "nodeStrength", "collideStrength", "GridLayout", "RadialLayout", "focusNode", "getAllNodes", "unitRadius", "execute", "createShapeId", "createShape", "type", "x", "y", "props", "w", "h", "text", "edge", "arrowId", "createBinding", "createBindingId", "fromId", "toId", "terminal", "isExact", "isPrecise", "normalizedAnchor", "store", "getStoreSnapshot", "content", "JSON", "parse", "stringify", "generator", "faker", "staticGenerators", "Map", "DocumentType", "typename", "space", "n", "cb", "objects", "range", "map", "content", "number", "int", "min", "max", "lorem", "sentences", "join", "obj", "db", "add", "create", "name", "commerce", "productName", "TextType", "threads", "DiagramType", "options", "bindingUtils", "defaultBindingUtils", "shapeUtils", "defaultShapeUtils", "tools", "defaultTools", "defaultShapeTools", "getContainer", "document", "body", "Promise", "all", "store", "createTLStore", "editor", "Editor", "graph", "generateGraph", "drawGraph", "dispose", "canvas", "CanvasType", "schema", "TLDRAW_SCHEMA", "SheetType", "year", "Date", "getFullYear", "cols", "rows", "cells", "col", "row", "cell", "addressToA1Notation", "value", "from", "to", "Math", "floor", "random", "createSheet", "createGenerator", "type", "mutableSchema", "schemaRegistry", "query", "find", "addSchema", "generate", "createAsyncGenerator", "createObjects", "tables", "Filter", "TableType", "run", "table", "view", "split", "pop", "createView", "jsonSchema", "React", "IconButton", "SchemaTable", "types", "objects", "label", "onClick", "div", "className", "map", "type", "key", "typename", "IconButton", "variant", "icon", "iconOnly", "SpaceGenerator", "space", "onCreateObjects", "client", "useClient", "staticTypes", "DocumentType", "DiagramType", "SheetType", "mutableTypes", "Testing", "OrgType", "ProjectType", "ContactType", "count", "setCount", "useState", "info", "setInfo", "typeMap", "useMemo", "addTypes", "mutableGenerators", "Map", "map", "type", "typename", "createGenerator", "staticGenerators", "updateInfo", "mutableSchema", "db", "schemaRegistry", "query", "staticSchema", "graph", "schemas", "objects", "run", "objectMap", "sortKeys", "reduce", "obj", "getTypename", "schema", "static", "length", "mutable", "useAsyncEffect", "handleCreateData", "useCallback", "constructor", "get", "React", "div", "role", "className", "Toolbar", "Root", "classNames", "IconButton", "icon", "iconOnly", "label", "onClick", "Expander", "Input", "TextInput", "min", "max", "placeholder", "value", "onChange", "ev", "parseInt", "target", "SchemaTable", "types", "SyntaxHighlighter", "language", "JSON", "stringify", "jsonKeyReplacer", "truncate", "SpaceGenerator"]
|
|
7
|
-
}
|