@dxos/plugin-debug 0.7.5-labs.a279d8c → 0.7.5-labs.a8b535d

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 (80) hide show
  1. package/dist/lib/browser/{DebugSpace-4JHYA7FG.mjs → DebugSpace-BTMTVZ6C.mjs} +2 -2
  2. package/dist/lib/browser/SpaceGenerator-BPZGOSH4.mjs +1238 -0
  3. package/dist/lib/browser/SpaceGenerator-BPZGOSH4.mjs.map +7 -0
  4. package/dist/lib/browser/app-graph-builder-BZFZ6UG6.mjs +533 -0
  5. package/dist/lib/browser/app-graph-builder-BZFZ6UG6.mjs.map +7 -0
  6. package/dist/lib/browser/chunk-EF3UVAVI.mjs +21 -0
  7. package/dist/lib/browser/chunk-EF3UVAVI.mjs.map +7 -0
  8. package/dist/lib/browser/chunk-UASI2CRI.mjs +72 -0
  9. package/dist/lib/browser/chunk-UASI2CRI.mjs.map +7 -0
  10. package/dist/lib/browser/index.mjs +40 -10
  11. package/dist/lib/browser/index.mjs.map +3 -3
  12. package/dist/lib/browser/meta.json +1 -1
  13. package/dist/lib/browser/react-context-TCD3MNIT.mjs +16 -0
  14. package/dist/lib/browser/react-context-TCD3MNIT.mjs.map +7 -0
  15. package/dist/lib/browser/{react-surface-ACHNR2UU.mjs → react-surface-W6QLG4YJ.mjs} +240 -80
  16. package/dist/lib/browser/react-surface-W6QLG4YJ.mjs.map +7 -0
  17. package/dist/lib/browser/{settings-JCZUA643.mjs → settings-INPXR64L.mjs} +6 -7
  18. package/dist/lib/browser/{settings-JCZUA643.mjs.map → settings-INPXR64L.mjs.map} +3 -3
  19. package/dist/types/src/DebugPlugin.d.ts.map +1 -1
  20. package/dist/types/src/capabilities/app-graph-builder.d.ts +110 -110
  21. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  22. package/dist/types/src/capabilities/index.d.ts +116 -116
  23. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  24. package/dist/types/src/capabilities/react-context.d.ts.map +1 -1
  25. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  26. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  27. package/dist/types/src/components/Container.d.ts +2 -2
  28. package/dist/types/src/components/Container.d.ts.map +1 -1
  29. package/dist/types/src/components/DebugObjectPanel.d.ts +1 -2
  30. package/dist/types/src/components/DebugObjectPanel.d.ts.map +1 -1
  31. package/dist/types/src/components/DebugSettings.d.ts +1 -2
  32. package/dist/types/src/components/DebugSettings.d.ts.map +1 -1
  33. package/dist/types/src/components/DebugSpace/ObjectCreator.d.ts +1 -2
  34. package/dist/types/src/components/DebugSpace/ObjectCreator.d.ts.map +1 -1
  35. package/dist/types/src/components/DebugStatus.d.ts +1 -2
  36. package/dist/types/src/components/DebugStatus.d.ts.map +1 -1
  37. package/dist/types/src/components/SpaceGenerator/ObjectGenerator.d.ts.map +1 -1
  38. package/dist/types/src/components/SpaceGenerator/SchemaTable.d.ts +1 -2
  39. package/dist/types/src/components/SpaceGenerator/SchemaTable.d.ts.map +1 -1
  40. package/dist/types/src/components/SpaceGenerator/SpaceGenerator.d.ts +1 -2
  41. package/dist/types/src/components/SpaceGenerator/SpaceGenerator.d.ts.map +1 -1
  42. package/dist/types/src/components/SpaceGenerator/presets.d.ts +22 -0
  43. package/dist/types/src/components/SpaceGenerator/presets.d.ts.map +1 -0
  44. package/dist/types/src/components/Wireframe.d.ts +1 -2
  45. package/dist/types/src/components/Wireframe.d.ts.map +1 -1
  46. package/dist/types/src/components/index.d.ts +4 -4
  47. package/dist/types/src/components/index.d.ts.map +1 -1
  48. package/dist/types/src/meta.d.ts +1 -0
  49. package/dist/types/src/meta.d.ts.map +1 -1
  50. package/dist/types/src/translations.d.ts +28 -0
  51. package/dist/types/src/translations.d.ts.map +1 -1
  52. package/dist/types/src/types.d.ts +44 -1
  53. package/dist/types/src/types.d.ts.map +1 -1
  54. package/dist/types/tsconfig.tsbuildinfo +1 -1
  55. package/package.json +49 -46
  56. package/src/DebugPlugin.tsx +6 -3
  57. package/src/capabilities/app-graph-builder.ts +297 -89
  58. package/src/capabilities/react-context.tsx +3 -25
  59. package/src/capabilities/react-surface.tsx +202 -33
  60. package/src/capabilities/settings.ts +0 -1
  61. package/src/components/DebugSettings.tsx +7 -12
  62. package/src/components/DebugStatus.tsx +17 -21
  63. package/src/components/SpaceGenerator/ObjectGenerator.tsx +2 -83
  64. package/src/components/SpaceGenerator/SpaceGenerator.tsx +74 -7
  65. package/src/components/SpaceGenerator/presets.ts +563 -0
  66. package/src/meta.ts +3 -1
  67. package/src/translations.ts +28 -0
  68. package/src/types.ts +52 -1
  69. package/dist/lib/browser/SpaceGenerator-YNT3WDFI.mjs +0 -479
  70. package/dist/lib/browser/SpaceGenerator-YNT3WDFI.mjs.map +0 -7
  71. package/dist/lib/browser/app-graph-builder-FXELWOFS.mjs +0 -177
  72. package/dist/lib/browser/app-graph-builder-FXELWOFS.mjs.map +0 -7
  73. package/dist/lib/browser/chunk-I3ON45JK.mjs +0 -18
  74. package/dist/lib/browser/chunk-I3ON45JK.mjs.map +0 -7
  75. package/dist/lib/browser/chunk-P7GHHMDB.mjs +0 -21
  76. package/dist/lib/browser/chunk-P7GHHMDB.mjs.map +0 -7
  77. package/dist/lib/browser/react-context-OZU6J7G3.mjs +0 -37
  78. package/dist/lib/browser/react-context-OZU6J7G3.mjs.map +0 -7
  79. package/dist/lib/browser/react-surface-ACHNR2UU.mjs.map +0 -7
  80. /package/dist/lib/browser/{DebugSpace-4JHYA7FG.mjs.map → DebugSpace-BTMTVZ6C.mjs.map} +0 -0
@@ -1,11 +1,15 @@
1
1
  import {
2
2
  DEBUG_PLUGIN
3
- } from "./chunk-I3ON45JK.mjs";
3
+ } from "./chunk-EF3UVAVI.mjs";
4
+ import {
5
+ Devtools
6
+ } from "./chunk-UASI2CRI.mjs";
4
7
 
5
8
  // packages/plugins/plugin-debug/src/capabilities/react-surface.tsx
6
9
  import React5, { useCallback } from "react";
