@dxos/plugin-debug 0.8.4-main.3eb6e50203 → 0.8.4-main.4a85c3132b

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 (126) hide show
  1. package/dist/lib/browser/{DebugGraph-6VMEOKEV.mjs → DebugGraph-7HXJ2PS2.mjs} +4 -3
  2. package/dist/lib/browser/{DebugGraph-6VMEOKEV.mjs.map → DebugGraph-7HXJ2PS2.mjs.map} +4 -4
  3. package/dist/lib/browser/DebugObjectPanel-3TCDNUNW.mjs +33 -0
  4. package/dist/lib/browser/DebugObjectPanel-3TCDNUNW.mjs.map +7 -0
  5. package/dist/lib/browser/DebugSettings-JZMIUDYB.mjs +174 -0
  6. package/dist/lib/browser/DebugSettings-JZMIUDYB.mjs.map +7 -0
  7. package/dist/lib/browser/DebugSpaceObjectsPanel-7NRPLWZ4.mjs +50 -0
  8. package/dist/lib/browser/DebugSpaceObjectsPanel-7NRPLWZ4.mjs.map +7 -0
  9. package/dist/lib/browser/DebugStatus-COQGH37G.mjs +125 -0
  10. package/dist/lib/browser/DebugStatus-COQGH37G.mjs.map +7 -0
  11. package/dist/lib/browser/{DevtoolsOverviewContainer-2C6XMJ3L.mjs → DevtoolsOverviewContainer-C75NFVER.mjs} +4 -3
  12. package/dist/lib/browser/{DevtoolsOverviewContainer-2C6XMJ3L.mjs.map → DevtoolsOverviewContainer-C75NFVER.mjs.map} +4 -4
  13. package/dist/lib/browser/{SpaceGenerator-W3LJORYT.mjs → SpaceGenerator-SWSGJEEL.mjs} +293 -271
  14. package/dist/lib/browser/SpaceGenerator-SWSGJEEL.mjs.map +7 -0
  15. package/dist/lib/browser/Wireframe-KAGOKEFW.mjs +53 -0
  16. package/dist/lib/browser/Wireframe-KAGOKEFW.mjs.map +7 -0
  17. package/dist/lib/browser/{app-graph-builder-DEBTVBQG.mjs → app-graph-builder-LGUQNXHD.mjs} +28 -2
  18. package/dist/lib/browser/{app-graph-builder-DEBTVBQG.mjs.map → app-graph-builder-LGUQNXHD.mjs.map} +2 -2
  19. package/dist/lib/browser/index.mjs +12 -6
  20. package/dist/lib/browser/index.mjs.map +3 -3
  21. package/dist/lib/browser/meta.json +1 -1
  22. package/dist/lib/browser/react-surface-BTVNKKVQ.mjs +443 -0
  23. package/dist/lib/browser/react-surface-BTVNKKVQ.mjs.map +7 -0
  24. package/dist/types/src/DebugPlugin.d.ts +6 -1
  25. package/dist/types/src/DebugPlugin.d.ts.map +1 -1
  26. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +1 -1
  27. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -1
  28. package/dist/types/src/capabilities/react-context/react-context.d.ts +1 -1
  29. package/dist/types/src/capabilities/react-surface/index.d.ts +3 -1
  30. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -1
  31. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +5 -1
  32. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -1
  33. package/dist/types/src/capabilities/settings/settings.d.ts +1 -1
  34. package/dist/types/src/components/SchemaTable/SchemaTable.d.ts.map +1 -0
  35. package/dist/types/src/components/SchemaTable/index.d.ts +2 -0
  36. package/dist/types/src/components/SchemaTable/index.d.ts.map +1 -0
  37. package/dist/types/src/components/SpaceGenerator/ObjectGenerator.d.ts +1 -1
  38. package/dist/types/src/components/SpaceGenerator/ObjectGenerator.d.ts.map +1 -1
  39. package/dist/types/src/components/SpaceGenerator/index.d.ts +2 -2
  40. package/dist/types/src/components/SpaceGenerator/index.d.ts.map +1 -1
  41. package/dist/types/src/components/SpaceGenerator/presets.d.ts.map +1 -1
  42. package/dist/types/src/components/index.d.ts +2 -10
  43. package/dist/types/src/components/index.d.ts.map +1 -1
  44. package/dist/types/src/{components → containers/DebugGraph}/DebugGraph.d.ts +0 -1
  45. package/dist/types/src/containers/DebugGraph/DebugGraph.d.ts.map +1 -0
  46. package/dist/types/src/containers/DebugGraph/index.d.ts +3 -0
  47. package/dist/types/src/containers/DebugGraph/index.d.ts.map +1 -0
  48. package/dist/types/src/{components → containers/DebugObjectPanel}/DebugObjectPanel.d.ts +1 -1
  49. package/dist/types/src/containers/DebugObjectPanel/DebugObjectPanel.d.ts.map +1 -0
  50. package/dist/types/src/containers/DebugObjectPanel/index.d.ts +3 -0
  51. package/dist/types/src/containers/DebugObjectPanel/index.d.ts.map +1 -0
  52. package/dist/types/src/{components → containers/DebugSettings}/DebugSettings.d.ts +4 -2
  53. package/dist/types/src/containers/DebugSettings/DebugSettings.d.ts.map +1 -0
  54. package/dist/types/src/containers/DebugSettings/index.d.ts +3 -0
  55. package/dist/types/src/containers/DebugSettings/index.d.ts.map +1 -0
  56. package/dist/types/src/containers/DebugSpaceObjectsPanel/DebugSpaceObjectsPanel.d.ts +3 -0
  57. package/dist/types/src/containers/DebugSpaceObjectsPanel/DebugSpaceObjectsPanel.d.ts.map +1 -0
  58. package/dist/types/src/containers/DebugSpaceObjectsPanel/index.d.ts +3 -0
  59. package/dist/types/src/containers/DebugSpaceObjectsPanel/index.d.ts.map +1 -0
  60. package/dist/types/src/containers/DebugStatus/DebugStatus.d.ts.map +1 -0
  61. package/dist/types/src/containers/DebugStatus/index.d.ts +3 -0
  62. package/dist/types/src/containers/DebugStatus/index.d.ts.map +1 -0
  63. package/dist/types/src/{components → containers/DevtoolsOverviewContainer}/DevtoolsOverviewContainer.d.ts +0 -1
  64. package/dist/types/src/containers/DevtoolsOverviewContainer/DevtoolsOverviewContainer.d.ts.map +1 -0
  65. package/dist/types/src/containers/DevtoolsOverviewContainer/index.d.ts +3 -0
  66. package/dist/types/src/containers/DevtoolsOverviewContainer/index.d.ts.map +1 -0
  67. package/dist/types/src/{components → containers}/SpaceGenerator/SpaceGenerator.d.ts.map +1 -1
  68. package/dist/types/src/containers/SpaceGenerator/index.d.ts +3 -0
  69. package/dist/types/src/containers/SpaceGenerator/index.d.ts.map +1 -0
  70. package/dist/types/src/containers/Wireframe/Wireframe.d.ts.map +1 -0
  71. package/dist/types/src/containers/Wireframe/index.d.ts +3 -0
  72. package/dist/types/src/containers/Wireframe/index.d.ts.map +1 -0
  73. package/dist/types/src/containers/index.d.ts +10 -0
  74. package/dist/types/src/containers/index.d.ts.map +1 -0
  75. package/dist/types/src/translations.d.ts +2 -0
  76. package/dist/types/src/translations.d.ts.map +1 -1
  77. package/dist/types/tsconfig.tsbuildinfo +1 -1
  78. package/package.json +58 -59
  79. package/src/DebugPlugin.tsx +13 -3
  80. package/src/capabilities/app-graph-builder/app-graph-builder.ts +21 -1
  81. package/src/capabilities/react-surface/react-surface.tsx +27 -10
  82. package/src/components/{SpaceGenerator → SchemaTable}/SchemaTable.tsx +2 -2
  83. package/src/components/SchemaTable/index.ts +5 -0
  84. package/src/components/SpaceGenerator/ObjectGenerator.tsx +3 -2
  85. package/src/components/SpaceGenerator/index.ts +2 -3
  86. package/src/components/SpaceGenerator/presets.ts +32 -24
  87. package/src/components/index.ts +2 -13
  88. package/src/{components → containers/DebugGraph}/DebugGraph.tsx +0 -2
  89. package/src/containers/DebugGraph/index.ts +7 -0
  90. package/src/containers/DebugObjectPanel/DebugObjectPanel.tsx +45 -0
  91. package/src/containers/DebugObjectPanel/index.ts +7 -0
  92. package/src/{components → containers/DebugSettings}/DebugSettings.tsx +20 -4
  93. package/src/containers/DebugSettings/index.ts +7 -0
  94. package/src/containers/DebugSpaceObjectsPanel/DebugSpaceObjectsPanel.tsx +60 -0
  95. package/src/containers/DebugSpaceObjectsPanel/index.ts +7 -0
  96. package/src/containers/DebugStatus/index.ts +7 -0
  97. package/src/{components → containers/DevtoolsOverviewContainer}/DevtoolsOverviewContainer.tsx +0 -2
  98. package/src/containers/DevtoolsOverviewContainer/index.ts +7 -0
  99. package/src/{components → containers}/SpaceGenerator/SpaceGenerator.tsx +35 -34
  100. package/src/containers/SpaceGenerator/index.ts +7 -0
  101. package/src/{components → containers/Wireframe}/Wireframe.tsx +2 -2
  102. package/src/containers/Wireframe/index.ts +7 -0
  103. package/src/containers/index.ts +14 -0
  104. package/src/translations.ts +2 -0
  105. package/dist/lib/browser/SpaceGenerator-W3LJORYT.mjs.map +0 -7
  106. package/dist/lib/browser/react-surface-FMVC5GPV.mjs +0 -758
  107. package/dist/lib/browser/react-surface-FMVC5GPV.mjs.map +0 -7
  108. package/dist/types/src/components/Container.d.ts +0 -5
  109. package/dist/types/src/components/Container.d.ts.map +0 -1
  110. package/dist/types/src/components/DebugGraph.d.ts.map +0 -1
  111. package/dist/types/src/components/DebugObjectPanel.d.ts.map +0 -1
  112. package/dist/types/src/components/DebugSettings.d.ts.map +0 -1
  113. package/dist/types/src/components/DebugStatus.d.ts.map +0 -1
  114. package/dist/types/src/components/DevtoolsOverviewContainer.d.ts.map +0 -1
  115. package/dist/types/src/components/SpaceGenerator/SchemaTable.d.ts.map +0 -1
  116. package/dist/types/src/components/SpaceGenerator/SpaceGenerator.stories.d.ts +0 -15
  117. package/dist/types/src/components/SpaceGenerator/SpaceGenerator.stories.d.ts.map +0 -1
  118. package/dist/types/src/components/Wireframe.d.ts.map +0 -1
  119. package/src/components/Container.tsx +0 -15
  120. package/src/components/DebugObjectPanel.tsx +0 -32
  121. package/src/components/SpaceGenerator/SpaceGenerator.stories.tsx +0 -54
  122. /package/dist/types/src/components/{SpaceGenerator → SchemaTable}/SchemaTable.d.ts +0 -0
  123. /package/dist/types/src/{components → containers/DebugStatus}/DebugStatus.d.ts +0 -0
  124. /package/dist/types/src/{components → containers}/SpaceGenerator/SpaceGenerator.d.ts +0 -0
  125. /package/dist/types/src/{components → containers/Wireframe}/Wireframe.d.ts +0 -0
  126. /package/src/{components → containers/DebugStatus}/DebugStatus.tsx +0 -0
