@dxos/plugin-debug 0.9.1-main.c7dcc2e112 → 0.10.0

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 (84) hide show
  1. package/dist/lib/neutral/{DebugObjectPanel-OS65NC4M.mjs → DebugObjectPanel-QSGQJ3LM.mjs} +5 -3
  2. package/dist/lib/neutral/DebugObjectPanel-QSGQJ3LM.mjs.map +7 -0
  3. package/dist/lib/neutral/{DebugSettings-WLFIBSRV.mjs → DebugSettings-Q3WUL6YQ.mjs} +34 -28
  4. package/dist/lib/neutral/DebugSettings-Q3WUL6YQ.mjs.map +7 -0
  5. package/dist/lib/neutral/{DebugSpaceObjectsPanel-BHOCFWDJ.mjs → DebugSpaceObjectsPanel-AXFZWEIM.mjs} +5 -3
  6. package/dist/lib/neutral/DebugSpaceObjectsPanel-AXFZWEIM.mjs.map +7 -0
  7. package/dist/lib/neutral/{app-graph-builder-XJHFSODX.mjs → app-graph-builder-UKG4WVYK.mjs} +82 -89
  8. package/dist/lib/neutral/app-graph-builder-UKG4WVYK.mjs.map +7 -0
  9. package/dist/lib/neutral/capabilities/index.mjs +2 -2
  10. package/dist/lib/neutral/chunk-72QXLYMI.mjs +118 -0
  11. package/dist/lib/neutral/chunk-72QXLYMI.mjs.map +7 -0
  12. package/dist/lib/neutral/components/index.mjs +13 -24
  13. package/dist/lib/neutral/components/index.mjs.map +4 -4
  14. package/dist/lib/neutral/containers/index.mjs +4 -2
  15. package/dist/lib/neutral/containers/index.mjs.map +3 -3
  16. package/dist/lib/neutral/index.mjs +3 -3
  17. package/dist/lib/neutral/meta.json +1 -1
  18. package/dist/lib/neutral/{react-surface-MUVRCB3H.mjs → react-surface-URESE7J4.mjs} +73 -16
  19. package/dist/lib/neutral/react-surface-URESE7J4.mjs.map +7 -0
  20. package/dist/lib/neutral/translations.mjs +0 -1
  21. package/dist/lib/neutral/translations.mjs.map +2 -2
  22. package/dist/lib/neutral/types/index.mjs +3 -3
  23. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -2
  24. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  25. package/dist/types/src/capabilities/react-context.d.ts +1 -6
  26. package/dist/types/src/capabilities/react-context.d.ts.map +1 -1
  27. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  28. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  29. package/dist/types/src/capabilities/settings.d.ts +1 -3
  30. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  31. package/dist/types/src/components/SpaceGenerator/presets.d.ts.map +1 -1
  32. package/dist/types/src/components/index.d.ts +0 -2
  33. package/dist/types/src/components/index.d.ts.map +1 -1
  34. package/dist/types/src/containers/DebugObjectPanel/DebugObjectPanel.d.ts +6 -3
  35. package/dist/types/src/containers/DebugObjectPanel/DebugObjectPanel.d.ts.map +1 -1
  36. package/dist/types/src/{components → containers}/DebugSettings/DebugSettings.d.ts +2 -2
  37. package/dist/types/src/containers/DebugSettings/DebugSettings.d.ts.map +1 -0
  38. package/dist/types/src/{components → containers}/DebugSettings/DebugSettings.stories.d.ts +0 -1
  39. package/dist/types/src/{components → containers}/DebugSettings/DebugSettings.stories.d.ts.map +1 -1
  40. package/dist/types/src/{components → containers}/DebugSettings/index.d.ts.map +1 -1
  41. package/dist/types/src/containers/DebugSpaceObjectsPanel/DebugSpaceObjectsPanel.d.ts +6 -2
  42. package/dist/types/src/containers/DebugSpaceObjectsPanel/DebugSpaceObjectsPanel.d.ts.map +1 -1
  43. package/dist/types/src/containers/GithubPanel/GithubComponent.stories.d.ts +0 -1
  44. package/dist/types/src/containers/GithubPanel/GithubComponent.stories.d.ts.map +1 -1
  45. package/dist/types/src/containers/RegistryPanel/index.d.ts +1 -1
  46. package/dist/types/src/containers/RegistryPanel/index.d.ts.map +1 -1
  47. package/dist/types/src/containers/index.d.ts +1 -0
  48. package/dist/types/src/containers/index.d.ts.map +1 -1
  49. package/dist/types/src/meta.d.ts +4 -0
  50. package/dist/types/src/meta.d.ts.map +1 -1
  51. package/dist/types/src/translations.d.ts +0 -1
  52. package/dist/types/src/translations.d.ts.map +1 -1
  53. package/dist/types/src/types/Devtools.d.ts +57 -0
  54. package/dist/types/src/types/Devtools.d.ts.map +1 -0
  55. package/dist/types/src/types/debug.d.ts +20 -0
  56. package/dist/types/src/types/debug.d.ts.map +1 -0
  57. package/dist/types/src/types/index.d.ts +2 -69
  58. package/dist/types/src/types/index.d.ts.map +1 -1
  59. package/dist/types/tsconfig.tsbuildinfo +1 -1
  60. package/package.json +58 -58
  61. package/src/capabilities/app-graph-builder.ts +81 -89
  62. package/src/capabilities/react-surface.tsx +62 -12
  63. package/src/components/SpaceGenerator/presets.ts +10 -13
  64. package/src/components/index.ts +0 -4
  65. package/src/containers/DebugObjectPanel/DebugObjectPanel.tsx +13 -4
  66. package/src/{components → containers}/DebugSettings/DebugSettings.stories.tsx +1 -1
  67. package/src/{components → containers}/DebugSettings/DebugSettings.tsx +97 -95
  68. package/src/containers/DebugSpaceObjectsPanel/DebugSpaceObjectsPanel.tsx +12 -4
  69. package/src/containers/RegistryPanel/index.ts +1 -1
  70. package/src/containers/index.ts +1 -0
  71. package/src/translations.ts +0 -1
  72. package/src/types/Devtools.ts +73 -0
  73. package/src/types/debug.ts +35 -0
  74. package/src/types/index.ts +2 -90
  75. package/dist/lib/neutral/DebugObjectPanel-OS65NC4M.mjs.map +0 -7
  76. package/dist/lib/neutral/DebugSettings-WLFIBSRV.mjs.map +0 -7
  77. package/dist/lib/neutral/DebugSpaceObjectsPanel-BHOCFWDJ.mjs.map +0 -7
  78. package/dist/lib/neutral/app-graph-builder-XJHFSODX.mjs.map +0 -7
  79. package/dist/lib/neutral/chunk-MIF2W4LF.mjs +0 -96
  80. package/dist/lib/neutral/chunk-MIF2W4LF.mjs.map +0 -7
  81. package/dist/lib/neutral/react-surface-MUVRCB3H.mjs.map +0 -7
  82. package/dist/types/src/components/DebugSettings/DebugSettings.d.ts.map +0 -1
  83. /package/dist/types/src/{components → containers}/DebugSettings/index.d.ts +0 -0
  84. /package/src/{components → containers}/DebugSettings/index.ts +0 -0
