@dxos/plugin-debug 0.7.3-staging.cc8dd3e → 0.7.3-staging.d887a4b

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.
@@ -11,201 +11,27 @@ import { Testing } from "@dxos/schema/testing";
11
11
  import { jsonKeyReplacer, sortKeys } from "@dxos/util";
12
12
 
13
13
  // packages/plugins/plugin-debug/src/components/SpaceGenerator/ObjectGenerator.tsx
14
- import { createTLStore, defaultBindingUtils, defaultShapeUtils, defaultShapeTools, defaultTools, Editor } from "@tldraw/tldraw";
15
14
  import { create } from "@dxos/live-object";
16
15
  import { DocumentType, TextType } from "@dxos/plugin-markdown/types";
17
16
  import { addressToA1Notation, createSheet } from "@dxos/plugin-sheet";
18
17
  import { SheetType } from "@dxos/plugin-sheet/types";
19
- import { TLDRAW_SCHEMA, CanvasType, DiagramType } from "@dxos/plugin-sketch/types";
20
- import { faker as faker2 } from "@dxos/random";
18
+ import { CanvasType, DiagramType } from "@dxos/plugin-sketch/types";
19
+ import { faker } from "@dxos/random";
21
20
  import { Filter } from "@dxos/react-client/echo";
22
21
  import { TableType } from "@dxos/react-ui-table";
23
22
  import { createView } from "@dxos/schema";
24
23
  import { createAsyncGenerator } from "@dxos/schema/testing";
