@dxos/plugin-debug 0.7.2 → 0.7.3-staging.0905f03
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/{DebugSpace-ZLGGNDAR.mjs → DebugSpace-DHKEAMIC.mjs} +3 -3
- package/dist/lib/browser/{DebugSpace-ZLGGNDAR.mjs.map → DebugSpace-DHKEAMIC.mjs.map} +2 -2
- package/dist/lib/browser/SpaceGenerator-BQ3645OS.mjs +273 -0
- package/dist/lib/browser/SpaceGenerator-BQ3645OS.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +43 -34
- 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/DebugObjectPanel.d.ts.map +1 -1
- package/dist/types/src/components/DebugSpace/DebugSpace.d.ts +1 -1
- package/dist/types/src/components/{SurfaceDebug.d.ts → DebugSurface.d.ts} +2 -2
- package/dist/types/src/components/{SurfaceDebug.d.ts.map → DebugSurface.d.ts.map} +1 -1
- package/dist/types/src/components/SpaceGenerator/ObjectGenerator.d.ts +7 -0
- package/dist/types/src/components/SpaceGenerator/ObjectGenerator.d.ts.map +1 -0
- package/dist/types/src/components/SpaceGenerator/SchemaTable.d.ts +9 -0
- package/dist/types/src/components/SpaceGenerator/SchemaTable.d.ts.map +1 -0
- package/dist/types/src/components/SpaceGenerator/SpaceGenerator.d.ts +9 -0
- package/dist/types/src/components/SpaceGenerator/SpaceGenerator.d.ts.map +1 -0
- package/dist/types/src/components/SpaceGenerator/SpaceGenerator.stories.d.ts +6 -0
- package/dist/types/src/components/SpaceGenerator/SpaceGenerator.stories.d.ts.map +1 -0
- package/dist/types/src/components/SpaceGenerator/draw-util.d.ts +8 -0
- package/dist/types/src/components/SpaceGenerator/draw-util.d.ts.map +1 -0
- package/dist/types/src/components/SpaceGenerator/index.d.ts +3 -0
- package/dist/types/src/components/SpaceGenerator/index.d.ts.map +1 -0
- package/dist/types/src/components/index.d.ts +2 -1
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/package.json +45 -38
- package/src/DebugPlugin.tsx +74 -39
- package/src/components/DebugObjectPanel.tsx +2 -1
- package/src/components/DebugSpace/DebugSpace.tsx +2 -2
- package/src/components/DebugSpace/ObjectCreator.tsx +1 -1
- package/src/components/{SurfaceDebug.tsx → DebugSurface.tsx} +1 -1
- package/src/components/SpaceGenerator/ObjectGenerator.tsx +141 -0
- package/src/components/SpaceGenerator/SchemaTable.tsx +38 -0
- package/src/components/SpaceGenerator/SpaceGenerator.stories.tsx +37 -0
- package/src/components/SpaceGenerator/SpaceGenerator.tsx +113 -0
- package/src/components/SpaceGenerator/draw-util.ts +190 -0
- package/src/components/SpaceGenerator/index.ts +7 -0
- package/src/components/index.ts +1 -0
|
@@ -105,7 +105,7 @@ var ObjectCreator = ({ space, onAddObjects }) => {
|
|
|
105
105
|
columns,
|
|
106
106
|
data: objects
|
|
107
107
|
}))), /* @__PURE__ */ React.createElement(Toolbar.Root, {
|
|
108
|
-
classNames: "p-
|
|
108
|
+
classNames: "p-1"
|
|
109
109
|
}, /* @__PURE__ */ React.createElement(IconButton, {
|
|
110
110
|
icon: "ph--plus--regular",
|
|
111
111
|
label: "Create",
|
|
@@ -231,7 +231,7 @@ var DebugSpace = ({ space, onAddObjects }) => {
|
|
|
231
231
|
value: mutationJitter,
|
|
232
232
|
onChange: ({ target: { value } }) => setMutationJitter(value)
|
|
233
233
|
}), /* @__PURE__ */ React2.createElement(IconButton2, {
|
|
234
|
-
icon: running ? "ph--
|
|
234
|
+
icon: running ? "ph--pause-circle--regular" : "ph--play-circle--regular",
|
|
235
235
|
iconOnly: true,
|
|
236
236
|
label: "Start/stop",
|
|
237
237
|
size: 5,
|
|
@@ -273,4 +273,4 @@ var DebugSpace_default = DebugSpace;
|
|
|
273
273
|
export {
|
|
274
274
|
DebugSpace_default as default
|
|
275
275
|
};
|
|
276
|
-
//# sourceMappingURL=DebugSpace-
|
|
276
|
+
//# sourceMappingURL=DebugSpace-DHKEAMIC.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/components/DebugSpace/DebugSpace.tsx", "../../../src/components/DebugSpace/ObjectCreator.tsx", "../../../src/components/DebugSpace/index.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { type FC, useContext, useMemo, useState } from 'react';\n\nimport { createSpaceObjectGenerator } from '@dxos/echo-generator';\nimport { type ReactiveObject } from '@dxos/
|
|
5
|
-
"mappings": "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
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { type FC, useContext, useMemo, useState } from 'react';\n\nimport { createSpaceObjectGenerator } from '@dxos/echo-generator';\nimport { type ReactiveObject } from '@dxos/live-object';\nimport { DocumentType } from '@dxos/plugin-markdown/types';\nimport { Invitation } from '@dxos/protocols/proto/dxos/client/services';\nimport { faker } from '@dxos/random';\nimport { useClient } from '@dxos/react-client';\nimport { Filter, type Space, useSpaceInvitation } from '@dxos/react-client/echo';\nimport { InvitationEncoder } from '@dxos/react-client/invitations';\nimport { useAsyncEffect } from '@dxos/react-hooks';\nimport { Icon, IconButton, Input, type IconProps, type TextInputProps, Toolbar, useFileDownload } from '@dxos/react-ui';\nimport { safeParseInt } from '@dxos/util';\n\nimport { ObjectCreator } from './ObjectCreator';\nimport { DebugContext } from '../../types';\nimport { Container } from '../Container';\n\nconst DEFAULT_COUNT = 100;\nconst DEFAULT_PERIOD = 500;\nconst DEFAULT_JITTER = 50;\n\nconst useRefresh = (): [any, () => void] => {\n const [update, setUpdate] = useState({});\n return [update, () => setUpdate({})];\n};\n\nconst CustomInput = ({ icon, ...props }: Pick<IconProps, 'icon'> & TextInputProps) => {\n return (\n <div role='none' className='relative'>\n <Input.Root>\n <Input.TextInput classNames='w-[100px] text-right pie-[22px]' size={5} {...props} />\n </Input.Root>\n <Icon icon={icon} size={3} classNames='absolute inline-end-1 block-start-1 mt-[6px]' />\n </div>\n );\n};\n\nexport const DebugSpace: FC<{\n space: Space;\n onAddObjects?: (objects: ReactiveObject<any>[]) => void;\n}> = ({ space, onAddObjects }) => {\n const { connect } = useSpaceInvitation(space?.key);\n const client = useClient();\n const [data, setData] = useState<any>({});\n\n const [update, handleUpdate] = useRefresh();\n useAsyncEffect(\n async (isMounted) => {\n const data = await client.diagnostics({ truncate: true });\n if (isMounted()) {\n setData(\n data?.diagnostics?.spaces?.find(({ key }: any) => {\n return space.key.toHex().startsWith(key);\n }),\n );\n }\n },\n [space, update],\n );\n\n const download = useFileDownload();\n const handleDownload = async () => {\n download(\n new Blob([JSON.stringify(data, undefined, 2)], { type: 'text/plain' }),\n `${new Date().toISOString().replace(/\\W/g, '-')}.json`,\n );\n };\n\n const [mutationCount, setMutationCount] = useState(String(DEFAULT_COUNT));\n const [mutationInterval, setMutationInterval] = useState(String(DEFAULT_PERIOD));\n const [mutationJitter, setMutationJitter] = useState(String(DEFAULT_JITTER));\n\n const generator = useMemo(() => createSpaceObjectGenerator(space), [space]);\n\n // TODO(burdon): Note: this is shared across all spaces!\n const { running, start, stop } = useContext(DebugContext);\n const handleToggleRunning = () => {\n if (running) {\n stop();\n handleUpdate();\n } else {\n start(\n async () => {\n const { objects } = await space.db.query(Filter.schema(DocumentType)).run();\n if (objects.length) {\n const object = faker.helpers.arrayElement(objects);\n await generator.mutateObject(object, { count: 10, mutationSize: 10, maxContentLength: 1000 });\n }\n },\n {\n count: safeParseInt(mutationCount) ?? 0,\n interval: safeParseInt(mutationInterval) ?? 0,\n jitter: safeParseInt(mutationJitter) ?? 0,\n },\n );\n }\n };\n\n const handleCreateInvitation = () => {\n const invitation = space.share({\n type: Invitation.Type.INTERACTIVE,\n authMethod: Invitation.AuthMethod.NONE,\n multiUse: true,\n });\n\n // TODO(burdon): Refactor.\n // TODO(burdon): Unsubscribe?\n connect(invitation);\n const code = InvitationEncoder.encode(invitation.get());\n new URL(window.origin).searchParams.set('spaceInvitationCode', code);\n const url = `${window.origin}?spaceInvitationCode=${code}`;\n void navigator.clipboard.writeText(url);\n };\n\n const handleCreateEpoch = async () => {\n await space.internal.createEpoch();\n handleUpdate();\n };\n\n return (\n <Container\n toolbar={\n <Toolbar.Root classNames='p-1'>\n <CustomInput\n icon='ph--flag--regular'\n autoComplete='off'\n placeholder='Count'\n value={mutationCount}\n onChange={({ target: { value } }) => setMutationCount(value)}\n />\n <CustomInput\n icon='ph--timer--regular'\n autoComplete='off'\n placeholder='Interval'\n value={mutationInterval}\n onChange={({ target: { value } }) => setMutationInterval(value)}\n />\n <CustomInput\n icon='ph--plus-minus--regular'\n autoComplete='off'\n placeholder='Jitter'\n value={mutationJitter}\n onChange={({ target: { value } }) => setMutationJitter(value)}\n />\n\n <IconButton\n icon={running ? 'ph--pause-circle--regular' : 'ph--play-circle--regular'}\n iconOnly\n label='Start/stop'\n size={5}\n onClick={handleToggleRunning}\n />\n <IconButton icon='ph--arrow-clockwise--regular' iconOnly label='Refresh' size={5} onClick={handleUpdate} />\n <IconButton icon='ph--download-simple--regular' iconOnly label='Download' size={5} onClick={handleDownload} />\n\n <Toolbar.Expander />\n <IconButton\n icon='ph--flag-pennant--regular'\n iconOnly\n label='Create epoch'\n size={5}\n onClick={handleCreateEpoch}\n />\n <IconButton\n icon='ph--user-circle-plus--regular'\n iconOnly\n iconClassNames='text-blue-500'\n label='Create Invitation'\n size={5}\n onClick={handleCreateInvitation}\n />\n </Toolbar.Root>\n }\n >\n <ObjectCreator space={space} onAddObjects={onAddObjects} />\n </Container>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useMemo, useState } from 'react';\n\nimport { type MutationsProviderParams, TestSchemaType, createSpaceObjectGenerator } from '@dxos/echo-generator';\nimport { type ReactiveEchoObject, type ReactiveObject, type Space } from '@dxos/react-client/echo';\nimport { IconButton, Toolbar } from '@dxos/react-ui';\nimport { createColumnBuilder, type TableColumnDef, Table } from '@dxos/react-ui-table/deprecated';\n\nconst BATCH_SIZE = 10;\n\nexport type CreateObjectsParams = {\n schema: string;\n enabled: boolean;\n objects: number;\n mutations: Pick<MutationsProviderParams, 'count' | 'mutationSize' | 'maxContentLength'>;\n};\n\nexport type ObjectCreatorProps = {\n space: Space;\n onAddObjects?: (objects: ReactiveObject<any>[]) => void;\n};\n\nexport const ObjectCreator = ({ space, onAddObjects }: ObjectCreatorProps) => {\n const generator = useMemo(() => createSpaceObjectGenerator(space), [space]);\n\n const [objects, setObjects] = useState<CreateObjectsParams[]>(\n Object.values(TestSchemaType).map((schema) => ({\n schema,\n enabled: true,\n objects: 10,\n mutations: {\n count: 10,\n mutationSize: 10,\n maxContentLength: 1000,\n },\n })),\n );\n\n const handleCreate = async () => {\n for (const params of objects) {\n if (!params.enabled) {\n continue;\n }\n\n let objectsCreated = 0;\n while (objectsCreated < params.objects) {\n const objects = (await generator.createObjects({\n [params.schema]: Math.min(BATCH_SIZE, params.objects - objectsCreated),\n })) as ReactiveEchoObject<any>[];\n\n await generator.mutateObjects(objects, params.mutations);\n objectsCreated += objects.length;\n onAddObjects?.(objects);\n }\n }\n\n await space.db.flush();\n };\n\n const handleUpdate = (row: CreateObjectsParams, key: string, value: any) => {\n const newObjects = [...objects];\n Object.assign(newObjects.find((object) => object.schema === row.schema)!, { [key]: value });\n setObjects(newObjects);\n };\n\n const { helper, builder } = createColumnBuilder<CreateObjectsParams>();\n const columns: TableColumnDef<CreateObjectsParams>[] = [\n helper.accessor('enabled', builder.switch({ label: 'Live', onUpdate: handleUpdate })),\n helper.accessor('schema', builder.string({ label: 'Schema', classNames: 'font-mono' })),\n helper.accessor('objects', builder.number({ label: 'Objects', onUpdate: handleUpdate })),\n helper.accessor((obj) => obj.mutations.count, {\n id: 'mutations',\n ...builder.number({ label: 'Mutations', onUpdate: handleUpdate }),\n }),\n helper.accessor((obj) => obj.mutations.mutationSize, {\n id: 'mutationSize',\n ...builder.number({ label: 'Mut. Size', onUpdate: handleUpdate }),\n }),\n helper.accessor((obj) => obj.mutations.maxContentLength, {\n id: 'mutationMaxContentLength',\n ...builder.number({ label: 'Length', onUpdate: handleUpdate }),\n }),\n ];\n\n return (\n <>\n <Table.Root>\n <Table.Viewport>\n <Table.Main<CreateObjectsParams> columns={columns} data={objects} />\n </Table.Viewport>\n </Table.Root>\n <Toolbar.Root classNames='p-1'>\n <IconButton icon='ph--plus--regular' label='Create' onClick={handleCreate} />\n </Toolbar.Root>\n </>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { DebugSpace } from './DebugSpace';\n\nexport default DebugSpace;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["React", "useContext", "useMemo", "useState", "createSpaceObjectGenerator", "DocumentType", "Invitation", "faker", "useClient", "Filter", "useSpaceInvitation", "InvitationEncoder", "useAsyncEffect", "Icon", "IconButton", "Input", "Toolbar", "useFileDownload", "safeParseInt", "React", "useMemo", "useState", "TestSchemaType", "createSpaceObjectGenerator", "IconButton", "Toolbar", "createColumnBuilder", "Table", "BATCH_SIZE", "ObjectCreator", "space", "onAddObjects", "generator", "useMemo", "createSpaceObjectGenerator", "objects", "setObjects", "useState", "Object", "values", "TestSchemaType", "map", "schema", "enabled", "mutations", "count", "mutationSize", "maxContentLength", "handleCreate", "params", "objectsCreated", "createObjects", "Math", "min", "mutateObjects", "length", "db", "flush", "handleUpdate", "row", "key", "value", "newObjects", "assign", "find", "object", "helper", "builder", "createColumnBuilder", "columns", "accessor", "switch", "label", "onUpdate", "string", "classNames", "number", "obj", "id", "Table", "Root", "Viewport", "Main", "data", "Toolbar", "IconButton", "icon", "onClick", "DEFAULT_COUNT", "DEFAULT_PERIOD", "DEFAULT_JITTER", "useRefresh", "update", "setUpdate", "useState", "CustomInput", "icon", "props", "React", "div", "role", "className", "Input", "Root", "TextInput", "classNames", "size", "Icon", "DebugSpace", "space", "onAddObjects", "connect", "useSpaceInvitation", "key", "client", "useClient", "data", "setData", "handleUpdate", "useAsyncEffect", "isMounted", "diagnostics", "truncate", "spaces", "find", "toHex", "startsWith", "download", "useFileDownload", "handleDownload", "Blob", "JSON", "stringify", "undefined", "type", "Date", "toISOString", "replace", "mutationCount", "setMutationCount", "String", "mutationInterval", "setMutationInterval", "mutationJitter", "setMutationJitter", "generator", "useMemo", "createSpaceObjectGenerator", "running", "start", "stop", "useContext", "DebugContext", "handleToggleRunning", "objects", "db", "query", "Filter", "schema", "DocumentType", "run", "length", "object", "faker", "helpers", "arrayElement", "mutateObject", "count", "mutationSize", "maxContentLength", "safeParseInt", "interval", "jitter", "handleCreateInvitation", "invitation", "share", "Invitation", "Type", "INTERACTIVE", "authMethod", "AuthMethod", "NONE", "multiUse", "code", "InvitationEncoder", "encode", "get", "URL", "window", "origin", "searchParams", "set", "url", "navigator", "clipboard", "writeText", "handleCreateEpoch", "internal", "createEpoch", "Container", "toolbar", "Toolbar", "autoComplete", "placeholder", "value", "onChange", "target", "IconButton", "iconOnly", "label", "onClick", "Expander", "iconClassNames", "ObjectCreator", "DebugSpace"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
// packages/plugins/plugin-debug/src/components/SpaceGenerator/SpaceGenerator.tsx
|
|
2
|
+
import React2, { useCallback, useMemo, useState } from "react";
|
|
3
|
+
import { DocumentType as DocumentType2 } from "@dxos/plugin-markdown/types";
|
|
4
|
+
import { SheetType as SheetType2 } from "@dxos/plugin-sheet/types";
|
|
5
|
+
import { DiagramType as DiagramType2 } from "@dxos/plugin-sketch/types";
|
|
6
|
+
import { useClient } from "@dxos/react-client";
|
|
7
|
+
import { getTypename } from "@dxos/react-client/echo";
|
|
8
|
+
import { IconButton as IconButton2, Input, Toolbar, useAsyncEffect } from "@dxos/react-ui";
|
|
9
|
+
import { SyntaxHighlighter } from "@dxos/react-ui-syntax-highlighter";
|
|
10
|
+
import { Testing } from "@dxos/schema/testing";
|
|
11
|
+
import { jsonKeyReplacer, sortKeys } from "@dxos/util";
|
|
12
|
+
|
|
13
|
+
// packages/plugins/plugin-debug/src/components/SpaceGenerator/ObjectGenerator.tsx
|
|
14
|
+
import { create } from "@dxos/live-object";
|
|
15
|
+
import { DocumentType, TextType } from "@dxos/plugin-markdown/types";
|
|
16
|
+
import { addressToA1Notation, createSheet } from "@dxos/plugin-sheet";
|
|
17
|
+
import { SheetType } from "@dxos/plugin-sheet/types";
|
|
18
|
+
import { CanvasType, DiagramType } from "@dxos/plugin-sketch/types";
|
|
19
|
+
import { faker } from "@dxos/random";
|
|
20
|
+
import { Filter } from "@dxos/react-client/echo";
|
|
21
|
+
import { TableType } from "@dxos/react-ui-table";
|
|
22
|
+
import { createView } from "@dxos/schema";
|
|
23
|
+
import { createAsyncGenerator } from "@dxos/schema/testing";
|
|
24
|
+
import { range } from "@dxos/util";
|
|
25
|
+
var generator = faker;
|
|
26
|
+
var staticGenerators = /* @__PURE__ */ new Map([
|
|
27
|
+
[
|
|
28
|
+
DocumentType.typename,
|
|
29
|
+
async (space, n, cb) => {
|
|
30
|
+
const objects = range(n).map(() => {
|
|
31
|
+
const obj = space.db.add(create(DocumentType, {
|
|
32
|
+
name: faker.commerce.productName(),
|
|
33
|
+
content: create(TextType, {
|
|
34
|
+
content: faker.lorem.sentences(5)
|
|
35
|
+
}),
|
|
36
|
+
threads: []
|
|
37
|
+
}));
|
|
38
|
+
return obj;
|
|
39
|
+
});
|
|
40
|
+
cb?.(objects);
|
|
41
|
+
return objects;
|
|
42
|
+
}
|
|
43
|
+
],
|
|
44
|
+
[
|
|
45
|
+
DiagramType.typename,
|
|
46
|
+
async (space, n, cb) => {
|
|
47
|
+
const objects = range(n).map(() => {
|
|
48
|
+
const obj = space.db.add(create(DiagramType, {
|
|
49
|
+
name: faker.commerce.productName(),
|
|
50
|
+
canvas: create(CanvasType, {
|
|
51
|
+
content: {}
|
|
52
|
+
})
|
|
53
|
+
}));
|
|
54
|
+
return obj;
|
|
55
|
+
});
|
|
56
|
+
cb?.(objects);
|
|
57
|
+
return objects;
|
|
58
|
+
}
|
|
59
|
+
],
|
|
60
|
+
// TODO(burdon): Create unit tests.
|
|
61
|
+
[
|
|
62
|
+
SheetType.typename,
|
|
63
|
+
async (space, n, cb) => {
|
|
64
|
+
const objects = range(n).map(() => {
|
|
65
|
+
const cells = {};
|
|
66
|
+
const year = (/* @__PURE__ */ new Date()).getFullYear();
|
|
67
|
+
const cols = 4;
|
|
68
|
+
const rows = 16;
|
|
69
|
+
for (let col = 1; col <= cols; col++) {
|
|
70
|
+
for (let row = 1; row <= rows; row++) {
|
|
71
|
+
const cell = addressToA1Notation({
|
|
72
|
+
col,
|
|
73
|
+
row
|
|
74
|
+
});
|
|
75
|
+
if (row === 1) {
|
|
76
|
+
cells[cell] = {
|
|
77
|
+
value: `${year} Q${col}`
|
|
78
|
+
};
|
|
79
|
+
} else if (row === rows) {
|
|
80
|
+
const from = addressToA1Notation({
|
|
81
|
+
col,
|
|
82
|
+
row: 2
|
|
83
|
+
});
|
|
84
|
+
const to = addressToA1Notation({
|
|
85
|
+
col,
|
|
86
|
+
row: rows - 1
|
|
87
|
+
});
|
|
88
|
+
cells[cell] = {
|
|
89
|
+
value: `=SUM(${from}:${to})`
|
|
90
|
+
};
|
|
91
|
+
} else if (row > 2 && row < rows - 1) {
|
|
92
|
+
cells[cell] = {
|
|
93
|
+
value: Math.floor(Math.random() * 1e4)
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return space.db.add(createSheet({
|
|
99
|
+
name: faker.commerce.productName(),
|
|
100
|
+
cells
|
|
101
|
+
}));
|
|
102
|
+
});
|
|
103
|
+
cb?.(objects);
|
|
104
|
+
return objects;
|
|
105
|
+
}
|
|
106
|
+
]
|
|
107
|
+
]);
|
|
108
|
+
var createGenerator = (type) => {
|
|
109
|
+
return async (space, n, cb) => {
|
|
110
|
+
const mutableSchema = await space.db.schemaRegistry.query();
|
|
111
|
+
const schema = mutableSchema.find((schema2) => schema2.typename === type.typename) ?? space.db.schemaRegistry.addSchema(type);
|
|
112
|
+
const generate = createAsyncGenerator(generator, schema.schema, {
|
|
113
|
+
db: space.db
|
|
114
|
+
});
|
|
115
|
+
const objects = await generate.createObjects(n);
|
|
116
|
+
const { objects: tables } = await space.db.query(Filter.schema(TableType)).run();
|
|
117
|
+
const table = tables.find((table2) => table2.view?.query?.type === type.typename);
|
|
118
|
+
if (!table) {
|
|
119
|
+
const name = type.typename.split("/").pop() ?? type.typename;
|
|
120
|
+
const view = createView({
|
|
121
|
+
name,
|
|
122
|
+
typename: type.typename,
|
|
123
|
+
jsonSchema: schema.jsonSchema
|
|
124
|
+
});
|
|
125
|
+
const table2 = space.db.add(create(TableType, {
|
|
126
|
+
name,
|
|
127
|
+
view
|
|
128
|
+
}));
|
|
129
|
+
cb?.([
|
|
130
|
+
table2
|
|
131
|
+
]);
|
|
132
|
+
}
|
|
133
|
+
return objects;
|
|
134
|
+
};
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
// packages/plugins/plugin-debug/src/components/SpaceGenerator/SchemaTable.tsx
|
|
138
|
+
import React from "react";
|
|
139
|
+
import { IconButton } from "@dxos/react-ui";
|
|
140
|
+
var SchemaTable = ({ types, objects = {}, label, onClick }) => {
|
|
141
|
+
return /* @__PURE__ */ React.createElement("div", {
|
|
142
|
+
className: "grid grid-cols-[1fr_80px_40px] gap-1 overflow-hidden"
|
|
143
|
+
}, /* @__PURE__ */ React.createElement("div", {
|
|
144
|
+
className: "grid grid-cols-subgrid col-span-3"
|
|
145
|
+
}, /* @__PURE__ */ React.createElement("div", {
|
|
146
|
+
className: "px-2 text-sm text-primary-500"
|
|
147
|
+
}, label), /* @__PURE__ */ React.createElement("div", {
|
|
148
|
+
className: "px-2 text-xs text-subdued text-right"
|
|
149
|
+
}, "count")), types.map((type) => /* @__PURE__ */ React.createElement("div", {
|
|
150
|
+
key: type.typename,
|
|
151
|
+
className: "grid grid-cols-subgrid col-span-3 items-center"
|
|
152
|
+
}, /* @__PURE__ */ React.createElement("div", {
|
|
153
|
+
className: "px-2 text-sm font-mono text-green-500"
|
|
154
|
+
}, type.typename), /* @__PURE__ */ React.createElement("div", {
|
|
155
|
+
className: "px-2 text-right font-mono"
|
|
156
|
+
}, objects[type.typename] ?? 0), /* @__PURE__ */ React.createElement(IconButton, {
|
|
157
|
+
variant: "ghost",
|
|
158
|
+
icon: "ph--plus--regular",
|
|
159
|
+
iconOnly: true,
|
|
160
|
+
label: "Create data",
|
|
161
|
+
onClick: () => onClick(type.typename)
|
|
162
|
+
}))));
|
|
163
|
+
};
|
|
164
|
+
|
|
165
|
+
// packages/plugins/plugin-debug/src/components/SpaceGenerator/SpaceGenerator.tsx
|
|
166
|
+
var SpaceGenerator = ({ space, onCreateObjects }) => {
|
|
167
|
+
const client = useClient();
|
|
168
|
+
const staticTypes = [
|
|
169
|
+
DocumentType2,
|
|
170
|
+
DiagramType2,
|
|
171
|
+
SheetType2
|
|
172
|
+
];
|
|
173
|
+
const mutableTypes = [
|
|
174
|
+
Testing.OrgType,
|
|
175
|
+
Testing.ProjectType,
|
|
176
|
+
Testing.ContactType
|
|
177
|
+
];
|
|
178
|
+
const [count, setCount] = useState(1);
|
|
179
|
+
const [info, setInfo] = useState({});
|
|
180
|
+
const typeMap = useMemo(() => {
|
|
181
|
+
client.addTypes(staticTypes);
|
|
182
|
+
const mutableGenerators = new Map(mutableTypes.map((type) => [
|
|
183
|
+
type.typename,
|
|
184
|
+
createGenerator(type)
|
|
185
|
+
]));
|
|
186
|
+
return new Map([
|
|
187
|
+
...staticGenerators,
|
|
188
|
+
...mutableGenerators
|
|
189
|
+
]);
|
|
190
|
+
}, [
|
|
191
|
+
client,
|
|
192
|
+
mutableTypes
|
|
193
|
+
]);
|
|
194
|
+
const updateInfo = async () => {
|
|
195
|
+
const mutableSchema = await space.db.schemaRegistry.query();
|
|
196
|
+
const staticSchema = space.db.graph.schemaRegistry.schemas;
|
|
197
|
+
const { objects } = await space.db.query().run();
|
|
198
|
+
const objectMap = sortKeys(objects.reduce((map, obj) => {
|
|
199
|
+
const type = getTypename(obj);
|
|
200
|
+
if (type) {
|
|
201
|
+
const count2 = map[type] ?? 0;
|
|
202
|
+
map[type] = count2 + 1;
|
|
203
|
+
}
|
|
204
|
+
return map;
|
|
205
|
+
}, {}));
|
|
206
|
+
setInfo({
|
|
207
|
+
schema: {
|
|
208
|
+
static: staticSchema.length,
|
|
209
|
+
mutable: mutableSchema.length
|
|
210
|
+
},
|
|
211
|
+
objects: objectMap
|
|
212
|
+
});
|
|
213
|
+
};
|
|
214
|
+
useAsyncEffect(updateInfo, [
|
|
215
|
+
space
|
|
216
|
+
]);
|
|
217
|
+
const handleCreateData = useCallback(async (typename) => {
|
|
218
|
+
const constructor = typeMap.get(typename);
|
|
219
|
+
if (constructor) {
|
|
220
|
+
await constructor(space, count, onCreateObjects);
|
|
221
|
+
await updateInfo();
|
|
222
|
+
}
|
|
223
|
+
}, [
|
|
224
|
+
typeMap,
|
|
225
|
+
count
|
|
226
|
+
]);
|
|
227
|
+
return /* @__PURE__ */ React2.createElement("div", {
|
|
228
|
+
role: "none",
|
|
229
|
+
className: "flex flex-col divide-y divide-separator"
|
|
230
|
+
}, /* @__PURE__ */ React2.createElement(Toolbar.Root, {
|
|
231
|
+
classNames: "p-1"
|
|
232
|
+
}, /* @__PURE__ */ React2.createElement(IconButton2, {
|
|
233
|
+
icon: "ph--arrow-clockwise--regular",
|
|
234
|
+
iconOnly: true,
|
|
235
|
+
label: "Refresh",
|
|
236
|
+
onClick: updateInfo
|
|
237
|
+
}), /* @__PURE__ */ React2.createElement(Toolbar.Expander, null), /* @__PURE__ */ React2.createElement("div", {
|
|
238
|
+
className: "flex"
|
|
239
|
+
}, /* @__PURE__ */ React2.createElement(Input.Root, null, /* @__PURE__ */ React2.createElement(Input.TextInput, {
|
|
240
|
+
type: "number",
|
|
241
|
+
min: 1,
|
|
242
|
+
max: 100,
|
|
243
|
+
placeholder: "Count",
|
|
244
|
+
classNames: "w-[80px]",
|
|
245
|
+
value: count,
|
|
246
|
+
onChange: (ev) => setCount(parseInt(ev.target.value))
|
|
247
|
+
})))), /* @__PURE__ */ React2.createElement(SchemaTable, {
|
|
248
|
+
types: staticTypes,
|
|
249
|
+
objects: info.objects,
|
|
250
|
+
label: "Static Types",
|
|
251
|
+
onClick: handleCreateData
|
|
252
|
+
}), /* @__PURE__ */ React2.createElement(SchemaTable, {
|
|
253
|
+
types: mutableTypes,
|
|
254
|
+
objects: info.objects,
|
|
255
|
+
label: "Mutable Types",
|
|
256
|
+
onClick: handleCreateData
|
|
257
|
+
}), /* @__PURE__ */ React2.createElement(SyntaxHighlighter, {
|
|
258
|
+
classNames: "flex text-xs",
|
|
259
|
+
language: "json"
|
|
260
|
+
}, JSON.stringify({
|
|
261
|
+
space,
|
|
262
|
+
...info
|
|
263
|
+
}, jsonKeyReplacer({
|
|
264
|
+
truncate: true
|
|
265
|
+
}), 2)));
|
|
266
|
+
};
|
|
267
|
+
|
|
268
|
+
// packages/plugins/plugin-debug/src/components/SpaceGenerator/index.ts
|
|
269
|
+
var SpaceGenerator_default = SpaceGenerator;
|
|
270
|
+
export {
|
|
271
|
+
SpaceGenerator_default as default
|
|
272
|
+
};
|
|
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
|
+
}
|
|
@@ -16,7 +16,7 @@ import { Devtools } from "@dxos/devtools";
|
|
|
16
16
|
import { invariant } from "@dxos/invariant";
|
|
17
17
|
import { parseClientPlugin } from "@dxos/plugin-client";
|
|
18
18
|
import { createExtension, Graph, toSignal } from "@dxos/plugin-graph";
|
|
19
|
-
import { SpaceAction } from "@dxos/plugin-space";
|
|
19
|
+
import { memoizeQuery, SpaceAction } from "@dxos/plugin-space";
|
|
20
20
|
import { CollectionType } from "@dxos/plugin-space/types";
|
|
21
21
|
import { create, getTypename, isEchoObject, isSpace, parseId, SpaceState } from "@dxos/react-client/echo";
|
|
22
22
|
import { Main } from "@dxos/react-ui";
|
|
@@ -30,7 +30,6 @@ import React from "react";
|
|
|
30
30
|
import { SyntaxHighlighter } from "@dxos/react-ui-syntax-highlighter";
|
|
31
31
|
var DebugObjectPanel = ({ object }) => {
|
|
32
32
|
return /* @__PURE__ */ React.createElement("div", {
|
|
33
|
-
role: "form",
|
|
34
33
|
className: "flex flex-col"
|
|
35
34
|
}, /* @__PURE__ */ React.createElement(SyntaxHighlighter, {
|
|
36
35
|
classNames: "flex text-xs",
|
|
@@ -388,7 +387,8 @@ var Wireframe = ({ classNames, label, object }) => {
|
|
|
388
387
|
|
|
389
388
|
// packages/plugins/plugin-debug/src/components/index.ts
|
|
390
389
|
var DebugApp = lazy(() => import("./DebugApp-HCHR6GKO.mjs"));
|
|
391
|
-
var DebugSpace = lazy(() => import("./DebugSpace-
|
|
390
|
+
var DebugSpace = lazy(() => import("./DebugSpace-DHKEAMIC.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 = [
|
|
@@ -498,7 +498,7 @@ var DebugPlugin = definePlugin((context) => {
|
|
|
498
498
|
const client = clientPlugin?.provides.client;
|
|
499
499
|
invariant(resolve, void 0, {
|
|
500
500
|
F: __dxlog_file3,
|
|
501
|
-
L:
|
|
501
|
+
L: 128,
|
|
502
502
|
S: void 0,
|
|
503
503
|
A: [
|
|
504
504
|
"resolve",
|
|
@@ -507,7 +507,7 @@ var DebugPlugin = definePlugin((context) => {
|
|
|
507
507
|
});
|
|
508
508
|
invariant(client, void 0, {
|
|
509
509
|
F: __dxlog_file3,
|
|
510
|
-
L:
|
|
510
|
+
L: 129,
|
|
511
511
|
S: void 0,
|
|
512
512
|
A: [
|
|
513
513
|
"client",
|
|
@@ -566,12 +566,21 @@ 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`,
|
|
572
580
|
type: "dxos.org/plugin/debug/space",
|
|
573
581
|
data: {
|
|
574
|
-
space
|
|
582
|
+
space,
|
|
583
|
+
type: "dxos.org/plugin/debug/space"
|
|
575
584
|
},
|
|
576
585
|
properties: {
|
|
577
586
|
label: [
|
|
@@ -597,7 +606,8 @@ var DebugPlugin = definePlugin((context) => {
|
|
|
597
606
|
const icon = "ph--bug--regular";
|
|
598
607
|
const [subjectId] = id.split("~");
|
|
599
608
|
const { spaceId, objectId } = parseId(subjectId);
|
|
600
|
-
const
|
|
609
|
+
const spaces = toSignal((onChange) => client.spaces.subscribe(() => onChange()).unsubscribe, () => client.spaces.get());
|
|
610
|
+
const space = spaces?.find((space2) => space2.state.get() === SpaceState.SPACE_READY && space2.id === spaceId);
|
|
601
611
|
if (!objectId) {
|
|
602
612
|
const label2 = space ? space.properties.name || [
|
|
603
613
|
"unnamed space label",
|
|
@@ -623,15 +633,9 @@ var DebugPlugin = definePlugin((context) => {
|
|
|
623
633
|
}
|
|
624
634
|
};
|
|
625
635
|
}
|
|
626
|
-
const object =
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
id: objectId
|
|
630
|
-
}).first();
|
|
631
|
-
onChange();
|
|
632
|
-
});
|
|
633
|
-
return () => clearTimeout(timeout);
|
|
634
|
-
}, () => space?.db.getObjectById(objectId), subjectId);
|
|
636
|
+
const [object] = memoizeQuery(space, {
|
|
637
|
+
id: objectId
|
|
638
|
+
});
|
|
635
639
|
if (!object || !subjectId) {
|
|
636
640
|
return;
|
|
637
641
|
}
|
|
@@ -700,25 +704,30 @@ var DebugPlugin = definePlugin((context) => {
|
|
|
700
704
|
component = /* @__PURE__ */ React5.createElement(Devtools, null);
|
|
701
705
|
} else if (!primary || typeof primary !== "object" || !settings.debug) {
|
|
702
706
|
component = null;
|
|
703
|
-
} else if ("space" in primary && isSpace(primary.space)) {
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
if (!(collection instanceof CollectionType)) {
|
|
712
|
-
return;
|
|
713
|
-
}
|
|
714
|
-
void context.resolvePlugin(parseIntentPlugin).provides.intent.dispatch(objects.map((object) => ({
|
|
715
|
-
action: SpaceAction.ADD_OBJECT,
|
|
716
|
-
data: {
|
|
717
|
-
target: collection,
|
|
718
|
-
object
|
|
719
|
-
}
|
|
720
|
-
})));
|
|
707
|
+
} else if ("type" in primary && primary.type === "dxos.org/plugin/debug/space" && "space" in primary && isSpace(primary.space)) {
|
|
708
|
+
const handleCreateObject = (objects) => {
|
|
709
|
+
if (!isSpace(primary.space)) {
|
|
710
|
+
return;
|
|
711
|
+
}
|
|
712
|
+
const collection = primary.space.state.get() === SpaceState.SPACE_READY && primary.space.properties[CollectionType.typename];
|
|
713
|
+
if (!(collection instanceof CollectionType)) {
|
|
714
|
+
return;
|
|
721
715
|
}
|
|
716
|
+
void context.resolvePlugin(parseIntentPlugin).provides.intent.dispatch(objects.map((object) => ({
|
|
717
|
+
action: SpaceAction.ADD_OBJECT,
|
|
718
|
+
data: {
|
|
719
|
+
target: collection,
|
|
720
|
+
object
|
|
721
|
+
}
|
|
722
|
+
})));
|
|
723
|
+
};
|
|
724
|
+
const deprecated = false;
|
|
725
|
+
component = deprecated ? /* @__PURE__ */ React5.createElement(DebugSpace, {
|
|
726
|
+
space: primary.space,
|
|
727
|
+
onAddObjects: handleCreateObject
|
|
728
|
+
}) : /* @__PURE__ */ React5.createElement(SpaceGenerator, {
|
|
729
|
+
space: primary.space,
|
|
730
|
+
onCreateObjects: handleCreateObject
|
|
722
731
|
});
|
|
723
732
|
} else if ("graph" in primary && primary.graph instanceof Graph) {
|
|
724
733
|
component = /* @__PURE__ */ React5.createElement(DebugApp, {
|