@@ -1,4 +1,4 @@
1
- // src/components/DebugGraph.tsx
1
+ // src/containers/DebugGraph/DebugGraph.tsx
2
2
  import React from "react";
3
3
  import { Tree } from "@dxos/devtools";
4
4
  import { Graph } from "@dxos/plugin-graph";
@@ -7,9 +7,10 @@ var DebugGraph = ({ graph, root }) => {
7
7
  data: Graph.toJSON(graph, root)
8
8
  });
9
9
  };
10
+
11
+ // src/containers/DebugGraph/index.ts
10
12
  var DebugGraph_default = DebugGraph;
11
13
  export {
12
- DebugGraph,
13
14
  DebugGraph_default as default
14
15
  };
15
- //# sourceMappingURL=DebugGraph-6VMEOKEV.mjs.map
16
+ //# sourceMappingURL=DebugGraph-7HXJ2PS2.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/components/DebugGraph.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { type FC } from 'react';\n\nimport { Tree } from '@dxos/devtools';\nimport { Graph } from '@dxos/plugin-graph';\n\nexport type DebugGraphProps = { graph: Graph.Graph; root: string };\nexport const DebugGraph: FC<DebugGraphProps> = ({ graph, root }) => {\n return <Tree data={Graph.toJSON(graph, root)} />;\n};\n\nexport default DebugGraph;\n"],
5
- "mappings": ";AAIA,OAAOA,WAAwB;AAE/B,SAASC,YAAY;AACrB,SAASC,aAAa;AAGf,IAAMC,aAAkC,CAAC,EAAEC,OAAOC,KAAI,MAAE;AAC7D,SAAO,sBAAA,cAACC,MAAAA;IAAKC,MAAMC,MAAMC,OAAOL,OAAOC,IAAAA;;AACzC;AAEA,IAAA,qBAAeF;",
6
- "names": ["React", "Tree", "Graph", "DebugGraph", "graph", "root", "Tree", "data", "Graph", "toJSON"]
3
+ "sources": ["../../../src/containers/DebugGraph/DebugGraph.tsx", "../../../src/containers/DebugGraph/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { type FC } from 'react';\n\nimport { Tree } from '@dxos/devtools';\nimport { Graph } from '@dxos/plugin-graph';\n\nexport type DebugGraphProps = { graph: Graph.Graph; root: string };\nexport const DebugGraph: FC<DebugGraphProps> = ({ graph, root }) => {\n return <Tree data={Graph.toJSON(graph, root)} />;\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { DebugGraph } from './DebugGraph';\n\nexport default DebugGraph;\n"],
5
+ "mappings": ";AAIA,OAAOA,WAAwB;AAE/B,SAASC,YAAY;AACrB,SAASC,aAAa;AAGf,IAAMC,aAAkC,CAAC,EAAEC,OAAOC,KAAI,MAAE;AAC7D,SAAO,sBAAA,cAACC,MAAAA;IAAKC,MAAMC,MAAMC,OAAOL,OAAOC,IAAAA;;AACzC;;;ACNA,IAAA,qBAAeK;",
6
+ "names": ["React", "Tree", "Graph", "DebugGraph", "graph", "root", "Tree", "data", "Graph", "toJSON", "DebugGraph"]
7
7
  }
