@dxos/plugin-debug 0.7.5-main.e9bb01b → 0.7.5-staging.2ff1350

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/dist/lib/browser/{DebugSpace-4JHYA7FG.mjs → DebugSpace-BTMTVZ6C.mjs} +2 -2
  2. package/dist/lib/browser/SpaceGenerator-BPZGOSH4.mjs +1238 -0
  3. package/dist/lib/browser/SpaceGenerator-BPZGOSH4.mjs.map +7 -0
  4. package/dist/lib/browser/app-graph-builder-BZFZ6UG6.mjs +533 -0
  5. package/dist/lib/browser/app-graph-builder-BZFZ6UG6.mjs.map +7 -0
  6. package/dist/lib/browser/chunk-UASI2CRI.mjs +72 -0
  7. package/dist/lib/browser/chunk-UASI2CRI.mjs.map +7 -0
  8. package/dist/lib/browser/index.mjs +44 -8
  9. package/dist/lib/browser/index.mjs.map +3 -3
  10. package/dist/lib/browser/meta.json +1 -1
  11. package/dist/lib/browser/react-context-TCD3MNIT.mjs +16 -0
  12. package/dist/lib/browser/react-context-TCD3MNIT.mjs.map +7 -0
  13. package/dist/lib/browser/{react-surface-YF7Y4TZR.mjs → react-surface-W6QLG4YJ.mjs} +212 -42
  14. package/dist/lib/browser/react-surface-W6QLG4YJ.mjs.map +7 -0
  15. package/dist/lib/browser/{settings-OIMSBZUC.mjs → settings-INPXR64L.mjs} +5 -6
  16. package/dist/lib/browser/{settings-OIMSBZUC.mjs.map → settings-INPXR64L.mjs.map} +3 -3
  17. package/dist/types/src/DebugPlugin.d.ts.map +1 -1
  18. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  19. package/dist/types/src/capabilities/index.d.ts +5 -0
  20. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  21. package/dist/types/src/capabilities/react-context.d.ts +8 -0
  22. package/dist/types/src/capabilities/react-context.d.ts.map +1 -0
  23. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  24. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  25. package/dist/types/src/components/Container.d.ts +2 -2
  26. package/dist/types/src/components/Container.d.ts.map +1 -1
  27. package/dist/types/src/components/DebugObjectPanel.d.ts +1 -2
  28. package/dist/types/src/components/DebugObjectPanel.d.ts.map +1 -1
  29. package/dist/types/src/components/DebugSettings.d.ts +1 -2
  30. package/dist/types/src/components/DebugSettings.d.ts.map +1 -1
  31. package/dist/types/src/components/DebugSpace/ObjectCreator.d.ts +1 -2
  32. package/dist/types/src/components/DebugSpace/ObjectCreator.d.ts.map +1 -1
  33. package/dist/types/src/components/DebugStatus.d.ts +1 -2
  34. package/dist/types/src/components/DebugStatus.d.ts.map +1 -1
  35. package/dist/types/src/components/SpaceGenerator/ObjectGenerator.d.ts.map +1 -1
  36. package/dist/types/src/components/SpaceGenerator/SchemaTable.d.ts +1 -2
  37. package/dist/types/src/components/SpaceGenerator/SchemaTable.d.ts.map +1 -1
  38. package/dist/types/src/components/SpaceGenerator/SpaceGenerator.d.ts +1 -2
  39. package/dist/types/src/components/SpaceGenerator/SpaceGenerator.d.ts.map +1 -1
  40. package/dist/types/src/components/SpaceGenerator/presets.d.ts +22 -0
  41. package/dist/types/src/components/SpaceGenerator/presets.d.ts.map +1 -0
  42. package/dist/types/src/components/Wireframe.d.ts +1 -2
  43. package/dist/types/src/components/Wireframe.d.ts.map +1 -1
  44. package/dist/types/src/components/index.d.ts +1 -1
  45. package/dist/types/src/components/index.d.ts.map +1 -1
  46. package/dist/types/src/translations.d.ts +28 -0
  47. package/dist/types/src/translations.d.ts.map +1 -1
  48. package/dist/types/src/types.d.ts +44 -1
  49. package/dist/types/src/types.d.ts.map +1 -1
  50. package/package.json +50 -44
  51. package/src/DebugPlugin.tsx +12 -4
  52. package/src/capabilities/app-graph-builder.ts +292 -89
  53. package/src/capabilities/index.ts +1 -0
  54. package/src/capabilities/react-context.tsx +16 -0
  55. package/src/capabilities/react-surface.tsx +204 -27
  56. package/src/capabilities/settings.ts +0 -1
  57. package/src/components/DebugObjectPanel.tsx +17 -5
  58. package/src/components/DebugSettings.tsx +61 -66
  59. package/src/components/SpaceGenerator/ObjectGenerator.tsx +31 -4
  60. package/src/components/SpaceGenerator/SpaceGenerator.tsx +75 -6
  61. package/src/components/SpaceGenerator/presets.ts +563 -0
  62. package/src/translations.ts +28 -0
  63. package/src/types.ts +52 -1
  64. package/dist/lib/browser/SpaceGenerator-NJCG57CU.mjs +0 -279
  65. package/dist/lib/browser/SpaceGenerator-NJCG57CU.mjs.map +0 -7
  66. package/dist/lib/browser/app-graph-builder-66ZVNTDI.mjs +0 -182
  67. package/dist/lib/browser/app-graph-builder-66ZVNTDI.mjs.map +0 -7
  68. package/dist/lib/browser/chunk-P7GHHMDB.mjs +0 -21
  69. package/dist/lib/browser/chunk-P7GHHMDB.mjs.map +0 -7
  70. package/dist/lib/browser/react-surface-YF7Y4TZR.mjs.map +0 -7
  71. /package/dist/lib/browser/{DebugSpace-4JHYA7FG.mjs.map → DebugSpace-BTMTVZ6C.mjs.map} +0 -0