@@ -8,7 +8,7 @@ import { useQuery } from "@dxos/react-client/echo";
8
8
  import { Clipboard, Input, Panel, ScrollArea, Toolbar } from "@dxos/react-ui";
9
9
  import { Syntax } from "@dxos/react-ui-syntax-highlighter";
10
10
  import { mx } from "@dxos/ui-theme";
11
- var DebugObjectPanel = ({ role, companionTo }) => {
11
+ var DebugObjectPanel = ({ role, companionTo, onOpen, canOpen }) => {
12
12
  const db = Obj.getDatabase(companionTo);
13
13
  const [selectedId, setSelectedId] = useState(null);
14
14
  const [depth, setDepth] = useState(0);
@@ -33,7 +33,9 @@ var DebugObjectPanel = ({ role, companionTo }) => {
33
33
  }, db && /* @__PURE__ */ React.createElement(ScrollArea.Root, null, /* @__PURE__ */ React.createElement(ScrollArea.Viewport, null, /* @__PURE__ */ React.createElement(ObjectsTree, {
34
34
  db,
35
35
  root: companionTo,
36
- onSelect: (entity) => setSelectedId(entity.id)
36
+ onSelect: (entity) => setSelectedId(entity.id),
37
+ onOpen,
38
+ canOpen
37
39
  }))), /* @__PURE__ */ React.createElement(Syntax.Root, {
38
40
  data: selectedObject,
39
41
  replacer: refReplacer
@@ -56,4 +58,4 @@ var DebugObjectPanel = ({ role, companionTo }) => {
56
58
  export {
57
59
  DebugObjectPanel as default
58
60
  };
59
- //# sourceMappingURL=DebugObjectPanel-OS65NC4M.mjs.map
61
+ //# sourceMappingURL=DebugObjectPanel-QSGQJ3LM.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/containers/DebugObjectPanel/DebugObjectPanel.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useMemo, useState } from 'react';\n\nimport { AppSurface } from '@dxos/app-toolkit/ui';\nimport { ObjectsTree } from '@dxos/devtools';\nimport { type Entity, Filter, Json, Obj, Query } from '@dxos/echo';\nimport type { EntityId } from '@dxos/keys';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { Clipboard, Input, Panel, ScrollArea, Toolbar } from '@dxos/react-ui';\nimport { Syntax } from '@dxos/react-ui-syntax-highlighter';\nimport { mx } from '@dxos/ui-theme';\n\nexport type DebugObjectPanelProps = Pick<\n AppSurface.ObjectArticleProps<Obj.Unknown, {}, Obj.Unknown>,\n 'role' | 'companionTo'\n> & {\n onOpen?: (object: Obj.Unknown) => void;\n canOpen?: (entity: Entity.Snapshot) => boolean;\n};\n\nexport const DebugObjectPanel = ({ role, companionTo, onOpen, canOpen }: DebugObjectPanelProps) => {\n const db = Obj.getDatabase(companionTo);\n const [selectedId, setSelectedId] = useState<EntityId | null>(null);\n const [depth, setDepth] = useState(0);\n const [selectedObject] = useQuery(\n db,\n Query.select(Filter.id(selectedId ?? companionTo.id)).options({ deleted: 'include' }),\n );\n const refReplacer = useMemo(() => (db ? Json.createRefReplacer({ db, depth }) : undefined), [db, depth]);\n\n return (\n <Clipboard.Provider>\n <Panel.Root role={role}>\n <Panel.Toolbar asChild>\n <Toolbar.Root />\n </Panel.Toolbar>\n <Panel.Content asChild>\n <div className={mx('grid divide-y divide-separator', db && 'grid-rows-[1fr_2fr]')}>\n {db && (\n <ScrollArea.Root>\n <ScrollArea.Viewport>\n <ObjectsTree\n db={db}\n root={companionTo}\n onSelect={(entity) => setSelectedId(entity.id)}\n onOpen={onOpen}\n canOpen={canOpen}\n />\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n )}\n <Syntax.Root data={selectedObject} replacer={refReplacer}>\n <Panel.Root>\n <Panel.Toolbar asChild>\n <Toolbar.Root classNames='grid grid-cols-[1fr_3rem]'>\n <Syntax.Filter />\n <Input.Root>\n <Input.TextInput\n variant='subdued'\n type='number'\n min={0}\n step={1}\n aria-label='Ref depth'\n value={depth}\n onChange={(event) => setDepth(Math.max(0, Number(event.target.value) || 0))}\n />\n </Input.Root>\n </Toolbar.Root>\n </Panel.Toolbar>\n <Panel.Content asChild>\n <Syntax.Viewport>\n <Syntax.Code />\n </Syntax.Viewport>\n </Panel.Content>\n </Panel.Root>\n </Syntax.Root>\n </div>\n </Panel.Content>\n </Panel.Root>\n </Clipboard.Provider>\n );\n};\n"],
5
+ "mappings": ";;;AAIA,OAAOA,SAASC,SAASC,gBAAgB;AAGzC,SAASC,mBAAmB;AAC5B,SAAsBC,QAAQC,MAAMC,KAAKC,aAAa;AAEtD,SAASC,gBAAgB;AACzB,SAASC,WAAWC,OAAOC,OAAOC,YAAYC,eAAe;AAC7D,SAASC,cAAc;AACvB,SAASC,UAAU;AAUZ,IAAMC,mBAAmB,CAAC,EAAEC,MAAMC,aAAaC,QAAQC,QAAO,MAAyB;AAC5F,QAAMC,KAAKf,IAAIgB,YAAYJ,WAAAA;AAC3B,QAAM,CAACK,YAAYC,aAAAA,IAAiBtB,SAA0B,IAAA;AAC9D,QAAM,CAACuB,OAAOC,QAAAA,IAAYxB,SAAS,CAAA;AACnC,QAAM,CAACyB,cAAAA,IAAkBnB,SACvBa,IACAd,MAAMqB,OAAOxB,OAAOyB,GAAGN,cAAcL,YAAYW,EAAE,CAAA,EAAGC,QAAQ;IAAEC,SAAS;EAAU,CAAA,CAAA;AAErF,QAAMC,cAAc/B,QAAQ,MAAOoB,KAAKhB,KAAK4B,kBAAkB;IAAEZ;IAAII;EAAM,CAAA,IAAKS,QAAY;IAACb;IAAII;GAAM;AAEvG,SACE,sBAAA,cAAChB,UAAU0B,UAAQ,MACjB,sBAAA,cAACxB,MAAMyB,MAAI;IAACnB;KACV,sBAAA,cAACN,MAAME,SAAO;IAACwB,SAAAA;KACb,sBAAA,cAACxB,QAAQuB,MAAI,IAAA,CAAA,GAEf,sBAAA,cAACzB,MAAM2B,SAAO;IAACD,SAAAA;KACb,sBAAA,cAACE,OAAAA;IAAIC,WAAWzB,GAAG,kCAAkCM,MAAM,qBAAA;KACxDA,MACC,sBAAA,cAACT,WAAWwB,MAAI,MACd,sBAAA,cAACxB,WAAW6B,UAAQ,MAClB,sBAAA,cAACtC,aAAAA;IACCkB;IACAqB,MAAMxB;IACNyB,UAAU,CAACC,WAAWpB,cAAcoB,OAAOf,EAAE;IAC7CV;IACAC;QAKR,sBAAA,cAACN,OAAOsB,MAAI;IAACS,MAAMlB;IAAgBmB,UAAUd;KAC3C,sBAAA,cAACrB,MAAMyB,MAAI,MACT,sBAAA,cAACzB,MAAME,SAAO;IAACwB,SAAAA;KACb,sBAAA,cAACxB,QAAQuB,MAAI;IAACW,YAAW;KACvB,sBAAA,cAACjC,OAAOV,QAAM,IAAA,GACd,sBAAA,cAACM,MAAM0B,MAAI,MACT,sBAAA,cAAC1B,MAAMsC,WAAS;IACdC,SAAQ;IACRC,MAAK;IACLC,KAAK;IACLC,MAAM;IACNC,cAAW;IACXC,OAAO7B;IACP8B,UAAU,CAACC,UAAU9B,SAAS+B,KAAKC,IAAI,GAAGC,OAAOH,MAAMI,OAAON,KAAK,KAAK,CAAA,CAAA;SAKhF,sBAAA,cAAC3C,MAAM2B,SAAO;IAACD,SAAAA;KACb,sBAAA,cAACvB,OAAO2B,UAAQ,MACd,sBAAA,cAAC3B,OAAO+C,MAAI,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAUhC;",
6
+ "names": ["React", "useMemo", "useState", "ObjectsTree", "Filter", "Json", "Obj", "Query", "useQuery", "Clipboard", "Input", "Panel", "ScrollArea", "Toolbar", "Syntax", "mx", "DebugObjectPanel", "role", "companionTo", "onOpen", "canOpen", "db", "getDatabase", "selectedId", "setSelectedId", "depth", "setDepth", "selectedObject", "select", "id", "options", "deleted", "refReplacer", "createRefReplacer", "undefined", "Provider", "Root", "asChild", "Content", "div", "className", "Viewport", "root", "onSelect", "entity", "data", "replacer", "classNames", "TextInput", "variant", "type", "min", "step", "aria-label", "value", "onChange", "event", "Math", "max", "Number", "target", "Code"]
7
+ }
@@ -1,17 +1,18 @@
1
1
  import "./chunk-J5LGTIGS.mjs";
2
2
 
3
- // src/components/DebugSettings/DebugSettings.tsx
3
+ // src/containers/DebugSettings/DebugSettings.tsx
4
4
  import React, { useCallback, useEffect, useMemo, useState } from "react";
5
5
  import { AppSpace } from "@dxos/app-toolkit";
6
6
  import { SaveConfig, Storage, defs } from "@dxos/config";
7
7
  import { log } from "@dxos/log";
8
8
  import { useClient } from "@dxos/react-client";
9
9
  import { IconButton, Input, Select, Toast, useFileDownload, useTranslation } from "@dxos/react-ui";
10
- import { Settings as SettingsForm } from "@dxos/react-ui-form";
10
+ import { Form } from "@dxos/react-ui-form";
11
11
  import { TRACE_ALL_KEY } from "@dxos/tracing";
12
12
  import { setDeep } from "@dxos/util";
13
13
  import { meta } from "#meta";
14
- var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-debug/src/components/DebugSettings/DebugSettings.tsx";
14
+ import { Settings } from "#types";
15
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-debug/src/containers/DebugSettings/DebugSettings.tsx";
15
16
  var StorageAdapters = {
16
17
  opfs: defs.Runtime.Client.Storage.StorageDriver.WEBFS,
17
18
  idb: defs.Runtime.Client.Storage.StorageDriver.IDB
@@ -44,14 +45,14 @@ var DebugSettings = ({ settings, onSettingsChange, logStore, onUpload }) => {
44
45
  if (onUpload) {
45
46
  const personalSpace = AppSpace.getPersonalSpace(client);
46
47
  if (!personalSpace) {
47
- log.error("no personal space available for upload", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 46, S: void 0 });
48
+ log.error("no personal space available for upload", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 47, S: void 0 });
48
49
  return;
49
50
  }
50
51
  const info = await onUpload(personalSpace.db, new File([
51
52
  file
52
53
  ], fileName));
53
54
  if (!info) {
54
- log.error("diagnostics failed to upload to IPFS", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 53, S: void 0 });
55
+ log.error("diagnostics failed to upload to IPFS", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 54, S: void 0 });
55
56
  return;
56
57
  }
57
58
  handleToast({
@@ -66,7 +67,7 @@ var DebugSettings = ({ settings, onSettingsChange, logStore, onUpload }) => {
66
67
  });
67
68
  log.info("diagnostics", {
68
69
  url
69
- }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 67, S: void 0 });
70
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 68, S: void 0 });
70
71
  }
