@dxos/plugin-debug 0.6.12-main.f9d0246 → 0.6.12-staging.0b4bb48

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 (34) hide show
  1. package/dist/lib/browser/{DebugSpace-J4YF3H67.mjs → DebugSpace-NHPMLATA.mjs} +29 -6
  2. package/dist/lib/browser/DebugSpace-NHPMLATA.mjs.map +7 -0
  3. package/dist/lib/browser/DevtoolsMain-RWT3FLJ6.mjs +15 -0
  4. package/dist/lib/browser/DevtoolsMain-RWT3FLJ6.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-G6OQPL2E.mjs → chunk-RYK3J66D.mjs} +2 -2
  6. package/dist/lib/browser/{chunk-KXZKF6LX.mjs → chunk-WEGYHXMB.mjs} +5 -2
  7. package/dist/lib/browser/chunk-WEGYHXMB.mjs.map +7 -0
  8. package/dist/lib/browser/index.mjs +12 -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/meta.mjs +1 -1
  12. package/dist/types/src/DebugPlugin.d.ts.map +1 -1
  13. package/dist/types/src/components/DevtoolsMain.d.ts +4 -0
  14. package/dist/types/src/components/DevtoolsMain.d.ts.map +1 -0
  15. package/dist/types/src/components/ObjectCreator.d.ts.map +1 -1
  16. package/dist/types/src/components/index.d.ts +1 -0
  17. package/dist/types/src/components/index.d.ts.map +1 -1
  18. package/dist/types/src/meta.d.ts +4 -1
  19. package/dist/types/src/meta.d.ts.map +1 -1
  20. package/dist/types/src/scaffolding/generator.d.ts +2 -1
  21. package/dist/types/src/scaffolding/generator.d.ts.map +1 -1
  22. package/dist/types/src/types.test.d.ts +2 -0
  23. package/dist/types/src/types.test.d.ts.map +1 -0
  24. package/package.json +41 -40
  25. package/src/DebugPlugin.tsx +9 -6
  26. package/src/components/DevtoolsMain.tsx +15 -0
  27. package/src/components/ObjectCreator.tsx +8 -0
  28. package/src/components/index.ts +1 -0
  29. package/src/meta.tsx +5 -1
  30. package/src/scaffolding/generator.ts +14 -1
  31. package/src/types.test.ts +13 -0
  32. package/dist/lib/browser/DebugSpace-J4YF3H67.mjs.map +0 -7
  33. package/dist/lib/browser/chunk-KXZKF6LX.mjs.map +0 -7
  34. /package/dist/lib/browser/{chunk-G6OQPL2E.mjs.map → chunk-RYK3J66D.mjs.map} +0 -0
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  DebugContext
3
- } from "./chunk-G6OQPL2E.mjs";
4
- import "./chunk-KXZKF6LX.mjs";
3
+ } from "./chunk-RYK3J66D.mjs";
4
+ import "./chunk-WEGYHXMB.mjs";
5
5
  import {
6
6
  DebugPanel
7
7
  } from "./chunk-ED5L5YYI.mjs";
@@ -33,7 +33,9 @@ import { SpaceObjectGenerator } from "@dxos/echo-generator";
33
33
  import { create } from "@dxos/echo-schema";
34
34
  import { log } from "@dxos/log";
35
35
  import { DocumentType, TextType } from "@dxos/plugin-markdown/types";
36
- import { TLDrawStoreAdapter } from "@dxos/plugin-sketch/sdk";
36
+ import { createTestSheet } from "@dxos/plugin-sheet/testing";
37
+ import { SheetType } from "@dxos/plugin-sheet/types";
38
+ import { TLDrawStoreAdapter } from "@dxos/plugin-sketch";
37
39
  import { CanvasType, DiagramType, TLDRAW_SCHEMA } from "@dxos/plugin-sketch/types";
38
40
  import { faker } from "@dxos/random";
39
41
  import { createDocAccessor } from "@dxos/react-client/echo";
@@ -42,10 +44,12 @@ var SchemasNames;
42
44
  (function(SchemasNames2) {
43
45
  SchemasNames2["document"] = "dxos.org/type/Document";
44
46
  SchemasNames2["diagram"] = "dxos.org/type/Diagram";
47
+ SchemasNames2["sheet"] = "dxos.org/type/SheetType";
45
48
  })(SchemasNames || (SchemasNames = {}));
46
49
  var SchemasMap = {
47
50
  ["dxos.org/type/Document"]: DocumentType,
48
- ["dxos.org/type/Diagram"]: DiagramType
51
+ ["dxos.org/type/Diagram"]: DiagramType,
52
+ ["dxos.org/type/SheetType"]: SheetType
49
53
  };
50
54
  var ObjectGenerators = {
51
55
  ["dxos.org/type/Document"]: () => {
@@ -73,6 +77,15 @@ var ObjectGenerators = {
73
77
  content: {}
74
78
  })
75
79
  };
80
+ },
81
+ ["dxos.org/type/SheetType"]: () => {
82
+ const name = faker.lorem.sentence({
83
+ min: 2,
84
+ max: 3
85
+ });
86
+ return createTestSheet({
87
+ name
88
+ });
76
89
  }
77
90
  };
78
91
  var MutationsGenerators = {
@@ -92,7 +105,7 @@ var MutationsGenerators = {
92
105
  mutationIdx: i
93
106
  }, {
94
107
  F: __dxlog_file,
95
- L: 74,
108
+ L: 83,
96
109
  S: void 0,
97
110
  C: (f, a) => f(...a)
98
111
  });
@@ -160,6 +173,8 @@ var MutationsGenerators = {
160
173
  await sleep(1);
161
174
  }
162
175
  }
176
+ },
177
+ ["dxos.org/type/SheetType"]: async (object, params) => {
163
178
  }
164
179
  };
165
180
  var createSpaceObjectGenerator = (space) => new SpaceObjectGenerator(space, SchemasMap, ObjectGenerators, MutationsGenerators);
@@ -186,6 +201,14 @@ var ObjectCreator = ({ space, onAddObjects }) => {
186
201
  mutationsCount: 10,
187
202
  mutationSize: 10,
188
203
  maxContentLength: 1e3
204
+ },
205
+ {
206
+ enabled: true,
207
+ schema: SchemasNames.sheet,
208
+ objectsCount: 10,
209
+ mutationsCount: 10,
210
+ mutationSize: 10,
211
+ maxContentLength: 1e3
189
212
  }
190
213
  ]);