7
- import { Capabilities as Capabilities3, contributes, createIntent, createSurface, useCapability as useCapability2 } from "@dxos/app-framework";
8
- import { Devtools } from "@dxos/devtools";
10
+ import { Capabilities as Capabilities2, contributes, createIntent, createSurface, LayoutAction } from "@dxos/app-framework";
11
+ import { ConfigPanel, CredentialsPanel, DeviceListPanel, DiagnosticsPanel, FeedsPanel, IdentityPanel, KeyringPanel, LoggingPanel, MembersPanel, MetadataPanel, NetworkPanel, ObjectsPanel, SignalPanel, SpaceInfoPanel, SpaceListPanel, StoragePanel, SwarmPanel, TracingPanel, DashboardPanel, EdgeDashboardPanel, SearchPanel, AutomergePanel, WorkflowPanel } from "@dxos/devtools";
12
+ import { SettingsStore } from "@dxos/local-storage";
9
13
  import { Graph } from "@dxos/plugin-graph";
10
14
  import { SpaceAction, CollectionType } from "@dxos/plugin-space/types";
11
15
  import { SpaceState, isSpace, isEchoObject } from "@dxos/react-client/echo";
@@ -39,15 +43,13 @@ var DebugObjectPanel = ({ object }) => {
39
43
  };
40
44
 
41
45
  // packages/plugins/plugin-debug/src/components/DebugSettings.tsx
42
- import { Gift, DownloadSimple, FirstAidKit } from "@phosphor-icons/react";
43
46
  import React2, { useEffect, useState } from "react";
44
47
  import { Capabilities, useCapabilities } from "@dxos/app-framework";
45
48
  import { defs, SaveConfig, Storage } from "@dxos/config";
46
49
  import { log } from "@dxos/log";
47
50
  import { useClient } from "@dxos/react-client";
48
- import { useTranslation, Button, Toast, Input as Input2, useFileDownload, Select } from "@dxos/react-ui";
49
- import { DeprecatedFormInput } from "@dxos/react-ui-form";
50
- import { getSize, mx } from "@dxos/react-ui-theme";
51
+ import { useTranslation, Button, Toast, Input as Input2, useFileDownload, Select, Icon } from "@dxos/react-ui";
52
+ import { DeprecatedFormContainer, DeprecatedFormInput } from "@dxos/react-ui-form";
51
53
  import { setDeep } from "@dxos/util";
52
54
  var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-debug/src/components/DebugSettings.tsx";
53
55
  var StorageAdapters = {
@@ -85,7 +87,7 @@ var DebugSettings = ({ settings }) => {
85
87
  if (!info) {
86
88
  log.error("diagnostics failed to upload to IPFS", void 0, {
87
89
  F: __dxlog_file,
88
- L: 58,
90
+ L: 56,
89
91
  S: void 0,
90
92
  C: (f, a) => f(...a)
91
93
  });
@@ -105,7 +107,7 @@ var DebugSettings = ({ settings }) => {
105
107
  url
106
108
  }, {
107
109
  F: __dxlog_file,
108
- L: 67,
110
+ L: 65,
109
111
  S: void 0,
110
112
  C: (f, a) => f(...a)
111
113
  });
@@ -126,16 +128,11 @@ var DebugSettings = ({ settings }) => {
126
128
  });
127
129
  }
128
130
  };