71
72
  }, [
72
73
  client,
@@ -142,50 +143,55 @@ var DebugSettings = ({ settings, onSettingsChange, logStore, onUpload }) => {
142
143
  storageConfig,
143
144
  t
144
145
  ]);
145
- return /* @__PURE__ */ React.createElement(SettingsForm.Viewport, null, /* @__PURE__ */ React.createElement(SettingsForm.Section, {
146
- title: t("settings.title", {
147
- ns: meta.profile.key
148
- })
149
- }, /* @__PURE__ */ React.createElement(SettingsForm.Item, {
150
- title: t("settings.wireframe.label"),
146
+ return /* @__PURE__ */ React.createElement(Form.Root, {
147
+ schema: Settings.Settings,
148
+ values: settings,
149
+ variant: "settings",
150
+ readonly: !onSettingsChange
151
+ }, /* @__PURE__ */ React.createElement(Form.Viewport, {
152
+ scroll: true
153
+ }, /* @__PURE__ */ React.createElement(Form.Content, null, /* @__PURE__ */ React.createElement(Form.Section, {
154
+ title: meta.profile.name ?? meta.profile.key
155
+ }, /* @__PURE__ */ React.createElement(Form.Row, {
156
+ label: t("settings.wireframe.label"),
151
157
  description: t("settings.wireframe.description")
152
- }, /* @__PURE__ */ React.createElement(Input.Switch, {
158
+ }, /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Switch, {
153
159
  disabled: !onSettingsChange,
154
160
  checked: settings.wireframe,
155
161
  onCheckedChange: handleWireframeChange
156
- })), /* @__PURE__ */ React.createElement(SettingsForm.Item, {
157
- title: t("settings.trace-all.label"),
162
+ }))), /* @__PURE__ */ React.createElement(Form.Row, {
163
+ label: t("settings.trace-all.label"),
158
164
  description: t("settings.trace-all.description")
159
- }, /* @__PURE__ */ React.createElement(Input.Switch, {
165
+ }, /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Switch, {
160
166
  disabled: !onSettingsChange,
161
167
  checked: traceAll,
162
168
  onCheckedChange: handleTraceAllChange
163
- })), /* @__PURE__ */ React.createElement(SettingsForm.Item, {
164
- title: t("settings.tracing-panel.label"),
169
+ }))), /* @__PURE__ */ React.createElement(Form.Row, {
170
+ label: t("settings.tracing-panel.label"),
165
171
  description: t("settings.tracing-panel.description")
166
172
  }, /* @__PURE__ */ React.createElement(IconButton, {
167
173
  icon: "ph--arrow-square-out--regular",
168
174
  iconOnly: true,
169
175
  label: t("settings.tracing-panel.label"),
170
176
  onClick: handleOpenTracingPanel
171
- })), /* @__PURE__ */ React.createElement(SettingsForm.Item, {
172
- title: t("settings.download-diagnostics.label"),
177
+ })), /* @__PURE__ */ React.createElement(Form.Row, {
178
+ label: t("settings.download-diagnostics.label"),
173
179
  description: t("settings.download-diagnostics.description")
174
180
  }, /* @__PURE__ */ React.createElement(IconButton, {
175
181
  icon: "ph--download-simple--regular",
176
182
  iconOnly: true,
177
183
  label: t("settings.download-diagnostics.label"),
178
184
  onClick: handleDownload
179
- })), /* @__PURE__ */ React.createElement(SettingsForm.Item, {
180
- title: t("settings.download-logs.label"),
185
+ })), /* @__PURE__ */ React.createElement(Form.Row, {
186
+ label: t("settings.download-logs.label"),
181
187
  description: t("settings.download-logs.description")
182
188
  }, /* @__PURE__ */ React.createElement(IconButton, {
183
189
  icon: "ph--download-simple--regular",
184
190
  iconOnly: true,
185
191
  label: t("settings.download-logs.label"),
186
192
  onClick: handleDownloadLogs
187
- })), /* @__PURE__ */ React.createElement(SettingsForm.Item, {
188
- title: t("settings.repair.label"),
193
+ })), /* @__PURE__ */ React.createElement(Form.Row, {
194
+ label: t("settings.repair.label"),
189
195
  description: t("settings.repair.description")
190
196
  }, /* @__PURE__ */ React.createElement(IconButton, {
191
197
  icon: "ph--first-aid-kit--regular",
@@ -194,8 +200,8 @@ var DebugSettings = ({ settings, onSettingsChange, logStore, onUpload }) => {
194
200
  onClick: handleRepair
195
201
  })), toast && /* @__PURE__ */ React.createElement(Toast.Root, null, /* @__PURE__ */ React.createElement(Toast.Title, {
196
202
  icon: "ph--gift--duotone"
197
- }, /* @__PURE__ */ React.createElement("span", null, toast.title)), toast.description && /* @__PURE__ */ React.createElement(Toast.Description, null, toast.description)), /* @__PURE__ */ React.createElement(SettingsForm.Item, {
198
- title: t("settings.choose-storage-adaptor.label"),
203
+ }, /* @__PURE__ */ React.createElement("span", null, toast.title)), toast.description && /* @__PURE__ */ React.createElement(Toast.Description, null, toast.description)), /* @__PURE__ */ React.createElement(Form.Row, {
204
+ label: t("settings.choose-storage-adaptor.label"),
199
205
  description: t("settings.choose-storage-adaptor.description")
200
206
  }, /* @__PURE__ */ React.createElement(Select.Root, {
201
207
  disabled: !onSettingsChange,
@@ -207,7 +213,7 @@ var DebugSettings = ({ settings, onSettingsChange, logStore, onUpload }) => {
207
213
  }), /* @__PURE__ */ React.createElement(Select.Portal, null, /* @__PURE__ */ React.createElement(Select.Content, null, /* @__PURE__ */ React.createElement(Select.Viewport, null, Object.keys(StorageAdapters).map((key) => /* @__PURE__ */ React.createElement(Select.Option, {
208
214
  key,
209
215
  value: key
210
- }, t(`settings.storage-adaptor.${key}.label`)))), /* @__PURE__ */ React.createElement(Select.Arrow, null)))))));
216
+ }, t(`settings.storage-adaptor.${key}.label`)))), /* @__PURE__ */ React.createElement(Select.Arrow, null)))))))));
211
217
  };