25
- import { range as range2 } from "@dxos/util";
26
-
27
- // packages/plugins/plugin-debug/src/components/SpaceGenerator/draw-util.ts
28
- import { Graph } from "@antv/graphlib";
29
- import { D3ForceLayout, GridLayout, RadialLayout } from "@antv/layout";
30
- import { createBindingId, createShapeId } from "@tldraw/tldraw";
31
- import { faker } from "@dxos/random";
32
- import { isNotFalsy, range } from "@dxos/util";
33
- var generateGraph = () => {
34
- const nodes = range(faker.number.int({
35
- min: 8,
36
- max: 32
37
- })).map(() => ({
38
- id: faker.string.uuid(),
39
- data: {
40
- label: faker.lorem.words(2).split(" ").map((word) => word.charAt(0).toUpperCase()).join("-")
41
- }
42
- }));
43
- const unlinked = new Set(nodes.map((node) => node.id));
44
- const pop = () => {
45
- if (unlinked.size) {
46
- const id = faker.helpers.arrayElement(Array.from(unlinked));
47
- unlinked.delete(id);
48
- return id;
49
- }
50
- };
51
- const edges = [];
52
- const link = (source2, target) => {
53
- edges.push({
54
- id: faker.string.uuid(),
55
- source: source2,
56
- target,
57
- data: {}
58
- });
59
- };
60
- const branching = 3;
61
- const traverse = (source2) => {
62
- const targets = range(faker.number.int({
63
- min: 1,
64
- max: branching
65
- })).map(() => {
66
- const target = pop();
67
- if (target) {
68
- link(source2, target);
69
- }
70
- return target;
71
- }).filter(isNotFalsy);
72
- for (const target of targets) {
73
- traverse(target);
74
- }
75
- };
76
- const source = pop();
77
- if (source) {
78
- traverse(source);
79
- }
80
- return new Graph({
81
- nodes,
82
- edges
83
- });
84
- };
85
- var drawGraph = async (editor, graph) => {
86
- const grid = 40;
87
- const nodeSize = 80;
88
- const snap = (n) => Math.round(n / grid) * grid;
89
- const defaultOptions = {
90
- center: [
91
- 0,
92
- 0
93
- ],
94
- width: grid * 20,
95
- height: grid * 20,
96
- linkDistance: grid * 2,
97
- nodeSize,
98
- nodeSpacing: nodeSize,
99
- preventOverlap: true
100
- };
101
- const layoutType = faker.helpers.arrayElement([
102
- "d3force",
103
- "grid",
104
- "radial"
105
- ]);
106
- let layout;
107
- switch (layoutType) {
108
- case "d3force": {
109
- layout = new D3ForceLayout({
110
- ...defaultOptions,
111
- nodeStrength: 0.3,
112
- collideStrength: 0.8
113
- });
114
- break;
115
- }
116
- case "grid": {
117
- layout = new GridLayout({
118
- ...defaultOptions
119
- });
120
- break;
121
- }
122
- case "radial":
123
- default: {
124
- layout = new RadialLayout({
125
- ...defaultOptions,
126
- focusNode: graph.getAllNodes()[0],
127
- unitRadius: grid * 2
128
- });
129
- }
130
- }
131
- const { nodes, edges } = await layout.execute(graph);
132
- for (const node of nodes) {
133
- const id = createShapeId(node.id);
134
- editor.createShape({
135
- id,
136
- type: "geo",
137
- x: snap(node.data.x),
138
- y: snap(node.data.y),
139
- props: {
140
- w: nodeSize,
141
- h: nodeSize,
142
- text: node.data.label
143
- }
144
- });
145
- }
146
- for (const edge of edges) {
147
- const arrowId = createShapeId(edge.id);
148
- editor.createShape({
149
- id: arrowId,
150
- type: "arrow"
151
- });
152
- editor.createBinding({
153
- id: createBindingId(),
154
- type: "arrow",
155
- fromId: arrowId,
156
- toId: createShapeId(edge.source),
157
- props: {
158
- terminal: "start",
159
- isExact: false,
160
- isPrecise: false,
161
- normalizedAnchor: {
162
- x: 0.5,
163
- y: 0.5
164
- }
165
- }
166
- });
167
- editor.createBinding({
168
- id: createBindingId(),
169
- type: "arrow",
170
- fromId: arrowId,
171
- toId: createShapeId(edge.target),
172
- props: {
173
- terminal: "end",
174
- isExact: false,
175
- isPrecise: false,
176
- normalizedAnchor: {
177
- x: 0.5,
178
- y: 0.5
179
- }
180
- }
181
- });
182
- }
183
- const data = editor.store.getStoreSnapshot();
184
- const content = JSON.parse(JSON.stringify(data.store));
185
- return content;
186
- };
187
-
188
- // packages/plugins/plugin-debug/src/components/SpaceGenerator/ObjectGenerator.tsx
189
- var generator = faker2;
24
+ import { range } from "@dxos/util";
25
+ var generator = faker;
190
26
  var staticGenerators = /* @__PURE__ */ new Map([
191
- //
192
- // DocumentType
193
- //
194
27
  [
195
28
  DocumentType.typename,
196
29
  async (space, n, cb) => {
197
- const objects = range2(n).map(() => {
198
- const content = range2(faker2.number.int({
199
- min: 3,
200
- max: 8
201
- })).map(() => faker2.lorem.sentences(faker2.number.int({
202
- min: 3,
203
- max: 16
204
- }))).join("\n\n");
30
+ const objects = range(n).map(() => {
205
31
  const obj = space.db.add(create(DocumentType, {
206
- name: faker2.commerce.productName(),
32
+ name: faker.commerce.productName(),
207
33
  content: create(TextType, {
208
- content
34
+ content: faker.lorem.sentences(5)
209
35
  }),
210
36
  threads: []
211
37
  }));
@@ -215,57 +41,33 @@ var staticGenerators = /* @__PURE__ */ new Map([
215
41
  return objects;
216
42
  }
217
43
  ],
218
- //
219
- // DiagramType
220
- //
221
44
  [
222
45
  DiagramType.typename,
223
46
  async (space, n, cb) => {
224
- const options = {
225
- bindingUtils: defaultBindingUtils,
226
- shapeUtils: defaultShapeUtils,
227
- tools: [
228
- ...defaultTools,
229
- ...defaultShapeTools
230
- ],
231
- getContainer: () => document.body
232
- };
233
- const objects = await Promise.all(range2(n).map(async () => {
234
- const store = createTLStore();
235
- const editor = new Editor({
236
- ...options,
237
- store
238
- });
239
- const graph = generateGraph();
240
- const content = await drawGraph(editor, graph);
241
- editor.dispose();
242
- store.dispose();
47
+ const objects = range(n).map(() => {
243
48
  const obj = space.db.add(create(DiagramType, {
244
- name: faker2.commerce.productName(),
49
+ name: faker.commerce.productName(),
245
50
  canvas: create(CanvasType, {
246
- schema: TLDRAW_SCHEMA,
247
- content
51
+ content: {}
248
52
  })
249
53
  }));
250
54
  return obj;
251
- }));
55
+ });
252
56
  cb?.(objects);
253
57
  return objects;
254
58
  }
255
59
  ],
256
- //
257
- // SheetType
258
- //
60
+ // TODO(burdon): Create unit tests.
259
61
  [
260
62
  SheetType.typename,
261
63
  async (space, n, cb) => {
262
- const objects = range2(n).map(() => {
64
+ const objects = range(n).map(() => {
65
+ const cells = {};
263
66
  const year = (/* @__PURE__ */ new Date()).getFullYear();
264
67
  const cols = 4;
265
- const rows = 20;
266
- const cells = {};
68
+ const rows = 16;
267
69
  for (let col = 1; col <= cols; col++) {
268
- for (let row = 1; row <= 10; row++) {
70
+ for (let row = 1; row <= rows; row++) {
269
71
  const cell = addressToA1Notation({
270
72
  col,
271
73
  row
@@ -294,7 +96,7 @@ var staticGenerators = /* @__PURE__ */ new Map([
294
96
  }
295
97
  }
296
98
  return space.db.add(createSheet({
297
- name: faker2.commerce.productName(),
99
+ name: faker.commerce.productName(),
298
100
  cells
299
101
  }));
300
102
  });
@@ -307,10 +109,12 @@ var createGenerator = (type) => {
307
109
  return async (space, n, cb) => {
308
110
  const mutableSchema = await space.db.schemaRegistry.query();
309
111
  const schema = mutableSchema.find((schema2) => schema2.typename === type.typename) ?? space.db.schemaRegistry.addSchema(type);
310
- const generate = createAsyncGenerator(generator, schema.schema, space.db);
112
+ const generate = createAsyncGenerator(generator, schema.schema, {
113
+ db: space.db
114
+ });
311
115
  const objects = await generate.createObjects(n);
312
116
  const { objects: tables } = await space.db.query(Filter.schema(TableType)).run();
313
- const table = tables.find((table2) => table2.view?.query?.typename === type.typename);
117
+ const table = tables.find((table2) => table2.view?.query?.type === type.typename);
314
118
  if (!table) {
315
119
  const name = type.typename.split("/").pop() ?? type.typename;
316
120
  const view = createView({
@@ -466,4 +270,4 @@ var SpaceGenerator_default = SpaceGenerator;
466
270
  export {
467
271
  SpaceGenerator_default as default
468
272
  };
469
- //# sourceMappingURL=SpaceGenerator-2Z5WFX4T.mjs.map
273
+ //# sourceMappingURL=SpaceGenerator-BQ3645OS.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/SpaceGenerator/SpaceGenerator.tsx", "../../../src/components/SpaceGenerator/ObjectGenerator.tsx", "../../../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 { 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 { 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\nconst generator: ValueGenerator = faker as any;\n\n// TODO(burdon): Add objects to collections.\n// TODO(burdon): Create docs.\n// TODO(burdon): Create sketches.\n// TODO(burdon): Create sheets.\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\nexport const staticGenerators = new Map<string, ObjectGenerator<any>>([\n [\n DocumentType.typename,\n async (space, n, cb) => {\n const objects = range(n).map(() => {\n const obj = space.db.add(\n create(DocumentType, {\n name: faker.commerce.productName(),\n content: create(TextType, { content: faker.lorem.sentences(5) }),\n threads: [],\n }),\n );\n\n return obj;\n });\n\n cb?.(objects);\n return objects;\n },\n ],\n [\n DiagramType.typename,\n async (space, n, cb) => {\n const objects = range(n).map(() => {\n // TODO(burdon): Generate diagram.\n const obj = space.db.add(\n create(DiagramType, {\n name: faker.commerce.productName(),\n canvas: create(CanvasType, { content: {} }),\n }),\n );\n\n return obj;\n });\n\n cb?.(objects);\n return objects;\n },\n ],\n // TODO(burdon): Create unit tests.\n [\n SheetType.typename,\n async (space, n, cb) => {\n const objects = range(n).map(() => {\n const cells: Record<string, CellValue> = {};\n const year = new Date().getFullYear();\n const cols = 4;\n const rows = 16;\n for (let col = 1; col <= cols; col++) {\n for (let row = 1; row <= rows; 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 // TODO(burdon): Set formatting for columns.\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, { db: 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?.type === 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\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", "create", "DocumentType", "TextType", "addressToA1Notation", "createSheet", "SheetType", "CanvasType", "DiagramType", "faker", "Filter", "TableType", "createView", "createAsyncGenerator", "range", "generator", "faker", "staticGenerators", "Map", "DocumentType", "typename", "space", "n", "cb", "objects", "range", "map", "obj", "db", "add", "create", "name", "commerce", "productName", "content", "TextType", "lorem", "sentences", "threads", "DiagramType", "canvas", "CanvasType", "SheetType", "cells", "year", "Date", "getFullYear", "cols", "rows", "col", "row", "cell", "addressToA1Notation", "value", "from", "to", "Math", "floor", "random", "createSheet", "createGenerator", "type", "mutableSchema", "schemaRegistry", "query", "schema", "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
+ }
@@ -388,7 +388,7 @@ var Wireframe = ({ classNames, label, object }) => {
388
388
  // packages/plugins/plugin-debug/src/components/index.ts
389
389
  var DebugApp = lazy(() => import("./DebugApp-HCHR6GKO.mjs"));
390
390
  var DebugSpace = lazy(() => import("./DebugSpace-DHKEAMIC.mjs"));
391
- var SpaceGenerator = lazy(() => import("./SpaceGenerator-2Z5WFX4T.mjs"));
391
+ var SpaceGenerator = lazy(() => import("./SpaceGenerator-BQ3645OS.mjs"));
392
392
 
393
393
  // packages/plugins/plugin-debug/src/translations.ts
394
394
  var translations_default = [
@@ -566,6 +566,14 @@ var DebugPlugin = definePlugin((context) => {
566
566
  filter: (node) => !!settings.debug && isSpace(node.data),
567
567
  connector: ({ node }) => {
568
568
  const space = node.data;
569
+ const state = toSignal((onChange) => space.state.subscribe(() => onChange()).unsubscribe, () => space.state.get());
570
+ if (state !== SpaceState.SPACE_READY) {
571
+ return;
572
+ }
573
+ const collection = space.properties[CollectionType.typename];
574
+ if (!collection) {
575
+ return;
576
+ }
569
577
  return [
570
578
  {
571
579
  id: `${space.id}-debug`,