191
214
  const handleCreate = async () => {
@@ -410,4 +433,4 @@ var DebugSpace_default = DebugSpace;
410
433
  export {
411
434
  DebugSpace_default as default
412
435
  };
413
- //# sourceMappingURL=DebugSpace-J4YF3H67.mjs.map
436
+ //# sourceMappingURL=DebugSpace-NHPMLATA.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/DebugSpace.tsx", "../../../src/components/ObjectCreator.tsx", "../../../src/scaffolding/generator.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport {\n ArrowClockwise,\n DownloadSimple,\n Flag,\n FlagPennant,\n HandPalm,\n Play,\n PlusMinus,\n Timer,\n UserCirclePlus,\n} from '@phosphor-icons/react';\nimport React, { type FC, useContext, useMemo, useState } from 'react';\n\nimport { type ReactiveObject } from '@dxos/echo-schema';\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 { Button, Input, useFileDownload } from '@dxos/react-ui';\nimport { getSize, mx } from '@dxos/react-ui-theme';\nimport { safeParseInt } from '@dxos/util';\n\nimport { DebugPanel } from './DebugPanel';\nimport { ObjectCreator } from './ObjectCreator';\nimport { createSpaceObjectGenerator } from '../scaffolding';\nimport { DebugContext } from '../types';\n\nconst DEFAULT_COUNT = 100;\nconst DEFAULT_PERIOD = 500;\nconst DEFAULT_JITTER = 50;\n\n// TODO(burdon): Factor out.\nconst useRefresh = (): [any, () => void] => {\n const [update, setUpdate] = useState({});\n return [update, () => setUpdate({})];\n};\n\nconst 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 handleCopy = 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 <DebugPanel\n menu={\n <>\n <div className='relative' title='mutation count'>\n <Input.Root>\n <Input.TextInput\n autoComplete='off'\n size={5}\n classNames='w-[100px] text-right pie-[22px]'\n placeholder='Count'\n value={mutationCount}\n onChange={({ target: { value } }) => setMutationCount(value)}\n />\n </Input.Root>\n <Flag className={mx('absolute inline-end-1 block-start-1 mt-[6px]', getSize(3))} />\n </div>\n <div className='relative' title='mutation period'>\n <Input.Root>\n <Input.TextInput\n autoComplete='off'\n size={5}\n classNames='w-[100px] text-right pie-[22px]'\n placeholder='Interval'\n value={mutationInterval}\n onChange={({ target: { value } }) => setMutationInterval(value)}\n />\n </Input.Root>\n <Timer className={mx('absolute inline-end-1 block-start-1 mt-[6px]', getSize(3))} />\n </div>\n <div className='relative' title='mutation jitter'>\n <Input.Root>\n <Input.TextInput\n autoComplete='off'\n size={5}\n classNames='w-[100px] text-right pie-[22px]'\n placeholder='Jitter'\n value={mutationJitter}\n onChange={({ target: { value } }) => setMutationJitter(value)}\n />\n </Input.Root>\n <PlusMinus className={mx('absolute inline-end-1 block-start-1 mt-[6px]', getSize(3))} />\n </div>\n <Button onClick={handleToggleRunning}>\n {running ? <HandPalm className={getSize(5)} /> : <Play className={getSize(5)} />}\n </Button>\n <Button onClick={handleUpdate}>\n <ArrowClockwise className={getSize(5)} />\n </Button>\n <Button onClick={handleCopy}>\n <DownloadSimple className={getSize(5)} />\n </Button>\n\n <div className='grow' />\n <Button onClick={handleCreateEpoch} title='Create epoch'>\n <FlagPennant className={mx(getSize(5))} />\n </Button>\n <Button onClick={handleCreateInvitation} title='Create Space invitation'>\n <UserCirclePlus className={mx(getSize(5), 'text-blue-500')} />\n </Button>\n </>\n }\n >\n <ObjectCreator space={space} onAddObjects={onAddObjects} />\n </DebugPanel>\n );\n};\n\nexport default DebugSpace;\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { type FC, useMemo, useState } from 'react';\n\nimport { type EchoReactiveObject, type ReactiveObject } from '@dxos/echo-schema';\nimport { type Space } from '@dxos/react-client/echo';\nimport { Button, DensityProvider } from '@dxos/react-ui';\nimport { createColumnBuilder, type TableColumnDef, Table } from '@dxos/react-ui-table';\n\nimport { SchemasNames, createSpaceObjectGenerator } from '../scaffolding';\n\nexport type CreateObjectsParams = {\n enabled: boolean;\n schema: SchemasNames;\n objectsCount: number;\n mutationsCount: number;\n maxContentLength: number;\n mutationSize: number;\n};\n\nconst CREATE_OBJECTS_IN_ONE_CHUNK = 10;\n\nexport const ObjectCreator: FC<{\n space: Space;\n onAddObjects?: (objects: ReactiveObject<any>[]) => void;\n}> = ({ space, onAddObjects }) => {\n const generator = useMemo(() => createSpaceObjectGenerator(space), [space]);\n\n const [objectsToCreate, setObjectsToCreate] = useState<CreateObjectsParams[]>([\n {\n enabled: true,\n schema: SchemasNames.document,\n objectsCount: 10,\n mutationsCount: 10,\n mutationSize: 10,\n maxContentLength: 1000,\n },\n {\n enabled: true,\n schema: SchemasNames.diagram,\n objectsCount: 10,\n mutationsCount: 10,\n mutationSize: 10,\n maxContentLength: 1000,\n },\n {\n enabled: true,\n schema: SchemasNames.sheet,\n objectsCount: 10,\n mutationsCount: 10,\n mutationSize: 10,\n maxContentLength: 1000,\n },\n ]);\n\n const handleCreate = async () => {\n for (const params of objectsToCreate) {\n if (!params.enabled) {\n continue;\n }\n let objectsCreated = 0;\n while (objectsCreated < params.objectsCount) {\n const objects = (await generator.createObjects({\n [params.schema]: Math.min(CREATE_OBJECTS_IN_ONE_CHUNK, params.objectsCount - objectsCreated),\n })) as EchoReactiveObject<any>[];\n\n await generator.mutateObjects(objects, {\n count: params.mutationsCount,\n mutationSize: params.mutationSize,\n maxContentLength: params.maxContentLength,\n });\n objectsCreated += objects.length;\n onAddObjects?.(objects);\n }\n }\n await space.db.flush();\n };\n const handleChangeOnRow = (row: CreateObjectsParams, key: string, value: any) => {\n const newObjects = [...objectsToCreate];\n Object.assign(newObjects.find((object) => object.schema === row.schema)!, { [key]: value });\n setObjectsToCreate(newObjects);\n };\n\n const { helper, builder } = createColumnBuilder<CreateObjectsParams>();\n const columns: TableColumnDef<CreateObjectsParams>[] = [\n helper.accessor('enabled', builder.switch({ label: 'Enabled', onUpdate: handleChangeOnRow })),\n helper.accessor('schema', builder.string({ classNames: 'font-mono', label: 'Schema' })),\n helper.accessor('objectsCount', builder.number({ label: 'Objects', onUpdate: handleChangeOnRow })),\n helper.accessor('mutationsCount', builder.number({ label: 'Mutations', onUpdate: handleChangeOnRow })),\n helper.accessor('mutationSize', builder.number({ label: 'Mut. Size', onUpdate: handleChangeOnRow })),\n helper.accessor('maxContentLength', builder.number({ label: 'Length', onUpdate: handleChangeOnRow })),\n ];\n\n return (\n <>\n <DensityProvider density={'fine'}>\n <Table.Root>\n <Table.Viewport>\n <Table.Main<CreateObjectsParams> columns={columns} data={objectsToCreate} />\n </Table.Viewport>\n </Table.Root>\n </DensityProvider>\n <Button onClick={handleCreate}>Create</Button>\n </>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport {\n createShapeId,\n defaultBindingUtils,\n defaultShapeUtils,\n defaultTools,\n Editor,\n type TLParentId,\n} from '@tldraw/tldraw';\n\nimport { sleep } from '@dxos/async';\nimport { next as A } from '@dxos/automerge/automerge';\nimport {\n SpaceObjectGenerator,\n type TestGeneratorMap,\n type TestMutationsMap,\n type TestSchemaMap,\n} from '@dxos/echo-generator';\nimport { create } from '@dxos/echo-schema';\nimport { log } from '@dxos/log';\nimport { DocumentType, TextType } from '@dxos/plugin-markdown/types';\nimport { createTestSheet } from '@dxos/plugin-sheet/testing';\nimport { SheetType } from '@dxos/plugin-sheet/types';\nimport { TLDrawStoreAdapter } from '@dxos/plugin-sketch';\nimport { CanvasType, DiagramType, TLDRAW_SCHEMA } from '@dxos/plugin-sketch/types';\nimport { faker } from '@dxos/random';\nimport { createDocAccessor, type Space } from '@dxos/react-client/echo';\n\n// TODO(wittjosiah): Remove? Just use typenames.\nexport enum SchemasNames {\n document = 'dxos.org/type/Document',\n diagram = 'dxos.org/type/Diagram',\n sheet = 'dxos.org/type/SheetType',\n}\n\nexport const SchemasMap: TestSchemaMap<SchemasNames> = {\n [SchemasNames.document]: DocumentType,\n [SchemasNames.diagram]: DiagramType,\n [SchemasNames.sheet]: SheetType,\n};\n\nexport const ObjectGenerators: TestGeneratorMap<SchemasNames> = {\n [SchemasNames.document]: () => {\n const name = faker.lorem.sentence({ min: 2, max: 3 });\n return { name, content: create(TextType, { content: '' }), threads: [] };\n },\n\n [SchemasNames.diagram]: () => {\n const name = faker.lorem.sentence({ min: 2, max: 3 });\n return {\n name,\n canvas: create(CanvasType, { schema: TLDRAW_SCHEMA, content: {} }),\n };\n },\n\n [SchemasNames.sheet]: () => {\n const name = faker.lorem.sentence({ min: 2, max: 3 });\n return createTestSheet({ name });\n },\n};\n\nexport const MutationsGenerators: TestMutationsMap<SchemasNames> = {\n [SchemasNames.document]: async (object, params) => {\n const accessor = createDocAccessor<DocumentType>(object.content, ['content']);\n\n for (let i = 0; i < params.count; i++) {\n const length = object.content?.content?.length ?? 0;\n accessor.handle.change((doc) => {\n A.splice(\n doc,\n accessor.path.slice(),\n 0,\n params.maxContentLength >= length ? 0 : params.mutationSize,\n faker.string.hexadecimal({ length: params.mutationSize - 1 }) + ' ',\n );\n });\n\n // Release the event loop.\n if (i % 100 === 0 || i === params.count - 1) {\n log.info('Mutation:', { mutationIdx: i });\n await sleep(1);\n }\n }\n },\n\n [SchemasNames.diagram]: async (object, params) => {\n const store = new TLDrawStoreAdapter();\n await store.open(createDocAccessor<CanvasType>(object.canvas, ['content']));\n const app = new Editor({\n store: store.store!,\n shapeUtils: defaultShapeUtils,\n bindingUtils: defaultBindingUtils,\n tools: defaultTools,\n getContainer: () => document.getElementsByTagName('body')[0],\n });\n\n //\n // Draw spiral.\n //\n const r = 100;\n const a = 0.05;\n const cx = 200;\n const cy = 200;\n\n for (let i = 0; i < params.count; i++) {\n const t = i;\n const t1 = i + 1;\n const x = cx + a * t * r * Math.cos(t);\n const y = cy + a * t * r * Math.sin(t);\n const x1 = cx + a * t1 * r * Math.cos(t1);\n const y1 = cy + a * t1 * r * Math.sin(t1);\n\n app.createShape({\n id: createShapeId(),\n isLocked: false,\n meta: {},\n opacity: 1,\n parentId: 'page:page' as TLParentId,\n props: {\n arrowheadEnd: 'none',\n arrowheadStart: 'none',\n bend: 0,\n color: 'black',\n dash: 'draw',\n start: { x, y },\n end: { x: x1, y: y1 },\n fill: 'none',\n font: 'draw',\n labelColor: 'black',\n labelPosition: 0.5,\n scale: 1,\n size: 'm',\n },\n rotation: 0,\n type: 'arrow',\n typeName: 'shape',\n x: 0,\n y: 0,\n });\n\n // Release the event loop.\n if (i % 100 === 0) {\n await sleep(1);\n }\n }\n },\n\n [SchemasNames.sheet]: async (object, params) => {\n // TODO: Implement.\n },\n};\n\nexport const createSpaceObjectGenerator = (space: Space) =>\n new SpaceObjectGenerator(space, SchemasMap, ObjectGenerators, MutationsGenerators);\n"],
5
+ "mappings": "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",
6
+ "names": ["ArrowClockwise", "DownloadSimple", "Flag", "FlagPennant", "HandPalm", "Play", "PlusMinus", "Timer", "UserCirclePlus", "React", "useContext", "useMemo", "useState", "DocumentType", "Invitation", "faker", "useClient", "Filter", "useSpaceInvitation", "InvitationEncoder", "useAsyncEffect", "Button", "Input", "useFileDownload", "getSize", "mx", "safeParseInt", "React", "useMemo", "useState", "Button", "DensityProvider", "createColumnBuilder", "Table", "createShapeId", "defaultBindingUtils", "defaultShapeUtils", "defaultTools", "Editor", "sleep", "next", "A", "SpaceObjectGenerator", "create", "log", "DocumentType", "TextType", "createTestSheet", "SheetType", "TLDrawStoreAdapter", "CanvasType", "DiagramType", "TLDRAW_SCHEMA", "faker", "createDocAccessor", "SchemasNames", "SchemasMap", "ObjectGenerators", "name", "lorem", "sentence", "min", "max", "content", "threads", "canvas", "schema", "MutationsGenerators", "object", "params", "accessor", "i", "count", "length", "handle", "change", "doc", "splice", "path", "slice", "maxContentLength", "mutationSize", "string", "hexadecimal", "info", "mutationIdx", "store", "open", "app", "shapeUtils", "bindingUtils", "tools", "getContainer", "document", "getElementsByTagName", "r", "a", "cx", "cy", "t", "t1", "x", "Math", "cos", "y", "sin", "x1", "y1", "createShape", "id", "isLocked", "meta", "opacity", "parentId", "props", "arrowheadEnd", "arrowheadStart", "bend", "color", "dash", "start", "end", "fill", "font", "labelColor", "labelPosition", "scale", "size", "rotation", "type", "typeName", "createSpaceObjectGenerator", "space", "CREATE_OBJECTS_IN_ONE_CHUNK", "ObjectCreator", "space", "onAddObjects", "generator", "useMemo", "createSpaceObjectGenerator", "objectsToCreate", "setObjectsToCreate", "useState", "enabled", "schema", "SchemasNames", "document", "objectsCount", "mutationsCount", "mutationSize", "maxContentLength", "diagram", "sheet", "handleCreate", "params", "objectsCreated", "objects", "createObjects", "Math", "min", "mutateObjects", "count", "length", "db", "flush", "handleChangeOnRow", "row", "key", "value", "newObjects", "Object", "assign", "find", "object", "helper", "builder", "createColumnBuilder", "columns", "accessor", "switch", "label", "onUpdate", "string", "classNames", "number", "DensityProvider", "density", "Table", "Root", "Viewport", "Main", "data", "Button", "onClick", "DEFAULT_COUNT", "DEFAULT_PERIOD", "DEFAULT_JITTER", "useRefresh", "update", "setUpdate", "useState", "DebugSpace", "space", "onAddObjects", "connect", "useSpaceInvitation", "key", "client", "useClient", "data", "setData", "handleUpdate", "useAsyncEffect", "isMounted", "diagnostics", "truncate", "spaces", "find", "toHex", "startsWith", "download", "useFileDownload", "handleCopy", "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", "React", "DebugPanel", "menu", "div", "className", "title", "Input", "Root", "TextInput", "autoComplete", "size", "classNames", "placeholder", "value", "onChange", "target", "Flag", "mx", "getSize", "Timer", "PlusMinus", "Button", "onClick", "HandPalm", "Play", "ArrowClockwise", "DownloadSimple", "FlagPennant", "UserCirclePlus", "ObjectCreator"]
7
+ }
@@ -0,0 +1,15 @@
1
+ // packages/plugins/experimental/plugin-debug/src/components/DevtoolsMain.tsx
2
+ import React from "react";
3
+ import { Devtools } from "@dxos/devtools";
4
+ import { useClient } from "@dxos/react-client";
5
+ var DevtoolsMain = () => {
6
+ const client = useClient();
7
+ return /* @__PURE__ */ React.createElement(Devtools, {
8
+ client
9
+ });
10
+ };
11
+ var DevtoolsMain_default = DevtoolsMain;
12
+ export {
13
+ DevtoolsMain_default as default
14
+ };
15
+ //# sourceMappingURL=DevtoolsMain-RWT3FLJ6.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/DevtoolsMain.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Devtools } from '@dxos/devtools';\nimport { useClient } from '@dxos/react-client';\n\nconst DevtoolsMain = () => {\n const client = useClient();\n return <Devtools client={client} />;\n};\n\nexport default DevtoolsMain;\n"],
5
+ "mappings": ";AAIA,OAAOA,WAAW;AAElB,SAASC,gBAAgB;AACzB,SAASC,iBAAiB;AAE1B,IAAMC,eAAe,MAAA;AACnB,QAAMC,SAASC,UAAAA;AACf,SAAO,sBAAA,cAACC,UAAAA;IAASF;;AACnB;AAEA,IAAA,uBAAeD;",
6
+ "names": ["React", "Devtools", "useClient", "DevtoolsMain", "client", "useClient", "Devtools"]
7
+ }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  DEBUG_PLUGIN
3
- } from "./chunk-KXZKF6LX.mjs";
3
+ } from "./chunk-WEGYHXMB.mjs";
4
4
 
