@dxos/plugin-debug 0.8.4-main.c1de068 → 0.8.4-main.c85a9c8dae

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 (197) hide show
  1. package/dist/lib/browser/DebugGraph-7HXJ2PS2.mjs +16 -0
  2. package/dist/lib/browser/DebugGraph-7HXJ2PS2.mjs.map +7 -0
  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-C75NFVER.mjs +20 -0
  12. package/dist/lib/browser/DevtoolsOverviewContainer-C75NFVER.mjs.map +7 -0
  13. package/dist/lib/browser/{SpaceGenerator-AG3XGNMV.mjs → SpaceGenerator-SWSGJEEL.mjs} +573 -382
  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-LGUQNXHD.mjs +625 -0
  18. package/dist/lib/browser/app-graph-builder-LGUQNXHD.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-AJA6RYN3.mjs → chunk-4UFQXPP7.mjs} +12 -2
  20. package/dist/lib/browser/chunk-4UFQXPP7.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-A5H5GRV6.mjs +20 -0
  22. package/dist/lib/browser/chunk-A5H5GRV6.mjs.map +7 -0
  23. package/dist/lib/browser/index.mjs +43 -41
  24. package/dist/lib/browser/index.mjs.map +4 -4
  25. package/dist/lib/browser/meta.json +1 -1
  26. package/dist/lib/browser/react-context-I3USIAF6.mjs +17 -0
  27. package/dist/lib/browser/react-context-I3USIAF6.mjs.map +7 -0
  28. package/dist/lib/browser/react-surface-BTVNKKVQ.mjs +443 -0
  29. package/dist/lib/browser/react-surface-BTVNKKVQ.mjs.map +7 -0
  30. package/dist/lib/browser/settings-SLTQJJNF.mjs +32 -0
  31. package/dist/lib/browser/settings-SLTQJJNF.mjs.map +7 -0
  32. package/dist/types/src/DebugPlugin.d.ts +7 -1
  33. package/dist/types/src/DebugPlugin.d.ts.map +1 -1
  34. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +6 -0
  35. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -0
  36. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +3 -0
  37. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +1 -0
  38. package/dist/types/src/capabilities/index.d.ts +4 -8
  39. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  40. package/dist/types/src/capabilities/react-context/index.d.ts +7 -0
  41. package/dist/types/src/capabilities/react-context/index.d.ts.map +1 -0
  42. package/dist/types/src/capabilities/react-context/react-context.d.ts +10 -0
  43. package/dist/types/src/capabilities/react-context/react-context.d.ts.map +1 -0
  44. package/dist/types/src/capabilities/react-surface/index.d.ts +5 -0
  45. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -0
  46. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +9 -0
  47. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -0
  48. package/dist/types/src/capabilities/settings/index.d.ts +3 -0
  49. package/dist/types/src/capabilities/settings/index.d.ts.map +1 -0
  50. package/dist/types/src/capabilities/settings/settings.d.ts +6 -0
  51. package/dist/types/src/capabilities/settings/settings.d.ts.map +1 -0
  52. package/dist/types/src/components/SchemaTable/SchemaTable.d.ts.map +1 -0
  53. package/dist/types/src/components/SchemaTable/index.d.ts +2 -0
  54. package/dist/types/src/components/SchemaTable/index.d.ts.map +1 -0
  55. package/dist/types/src/components/SpaceGenerator/ObjectGenerator.d.ts +5 -5
  56. package/dist/types/src/components/SpaceGenerator/ObjectGenerator.d.ts.map +1 -1
  57. package/dist/types/src/components/SpaceGenerator/draw-util.d.ts.map +1 -1
  58. package/dist/types/src/components/SpaceGenerator/index.d.ts +2 -2
  59. package/dist/types/src/components/SpaceGenerator/index.d.ts.map +1 -1
  60. package/dist/types/src/components/SpaceGenerator/presets.d.ts +4 -4
  61. package/dist/types/src/components/SpaceGenerator/presets.d.ts.map +1 -1
  62. package/dist/types/src/components/index.d.ts +2 -9
  63. package/dist/types/src/components/index.d.ts.map +1 -1
  64. package/dist/types/src/containers/DebugGraph/DebugGraph.d.ts +8 -0
  65. package/dist/types/src/containers/DebugGraph/DebugGraph.d.ts.map +1 -0
  66. package/dist/types/src/containers/DebugGraph/index.d.ts +3 -0
  67. package/dist/types/src/containers/DebugGraph/index.d.ts.map +1 -0
  68. package/dist/types/src/{components → containers/DebugObjectPanel}/DebugObjectPanel.d.ts +2 -2
  69. package/dist/types/src/containers/DebugObjectPanel/DebugObjectPanel.d.ts.map +1 -0
  70. package/dist/types/src/containers/DebugObjectPanel/index.d.ts +3 -0
  71. package/dist/types/src/containers/DebugObjectPanel/index.d.ts.map +1 -0
  72. package/dist/types/src/containers/DebugSettings/DebugSettings.d.ts +10 -0
  73. package/dist/types/src/containers/DebugSettings/DebugSettings.d.ts.map +1 -0
  74. package/dist/types/src/containers/DebugSettings/index.d.ts +3 -0
  75. package/dist/types/src/containers/DebugSettings/index.d.ts.map +1 -0
  76. package/dist/types/src/containers/DebugSpaceObjectsPanel/DebugSpaceObjectsPanel.d.ts +3 -0
  77. package/dist/types/src/containers/DebugSpaceObjectsPanel/DebugSpaceObjectsPanel.d.ts.map +1 -0
  78. package/dist/types/src/containers/DebugSpaceObjectsPanel/index.d.ts +3 -0
  79. package/dist/types/src/containers/DebugSpaceObjectsPanel/index.d.ts.map +1 -0
  80. package/dist/types/src/containers/DebugStatus/DebugStatus.d.ts.map +1 -0
  81. package/dist/types/src/containers/DebugStatus/index.d.ts +3 -0
  82. package/dist/types/src/containers/DebugStatus/index.d.ts.map +1 -0
  83. package/dist/types/src/{components → containers/DevtoolsOverviewContainer}/DevtoolsOverviewContainer.d.ts +0 -1
  84. package/dist/types/src/containers/DevtoolsOverviewContainer/DevtoolsOverviewContainer.d.ts.map +1 -0
  85. package/dist/types/src/containers/DevtoolsOverviewContainer/index.d.ts +3 -0
  86. package/dist/types/src/containers/DevtoolsOverviewContainer/index.d.ts.map +1 -0
  87. package/dist/types/src/{components → containers}/SpaceGenerator/SpaceGenerator.d.ts +2 -2
  88. package/dist/types/src/containers/SpaceGenerator/SpaceGenerator.d.ts.map +1 -0
  89. package/dist/types/src/containers/SpaceGenerator/index.d.ts +3 -0
  90. package/dist/types/src/containers/SpaceGenerator/index.d.ts.map +1 -0
  91. package/dist/types/src/{components → containers/Wireframe}/Wireframe.d.ts +2 -2
  92. package/dist/types/src/containers/Wireframe/Wireframe.d.ts.map +1 -0
  93. package/dist/types/src/containers/Wireframe/index.d.ts +3 -0
  94. package/dist/types/src/containers/Wireframe/index.d.ts.map +1 -0
  95. package/dist/types/src/containers/index.d.ts +10 -0
  96. package/dist/types/src/containers/index.d.ts.map +1 -0
  97. package/dist/types/src/meta.d.ts +2 -3
  98. package/dist/types/src/meta.d.ts.map +1 -1
  99. package/dist/types/src/translations.d.ts +5 -1
  100. package/dist/types/src/translations.d.ts.map +1 -1
  101. package/dist/types/src/types.d.ts +6 -1
  102. package/dist/types/src/types.d.ts.map +1 -1
  103. package/dist/types/tsconfig.tsbuildinfo +1 -1
  104. package/package.json +76 -67
  105. package/src/DebugPlugin.tsx +27 -32
  106. package/src/capabilities/app-graph-builder/app-graph-builder.ts +441 -0
  107. package/src/capabilities/app-graph-builder/index.ts +7 -0
  108. package/src/capabilities/index.ts +4 -6
  109. package/src/capabilities/react-context/index.ts +7 -0
  110. package/src/capabilities/react-context/react-context.tsx +20 -0
  111. package/src/capabilities/react-surface/index.ts +7 -0
  112. package/src/capabilities/react-surface/react-surface.tsx +428 -0
  113. package/src/capabilities/settings/index.ts +7 -0
  114. package/src/capabilities/settings/settings.ts +31 -0
  115. package/src/components/SchemaTable/index.ts +5 -0
  116. package/src/components/SpaceGenerator/ObjectGenerator.tsx +32 -38
  117. package/src/components/SpaceGenerator/draw-util.ts +5 -5
  118. package/src/components/SpaceGenerator/index.ts +2 -3
  119. package/src/components/SpaceGenerator/presets.ts +337 -53
  120. package/src/components/index.ts +2 -10
  121. package/src/containers/DebugGraph/DebugGraph.tsx +13 -0
  122. package/src/containers/DebugGraph/index.ts +7 -0
  123. package/src/containers/DebugObjectPanel/DebugObjectPanel.tsx +45 -0
  124. package/src/containers/DebugObjectPanel/index.ts +7 -0
  125. package/src/containers/DebugSettings/DebugSettings.tsx +201 -0
  126. package/src/containers/DebugSettings/index.ts +7 -0
  127. package/src/containers/DebugSpaceObjectsPanel/DebugSpaceObjectsPanel.tsx +60 -0
  128. package/src/containers/DebugSpaceObjectsPanel/index.ts +7 -0
  129. package/src/{components → containers/DebugStatus}/DebugStatus.tsx +2 -2
  130. package/src/containers/DebugStatus/index.ts +7 -0
  131. package/src/{components → containers/DevtoolsOverviewContainer}/DevtoolsOverviewContainer.tsx +2 -4
  132. package/src/containers/DevtoolsOverviewContainer/index.ts +7 -0
  133. package/src/containers/SpaceGenerator/SpaceGenerator.tsx +127 -0
  134. package/src/containers/SpaceGenerator/index.ts +7 -0
  135. package/src/{components → containers/Wireframe}/Wireframe.tsx +7 -7
  136. package/src/containers/Wireframe/index.ts +7 -0
  137. package/src/containers/index.ts +14 -0
  138. package/src/meta.ts +8 -7
  139. package/src/translations.ts +5 -1
  140. package/src/types.ts +9 -1
  141. package/dist/lib/browser/DebugApp-ZDL4CPY5.mjs +0 -228
  142. package/dist/lib/browser/DebugApp-ZDL4CPY5.mjs.map +0 -7
  143. package/dist/lib/browser/DevtoolsOverviewContainer-EPD6EWT5.mjs +0 -25
  144. package/dist/lib/browser/DevtoolsOverviewContainer-EPD6EWT5.mjs.map +0 -7
  145. package/dist/lib/browser/SpaceGenerator-AG3XGNMV.mjs.map +0 -7
  146. package/dist/lib/browser/app-graph-builder-SQXFD2BL.mjs +0 -597
  147. package/dist/lib/browser/app-graph-builder-SQXFD2BL.mjs.map +0 -7
  148. package/dist/lib/browser/chunk-5XPIRNQS.mjs +0 -18
  149. package/dist/lib/browser/chunk-5XPIRNQS.mjs.map +0 -7
  150. package/dist/lib/browser/chunk-AJA6RYN3.mjs.map +0 -7
  151. package/dist/lib/browser/react-context-NVAGLAJD.mjs +0 -16
  152. package/dist/lib/browser/react-context-NVAGLAJD.mjs.map +0 -7
  153. package/dist/lib/browser/react-surface-3GD2OWCA.mjs +0 -768
  154. package/dist/lib/browser/react-surface-3GD2OWCA.mjs.map +0 -7
  155. package/dist/lib/browser/settings-LSSWLM5I.mjs +0 -22
  156. package/dist/lib/browser/settings-LSSWLM5I.mjs.map +0 -7
  157. package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -4
  158. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
  159. package/dist/types/src/capabilities/react-context.d.ts +0 -8
  160. package/dist/types/src/capabilities/react-context.d.ts.map +0 -1
  161. package/dist/types/src/capabilities/react-surface.d.ts +0 -4
  162. package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
  163. package/dist/types/src/capabilities/settings.d.ts +0 -4
  164. package/dist/types/src/capabilities/settings.d.ts.map +0 -1
  165. package/dist/types/src/components/Container.d.ts +0 -5
  166. package/dist/types/src/components/Container.d.ts.map +0 -1
  167. package/dist/types/src/components/DebugApp/DebugApp.d.ts +0 -6
  168. package/dist/types/src/components/DebugApp/DebugApp.d.ts.map +0 -1
  169. package/dist/types/src/components/DebugApp/Tree.d.ts +0 -18
  170. package/dist/types/src/components/DebugApp/Tree.d.ts.map +0 -1
  171. package/dist/types/src/components/DebugApp/index.d.ts +0 -3
  172. package/dist/types/src/components/DebugApp/index.d.ts.map +0 -1
  173. package/dist/types/src/components/DebugObjectPanel.d.ts.map +0 -1
  174. package/dist/types/src/components/DebugSettings.d.ts +0 -6
  175. package/dist/types/src/components/DebugSettings.d.ts.map +0 -1
  176. package/dist/types/src/components/DebugStatus.d.ts.map +0 -1
  177. package/dist/types/src/components/DevtoolsOverviewContainer.d.ts.map +0 -1
  178. package/dist/types/src/components/SpaceGenerator/SchemaTable.d.ts.map +0 -1
  179. package/dist/types/src/components/SpaceGenerator/SpaceGenerator.d.ts.map +0 -1
  180. package/dist/types/src/components/SpaceGenerator/SpaceGenerator.stories.d.ts +0 -6
  181. package/dist/types/src/components/SpaceGenerator/SpaceGenerator.stories.d.ts.map +0 -1
  182. package/dist/types/src/components/Wireframe.d.ts.map +0 -1
  183. package/src/capabilities/app-graph-builder.ts +0 -457
  184. package/src/capabilities/react-context.tsx +0 -16
  185. package/src/capabilities/react-surface.tsx +0 -397
  186. package/src/capabilities/settings.ts +0 -19
  187. package/src/components/Container.tsx +0 -15
  188. package/src/components/DebugApp/DebugApp.tsx +0 -84
  189. package/src/components/DebugApp/Tree.tsx +0 -103
  190. package/src/components/DebugApp/index.ts +0 -7
  191. package/src/components/DebugObjectPanel.tsx +0 -35
  192. package/src/components/DebugSettings.tsx +0 -151
  193. package/src/components/SpaceGenerator/SpaceGenerator.stories.tsx +0 -52
  194. package/src/components/SpaceGenerator/SpaceGenerator.tsx +0 -122
  195. /package/dist/types/src/components/{SpaceGenerator → SchemaTable}/SchemaTable.d.ts +0 -0
  196. /package/dist/types/src/{components → containers/DebugStatus}/DebugStatus.d.ts +0 -0
  197. /package/src/components/{SpaceGenerator → SchemaTable}/SchemaTable.tsx +0 -0