212
218
  var updateConfig = (config, setConfig, path, value) => {
213
219
  const storageConfigCopy = JSON.parse(JSON.stringify(config ?? {}));
@@ -220,4 +226,4 @@ var updateConfig = (config, setConfig, path, value) => {
220
226
  export {
221
227
  DebugSettings as default
222
228
  };
223
- //# sourceMappingURL=DebugSettings-WLFIBSRV.mjs.map
229
+ //# sourceMappingURL=DebugSettings-Q3WUL6YQ.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/containers/DebugSettings/DebugSettings.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { AppCapabilities, AppSpace } from '@dxos/app-toolkit';\nimport { type AppSurface } from '@dxos/app-toolkit/ui';\nimport { type ConfigProto, SaveConfig, Storage, defs } from '@dxos/config';\nimport { log } from '@dxos/log';\nimport { type IdbLogStore } from '@dxos/log-store-idb';\nimport { useClient } from '@dxos/react-client';\nimport { IconButton, Input, Select, Toast, useFileDownload, useTranslation } from '@dxos/react-ui';\nimport { Form } from '@dxos/react-ui-form';\nimport { TRACE_ALL_KEY } from '@dxos/tracing';\nimport { setDeep } from '@dxos/util';\n\nimport { meta } from '#meta';\nimport { Settings } 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 type DebugSettingsProps = AppSurface.SettingsProps<\n Settings.Settings,\n {\n logStore: IdbLogStore;\n onUpload?: AppCapabilities.FileUploader;\n }\n>;\n\nexport const DebugSettings = ({ settings, onSettingsChange, logStore, onUpload }: DebugSettingsProps) => {\n const { t } = useTranslation(meta.profile.key);\n const [toast, setToast] = useState<Toast>();\n const download = useFileDownload();\n const [storageConfig, setStorageConfig] = useState<ConfigProto>({});\n const client = useClient();\n\n useEffect(() => {\n void Storage().then((config) => setStorageConfig(config));\n }, []);\n\n const handleToast = useCallback(\n (toast: Toast) => {\n setToast(toast);\n const timer = setTimeout(() => setToast(undefined), 5_000);\n return () => clearTimeout(timer);\n },\n [setToast],\n );\n\n const handleDownload = useCallback(async () => {\n const data = await client.diagnostics();\n const file = new Blob([JSON.stringify(data, undefined, 2)], {\n type: 'text/plain',\n });\n const fileName = `composer-${new Date().toISOString().replace(/\\W/g, '-')}.json`;\n download(file, fileName);\n\n if (onUpload) {\n const personalSpace = AppSpace.getPersonalSpace(client);\n if (!personalSpace) {\n log.error('no personal space available for upload');\n return;\n }\n const info = await onUpload(personalSpace.db, new File([file], fileName));\n if (!info) {\n log.error('diagnostics failed to upload to IPFS');\n return;\n }\n handleToast({\n title: t('settings.uploaded.message'),\n description: t('settings.uploaded.description'),\n });\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({\n title: t('settings.uploaded.message'),\n description: t('settings.uploaded.description'),\n });\n log.info('diagnostics', { url });\n }\n }, [client, download, handleToast, onUpload, t]);\n\n const handleDownloadLogs = useCallback(async () => {\n const ndjson = await logStore.export();\n const file = new Blob([ndjson], { type: 'application/x-ndjson' });\n const fileName = `composer-logs-${new Date().toISOString().slice(0, 19).replace(/:/g, '-')}.ndjson`;\n download(file, fileName);\n }, [download, logStore]);\n\n const handleRepair = useCallback(async () => {\n try {\n const info = await client.repair();\n setStorageConfig(await Storage());\n handleToast({\n title: t('settings.repair-success.message'),\n description: JSON.stringify(info, undefined, 2),\n });\n } catch (err: any) {\n handleToast({\n title: t('settings.repair-failed.message'),\n description: err.message,\n });\n }\n }, [client, handleToast, t]);\n\n const handleWireframeChange = useCallback(\n (checked: boolean) => onSettingsChange?.((s) => ({ ...s, wireframe: !!checked })),\n [onSettingsChange],\n );\n\n const traceAll = useMemo(\n () => settings.traceAll ?? (typeof localStorage !== 'undefined' && localStorage.getItem(TRACE_ALL_KEY) === 'true'),\n [settings.traceAll],\n );\n\n const handleTraceAllChange = useCallback(\n (checked: boolean) => {\n const value = !!checked;\n localStorage.setItem(TRACE_ALL_KEY, String(value));\n onSettingsChange?.((s) => ({ ...s, traceAll: value }));\n },\n [onSettingsChange],\n );\n\n const handleOpenTracingPanel = useCallback(() => {\n window.open('about:blank', '_blank');\n }, []);\n\n const handleStorageAdapterChange = useCallback(\n (value: string) => {\n if (confirm(t('settings.storage-adapter.changed-alert.message'))) {\n updateConfig(\n storageConfig,\n setStorageConfig,\n ['runtime', 'client', 'storage', 'dataStore'],\n StorageAdapters[value as keyof typeof StorageAdapters],\n );\n }\n },\n [storageConfig, t],\n );\n\n return (\n <Form.Root schema={Settings.Settings} values={settings} variant='settings' readonly={!onSettingsChange}>\n <Form.Viewport scroll>\n <Form.Content>\n <Form.Section title={meta.profile.name ?? meta.profile.key}>\n <Form.Row label={t('settings.wireframe.label')} description={t('settings.wireframe.description')}>\n <Input.Root>\n <Input.Switch\n disabled={!onSettingsChange}\n checked={settings.wireframe}\n onCheckedChange={handleWireframeChange}\n />\n </Input.Root>\n </Form.Row>\n <Form.Row label={t('settings.trace-all.label')} description={t('settings.trace-all.description')}>\n <Input.Root>\n <Input.Switch disabled={!onSettingsChange} checked={traceAll} onCheckedChange={handleTraceAllChange} />\n </Input.Root>\n </Form.Row>\n <Form.Row label={t('settings.tracing-panel.label')} description={t('settings.tracing-panel.description')}>\n <IconButton\n icon='ph--arrow-square-out--regular'\n iconOnly\n label={t('settings.tracing-panel.label')}\n onClick={handleOpenTracingPanel}\n />\n </Form.Row>\n <Form.Row\n label={t('settings.download-diagnostics.label')}\n description={t('settings.download-diagnostics.description')}\n >\n <IconButton\n icon='ph--download-simple--regular'\n iconOnly\n label={t('settings.download-diagnostics.label')}\n onClick={handleDownload}\n />\n </Form.Row>\n <Form.Row label={t('settings.download-logs.label')} description={t('settings.download-logs.description')}>\n <IconButton\n icon='ph--download-simple--regular'\n iconOnly\n label={t('settings.download-logs.label')}\n onClick={handleDownloadLogs}\n />\n </Form.Row>\n <Form.Row label={t('settings.repair.label')} description={t('settings.repair.description')}>\n <IconButton\n icon='ph--first-aid-kit--regular'\n iconOnly\n label={t('settings.repair.label')}\n onClick={handleRepair}\n />\n </Form.Row>\n\n {/* TODO(burdon): Move to layout? */}\n {toast && (\n <Toast.Root>\n <Toast.Title icon='ph--gift--duotone'>\n <span>{toast.title}</span>\n </Toast.Title>\n {toast.description && <Toast.Description>{toast.description}</Toast.Description>}\n </Toast.Root>\n )}\n\n <Form.Row\n label={t('settings.choose-storage-adaptor.label')}\n description={t('settings.choose-storage-adaptor.description')}\n >\n <Select.Root\n disabled={!onSettingsChange}\n value={\n Object.entries(StorageAdapters).find(\n ([_name, value]) => value === storageConfig?.runtime?.client?.storage?.dataStore,\n )?.[0]\n }\n onValueChange={handleStorageAdapterChange}\n >\n <Select.TriggerButton disabled={!onSettingsChange} 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.Arrow />\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </Form.Row>\n </Form.Section>\n </Form.Content>\n </Form.Viewport>\n </Form.Root>\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"],
5
+ "mappings": "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",
6
+ "names": ["React", "useCallback", "useEffect", "useMemo", "useState", "AppSpace", "SaveConfig", "Storage", "defs", "log", "useClient", "IconButton", "Input", "Select", "Toast", "useFileDownload", "useTranslation", "Form", "TRACE_ALL_KEY", "setDeep", "meta", "Settings", "StorageAdapters", "idb", "Client", "DebugSettings", "settings", "onSettingsChange", "toast", "download", "storageConfig", "setStorageConfig", "client", "config", "handleToast", "setToast", "setTimeout", "clearTimeout", "Blob", "JSON", "stringify", "data", "undefined", "type", "fileName", "onUpload", "personalSpace", "error", "description", "title", "info", "t", "ndjson", "checked", "handleTraceAllChange", "localStorage", "String", "value", "handleStorageAdapterChange", "variant", "readonly", "scroll", "Content", "Row", "label", "disabled", "wireframe", "onCheckedChange", "traceAll", "icon", "iconOnly", "onClick", "handleOpenTracingPanel", "handleDownload", "handleDownloadLogs", "handleRepair", "span", "Object", "entries", "find", "_name", "onValueChange", "TriggerButton", "key", "updateConfig", "path", "storageConfigCopy", "setConfig", "queueMicrotask"]
7
+ }
@@ -7,7 +7,7 @@ import { Filter, Query } from "@dxos/echo";
7
7
  import { useQuery } from "@dxos/react-client/echo";
8
8
  import { Clipboard, Grid, Input, Panel, ScrollArea, Toolbar } from "@dxos/react-ui";
9
9
  import { JsonHighlighter } from "@dxos/react-ui-syntax-highlighter";
10
- var DebugSpaceObjectsPanel = ({ space }) => {
10
+ var DebugSpaceObjectsPanel = ({ space, onOpen, canOpen }) => {
11
11
  const [selectedId, setSelectedId] = useState(null);
12
12
  const [selectedObject] = useQuery(space.db, selectedId ? Query.select(Filter.id(selectedId)) : Query.select(Filter.nothing()));
13
13
  return /* @__PURE__ */ React.createElement(Clipboard.Provider, null, /* @__PURE__ */ React.createElement(Panel.Root, null, /* @__PURE__ */ React.createElement(Panel.Toolbar, {
@@ -22,7 +22,9 @@ var DebugSpaceObjectsPanel = ({ space }) => {
22
22
  classNames: "divide-y divide-separator"
23
23
  }, /* @__PURE__ */ React.createElement(ScrollArea.Root, null, /* @__PURE__ */ React.createElement(ScrollArea.Viewport, null, /* @__PURE__ */ React.createElement(ObjectsTree, {
24
24
  db: space.db,
25
- onSelect: (entity) => setSelectedId(entity.id)
25
+ onSelect: (entity) => setSelectedId(entity.id),
26
+ onOpen,
27
+ canOpen
26
28
  }))), selectedObject && /* @__PURE__ */ React.createElement(JsonHighlighter, {
27
29
  classNames: "p-1",
28
30
  data: selectedObject
@@ -31,4 +33,4 @@ var DebugSpaceObjectsPanel = ({ space }) => {
31
33
  export {
32
34
  DebugSpaceObjectsPanel as default
33
35
  };
34
- //# sourceMappingURL=DebugSpaceObjectsPanel-BHOCFWDJ.mjs.map
36
+ //# sourceMappingURL=DebugSpaceObjectsPanel-AXFZWEIM.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/containers/DebugSpaceObjectsPanel/DebugSpaceObjectsPanel.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useState } from 'react';\n\nimport { type AppSurface } from '@dxos/app-toolkit/ui';\nimport { ObjectsTree } from '@dxos/devtools';\nimport { type Entity, Filter, Obj, Query } from '@dxos/echo';\nimport { type EntityId } from '@dxos/keys';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { Clipboard, Grid, Input, Panel, ScrollArea, Toolbar } from '@dxos/react-ui';\nimport { JsonHighlighter } from '@dxos/react-ui-syntax-highlighter';\n\nexport type DebugSpaceObjectsPanelProps = AppSurface.SpaceArticleProps & {\n onOpen?: (object: Obj.Unknown) => void;\n canOpen?: (entity: Entity.Snapshot) => boolean;\n};\n\nexport const DebugSpaceObjectsPanel = ({ space, onOpen, canOpen }: DebugSpaceObjectsPanelProps) => {\n const [selectedId, setSelectedId] = useState<EntityId | null>(null);\n const [selectedObject] = useQuery(\n space.db,\n selectedId ? Query.select(Filter.id(selectedId)) : Query.select(Filter.nothing()),\n );\n\n return (\n <Clipboard.Provider>\n <Panel.Root>\n <Panel.Toolbar asChild>\n <Toolbar.Root>\n <Input.Root>\n <Input.TextInput disabled placeholder='Search...' />\n </Input.Root>\n </Toolbar.Root>\n </Panel.Toolbar>\n <Panel.Content asChild>\n <Grid rows={2} classNames='divide-y divide-separator'>\n <ScrollArea.Root>\n <ScrollArea.Viewport>\n <ObjectsTree\n db={space.db}\n onSelect={(entity) => setSelectedId(entity.id)}\n onOpen={onOpen}\n canOpen={canOpen}\n />\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n {selectedObject && <JsonHighlighter classNames='p-1' data={selectedObject} />}\n </Grid>\n </Panel.Content>\n </Panel.Root>\n </Clipboard.Provider>\n );\n};\n"],
5
+ "mappings": ";;;AAIA,OAAOA,SAASC,gBAAgB;AAGhC,SAASC,mBAAmB;AAC5B,SAAsBC,QAAaC,aAAa;AAEhD,SAASC,gBAAgB;AACzB,SAASC,WAAWC,MAAMC,OAAOC,OAAOC,YAAYC,eAAe;AACnE,SAASC,uBAAuB;AAOzB,IAAMC,yBAAyB,CAAC,EAAEC,OAAOC,QAAQC,QAAO,MAA+B;AAC5F,QAAM,CAACC,YAAYC,aAAAA,IAAiBjB,SAA0B,IAAA;AAC9D,QAAM,CAACkB,cAAAA,IAAkBd,SACvBS,MAAMM,IACNH,aAAab,MAAMiB,OAAOlB,OAAOmB,GAAGL,UAAAA,CAAAA,IAAeb,MAAMiB,OAAOlB,OAAOoB,QAAO,CAAA,CAAA;AAGhF,SACE,sBAAA,cAACjB,UAAUkB,UAAQ,MACjB,sBAAA,cAACf,MAAMgB,MAAI,MACT,sBAAA,cAAChB,MAAME,SAAO;IAACe,SAAAA;KACb,sBAAA,cAACf,QAAQc,MAAI,MACX,sBAAA,cAACjB,MAAMiB,MAAI,MACT,sBAAA,cAACjB,MAAMmB,WAAS;IAACC,UAAAA;IAASC,aAAY;SAI5C,sBAAA,cAACpB,MAAMqB,SAAO;IAACJ,SAAAA;KACb,sBAAA,cAACnB,MAAAA;IAAKwB,MAAM;IAAGC,YAAW;KACxB,sBAAA,cAACtB,WAAWe,MAAI,MACd,sBAAA,cAACf,WAAWuB,UAAQ,MAClB,sBAAA,cAAC/B,aAAAA;IACCkB,IAAIN,MAAMM;IACVc,UAAU,CAACC,WAAWjB,cAAciB,OAAOb,EAAE;IAC7CP;IACAC;QAILG,kBAAkB,sBAAA,cAACP,iBAAAA;IAAgBoB,YAAW;IAAMI,MAAMjB;;AAMvE;",
6
+ "names": ["React", "useState", "ObjectsTree", "Filter", "Query", "useQuery", "Clipboard", "Grid", "Input", "Panel", "ScrollArea", "Toolbar", "JsonHighlighter", "DebugSpaceObjectsPanel", "space", "onOpen", "canOpen", "selectedId", "setSelectedId", "selectedObject", "db", "select", "id", "nothing", "Provider", "Root", "asChild", "TextInput", "disabled", "placeholder", "Content", "rows", "classNames", "Viewport", "onSelect", "entity", "data"]
7
+ }