5
5
  // packages/plugins/experimental/plugin-debug/src/types.ts
6
6
  import { createContext } from "react";
@@ -21,4 +21,4 @@ export {
21
21
  DebugAction,
22
22
  DebugContext
23
23
  };
24
- //# sourceMappingURL=chunk-G6OQPL2E.mjs.map
24
+ //# sourceMappingURL=chunk-RYK3J66D.mjs.map
@@ -1,4 +1,6 @@
1
1
  // packages/plugins/experimental/plugin-debug/src/meta.tsx
2
+ import { Bug } from "@phosphor-icons/react";
3
+ import React from "react";
2
4
  import { pluginMeta } from "@dxos/app-framework";
3
5
  var DEBUG_PLUGIN = "dxos.org/plugin/debug";
4
6
  var meta_default = pluginMeta({
@@ -8,11 +10,12 @@ var meta_default = pluginMeta({
8
10
  tags: [
9
11
  "experimental"
10
12
  ],
11
- icon: "ph--bug--regular"
13
+ iconComponent: (props) => /* @__PURE__ */ React.createElement(Bug, props),
14
+ iconSymbol: "ph--bug--regular"
12
15
  });
13
16
 
14
17
  export {
15
18
  DEBUG_PLUGIN,
16
19
  meta_default
17
20
  };
18
- //# sourceMappingURL=chunk-KXZKF6LX.mjs.map
21
+ //# sourceMappingURL=chunk-WEGYHXMB.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/meta.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Bug, type IconProps } from '@phosphor-icons/react';\nimport React from 'react';\n\nimport { pluginMeta } from '@dxos/app-framework';\n\nexport const DEBUG_PLUGIN = 'dxos.org/plugin/debug';\n\nexport default pluginMeta({\n id: DEBUG_PLUGIN,\n name: 'Debug',\n description: 'DXOS debugging tools.',\n tags: ['experimental'],\n iconComponent: (props: IconProps) => <Bug {...props} />,\n iconSymbol: 'ph--bug--regular',\n});\n"],
5
+ "mappings": ";AAIA,SAASA,WAA2B;AACpC,OAAOC,WAAW;AAElB,SAASC,kBAAkB;AAEpB,IAAMC,eAAe;AAE5B,IAAA,eAAeC,WAAW;EACxBC,IAAIF;EACJG,MAAM;EACNC,aAAa;EACbC,MAAM;IAAC;;EACPC,eAAe,CAACC,UAAqB,sBAAA,cAACC,KAAQD,KAAAA;EAC9CE,YAAY;AACd,CAAA;",
6
+ "names": ["Bug", "React", "pluginMeta", "DEBUG_PLUGIN", "pluginMeta", "id", "name", "description", "tags", "iconComponent", "props", "Bug", "iconSymbol"]
7
+ }
@@ -1,17 +1,17 @@
1
1
  import {
2
2
  DebugAction,
3
3
  DebugContext
4
- } from "./chunk-G6OQPL2E.mjs";
4
+ } from "./chunk-RYK3J66D.mjs";
5
5
  import {
6
6
  DEBUG_PLUGIN,
7
7
  meta_default
8
- } from "./chunk-KXZKF6LX.mjs";
8
+ } from "./chunk-WEGYHXMB.mjs";
9
9
 
10
10
  // packages/plugins/experimental/plugin-debug/src/DebugPlugin.tsx
11
+ import { Bug, Hammer } from "@phosphor-icons/react";
11
12
  import React5, { useEffect as useEffect3, useState as useState3 } from "react";
12
13
  import { getPlugin, parseGraphPlugin as parseGraphPlugin2, parseIntentPlugin, resolvePlugin } from "@dxos/app-framework";
13
14
  import { Timer } from "@dxos/async";
14
- import { Devtools } from "@dxos/devtools";
15
15
  import { LocalStorageStore } from "@dxos/local-storage";
16
16
  import { createExtension, Graph } from "@dxos/plugin-graph";
17
17
  import { SpaceAction } from "@dxos/plugin-space";
@@ -363,7 +363,8 @@ var Wireframe = ({ label, data, className }) => {
363
363
 
364
364
  // packages/plugins/experimental/plugin-debug/src/components/index.ts
365
365
  var DebugGlobal = React4.lazy(() => import("./DebugGlobal-H56M2VL4.mjs"));
366
- var DebugSpace = React4.lazy(() => import("./DebugSpace-J4YF3H67.mjs"));
366
+ var DebugSpace = React4.lazy(() => import("./DebugSpace-NHPMLATA.mjs"));
367
+ var DevtoolsMain = React4.lazy(() => import("./DevtoolsMain-RWT3FLJ6.mjs"));
367
368
 
368
369
  // packages/plugins/experimental/plugin-debug/src/translations.ts
369
370
  var translations_default = [
@@ -482,7 +483,8 @@ var DebugPlugin = () => {
482
483
  ns: DEBUG_PLUGIN
483
484
  }
484
485
  ],
485
- icon: "ph--hammer--regular"
486
+ icon: (props) => /* @__PURE__ */ React5.createElement(Hammer, props),
487
+ iconSymbol: "ph--hammer--regular"
486
488
  }
487
489
  }
488
490
  ]
@@ -505,7 +507,8 @@ var DebugPlugin = () => {
505
507
  ns: DEBUG_PLUGIN
506
508
  }
507
509
  ],
508
- icon: "ph--bug--regular"
510
+ icon: (props) => /* @__PURE__ */ React5.createElement(Bug, props),
511
+ iconSymbol: "ph--bug--regular"
509
512
  }
510
513
  }
511
514
  ]
@@ -530,7 +533,8 @@ var DebugPlugin = () => {
530
533
  ns: DEBUG_PLUGIN
531
534
  }
532
535
  ],
533
- icon: "ph--bug--regular"
536
+ icon: (props) => /* @__PURE__ */ React5.createElement(Bug, props),
537
+ iconSymbol: "ph--bug--regular"
534
538
  }
535
539
  }
536
540
  ];