@@ -0,0 +1,16 @@
1
+ // src/containers/DebugGraph/DebugGraph.tsx
2
+ import React from "react";
3
+ import { Tree } from "@dxos/devtools";
4
+ import { Graph } from "@dxos/plugin-graph";
5
+ var DebugGraph = ({ graph, root }) => {
6
+ return /* @__PURE__ */ React.createElement(Tree, {
7
+ data: Graph.toJSON(graph, root)
8
+ });
9
+ };
10
+
11
+ // src/containers/DebugGraph/index.ts
12
+ var DebugGraph_default = DebugGraph;
13
+ export {
14
+ DebugGraph_default as default
15
+ };
16
+ //# sourceMappingURL=DebugGraph-7HXJ2PS2.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
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
+ }
@@ -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": ";;;;;AAIA,OAAOA,SAASC,WAAWC,gBAAgB;AAE3C,SAASC,uBAAuB;AAChC,SAASC,uBAAuB;AAChC,SAA2BC,YAAYC,SAASC,YAAY;AAC5D,SAAyBC,WAAW;AACpC,SAASC,iBAAiB;AAC1B,SAASC,MAAMC,YAAYC,OAAOC,QAAQC,OAAOC,iBAAiBC,sBAAsB;AACxF,SAASC,gBAAgB;AACzB,SAASC,eAAe;;AAUxB,IAAMC,kBAAkB;EACtBC,MAAMC,KAAKC,QAAQC,OAAOC,QAAQC,cAAcC;EAChDC,KAAKN,KAAKC,QAAQC,OAAOC,QAAQC,cAAcG;AACjD;AAQO,IAAMC,gBAAgB,CAAC,EAAEC,UAAUC,kBAAkBC,UAAS,MAA+B;AAClG,QAAM,EAAEC,EAAC,IAAKC,eAAeC,KAAKC,EAAE;AACpC,QAAM,CAACC,OAAOC,QAAAA,IAAYC,SAAAA;AAC1B,QAAMC,SAASC,UAAAA;AACf,QAAMC,WAAWC,gBAAAA;AAEjB,QAAM,CAACC,eAAeC,gBAAAA,IAAoBN,SAAsB,CAAC,CAAA;AACjE,QAAM,CAACO,MAAAA,IAAUC,gBAAgBC,gBAAgBC,YAAY;AAE7DC,YAAU,MAAA;AACR,SAAK1B,QAAAA,EAAU2B,KAAK,CAACC,WAAWP,iBAAiBO,MAAAA,CAAAA;EACnD,GAAG,CAAA,CAAE;AAEL,QAAMC,cAAc,CAAChB,WAAAA;AACnBC,aAASD,MAAAA;AACT,UAAMJ,KAAIqB,WAAW,MAAMhB,SAASiB,MAAAA,GAAY,GAAA;AAChD,WAAO,MAAMC,aAAavB,EAAAA;EAC5B;AAEA,QAAMwB,iBAAiB,YAAA;AACrB,UAAMC,OAAO,MAAMlB,OAAOmB,YAAW;AACrC,UAAMC,OAAO,IAAIC,KAAK;MAACC,KAAKC,UAAUL,MAAMH,QAAW,CAAA;OAAK;MAC1DS,MAAM;IACR,CAAA;AACA,UAAMC,WAAW,aAAY,oBAAIC,KAAAA,GAAOC,YAAW,EAAGC,QAAQ,OAAO,GAAA,CAAA;AACrE1B,aAASkB,MAAMK,QAAAA;AAEf,QAAInB,QAAQ;AACV,YAAMuB,OAAO,MAAMvB,OAAON,OAAO8B,OAAOC,QAAQC,IAAI,IAAIC,KAAK;QAACb;SAAOK,QAAAA,CAAAA;AACrE,UAAI,CAACI,MAAM;AACTK,YAAIC,MAAM,wCAAA,QAAA;;;;;;AACV;MACF;AACAtB,kBAAY;QACVuB,OAAO3C,EAAE,mBAAA;QACT4C,aAAa5C,EAAE,gCAAA;MACjB,CAAA;AAGA,YAAM6C,MAAMtC,OAAOY,OAAO2B,OAAOC,QAASC,SAAUC,KAAMC,UAAU,MAAMd,KAAKe;AAC/E,WAAKC,UAAUC,UAAUC,UAAUT,GAAAA;AACnCzB,kBAAY;QACVuB,OAAO3C,EAAE,mBAAA;QACT4C,aAAa5C,EAAE,gCAAA;MACjB,CAAA;AACAyC,UAAIL,KAAK,eAAe;QAAES;MAAI,GAAA;;;;;;IAChC;EACF;AAEA,QAAMU,qBAAqB,MAAA;AACzB,UAAMC,SAASzD,UAAU0D,UAAS;AAClC,UAAM9B,OAAO,IAAIC,KAAK;MAAC4B;OAAS;MAAEzB,MAAM;IAAuB,CAAA;AAC/D,UAAMC,WAAW,kBAAiB,oBAAIC,KAAAA,GAAOC,YAAW,EAAGwB,MAAM,GAAG,EAAA,EAAIvB,QAAQ,MAAM,GAAA,CAAA;AACtF1B,aAASkB,MAAMK,QAAAA;EACjB;AAEA,QAAM2B,eAAe,YAAA;AACnB,QAAI;AACF,YAAMvB,OAAO,MAAM7B,OAAOqD,OAAM;AAChChD,uBAAiB,MAAMrB,QAAAA,CAAAA;AACvB6B,kBAAY;QACVuB,OAAO3C,EAAE,yBAAA;QACT4C,aAAaf,KAAKC,UAAUM,MAAMd,QAAW,CAAA;MAC/C,CAAA;IACF,SAASuC,KAAU;AACjBzC,kBAAY;QACVuB,OAAO3C,EAAE,wBAAA;QACT4C,aAAaiB,IAAIC;MACnB,CAAA;IACF;EACF;AAEA,SACE,sBAAA,cAACC,SAASC,MAAI,MACZ,sBAAA,cAACD,SAASE,SAAO;IAACtB,OAAO3C,EAAE,kBAAkB;MAAEkE,IAAIhE,KAAKC;IAAG,CAAA;KACzD,sBAAA,cAAC4D,SAASI,OAAK,MACb,sBAAA,cAACJ,SAASK,WAAS;IAACzB,OAAO3C,EAAE,oBAAA;KAC3B,sBAAA,cAACqE,MAAMC,QAAM;IACXC,SAAS1E,SAAS2E;IAClBC,iBAAiB,CAACF,YAAYzE,iBAAiB,CAAC4E,OAAO;MAAE,GAAGA;MAAGF,WAAW,CAAC,CAACD;IAAQ,EAAA;OAGxF,sBAAA,cAACR,SAASK,WAAS;IAACzB,OAAO3C,EAAE,+BAAA;KAC3B,sBAAA,cAAC2E,YAAAA;IACCC,MAAK;IACLC,UAAAA;IACAC,OAAO9E,EAAE,+BAAA;IACT+E,SAASvD;OAGb,sBAAA,cAACuC,SAASK,WAAS;IAACzB,OAAO3C,EAAE,wBAAA;KAC3B,sBAAA,cAAC2E,YAAAA;IACCC,MAAK;IACLC,UAAAA;IACAC,OAAO9E,EAAE,wBAAA;IACT+E,SAASxB;OAGb,sBAAA,cAACQ,SAASK,WAAS;IAACzB,OAAO3C,EAAE,iBAAA;KAC3B,sBAAA,cAAC2E,YAAAA;IACCC,MAAK;IACLC,UAAAA;IACAC,OAAO9E,EAAE,iBAAA;IACT+E,SAASpB;OAKZvD,SACC,sBAAA,cAAC4E,MAAMhB,MAAI,MACT,sBAAA,cAACgB,MAAMC,MAAI,MACT,sBAAA,cAACD,MAAME,OAAK,MACV,sBAAA,cAACC,MAAAA;IAAKP,MAAK;IAAoBQ,MAAM;IAAGC,YAAW;MACnD,sBAAA,cAACC,QAAAA,MAAMlF,MAAMuC,KAAK,CAAA,GAEnBvC,MAAMwC,eAAe,sBAAA,cAACoC,MAAMO,aAAW,MAAEnF,MAAMwC,WAAW,CAAA,CAAA,GAKjE,sBAAA,cAACmB,SAASK,WAAS;IAACzB,OAAO3C,EAAE,iCAAA;KAC3B,sBAAA,cAACwF,OAAOxB,MAAI;IACVyB,OACEC,OAAOC,QAAQzG,eAAAA,EAAiB0G,KAC9B,CAAC,CAACC,OAAOJ,KAAAA,MAAWA,UAAU9E,eAAeoC,SAASxC,QAAQuF,SAASC,SAAAA,IACrE,CAAA;IAENC,eAAe,CAACP,UAAAA;AACd,UAAIQ,QAAQjG,EAAE,wCAAA,CAAA,GAA4C;AACxDkG,qBACEvF,eACAC,kBACA;UAAC;UAAW;UAAU;UAAW;WACjC1B,gBAAgBuG,KAAAA,CAAsC;MAE1D;IACF;KAEA,sBAAA,cAACD,OAAOW,eAAa;IAACC,aAAapG,EAAE,2BAAA;MACrC,sBAAA,cAACwF,OAAOa,QAAM,MACZ,sBAAA,cAACb,OAAOc,SAAO,MACb,sBAAA,cAACd,OAAOe,UAAQ,MACbb,OAAOc,KAAKtH,eAAAA,EAAiBuH,IAAI,CAACC,QACjC,sBAAA,cAAClB,OAAOmB,QAAM;IAACD;IAAUjB,OAAOiB;KAC7B1G,EAAE,4BAA4B0G,GAAAA,QAAW,CAAA,CAAA,CAAA,GAIhD,sBAAA,cAAClB,OAAOoB,OAAK,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAS/B;AAEA,IAAMV,eAAe,CAAC/E,QAAqB0F,WAA6CC,MAAgBrB,UAAAA;AACtG,QAAMsB,oBAAoBlF,KAAKmF,MAAMnF,KAAKC,UAAUX,UAAU,CAAC,CAAA,CAAA;AAC/D8F,UAAQF,mBAAmBD,MAAMrB,KAAAA;AACjCoB,YAAUE,iBAAAA;AACVG,iBAAe,YAAA;AACb,UAAMC,WAAWJ,iBAAAA;EACnB,CAAA;AACF;;;AClMA,IAAA,wBAAeK;",
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
+ }
@@ -0,0 +1,20 @@
1
+ // src/containers/DevtoolsOverviewContainer/DevtoolsOverviewContainer.tsx
2
+ import React from "react";
3
+ import { Surface } from "@dxos/app-framework/ui";
4
+ import { StatsPanel, useStats } from "@dxos/devtools";
5
+ var DevtoolsOverviewContainer = () => {
6
+ const [stats, refreshStats] = useStats();
7
+ return /* @__PURE__ */ React.createElement(StatsPanel, {
8
+ stats,
9
+ onRefresh: refreshStats
10
+ }, /* @__PURE__ */ React.createElement(Surface.Surface, {
11
+ role: "devtools-overview"
12
+ }));
13
+ };
14
+
15
+ // src/containers/DevtoolsOverviewContainer/index.ts
16
+ var DevtoolsOverviewContainer_default = DevtoolsOverviewContainer;
17
+ export {
18
+ DevtoolsOverviewContainer_default as default
19
+ };
20
+ //# sourceMappingURL=DevtoolsOverviewContainer-C75NFVER.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
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
+ }