@@ -0,0 +1,33 @@
1
+ // src/containers/DebugObjectPanel/DebugObjectPanel.tsx
2
+ import React, { useState } from "react";
3
+ import { ObjectsTree } from "@dxos/devtools";
4
+ import { Filter, Obj, Query } from "@dxos/echo";
5
+ import { useQuery } from "@dxos/react-client/echo";
6
+ import { Clipboard, Grid, Panel, ScrollArea } from "@dxos/react-ui";
7
+ import { Json } from "@dxos/react-ui-syntax-highlighter";
8
+ var DebugObjectPanel = ({ object }) => {
9
+ const db = Obj.getDatabase(object);
10
+ const [selectedId, setSelectedId] = useState(null);
11
+ const [selectedObject] = useQuery(db, Query.select(Filter.id(selectedId ?? object.id)).options({
12
+ deleted: "include"
13
+ }));
14
+ return /* @__PURE__ */ React.createElement(Clipboard.Provider, null, /* @__PURE__ */ React.createElement(Panel.Root, null, /* @__PURE__ */ React.createElement(Panel.Content, {
15
+ asChild: true
16
+ }, /* @__PURE__ */ React.createElement(Grid, {
17
+ rows: db ? 2 : 1,
18
+ classNames: "divide-y divide-separator"
19
+ }, db && /* @__PURE__ */ React.createElement(ScrollArea.Root, null, /* @__PURE__ */ React.createElement(ScrollArea.Viewport, null, /* @__PURE__ */ React.createElement(ObjectsTree, {
20
+ db,
21
+ root: object,
22
+ onSelect: (entity) => setSelectedId(entity.id)
23
+ }))), /* @__PURE__ */ React.createElement(Json, {
24
+ data: selectedObject
25
+ })))));
26
+ };
27
+
28
+ // src/containers/DebugObjectPanel/index.ts
29
+ var DebugObjectPanel_default = DebugObjectPanel;
30
+ export {
31
+ DebugObjectPanel_default as default
32
+ };
33
+ //# sourceMappingURL=DebugObjectPanel-3TCDNUNW.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/containers/DebugObjectPanel/DebugObjectPanel.tsx", "../../../src/containers/DebugObjectPanel/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useState } from 'react';\n\nimport { ObjectsTree } from '@dxos/devtools';\nimport { Filter, Obj, Query } from '@dxos/echo';\nimport type { ObjectId } from '@dxos/keys';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { Clipboard, Grid, Panel, ScrollArea } from '@dxos/react-ui';\nimport { Json } from '@dxos/react-ui-syntax-highlighter';\n\nexport type DebugObjectPanelProps = {\n object: Obj.Unknown;\n};\n\nexport const DebugObjectPanel = ({ object }: DebugObjectPanelProps) => {\n const db = Obj.getDatabase(object);\n\n const [selectedId, setSelectedId] = useState<ObjectId | null>(null);\n const [selectedObject] = useQuery(\n db,\n Query.select(Filter.id(selectedId ?? object.id)).options({ deleted: 'include' }),\n );\n\n return (\n <Clipboard.Provider>\n <Panel.Root>\n <Panel.Content asChild>\n <Grid rows={db ? 2 : 1} classNames='divide-y divide-separator'>\n {db && (\n <ScrollArea.Root>\n <ScrollArea.Viewport>\n <ObjectsTree db={db} root={object} onSelect={(entity) => setSelectedId(entity.id)} />\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n )}\n <Json data={selectedObject} />\n </Grid>\n </Panel.Content>\n </Panel.Root>\n </Clipboard.Provider>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { DebugObjectPanel } from './DebugObjectPanel';\n\nexport default DebugObjectPanel;\n"],
5
+ "mappings": ";AAIA,OAAOA,SAASC,gBAAgB;AAEhC,SAASC,mBAAmB;AAC5B,SAASC,QAAQC,KAAKC,aAAa;AAEnC,SAASC,gBAAgB;AACzB,SAASC,WAAWC,MAAMC,OAAOC,kBAAkB;AACnD,SAASC,YAAY;AAMd,IAAMC,mBAAmB,CAAC,EAAEC,OAAM,MAAyB;AAChE,QAAMC,KAAKC,IAAIC,YAAYH,MAAAA;AAE3B,QAAM,CAACI,YAAYC,aAAAA,IAAiBC,SAA0B,IAAA;AAC9D,QAAM,CAACC,cAAAA,IAAkBC,SACvBP,IACAQ,MAAMC,OAAOC,OAAOC,GAAGR,cAAcJ,OAAOY,EAAE,CAAA,EAAGC,QAAQ;IAAEC,SAAS;EAAU,CAAA,CAAA;AAGhF,SACE,sBAAA,cAACC,UAAUC,UAAQ,MACjB,sBAAA,cAACC,MAAMC,MAAI,MACT,sBAAA,cAACD,MAAME,SAAO;IAACC,SAAAA;KACb,sBAAA,cAACC,MAAAA;IAAKC,MAAMrB,KAAK,IAAI;IAAGsB,YAAW;KAChCtB,MACC,sBAAA,cAACuB,WAAWN,MAAI,MACd,sBAAA,cAACM,WAAWC,UAAQ,MAClB,sBAAA,cAACC,aAAAA;IAAYzB;IAAQ0B,MAAM3B;IAAQ4B,UAAU,CAACC,WAAWxB,cAAcwB,OAAOjB,EAAE;QAItF,sBAAA,cAACkB,MAAAA;IAAKC,MAAMxB;;AAMxB;;;ACtCA,IAAA,2BAAeyB;",
6
+ "names": ["React", "useState", "ObjectsTree", "Filter", "Obj", "Query", "useQuery", "Clipboard", "Grid", "Panel", "ScrollArea", "Json", "DebugObjectPanel", "object", "db", "Obj", "getDatabase", "selectedId", "setSelectedId", "useState", "selectedObject", "useQuery", "Query", "select", "Filter", "id", "options", "deleted", "Clipboard", "Provider", "Panel", "Root", "Content", "asChild", "Grid", "rows", "classNames", "ScrollArea", "Viewport", "ObjectsTree", "root", "onSelect", "entity", "Json", "data", "DebugObjectPanel"]
7
+ }
@@ -0,0 +1,174 @@
1
+ import {
2
+ meta
3
+ } from "./chunk-A5H5GRV6.mjs";
4
+
5
+ // src/containers/DebugSettings/DebugSettings.tsx
6
+ import React, { useEffect, useState } from "react";
7
+ import { useCapabilities } from "@dxos/app-framework/ui";
8
+ import { AppCapabilities } from "@dxos/app-toolkit";
9
+ import { SaveConfig, Storage, defs } from "@dxos/config";
10
+ import { log } from "@dxos/log";
11
+ import { useClient } from "@dxos/react-client";
12
+ import { Icon, IconButton, Input, Select, Toast, useFileDownload, useTranslation } from "@dxos/react-ui";
13
+ import { Settings } from "@dxos/react-ui-form";
14
+ import { setDeep } from "@dxos/util";
15
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-debug/src/containers/DebugSettings/DebugSettings.tsx";
16
+ var StorageAdapters = {
17
+ opfs: defs.Runtime.Client.Storage.StorageDriver.WEBFS,
18
+ idb: defs.Runtime.Client.Storage.StorageDriver.IDB
19
+ };
20
+ var DebugSettings = ({ settings, onSettingsChange, logBuffer }) => {
21
+ const { t } = useTranslation(meta.id);
22
+ const [toast, setToast] = useState();
23
+ const client = useClient();
24
+ const download = useFileDownload();
25
+ const [storageConfig, setStorageConfig] = useState({});
26
+ const [upload] = useCapabilities(AppCapabilities.FileUploader);
27
+ useEffect(() => {
28
+ void Storage().then((config) => setStorageConfig(config));
29
+ }, []);
30
+ const handleToast = (toast2) => {
31
+ setToast(toast2);
32
+ const t2 = setTimeout(() => setToast(void 0), 5e3);
33
+ return () => clearTimeout(t2);
34
+ };
35
+ const handleDownload = async () => {
36
+ const data = await client.diagnostics();
37
+ const file = new Blob([
38
+ JSON.stringify(data, void 0, 2)
39
+ ], {
40
+ type: "text/plain"
41
+ });
42
+ const fileName = `composer-${(/* @__PURE__ */ new Date()).toISOString().replace(/\W/g, "-")}.json`;
43
+ download(file, fileName);
44
+ if (upload) {
45
+ const info = await upload(client.spaces.default.db, new File([
46
+ file
47
+ ], fileName));
48
+ if (!info) {
49
+ log.error("diagnostics failed to upload to IPFS", void 0, {
50
+ F: __dxlog_file,
51
+ L: 65,
52
+ S: void 0,
53
+ C: (f, a) => f(...a)
54
+ });
55
+ return;
56
+ }
57
+ handleToast({
58
+ title: t("settings uploaded"),
59
+ description: t("settings uploaded to clipboard")
60
+ });
61
+ const url = client.config.values.runtime.services.ipfs.gateway + "/" + info.cid;
62
+ void navigator.clipboard.writeText(url);
63
+ handleToast({
64
+ title: t("settings uploaded"),
65
+ description: t("settings uploaded to clipboard")
66
+ });
67
+ log.info("diagnostics", {
68
+ url
69
+ }, {
70
+ F: __dxlog_file,
71
+ L: 80,
72
+ S: void 0,
73
+ C: (f, a) => f(...a)
74
+ });
75
+ }
76
+ };
77
+ const handleDownloadLogs = () => {
78
+ const ndjson = logBuffer.serialize();
79
+ const file = new Blob([
80
+ ndjson
81
+ ], {
82
+ type: "application/x-ndjson"
83
+ });
84
+ const fileName = `composer-logs-${(/* @__PURE__ */ new Date()).toISOString().slice(0, 19).replace(/:/g, "-")}.ndjson`;
85
+ download(file, fileName);
86
+ };
87
+ const handleRepair = async () => {
88
+ try {
89
+ const info = await client.repair();
90
+ setStorageConfig(await Storage());
91
+ handleToast({
92
+ title: t("settings repair success"),
93
+ description: JSON.stringify(info, void 0, 2)
94
+ });
95
+ } catch (err) {
96
+ handleToast({
97
+ title: t("settings repair failed"),
98
+ description: err.message
99
+ });
100
+ }
101
+ };
102
+ return /* @__PURE__ */ React.createElement(Settings.Root, null, /* @__PURE__ */ React.createElement(Settings.Section, {
103
+ title: t("settings title", {
104
+ ns: meta.id
105
+ })
106
+ }, /* @__PURE__ */ React.createElement(Settings.Group, null, /* @__PURE__ */ React.createElement(Settings.ItemInput, {
107
+ title: t("settings wireframe")
108
+ }, /* @__PURE__ */ React.createElement(Input.Switch, {
109
+ checked: settings.wireframe,
110
+ onCheckedChange: (checked) => onSettingsChange((s) => ({
111
+ ...s,
112
+ wireframe: !!checked
113
+ }))
114
+ })), /* @__PURE__ */ React.createElement(Settings.ItemInput, {
115
+ title: t("settings download diagnostics")
116
+ }, /* @__PURE__ */ React.createElement(IconButton, {
117
+ icon: "ph--download-simple--regular",
118
+ iconOnly: true,
119
+ label: t("settings download diagnostics"),
120
+ onClick: handleDownload
121
+ })), /* @__PURE__ */ React.createElement(Settings.ItemInput, {
122
+ title: t("settings download logs")
123
+ }, /* @__PURE__ */ React.createElement(IconButton, {
124
+ icon: "ph--download-simple--regular",
125
+ iconOnly: true,
126
+ label: t("settings download logs"),
127
+ onClick: handleDownloadLogs
128
+ })), /* @__PURE__ */ React.createElement(Settings.ItemInput, {
129
+ title: t("settings repair")
130
+ }, /* @__PURE__ */ React.createElement(IconButton, {
131
+ icon: "ph--first-aid-kit--regular",
132
+ iconOnly: true,
133
+ label: t("settings repair"),
134
+ onClick: handleRepair
135
+ })), toast && /* @__PURE__ */ React.createElement(Toast.Root, null, /* @__PURE__ */ React.createElement(Toast.Body, null, /* @__PURE__ */ React.createElement(Toast.Title, null, /* @__PURE__ */ React.createElement(Icon, {
136
+ icon: "ph--gift--duotone",
137
+ size: 5,
138
+ classNames: "inline mr-1"
139
+ }), /* @__PURE__ */ React.createElement("span", null, toast.title)), toast.description && /* @__PURE__ */ React.createElement(Toast.Description, null, toast.description))), /* @__PURE__ */ React.createElement(Settings.ItemInput, {
140
+ title: t("settings choose storage adaptor")
141
+ }, /* @__PURE__ */ React.createElement(Select.Root, {
142
+ value: Object.entries(StorageAdapters).find(([_name, value]) => value === storageConfig?.runtime?.client?.storage?.dataStore)?.[0],
143
+ onValueChange: (value) => {
144
+ if (confirm(t("settings storage adapter changed alert"))) {
145
+ updateConfig(storageConfig, setStorageConfig, [
146
+ "runtime",
147
+ "client",
148
+ "storage",
149
+ "dataStore"
150
+ ], StorageAdapters[value]);
151
+ }
152
+ }
153
+ }, /* @__PURE__ */ React.createElement(Select.TriggerButton, {
154
+ placeholder: t("settings data store label")
155
+ }), /* @__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, {
156
+ key,
157
+ value: key
158
+ }, t(`settings storage adaptor ${key} label`)))), /* @__PURE__ */ React.createElement(Select.Arrow, null))))))));
159
+ };
160
+ var updateConfig = (config, setConfig, path, value) => {
161
+ const storageConfigCopy = JSON.parse(JSON.stringify(config ?? {}));
162
+ setDeep(storageConfigCopy, path, value);
163
+ setConfig(storageConfigCopy);
164
+ queueMicrotask(async () => {
165
+ await SaveConfig(storageConfigCopy);
166
+ });
167
+ };
168
+
169
+ // src/containers/DebugSettings/index.ts
170
+ var DebugSettings_default = DebugSettings;
171
+ export {
172
+ DebugSettings_default as default
173
+ };
174
+ //# sourceMappingURL=DebugSettings-JZMIUDYB.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/containers/DebugSettings/DebugSettings.tsx", "../../../src/containers/DebugSettings/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useEffect, useState } from 'react';\n\nimport { useCapabilities } from '@dxos/app-framework/ui';\nimport { AppCapabilities } from '@dxos/app-toolkit';\nimport { type ConfigProto, SaveConfig, Storage, defs } from '@dxos/config';\nimport { type LogBuffer, log } from '@dxos/log';\nimport { useClient } from '@dxos/react-client';\nimport { Icon, IconButton, Input, Select, Toast, useFileDownload, useTranslation } from '@dxos/react-ui';\nimport { Settings } from '@dxos/react-ui-form';\nimport { setDeep } from '@dxos/util';\n\nimport { meta } 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 type DebugSettingsComponentProps = {\n settings: DebugSettingsProps;\n onSettingsChange: (fn: (current: DebugSettingsProps) => DebugSettingsProps) => void;\n logBuffer: LogBuffer;\n};\n\nexport const DebugSettings = ({ settings, onSettingsChange, logBuffer }: DebugSettingsComponentProps) => {\n const { t } = useTranslation(meta.id);\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(AppCapabilities.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)], {\n type: 'text/plain',\n });\n const fileName = `composer-${new Date().toISOString().replace(/\\W/g, '-')}.json`;\n download(file, fileName);\n\n if (upload) {\n const info = await upload(client.spaces.default.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'),\n description: t('settings uploaded to clipboard'),\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'),\n description: t('settings uploaded to clipboard'),\n });\n log.info('diagnostics', { url });\n }\n };\n\n const handleDownloadLogs = () => {\n const ndjson = logBuffer.serialize();\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 };\n\n const handleRepair = async () => {\n try {\n const info = await client.repair();\n setStorageConfig(await Storage());\n handleToast({\n title: t('settings repair success'),\n description: JSON.stringify(info, undefined, 2),\n });\n } catch (err: any) {\n handleToast({\n title: t('settings repair failed'),\n description: err.message,\n });\n }\n };\n\n return (\n <Settings.Root>\n <Settings.Section title={t('settings title', { ns: meta.id })}>\n <Settings.Group>\n <Settings.ItemInput title={t('settings wireframe')}>\n <Input.Switch\n checked={settings.wireframe}\n onCheckedChange={(checked) => onSettingsChange((s) => ({ ...s, wireframe: !!checked }))}\n />\n </Settings.ItemInput>\n <Settings.ItemInput title={t('settings download diagnostics')}>\n <IconButton\n icon='ph--download-simple--regular'\n iconOnly\n label={t('settings download diagnostics')}\n onClick={handleDownload}\n />\n </Settings.ItemInput>\n <Settings.ItemInput title={t('settings download logs')}>\n <IconButton\n icon='ph--download-simple--regular'\n iconOnly\n label={t('settings download logs')}\n onClick={handleDownloadLogs}\n />\n </Settings.ItemInput>\n <Settings.ItemInput title={t('settings repair')}>\n <IconButton\n icon='ph--first-aid-kit--regular'\n iconOnly\n label={t('settings repair')}\n onClick={handleRepair}\n />\n </Settings.ItemInput>\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 <Settings.ItemInput title={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.Arrow />\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </Settings.ItemInput>\n </Settings.Group>\n </Settings.Section>\n </Settings.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", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { DebugSettings } from './DebugSettings';\n\nexport default DebugSettings;\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "useEffect", "useState", "useCapabilities", "AppCapabilities", "SaveConfig", "Storage", "defs", "log", "useClient", "Icon", "IconButton", "Input", "Select", "Toast", "useFileDownload", "useTranslation", "Settings", "setDeep", "StorageAdapters", "opfs", "defs", "Runtime", "Client", "Storage", "StorageDriver", "WEBFS", "idb", "IDB", "DebugSettings", "settings", "onSettingsChange", "logBuffer", "t", "useTranslation", "meta", "id", "toast", "setToast", "useState", "client", "useClient", "download", "useFileDownload", "storageConfig", "setStorageConfig", "upload", "useCapabilities", "AppCapabilities", "FileUploader", "useEffect", "then", "config", "handleToast", "setTimeout", "undefined", "clearTimeout", "handleDownload", "data", "diagnostics", "file", "Blob", "JSON", "stringify", "type", "fileName", "Date", "toISOString", "replace", "info", "spaces", "default", "db", "File", "log", "error", "title", "description", "url", "values", "runtime", "services", "ipfs", "gateway", "cid", "navigator", "clipboard", "writeText", "handleDownloadLogs", "ndjson", "serialize", "slice", "handleRepair", "repair", "err", "message", "Settings", "Root", "Section", "ns", "Group", "ItemInput", "Input", "Switch", "checked", "wireframe", "onCheckedChange", "s", "IconButton", "icon", "iconOnly", "label", "onClick", "Toast", "Body", "Title", "Icon", "size", "classNames", "span", "Description", "Select", "value", "Object", "entries", "find", "_name", "storage", "dataStore", "onValueChange", "confirm", "updateConfig", "TriggerButton", "placeholder", "Portal", "Content", "Viewport", "keys", "map", "key", "Option", "Arrow", "setConfig", "path", "storageConfigCopy", "parse", "setDeep", "queueMicrotask", "SaveConfig", "DebugSettings"]
7
+ }
@@ -0,0 +1,50 @@
1
+ // src/containers/DebugSpaceObjectsPanel/DebugSpaceObjectsPanel.tsx
2
+ import React, { useState } from "react";
3
+ import { useCapability } from "@dxos/app-framework/ui";
4
+ import { useLayout } from "@dxos/app-toolkit/ui";
5
+ import { ObjectsTree } from "@dxos/devtools";
6
+ import { Filter, Query } from "@dxos/echo";
7
+ import { ClientCapabilities } from "@dxos/plugin-client";
8
+ import { parseId, useQuery } from "@dxos/react-client/echo";
9
+ import { Clipboard, Grid, Input, Panel, ScrollArea, Toolbar } from "@dxos/react-ui";
10
+ import { Json } from "@dxos/react-ui-syntax-highlighter";
11
+ var DebugSpaceObjectsPanel = () => {
12
+ const layout = useLayout();
13
+ const client = useCapability(ClientCapabilities.Client);
14
+ const { spaceId } = parseId(layout.workspace);
15
+ const space = spaceId ? client.spaces.get(spaceId) : void 0;
16
+ if (!space) {
17
+ return null;
18
+ }
19
+ return /* @__PURE__ */ React.createElement(DebugSpaceObjectsPanelMain, {
20
+ database: space.db
21
+ });
22
+ };
23
+ var DebugSpaceObjectsPanelMain = ({ database }) => {
24
+ const [selectedId, setSelectedId] = useState(null);
25
+ const [selectedObject] = useQuery(database, selectedId ? Query.select(Filter.id(selectedId)) : Query.select(Filter.nothing()));
26
+ return /* @__PURE__ */ React.createElement(Clipboard.Provider, null, /* @__PURE__ */ React.createElement(Panel.Root, null, /* @__PURE__ */ React.createElement(Panel.Toolbar, {
27
+ asChild: true
28
+ }, /* @__PURE__ */ React.createElement(Toolbar.Root, null, /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.TextInput, {
29
+ disabled: true,
30
+ placeholder: "Search..."
31
+ })))), /* @__PURE__ */ React.createElement(Panel.Content, {
32
+ asChild: true
33
+ }, /* @__PURE__ */ React.createElement(Grid, {
34
+ rows: 2,
35
+ classNames: "divide-y divide-separator"
36
+ }, /* @__PURE__ */ React.createElement(ScrollArea.Root, null, /* @__PURE__ */ React.createElement(ScrollArea.Viewport, null, /* @__PURE__ */ React.createElement(ObjectsTree, {
37
+ db: database,
38
+ onSelect: (entity) => setSelectedId(entity.id)
39
+ }))), selectedObject && /* @__PURE__ */ React.createElement(Json, {
40
+ classNames: "p-1",
41
+ data: selectedObject
42
+ })))));
43
+ };
44
+
45
+ // src/containers/DebugSpaceObjectsPanel/index.ts
46
+ var DebugSpaceObjectsPanel_default = DebugSpaceObjectsPanel;
47
+ export {
48
+ DebugSpaceObjectsPanel_default as default
49
+ };
50
+ //# sourceMappingURL=DebugSpaceObjectsPanel-7NRPLWZ4.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/containers/DebugSpaceObjectsPanel/DebugSpaceObjectsPanel.tsx", "../../../src/containers/DebugSpaceObjectsPanel/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useState } from 'react';\n\nimport { useCapability } from '@dxos/app-framework/ui';\nimport { useLayout } from '@dxos/app-toolkit/ui';\nimport { ObjectsTree } from '@dxos/devtools';\nimport { type Database, Filter, Query } from '@dxos/echo';\nimport type { ObjectId } from '@dxos/keys';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { parseId, useQuery } from '@dxos/react-client/echo';\nimport { Clipboard, Grid, Input, Panel, ScrollArea, Toolbar } from '@dxos/react-ui';\nimport { Json } from '@dxos/react-ui-syntax-highlighter';\n\nexport const DebugSpaceObjectsPanel = () => {\n const layout = useLayout();\n const client = useCapability(ClientCapabilities.Client);\n const { spaceId } = parseId(layout.workspace);\n const space = spaceId ? client.spaces.get(spaceId) : undefined;\n if (!space) {\n return null;\n }\n\n return <DebugSpaceObjectsPanelMain database={space.db} />;\n};\n\nconst DebugSpaceObjectsPanelMain = ({ database }: { database: Database.Database }) => {\n const [selectedId, setSelectedId] = useState<ObjectId | null>(null);\n\n const [selectedObject] = useQuery(\n database,\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 db={database} onSelect={(entity) => setSelectedId(entity.id)} />\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n {selectedObject && <Json classNames='p-1' data={selectedObject} />}\n </Grid>\n </Panel.Content>\n </Panel.Root>\n </Clipboard.Provider>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { DebugSpaceObjectsPanel } from './DebugSpaceObjectsPanel';\n\nexport default DebugSpaceObjectsPanel;\n"],
5
+ "mappings": ";AAIA,OAAOA,SAASC,gBAAgB;AAEhC,SAASC,qBAAqB;AAC9B,SAASC,iBAAiB;AAC1B,SAASC,mBAAmB;AAC5B,SAAwBC,QAAQC,aAAa;AAE7C,SAASC,0BAA0B;AACnC,SAASC,SAASC,gBAAgB;AAClC,SAASC,WAAWC,MAAMC,OAAOC,OAAOC,YAAYC,eAAe;AACnE,SAASC,YAAY;AAEd,IAAMC,yBAAyB,MAAA;AACpC,QAAMC,SAASC,UAAAA;AACf,QAAMC,SAASC,cAAcC,mBAAmBC,MAAM;AACtD,QAAM,EAAEC,QAAO,IAAKC,QAAQP,OAAOQ,SAAS;AAC5C,QAAMC,QAAQH,UAAUJ,OAAOQ,OAAOC,IAAIL,OAAAA,IAAWM;AACrD,MAAI,CAACH,OAAO;AACV,WAAO;EACT;AAEA,SAAO,sBAAA,cAACI,4BAAAA;IAA2BC,UAAUL,MAAMM;;AACrD;AAEA,IAAMF,6BAA6B,CAAC,EAAEC,SAAQ,MAAmC;AAC/E,QAAM,CAACE,YAAYC,aAAAA,IAAiBC,SAA0B,IAAA;AAE9D,QAAM,CAACC,cAAAA,IAAkBC,SACvBN,UACAE,aAAaK,MAAMC,OAAOC,OAAOC,GAAGR,UAAAA,CAAAA,IAAeK,MAAMC,OAAOC,OAAOE,QAAO,CAAA,CAAA;AAGhF,SACE,sBAAA,cAACC,UAAUC,UAAQ,MACjB,sBAAA,cAACC,MAAMC,MAAI,MACT,sBAAA,cAACD,MAAME,SAAO;IAACC,SAAAA;KACb,sBAAA,cAACD,QAAQD,MAAI,MACX,sBAAA,cAACG,MAAMH,MAAI,MACT,sBAAA,cAACG,MAAMC,WAAS;IAACC,UAAAA;IAASC,aAAY;SAI5C,sBAAA,cAACP,MAAMQ,SAAO;IAACL,SAAAA;KACb,sBAAA,cAACM,MAAAA;IAAKC,MAAM;IAAGC,YAAW;KACxB,sBAAA,cAACC,WAAWX,MAAI,MACd,sBAAA,cAACW,WAAWC,UAAQ,MAClB,sBAAA,cAACC,aAAAA;IAAY3B,IAAID;IAAU6B,UAAU,CAACC,WAAW3B,cAAc2B,OAAOpB,EAAE;QAG3EL,kBAAkB,sBAAA,cAAC0B,MAAAA;IAAKN,YAAW;IAAMO,MAAM3B;;AAM5D;;;ACrDA,IAAA,iCAAe4B;",
6
+ "names": ["React", "useState", "useCapability", "useLayout", "ObjectsTree", "Filter", "Query", "ClientCapabilities", "parseId", "useQuery", "Clipboard", "Grid", "Input", "Panel", "ScrollArea", "Toolbar", "Json", "DebugSpaceObjectsPanel", "layout", "useLayout", "client", "useCapability", "ClientCapabilities", "Client", "spaceId", "parseId", "workspace", "space", "spaces", "get", "undefined", "DebugSpaceObjectsPanelMain", "database", "db", "selectedId", "setSelectedId", "useState", "selectedObject", "useQuery", "Query", "select", "Filter", "id", "nothing", "Clipboard", "Provider", "Panel", "Root", "Toolbar", "asChild", "Input", "TextInput", "disabled", "placeholder", "Content", "Grid", "rows", "classNames", "ScrollArea", "Viewport", "ObjectsTree", "onSelect", "entity", "Json", "data", "DebugSpaceObjectsPanel"]
7
+ }
@@ -0,0 +1,125 @@
1
+ // src/containers/DebugStatus/DebugStatus.tsx
2
+ import React, { useEffect, useRef, useState } from "react";
3
+ import { TimeoutError } from "@dxos/async";
4
+ import { useActiveSpace } from "@dxos/plugin-space";
5
+ import { StatusBar } from "@dxos/plugin-status-bar";
6
+ import { ConnectionState } from "@dxos/protocols/proto/dxos/client/services";
7
+ import { useNetworkStatus } from "@dxos/react-client/mesh";
8
+ import { Icon } from "@dxos/react-ui";
9
+ var styles = {
10
+ success: "text-sky-300 dark:text-green-700",
11
+ warning: "text-orange-300 dark:text-orange-600",
12
+ error: "text-red-300 dark:text-red-600"
13
+ };
14
+ var ErrorIndicator = () => {
15
+ const [, forceUpdate] = useState({});
16
+ const errorRef = useRef(null);
17
+ useEffect(() => {
18
+ const errorListener = (event) => {
19
+ const error = event.error ?? event.reason;
20
+ if (errorRef.current !== error) {
21
+ errorRef.current = error;
22
+ forceUpdate({});
23
+ }
24
+ };
25
+ window.addEventListener("error", errorListener);
26
+ window.addEventListener("unhandledrejection", errorListener);
27
+ return () => {
28
+ window.removeEventListener("error", errorListener);
29
+ window.removeEventListener("unhandledrejection", errorListener);
30
+ };
31
+ }, []);
32
+ const handleReset = () => {
33
+ errorRef.current = null;
34
+ forceUpdate({});
35
+ };
36
+ if (errorRef.current) {
37
+ return /* @__PURE__ */ React.createElement(StatusBar.Button, {
38
+ title: errorRef.current.message,
39
+ onClick: handleReset
40
+ }, /* @__PURE__ */ React.createElement(Icon, {
41
+ icon: "ph--warning-circle--duotone",
42
+ size: 4,
43
+ classNames: styles.error
44
+ }));
45
+ } else {
46
+ return /* @__PURE__ */ React.createElement(StatusBar.Item, {
47
+ title: "No errors."
48
+ }, /* @__PURE__ */ React.createElement(Icon, {
49
+ icon: "ph--check--regular",
50
+ size: 4
51
+ }));
52
+ }
53
+ };
54
+ var SwarmIndicator = () => {
55
+ const [state, setState] = useState(0);
56
+ const { swarm } = useNetworkStatus();
57
+ useEffect(() => {
58
+ setState(swarm === ConnectionState.ONLINE ? 0 : 1);
59
+ }, [
60
+ swarm
61
+ ]);
62
+ if (state === 0) {
63
+ return /* @__PURE__ */ React.createElement(StatusBar.Item, {
64
+ title: "Connected to swarm."
65
+ }, /* @__PURE__ */ React.createElement(Icon, {
66
+ icon: "ph--lightning--regular",
67
+ size: 4
68
+ }));
69
+ } else {
70
+ return /* @__PURE__ */ React.createElement(StatusBar.Item, {
71
+ title: "Disconnected from swarm."
72
+ }, /* @__PURE__ */ React.createElement(Icon, {
73
+ icon: "ph--lightning-slash--regular",
74
+ size: 4,
75
+ classNames: styles.warning
76
+ }));
77
+ }
78
+ };
79
+ var SavingIndicator = () => {
80
+ const [state, _setState] = useState(0);
81
+ const _space = useActiveSpace();
82
+ switch (state) {
83
+ case 2:
84
+ return /* @__PURE__ */ React.createElement(StatusBar.Item, {
85
+ title: "Edit not saved."
86
+ }, /* @__PURE__ */ React.createElement(Icon, {
87
+ icon: "ph--circle--duotone",
88
+ size: 4,
89
+ classNames: styles.warning
90
+ }));
91
+ case 1:
92
+ return /* @__PURE__ */ React.createElement(StatusBar.Item, {
93
+ title: "Saving..."
94
+ }, /* @__PURE__ */ React.createElement(Icon, {
95
+ icon: "ph--circle--duotone",
96
+ size: 4,
97
+ classNames: styles.success
98
+ }));
99
+ case 0:
100
+ default:
101
+ return /* @__PURE__ */ React.createElement(StatusBar.Item, {
102
+ title: "Modified indicator."
103
+ }, /* @__PURE__ */ React.createElement(Icon, {
104
+ icon: "ph--circle--duotone",
105
+ size: 4
106
+ }));
107
+ }
108
+ };
109
+ var indicators = [
110
+ SavingIndicator,
111
+ SwarmIndicator,
112
+ ErrorIndicator
113
+ ];
114
+ var DebugStatus = () => {
115
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, indicators.map((Indicator) => /* @__PURE__ */ React.createElement(Indicator, {
116
+ key: Indicator.name
117
+ })));
118
+ };
119
+
120
+ // src/containers/DebugStatus/index.ts
121
+ var DebugStatus_default = DebugStatus;
122
+ export {
123
+ DebugStatus_default as default
124
+ };
125
+ //# sourceMappingURL=DebugStatus-COQGH37G.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/containers/DebugStatus/DebugStatus.tsx", "../../../src/containers/DebugStatus/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useEffect, useRef, useState } from 'react';\n\nimport { TimeoutError } from '@dxos/async';\nimport { useActiveSpace } 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 } 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>(null);\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 = null;\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 _space = useActiveSpace();\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 indicators = [SavingIndicator, SwarmIndicator, ErrorIndicator];\n\nexport const DebugStatus = () => {\n return (\n <>\n {indicators.map((Indicator) => (\n <Indicator key={Indicator.name} />\n ))}\n </>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { DebugStatus } from './DebugStatus';\n\nexport default DebugStatus;\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "useEffect", "useRef", "useState", "TimeoutError", "useActiveSpace", "StatusBar", "ConnectionState", "useNetworkStatus", "Icon", "styles", "success", "warning", "error", "ErrorIndicator", "forceUpdate", "useState", "errorRef", "useRef", "useEffect", "errorListener", "event", "error", "reason", "current", "window", "addEventListener", "removeEventListener", "handleReset", "StatusBar", "Button", "title", "message", "onClick", "Icon", "icon", "size", "classNames", "styles", "Item", "SwarmIndicator", "state", "setState", "swarm", "useNetworkStatus", "ConnectionState", "ONLINE", "warning", "SavingIndicator", "_setState", "_space", "useActiveSpace", "success", "indicators", "DebugStatus", "map", "Indicator", "key", "name", "DebugStatus"]
7
+ }
@@ -1,4 +1,4 @@
1
- // src/components/DevtoolsOverviewContainer.tsx
1
+ // src/containers/DevtoolsOverviewContainer/DevtoolsOverviewContainer.tsx
2
2
  import React from "react";