@@ -575,7 +579,7 @@ var DebugPlugin = () => {
575
579
  let component;
576
580
  if (role === "main" || role === "article") {
577
581
  if (primary === "devtools" && settings.values.devtools) {
578
- component = /* @__PURE__ */ React5.createElement(Devtools, null);
582
+ component = /* @__PURE__ */ React5.createElement(DevtoolsMain, null);
579
583
  } else if (!primary || typeof primary !== "object" || !settings.values.debug) {
580
584
  component = null;
581
585
  } else if ("space" in primary && isSpace(primary.space)) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/DebugPlugin.tsx", "../../../src/components/index.ts", "../../../src/components/DebugSettings.tsx", "../../../src/components/DebugStatus.tsx", "../../../src/components/Wireframe.tsx", "../../../src/translations.ts", "../../../src/index.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { type ReactNode, useEffect, useState } from 'react';\n\nimport {\n getPlugin,\n parseGraphPlugin,\n parseIntentPlugin,\n resolvePlugin,\n type IntentPluginProvides,\n type Plugin,\n type PluginDefinition,\n} from '@dxos/app-framework';\nimport { Timer } from '@dxos/async';\nimport { Devtools } from '@dxos/devtools';\nimport { LocalStorageStore } from '@dxos/local-storage';\nimport { type ClientPluginProvides } from '@dxos/plugin-client';\nimport { createExtension, Graph, type Node } from '@dxos/plugin-graph';\nimport { SpaceAction } from '@dxos/plugin-space';\nimport { CollectionType } from '@dxos/plugin-space/types';\nimport { type Client } from '@dxos/react-client';\nimport { type Space, SpaceState, isSpace } from '@dxos/react-client/echo';\nimport { Main } from '@dxos/react-ui';\nimport {\n baseSurface,\n topbarBlockPaddingStart,\n fixedInsetFlexLayout,\n bottombarBlockPaddingEnd,\n} from '@dxos/react-ui-theme';\n\nimport { DebugGlobal, DebugSettings, DebugSpace, DebugStatus, Wireframe } from './components';\nimport meta, { DEBUG_PLUGIN } from './meta';\nimport translations from './translations';\nimport { DebugContext, type DebugSettingsProps, type DebugPluginProvides, DebugAction } from './types';\n\nexport const SETTINGS_KEY = DEBUG_PLUGIN + '/settings';\n\nexport const DebugPlugin = (): PluginDefinition<DebugPluginProvides> => {\n const settings = new LocalStorageStore<DebugSettingsProps>(DEBUG_PLUGIN, { debug: true, devtools: true });\n let intentPlugin: Plugin<IntentPluginProvides>;\n\n return {\n meta,\n ready: async (plugins) => {\n intentPlugin = resolvePlugin(plugins, parseIntentPlugin)!;\n settings\n .prop({ key: 'debug', type: LocalStorageStore.bool({ allowUndefined: true }) })\n .prop({ key: 'devtools', type: LocalStorageStore.bool({ allowUndefined: true }) })\n .prop({ key: 'wireframe', type: LocalStorageStore.bool({ allowUndefined: true }) });\n\n // TODO(burdon): Remove hacky dependency on global variable.\n // Used to test how composer handles breaking protocol changes.\n const composer = (window as any).composer;\n composer.changeStorageVersionInMetadata = async (version: number) => {\n const { changeStorageVersionInMetadata } = await import('@dxos/echo-pipeline/testing');\n const { createStorageObjects } = await import('@dxos/client-services');\n const client: Client = (window as any).dxos.client;\n const config = client.config;\n await client.destroy();\n const { storage } = createStorageObjects(config.values?.runtime?.client?.storage ?? {});\n await changeStorageVersionInMetadata(storage, version);\n location.pathname = '/';\n };\n },\n unload: async () => {\n settings.close();\n },\n provides: {\n settings: settings.values,\n translations,\n context: ({ children }) => {\n const [timer, setTimer] = useState<Timer>();\n useEffect(() => timer?.state.on((value) => !value && setTimer(undefined)), [timer]);\n useEffect(() => {\n timer?.stop();\n }, []);\n\n return (\n <DebugContext.Provider\n value={{\n running: !!timer,\n start: (cb, options) => {\n timer?.stop();\n setTimer(new Timer(cb).start(options));\n },\n stop: () => timer?.stop(),\n }}\n >\n {children}\n </DebugContext.Provider>\n );\n },\n graph: {\n builder: (plugins) => {\n const graphPlugin = resolvePlugin(plugins, parseGraphPlugin);\n\n // TODO(burdon): Combine nodes into single subtree.\n\n return [\n // Devtools node.\n createExtension({\n id: 'dxos.org/plugin/debug/devtools',\n filter: (node): node is Node<null> => !!settings.values.devtools && node.id === 'root',\n connector: () => [\n {\n // TODO(zan): Removed `/` because it breaks deck layout reload. Fix?\n id: 'dxos.org.plugin.debug.devtools',\n data: 'devtools',\n type: 'dxos.org/plugin/debug/devtools',\n properties: {\n label: ['devtools label', { ns: DEBUG_PLUGIN }],\n icon: 'ph--hammer--regular',\n },\n },\n ],\n }),\n\n // Debug node.\n createExtension({\n id: 'dxos.org/plugin/debug/debug',\n filter: (node): node is Node<null> => !!settings.values.debug && node.id === 'root',\n connector: () => [\n {\n id: 'dxos.org/plugin/debug/debug',\n type: 'dxos.org/plugin/debug/debug',\n data: { graph: graphPlugin?.provides.graph },\n properties: {\n label: ['debug label', { ns: DEBUG_PLUGIN }],\n icon: 'ph--bug--regular',\n },\n },\n ],\n }),\n\n // Space debug nodes.\n createExtension({\n id: 'dxos.org/plugin/debug/spaces',\n filter: (node): node is Node<Space> => !!settings.values.debug && isSpace(node.data),\n connector: ({ node }) => {\n const space = node.data;\n return [\n {\n id: `${space.id}-debug`,\n type: 'dxos.org/plugin/debug/space',\n data: { space },\n properties: {\n label: ['debug label', { ns: DEBUG_PLUGIN }],\n icon: 'ph--bug--regular',\n },\n },\n ];\n },\n }),\n ];\n },\n },\n intent: {\n resolver: async (intent, plugins) => {\n switch (intent.action) {\n case DebugAction.OPEN_DEVTOOLS: {\n const clientPlugin = getPlugin<ClientPluginProvides>(plugins, 'dxos.org/plugin/client');\n const client = clientPlugin.provides.client;\n const vaultUrl = client.config.values?.runtime?.client?.remoteSource ?? 'https://halo.dxos.org';\n\n // Check if we're serving devtools locally on the usual port.\n let devtoolsUrl = 'http://localhost:5174';\n try {\n // TODO(burdon): Test header to see if this is actually devtools.\n await fetch(devtoolsUrl);\n } catch {\n // Match devtools to running app.\n const isDev = window.location.href.includes('.dev.') || window.location.href.includes('localhost');\n devtoolsUrl = `https://devtools${isDev ? '.dev.' : '.'}dxos.org`;\n }\n\n window.open(`${devtoolsUrl}?target=${vaultUrl}`, '_blank');\n return { data: true };\n }\n }\n },\n },\n surface: {\n component: ({ name, data, role }) => {\n switch (role) {\n case 'settings':\n return data.plugin === meta.id ? <DebugSettings settings={settings.values} /> : null;\n case 'status':\n return <DebugStatus />;\n }\n\n const primary = data.active ?? data.object;\n let component: ReactNode;\n if (role === 'main' || role === 'article') {\n if (primary === 'devtools' && settings.values.devtools) {\n component = <Devtools />;\n } else if (!primary || typeof primary !== 'object' || !settings.values.debug) {\n component = null;\n } else if ('space' in primary && isSpace(primary.space)) {\n component = (\n <DebugSpace\n space={primary.space}\n onAddObjects={(objects) => {\n if (!isSpace(primary.space)) {\n return;\n }\n\n const collection =\n primary.space.state.get() === SpaceState.SPACE_READY &&\n primary.space.properties[CollectionType.typename];\n if (!(collection instanceof CollectionType)) {\n return;\n }\n\n void intentPlugin?.provides.intent.dispatch(\n objects.map((object) => ({\n action: SpaceAction.ADD_OBJECT,\n data: { target: collection, object },\n })),\n );\n }}\n />\n );\n } else if ('graph' in primary && primary.graph instanceof Graph) {\n component = <DebugGlobal graph={primary.graph} />;\n } else {\n component = null;\n }\n }\n\n if (!component) {\n if (settings.values.wireframe) {\n if (role === 'main' || role === 'article' || role === 'section') {\n const primary = data.active ?? data.object;\n if (!(primary instanceof CollectionType)) {\n return <Wireframe label={role} data={data} className='row-span-2 overflow-hidden' />;\n }\n }\n }\n\n return null;\n }\n\n switch (role) {\n case 'article':\n return (\n <div role='none' className='row-span-2 rounded-t-md overflow-x-auto'>\n {component}\n </div>\n );\n case 'main':\n return (\n <Main.Content\n classNames={[baseSurface, fixedInsetFlexLayout, topbarBlockPaddingStart, bottombarBlockPaddingEnd]}\n >\n {component}\n </Main.Content>\n );\n }\n\n return null;\n },\n },\n },\n };\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\n// Lazily load components for content surfaces.\nexport const DebugGlobal = React.lazy(() => import('./DebugGlobal'));\nexport const DebugSpace = React.lazy(() => import('./DebugSpace'));\n\nexport * from './DebugSettings';\nexport * from './DebugStatus';\nexport * from './Wireframe';\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Gift, DownloadSimple, FirstAidKit } from '@phosphor-icons/react';\nimport React, { useEffect, useState } from 'react';\n\nimport { parseFileManagerPlugin, useResolvePlugin } from '@dxos/app-framework';\nimport { type ConfigProto, defs, SaveConfig, Storage } from '@dxos/config';\nimport { log } from '@dxos/log';\nimport { SettingsValue } from '@dxos/plugin-settings';\nimport { useClient } from '@dxos/react-client';\nimport { useTranslation, Button, Toast, Input, useFileDownload, Select } from '@dxos/react-ui';\nimport { getSize, mx } from '@dxos/react-ui-theme';\nimport { setDeep } from '@dxos/util';\n\nimport { DEBUG_PLUGIN } from '../meta';\nimport { type DebugSettingsProps } from '../types';\n\ntype Toast = {\n title: string;\n description?: string;\n};\n\nconst StorageAdapters = {\n opfs: defs.Runtime.Client.Storage.StorageDriver.WEBFS,\n idb: defs.Runtime.Client.Storage.StorageDriver.IDB,\n} as const;\n\nexport const DebugSettings = ({ settings }: { settings: DebugSettingsProps }) => {\n const { t } = useTranslation(DEBUG_PLUGIN);\n const [toast, setToast] = useState<Toast>();\n const client = useClient();\n const download = useFileDownload();\n // TODO(mykola): Get updates from other places that change Config.\n const [storageConfig, setStorageConfig] = useState<ConfigProto>({});\n const fileManagerPlugin = useResolvePlugin(parseFileManagerPlugin);\n\n useEffect(() => {\n void Storage().then((config) => setStorageConfig(config));\n }, []);\n\n const handleToast = (toast: Toast) => {\n setToast(toast);\n const t = setTimeout(() => setToast(undefined), 5_000);\n return () => clearTimeout(t);\n };\n\n const handleDownload = async () => {\n const data = await client.diagnostics();\n const file = new Blob([JSON.stringify(data, undefined, 2)], { type: 'text/plain' });\n const fileName = `composer-${new Date().toISOString().replace(/\\W/g, '-')}.json`;\n download(file, fileName);\n\n if (fileManagerPlugin?.provides.file.upload) {\n const info = await fileManagerPlugin.provides.file.upload(new File([file], fileName), client.spaces.default);\n if (!info) {\n log.error('diagnostics failed to upload to IPFS');\n return;\n }\n handleToast({ title: t('settings uploaded'), description: t('settings uploaded to clipboard') });\n\n // TODO(nf): move to IpfsPlugin?\n const url = client.config.values.runtime!.services!.ipfs!.gateway + '/' + info.cid;\n void navigator.clipboard.writeText(url);\n handleToast({ title: t('settings uploaded'), description: t('settings uploaded to clipboard') });\n log.info('diagnostics', { url });\n }\n };\n\n const handleRepair = async () => {\n try {\n const info = await client.repair();\n setStorageConfig(await Storage());\n handleToast({ title: t('settings repair success'), description: JSON.stringify(info, undefined, 2) });\n } catch (err: any) {\n handleToast({ title: t('settings repair failed'), description: err.message });\n }\n };\n\n return (\n <>\n <SettingsValue label={t('settings show debug panel')}>\n <Input.Switch checked={settings.debug} onCheckedChange={(checked) => (settings.debug = !!checked)} />\n </SettingsValue>\n <SettingsValue label={t('settings show devtools panel')}>\n <Input.Switch checked={settings.devtools} onCheckedChange={(checked) => (settings.devtools = !!checked)} />\n </SettingsValue>\n <SettingsValue label={t('settings wireframe')}>\n <Input.Switch checked={settings.wireframe} onCheckedChange={(checked) => (settings.wireframe = !!checked)} />\n </SettingsValue>\n <SettingsValue label={t('settings download diagnostics')}>\n <Button onClick={handleDownload}>\n <DownloadSimple className={getSize(5)} />\n </Button>\n </SettingsValue>\n <SettingsValue label={t('settings repair')}>\n <Button onClick={handleRepair}>\n <FirstAidKit className={getSize(5)} />\n </Button>\n </SettingsValue>\n\n {/* TODO(burdon): Move to layout? */}\n {toast && (\n <Toast.Root>\n <Toast.Body>\n <Toast.Title>\n <Gift className={mx(getSize(5), 'inline mr-1')} weight='duotone' />\n <span>{toast.title}</span>\n </Toast.Title>\n {toast.description && <Toast.Description>{toast.description}</Toast.Description>}\n </Toast.Body>\n </Toast.Root>\n )}\n\n <SettingsValue label={t('settings choose storage adaptor')}>\n <Select.Root\n value={\n Object.entries(StorageAdapters).find(\n ([name, value]) => value === storageConfig?.runtime?.client?.storage?.dataStore,\n )?.[0]\n }\n onValueChange={(value) => {\n if (confirm(t('settings storage adapter changed alert'))) {\n updateConfig(\n storageConfig,\n setStorageConfig,\n ['runtime', 'client', 'storage', 'dataStore'],\n StorageAdapters[value as keyof typeof StorageAdapters],\n );\n }\n }}\n >\n <Select.TriggerButton placeholder={t('settings data store label')} />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {Object.keys(StorageAdapters).map((key) => (\n <Select.Option key={key} value={key}>\n {t(`settings storage adaptor ${key} label`)}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </SettingsValue>\n </>\n );\n};\n\nconst updateConfig = (config: ConfigProto, setConfig: (newConfig: ConfigProto) => void, path: string[], value: any) => {\n const storageConfigCopy = JSON.parse(JSON.stringify(config ?? {}));\n setDeep(storageConfigCopy, path, value);\n setConfig(storageConfigCopy);\n queueMicrotask(async () => {\n await SaveConfig(storageConfigCopy);\n });\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { ChartBar, Circle, Lightning, LightningSlash } from '@phosphor-icons/react';\nimport React, { useEffect, useRef, useState } from 'react';\n\nimport { firstIdInPart, parseGraphPlugin, parseNavigationPlugin, useResolvePlugin } from '@dxos/app-framework';\nimport { TimeoutError } from '@dxos/async';\nimport { StatsPanel, useStats } from '@dxos/devtools';\nimport { log } from '@dxos/log';\nimport { getActiveSpace } from '@dxos/plugin-space';\nimport { StatusBar } from '@dxos/plugin-status-bar';\nimport { ConnectionState } from '@dxos/protocols/proto/dxos/client/services';\nimport { useNetworkStatus } from '@dxos/react-client/mesh';\nimport { getSize, mx } from '@dxos/react-ui-theme';\n\nconst styles = {\n success: 'text-sky-300 dark:text-green-700',\n warning: 'text-orange-300 dark:text-orange-600',\n error: 'text-red-300 dark:text-red-600',\n};\n\n// TODO(burdon): Move out of debug plugin.\n// TODO(burdon): Make pluggable (move indicators to relevant plugins).\n// TODO(burdon): Vault heartbeat indicator (global scope)?\n\n/**\n * Ensure light doesn't flicker immediately after start.\n */\n// TODO(burdon): Move to @dxos/async (debounce?)\nconst _timer = (cb: (err?: Error) => void, options?: { min?: number; max?: number }) => {\n const min = options?.min ?? 500;\n let start: number;\n let pending: NodeJS.Timeout;\n let timeout: NodeJS.Timeout;\n return {\n start: () => {\n start = Date.now();\n clearTimeout(pending);\n if (options?.max) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n cb(new TimeoutError(options.max));\n }, options.max);\n }\n },\n stop: () => {\n clearTimeout(timeout);\n const delta = Date.now() - start;\n if (delta < min) {\n pending = setTimeout(() => {\n cb();\n }, min - delta);\n }\n },\n };\n};\n\n/**\n * Global error handler.\n */\n// TODO(burdon): Integrate with Sentry?\nconst ErrorIndicator = () => {\n const [, forceUpdate] = useState({});\n const errorRef = useRef<Error>();\n useEffect(() => {\n const errorListener = (event: any) => {\n const error: Error = event.error ?? event.reason;\n // event.preventDefault();\n if (errorRef.current !== error) {\n // eslint-disable-next-line no-console\n log.error('onError', { event });\n errorRef.current = error;\n forceUpdate({});\n }\n };\n\n // TODO(burdon): Register globally?\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/error_event\n window.addEventListener('error', errorListener);\n\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/unhandledrejection_event\n window.addEventListener('unhandledrejection', errorListener);\n\n return () => {\n window.removeEventListener('error', errorListener);\n window.removeEventListener('unhandledrejection', errorListener);\n };\n }, []);\n\n const handleReset = () => {\n errorRef.current = undefined;\n forceUpdate({});\n };\n\n if (errorRef.current) {\n return (\n <StatusBar.Button title={errorRef.current.message} onClick={handleReset}>\n <Circle weight='fill' className={mx(styles.error, getSize(3))} />\n </StatusBar.Button>\n );\n } else {\n return (\n <StatusBar.Item title='No errors.'>\n <Circle weight='fill' className={getSize(3)} />\n </StatusBar.Item>\n );\n }\n};\n\n/**\n * Swarm connection handler.\n */\nconst SwarmIndicator = () => {\n const [state, setState] = useState(0);\n const { swarm } = useNetworkStatus();\n useEffect(() => {\n setState(swarm === ConnectionState.ONLINE ? 0 : 1);\n }, [swarm]);\n\n if (state === 0) {\n return (\n <StatusBar.Item title='Connected to swarm.'>\n <Lightning className={getSize(4)} />\n </StatusBar.Item>\n );\n } else {\n return (\n <StatusBar.Item title='Disconnected from swarm.'>\n <LightningSlash className={mx(styles.warning, getSize(4))} />\n </StatusBar.Item>\n );\n }\n};\n\n/**\n * Space saving indicator.\n */\nconst SavingIndicator = () => {\n const [state, _setState] = useState(0);\n const navigationPlugin = useResolvePlugin(parseNavigationPlugin);\n const graphPlugin = useResolvePlugin(parseGraphPlugin);\n const location = navigationPlugin?.provides.location;\n const graph = graphPlugin?.provides.graph;\n const _space = location && graph ? getActiveSpace(graph, firstIdInPart(location.active, 'main')) : undefined;\n // TODO(dmaretskyi): Fix this when we have save status for automerge.\n // useEffect(() => {\n // if (!space) {\n // return;\n // }\n // const { start, stop } = timer(() => setState(0), { min: 250 });\n // return space.db.pendingBatch.on(({ duration, error }) => {\n // if (error) {\n // setState(2);\n // stop();\n // } else if (duration === undefined) {\n // setState(1);\n // start();\n // } else {\n // stop();\n // }\n // });\n // }, [space]);\n\n switch (state) {\n case 2:\n return (\n <StatusBar.Item title='Edit not saved.'>\n <Circle weight='fill' className={mx(styles.warning, getSize(3))} />\n </StatusBar.Item>\n );\n case 1:\n return (\n <StatusBar.Item title='Saving...'>\n <Circle weight='fill' className={mx(styles.success, getSize(3))} />\n </StatusBar.Item>\n );\n case 0:\n default:\n return (\n <StatusBar.Item title='Modified indicator.'>\n <Circle weight='fill' className={getSize(3)} />\n </StatusBar.Item>\n );\n }\n};\n\nconst PerformanceIndicator = () => {\n const [visible, setVisible] = useState(false);\n const [stats, refreshStats] = useStats();\n\n return (\n <>\n <StatusBar.Button onClick={() => setVisible((visible) => !visible)} title='Performance panels'>\n <ChartBar />\n </StatusBar.Button>\n {visible && (\n <div className='z-20 absolute bottom-[24px] w-[450px] border-l border-y border-separator'>\n <StatsPanel stats={stats} onRefresh={refreshStats} />\n </div>\n )}\n </>\n );\n};\n\nconst indicators = [PerformanceIndicator, SavingIndicator, ErrorIndicator, SwarmIndicator];\n\nexport const DebugStatus = () => {\n return (\n <>\n {indicators.map((Indicator) => (\n <Indicator key={Indicator.name} />\n ))}\n </>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\nimport { useResizeDetector } from 'react-resize-detector';\n\nimport { createAttendableAttributes } from '@dxos/react-ui-attention';\nimport { mx } from '@dxos/react-ui-theme';\n\n// TODO(burdon): Make focusable and attendable with input.\nexport const Wireframe = ({ label, data, className }: { label?: string; data?: any; className?: string }) => {\n const attendableAttrs = createAttendableAttributes(data);\n const { width, height, ref } = useResizeDetector();\n return (\n <div ref={ref} className={mx('relative grow min-bs-96', className)} {...attendableAttrs}>\n <div className='absolute inset-2 flex flex-col overflow-hidden font-mono'>\n <div className='flex justify-between'>\n <div>{label}</div>\n <div>{`[${width}x${height}]`}</div>\n </div>\n <div className='flex grow overflow-auto'>\n {data && (\n <pre className='text-neutral-500 text-sm whitespace-pre-line'>{JSON.stringify(data, undefined, 1)}</pre>\n )}\n </div>\n </div>\n <svg width={width} height={height} className='bg-transparent [&>*]:stroke-neutral-500'>\n <rect x={0} y={0} width={width} height={height} strokeWidth={1} fill='none' />\n <line x1={0} y1={0} x2={width} y2={height} strokeWidth={1} />\n <line x1={0} y1={height} x2={width} y2={0} strokeWidth={1} />\n </svg>\n </div>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { DEBUG_PLUGIN } from './meta';\n\nexport default [\n {\n 'en-US': {\n [DEBUG_PLUGIN]: {\n 'plugin name': 'Debug',\n 'mutation count': 'Number of mutations',\n 'mutation period': 'Mutation period',\n 'open devtools label': 'Open DevTools',\n 'devtools label': 'DevTools',\n 'debug label': 'Debug',\n 'settings show debug panel': 'Show Debug panel.',\n 'settings show devtools panel': 'Show DevTools panel.',\n 'settings wireframe': 'Show wireframes.',\n 'settings repair': 'Run repair tool.',\n 'settings download diagnostics': 'Download diagnostics.',\n 'settings uploaded': 'Uploaded to IPFS',\n 'settings uploaded to clipboard': 'URL copied to clipboard.',\n 'settings repair success': 'Repair succeeded',\n 'settings repair failed': 'Repair failed',\n 'settings choose storage adaptor': 'Storage adaptor (worker reload required).',\n 'settings storage adaptor idb label': 'IndexedDB',\n 'settings storage adaptor opfs label': 'OPFS',\n 'settings data store label': 'Data Store',\n 'settings storage adapter changed alert':\n 'Warning: Swapping the storage adapter will make your data unavailable.',\n 'settings space fragmentation': 'Enable AM space fragmentation',\n },\n },\n },\n];\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { DebugPlugin } from './DebugPlugin';\n\nexport * from './DebugPlugin';\n\nexport default DebugPlugin;\n"],
5
- "mappings": "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",
6
- "names": ["React", "useEffect", "useState", "getPlugin", "parseGraphPlugin", "parseIntentPlugin", "resolvePlugin", "Timer", "Devtools", "LocalStorageStore", "createExtension", "Graph", "SpaceAction", "CollectionType", "SpaceState", "isSpace", "Main", "baseSurface", "topbarBlockPaddingStart", "fixedInsetFlexLayout", "bottombarBlockPaddingEnd", "React", "Gift", "DownloadSimple", "FirstAidKit", "React", "useEffect", "useState", "parseFileManagerPlugin", "useResolvePlugin", "defs", "SaveConfig", "Storage", "log", "SettingsValue", "useClient", "useTranslation", "Button", "Toast", "Input", "useFileDownload", "Select", "getSize", "mx", "setDeep", "StorageAdapters", "opfs", "defs", "Runtime", "Client", "Storage", "StorageDriver", "WEBFS", "idb", "IDB", "DebugSettings", "settings", "t", "useTranslation", "DEBUG_PLUGIN", "toast", "setToast", "useState", "client", "useClient", "download", "useFileDownload", "storageConfig", "setStorageConfig", "fileManagerPlugin", "useResolvePlugin", "parseFileManagerPlugin", "useEffect", "then", "config", "handleToast", "setTimeout", "undefined", "clearTimeout", "handleDownload", "data", "diagnostics", "file", "Blob", "JSON", "stringify", "type", "fileName", "Date", "toISOString", "replace", "provides", "upload", "info", "File", "spaces", "default", "log", "error", "title", "description", "url", "values", "runtime", "services", "ipfs", "gateway", "cid", "navigator", "clipboard", "writeText", "handleRepair", "repair", "err", "message", "SettingsValue", "label", "Input", "Switch", "checked", "debug", "onCheckedChange", "devtools", "wireframe", "Button", "onClick", "DownloadSimple", "className", "getSize", "FirstAidKit", "Toast", "Root", "Body", "Title", "Gift", "mx", "weight", "span", "Description", "Select", "value", "Object", "entries", "find", "name", "storage", "dataStore", "onValueChange", "confirm", "updateConfig", "TriggerButton", "placeholder", "Portal", "Content", "Viewport", "keys", "map", "key", "Option", "setConfig", "path", "storageConfigCopy", "parse", "setDeep", "queueMicrotask", "SaveConfig", "ChartBar", "Circle", "Lightning", "LightningSlash", "React", "useEffect", "useRef", "useState", "firstIdInPart", "parseGraphPlugin", "parseNavigationPlugin", "useResolvePlugin", "TimeoutError", "StatsPanel", "useStats", "log", "getActiveSpace", "StatusBar", "ConnectionState", "useNetworkStatus", "getSize", "mx", "styles", "success", "warning", "error", "ErrorIndicator", "forceUpdate", "useState", "errorRef", "useRef", "useEffect", "errorListener", "event", "error", "reason", "current", "log", "window", "addEventListener", "removeEventListener", "handleReset", "undefined", "React", "StatusBar", "Button", "title", "message", "onClick", "Circle", "weight", "className", "mx", "styles", "getSize", "Item", "SwarmIndicator", "state", "setState", "swarm", "useNetworkStatus", "ConnectionState", "ONLINE", "Lightning", "LightningSlash", "warning", "SavingIndicator", "_setState", "navigationPlugin", "useResolvePlugin", "parseNavigationPlugin", "graphPlugin", "parseGraphPlugin", "location", "provides", "graph", "_space", "getActiveSpace", "firstIdInPart", "active", "success", "PerformanceIndicator", "visible", "setVisible", "stats", "refreshStats", "useStats", "ChartBar", "div", "StatsPanel", "onRefresh", "indicators", "DebugStatus", "map", "Indicator", "key", "name", "React", "useResizeDetector", "createAttendableAttributes", "mx", "Wireframe", "label", "data", "className", "attendableAttrs", "createAttendableAttributes", "width", "height", "ref", "useResizeDetector", "React", "div", "mx", "pre", "JSON", "stringify", "undefined", "svg", "rect", "x", "y", "strokeWidth", "fill", "line", "x1", "y1", "x2", "y2", "DebugGlobal", "React", "lazy", "DebugSpace", "DEBUG_PLUGIN", "SETTINGS_KEY", "DEBUG_PLUGIN", "DebugPlugin", "settings", "LocalStorageStore", "debug", "devtools", "intentPlugin", "meta", "ready", "plugins", "resolvePlugin", "parseIntentPlugin", "prop", "key", "type", "bool", "allowUndefined", "composer", "window", "changeStorageVersionInMetadata", "version", "createStorageObjects", "client", "dxos", "config", "destroy", "storage", "values", "runtime", "location", "pathname", "unload", "close", "provides", "translations", "context", "children", "timer", "setTimer", "useState", "useEffect", "state", "on", "value", "undefined", "stop", "React", "DebugContext", "Provider", "running", "start", "cb", "options", "Timer", "graph", "builder", "graphPlugin", "parseGraphPlugin", "createExtension", "id", "filter", "node", "connector", "data", "properties", "label", "ns", "icon", "isSpace", "space", "intent", "resolver", "action", "DebugAction", "OPEN_DEVTOOLS", "clientPlugin", "getPlugin", "vaultUrl", "remoteSource", "devtoolsUrl", "fetch", "isDev", "href", "includes", "open", "surface", "component", "name", "role", "plugin", "DebugSettings", "DebugStatus", "primary", "active", "object", "Devtools", "DebugSpace", "onAddObjects", "objects", "collection", "get", "SpaceState", "SPACE_READY", "CollectionType", "typename", "dispatch", "map", "SpaceAction", "ADD_OBJECT", "target", "Graph", "DebugGlobal", "wireframe", "Wireframe", "className", "div", "Main", "Content", "classNames", "baseSurface", "fixedInsetFlexLayout", "topbarBlockPaddingStart", "bottombarBlockPaddingEnd", "DebugPlugin"]
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Bug, Hammer, type IconProps } from '@phosphor-icons/react';\nimport React, { type ReactNode, useEffect, useState } from 'react';\n\nimport {\n getPlugin,\n parseGraphPlugin,\n parseIntentPlugin,\n resolvePlugin,\n type IntentPluginProvides,\n type Plugin,\n type PluginDefinition,\n} from '@dxos/app-framework';\nimport { Timer } from '@dxos/async';\nimport { LocalStorageStore } from '@dxos/local-storage';\nimport { type ClientPluginProvides } from '@dxos/plugin-client';\nimport { createExtension, Graph, type Node } from '@dxos/plugin-graph';\nimport { SpaceAction } from '@dxos/plugin-space';\nimport { CollectionType } from '@dxos/plugin-space/types';\nimport { type Client } from '@dxos/react-client';\nimport { type Space, SpaceState, isSpace } from '@dxos/react-client/echo';\nimport { Main } from '@dxos/react-ui';\nimport {\n baseSurface,\n topbarBlockPaddingStart,\n fixedInsetFlexLayout,\n bottombarBlockPaddingEnd,\n} from '@dxos/react-ui-theme';\n\nimport { DebugGlobal, DebugSettings, DebugSpace, DebugStatus, DevtoolsMain, Wireframe } from './components';\nimport meta, { DEBUG_PLUGIN } from './meta';\nimport translations from './translations';\nimport { DebugContext, type DebugSettingsProps, type DebugPluginProvides, DebugAction } from './types';\n\nexport const SETTINGS_KEY = DEBUG_PLUGIN + '/settings';\n\nexport const DebugPlugin = (): PluginDefinition<DebugPluginProvides> => {\n const settings = new LocalStorageStore<DebugSettingsProps>(DEBUG_PLUGIN, { debug: true, devtools: true });\n let intentPlugin: Plugin<IntentPluginProvides>;\n\n return {\n meta,\n ready: async (plugins) => {\n intentPlugin = resolvePlugin(plugins, parseIntentPlugin)!;\n settings\n .prop({ key: 'debug', type: LocalStorageStore.bool({ allowUndefined: true }) })\n .prop({ key: 'devtools', type: LocalStorageStore.bool({ allowUndefined: true }) })\n .prop({ key: 'wireframe', type: LocalStorageStore.bool({ allowUndefined: true }) });\n\n // TODO(burdon): Remove hacky dependency on global variable.\n // Used to test how composer handles breaking protocol changes.\n const composer = (window as any).composer;\n composer.changeStorageVersionInMetadata = async (version: number) => {\n const { changeStorageVersionInMetadata } = await import('@dxos/echo-pipeline/testing');\n const { createStorageObjects } = await import('@dxos/client-services');\n const client: Client = (window as any).dxos.client;\n const config = client.config;\n await client.destroy();\n const { storage } = createStorageObjects(config.values?.runtime?.client?.storage ?? {});\n await changeStorageVersionInMetadata(storage, version);\n location.pathname = '/';\n };\n },\n unload: async () => {\n settings.close();\n },\n provides: {\n settings: settings.values,\n translations,\n context: ({ children }) => {\n const [timer, setTimer] = useState<Timer>();\n useEffect(() => timer?.state.on((value) => !value && setTimer(undefined)), [timer]);\n useEffect(() => {\n timer?.stop();\n }, []);\n\n return (\n <DebugContext.Provider\n value={{\n running: !!timer,\n start: (cb, options) => {\n timer?.stop();\n setTimer(new Timer(cb).start(options));\n },\n stop: () => timer?.stop(),\n }}\n >\n {children}\n </DebugContext.Provider>\n );\n },\n graph: {\n builder: (plugins) => {\n const graphPlugin = resolvePlugin(plugins, parseGraphPlugin);\n\n // TODO(burdon): Combine nodes into single subtree.\n\n return [\n // Devtools node.\n createExtension({\n id: 'dxos.org/plugin/debug/devtools',\n filter: (node): node is Node<null> => !!settings.values.devtools && node.id === 'root',\n connector: () => [\n {\n // TODO(zan): Removed `/` because it breaks deck layout reload. Fix?\n id: 'dxos.org.plugin.debug.devtools',\n data: 'devtools',\n type: 'dxos.org/plugin/debug/devtools',\n properties: {\n label: ['devtools label', { ns: DEBUG_PLUGIN }],\n icon: (props: IconProps) => <Hammer {...props} />,\n iconSymbol: 'ph--hammer--regular',\n },\n },\n ],\n }),\n\n // Debug node.\n createExtension({\n id: 'dxos.org/plugin/debug/debug',\n filter: (node): node is Node<null> => !!settings.values.debug && node.id === 'root',\n connector: () => [\n {\n id: 'dxos.org/plugin/debug/debug',\n type: 'dxos.org/plugin/debug/debug',\n data: { graph: graphPlugin?.provides.graph },\n properties: {\n label: ['debug label', { ns: DEBUG_PLUGIN }],\n icon: (props: IconProps) => <Bug {...props} />,\n iconSymbol: 'ph--bug--regular',\n },\n },\n ],\n }),\n\n // Space debug nodes.\n createExtension({\n id: 'dxos.org/plugin/debug/spaces',\n filter: (node): node is Node<Space> => !!settings.values.debug && isSpace(node.data),\n connector: ({ node }) => {\n const space = node.data;\n return [\n {\n id: `${space.id}-debug`,\n type: 'dxos.org/plugin/debug/space',\n data: { space },\n properties: {\n label: ['debug label', { ns: DEBUG_PLUGIN }],\n icon: (props: IconProps) => <Bug {...props} />,\n iconSymbol: 'ph--bug--regular',\n },\n },\n ];\n },\n }),\n ];\n },\n },\n intent: {\n resolver: async (intent, plugins) => {\n switch (intent.action) {\n case DebugAction.OPEN_DEVTOOLS: {\n const clientPlugin = getPlugin<ClientPluginProvides>(plugins, 'dxos.org/plugin/client');\n const client = clientPlugin.provides.client;\n const vaultUrl = client.config.values?.runtime?.client?.remoteSource ?? 'https://halo.dxos.org';\n\n // Check if we're serving devtools locally on the usual port.\n let devtoolsUrl = 'http://localhost:5174';\n try {\n // TODO(burdon): Test header to see if this is actually devtools.\n await fetch(devtoolsUrl);\n } catch {\n // Match devtools to running app.\n const isDev = window.location.href.includes('.dev.') || window.location.href.includes('localhost');\n devtoolsUrl = `https://devtools${isDev ? '.dev.' : '.'}dxos.org`;\n }\n\n window.open(`${devtoolsUrl}?target=${vaultUrl}`, '_blank');\n return { data: true };\n }\n }\n },\n },\n surface: {\n component: ({ name, data, role }) => {\n switch (role) {\n case 'settings':\n return data.plugin === meta.id ? <DebugSettings settings={settings.values} /> : null;\n case 'status':\n return <DebugStatus />;\n }\n\n const primary = data.active ?? data.object;\n let component: ReactNode;\n if (role === 'main' || role === 'article') {\n if (primary === 'devtools' && settings.values.devtools) {\n component = <DevtoolsMain />;\n } else if (!primary || typeof primary !== 'object' || !settings.values.debug) {\n component = null;\n } else if ('space' in primary && isSpace(primary.space)) {\n component = (\n <DebugSpace\n space={primary.space}\n onAddObjects={(objects) => {\n if (!isSpace(primary.space)) {\n return;\n }\n\n const collection =\n primary.space.state.get() === SpaceState.SPACE_READY &&\n primary.space.properties[CollectionType.typename];\n if (!(collection instanceof CollectionType)) {\n return;\n }\n\n void intentPlugin?.provides.intent.dispatch(\n objects.map((object) => ({\n action: SpaceAction.ADD_OBJECT,\n data: { target: collection, object },\n })),\n );\n }}\n />\n );\n } else if ('graph' in primary && primary.graph instanceof Graph) {\n component = <DebugGlobal graph={primary.graph} />;\n } else {\n component = null;\n }\n }\n\n if (!component) {\n if (settings.values.wireframe) {\n if (role === 'main' || role === 'article' || role === 'section') {\n const primary = data.active ?? data.object;\n if (!(primary instanceof CollectionType)) {\n return <Wireframe label={role} data={data} className='row-span-2 overflow-hidden' />;\n }\n }\n }\n\n return null;\n }\n\n switch (role) {\n case 'article':\n return (\n <div role='none' className='row-span-2 rounded-t-md overflow-x-auto'>\n {component}\n </div>\n );\n case 'main':\n return (\n <Main.Content\n classNames={[baseSurface, fixedInsetFlexLayout, topbarBlockPaddingStart, bottombarBlockPaddingEnd]}\n >\n {component}\n </Main.Content>\n );\n }\n\n return null;\n },\n },\n },\n };\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\n// Lazily load components for content surfaces.\nexport const DebugGlobal = React.lazy(() => import('./DebugGlobal'));\nexport const DebugSpace = React.lazy(() => import('./DebugSpace'));\nexport const DevtoolsMain = React.lazy(() => import('./DevtoolsMain'));\n\nexport * from './DebugSettings';\nexport * from './DebugStatus';\nexport * from './Wireframe';\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Gift, DownloadSimple, FirstAidKit } from '@phosphor-icons/react';\nimport React, { useEffect, useState } from 'react';\n\nimport { parseFileManagerPlugin, useResolvePlugin } from '@dxos/app-framework';\nimport { type ConfigProto, defs, SaveConfig, Storage } from '@dxos/config';\nimport { log } from '@dxos/log';\nimport { SettingsValue } from '@dxos/plugin-settings';\nimport { useClient } from '@dxos/react-client';\nimport { useTranslation, Button, Toast, Input, useFileDownload, Select } from '@dxos/react-ui';\nimport { getSize, mx } from '@dxos/react-ui-theme';\nimport { setDeep } from '@dxos/util';\n\nimport { DEBUG_PLUGIN } from '../meta';\nimport { type DebugSettingsProps } from '../types';\n\ntype Toast = {\n title: string;\n description?: string;\n};\n\nconst StorageAdapters = {\n opfs: defs.Runtime.Client.Storage.StorageDriver.WEBFS,\n idb: defs.Runtime.Client.Storage.StorageDriver.IDB,\n} as const;\n\nexport const DebugSettings = ({ settings }: { settings: DebugSettingsProps }) => {\n const { t } = useTranslation(DEBUG_PLUGIN);\n const [toast, setToast] = useState<Toast>();\n const client = useClient();\n const download = useFileDownload();\n // TODO(mykola): Get updates from other places that change Config.\n const [storageConfig, setStorageConfig] = useState<ConfigProto>({});\n const fileManagerPlugin = useResolvePlugin(parseFileManagerPlugin);\n\n useEffect(() => {\n void Storage().then((config) => setStorageConfig(config));\n }, []);\n\n const handleToast = (toast: Toast) => {\n setToast(toast);\n const t = setTimeout(() => setToast(undefined), 5_000);\n return () => clearTimeout(t);\n };\n\n const handleDownload = async () => {\n const data = await client.diagnostics();\n const file = new Blob([JSON.stringify(data, undefined, 2)], { type: 'text/plain' });\n const fileName = `composer-${new Date().toISOString().replace(/\\W/g, '-')}.json`;\n download(file, fileName);\n\n if (fileManagerPlugin?.provides.file.upload) {\n const info = await fileManagerPlugin.provides.file.upload(new File([file], fileName), client.spaces.default);\n if (!info) {\n log.error('diagnostics failed to upload to IPFS');\n return;\n }\n handleToast({ title: t('settings uploaded'), description: t('settings uploaded to clipboard') });\n\n // TODO(nf): move to IpfsPlugin?\n const url = client.config.values.runtime!.services!.ipfs!.gateway + '/' + info.cid;\n void navigator.clipboard.writeText(url);\n handleToast({ title: t('settings uploaded'), description: t('settings uploaded to clipboard') });\n log.info('diagnostics', { url });\n }\n };\n\n const handleRepair = async () => {\n try {\n const info = await client.repair();\n setStorageConfig(await Storage());\n handleToast({ title: t('settings repair success'), description: JSON.stringify(info, undefined, 2) });\n } catch (err: any) {\n handleToast({ title: t('settings repair failed'), description: err.message });\n }\n };\n\n return (\n <>\n <SettingsValue label={t('settings show debug panel')}>\n <Input.Switch checked={settings.debug} onCheckedChange={(checked) => (settings.debug = !!checked)} />\n </SettingsValue>\n <SettingsValue label={t('settings show devtools panel')}>\n <Input.Switch checked={settings.devtools} onCheckedChange={(checked) => (settings.devtools = !!checked)} />\n </SettingsValue>\n <SettingsValue label={t('settings wireframe')}>\n <Input.Switch checked={settings.wireframe} onCheckedChange={(checked) => (settings.wireframe = !!checked)} />\n </SettingsValue>\n <SettingsValue label={t('settings download diagnostics')}>\n <Button onClick={handleDownload}>\n <DownloadSimple className={getSize(5)} />\n </Button>\n </SettingsValue>\n <SettingsValue label={t('settings repair')}>\n <Button onClick={handleRepair}>\n <FirstAidKit className={getSize(5)} />\n </Button>\n </SettingsValue>\n\n {/* TODO(burdon): Move to layout? */}\n {toast && (\n <Toast.Root>\n <Toast.Body>\n <Toast.Title>\n <Gift className={mx(getSize(5), 'inline mr-1')} weight='duotone' />\n <span>{toast.title}</span>\n </Toast.Title>\n {toast.description && <Toast.Description>{toast.description}</Toast.Description>}\n </Toast.Body>\n </Toast.Root>\n )}\n\n <SettingsValue label={t('settings choose storage adaptor')}>\n <Select.Root\n value={\n Object.entries(StorageAdapters).find(\n ([name, value]) => value === storageConfig?.runtime?.client?.storage?.dataStore,\n )?.[0]\n }\n onValueChange={(value) => {\n if (confirm(t('settings storage adapter changed alert'))) {\n updateConfig(\n storageConfig,\n setStorageConfig,\n ['runtime', 'client', 'storage', 'dataStore'],\n StorageAdapters[value as keyof typeof StorageAdapters],\n );\n }\n }}\n >\n <Select.TriggerButton placeholder={t('settings data store label')} />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {Object.keys(StorageAdapters).map((key) => (\n <Select.Option key={key} value={key}>\n {t(`settings storage adaptor ${key} label`)}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </SettingsValue>\n </>\n );\n};\n\nconst updateConfig = (config: ConfigProto, setConfig: (newConfig: ConfigProto) => void, path: string[], value: any) => {\n const storageConfigCopy = JSON.parse(JSON.stringify(config ?? {}));\n setDeep(storageConfigCopy, path, value);\n setConfig(storageConfigCopy);\n queueMicrotask(async () => {\n await SaveConfig(storageConfigCopy);\n });\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { ChartBar, Circle, Lightning, LightningSlash } from '@phosphor-icons/react';\nimport React, { useEffect, useRef, useState } from 'react';\n\nimport { firstIdInPart, parseGraphPlugin, parseNavigationPlugin, useResolvePlugin } from '@dxos/app-framework';\nimport { TimeoutError } from '@dxos/async';\nimport { StatsPanel, useStats } from '@dxos/devtools';\nimport { log } from '@dxos/log';\nimport { getActiveSpace } from '@dxos/plugin-space';\nimport { StatusBar } from '@dxos/plugin-status-bar';\nimport { ConnectionState } from '@dxos/protocols/proto/dxos/client/services';\nimport { useNetworkStatus } from '@dxos/react-client/mesh';\nimport { getSize, mx } from '@dxos/react-ui-theme';\n\nconst styles = {\n success: 'text-sky-300 dark:text-green-700',\n warning: 'text-orange-300 dark:text-orange-600',\n error: 'text-red-300 dark:text-red-600',\n};\n\n// TODO(burdon): Move out of debug plugin.\n// TODO(burdon): Make pluggable (move indicators to relevant plugins).\n// TODO(burdon): Vault heartbeat indicator (global scope)?\n\n/**\n * Ensure light doesn't flicker immediately after start.\n */\n// TODO(burdon): Move to @dxos/async (debounce?)\nconst _timer = (cb: (err?: Error) => void, options?: { min?: number; max?: number }) => {\n const min = options?.min ?? 500;\n let start: number;\n let pending: NodeJS.Timeout;\n let timeout: NodeJS.Timeout;\n return {\n start: () => {\n start = Date.now();\n clearTimeout(pending);\n if (options?.max) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n cb(new TimeoutError(options.max));\n }, options.max);\n }\n },\n stop: () => {\n clearTimeout(timeout);\n const delta = Date.now() - start;\n if (delta < min) {\n pending = setTimeout(() => {\n cb();\n }, min - delta);\n }\n },\n };\n};\n\n/**\n * Global error handler.\n */\n// TODO(burdon): Integrate with Sentry?\nconst ErrorIndicator = () => {\n const [, forceUpdate] = useState({});\n const errorRef = useRef<Error>();\n useEffect(() => {\n const errorListener = (event: any) => {\n const error: Error = event.error ?? event.reason;\n // event.preventDefault();\n if (errorRef.current !== error) {\n // eslint-disable-next-line no-console\n log.error('onError', { event });\n errorRef.current = error;\n forceUpdate({});\n }\n };\n\n // TODO(burdon): Register globally?\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/error_event\n window.addEventListener('error', errorListener);\n\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/unhandledrejection_event\n window.addEventListener('unhandledrejection', errorListener);\n\n return () => {\n window.removeEventListener('error', errorListener);\n window.removeEventListener('unhandledrejection', errorListener);\n };\n }, []);\n\n const handleReset = () => {\n errorRef.current = undefined;\n forceUpdate({});\n };\n\n if (errorRef.current) {\n return (\n <StatusBar.Button title={errorRef.current.message} onClick={handleReset}>\n <Circle weight='fill' className={mx(styles.error, getSize(3))} />\n </StatusBar.Button>\n );\n } else {\n return (\n <StatusBar.Item title='No errors.'>\n <Circle weight='fill' className={getSize(3)} />\n </StatusBar.Item>\n );\n }\n};\n\n/**\n * Swarm connection handler.\n */\nconst SwarmIndicator = () => {\n const [state, setState] = useState(0);\n const { swarm } = useNetworkStatus();\n useEffect(() => {\n setState(swarm === ConnectionState.ONLINE ? 0 : 1);\n }, [swarm]);\n\n if (state === 0) {\n return (\n <StatusBar.Item title='Connected to swarm.'>\n <Lightning className={getSize(4)} />\n </StatusBar.Item>\n );\n } else {\n return (\n <StatusBar.Item title='Disconnected from swarm.'>\n <LightningSlash className={mx(styles.warning, getSize(4))} />\n </StatusBar.Item>\n );\n }\n};\n\n/**\n * Space saving indicator.\n */\nconst SavingIndicator = () => {\n const [state, _setState] = useState(0);\n const navigationPlugin = useResolvePlugin(parseNavigationPlugin);\n const graphPlugin = useResolvePlugin(parseGraphPlugin);\n const location = navigationPlugin?.provides.location;\n const graph = graphPlugin?.provides.graph;\n const _space = location && graph ? getActiveSpace(graph, firstIdInPart(location.active, 'main')) : undefined;\n // TODO(dmaretskyi): Fix this when we have save status for automerge.\n // useEffect(() => {\n // if (!space) {\n // return;\n // }\n // const { start, stop } = timer(() => setState(0), { min: 250 });\n // return space.db.pendingBatch.on(({ duration, error }) => {\n // if (error) {\n // setState(2);\n // stop();\n // } else if (duration === undefined) {\n // setState(1);\n // start();\n // } else {\n // stop();\n // }\n // });\n // }, [space]);\n\n switch (state) {\n case 2:\n return (\n <StatusBar.Item title='Edit not saved.'>\n <Circle weight='fill' className={mx(styles.warning, getSize(3))} />\n </StatusBar.Item>\n );\n case 1:\n return (\n <StatusBar.Item title='Saving...'>\n <Circle weight='fill' className={mx(styles.success, getSize(3))} />\n </StatusBar.Item>\n );\n case 0:\n default:\n return (\n <StatusBar.Item title='Modified indicator.'>\n <Circle weight='fill' className={getSize(3)} />\n </StatusBar.Item>\n );\n }\n};\n\nconst PerformanceIndicator = () => {\n const [visible, setVisible] = useState(false);\n const [stats, refreshStats] = useStats();\n\n return (\n <>\n <StatusBar.Button onClick={() => setVisible((visible) => !visible)} title='Performance panels'>\n <ChartBar />\n </StatusBar.Button>\n {visible && (\n <div className='z-20 absolute bottom-[24px] w-[450px] border-l border-y border-separator'>\n <StatsPanel stats={stats} onRefresh={refreshStats} />\n </div>\n )}\n </>\n );\n};\n\nconst indicators = [PerformanceIndicator, SavingIndicator, ErrorIndicator, SwarmIndicator];\n\nexport const DebugStatus = () => {\n return (\n <>\n {indicators.map((Indicator) => (\n <Indicator key={Indicator.name} />\n ))}\n </>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\nimport { useResizeDetector } from 'react-resize-detector';\n\nimport { createAttendableAttributes } from '@dxos/react-ui-attention';\nimport { mx } from '@dxos/react-ui-theme';\n\n// TODO(burdon): Make focusable and attendable with input.\nexport const Wireframe = ({ label, data, className }: { label?: string; data?: any; className?: string }) => {\n const attendableAttrs = createAttendableAttributes(data);\n const { width, height, ref } = useResizeDetector();\n return (\n <div ref={ref} className={mx('relative grow min-bs-96', className)} {...attendableAttrs}>\n <div className='absolute inset-2 flex flex-col overflow-hidden font-mono'>\n <div className='flex justify-between'>\n <div>{label}</div>\n <div>{`[${width}x${height}]`}</div>\n </div>\n <div className='flex grow overflow-auto'>\n {data && (\n <pre className='text-neutral-500 text-sm whitespace-pre-line'>{JSON.stringify(data, undefined, 1)}</pre>\n )}\n </div>\n </div>\n <svg width={width} height={height} className='bg-transparent [&>*]:stroke-neutral-500'>\n <rect x={0} y={0} width={width} height={height} strokeWidth={1} fill='none' />\n <line x1={0} y1={0} x2={width} y2={height} strokeWidth={1} />\n <line x1={0} y1={height} x2={width} y2={0} strokeWidth={1} />\n </svg>\n </div>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { DEBUG_PLUGIN } from './meta';\n\nexport default [\n {\n 'en-US': {\n [DEBUG_PLUGIN]: {\n 'plugin name': 'Debug',\n 'mutation count': 'Number of mutations',\n 'mutation period': 'Mutation period',\n 'open devtools label': 'Open DevTools',\n 'devtools label': 'DevTools',\n 'debug label': 'Debug',\n 'settings show debug panel': 'Show Debug panel.',\n 'settings show devtools panel': 'Show DevTools panel.',\n 'settings wireframe': 'Show wireframes.',\n 'settings repair': 'Run repair tool.',\n 'settings download diagnostics': 'Download diagnostics.',\n 'settings uploaded': 'Uploaded to IPFS',\n 'settings uploaded to clipboard': 'URL copied to clipboard.',\n 'settings repair success': 'Repair succeeded',\n 'settings repair failed': 'Repair failed',\n 'settings choose storage adaptor': 'Storage adaptor (worker reload required).',\n 'settings storage adaptor idb label': 'IndexedDB',\n 'settings storage adaptor opfs label': 'OPFS',\n 'settings data store label': 'Data Store',\n 'settings storage adapter changed alert':\n 'Warning: Swapping the storage adapter will make your data unavailable.',\n 'settings space fragmentation': 'Enable AM space fragmentation',\n },\n },\n },\n];\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { DebugPlugin } from './DebugPlugin';\n\nexport * from './DebugPlugin';\n\nexport default DebugPlugin;\n"],
5
+ "mappings": "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",
6
+ "names": ["Bug", "Hammer", "React", "useEffect", "useState", "getPlugin", "parseGraphPlugin", "parseIntentPlugin", "resolvePlugin", "Timer", "LocalStorageStore", "createExtension", "Graph", "SpaceAction", "CollectionType", "SpaceState", "isSpace", "Main", "baseSurface", "topbarBlockPaddingStart", "fixedInsetFlexLayout", "bottombarBlockPaddingEnd", "React", "Gift", "DownloadSimple", "FirstAidKit", "React", "useEffect", "useState", "parseFileManagerPlugin", "useResolvePlugin", "defs", "SaveConfig", "Storage", "log", "SettingsValue", "useClient", "useTranslation", "Button", "Toast", "Input", "useFileDownload", "Select", "getSize", "mx", "setDeep", "StorageAdapters", "opfs", "defs", "Runtime", "Client", "Storage", "StorageDriver", "WEBFS", "idb", "IDB", "DebugSettings", "settings", "t", "useTranslation", "DEBUG_PLUGIN", "toast", "setToast", "useState", "client", "useClient", "download", "useFileDownload", "storageConfig", "setStorageConfig", "fileManagerPlugin", "useResolvePlugin", "parseFileManagerPlugin", "useEffect", "then", "config", "handleToast", "setTimeout", "undefined", "clearTimeout", "handleDownload", "data", "diagnostics", "file", "Blob", "JSON", "stringify", "type", "fileName", "Date", "toISOString", "replace", "provides", "upload", "info", "File", "spaces", "default", "log", "error", "title", "description", "url", "values", "runtime", "services", "ipfs", "gateway", "cid", "navigator", "clipboard", "writeText", "handleRepair", "repair", "err", "message", "SettingsValue", "label", "Input", "Switch", "checked", "debug", "onCheckedChange", "devtools", "wireframe", "Button", "onClick", "DownloadSimple", "className", "getSize", "FirstAidKit", "Toast", "Root", "Body", "Title", "Gift", "mx", "weight", "span", "Description", "Select", "value", "Object", "entries", "find", "name", "storage", "dataStore", "onValueChange", "confirm", "updateConfig", "TriggerButton", "placeholder", "Portal", "Content", "Viewport", "keys", "map", "key", "Option", "setConfig", "path", "storageConfigCopy", "parse", "setDeep", "queueMicrotask", "SaveConfig", "ChartBar", "Circle", "Lightning", "LightningSlash", "React", "useEffect", "useRef", "useState", "firstIdInPart", "parseGraphPlugin", "parseNavigationPlugin", "useResolvePlugin", "TimeoutError", "StatsPanel", "useStats", "log", "getActiveSpace", "StatusBar", "ConnectionState", "useNetworkStatus", "getSize", "mx", "styles", "success", "warning", "error", "ErrorIndicator", "forceUpdate", "useState", "errorRef", "useRef", "useEffect", "errorListener", "event", "error", "reason", "current", "log", "window", "addEventListener", "removeEventListener", "handleReset", "undefined", "React", "StatusBar", "Button", "title", "message", "onClick", "Circle", "weight", "className", "mx", "styles", "getSize", "Item", "SwarmIndicator", "state", "setState", "swarm", "useNetworkStatus", "ConnectionState", "ONLINE", "Lightning", "LightningSlash", "warning", "SavingIndicator", "_setState", "navigationPlugin", "useResolvePlugin", "parseNavigationPlugin", "graphPlugin", "parseGraphPlugin", "location", "provides", "graph", "_space", "getActiveSpace", "firstIdInPart", "active", "success", "PerformanceIndicator", "visible", "setVisible", "stats", "refreshStats", "useStats", "ChartBar", "div", "StatsPanel", "onRefresh", "indicators", "DebugStatus", "map", "Indicator", "key", "name", "React", "useResizeDetector", "createAttendableAttributes", "mx", "Wireframe", "label", "data", "className", "attendableAttrs", "createAttendableAttributes", "width", "height", "ref", "useResizeDetector", "React", "div", "mx", "pre", "JSON", "stringify", "undefined", "svg", "rect", "x", "y", "strokeWidth", "fill", "line", "x1", "y1", "x2", "y2", "DebugGlobal", "React", "lazy", "DebugSpace", "DevtoolsMain", "DEBUG_PLUGIN", "SETTINGS_KEY", "DEBUG_PLUGIN", "DebugPlugin", "settings", "LocalStorageStore", "debug", "devtools", "intentPlugin", "meta", "ready", "plugins", "resolvePlugin", "parseIntentPlugin", "prop", "key", "type", "bool", "allowUndefined", "composer", "window", "changeStorageVersionInMetadata", "version", "createStorageObjects", "client", "dxos", "config", "destroy", "storage", "values", "runtime", "location", "pathname", "unload", "close", "provides", "translations", "context", "children", "timer", "setTimer", "useState", "useEffect", "state", "on", "value", "undefined", "stop", "React", "DebugContext", "Provider", "running", "start", "cb", "options", "Timer", "graph", "builder", "graphPlugin", "parseGraphPlugin", "createExtension", "id", "filter", "node", "connector", "data", "properties", "label", "ns", "icon", "props", "Hammer", "iconSymbol", "Bug", "isSpace", "space", "intent", "resolver", "action", "DebugAction", "OPEN_DEVTOOLS", "clientPlugin", "getPlugin", "vaultUrl", "remoteSource", "devtoolsUrl", "fetch", "isDev", "href", "includes", "open", "surface", "component", "name", "role", "plugin", "DebugSettings", "DebugStatus", "primary", "active", "object", "DevtoolsMain", "DebugSpace", "onAddObjects", "objects", "collection", "get", "SpaceState", "SPACE_READY", "CollectionType", "typename", "dispatch", "map", "SpaceAction", "ADD_OBJECT", "target", "Graph", "DebugGlobal", "wireframe", "Wireframe", "className", "div", "Main", "Content", "classNames", "baseSurface", "fixedInsetFlexLayout", "topbarBlockPaddingStart", "bottombarBlockPaddingEnd", "DebugPlugin"]
7
7
  }