@dxos/plugin-debug 0.8.4-main.72ec0f3 → 0.8.4-main.7996785055

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 (189) 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-KXVFOGU6.mjs +35 -0
  4. package/dist/lib/browser/DebugObjectPanel-KXVFOGU6.mjs.map +7 -0
  5. package/dist/lib/browser/DebugSettings-DQXOXF6A.mjs +183 -0
  6. package/dist/lib/browser/DebugSettings-DQXOXF6A.mjs.map +7 -0
  7. package/dist/lib/browser/DebugSpaceObjectsPanel-SIK72DXV.mjs +45 -0
  8. package/dist/lib/browser/DebugSpaceObjectsPanel-SIK72DXV.mjs.map +7 -0
  9. package/dist/lib/browser/DebugStatus-FWF3YFBA.mjs +124 -0
  10. package/dist/lib/browser/DebugStatus-FWF3YFBA.mjs.map +7 -0
  11. package/dist/lib/browser/DevtoolsOverviewContainer-TBTTPXVF.mjs +24 -0
  12. package/dist/lib/browser/DevtoolsOverviewContainer-TBTTPXVF.mjs.map +7 -0
  13. package/dist/lib/browser/{SpaceGenerator-46TAISVE.mjs → SpaceGenerator-UUQS6TYY.mjs} +455 -425
  14. package/dist/lib/browser/SpaceGenerator-UUQS6TYY.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-FBLOEOH5.mjs +594 -0
  18. package/dist/lib/browser/app-graph-builder-FBLOEOH5.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-SRV2AIGJ.mjs → chunk-Q37TZWW5.mjs} +12 -2
  20. package/dist/lib/browser/chunk-Q37TZWW5.mjs.map +7 -0
  21. package/dist/lib/browser/{chunk-WZFZ4ESO.mjs → chunk-ZOM2FBHQ.mjs} +2 -2
  22. package/dist/lib/browser/chunk-ZOM2FBHQ.mjs.map +7 -0
  23. package/dist/lib/browser/index.mjs +40 -38
  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-KBHXEMRS.mjs +18 -0
  27. package/dist/lib/browser/react-context-KBHXEMRS.mjs.map +7 -0
  28. package/dist/lib/browser/react-surface-HYT4HKZX.mjs +428 -0
  29. package/dist/lib/browser/react-surface-HYT4HKZX.mjs.map +7 -0
  30. package/dist/lib/browser/settings-XXFUM3QJ.mjs +32 -0
  31. package/dist/lib/browser/settings-XXFUM3QJ.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/index.d.ts +2 -2
  58. package/dist/types/src/components/SpaceGenerator/index.d.ts.map +1 -1
  59. package/dist/types/src/components/SpaceGenerator/presets.d.ts +1 -4
  60. package/dist/types/src/components/SpaceGenerator/presets.d.ts.map +1 -1
  61. package/dist/types/src/components/index.d.ts +2 -10
  62. package/dist/types/src/components/index.d.ts.map +1 -1
  63. package/dist/types/src/containers/DebugGraph/DebugGraph.d.ts +8 -0
  64. package/dist/types/src/containers/DebugGraph/DebugGraph.d.ts.map +1 -0
  65. package/dist/types/src/containers/DebugGraph/index.d.ts +3 -0
  66. package/dist/types/src/containers/DebugGraph/index.d.ts.map +1 -0
  67. package/dist/types/src/{components → containers/DebugObjectPanel}/DebugObjectPanel.d.ts +2 -2
  68. package/dist/types/src/containers/DebugObjectPanel/DebugObjectPanel.d.ts.map +1 -0
  69. package/dist/types/src/containers/DebugObjectPanel/index.d.ts +3 -0
  70. package/dist/types/src/containers/DebugObjectPanel/index.d.ts.map +1 -0
  71. package/dist/types/src/containers/DebugSettings/DebugSettings.d.ts +10 -0
  72. package/dist/types/src/containers/DebugSettings/DebugSettings.d.ts.map +1 -0
  73. package/dist/types/src/containers/DebugSettings/index.d.ts +3 -0
  74. package/dist/types/src/containers/DebugSettings/index.d.ts.map +1 -0
  75. package/dist/types/src/containers/DebugSpaceObjectsPanel/DebugSpaceObjectsPanel.d.ts +3 -0
  76. package/dist/types/src/containers/DebugSpaceObjectsPanel/DebugSpaceObjectsPanel.d.ts.map +1 -0
  77. package/dist/types/src/containers/DebugSpaceObjectsPanel/index.d.ts +3 -0
  78. package/dist/types/src/containers/DebugSpaceObjectsPanel/index.d.ts.map +1 -0
  79. package/dist/types/src/containers/DebugStatus/DebugStatus.d.ts.map +1 -0
  80. package/dist/types/src/containers/DebugStatus/index.d.ts +3 -0
  81. package/dist/types/src/containers/DebugStatus/index.d.ts.map +1 -0
  82. package/dist/types/src/{components → containers/DevtoolsOverviewContainer}/DevtoolsOverviewContainer.d.ts +0 -1
  83. package/dist/types/src/containers/DevtoolsOverviewContainer/DevtoolsOverviewContainer.d.ts.map +1 -0
  84. package/dist/types/src/containers/DevtoolsOverviewContainer/index.d.ts +3 -0
  85. package/dist/types/src/containers/DevtoolsOverviewContainer/index.d.ts.map +1 -0
  86. package/dist/types/src/containers/SpaceGenerator/SpaceGenerator.d.ts +15 -0
  87. package/dist/types/src/containers/SpaceGenerator/SpaceGenerator.d.ts.map +1 -0
  88. package/dist/types/src/containers/SpaceGenerator/index.d.ts +3 -0
  89. package/dist/types/src/containers/SpaceGenerator/index.d.ts.map +1 -0
  90. package/dist/types/src/{components → containers/Wireframe}/Wireframe.d.ts +1 -1
  91. package/dist/types/src/containers/Wireframe/Wireframe.d.ts.map +1 -0
  92. package/dist/types/src/containers/Wireframe/index.d.ts +3 -0
  93. package/dist/types/src/containers/Wireframe/index.d.ts.map +1 -0
  94. package/dist/types/src/containers/index.d.ts +10 -0
  95. package/dist/types/src/containers/index.d.ts.map +1 -0
  96. package/dist/types/src/meta.d.ts +2 -2
  97. package/dist/types/src/meta.d.ts.map +1 -1
  98. package/dist/types/src/translations.d.ts +2 -0
  99. package/dist/types/src/translations.d.ts.map +1 -1
  100. package/dist/types/src/types.d.ts +39 -34
  101. package/dist/types/src/types.d.ts.map +1 -1
  102. package/dist/types/tsconfig.tsbuildinfo +1 -1
  103. package/package.json +75 -70
  104. package/src/DebugPlugin.tsx +27 -31
  105. package/src/capabilities/app-graph-builder/app-graph-builder.ts +419 -0
  106. package/src/capabilities/app-graph-builder/index.ts +7 -0
  107. package/src/capabilities/index.ts +4 -6
  108. package/src/capabilities/react-context/index.ts +7 -0
  109. package/src/capabilities/react-context/react-context.tsx +25 -0
  110. package/src/capabilities/react-surface/index.ts +7 -0
  111. package/src/capabilities/react-surface/react-surface.tsx +414 -0
  112. package/src/capabilities/settings/index.ts +7 -0
  113. package/src/capabilities/settings/settings.ts +31 -0
  114. package/src/components/{SpaceGenerator → SchemaTable}/SchemaTable.tsx +2 -2
  115. package/src/components/SchemaTable/index.ts +5 -0
  116. package/src/components/SpaceGenerator/ObjectGenerator.tsx +19 -21
  117. package/src/components/SpaceGenerator/index.ts +2 -3
  118. package/src/components/SpaceGenerator/presets.ts +196 -75
  119. package/src/components/index.ts +2 -10
  120. package/src/containers/DebugGraph/DebugGraph.tsx +13 -0
  121. package/src/containers/DebugGraph/index.ts +7 -0
  122. package/src/containers/DebugObjectPanel/DebugObjectPanel.tsx +47 -0
  123. package/src/containers/DebugObjectPanel/index.ts +7 -0
  124. package/src/{components → containers/DebugSettings}/DebugSettings.tsx +51 -25
  125. package/src/containers/DebugSettings/index.ts +7 -0
  126. package/src/containers/DebugSpaceObjectsPanel/DebugSpaceObjectsPanel.tsx +55 -0
  127. package/src/containers/DebugSpaceObjectsPanel/index.ts +7 -0
  128. package/src/{components → containers/DebugStatus}/DebugStatus.tsx +40 -16
  129. package/src/containers/DebugStatus/index.ts +7 -0
  130. package/src/containers/DevtoolsOverviewContainer/DevtoolsOverviewContainer.tsx +25 -0
  131. package/src/containers/DevtoolsOverviewContainer/index.ts +7 -0
  132. package/src/containers/SpaceGenerator/SpaceGenerator.tsx +130 -0
  133. package/src/containers/SpaceGenerator/index.ts +7 -0
  134. package/src/{components → containers/Wireframe}/Wireframe.tsx +4 -4
  135. package/src/containers/Wireframe/index.ts +7 -0
  136. package/src/containers/index.ts +14 -0
  137. package/src/meta.ts +3 -3
  138. package/src/translations.ts +2 -0
  139. package/src/types.ts +9 -2
  140. package/dist/lib/browser/DebugGraph-EDOH6R2G.mjs +0 -20
  141. package/dist/lib/browser/DebugGraph-EDOH6R2G.mjs.map +0 -7
  142. package/dist/lib/browser/DevtoolsOverviewContainer-JXVZVPHN.mjs +0 -25
  143. package/dist/lib/browser/DevtoolsOverviewContainer-JXVZVPHN.mjs.map +0 -7
  144. package/dist/lib/browser/SpaceGenerator-46TAISVE.mjs.map +0 -7
  145. package/dist/lib/browser/app-graph-builder-CRH2HJKT.mjs +0 -588
  146. package/dist/lib/browser/app-graph-builder-CRH2HJKT.mjs.map +0 -7
  147. package/dist/lib/browser/chunk-SRV2AIGJ.mjs.map +0 -7
  148. package/dist/lib/browser/chunk-WZFZ4ESO.mjs.map +0 -7
  149. package/dist/lib/browser/react-context-P2YDWEWI.mjs +0 -16
  150. package/dist/lib/browser/react-context-P2YDWEWI.mjs.map +0 -7
  151. package/dist/lib/browser/react-surface-2SNVZDEA.mjs +0 -774
  152. package/dist/lib/browser/react-surface-2SNVZDEA.mjs.map +0 -7
  153. package/dist/lib/browser/settings-SQXR3OAH.mjs +0 -22
  154. package/dist/lib/browser/settings-SQXR3OAH.mjs.map +0 -7
  155. package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -4
  156. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
  157. package/dist/types/src/capabilities/react-context.d.ts +0 -8
  158. package/dist/types/src/capabilities/react-context.d.ts.map +0 -1
  159. package/dist/types/src/capabilities/react-surface.d.ts +0 -4
  160. package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
  161. package/dist/types/src/capabilities/settings.d.ts +0 -4
  162. package/dist/types/src/capabilities/settings.d.ts.map +0 -1
  163. package/dist/types/src/components/Container.d.ts +0 -5
  164. package/dist/types/src/components/Container.d.ts.map +0 -1
  165. package/dist/types/src/components/DebugGraph.d.ts +0 -8
  166. package/dist/types/src/components/DebugGraph.d.ts.map +0 -1
  167. package/dist/types/src/components/DebugObjectPanel.d.ts.map +0 -1
  168. package/dist/types/src/components/DebugSettings.d.ts +0 -6
  169. package/dist/types/src/components/DebugSettings.d.ts.map +0 -1
  170. package/dist/types/src/components/DebugStatus.d.ts.map +0 -1
  171. package/dist/types/src/components/DevtoolsOverviewContainer.d.ts.map +0 -1
  172. package/dist/types/src/components/SpaceGenerator/SchemaTable.d.ts.map +0 -1
  173. package/dist/types/src/components/SpaceGenerator/SpaceGenerator.d.ts +0 -9
  174. package/dist/types/src/components/SpaceGenerator/SpaceGenerator.d.ts.map +0 -1
  175. package/dist/types/src/components/SpaceGenerator/SpaceGenerator.stories.d.ts +0 -15
  176. package/dist/types/src/components/SpaceGenerator/SpaceGenerator.stories.d.ts.map +0 -1
  177. package/dist/types/src/components/Wireframe.d.ts.map +0 -1
  178. package/src/capabilities/app-graph-builder.ts +0 -431
  179. package/src/capabilities/react-context.tsx +0 -16
  180. package/src/capabilities/react-surface.tsx +0 -418
  181. package/src/capabilities/settings.ts +0 -19
  182. package/src/components/Container.tsx +0 -15
  183. package/src/components/DebugGraph.tsx +0 -14
  184. package/src/components/DebugObjectPanel.tsx +0 -33
  185. package/src/components/DevtoolsOverviewContainer.tsx +0 -20
  186. package/src/components/SpaceGenerator/SpaceGenerator.stories.tsx +0 -52
  187. package/src/components/SpaceGenerator/SpaceGenerator.tsx +0 -122
  188. /package/dist/types/src/components/{SpaceGenerator → SchemaTable}/SchemaTable.d.ts +0 -0
  189. /package/dist/types/src/{components → containers/DebugStatus}/DebugStatus.d.ts +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,35 @@
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, Toolbar } 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.Toolbar, {
15
+ asChild: true
16
+ }, /* @__PURE__ */ React.createElement(Toolbar.Root, null)), /* @__PURE__ */ React.createElement(Panel.Content, {
17
+ asChild: true
18
+ }, /* @__PURE__ */ React.createElement(Grid, {
19
+ rows: db ? 2 : 1,
20
+ classNames: "divide-y divide-separator"
21
+ }, db && /* @__PURE__ */ React.createElement(ScrollArea.Root, null, /* @__PURE__ */ React.createElement(ScrollArea.Viewport, null, /* @__PURE__ */ React.createElement(ObjectsTree, {
22
+ db,
23
+ root: object,
24
+ onSelect: (entity) => setSelectedId(entity.id)
25
+ }))), /* @__PURE__ */ React.createElement(Json, {
26
+ data: selectedObject
27
+ })))));
28
+ };
29
+
30
+ // src/containers/DebugObjectPanel/index.ts
31
+ var DebugObjectPanel_default = DebugObjectPanel;
32
+ export {
33
+ DebugObjectPanel_default as default
34
+ };
35
+ //# sourceMappingURL=DebugObjectPanel-KXVFOGU6.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, Toolbar } 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 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.Toolbar asChild>\n <Toolbar.Root />\n </Panel.Toolbar>\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,YAAYC,eAAe;AAC5D,SAASC,YAAY;AAMd,IAAMC,mBAAmB,CAAC,EAAEC,OAAM,MAAyB;AAChE,QAAMC,KAAKC,IAAIC,YAAYH,MAAAA;AAC3B,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,cAACD,QAAQD,MAAI,IAAA,CAAA,GAEf,sBAAA,cAACD,MAAMI,SAAO;IAACD,SAAAA;KACb,sBAAA,cAACE,MAAAA;IAAKC,MAAMtB,KAAK,IAAI;IAAGuB,YAAW;KAChCvB,MACC,sBAAA,cAACwB,WAAWP,MAAI,MACd,sBAAA,cAACO,WAAWC,UAAQ,MAClB,sBAAA,cAACC,aAAAA;IAAY1B;IAAQ2B,MAAM5B;IAAQ6B,UAAU,CAACC,WAAWzB,cAAcyB,OAAOlB,EAAE;QAItF,sBAAA,cAACmB,MAAAA;IAAKC,MAAMzB;;AAMxB;;;ACxCA,IAAA,2BAAe0B;",
6
+ "names": ["React", "useState", "ObjectsTree", "Filter", "Obj", "Query", "useQuery", "Clipboard", "Grid", "Panel", "ScrollArea", "Toolbar", "Json", "DebugObjectPanel", "object", "db", "Obj", "getDatabase", "selectedId", "setSelectedId", "useState", "selectedObject", "useQuery", "Query", "select", "Filter", "id", "options", "deleted", "Clipboard", "Provider", "Panel", "Root", "Toolbar", "asChild", "Content", "Grid", "rows", "classNames", "ScrollArea", "Viewport", "ObjectsTree", "root", "onSelect", "entity", "Json", "data", "DebugObjectPanel"]
7
+ }
@@ -0,0 +1,183 @@
1
+ import {
2
+ meta
3
+ } from "./chunk-ZOM2FBHQ.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, getPersonalSpace } 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 personalSpace = getPersonalSpace(client);
46
+ if (!personalSpace) {
47
+ log.error("no personal space available for upload", void 0, {
48
+ F: __dxlog_file,
49
+ L: 65,
50
+ S: void 0,
51
+ C: (f, a) => f(...a)
52
+ });
53
+ return;
54
+ }
55
+ const info = await upload(personalSpace.db, new File([
56
+ file
57
+ ], fileName));
58
+ if (!info) {
59
+ log.error("diagnostics failed to upload to IPFS", void 0, {
60
+ F: __dxlog_file,
61
+ L: 70,
62
+ S: void 0,
63
+ C: (f, a) => f(...a)
64
+ });
65
+ return;
66
+ }
67
+ handleToast({
68
+ title: t("settings uploaded"),
69
+ description: t("settings uploaded to clipboard")
70
+ });
71
+ const url = client.config.values.runtime.services.ipfs.gateway + "/" + info.cid;
72
+ void navigator.clipboard.writeText(url);
73
+ handleToast({
74
+ title: t("settings uploaded"),
75
+ description: t("settings uploaded to clipboard")
76
+ });
77
+ log.info("diagnostics", {
78
+ url
79
+ }, {
80
+ F: __dxlog_file,
81
+ L: 85,
82
+ S: void 0,
83
+ C: (f, a) => f(...a)
84
+ });
85
+ }
86
+ };
87
+ const handleDownloadLogs = () => {
88
+ const ndjson = logBuffer.serialize();
89
+ const file = new Blob([
90
+ ndjson
91
+ ], {
92
+ type: "application/x-ndjson"
93
+ });
94
+ const fileName = `composer-logs-${(/* @__PURE__ */ new Date()).toISOString().slice(0, 19).replace(/:/g, "-")}.ndjson`;
95
+ download(file, fileName);
96
+ };
97
+ const handleRepair = async () => {
98
+ try {
99
+ const info = await client.repair();
100
+ setStorageConfig(await Storage());
101
+ handleToast({
102
+ title: t("settings repair success"),
103
+ description: JSON.stringify(info, void 0, 2)
104
+ });
105
+ } catch (err) {
106
+ handleToast({
107
+ title: t("settings repair failed"),
108
+ description: err.message
109
+ });
110
+ }
111
+ };
112
+ return /* @__PURE__ */ React.createElement(Settings.Root, null, /* @__PURE__ */ React.createElement(Settings.Section, {
113
+ title: t("settings title", {
114
+ ns: meta.id
115
+ })
116
+ }, /* @__PURE__ */ React.createElement(Settings.Group, null, /* @__PURE__ */ React.createElement(Settings.ItemInput, {
117
+ title: t("settings wireframe")
118
+ }, /* @__PURE__ */ React.createElement(Input.Switch, {
119
+ checked: settings.wireframe,
120
+ onCheckedChange: (checked) => onSettingsChange((s) => ({
121
+ ...s,
122
+ wireframe: !!checked
123
+ }))
124
+ })), /* @__PURE__ */ React.createElement(Settings.ItemInput, {
125
+ title: t("settings download diagnostics")
126
+ }, /* @__PURE__ */ React.createElement(IconButton, {
127
+ icon: "ph--download-simple--regular",
128
+ iconOnly: true,
129
+ label: t("settings download diagnostics"),
130
+ onClick: handleDownload
131
+ })), /* @__PURE__ */ React.createElement(Settings.ItemInput, {
132
+ title: t("settings download logs")
133
+ }, /* @__PURE__ */ React.createElement(IconButton, {
134
+ icon: "ph--download-simple--regular",
135
+ iconOnly: true,
136
+ label: t("settings download logs"),
137
+ onClick: handleDownloadLogs
138
+ })), /* @__PURE__ */ React.createElement(Settings.ItemInput, {
139
+ title: t("settings repair")
140
+ }, /* @__PURE__ */ React.createElement(IconButton, {
141
+ icon: "ph--first-aid-kit--regular",
142
+ iconOnly: true,
143
+ label: t("settings repair"),
144
+ onClick: handleRepair
145
+ })), toast && /* @__PURE__ */ React.createElement(Toast.Root, null, /* @__PURE__ */ React.createElement(Toast.Body, null, /* @__PURE__ */ React.createElement(Toast.Title, null, /* @__PURE__ */ React.createElement(Icon, {
146
+ icon: "ph--gift--duotone",
147
+ classNames: "inline mr-1"
148
+ }), /* @__PURE__ */ React.createElement("span", null, toast.title)), toast.description && /* @__PURE__ */ React.createElement(Toast.Description, null, toast.description))), /* @__PURE__ */ React.createElement(Settings.ItemInput, {
149
+ title: t("settings choose storage adaptor")
150
+ }, /* @__PURE__ */ React.createElement(Select.Root, {
151
+ value: Object.entries(StorageAdapters).find(([_name, value]) => value === storageConfig?.runtime?.client?.storage?.dataStore)?.[0],
152
+ onValueChange: (value) => {
153
+ if (confirm(t("settings storage adapter changed alert"))) {
154
+ updateConfig(storageConfig, setStorageConfig, [
155
+ "runtime",
156
+ "client",
157
+ "storage",
158
+ "dataStore"
159
+ ], StorageAdapters[value]);
160
+ }
161
+ }
162
+ }, /* @__PURE__ */ React.createElement(Select.TriggerButton, {
163
+ placeholder: t("settings data store label")
164
+ }), /* @__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, {
165
+ key,
166
+ value: key
167
+ }, t(`settings storage adaptor ${key} label`)))), /* @__PURE__ */ React.createElement(Select.Arrow, null))))))));
168
+ };
169
+ var updateConfig = (config, setConfig, path, value) => {
170
+ const storageConfigCopy = JSON.parse(JSON.stringify(config ?? {}));
171
+ setDeep(storageConfigCopy, path, value);
172
+ setConfig(storageConfigCopy);
173
+ queueMicrotask(async () => {
174
+ await SaveConfig(storageConfigCopy);
175
+ });
176
+ };
177
+
178
+ // src/containers/DebugSettings/index.ts
179
+ var DebugSettings_default = DebugSettings;
180
+ export {
181
+ DebugSettings_default as default
182
+ };
183
+ //# sourceMappingURL=DebugSettings-DQXOXF6A.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, getPersonalSpace } 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 personalSpace = getPersonalSpace(client);\n if (!personalSpace) {\n log.error('no personal space available for upload');\n return;\n }\n const info = await upload(personalSpace.db, new File([file], fileName));\n if (!info) {\n log.error('diagnostics failed to upload to IPFS');\n return;\n }\n handleToast({\n title: t('settings uploaded'),\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' 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", "getPersonalSpace", "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", "personalSpace", "getPersonalSpace", "log", "error", "info", "db", "File", "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", "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,45 @@
1
+ // src/containers/DebugSpaceObjectsPanel/DebugSpaceObjectsPanel.tsx
2
+ import React, { useState } from "react";
3
+ import { ObjectsTree } from "@dxos/devtools";
4
+ import { Filter, Query } from "@dxos/echo";
5
+ import { useActiveSpace } from "@dxos/plugin-space";
6
+ import { useQuery } from "@dxos/react-client/echo";
7
+ import { Clipboard, Grid, Input, Panel, ScrollArea, Toolbar } from "@dxos/react-ui";
8
+ import { Json } from "@dxos/react-ui-syntax-highlighter";
9
+ var DebugSpaceObjectsPanel = () => {
10
+ const space = useActiveSpace();
11
+ if (!space) {
12
+ return null;
13
+ }
14
+ return /* @__PURE__ */ React.createElement(DebugSpaceObjectsPanelMain, {
15
+ database: space.db
16
+ });
17
+ };
18
+ var DebugSpaceObjectsPanelMain = ({ database }) => {
19
+ const [selectedId, setSelectedId] = useState(null);
20
+ const [selectedObject] = useQuery(database, selectedId ? Query.select(Filter.id(selectedId)) : Query.select(Filter.nothing()));
21
+ return /* @__PURE__ */ React.createElement(Clipboard.Provider, null, /* @__PURE__ */ React.createElement(Panel.Root, null, /* @__PURE__ */ React.createElement(Panel.Toolbar, {
22
+ asChild: true
23
+ }, /* @__PURE__ */ React.createElement(Toolbar.Root, null, /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.TextInput, {
24
+ disabled: true,
25
+ placeholder: "Search..."
26
+ })))), /* @__PURE__ */ React.createElement(Panel.Content, {
27
+ asChild: true
28
+ }, /* @__PURE__ */ React.createElement(Grid, {
29
+ rows: 2,
30
+ classNames: "divide-y divide-separator"
31
+ }, /* @__PURE__ */ React.createElement(ScrollArea.Root, null, /* @__PURE__ */ React.createElement(ScrollArea.Viewport, null, /* @__PURE__ */ React.createElement(ObjectsTree, {
32
+ db: database,
33
+ onSelect: (entity) => setSelectedId(entity.id)
34
+ }))), selectedObject && /* @__PURE__ */ React.createElement(Json, {
35
+ classNames: "p-1",
36
+ data: selectedObject
37
+ })))));
38
+ };
39
+
40
+ // src/containers/DebugSpaceObjectsPanel/index.ts
41
+ var DebugSpaceObjectsPanel_default = DebugSpaceObjectsPanel;
42
+ export {
43
+ DebugSpaceObjectsPanel_default as default
44
+ };
45
+ //# sourceMappingURL=DebugSpaceObjectsPanel-SIK72DXV.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 { ObjectsTree } from '@dxos/devtools';\nimport { type Database, Filter, Query } from '@dxos/echo';\nimport type { ObjectId } from '@dxos/keys';\nimport { useActiveSpace } from '@dxos/plugin-space';\nimport { 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 space = useActiveSpace();\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,mBAAmB;AAC5B,SAAwBC,QAAQC,aAAa;AAE7C,SAASC,sBAAsB;AAC/B,SAASC,gBAAgB;AACzB,SAASC,WAAWC,MAAMC,OAAOC,OAAOC,YAAYC,eAAe;AACnE,SAASC,YAAY;AAEd,IAAMC,yBAAyB,MAAA;AACpC,QAAMC,QAAQC,eAAAA;AACd,MAAI,CAACD,OAAO;AACV,WAAO;EACT;AAEA,SAAO,sBAAA,cAACE,4BAAAA;IAA2BC,UAAUH,MAAMI;;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;;;AChDA,IAAA,iCAAe4B;",
6
+ "names": ["React", "useState", "ObjectsTree", "Filter", "Query", "useActiveSpace", "useQuery", "Clipboard", "Grid", "Input", "Panel", "ScrollArea", "Toolbar", "Json", "DebugSpaceObjectsPanel", "space", "useActiveSpace", "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,124 @@
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 { IconButton } 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.Item, null, /* @__PURE__ */ React.createElement(IconButton, {
38
+ icon: "ph--warning-circle--duotone",
39
+ iconOnly: true,
40
+ label: errorRef.current.message,
41
+ classNames: styles.error,
42
+ onClick: handleReset
43
+ }));
44
+ } else {
45
+ return /* @__PURE__ */ React.createElement(StatusBar.Item, null, /* @__PURE__ */ React.createElement(IconButton, {
46
+ variant: "ghost",
47
+ icon: "ph--check--regular",
48
+ iconOnly: true,
49
+ label: "No errors."
50
+ }));
51
+ }
52
+ };
53
+ var SwarmIndicator = () => {
54
+ const [state, setState] = useState(0);
55
+ const { swarm } = useNetworkStatus();
56
+ useEffect(() => {
57
+ setState(swarm === ConnectionState.ONLINE ? 0 : 1);
58
+ }, [
59
+ swarm
60
+ ]);
61
+ if (state === 0) {
62
+ return /* @__PURE__ */ React.createElement(StatusBar.Item, null, /* @__PURE__ */ React.createElement(IconButton, {
63
+ variant: "ghost",
64
+ icon: "ph--lightning--regular",
65
+ iconOnly: true,
66
+ label: "Connected to swarm."
67
+ }));
68
+ } else {
69
+ return /* @__PURE__ */ React.createElement(StatusBar.Item, null, /* @__PURE__ */ React.createElement(IconButton, {
70
+ variant: "ghost",
71
+ icon: "ph--lightning-slash--regular",
72
+ iconOnly: true,
73
+ label: "Disconnected from swarm.",
74
+ classNames: styles.warning
75
+ }));
76
+ }
77
+ };
78
+ var SavingIndicator = () => {
79
+ const [state, _setState] = useState(0);
80
+ const _space = useActiveSpace();
81
+ switch (state) {
82
+ case 2:
83
+ return /* @__PURE__ */ React.createElement(StatusBar.Item, null, /* @__PURE__ */ React.createElement(IconButton, {
84
+ variant: "ghost",
85
+ icon: "ph--circle--duotone",
86
+ iconOnly: true,
87
+ label: "Edit not saved.",
88
+ classNames: styles.warning
89
+ }));
90
+ case 1:
91
+ return /* @__PURE__ */ React.createElement(StatusBar.Item, null, /* @__PURE__ */ React.createElement(IconButton, {
92
+ variant: "ghost",
93
+ icon: "ph--circle--duotone",
94
+ iconOnly: true,
95
+ label: "Saving...",
96
+ classNames: styles.success
97
+ }));
98
+ case 0:
99
+ default:
100
+ return /* @__PURE__ */ React.createElement(StatusBar.Item, null, /* @__PURE__ */ React.createElement(IconButton, {
101
+ variant: "ghost",
102
+ icon: "ph--circle--duotone",
103
+ iconOnly: true,
104
+ label: "Modified indicator."
105
+ }));
106
+ }
107
+ };
108
+ var indicators = [
109
+ SavingIndicator,
110
+ SwarmIndicator,
111
+ ErrorIndicator
112
+ ];
113
+ var DebugStatus = () => {
114
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, indicators.map((Indicator) => /* @__PURE__ */ React.createElement(Indicator, {
115
+ key: Indicator.name
116
+ })));
117
+ };
118
+
119
+ // src/containers/DebugStatus/index.ts
120
+ var DebugStatus_default = DebugStatus;
121
+ export {
122
+ DebugStatus_default as default
123
+ };
124
+ //# sourceMappingURL=DebugStatus-FWF3YFBA.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 { IconButton } 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.Item>\n <IconButton\n icon='ph--warning-circle--duotone'\n iconOnly\n label={errorRef.current.message}\n classNames={styles.error}\n onClick={handleReset}\n />\n </StatusBar.Item>\n );\n } else {\n return (\n <StatusBar.Item>\n <IconButton variant='ghost' icon='ph--check--regular' iconOnly label='No errors.' />\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>\n <IconButton variant='ghost' icon='ph--lightning--regular' iconOnly label='Connected to swarm.' />\n </StatusBar.Item>\n );\n } else {\n return (\n <StatusBar.Item>\n <IconButton\n variant='ghost'\n icon='ph--lightning-slash--regular'\n iconOnly\n label='Disconnected from swarm.'\n classNames={styles.warning}\n />\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>\n <IconButton\n variant='ghost'\n icon='ph--circle--duotone'\n iconOnly\n label='Edit not saved.'\n classNames={styles.warning}\n />\n </StatusBar.Item>\n );\n case 1:\n return (\n <StatusBar.Item>\n <IconButton\n variant='ghost'\n icon='ph--circle--duotone'\n iconOnly\n label='Saving...'\n classNames={styles.success}\n />\n </StatusBar.Item>\n );\n case 0:\n default:\n return (\n <StatusBar.Item>\n <IconButton variant='ghost' icon='ph--circle--duotone' iconOnly label='Modified indicator.' />\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", "IconButton", "styles", "success", "warning", "error", "ErrorIndicator", "forceUpdate", "useState", "errorRef", "useRef", "useEffect", "errorListener", "event", "error", "reason", "current", "window", "addEventListener", "removeEventListener", "handleReset", "StatusBar", "Item", "IconButton", "icon", "iconOnly", "label", "message", "classNames", "styles", "onClick", "variant", "SwarmIndicator", "state", "setState", "swarm", "useNetworkStatus", "ConnectionState", "ONLINE", "warning", "SavingIndicator", "_setState", "_space", "useActiveSpace", "success", "indicators", "DebugStatus", "map", "Indicator", "key", "name", "DebugStatus"]
7
+ }
@@ -0,0 +1,24 @@
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
+ const surfaceProfilerStats = Surface.useProfilerStats();
8
+ const clearSurfaceProfiler = Surface.useProfilerClear();
9
+ return /* @__PURE__ */ React.createElement(StatsPanel, {
10
+ stats,
11
+ surfaceProfilerStats,
12
+ onRefresh: refreshStats,
13
+ onClearSurfaceProfiler: clearSurfaceProfiler
14
+ }, /* @__PURE__ */ React.createElement(Surface.Surface, {
15
+ role: "devtools-overview"
16
+ }));
17
+ };
18
+
19
+ // src/containers/DevtoolsOverviewContainer/index.ts
20
+ var DevtoolsOverviewContainer_default = DevtoolsOverviewContainer;
21
+ export {
22
+ DevtoolsOverviewContainer_default as default
23
+ };
24
+ //# sourceMappingURL=DevtoolsOverviewContainer-TBTTPXVF.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 const surfaceProfilerStats = Surface.useProfilerStats();\n const clearSurfaceProfiler = Surface.useProfilerClear();\n\n return (\n <StatsPanel\n stats={stats}\n surfaceProfilerStats={surfaceProfilerStats}\n onRefresh={refreshStats}\n onClearSurfaceProfiler={clearSurfaceProfiler}\n >\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;AAC9B,QAAMC,uBAAuBC,QAAQC,iBAAgB;AACrD,QAAMC,uBAAuBF,QAAQG,iBAAgB;AAErD,SACE,sBAAA,cAACC,YAAAA;IACCR;IACAG;IACAM,WAAWR;IACXS,wBAAwBJ;KAExB,sBAAA,cAACF,QAAQA,SAAO;IAACO,MAAK;;AAG5B;;;AClBA,IAAA,oCAAeC;",
6
+ "names": ["React", "Surface", "StatsPanel", "useStats", "DevtoolsOverviewContainer", "stats", "refreshStats", "useStats", "surfaceProfilerStats", "Surface", "useProfilerStats", "clearSurfaceProfiler", "useProfilerClear", "StatsPanel", "onRefresh", "onClearSurfaceProfiler", "role", "DevtoolsOverviewContainer"]
7
+ }