3
3
  import { Surface } from "@dxos/app-framework/ui";
4
4
  import { StatsPanel, useStats } from "@dxos/devtools";
@@ -11,9 +11,10 @@ var DevtoolsOverviewContainer = () => {
11
11
  role: "devtools-overview"
12
12
  }));
13
13
  };
14
+
15
+ // src/containers/DevtoolsOverviewContainer/index.ts
14
16
  var DevtoolsOverviewContainer_default = DevtoolsOverviewContainer;
15
17
  export {
16
- DevtoolsOverviewContainer,
17
18
  DevtoolsOverviewContainer_default as default
18
19
  };
19
- //# sourceMappingURL=DevtoolsOverviewContainer-2C6XMJ3L.mjs.map
20
+ //# sourceMappingURL=DevtoolsOverviewContainer-C75NFVER.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/components/DevtoolsOverviewContainer.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Surface } from '@dxos/app-framework/ui';\nimport { StatsPanel, useStats } from '@dxos/devtools';\n\nexport const DevtoolsOverviewContainer = () => {\n const [stats, refreshStats] = useStats();\n\n return (\n <StatsPanel stats={stats} onRefresh={refreshStats}>\n <Surface.Surface role='devtools-overview' />\n </StatsPanel>\n );\n};\n\nexport default DevtoolsOverviewContainer;\n"],
5
- "mappings": ";AAIA,OAAOA,WAAW;AAElB,SAASC,eAAe;AACxB,SAASC,YAAYC,gBAAgB;AAE9B,IAAMC,4BAA4B,MAAA;AACvC,QAAM,CAACC,OAAOC,YAAAA,IAAgBC,SAAAA;AAE9B,SACE,sBAAA,cAACC,YAAAA;IAAWH;IAAcI,WAAWH;KACnC,sBAAA,cAACI,QAAQA,SAAO;IAACC,MAAK;;AAG5B;AAEA,IAAA,oCAAeP;",
6
- "names": ["React", "Surface", "StatsPanel", "useStats", "DevtoolsOverviewContainer", "stats", "refreshStats", "useStats", "StatsPanel", "onRefresh", "Surface", "role"]
3
+ "sources": ["../../../src/containers/DevtoolsOverviewContainer/DevtoolsOverviewContainer.tsx", "../../../src/containers/DevtoolsOverviewContainer/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Surface } from '@dxos/app-framework/ui';\nimport { StatsPanel, useStats } from '@dxos/devtools';\n\nexport const DevtoolsOverviewContainer = () => {\n const [stats, refreshStats] = useStats();\n\n return (\n <StatsPanel stats={stats} onRefresh={refreshStats}>\n <Surface.Surface role='devtools-overview' />\n </StatsPanel>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { DevtoolsOverviewContainer } from './DevtoolsOverviewContainer';\n\nexport default DevtoolsOverviewContainer;\n"],
5
+ "mappings": ";AAIA,OAAOA,WAAW;AAElB,SAASC,eAAe;AACxB,SAASC,YAAYC,gBAAgB;AAE9B,IAAMC,4BAA4B,MAAA;AACvC,QAAM,CAACC,OAAOC,YAAAA,IAAgBC,SAAAA;AAE9B,SACE,sBAAA,cAACC,YAAAA;IAAWH;IAAcI,WAAWH;KACnC,sBAAA,cAACI,QAAQA,SAAO;IAACC,MAAK;;AAG5B;;;ACXA,IAAA,oCAAeC;",
6
+ "names": ["React", "Surface", "StatsPanel", "useStats", "DevtoolsOverviewContainer", "stats", "refreshStats", "useStats", "StatsPanel", "onRefresh", "Surface", "role", "DevtoolsOverviewContainer"]
7
7
  }