@@ -0,0 +1,1238 @@
1
+ // packages/plugins/plugin-debug/src/components/SpaceGenerator/SpaceGenerator.tsx
2
+ import React2, { useCallback, useMemo, useState } from "react";
3
+ import { createIntent, useIntentDispatcher } from "@dxos/app-framework";
4
+ import { ComputeGraph as ComputeGraph2 } from "@dxos/conductor";
5
+ import { toEffectSchema } from "@dxos/echo-schema";
6
+ import { create as create3 } from "@dxos/live-object";
7
+ import { log } from "@dxos/log";
8
+ import { DocumentType as DocumentType2 } from "@dxos/plugin-markdown/types";
9
+ import { SheetType as SheetType2 } from "@dxos/plugin-sheet/types";
10
+ import { DiagramType as DiagramType2 } from "@dxos/plugin-sketch/types";
11
+ import { SpaceAction } from "@dxos/plugin-space/types";
12
+ import { useClient } from "@dxos/react-client";
13
+ import { getTypename } from "@dxos/react-client/echo";
14
+ import { IconButton as IconButton2, Input, Toolbar, useAsyncEffect } from "@dxos/react-ui";
15
+ import { SyntaxHighlighter } from "@dxos/react-ui-syntax-highlighter";
16
+ import { initializeTable, TableType as TableType3 } from "@dxos/react-ui-table";
17
+ import { Testing } from "@dxos/schema/testing";
18
+ import { jsonKeyReplacer, sortKeys } from "@dxos/util";
19
+
20
+ // packages/plugins/plugin-debug/src/components/SpaceGenerator/ObjectGenerator.tsx
21
+ import { addressToA1Notation } from "@dxos/compute";
22
+ import { ComputeGraph, ComputeGraphModel, DEFAULT_OUTPUT, NODE_INPUT, NODE_OUTPUT } from "@dxos/conductor";
23
+ import { ObjectId } from "@dxos/echo-schema";
24
+ import { DXN } from "@dxos/keys";
25
+ import { create, makeRef } from "@dxos/live-object";
26
+ import { DocumentType } from "@dxos/plugin-markdown/types";
27
+ import { createSheet } from "@dxos/plugin-sheet/types";
28
+ import { SheetType } from "@dxos/plugin-sheet/types";
29
+ import { CanvasType, DiagramType } from "@dxos/plugin-sketch/types";
30
+ import { faker } from "@dxos/random";
31
+ import { Filter } from "@dxos/react-client/echo";
32
+ import { TableType } from "@dxos/react-ui-table";
33
+ import { createView, TextType } from "@dxos/schema";
34
+ import { createAsyncGenerator } from "@dxos/schema/testing";
35
+ import { range } from "@dxos/util";
36
+ var generator = faker;
37
+ var staticGenerators = /* @__PURE__ */ new Map([
38
+ [
39
+ DocumentType.typename,
40
+ async (space, n, cb) => {
41
+ const objects = range(n).map(() => {
42
+ return space.db.add(create(DocumentType, {
43
+ name: faker.commerce.productName(),
44
+ content: makeRef(create(TextType, {
45
+ content: faker.lorem.sentences(5)
46
+ })),
47
+ threads: []
48
+ }));
49
+ });
50
+ cb?.(objects);
51
+ return objects;
52
+ }
53
+ ],
54
+ [
55
+ DiagramType.typename,
56
+ async (space, n, cb) => {
57
+ const objects = range(n).map(() => {
58
+ const obj = space.db.add(create(DiagramType, {
59
+ name: faker.commerce.productName(),
60
+ canvas: makeRef(create(CanvasType, {
61
+ content: {}
62
+ }))
63
+ }));
64
+ return obj;
65
+ });
66
+ cb?.(objects);
67
+ return objects;
68
+ }
69
+ ],
70
+ // TODO(burdon): Create unit tests.
71
+ [
72
+ SheetType.typename,
73
+ async (space, n, cb) => {
74
+ const objects = range(n).map(() => {
75
+ const cells = {};
76
+ const year = (/* @__PURE__ */ new Date()).getFullYear();
77
+ const cols = 4;
78
+ const rows = 16;
79
+ for (let col = 1; col <= cols; col++) {
80
+ for (let row = 1; row <= rows; row++) {
81
+ const cell = addressToA1Notation({
82
+ col,
83
+ row
84
+ });
85
+ if (row === 1) {
86
+ cells[cell] = {
87
+ value: `${year} Q${col}`
88
+ };
89
+ } else if (row === rows) {
90
+ const from = addressToA1Notation({
91
+ col,
92
+ row: 2
93
+ });
94
+ const to = addressToA1Notation({
95
+ col,
96
+ row: rows - 1
97
+ });
98
+ cells[cell] = {
99
+ value: `=SUM(${from}:${to})`
100
+ };
101
+ } else if (row > 2 && row < rows - 1) {
102
+ cells[cell] = {
103
+ value: Math.floor(Math.random() * 1e4)
104
+ };
105
+ }
106
+ }
107
+ }
108
+ return space.db.add(createSheet({
109
+ name: faker.commerce.productName(),
110
+ cells
111
+ }));
112
+ });
113
+ cb?.(objects);
114
+ return objects;
115
+ }
116
+ ],
117
+ [
118
+ ComputeGraph.typename,
119
+ async (space, n, cb) => {
120
+ const objects = range(n, () => {
121
+ const model = ComputeGraphModel.create();
122
+ model.builder.createNode({
123
+ id: "gpt-INPUT",
124
+ type: NODE_INPUT
125
+ }).createNode({
126
+ id: "gpt-GPT",
127
+ type: "gpt"
128
+ }).createNode({
129
+ id: "gpt-QUEUE_ID",
130
+ type: "constant",
131
+ value: new DXN(DXN.kind.QUEUE, [
132
+ "data",
133
+ space.id,
134
+ ObjectId.random()
135
+ ]).toString()
136
+ }).createNode({
137
+ id: "gpt-APPEND",
138
+ type: "append"
139
+ }).createNode({
140
+ id: "gpt-OUTPUT",
141
+ type: NODE_OUTPUT
142
+ }).createEdge({
143
+ node: "gpt-INPUT",
144
+ property: "prompt"
145
+ }, {
146
+ node: "gpt-GPT",
147
+ property: "prompt"
148
+ }).createEdge({
149
+ node: "gpt-GPT",
150
+ property: "text"
151
+ }, {
152
+ node: "gpt-OUTPUT",
153
+ property: "text"
154
+ }).createEdge({
155
+ node: "gpt-QUEUE_ID",
156
+ property: DEFAULT_OUTPUT
157
+ }, {
158
+ node: "gpt-APPEND",
159
+ property: "id"
160
+ }).createEdge({
161
+ node: "gpt-GPT",
162
+ property: "messages"
163
+ }, {
164
+ node: "gpt-APPEND",
165
+ property: "items"
166
+ }).createEdge({
167
+ node: "gpt-QUEUE_ID",
168
+ property: DEFAULT_OUTPUT
169
+ }, {
170
+ node: "gpt-OUTPUT",
171
+ property: "queue"
172
+ });
173
+ return space.db.add(model.root);
174
+ });
175
+ cb?.(objects);
176
+ return objects;
177
+ }
178
+ ]
179
+ ]);
180
+ var createGenerator = (type) => {
181
+ return async (space, n, cb) => {
182
+ const schema = await space.db.schemaRegistry.query({
183
+ typename: type.typename
184
+ }).firstOrUndefined() ?? (await space.db.schemaRegistry.register([
185
+ type
186
+ ]))[0];
187
+ const generate = createAsyncGenerator(generator, schema.getSchemaSnapshot(), {
188
+ db: space.db
189
+ });
190
+ const objects = await generate.createObjects(n);
191
+ const { objects: tables } = await space.db.query(Filter.schema(TableType)).run();
192
+ const table = tables.find((table2) => table2.view?.target?.query?.type === type.typename);
193
+ if (!table) {
194
+ const name = type.typename.split("/").pop() ?? type.typename;
195
+ const view = createView({
196
+ name,
197
+ typename: type.typename,
198
+ jsonSchema: schema.jsonSchema
199
+ });
200
+ const table2 = space.db.add(create(TableType, {
201
+ name,
202
+ view: makeRef(view)
203
+ }));
204
+ cb?.([
205
+ table2
206
+ ]);
207
+ }
208
+ return objects;
209
+ };
210
+ };
211
+
212
+ // packages/plugins/plugin-debug/src/components/SpaceGenerator/SchemaTable.tsx
213
+ import React from "react";
214
+ import { IconButton } from "@dxos/react-ui";
215
+ var SchemaTable = ({ types, objects = {}, label, onClick }) => {
216
+ return /* @__PURE__ */ React.createElement("div", {
217
+ className: "grid grid-cols-[1fr_80px_40px] gap-1 overflow-hidden"
218
+ }, /* @__PURE__ */ React.createElement("div", {
219
+ className: "grid grid-cols-subgrid col-span-3"
220
+ }, /* @__PURE__ */ React.createElement("div", {
221
+ className: "px-2 text-sm text-primary-500"
222
+ }, label), /* @__PURE__ */ React.createElement("div", {
223
+ className: "px-2 text-xs text-subdued text-right"
224
+ }, "count")), types.map((type) => /* @__PURE__ */ React.createElement("div", {
225
+ key: type.typename,
226
+ className: "grid grid-cols-subgrid col-span-3 items-center"
227
+ }, /* @__PURE__ */ React.createElement("div", {
228
+ className: "px-2 text-sm font-mono text-green-500"
229
+ }, type.typename), /* @__PURE__ */ React.createElement("div", {
230
+ className: "px-2 text-right font-mono"
231
+ }, objects[type.typename] ?? 0), /* @__PURE__ */ React.createElement(IconButton, {
232
+ variant: "ghost",
233
+ icon: "ph--plus--regular",
234
+ iconOnly: true,
235
+ label: "Create data",
236
+ onClick: () => onClick(type.typename)
237
+ }))));
238
+ };
239
+
240
+ // packages/plugins/plugin-debug/src/components/SpaceGenerator/presets.ts
241
+ import { EmailTriggerOutput, NODE_INPUT as NODE_INPUT2 } from "@dxos/conductor";
242
+ import { AST, ObjectId as ObjectId2, S, toJsonSchema } from "@dxos/echo-schema";
243
+ import { FunctionTrigger, TriggerKind } from "@dxos/functions/types";
244
+ import { invariant } from "@dxos/invariant";
245
+ import { DXN as DXN2 } from "@dxos/keys";
246
+ import { create as create2, makeRef as makeRef2 } from "@dxos/live-object";
247
+ import { Filter as Filter2 } from "@dxos/react-client/echo";
248
+ import { createAppend, createChat, createComputeGraph, createConstant, createFunction, createGpt, createQueue, createSurface, createRandom, createTemplate, createText, createTrigger } from "@dxos/react-ui-canvas-compute";
249
+ import { CanvasBoardType, CanvasGraphModel, pointMultiply, pointsToRect, rectToPoints } from "@dxos/react-ui-canvas-editor";
250
+ import { TableType as TableType2 } from "@dxos/react-ui-table";
251
+ import { range as range2 } from "@dxos/util";
252
+ var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-debug/src/components/SpaceGenerator/presets.ts";
253
+ var PresetName;
254
+ (function(PresetName2) {
255
+ PresetName2["EMAIL_TABLE"] = "email-table";
256
+ PresetName2["GPT_QUEUE"] = "webhook-gpt-queue";
257
+ PresetName2["CHAT_GPT"] = "chat-gpt-text";
258
+ PresetName2["EMAIL_WITH_SUMMARY"] = "email-gptSummary-table";
259
+ PresetName2["OBJECT_CHANGE_QUEUE"] = "objectChange-queue";
260
+ PresetName2["FOREX_FUNCTION_CALL"] = "forex-function-call";
261
+ PresetName2["TIMER_TICK_QUEUE"] = "timerTick-queue";
262
+ PresetName2["DISCORD_MESSAGES"] = "discord-messages";
263
+ PresetName2["KANBAN_QUEUE"] = "kanban-queue";
264
+ })(PresetName || (PresetName = {}));
265
+ var presets = {
266
+ schemas: [
267
+ CanvasBoardType,
268
+ FunctionTrigger
269
+ ],
270
+ types: Object.values(PresetName).map((name) => ({
271
+ typename: name
272
+ })),
273
+ items: [
274
+ [
275
+ "webhook-gpt-queue",
276
+ async (space, n, cb) => {
277
+ const objects = range2(n, () => {
278
+ const canvasModel = CanvasGraphModel.create();
279
+ let functionTrigger;
280
+ canvasModel.builder.call((builder) => {
281
+ const gpt = canvasModel.createNode(createGpt(position({
282
+ x: 0,
283
+ y: -14
284
+ })));
285
+ const triggerShape = createTrigger({
286
+ spaceId: space.id,
287
+ triggerKind: TriggerKind.Webhook,
288
+ ...position({
289
+ x: -18,
290
+ y: -2
291
+ })
292
+ });
293
+ const trigger = canvasModel.createNode(triggerShape);
294
+ const text = canvasModel.createNode(createText(position({
295
+ x: 19,
296
+ y: 3,
297
+ width: 10,
298
+ height: 10
299
+ })));
300
+ const { queueId } = setupQueue(space, canvasModel);
301
+ const append = canvasModel.createNode(createAppend(position({
302
+ x: 10,
303
+ y: 6
304
+ })));
305
+ builder.createEdge({
306
+ source: trigger.id,
307
+ target: gpt.id,
308
+ input: "prompt",
309
+ output: "bodyText"
310
+ }).createEdge({
311
+ source: gpt.id,
312
+ target: text.id,
313
+ output: "text"
314
+ }).createEdge({
315
+ source: queueId.id,
316
+ target: append.id,
317
+ input: "id"
318
+ }).createEdge({
319
+ source: gpt.id,
320
+ target: append.id,
321
+ output: "messages",
322
+ input: "items"
323
+ });
324
+ functionTrigger = triggerShape.functionTrigger.target;
325
+ });
326
+ const computeModel = createComputeGraph(canvasModel);
327
+ attachTrigger(functionTrigger, computeModel);
328
+ return addToSpace("webhook-gpt-queue", space, canvasModel, computeModel);
329
+ });
330
+ cb?.(objects);
331
+ return objects;
332
+ }
333
+ ],
334
+ [
335
+ "objectChange-queue",
336
+ async (space, n, cb) => {
337
+ const objects = range2(n, () => {
338
+ const { canvasModel, computeModel } = createQueueSinkPreset(space, TriggerKind.Subscription, (triggerSpec) => triggerSpec.filter = {
339
+ type: "dxn:type:dxos.org/type/Chess"
340
+ }, "type");
341
+ return addToSpace("objectChange-queue", space, canvasModel, computeModel);
342
+ });
343
+ cb?.(objects);
344
+ return objects;
345
+ }
346
+ ],
347
+ [
348
+ "timerTick-queue",
349
+ async (space, n, cb) => {
350
+ const objects = range2(n, () => {
351
+ const { canvasModel, computeModel } = createQueueSinkPreset(space, TriggerKind.Timer, (triggerSpec) => triggerSpec.cron = "*/5 * * * * *", "result");
352
+ return addToSpace("timerTick-queue", space, canvasModel, computeModel);
353
+ });
354
+ cb?.(objects);
355
+ return objects;
356
+ }
357
+ ],
358
+ [
359
+ "email-table",
360
+ async (space, n, cb) => {
361
+ const objects = range2(n, () => {
362
+ const canvasModel = CanvasGraphModel.create();
363
+ const results = space.db.query(Filter2.schema(TableType2)).runSync();
364
+ const emailTable = results.find((r) => r.object?.view?.target?.query?.type?.endsWith("Email"));
365
+ invariant(emailTable, "Email table not found.", {
366
+ F: __dxlog_file,
367
+ L: 136,
368
+ S: void 0,
369
+ A: [
370
+ "emailTable",
371
+ "'Email table not found.'"
372
+ ]
373
+ });
374
+ const template = canvasModel.createNode(createTemplate({
375
+ valueType: "object",
376
+ ...rawPosition({
377
+ centerX: -80,
378
+ centerY: -64,
379
+ width: 320,
380
+ height: 320
381
+ })
382
+ }));
383
+ const templateContent = [
384
+ "{"
385
+ ];
386
+ let functionTrigger;
387
+ canvasModel.builder.call((builder) => {
388
+ const triggerShape = createTrigger({
389
+ spaceId: space.id,
390
+ triggerKind: TriggerKind.Email,
391
+ ...position({
392
+ x: -18,
393
+ y: -2
394
+ })
395
+ });
396
+ const trigger = canvasModel.createNode(triggerShape);
397
+ const tableId = canvasModel.createNode(createConstant({
398
+ value: DXN2.fromLocalObjectId(emailTable.id).toString(),
399
+ ...position({
400
+ x: -18,
401
+ y: 5,
402
+ width: 8,
403
+ height: 6
404
+ })
405
+ }));
406
+ const appendToTable = canvasModel.createNode(createAppend(position({
407
+ x: 10,
408
+ y: 6
409
+ })));
410
+ const properties = AST.getPropertySignatures(EmailTriggerOutput.ast);
411
+ for (let i = 0; i < properties.length; i++) {
412
+ const propName = properties[i].name.toString();
413
+ builder.createEdge({
414
+ source: trigger.id,
415
+ target: template.id,
416
+ input: propName,
417
+ output: propName
418
+ });
419
+ templateContent.push(` "${propName}": "{{${propName}}}"` + (i === properties.length - 1 ? "" : ","));
420
+ }
421
+ templateContent.push("}");
422
+ builder.createEdge({
423
+ source: tableId.id,
424
+ target: appendToTable.id,
425
+ input: "id"
426
+ }).createEdge({
427
+ source: template.id,
428
+ target: appendToTable.id,
429
+ input: "items"
430
+ });
431
+ functionTrigger = triggerShape.functionTrigger.target;
432
+ });
433
+ const computeModel = createComputeGraph(canvasModel);
434
+ const templateComputeNode = computeModel.nodes.find((n2) => n2.id === template.node);
435
+ invariant(templateComputeNode, "Template compute node was not created.", {
436
+ F: __dxlog_file,
437
+ L: 182,
438
+ S: void 0,
439
+ A: [
440
+ "templateComputeNode",
441
+ "'Template compute node was not created.'"
442
+ ]
443
+ });
444
+ templateComputeNode.value = templateContent.join("\n");
445
+ templateComputeNode.inputSchema = toJsonSchema(EmailTriggerOutput);
446
+ attachTrigger(functionTrigger, computeModel);
447
+ return addToSpace("email-table", space, canvasModel, computeModel);
448
+ });
449
+ cb?.(objects);
450
+ return objects;
451
+ }
452
+ ],
453
+ [
454
+ "chat-gpt-text",
455
+ async (space, n, cb) => {
456
+ const objects = range2(n, () => {
457
+ const canvasModel = CanvasGraphModel.create();
458
+ canvasModel.builder.call((builder) => {
459
+ const gpt = canvasModel.createNode(createGpt(position({
460
+ x: 0,
461
+ y: -14
462
+ })));
463
+ const chat = canvasModel.createNode(createChat(position({
464
+ x: -18,
465
+ y: -2
466
+ })));
467
+ const text = canvasModel.createNode(createText(position({
468
+ x: 19,
469
+ y: 3,
470
+ width: 10,
471
+ height: 10
472
+ })));
473
+ const { queueId } = setupQueue(space, canvasModel);
474
+ const append = canvasModel.createNode(createAppend(position({
475
+ x: 10,
476
+ y: 6
477
+ })));
478
+ builder.createEdge({
479
+ source: chat.id,
480
+ target: gpt.id,
481
+ input: "prompt"
482
+ }).createEdge({
483
+ source: gpt.id,
484
+ target: text.id,
485
+ output: "text"
486
+ }).createEdge({
487
+ source: queueId.id,
488
+ target: append.id,
489
+ input: "id"
490
+ }).createEdge({
491
+ source: gpt.id,
492
+ target: append.id,
493
+ output: "messages",
494
+ input: "items"
495
+ });
496
+ });
497
+ const computeModel = createComputeGraph(canvasModel);
498
+ return addToSpace("chat-gpt-text", space, canvasModel, computeModel);
499
+ });
500
+ cb?.(objects);
501
+ return objects;
502
+ }
503
+ ],
504
+ [
505
+ "email-gptSummary-table",
506
+ async (space, n, cb) => {
507
+ const objects = range2(n, () => {
508
+ const canvasModel = CanvasGraphModel.create();
509
+ const results = space.db.query(Filter2.schema(TableType2)).runSync();
510
+ const emailTable = results.find((r) => r.object?.view?.target?.query?.type?.endsWith("Email"));
511
+ invariant(emailTable, "Email table not found.", {
512
+ F: __dxlog_file,
513
+ L: 233,
514
+ S: void 0,
515
+ A: [
516
+ "emailTable",
517
+ "'Email table not found.'"
518
+ ]
519
+ });
520
+ const template = canvasModel.createNode(createTemplate({
521
+ valueType: "object",
522
+ ...rawPosition({
523
+ centerX: 192,
524
+ centerY: -176,
525
+ width: 320,
526
+ height: 320
527
+ })
528
+ }));
529
+ const templateContent = [
530
+ "{"
531
+ ];
532
+ let functionTrigger;
533
+ canvasModel.builder.call((builder) => {
534
+ const gpt = canvasModel.createNode(createGpt(rawPosition({
535
+ centerX: -400,
536
+ centerY: -112,
537
+ width: 256,
538
+ height: 202
539
+ })));
540
+ const systemPrompt = canvasModel.createNode(createConstant({
541
+ value: "use one word to describe content category. don't write anything else",
542
+ ...rawPosition({
543
+ centerX: -800,
544
+ centerY: -160,
545
+ width: 192,
546
+ height: 128
547
+ })
548
+ }));
549
+ const triggerShape = createTrigger({
550
+ spaceId: space.id,
551
+ triggerKind: TriggerKind.Email,
552
+ ...rawPosition({
553
+ centerX: -736,
554
+ centerY: -384,
555
+ width: 182,
556
+ height: 192
557
+ })
558
+ });
559
+ const trigger = canvasModel.createNode(triggerShape);
560
+ const { queueId } = setupQueue(space, canvasModel, {
561
+ idPosition: {
562
+ centerX: -720,
563
+ centerY: 224,
564
+ width: 192,
565
+ height: 256
566
+ },
567
+ queuePosition: {
568
+ centerX: -144,
569
+ centerY: 416,
570
+ width: 320,
571
+ height: 448
572
+ }
573
+ });
574
+ const appendToQueue = canvasModel.createNode(createAppend(rawPosition({
575
+ centerX: -80,
576
+ centerY: 96,
577
+ width: 122,
578
+ height: 128
579
+ })));
580
+ const tableId = canvasModel.createNode(createConstant({
581
+ value: DXN2.fromLocalObjectId(emailTable.id).toString(),
582
+ ...rawPosition({
583
+ centerX: -112,
584
+ centerY: -544,
585
+ width: 192,
586
+ height: 256
587
+ })
588
+ }));
589
+ const appendToTable = canvasModel.createNode(createAppend(rawPosition({
590
+ centerX: 560,
591
+ centerY: -416,
592
+ width: 128,
593
+ height: 122
594
+ })));
595
+ templateContent.push(' "category": "{{text}}",');
596
+ builder.createEdge({
597
+ source: gpt.id,
598
+ target: template.id,
599
+ input: "text",
600
+ output: "text"
601
+ });
602
+ const properties = AST.getPropertySignatures(EmailTriggerOutput.ast);
603
+ for (let i = 0; i < properties.length; i++) {
604
+ const propName = properties[i].name.toString();
605
+ builder.createEdge({
606
+ source: trigger.id,
607
+ target: template.id,
608
+ input: propName,
609
+ output: propName
610
+ });
611
+ templateContent.push(` "${propName}": "{{${propName}}}"` + (i === properties.length - 1 ? "" : ","));
612
+ }
613
+ templateContent.push("}");
614
+ builder.createEdge({
615
+ source: tableId.id,
616
+ target: appendToTable.id,
617
+ input: "id"
618
+ }).createEdge({
619
+ source: queueId.id,
620
+ target: appendToQueue.id,
621
+ input: "id"
622
+ }).createEdge({
623
+ source: gpt.id,
624
+ target: appendToQueue.id,
625
+ output: "messages",
626
+ input: "items"
627
+ }).createEdge({
628
+ source: systemPrompt.id,
629
+ target: gpt.id,
630
+ input: "systemPrompt"
631
+ }).createEdge({
632
+ source: trigger.id,
633
+ target: gpt.id,
634
+ input: "prompt",
635
+ output: "body"
636
+ }).createEdge({
637
+ source: template.id,
638
+ target: appendToTable.id,
639
+ input: "items"
640
+ });
641
+ functionTrigger = triggerShape.functionTrigger.target;
642
+ });
643
+ const computeModel = createComputeGraph(canvasModel);
644
+ const templateComputeNode = computeModel.nodes.find((n2) => n2.id === template.node);
645
+ invariant(templateComputeNode, "Template compute node was not created.", {
646
+ F: __dxlog_file,
647
+ L: 305,
648
+ S: void 0,
649
+ A: [
650
+ "templateComputeNode",
651
+ "'Template compute node was not created.'"
652
+ ]
653
+ });
654
+ templateComputeNode.value = templateContent.join("\n");
655
+ const extendedSchema = S.extend(EmailTriggerOutput, S.Struct({
656
+ text: S.String
657
+ }));
658
+ templateComputeNode.inputSchema = toJsonSchema(extendedSchema);
659
+ attachTrigger(functionTrigger, computeModel);
660
+ return addToSpace("email-gptSummary-table", space, canvasModel, computeModel);
661
+ });
662
+ cb?.(objects);
663
+ return objects;
664
+ }
665
+ ],
666
+ [
667
+ "forex-function-call",
668
+ async (space, n, cb) => {
669
+ const objects = range2(n, () => {
670
+ const canvasModel = CanvasGraphModel.create();
671
+ canvasModel.builder.call((builder) => {
672
+ const sourceCurrency = canvasModel.createNode(createConstant({
673
+ value: "USD",
674
+ ...position({
675
+ x: -10,
676
+ y: -5
677
+ })
678
+ }));
679
+ const targetCurrency = canvasModel.createNode(createConstant({
680
+ value: "EUR",
681
+ ...position({
682
+ x: -10,
683
+ y: 5
684
+ })
685
+ }));
686
+ const converter = canvasModel.createNode(createFunction(position({
687
+ x: 0,
688
+ y: 0
689
+ })));
690
+ const view = canvasModel.createNode(createSurface(position({
691
+ x: 12,
692
+ y: 0
693
+ })));
694
+ builder.createEdge({
695
+ source: sourceCurrency.id,
696
+ target: converter.id,
697
+ input: "from"
698
+ }).createEdge({
699
+ source: targetCurrency.id,
700
+ target: converter.id,
701
+ input: "to"
702
+ }).createEdge({
703
+ source: converter.id,
704
+ target: view.id,
705
+ output: "rate"
706
+ });
707
+ });
708
+ const computeModel = createComputeGraph(canvasModel);
709
+ return addToSpace("forex-function-call", space, canvasModel, computeModel);
710
+ });
711
+ cb?.(objects);
712
+ return objects;
713
+ }
714
+ ],
715
+ [
716
+ "discord-messages",
717
+ async (space, n, cb) => {
718
+ const objects = range2(n, () => {
719
+ const canvasModel = CanvasGraphModel.create();
720
+ let functionTrigger;
721
+ canvasModel.builder.call((builder) => {
722
+ const triggerShape = createTrigger({
723
+ spaceId: space.id,
724
+ triggerKind: TriggerKind.Timer,
725
+ ...position({
726
+ x: -10,
727
+ y: -5
728
+ })
729
+ });
730
+ const trigger = canvasModel.createNode(triggerShape);
731
+ const channelId = canvasModel.createNode(createConstant({
732
+ value: "1088569858767212554",
733
+ ...position({
734
+ x: -10,
735
+ y: 0
736
+ })
737
+ }));
738
+ const queueId = canvasModel.createNode(createConstant({
739
+ value: new DXN2(DXN2.kind.QUEUE, [
740
+ "data",
741
+ space.id,
742
+ ObjectId2.random()
743
+ ]).toString(),
744
+ ...position({
745
+ x: -10,
746
+ y: 5
747
+ })
748
+ }));
749
+ const converter = canvasModel.createNode(createFunction(position({
750
+ x: 0,
751
+ y: 0
752
+ })));
753
+ const view = canvasModel.createNode(createText(position({
754
+ x: 12,
755
+ y: 0
756
+ })));
757
+ const queue = canvasModel.createNode(createQueue(position({
758
+ x: 0,
759
+ y: 12
760
+ })));
761
+ builder.createEdge({
762
+ source: trigger.id,
763
+ target: converter.id,
764
+ input: "tick"
765
+ }).createEdge({
766
+ source: channelId.id,
767
+ target: converter.id,
768
+ input: "channelId"
769
+ }).createEdge({
770
+ source: queueId.id,
771
+ target: converter.id,
772
+ input: "queueId"
773
+ }).createEdge({
774
+ source: converter.id,
775
+ target: view.id,
776
+ output: "newMessages"
777
+ }).createEdge({
778
+ source: queueId.id,
779
+ target: queue.id,
780
+ input: "input"
781
+ });
782
+ functionTrigger = triggerShape.functionTrigger.target;
783
+ });
784
+ const computeModel = createComputeGraph(canvasModel);
785
+ attachTrigger(functionTrigger, computeModel);
786
+ return addToSpace("discord-messages", space, canvasModel, computeModel);
787
+ });
788
+ cb?.(objects);
789
+ return objects;
790
+ }
791
+ ],
792
+ [
793
+ "kanban-queue",
794
+ async (space, n, cb) => {
795
+ const objects = range2(n, () => {
796
+ const canvasModel = CanvasGraphModel.create();
797
+ const results = space.db.query(Filter2.schema(TableType2)).runSync();
798
+ const messages = results.find((r) => r.object?.view?.target?.query?.type?.endsWith("Message"));
799
+ invariant(messages, "Table not found.", {
800
+ F: __dxlog_file,
801
+ L: 411,
802
+ S: void 0,
803
+ A: [
804
+ "messages",
805
+ "'Table not found.'"
806
+ ]
807
+ });
808
+ let functionTrigger;
809
+ canvasModel.builder.call((builder) => {
810
+ const triggerShape = createTrigger({
811
+ spaceId: space.id,
812
+ triggerKind: TriggerKind.Queue,
813
+ ...position({
814
+ x: -10,
815
+ y: -5
816
+ })
817
+ });
818
+ const trigger = canvasModel.createNode(triggerShape);
819
+ const tableId = canvasModel.createNode(createConstant({
820
+ value: DXN2.fromLocalObjectId(messages.id).toString(),
821
+ ...position({
822
+ x: -10,
823
+ y: 5
824
+ })
825
+ }));
826
+ const appendToTable = canvasModel.createNode(createAppend(position({
827
+ x: 10,
828
+ y: 0
829
+ })));
830
+ builder.createEdge({
831
+ source: tableId.id,
832
+ target: appendToTable.id,
833
+ input: "id"
834
+ }).createEdge({
835
+ source: trigger.id,
836
+ target: appendToTable.id,
837
+ input: "items",
838
+ output: "item"
839
+ });
840
+ functionTrigger = triggerShape.functionTrigger.target;
841
+ });
842
+ const computeModel = createComputeGraph(canvasModel);
843
+ attachTrigger(functionTrigger, computeModel);
844
+ return addToSpace("kanban-queue", space, canvasModel, computeModel);
845
+ });
846
+ cb?.(objects);
847
+ return objects;
848
+ }
849
+ ]
850
+ ]
851
+ };
852
+ var createQueueSinkPreset = (space, triggerKind, initSpec, triggerOutputName) => {
853
+ const canvasModel = CanvasGraphModel.create();
854
+ const template = canvasModel.createNode(createTemplate({
855
+ valueType: "object",
856
+ ...rawPosition({
857
+ centerX: -64,
858
+ centerY: -79,
859
+ width: 320,
860
+ height: 320
861
+ })
862
+ }));
863
+ let functionTrigger;
864
+ canvasModel.builder.call((builder) => {
865
+ const triggerShape = createTrigger({
866
+ spaceId: space.id,
867
+ triggerKind,
868
+ ...rawPosition({
869
+ centerX: -578,
870
+ centerY: -187,
871
+ height: 320,
872
+ width: 320
873
+ })
874
+ });
875
+ const trigger = canvasModel.createNode(triggerShape);
876
+ const { queueId } = setupQueue(space, canvasModel, {
877
+ queuePosition: {
878
+ centerX: -80,
879
+ centerY: 378,
880
+ width: 320,
881
+ height: 448
882
+ }
883
+ });
884
+ const append = canvasModel.createNode(createAppend(rawPosition({
885
+ centerX: 320,
886
+ centerY: 192,
887
+ width: 128,
888
+ height: 122
889
+ })));
890
+ const random = canvasModel.createNode(createRandom(rawPosition({
891
+ centerX: -509,
892
+ centerY: -30,
893
+ width: 64,
894
+ height: 64
895
+ })));
896
+ builder.createEdge({
897
+ source: queueId.id,
898
+ target: append.id,
899
+ input: "id"
900
+ }).createEdge({
901
+ source: template.id,
902
+ target: append.id,
903
+ input: "items"
904
+ }).createEdge({
905
+ source: trigger.id,
906
+ target: template.id,
907
+ output: triggerOutputName,
908
+ input: "type"
909
+ }).createEdge({
910
+ source: random.id,
911
+ target: template.id,
912
+ input: "changeId"
913
+ });
914
+ functionTrigger = triggerShape.functionTrigger.target;
915
+ const triggerSpec = functionTrigger.spec;
916
+ invariant(triggerSpec && triggerSpec.type === triggerKind, "No trigger spec.", {
917
+ F: __dxlog_file,
918
+ L: 494,
919
+ S: void 0,
920
+ A: [
921
+ "triggerSpec && triggerSpec.type === triggerKind",
922
+ "'No trigger spec.'"
923
+ ]
924
+ });
925
+ initSpec(triggerSpec);
926
+ });
927
+ const computeModel = createComputeGraph(canvasModel);
928
+ const templateComputeNode = computeModel.nodes.find((n) => n.id === template.node);
929
+ invariant(templateComputeNode, "Template compute node was not created.", {
930
+ F: __dxlog_file,
931
+ L: 501,
932
+ S: void 0,
933
+ A: [
934
+ "templateComputeNode",
935
+ "'Template compute node was not created.'"
936
+ ]
937
+ });
938
+ templateComputeNode.value = [
939
+ "{",
940
+ ' "@type": "{{type}}",',
941
+ ' "id": "@{{changeId}}"',
942
+ "}"
943
+ ].join("\n");
944
+ templateComputeNode.inputSchema = toJsonSchema(S.Struct({
945
+ type: S.String,
946
+ changeId: S.String
947
+ }));
948
+ attachTrigger(functionTrigger, computeModel);
949
+ return {
950
+ canvasModel,
951
+ computeModel
952
+ };
953
+ };
954
+ var addToSpace = (name, space, canvas, compute) => {
955
+ return space.db.add(create2(CanvasBoardType, {
956
+ name,
957
+ computeGraph: makeRef2(compute.root),
958
+ layout: canvas.graph
959
+ }));
960
+ };
961
+ var setupQueue = (space, canvasModel, args) => {
962
+ const queueId = canvasModel.createNode(createConstant({
963
+ value: new DXN2(DXN2.kind.QUEUE, [
964
+ "data",
965
+ space.id,
966
+ ObjectId2.random()
967
+ ]).toString(),
968
+ ...args?.idPosition ? rawPosition(args.idPosition) : position({
969
+ x: -18,
970
+ y: 5,
971
+ width: 8,
972
+ height: 6
973
+ })
974
+ }));
975
+ const queue = canvasModel.createNode(createQueue(args?.queuePosition ? rawPosition(args.queuePosition) : position({
976
+ x: -3,
977
+ y: 3,
978
+ width: 14,
979
+ height: 10
980
+ })));
981
+ canvasModel.createEdge({
982
+ source: queueId.id,
983
+ target: queue.id
984
+ });
985
+ return {
986
+ queue,
987
+ queueId
988
+ };
989
+ };
990
+ var attachTrigger = (functionTrigger, computeModel) => {
991
+ invariant(functionTrigger, void 0, {
992
+ F: __dxlog_file,
993
+ L: 541,
994
+ S: void 0,
995
+ A: [
996
+ "functionTrigger",
997
+ ""
998
+ ]
999
+ });
1000
+ functionTrigger.function = DXN2.fromLocalObjectId(computeModel.root.id).toString();
1001
+ functionTrigger.meta ??= {};
1002
+ const inputNode = computeModel.nodes.find((node) => node.type === NODE_INPUT2);
1003
+ functionTrigger.meta.computeNodeId = inputNode.id;
1004
+ };
1005
+ var rawPosition = (args) => {
1006
+ return {
1007
+ center: {
1008
+ x: args.centerX,
1009
+ y: args.centerY
1010
+ },
1011
+ size: {
1012
+ width: args.width,
1013
+ height: args.height
1014
+ }
1015
+ };
1016
+ };
1017
+ var position = (rect) => {
1018
+ const snap = 32;
1019
+ const [center, size] = rectToPoints({
1020
+ width: 0,
1021
+ height: 0,
1022
+ ...rect
1023
+ });
1024
+ const { x, y, width, height } = pointsToRect([
1025
+ pointMultiply(center, snap),
1026
+ pointMultiply(size, snap)
1027
+ ]);
1028
+ if (width && height) {
1029
+ return {
1030
+ center: {
1031
+ x,
1032
+ y
1033
+ },
1034
+ size: width && height ? {
1035
+ width,
1036
+ height
1037
+ } : void 0
1038
+ };
1039
+ } else {
1040
+ return {
1041
+ center: {
1042
+ x,
1043
+ y
1044
+ }
1045
+ };
1046
+ }
1047
+ };
1048
+
1049
+ // packages/plugins/plugin-debug/src/components/SpaceGenerator/SpaceGenerator.tsx
1050
+ var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-debug/src/components/SpaceGenerator/SpaceGenerator.tsx";
1051
+ var SpaceGenerator = ({ space, onCreateObjects }) => {
1052
+ const { dispatchPromise: dispatch } = useIntentDispatcher();
1053
+ const client = useClient();
1054
+ const staticTypes = [
1055
+ DocumentType2,
1056
+ DiagramType2,
1057
+ SheetType2,
1058
+ ComputeGraph2
1059
+ ];
1060
+ const mutableTypes = [
1061
+ Testing.OrgType,
1062
+ Testing.ProjectType,
1063
+ Testing.ContactType,
1064
+ Testing.EmailType,
1065
+ Testing.MessageType
1066
+ ];
1067
+ const [count, setCount] = useState(1);
1068
+ const [info, setInfo] = useState({});
1069
+ const typeMap = useMemo(() => {
1070
+ client.addTypes([
1071
+ ...staticTypes,
1072
+ ...presets.schemas
1073
+ ]);
1074
+ const mutableGenerators = new Map(mutableTypes.map((type) => [
1075
+ type.typename,
1076
+ createGenerator(type)
1077
+ ]));
1078
+ return new Map([
1079
+ ...staticGenerators,
1080
+ ...presets.items,
1081
+ ...mutableGenerators
1082
+ ]);
1083
+ }, [
1084
+ client,
1085
+ mutableTypes
1086
+ ]);
1087
+ const updateInfo = async () => {
1088
+ const echoSchema = await space.db.schemaRegistry.query().run();
1089
+ const staticSchema = space.db.graph.schemaRegistry.schemas;
1090
+ const { objects } = await space.db.query().run();
1091
+ const objectMap = sortKeys(objects.reduce((map, obj) => {
1092
+ const type = getTypename(obj);
1093
+ if (type) {
1094
+ const count2 = map[type] ?? 0;
1095
+ map[type] = count2 + 1;
1096
+ }
1097
+ return map;
1098
+ }, {}));
1099
+ setInfo({
1100
+ schema: {
1101
+ static: staticSchema.length,
1102
+ mutable: echoSchema.length
1103
+ },
1104
+ objects: objectMap
1105
+ });
1106
+ };
1107
+ useAsyncEffect(updateInfo, [
1108
+ space
1109
+ ]);
1110
+ const handleCreateData = useCallback(async (typename) => {
1111
+ const constructor = typeMap.get(typename);
1112
+ if (constructor) {
1113
+ await constructor(space, count, onCreateObjects);
1114
+ await updateInfo();
1115
+ }
1116
+ }, [
1117
+ typeMap,
1118
+ count
1119
+ ]);
1120
+ const handleLoadTables = useCallback(async () => {
1121
+ const input = document.createElement("input");
1122
+ input.type = "file";
1123
+ input.accept = ".json";
1124
+ input.onchange = async (e) => {
1125
+ const file = e.target.files?.[0];
1126
+ if (!file) {
1127
+ return;
1128
+ }
1129
+ try {
1130
+ const content = await file.text();
1131
+ const data = JSON.parse(content);
1132
+ const schemas = await space.db.schemaRegistry.register(data.schemas.map(toEffectSchema));
1133
+ await Promise.all(schemas.map(async (schema) => {
1134
+ const parts = schema.typename.split("/");
1135
+ const name = parts[parts.length - 1];
1136
+ const table = create3(TableType3, {
1137
+ name,
1138
+ threads: []
1139
+ });
1140
+ await initializeTable({
1141
+ space,
1142
+ table,
1143
+ initialSchema: schema.typename
1144
+ });
1145
+ await dispatch(createIntent(SpaceAction.AddObject, {
1146
+ target: space,
1147
+ object: table
1148
+ }));
1149
+ return table;
1150
+ }));
1151
+ await Promise.all(data.objects.map(async ({ id, "@type": typename, ...fields }) => {
1152
+ const schema = schemas.find((s) => `dxn:type:${s.typename}:${s.version}` === typename);
1153
+ if (!schema) {
1154
+ log.warn("Missing schema for object", {
1155
+ id,
1156
+ typename
1157
+ }, {
1158
+ F: __dxlog_file2,
1159
+ L: 131,
1160
+ S: void 0,
1161
+ C: (f, a) => f(...a)
1162
+ });
1163
+ return;
1164
+ }
1165
+ const object = create3(schema, fields);
1166
+ space.db.add(object);
1167
+ return object;
1168
+ }));
1169
+ } catch (err) {
1170
+ log.catch(err, void 0, {
1171
+ F: __dxlog_file2,
1172
+ L: 140,
1173
+ S: void 0,
1174
+ C: (f, a) => f(...a)
1175
+ });
1176
+ }
1177
+ };
1178
+ input.click();
1179
+ }, []);
1180
+ return /* @__PURE__ */ React2.createElement("div", {
1181
+ role: "none",
1182
+ className: "flex flex-col divide-y divide-separator"
1183
+ }, /* @__PURE__ */ React2.createElement(Toolbar.Root, {
1184
+ classNames: "p-1"
1185
+ }, /* @__PURE__ */ React2.createElement(IconButton2, {
1186
+ icon: "ph--arrow-clockwise--regular",
1187
+ iconOnly: true,
1188
+ label: "Refresh",
1189
+ onClick: updateInfo
1190
+ }), /* @__PURE__ */ React2.createElement(IconButton2, {
1191
+ icon: "ph--file-arrow-up--regular",
1192
+ iconOnly: true,
1193
+ label: "Load tables from JSON",
1194
+ onClick: handleLoadTables
1195
+ }), /* @__PURE__ */ React2.createElement(Toolbar.Separator, {
1196
+ variant: "gap"
1197
+ }), /* @__PURE__ */ React2.createElement("div", {
1198
+ className: "flex"
1199
+ }, /* @__PURE__ */ React2.createElement(Input.Root, null, /* @__PURE__ */ React2.createElement(Input.TextInput, {
1200
+ type: "number",
1201
+ min: 1,
1202
+ max: 100,
1203
+ placeholder: "Count",
1204
+ classNames: "w-[80px]",
1205
+ value: count,
1206
+ onChange: (ev) => setCount(parseInt(ev.target.value))
1207
+ })))), /* @__PURE__ */ React2.createElement(SchemaTable, {
1208
+ types: staticTypes,
1209
+ objects: info.objects,
1210
+ label: "Static Types",
1211
+ onClick: handleCreateData
1212
+ }), /* @__PURE__ */ React2.createElement(SchemaTable, {
1213
+ types: mutableTypes,
1214
+ objects: info.objects,
1215
+ label: "Mutable Types",
1216
+ onClick: handleCreateData
1217
+ }), /* @__PURE__ */ React2.createElement(SchemaTable, {
1218
+ types: presets.types,
1219
+ objects: info.objects,
1220
+ label: "Presets",
1221
+ onClick: handleCreateData
1222
+ }), /* @__PURE__ */ React2.createElement(SyntaxHighlighter, {
1223
+ classNames: "flex text-xs",
1224
+ language: "json"
1225
+ }, JSON.stringify({
1226
+ space,
1227
+ ...info
1228
+ }, jsonKeyReplacer({
1229
+ truncate: true
1230
+ }), 2)));
1231
+ };
1232
+
1233
+ // packages/plugins/plugin-debug/src/components/SpaceGenerator/index.ts
1234
+ var SpaceGenerator_default = SpaceGenerator;
1235
+ export {
1236
+ SpaceGenerator_default as default
1237
+ };
1238
+ //# sourceMappingURL=SpaceGenerator-BPZGOSH4.mjs.map