129
- return /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement(DeprecatedFormInput, {
131
+ return /* @__PURE__ */ React2.createElement(DeprecatedFormContainer, null, /* @__PURE__ */ React2.createElement(DeprecatedFormInput, {
130
132
  label: t("settings show debug panel")
131
133
  }, /* @__PURE__ */ React2.createElement(Input2.Switch, {
132
134
  checked: settings.debug,
133
135
  onCheckedChange: (checked) => settings.debug = !!checked
134
- })), /* @__PURE__ */ React2.createElement(DeprecatedFormInput, {
135
- label: t("settings show devtools panel")
136
- }, /* @__PURE__ */ React2.createElement(Input2.Switch, {
137
- checked: settings.devtools,
138
- onCheckedChange: (checked) => settings.devtools = !!checked
139
136
  })), /* @__PURE__ */ React2.createElement(DeprecatedFormInput, {
140
137
  label: t("settings wireframe")
141
138
  }, /* @__PURE__ */ React2.createElement(Input2.Switch, {
@@ -145,17 +142,20 @@ var DebugSettings = ({ settings }) => {
145
142
  label: t("settings download diagnostics")
146
143
  }, /* @__PURE__ */ React2.createElement(Button, {
147
144
  onClick: handleDownload
148
- }, /* @__PURE__ */ React2.createElement(DownloadSimple, {
149
- className: getSize(5)
145
+ }, /* @__PURE__ */ React2.createElement(Icon, {
146
+ icon: "ph--download-simple--regular",
147
+ size: 5
150
148
  }))), /* @__PURE__ */ React2.createElement(DeprecatedFormInput, {
151
149
  label: t("settings repair")
152
150
  }, /* @__PURE__ */ React2.createElement(Button, {
153
151
  onClick: handleRepair
154
- }, /* @__PURE__ */ React2.createElement(FirstAidKit, {
155
- className: getSize(5)
156
- }))), toast && /* @__PURE__ */ React2.createElement(Toast.Root, null, /* @__PURE__ */ React2.createElement(Toast.Body, null, /* @__PURE__ */ React2.createElement(Toast.Title, null, /* @__PURE__ */ React2.createElement(Gift, {
157
- className: mx(getSize(5), "inline mr-1"),
158
- weight: "duotone"
152
+ }, /* @__PURE__ */ React2.createElement(Icon, {
153
+ icon: "ph--first-aid-kit--regular",
154
+ size: 5
155
+ }))), toast && /* @__PURE__ */ React2.createElement(Toast.Root, null, /* @__PURE__ */ React2.createElement(Toast.Body, null, /* @__PURE__ */ React2.createElement(Toast.Title, null, /* @__PURE__ */ React2.createElement(Icon, {
156
+ icon: "ph--gift--duotone",
157
+ size: 5,
158
+ classNames: "inline mr-1"
159
159
  }), /* @__PURE__ */ React2.createElement("span", null, toast.title)), toast.description && /* @__PURE__ */ React2.createElement(Toast.Description, null, toast.description))), /* @__PURE__ */ React2.createElement(DeprecatedFormInput, {
160
160
  label: t("settings choose storage adaptor")
161
161
  }, /* @__PURE__ */ React2.createElement(Select.Root, {
@@ -188,15 +188,14 @@ var updateConfig = (config, setConfig, path, value) => {
188
188
 
189
189
  // packages/plugins/plugin-debug/src/components/DebugStatus.tsx
190
190
  import React3, { useEffect as useEffect2, useRef, useState as useState2 } from "react";
191
- import { Capabilities as Capabilities2, firstIdInPart, useCapability } from "@dxos/app-framework";
191
+ import { useAppGraph, useLayout } from "@dxos/app-framework";
192
192
  import { TimeoutError } from "@dxos/async";
193
193
  import { StatsPanel, useStats } from "@dxos/devtools";
194
194
  import { getActiveSpace } from "@dxos/plugin-space";
195
195
  import { StatusBar } from "@dxos/plugin-status-bar";
196
196
  import { ConnectionState } from "@dxos/protocols/proto/dxos/client/services";
197
197
  import { useNetworkStatus } from "@dxos/react-client/mesh";
198
- import { Icon } from "@dxos/react-ui";
199
- import { mx as mx2 } from "@dxos/react-ui-theme";
198
+ import { Icon as Icon2, Popover } from "@dxos/react-ui";
200
199
  var styles = {
201
200
  success: "text-sky-300 dark:text-green-700",
202
201
  warning: "text-orange-300 dark:text-orange-600",
@@ -228,7 +227,7 @@ var ErrorIndicator = () => {
228
227
  return /* @__PURE__ */ React3.createElement(StatusBar.Button, {
229
228
  title: errorRef.current.message,
230
229
  onClick: handleReset
231
- }, /* @__PURE__ */ React3.createElement(Icon, {
230
+ }, /* @__PURE__ */ React3.createElement(Icon2, {
232
231
  icon: "ph--warning-circle--duotone",
233
232
  size: 4,
234
233
  classNames: styles.error
@@ -236,7 +235,7 @@ var ErrorIndicator = () => {
236
235
  } else {
237
236
  return /* @__PURE__ */ React3.createElement(StatusBar.Item, {
238
237
  title: "No errors."
239
- }, /* @__PURE__ */ React3.createElement(Icon, {
238
+ }, /* @__PURE__ */ React3.createElement(Icon2, {
240
239
  icon: "ph--check--regular",
241
240
  size: 4
242
241
  }));
@@ -253,14 +252,14 @@ var SwarmIndicator = () => {
253
252
  if (state === 0) {
254
253
  return /* @__PURE__ */ React3.createElement(StatusBar.Item, {
255
254
  title: "Connected to swarm."
256
- }, /* @__PURE__ */ React3.createElement(Icon, {
255
+ }, /* @__PURE__ */ React3.createElement(Icon2, {
257
256
  icon: "ph--lightning--regular",
258
257
  size: 4
259
258
  }));
260
259
  } else {
261
260
  return /* @__PURE__ */ React3.createElement(StatusBar.Item, {
262
261
  title: "Disconnected from swarm."
263
- }, /* @__PURE__ */ React3.createElement(Icon, {
262
+ }, /* @__PURE__ */ React3.createElement(Icon2, {
264
263
  icon: "ph--lightning-slash--regular",
265
264
  size: 4,
266
265
  classNames: styles.warning
@@ -269,14 +268,14 @@ var SwarmIndicator = () => {
269
268
  };
270
269
  var SavingIndicator = () => {
271
270
  const [state, _setState] = useState2(0);
272
- const location = useCapability(Capabilities2.Location);
273
- const { graph } = useCapability(Capabilities2.AppGraph);
274
- const _space = location && graph ? getActiveSpace(graph, firstIdInPart(location.active, "main")) : void 0;
271
+ const layout = useLayout();
272
+ const { graph } = useAppGraph();
273
+ const _space = graph ? getActiveSpace(graph, layout.active[0]) : void 0;
275
274
  switch (state) {
276
275
  case 2:
277
276
  return /* @__PURE__ */ React3.createElement(StatusBar.Item, {
278
277
  title: "Edit not saved."
279
- }, /* @__PURE__ */ React3.createElement(Icon, {
278
+ }, /* @__PURE__ */ React3.createElement(Icon2, {
280
279
  icon: "ph--circle--duotone",
281
280
  size: 4,
282
281
  classNames: styles.warning
@@ -284,7 +283,7 @@ var SavingIndicator = () => {
284
283
  case 1:
285
284
  return /* @__PURE__ */ React3.createElement(StatusBar.Item, {
286
285
  title: "Saving..."
287
- }, /* @__PURE__ */ React3.createElement(Icon, {
286
+ }, /* @__PURE__ */ React3.createElement(Icon2, {
288
287
  icon: "ph--circle--duotone",
289
288
  size: 4,
290
289
  classNames: styles.success
@@ -293,7 +292,7 @@ var SavingIndicator = () => {
293
292
  default:
294
293
  return /* @__PURE__ */ React3.createElement(StatusBar.Item, {
295
294
  title: "Modified indicator."
296
- }, /* @__PURE__ */ React3.createElement(Icon, {
295
+ }, /* @__PURE__ */ React3.createElement(Icon2, {
297
296
  icon: "ph--circle--duotone",
298
297
  size: 4
299
298
  }));
@@ -302,18 +301,23 @@ var SavingIndicator = () => {
302
301
  var PerformanceIndicator = () => {
303
302
  const [visible, setVisible] = useState2(false);
304
303
  const [stats, refreshStats] = useStats();
305
- return /* @__PURE__ */ React3.createElement(React3.Fragment, null, /* @__PURE__ */ React3.createElement(StatusBar.Button, {
304
+ return /* @__PURE__ */ React3.createElement(Popover.Root, {
305
+ open: visible,
306
+ onOpenChange: setVisible
307
+ }, /* @__PURE__ */ React3.createElement(Popover.Trigger, {
308
+ asChild: true
309
+ }, /* @__PURE__ */ React3.createElement(StatusBar.Button, {
306
310
  onClick: () => setVisible((visible2) => !visible2),
307
311
  title: "Performance panels"
308
- }, /* @__PURE__ */ React3.createElement(Icon, {
312
+ }, /* @__PURE__ */ React3.createElement(Icon2, {
309
313
  icon: "ph--chart-bar--regular",
310
314
  size: 4
311
- })), visible && /* @__PURE__ */ React3.createElement("div", {
312
- className: mx2("z-20 absolute bottom-[--statusbar-size] right-4 w-[450px]", "overflow-x-hidden overflow-y-auto scrollbar-thin", "border-x border-y border-separator")
315
+ }))), /* @__PURE__ */ React3.createElement(Popover.Portal, null, /* @__PURE__ */ React3.createElement(Popover.Content, {
316
+ classNames: "max-is-[min(var(--radix-popover-content-available-width),300px)] max-bs-[--radix-popover-content-available-height]"
313
317
  }, /* @__PURE__ */ React3.createElement(StatsPanel, {
314
318
  stats,
315
319
  onRefresh: refreshStats
316
- })));
320
+ }), /* @__PURE__ */ React3.createElement(Popover.Arrow, null))));
317
321
  };
318
322
  var indicators = [
319
323
  SavingIndicator,
@@ -333,13 +337,13 @@ import { useResizeDetector } from "react-resize-detector";
333
337
  import { fullyQualifiedId } from "@dxos/react-client/echo";
334
338
  import { useAttendableAttributes } from "@dxos/react-ui-attention";
335
339
  import { SyntaxHighlighter as SyntaxHighlighter2 } from "@dxos/react-ui-syntax-highlighter";
336
- import { mx as mx3 } from "@dxos/react-ui-theme";
340
+ import { mx } from "@dxos/react-ui-theme";
337
341
  var Wireframe = ({ classNames, label, object }) => {
338
342
  const attendableAttrs = useAttendableAttributes(fullyQualifiedId(object));
339
343
  const { width, height, ref } = useResizeDetector();
340
344
  return /* @__PURE__ */ React4.createElement("div", {
341
345
  ref,
342
- className: mx3("relative grow min-bs-96", classNames),
346
+ className: mx("relative grow min-bs-96", classNames),
343
347
  ...attendableAttrs
344
348
  }, /* @__PURE__ */ React4.createElement("div", {
345
349
  className: "absolute inset-2 flex flex-col gap-2 overflow-hidden font-mono"
@@ -376,45 +380,20 @@ var Wireframe = ({ classNames, label, object }) => {
376
380
 
377
381
  // packages/plugins/plugin-debug/src/components/index.ts
378
382
  var DebugApp = lazy(() => import("./DebugApp-LQHFFK3Y.mjs"));
379
- var DebugSpace = lazy(() => import("./DebugSpace-4JHYA7FG.mjs"));
380
- var SpaceGenerator = lazy(() => import("./SpaceGenerator-YNT3WDFI.mjs"));
383
+ var DebugSpace = lazy(() => import("./DebugSpace-BTMTVZ6C.mjs"));
384
+ var SpaceGenerator = lazy(() => import("./SpaceGenerator-BPZGOSH4.mjs"));
381
385
 
382
386
  // packages/plugins/plugin-debug/src/capabilities/react-surface.tsx
383
- var isSpaceDebug = (data) => data.type === `${DEBUG_PLUGIN}/space` && isSpace(data.space);
384
- var isGraphDebug = (data) => data.graph instanceof Graph;
385
- var react_surface_default = (context) => contributes(Capabilities3.ReactSurface, [
387
+ var isSpaceDebug = (data) => data?.type === `${DEBUG_PLUGIN}/space` && isSpace(data.space);
388
+ var isGraphDebug = (data) => data?.graph instanceof Graph;
389
+ var react_surface_default = (context) => contributes(Capabilities2.ReactSurface, [
386
390
  createSurface({
387
391
  id: `${DEBUG_PLUGIN}/settings`,
388
- role: "settings",
389
- filter: (data) => data.subject === DEBUG_PLUGIN,
390
- component: () => {
391
- const settings = useCapability2(Capabilities3.SettingsStore).getStore(DEBUG_PLUGIN).value;
392
- return /* @__PURE__ */ React5.createElement(DebugSettings, {
393
- settings
394
- });
395
- }
396
- }),
397
- createSurface({
398
- id: `${DEBUG_PLUGIN}/status`,
399
- role: "status",
400
- component: () => /* @__PURE__ */ React5.createElement(DebugStatus, null)
401
- }),
402
- createSurface({
403
- id: `${DEBUG_PLUGIN}/complementary`,
404
- role: "complementary--debug",
405
- filter: (data) => isEchoObject(data.subject),
406
- component: ({ data }) => /* @__PURE__ */ React5.createElement(DebugObjectPanel, {
407
- object: data.subject
408
- })
409
- }),
410
- createSurface({
411
- id: `${DEBUG_PLUGIN}/devtools`,
412
392
  role: "article",
413
- filter: (data) => {
414
- const settings = context.requestCapability(Capabilities3.SettingsStore).getStore(DEBUG_PLUGIN).value;
415
- return data.subject === "devtools" && !!settings.devtools;
416
- },
417
- component: () => /* @__PURE__ */ React5.createElement(Devtools, null)
393
+ filter: (data) => data.subject instanceof SettingsStore && data.subject.prefix === DEBUG_PLUGIN,
394
+ component: ({ data: { subject } }) => /* @__PURE__ */ React5.createElement(DebugSettings, {
395
+ settings: subject.value
396
+ })
418
397
  }),
419
398
  createSurface({
420
399
  id: `${DEBUG_PLUGIN}/space`,
@@ -429,7 +408,7 @@ var react_surface_default = (context) => contributes(Capabilities3.ReactSurface,
429
408
  if (!(collection instanceof CollectionType)) {
430
409
  return;
431
410
  }
432
- const { dispatchPromise: dispatch } = context.requestCapability(Capabilities3.IntentDispatcher);
411
+ const { dispatchPromise: dispatch } = context.requestCapability(Capabilities2.IntentDispatcher);
433
412
  objects.forEach((object) => {
434
413
  void dispatch(createIntent(SpaceAction.AddObject, {
435
414
  target: collection,
@@ -463,9 +442,9 @@ var react_surface_default = (context) => contributes(Capabilities3.ReactSurface,
463
442
  "article",
464
443
  "section"
465
444
  ],
466
- disposition: "hoist",
445
+ position: "hoist",
467
446
  filter: (data) => {
468
- const settings = context.requestCapability(Capabilities3.SettingsStore).getStore(DEBUG_PLUGIN).value;
447
+ const settings = context.requestCapability(Capabilities2.SettingsStore).getStore(DEBUG_PLUGIN).value;
469
448
  return isEchoObject(data.subject) && !!settings.wireframe;
470
449
  },
471
450
  component: ({ data, role }) => /* @__PURE__ */ React5.createElement(Wireframe, {
@@ -473,9 +452,190 @@ var react_surface_default = (context) => contributes(Capabilities3.ReactSurface,
473
452
  object: data.subject,
474
453
  classNames: "row-span-2 overflow-hidden"
475
454
  })
455
+ }),
456
+ createSurface({
457
+ id: `${DEBUG_PLUGIN}/complementary`,
458
+ role: "complementary--debug",
459
+ filter: (data) => isEchoObject(data.subject),
460
+ component: ({ data }) => /* @__PURE__ */ React5.createElement(DebugObjectPanel, {
461
+ object: data.subject
462
+ })
463
+ }),
464
+ createSurface({
465
+ id: `${DEBUG_PLUGIN}/status`,
466
+ role: "status",
467
+ component: () => /* @__PURE__ */ React5.createElement(DebugStatus, null)
468
+ }),
469
+ //
470
+ // Devtools
471
+ //
472
+ createSurface({
473
+ id: `${DEBUG_PLUGIN}/client/config`,
474
+ role: "article",
475
+ filter: (data) => data.subject === Devtools.Client.Config,
476
+ component: () => /* @__PURE__ */ React5.createElement(ConfigPanel, null)
477
+ }),
478
+ createSurface({
479
+ id: `${DEBUG_PLUGIN}/client/storage`,
480
+ role: "article",
481
+ filter: (data) => data.subject === Devtools.Client.Storage,
482
+ component: () => /* @__PURE__ */ React5.createElement(StoragePanel, null)
483
+ }),
484
+ createSurface({
485
+ id: `${DEBUG_PLUGIN}/client/logs`,
486
+ role: "article",
487
+ filter: (data) => data.subject === Devtools.Client.Logs,
488
+ component: () => /* @__PURE__ */ React5.createElement(LoggingPanel, null)
489
+ }),
490
+ createSurface({
491
+ id: `${DEBUG_PLUGIN}/client/diagnostics`,
492
+ role: "article",
493
+ filter: (data) => data.subject === Devtools.Client.Diagnostics,
494
+ component: () => /* @__PURE__ */ React5.createElement(DiagnosticsPanel, null)
495
+ }),
496
+ createSurface({
497
+ id: `${DEBUG_PLUGIN}/client/tracing`,
498
+ role: "article",
499
+ filter: (data) => data.subject === Devtools.Client.Tracing,
500
+ component: () => /* @__PURE__ */ React5.createElement(TracingPanel, null)
501
+ }),
502
+ createSurface({
503
+ id: `${DEBUG_PLUGIN}/halo/identity`,
504
+ role: "article",
505
+ filter: (data) => data.subject === Devtools.Halo.Identity,
506
+ component: () => /* @__PURE__ */ React5.createElement(IdentityPanel, null)
507
+ }),
508
+ createSurface({
509
+ id: `${DEBUG_PLUGIN}/halo/devices`,
510
+ role: "article",
511
+ filter: (data) => data.subject === Devtools.Halo.Devices,
512
+ component: () => /* @__PURE__ */ React5.createElement(DeviceListPanel, null)
513
+ }),
514
+ createSurface({
515
+ id: `${DEBUG_PLUGIN}/halo/keyring`,
516
+ role: "article",
517
+ filter: (data) => data.subject === Devtools.Halo.Keyring,
518
+ component: () => /* @__PURE__ */ React5.createElement(KeyringPanel, null)
519
+ }),
520
+ createSurface({
521
+ id: `${DEBUG_PLUGIN}/halo/credentials`,
522
+ role: "article",
523
+ filter: (data) => data.subject === Devtools.Halo.Credentials,
524
+ component: () => /* @__PURE__ */ React5.createElement(CredentialsPanel, null)
525
+ }),
526
+ createSurface({
527
+ id: `${DEBUG_PLUGIN}/echo/spaces`,
528
+ role: "article",
529
+ filter: (data) => data.subject === Devtools.Echo.Spaces,
530
+ component: () => {
531
+ const { dispatchPromise: dispatch } = context.requestCapability(Capabilities2.IntentDispatcher);
532
+ const handleSelect = useCallback(() => dispatch(createIntent(LayoutAction.Open, {
533
+ part: "main",
534
+ subject: [
535
+ Devtools.Echo.Space
536
+ ]
537
+ })), [
538
+ dispatch
539
+ ]);
540
+ return /* @__PURE__ */ React5.createElement(SpaceListPanel, {
541
+ onSelect: handleSelect
542
+ });
543
+ }
544
+ }),
545
+ createSurface({
546
+ id: `${DEBUG_PLUGIN}/echo/space`,
547
+ role: "article",
548
+ filter: (data) => data.subject === Devtools.Echo.Space,
549
+ component: () => {
550
+ const { dispatchPromise: dispatch } = context.requestCapability(Capabilities2.IntentDispatcher);
551
+ const handleSelect = useCallback(() => dispatch(createIntent(LayoutAction.Open, {
552
+ part: "main",
553
+ subject: [
554
+ Devtools.Echo.Feeds
555
+ ]
556
+ })), [
557
+ dispatch
558
+ ]);
559
+ return /* @__PURE__ */ React5.createElement(SpaceInfoPanel, {
560
+ onSelectFeed: handleSelect,
561
+ onSelectPipeline: handleSelect
562
+ });
563
+ }
564
+ }),
565
+ createSurface({
566
+ id: `${DEBUG_PLUGIN}/echo/feeds`,
567
+ role: "article",
568
+ filter: (data) => data.subject === Devtools.Echo.Feeds,
569
+ component: () => /* @__PURE__ */ React5.createElement(FeedsPanel, null)
570
+ }),
571
+ createSurface({
572
+ id: `${DEBUG_PLUGIN}/echo/objects`,
573
+ role: "article",
574
+ filter: (data) => data.subject === Devtools.Echo.Objects,
575
+ component: () => /* @__PURE__ */ React5.createElement(ObjectsPanel, null)
576
+ }),
577
+ createSurface({
578
+ id: `${DEBUG_PLUGIN}/echo/automerge`,
579
+ role: "article",
580
+ filter: (data) => data.subject === Devtools.Echo.Automerge,
581
+ component: () => /* @__PURE__ */ React5.createElement(AutomergePanel, null)
582
+ }),
583
+ createSurface({
584
+ id: `${DEBUG_PLUGIN}/echo/members`,
585
+ role: "article",
586
+ filter: (data) => data.subject === Devtools.Echo.Members,
587
+ component: () => /* @__PURE__ */ React5.createElement(MembersPanel, null)
588
+ }),
589
+ createSurface({
590
+ id: `${DEBUG_PLUGIN}/echo/metadata`,
591
+ role: "article",
592
+ filter: (data) => data.subject === Devtools.Echo.Metadata,
593
+ component: () => /* @__PURE__ */ React5.createElement(MetadataPanel, null)
594
+ }),
595
+ createSurface({
596
+ id: `${DEBUG_PLUGIN}/mesh/signal`,
597
+ role: "article",
598
+ filter: (data) => data.subject === Devtools.Mesh.Signal,
599
+ component: () => /* @__PURE__ */ React5.createElement(SignalPanel, null)
600
+ }),
601
+ createSurface({
602
+ id: `${DEBUG_PLUGIN}/mesh/swarm`,
603
+ role: "article",
604
+ filter: (data) => data.subject === Devtools.Mesh.Swarm,
605
+ component: () => /* @__PURE__ */ React5.createElement(SwarmPanel, null)
606
+ }),
607
+ createSurface({
608
+ id: `${DEBUG_PLUGIN}/mesh/network`,
609
+ role: "article",
610
+ filter: (data) => data.subject === Devtools.Mesh.Network,
611
+ component: () => /* @__PURE__ */ React5.createElement(NetworkPanel, null)
612
+ }),
613
+ createSurface({
614
+ id: `${DEBUG_PLUGIN}/agent/dashboard`,
615
+ role: "article",
616
+ filter: (data) => data.subject === Devtools.Agent.Dashboard,
617
+ component: () => /* @__PURE__ */ React5.createElement(DashboardPanel, null)
618
+ }),
619
+ createSurface({
620
+ id: `${DEBUG_PLUGIN}/agent/search`,
621
+ role: "article",
622
+ filter: (data) => data.subject === Devtools.Agent.Search,
623
+ component: () => /* @__PURE__ */ React5.createElement(SearchPanel, null)
624
+ }),
625
+ createSurface({
626
+ id: `${DEBUG_PLUGIN}/edge/dashboard`,
627
+ role: "article",
628
+ filter: (data) => data.subject === Devtools.Edge.Dashboard,
629
+ component: () => /* @__PURE__ */ React5.createElement(EdgeDashboardPanel, null)
630
+ }),
631
+ createSurface({
632
+ id: `${DEBUG_PLUGIN}/edge/workflows`,
633
+ role: "article",
634
+ filter: (data) => data.subject === Devtools.Edge.Workflows,
635
+ component: () => /* @__PURE__ */ React5.createElement(WorkflowPanel, null)
476
636
  })
477
637
  ]);
478
638
  export {
479
639
  react_surface_default as default
480
640
  };
481
- //# sourceMappingURL=react-surface-ACHNR2UU.mjs.map
641
+ //# sourceMappingURL=react-surface-W6QLG4YJ.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/react-surface.tsx", "../../../src/components/index.ts", "../../../src/components/DebugObjectPanel.tsx", "../../../src/components/DebugSettings.tsx", "../../../src/components/DebugStatus.tsx", "../../../src/components/Wireframe.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback } from 'react';\n\nimport {\n Capabilities,\n contributes,\n createIntent,\n createSurface,\n LayoutAction,\n type PluginsContext,\n} from '@dxos/app-framework';\nimport {\n ConfigPanel,\n CredentialsPanel,\n DeviceListPanel,\n DiagnosticsPanel,\n FeedsPanel,\n IdentityPanel,\n KeyringPanel,\n LoggingPanel,\n MembersPanel,\n MetadataPanel,\n NetworkPanel,\n ObjectsPanel,\n SignalPanel,\n SpaceInfoPanel,\n SpaceListPanel,\n StoragePanel,\n SwarmPanel,\n TracingPanel,\n DashboardPanel,\n EdgeDashboardPanel,\n SearchPanel,\n AutomergePanel,\n WorkflowPanel,\n} from '@dxos/devtools';\nimport { SettingsStore } from '@dxos/local-storage';\nimport { Graph } from '@dxos/plugin-graph';\nimport { SpaceAction, CollectionType } from '@dxos/plugin-space/types';\nimport {\n SpaceState,\n isSpace,\n isEchoObject,\n type ReactiveEchoObject,\n type ReactiveObject,\n type Space,\n} from '@dxos/react-client/echo';\n\nimport {\n DebugApp,\n DebugObjectPanel,\n DebugSettings,\n DebugSpace,\n DebugStatus,\n SpaceGenerator,\n Wireframe,\n} from '../components';\nimport { DEBUG_PLUGIN } from '../meta';\nimport { type DebugSettingsProps, Devtools } from '../types';\n\ntype SpaceDebug = {\n type: string;\n space: Space;\n};\n\ntype GraphDebug = {\n graph: Graph;\n};\n\nconst isSpaceDebug = (data: any): data is SpaceDebug => data?.type === `${DEBUG_PLUGIN}/space` && isSpace(data.space);\nconst isGraphDebug = (data: any): data is GraphDebug => data?.graph instanceof Graph;\n\nexport default (context: PluginsContext) =>\n contributes(Capabilities.ReactSurface, [\n createSurface({\n id: `${DEBUG_PLUGIN}/settings`,\n role: 'article',\n filter: (data): data is { subject: SettingsStore<DebugSettingsProps> } =>\n data.subject instanceof SettingsStore && data.subject.prefix === DEBUG_PLUGIN,\n component: ({ data: { subject } }) => <DebugSettings settings={subject.value} />,\n }),\n createSurface({\n id: `${DEBUG_PLUGIN}/space`,\n role: 'article',\n filter: (data): data is { subject: SpaceDebug } => isSpaceDebug(data.subject),\n component: ({ data }) => {\n const handleCreateObject = useCallback(\n (objects: ReactiveObject<any>[]) => {\n if (!isSpace(data.subject.space)) {\n return;\n }\n\n const collection =\n data.subject.space.state.get() === SpaceState.SPACE_READY &&\n data.subject.space.properties[CollectionType.typename]?.target;\n if (!(collection instanceof CollectionType)) {\n return;\n }\n\n const { dispatchPromise: dispatch } = context.requestCapability(Capabilities.IntentDispatcher);\n objects.forEach((object) => {\n void dispatch(createIntent(SpaceAction.AddObject, { target: collection, object }));\n });\n },\n [data.subject.space],\n );\n\n const deprecated = false;\n return deprecated ? (\n <DebugSpace space={data.subject.space} onAddObjects={handleCreateObject} />\n ) : (\n <SpaceGenerator space={data.subject.space} onCreateObjects={handleCreateObject} />\n );\n },\n }),\n createSurface({\n id: `${DEBUG_PLUGIN}/graph`,\n role: 'article',\n filter: (data): data is { subject: GraphDebug } => isGraphDebug(data.subject),\n component: ({ data }) => <DebugApp graph={data.subject.graph} />,\n }),\n createSurface({\n id: `${DEBUG_PLUGIN}/wireframe`,\n role: ['article', 'section'],\n position: 'hoist',\n filter: (data): data is { subject: ReactiveEchoObject<any> } => {\n const settings = context\n .requestCapability(Capabilities.SettingsStore)\n .getStore<DebugSettingsProps>(DEBUG_PLUGIN)!.value;\n return isEchoObject(data.subject) && !!settings.wireframe;\n },\n component: ({ data, role }) => (\n <Wireframe label={`${role}:${name}`} object={data.subject} classNames='row-span-2 overflow-hidden' />\n ),\n }),\n createSurface({\n id: `${DEBUG_PLUGIN}/complementary`,\n role: 'complementary--debug',\n filter: (data): data is { subject: ReactiveEchoObject<any> } => isEchoObject(data.subject),\n component: ({ data }) => <DebugObjectPanel object={data.subject} />,\n }),\n createSurface({\n id: `${DEBUG_PLUGIN}/status`,\n role: 'status',\n component: () => <DebugStatus />,\n }),\n\n //\n // Devtools\n //\n\n createSurface({\n id: `${DEBUG_PLUGIN}/client/config`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Client.Config,\n component: () => <ConfigPanel />,\n }),\n createSurface({\n id: `${DEBUG_PLUGIN}/client/storage`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Client.Storage,\n component: () => <StoragePanel />,\n }),\n createSurface({\n id: `${DEBUG_PLUGIN}/client/logs`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Client.Logs,\n component: () => <LoggingPanel />,\n }),\n createSurface({\n id: `${DEBUG_PLUGIN}/client/diagnostics`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Client.Diagnostics,\n component: () => <DiagnosticsPanel />,\n }),\n createSurface({\n id: `${DEBUG_PLUGIN}/client/tracing`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Client.Tracing,\n component: () => <TracingPanel />,\n }),\n createSurface({\n id: `${DEBUG_PLUGIN}/halo/identity`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Halo.Identity,\n component: () => <IdentityPanel />,\n }),\n createSurface({\n id: `${DEBUG_PLUGIN}/halo/devices`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Halo.Devices,\n component: () => <DeviceListPanel />,\n }),\n createSurface({\n id: `${DEBUG_PLUGIN}/halo/keyring`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Halo.Keyring,\n component: () => <KeyringPanel />,\n }),\n createSurface({\n id: `${DEBUG_PLUGIN}/halo/credentials`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Halo.Credentials,\n component: () => <CredentialsPanel />,\n }),\n createSurface({\n id: `${DEBUG_PLUGIN}/echo/spaces`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Echo.Spaces,\n component: () => {\n const { dispatchPromise: dispatch } = context.requestCapability(Capabilities.IntentDispatcher);\n const handleSelect = useCallback(\n () => dispatch(createIntent(LayoutAction.Open, { part: 'main', subject: [Devtools.Echo.Space] })),\n [dispatch],\n );\n return <SpaceListPanel onSelect={handleSelect} />;\n },\n }),\n createSurface({\n id: `${DEBUG_PLUGIN}/echo/space`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Echo.Space,\n component: () => {\n const { dispatchPromise: dispatch } = context.requestCapability(Capabilities.IntentDispatcher);\n const handleSelect = useCallback(\n () => dispatch(createIntent(LayoutAction.Open, { part: 'main', subject: [Devtools.Echo.Feeds] })),\n [dispatch],\n );\n return <SpaceInfoPanel onSelectFeed={handleSelect} onSelectPipeline={handleSelect} />;\n },\n }),\n createSurface({\n id: `${DEBUG_PLUGIN}/echo/feeds`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Echo.Feeds,\n component: () => <FeedsPanel />,\n }),\n createSurface({\n id: `${DEBUG_PLUGIN}/echo/objects`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Echo.Objects,\n component: () => <ObjectsPanel />,\n }),\n createSurface({\n id: `${DEBUG_PLUGIN}/echo/automerge`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Echo.Automerge,\n component: () => <AutomergePanel />,\n }),\n createSurface({\n id: `${DEBUG_PLUGIN}/echo/members`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Echo.Members,\n component: () => <MembersPanel />,\n }),\n createSurface({\n id: `${DEBUG_PLUGIN}/echo/metadata`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Echo.Metadata,\n component: () => <MetadataPanel />,\n }),\n createSurface({\n id: `${DEBUG_PLUGIN}/mesh/signal`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Mesh.Signal,\n component: () => <SignalPanel />,\n }),\n createSurface({\n id: `${DEBUG_PLUGIN}/mesh/swarm`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Mesh.Swarm,\n component: () => <SwarmPanel />,\n }),\n createSurface({\n id: `${DEBUG_PLUGIN}/mesh/network`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Mesh.Network,\n component: () => <NetworkPanel />,\n }),\n createSurface({\n id: `${DEBUG_PLUGIN}/agent/dashboard`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Agent.Dashboard,\n component: () => <DashboardPanel />,\n }),\n createSurface({\n id: `${DEBUG_PLUGIN}/agent/search`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Agent.Search,\n component: () => <SearchPanel />,\n }),\n createSurface({\n id: `${DEBUG_PLUGIN}/edge/dashboard`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Edge.Dashboard,\n component: () => <EdgeDashboardPanel />,\n }),\n createSurface({\n id: `${DEBUG_PLUGIN}/edge/workflows`,\n role: 'article',\n filter: (data): data is any => data.subject === Devtools.Edge.Workflows,\n component: () => <WorkflowPanel />,\n }),\n ]);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { lazy } from 'react';\n\nexport const DebugApp = lazy(() => import('./DebugApp'));\nexport const DebugSpace = lazy(() => import('./DebugSpace'));\nexport const SpaceGenerator = lazy(() => import('./SpaceGenerator'));\n\nexport * from './DebugObjectPanel';\nexport * from './DebugSettings';\nexport * from './DebugStatus';\nexport * from './Wireframe';\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type ReactiveEchoObject } from '@dxos/client/echo';\nimport { Clipboard, Input } from '@dxos/react-ui';\nimport { SyntaxHighlighter } from '@dxos/react-ui-syntax-highlighter';\n\nexport type DebugObjectPanelProps = {\n object: ReactiveEchoObject<any>;\n};\n\n// TODO(burdon): Get schema and traverse references.\nexport const DebugObjectPanel = ({ object }: DebugObjectPanelProps) => {\n const dxn = `dxn:echo:@:${object.id}`;\n return (\n <Clipboard.Provider>\n <div className='flex flex-col'>\n <Input.Root>\n <div role='none' className='flex flex-col gap-1'>\n <div role='none' className='flex gap-1'>\n <Input.TextInput disabled value={dxn} />\n <Clipboard.IconButton value={dxn} />\n </div>\n </div>\n </Input.Root>\n <SyntaxHighlighter classNames='flex text-xs' language='json'>\n {JSON.stringify(object, null, 2)}\n </SyntaxHighlighter>\n </div>\n </Clipboard.Provider>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useEffect, useState } from 'react';\n\nimport { Capabilities, useCapabilities } from '@dxos/app-framework';\nimport { type ConfigProto, defs, SaveConfig, Storage } from '@dxos/config';\nimport { log } from '@dxos/log';\nimport { useClient } from '@dxos/react-client';\nimport { useTranslation, Button, Toast, Input, useFileDownload, Select, Icon } from '@dxos/react-ui';\nimport { DeprecatedFormContainer, DeprecatedFormInput } from '@dxos/react-ui-form';\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 [upload] = useCapabilities(Capabilities.FileUploader);\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 (upload) {\n const info = await 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 <DeprecatedFormContainer>\n <DeprecatedFormInput label={t('settings show debug panel')}>\n <Input.Switch checked={settings.debug} onCheckedChange={(checked) => (settings.debug = !!checked)} />\n </DeprecatedFormInput>\n <DeprecatedFormInput label={t('settings wireframe')}>\n <Input.Switch checked={settings.wireframe} onCheckedChange={(checked) => (settings.wireframe = !!checked)} />\n </DeprecatedFormInput>\n <DeprecatedFormInput label={t('settings download diagnostics')}>\n <Button onClick={handleDownload}>\n <Icon icon='ph--download-simple--regular' size={5} />\n </Button>\n </DeprecatedFormInput>\n <DeprecatedFormInput label={t('settings repair')}>\n <Button onClick={handleRepair}>\n <Icon icon='ph--first-aid-kit--regular' size={5} />\n </Button>\n </DeprecatedFormInput>\n\n {/* TODO(burdon): Move to layout? */}\n {toast && (\n <Toast.Root>\n <Toast.Body>\n <Toast.Title>\n <Icon icon='ph--gift--duotone' size={5} classNames='inline mr-1' />\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 <DeprecatedFormInput 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 </DeprecatedFormInput>\n </DeprecatedFormContainer>\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 React, { useEffect, useRef, useState } from 'react';\n\nimport { useAppGraph, useLayout } from '@dxos/app-framework';\nimport { TimeoutError } from '@dxos/async';\nimport { StatsPanel, useStats } from '@dxos/devtools';\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 { Icon, Popover } from '@dxos/react-ui';\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 if (errorRef.current !== error) {\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 <Icon icon='ph--warning-circle--duotone' size={4} classNames={styles.error} />\n </StatusBar.Button>\n );\n } else {\n return (\n <StatusBar.Item title='No errors.'>\n <Icon icon='ph--check--regular' size={4} />\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 <Icon icon='ph--lightning--regular' size={4} />\n </StatusBar.Item>\n );\n } else {\n return (\n <StatusBar.Item title='Disconnected from swarm.'>\n <Icon icon='ph--lightning-slash--regular' size={4} classNames={styles.warning} />\n </StatusBar.Item>\n );\n }\n};\n\n/**\n * Data saving indicator.\n */\n// TODO(burdon): Merge with SaveStatus.\nconst SavingIndicator = () => {\n const [state, _setState] = useState(0);\n const layout = useLayout();\n const { graph } = useAppGraph();\n const _space = graph ? getActiveSpace(graph, layout.active[0]) : 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 <Icon icon='ph--circle--duotone' size={4} classNames={styles.warning} />\n </StatusBar.Item>\n );\n case 1:\n return (\n <StatusBar.Item title='Saving...'>\n <Icon icon='ph--circle--duotone' size={4} classNames={styles.success} />\n </StatusBar.Item>\n );\n case 0:\n default:\n return (\n <StatusBar.Item title='Modified indicator.'>\n <Icon icon='ph--circle--duotone' size={4} />\n </StatusBar.Item>\n );\n }\n};\n\nconst PerformanceIndicator = () => {\n const [visible, setVisible] = useState(false);\n const [stats, refreshStats] = useStats();\n\n return (\n <Popover.Root open={visible} onOpenChange={setVisible}>\n <Popover.Trigger asChild>\n <StatusBar.Button onClick={() => setVisible((visible) => !visible)} title='Performance panels'>\n <Icon icon='ph--chart-bar--regular' size={4} />\n </StatusBar.Button>\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content classNames='max-is-[min(var(--radix-popover-content-available-width),300px)] max-bs-[--radix-popover-content-available-height]'>\n <StatsPanel stats={stats} onRefresh={refreshStats} />\n <Popover.Arrow />\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n );\n};\n\nconst indicators = [SavingIndicator, SwarmIndicator, PerformanceIndicator, ErrorIndicator];\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 { fullyQualifiedId, type ReactiveEchoObject } from '@dxos/react-client/echo';\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { useAttendableAttributes } from '@dxos/react-ui-attention';\nimport { SyntaxHighlighter } from '@dxos/react-ui-syntax-highlighter';\nimport { mx } from '@dxos/react-ui-theme';\n\n// TODO(burdon): Create generic container with wireframe mode.\nexport type WireframeProps = ThemedClassName<{\n label?: string;\n object: ReactiveEchoObject<any>;\n}>;\n\n// TODO(burdon): Make focusable and attendable with input.\nexport const Wireframe = ({ classNames, label, object }: WireframeProps) => {\n const attendableAttrs = useAttendableAttributes(fullyQualifiedId(object));\n const { width, height, ref } = useResizeDetector();\n return (\n <div ref={ref} className={mx('relative grow min-bs-96', classNames)} {...attendableAttrs}>\n <div className='absolute inset-2 flex flex-col gap-2 overflow-hidden font-mono'>\n <div className='flex justify-between'>\n <div>{label}</div>\n <div>{`[${width}x${height}]`}</div>\n </div>\n {object && (\n <SyntaxHighlighter language='json' classNames='flex w-full text-xs opacity-75 rounded'>\n {JSON.stringify(object, undefined, 2)}\n </SyntaxHighlighter>\n )}\n </div>\n <svg width={width} height={height} className='bg-transparent [&>*]:text-subdued'>\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"],
5
+ "mappings": "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",
6
+ "names": ["React", "useCallback", "Capabilities", "contributes", "createIntent", "createSurface", "LayoutAction", "ConfigPanel", "CredentialsPanel", "DeviceListPanel", "DiagnosticsPanel", "FeedsPanel", "IdentityPanel", "KeyringPanel", "LoggingPanel", "MembersPanel", "MetadataPanel", "NetworkPanel", "ObjectsPanel", "SignalPanel", "SpaceInfoPanel", "SpaceListPanel", "StoragePanel", "SwarmPanel", "TracingPanel", "DashboardPanel", "EdgeDashboardPanel", "SearchPanel", "AutomergePanel", "WorkflowPanel", "SettingsStore", "Graph", "SpaceAction", "CollectionType", "SpaceState", "isSpace", "isEchoObject", "lazy", "React", "Clipboard", "Input", "SyntaxHighlighter", "DebugObjectPanel", "object", "dxn", "id", "Clipboard", "Provider", "div", "className", "Input", "Root", "role", "TextInput", "disabled", "value", "IconButton", "SyntaxHighlighter", "classNames", "language", "JSON", "stringify", "React", "useEffect", "useState", "Capabilities", "useCapabilities", "defs", "SaveConfig", "Storage", "log", "useClient", "useTranslation", "Button", "Toast", "Input", "useFileDownload", "Select", "Icon", "DeprecatedFormContainer", "DeprecatedFormInput", "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", "upload", "useCapabilities", "Capabilities", "FileUploader", "useEffect", "then", "config", "handleToast", "setTimeout", "undefined", "clearTimeout", "handleDownload", "data", "diagnostics", "file", "Blob", "JSON", "stringify", "type", "fileName", "Date", "toISOString", "replace", "info", "File", "spaces", "default", "log", "error", "title", "description", "url", "values", "runtime", "services", "ipfs", "gateway", "cid", "navigator", "clipboard", "writeText", "handleRepair", "repair", "err", "message", "React", "DeprecatedFormContainer", "DeprecatedFormInput", "label", "Input", "Switch", "checked", "debug", "onCheckedChange", "wireframe", "Button", "onClick", "Icon", "icon", "size", "Toast", "Root", "Body", "Title", "classNames", "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", "React", "useEffect", "useRef", "useState", "useAppGraph", "useLayout", "TimeoutError", "StatsPanel", "useStats", "getActiveSpace", "StatusBar", "ConnectionState", "useNetworkStatus", "Icon", "Popover", "styles", "success", "warning", "error", "ErrorIndicator", "forceUpdate", "useState", "errorRef", "useRef", "useEffect", "errorListener", "event", "error", "reason", "current", "window", "addEventListener", "removeEventListener", "handleReset", "undefined", "React", "StatusBar", "Button", "title", "message", "onClick", "Icon", "icon", "size", "classNames", "styles", "Item", "SwarmIndicator", "state", "setState", "swarm", "useNetworkStatus", "ConnectionState", "ONLINE", "warning", "SavingIndicator", "_setState", "layout", "useLayout", "graph", "useAppGraph", "_space", "getActiveSpace", "active", "success", "PerformanceIndicator", "visible", "setVisible", "stats", "refreshStats", "useStats", "Popover", "Root", "open", "onOpenChange", "Trigger", "asChild", "Portal", "Content", "StatsPanel", "onRefresh", "Arrow", "indicators", "DebugStatus", "map", "Indicator", "key", "name", "React", "useResizeDetector", "fullyQualifiedId", "useAttendableAttributes", "SyntaxHighlighter", "mx", "Wireframe", "classNames", "label", "object", "attendableAttrs", "useAttendableAttributes", "fullyQualifiedId", "width", "height", "ref", "useResizeDetector", "React", "div", "className", "mx", "SyntaxHighlighter", "language", "JSON", "stringify", "undefined", "svg", "rect", "x", "y", "strokeWidth", "fill", "line", "x1", "y1", "x2", "y2", "DebugApp", "lazy", "DebugSpace", "SpaceGenerator", "isSpaceDebug", "data", "type", "DEBUG_PLUGIN", "isSpace", "space", "isGraphDebug", "graph", "Graph", "context", "contributes", "Capabilities", "ReactSurface", "createSurface", "id", "role", "filter", "subject", "SettingsStore", "prefix", "component", "React", "DebugSettings", "settings", "value", "handleCreateObject", "useCallback", "objects", "collection", "state", "get", "SpaceState", "SPACE_READY", "properties", "CollectionType", "typename", "target", "dispatchPromise", "dispatch", "requestCapability", "IntentDispatcher", "forEach", "object", "createIntent", "SpaceAction", "AddObject", "deprecated", "DebugSpace", "onAddObjects", "SpaceGenerator", "onCreateObjects", "DebugApp", "position", "getStore", "isEchoObject", "wireframe", "Wireframe", "label", "name", "classNames", "DebugObjectPanel", "DebugStatus", "Devtools", "Client", "Config", "ConfigPanel", "Storage", "StoragePanel", "Logs", "LoggingPanel", "Diagnostics", "DiagnosticsPanel", "Tracing", "TracingPanel", "Halo", "Identity", "IdentityPanel", "Devices", "DeviceListPanel", "Keyring", "KeyringPanel", "Credentials", "CredentialsPanel", "Echo", "Spaces", "handleSelect", "LayoutAction", "Open", "part", "Space", "SpaceListPanel", "onSelect", "Feeds", "SpaceInfoPanel", "onSelectFeed", "onSelectPipeline", "FeedsPanel", "Objects", "ObjectsPanel", "Automerge", "AutomergePanel", "Members", "MembersPanel", "Metadata", "MetadataPanel", "Mesh", "Signal", "SignalPanel", "Swarm", "SwarmPanel", "Network", "NetworkPanel", "Agent", "Dashboard", "DashboardPanel", "Search", "SearchPanel", "Edge", "EdgeDashboardPanel", "Workflows", "WorkflowPanel"]
7
+ }