@dxos/plugin-space 0.8.4-main.84f28bd → 0.8.4-main.ae835ea

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 (310) hide show
  1. package/dist/lib/browser/CollectionMain-HTKSZCRR.mjs +31 -0
  2. package/dist/lib/browser/CollectionMain-HTKSZCRR.mjs.map +7 -0
  3. package/dist/lib/browser/ObjectDetailsPanel-5B45G744.mjs +145 -0
  4. package/dist/lib/browser/ObjectDetailsPanel-5B45G744.mjs.map +7 -0
  5. package/dist/lib/browser/ObjectSettings-UFTKBP7B.mjs +146 -0
  6. package/dist/lib/browser/ObjectSettings-UFTKBP7B.mjs.map +7 -0
  7. package/dist/lib/browser/RecordMain-BCSXTSEB.mjs +99 -0
  8. package/dist/lib/browser/RecordMain-BCSXTSEB.mjs.map +7 -0
  9. package/dist/lib/browser/app-graph-builder-QJFO4ANM.mjs +520 -0
  10. package/dist/lib/browser/app-graph-builder-QJFO4ANM.mjs.map +7 -0
  11. package/dist/lib/browser/{app-graph-serializer-UKYMBX4O.mjs → app-graph-serializer-3R5NVV7U.mjs} +14 -14
  12. package/dist/lib/browser/app-graph-serializer-3R5NVV7U.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-2NS3VPSY.mjs +20 -0
  14. package/dist/lib/browser/chunk-2NS3VPSY.mjs.map +7 -0
  15. package/dist/lib/browser/{chunk-6VLSHG4A.mjs → chunk-4V4JNJ33.mjs} +80 -10
  16. package/dist/lib/browser/chunk-4V4JNJ33.mjs.map +7 -0
  17. package/dist/lib/browser/{chunk-GVTXQCIW.mjs → chunk-ENBBJSNE.mjs} +482 -448
  18. package/dist/lib/browser/chunk-ENBBJSNE.mjs.map +7 -0
  19. package/dist/lib/browser/chunk-HS2VD6DN.mjs +166 -0
  20. package/dist/lib/browser/chunk-HS2VD6DN.mjs.map +7 -0
  21. package/dist/lib/browser/{chunk-WBSEOLEM.mjs → chunk-OWNBEI5J.mjs} +221 -57
  22. package/dist/lib/browser/chunk-OWNBEI5J.mjs.map +7 -0
  23. package/dist/lib/browser/{chunk-S6NY637J.mjs → chunk-SLDQWMQ2.mjs} +77 -12
  24. package/dist/lib/browser/chunk-SLDQWMQ2.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-VZBIIYFM.mjs +16 -0
  26. package/dist/lib/browser/chunk-VZBIIYFM.mjs.map +7 -0
  27. package/dist/lib/browser/chunk-WJXU4GKV.mjs +19 -0
  28. package/dist/lib/browser/chunk-WJXU4GKV.mjs.map +7 -0
  29. package/dist/lib/browser/{identity-created-23XJJV2N.mjs → identity-created-PW2BA46S.mjs} +4 -4
  30. package/dist/lib/browser/{identity-created-23XJJV2N.mjs.map → identity-created-PW2BA46S.mjs.map} +3 -3
  31. package/dist/lib/browser/index.mjs +109 -40
  32. package/dist/lib/browser/index.mjs.map +3 -3
  33. package/dist/lib/browser/{intent-resolver-WK5WYFH3.mjs → intent-resolver-MBVOLXFQ.mjs} +194 -32
  34. package/dist/lib/browser/intent-resolver-MBVOLXFQ.mjs.map +7 -0
  35. package/dist/lib/browser/meta.json +1 -1
  36. package/dist/lib/browser/{react-root-7S6FIC5G.mjs → react-root-NKEKCEYM.mjs} +11 -11
  37. package/dist/lib/browser/react-root-NKEKCEYM.mjs.map +7 -0
  38. package/dist/lib/browser/{react-surface-6C3YJNDK.mjs → react-surface-PYSN2MBY.mjs} +78 -77
  39. package/dist/lib/browser/react-surface-PYSN2MBY.mjs.map +7 -0
  40. package/dist/lib/browser/{schema-defs-K3B3OAH4.mjs → schema-defs-DWYK7TYW.mjs} +5 -5
  41. package/dist/lib/browser/schema-defs-DWYK7TYW.mjs.map +7 -0
  42. package/dist/lib/browser/{settings-XNWYRWNM.mjs → settings-ZUCC3ZLB.mjs} +5 -5
  43. package/dist/lib/browser/{settings-XNWYRWNM.mjs.map → settings-ZUCC3ZLB.mjs.map} +1 -1
  44. package/dist/lib/browser/{spaces-ready-K7NSNBHM.mjs → spaces-ready-HTWWJHLR.mjs} +18 -16
  45. package/dist/lib/browser/spaces-ready-HTWWJHLR.mjs.map +7 -0
  46. package/dist/lib/browser/{state-522XTUR4.mjs → state-ISVAKMO7.mjs} +7 -7
  47. package/dist/lib/browser/state-ISVAKMO7.mjs.map +7 -0
  48. package/dist/lib/browser/types/index.mjs +2 -2
  49. package/dist/lib/node-esm/CollectionMain-OUHGG6OC.mjs +32 -0
  50. package/dist/lib/node-esm/CollectionMain-OUHGG6OC.mjs.map +7 -0
  51. package/dist/lib/node-esm/ObjectDetailsPanel-4SDHQVQU.mjs +146 -0
  52. package/dist/lib/node-esm/ObjectDetailsPanel-4SDHQVQU.mjs.map +7 -0
  53. package/dist/lib/node-esm/ObjectSettings-EU6F43RP.mjs +147 -0
  54. package/dist/lib/node-esm/ObjectSettings-EU6F43RP.mjs.map +7 -0
  55. package/dist/lib/node-esm/RecordMain-SD76DGOR.mjs +100 -0
  56. package/dist/lib/node-esm/RecordMain-SD76DGOR.mjs.map +7 -0
  57. package/dist/lib/node-esm/{app-graph-builder-TO72W6MI.mjs → app-graph-builder-B23W62HY.mjs} +215 -58
  58. package/dist/lib/node-esm/app-graph-builder-B23W62HY.mjs.map +7 -0
  59. package/dist/lib/node-esm/{app-graph-serializer-LA3IZDXJ.mjs → app-graph-serializer-3Z3EXEEF.mjs} +14 -14
  60. package/dist/lib/node-esm/app-graph-serializer-3Z3EXEEF.mjs.map +7 -0
  61. package/dist/lib/node-esm/chunk-BDEFTL6K.mjs +18 -0
  62. package/dist/lib/node-esm/chunk-BDEFTL6K.mjs.map +7 -0
  63. package/dist/lib/node-esm/{chunk-SXD6T2N4.mjs → chunk-G4PDWB7G.mjs} +80 -10
  64. package/dist/lib/node-esm/chunk-G4PDWB7G.mjs.map +7 -0
  65. package/dist/lib/node-esm/chunk-H4JILUJK.mjs +20 -0
  66. package/dist/lib/node-esm/chunk-H4JILUJK.mjs.map +7 -0
  67. package/dist/lib/node-esm/{chunk-OUBADVJE.mjs → chunk-KKPCCA5O.mjs} +482 -448
  68. package/dist/lib/node-esm/chunk-KKPCCA5O.mjs.map +7 -0
  69. package/dist/lib/node-esm/chunk-PM4ZIGKC.mjs +167 -0
  70. package/dist/lib/node-esm/chunk-PM4ZIGKC.mjs.map +7 -0
  71. package/dist/lib/node-esm/{chunk-HJJHLWKY.mjs → chunk-XEVIWD3O.mjs} +221 -57
  72. package/dist/lib/node-esm/chunk-XEVIWD3O.mjs.map +7 -0
  73. package/dist/lib/node-esm/{chunk-2THX6G4C.mjs → chunk-YFQXFQGT.mjs} +77 -12
  74. package/dist/lib/node-esm/chunk-YFQXFQGT.mjs.map +7 -0
  75. package/dist/lib/node-esm/chunk-ZLMFLI7G.mjs +21 -0
  76. package/dist/lib/node-esm/chunk-ZLMFLI7G.mjs.map +7 -0
  77. package/dist/lib/node-esm/{identity-created-IJQO6GCR.mjs → identity-created-MWTLGQRU.mjs} +4 -4
  78. package/dist/lib/node-esm/{identity-created-IJQO6GCR.mjs.map → identity-created-MWTLGQRU.mjs.map} +3 -3
  79. package/dist/lib/node-esm/index.mjs +109 -40
  80. package/dist/lib/node-esm/index.mjs.map +3 -3
  81. package/dist/lib/node-esm/{intent-resolver-HSR27ME4.mjs → intent-resolver-IWI47NTW.mjs} +194 -32
  82. package/dist/lib/node-esm/intent-resolver-IWI47NTW.mjs.map +7 -0
  83. package/dist/lib/node-esm/meta.json +1 -1
  84. package/dist/lib/node-esm/{react-root-HUK3ANLV.mjs → react-root-LX7SIG6M.mjs} +11 -11
  85. package/dist/lib/node-esm/react-root-LX7SIG6M.mjs.map +7 -0
  86. package/dist/lib/node-esm/{react-surface-AGAWX7DD.mjs → react-surface-6SVGOZNJ.mjs} +78 -77
  87. package/dist/lib/node-esm/react-surface-6SVGOZNJ.mjs.map +7 -0
  88. package/dist/lib/node-esm/{schema-defs-4MCDG4DV.mjs → schema-defs-EOG2UPJU.mjs} +5 -5
  89. package/dist/lib/node-esm/schema-defs-EOG2UPJU.mjs.map +7 -0
  90. package/dist/lib/node-esm/{settings-YGKHGFPH.mjs → settings-ZDJNLFGW.mjs} +5 -5
  91. package/dist/lib/node-esm/{settings-YGKHGFPH.mjs.map → settings-ZDJNLFGW.mjs.map} +1 -1
  92. package/dist/lib/node-esm/{spaces-ready-UM2P3DCR.mjs → spaces-ready-VUGYPF4L.mjs} +18 -16
  93. package/dist/lib/node-esm/spaces-ready-VUGYPF4L.mjs.map +7 -0
  94. package/dist/lib/node-esm/{state-C4IOXPZP.mjs → state-QZ4Q6ZRL.mjs} +7 -7
  95. package/dist/lib/node-esm/state-QZ4Q6ZRL.mjs.map +7 -0
  96. package/dist/lib/node-esm/types/index.mjs +2 -2
  97. package/dist/types/src/SpacePlugin.d.ts +1 -1
  98. package/dist/types/src/SpacePlugin.d.ts.map +1 -1
  99. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
  100. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  101. package/dist/types/src/capabilities/app-graph-serializer.d.ts +1 -1
  102. package/dist/types/src/capabilities/capabilities.d.ts +12 -5
  103. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  104. package/dist/types/src/capabilities/identity-created.d.ts +1 -1
  105. package/dist/types/src/capabilities/identity-created.d.ts.map +1 -1
  106. package/dist/types/src/capabilities/index.d.ts +11 -12
  107. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  108. package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
  109. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  110. package/dist/types/src/capabilities/react-root.d.ts +2 -2
  111. package/dist/types/src/capabilities/react-root.d.ts.map +1 -1
  112. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  113. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  114. package/dist/types/src/capabilities/schema-defs.d.ts +1 -1
  115. package/dist/types/src/capabilities/schema-defs.d.ts.map +1 -1
  116. package/dist/types/src/capabilities/settings.d.ts +1 -1
  117. package/dist/types/src/capabilities/spaces-ready.d.ts +1 -1
  118. package/dist/types/src/capabilities/spaces-ready.d.ts.map +1 -1
  119. package/dist/types/src/capabilities/state.d.ts +1 -1
  120. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  121. package/dist/types/src/components/AwaitingObject.d.ts.map +1 -1
  122. package/dist/types/src/components/CollectionMain.d.ts +1 -0
  123. package/dist/types/src/components/CollectionMain.d.ts.map +1 -1
  124. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts +5 -4
  125. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
  126. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts +1664 -4
  127. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts.map +1 -1
  128. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +5 -3
  129. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
  130. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts +1 -1
  131. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts.map +1 -1
  132. package/dist/types/src/components/JoinDialog.d.ts +1 -1
  133. package/dist/types/src/components/JoinDialog.d.ts.map +1 -1
  134. package/dist/types/src/components/MembersContainer.d.ts +3 -2
  135. package/dist/types/src/components/MembersContainer.d.ts.map +1 -1
  136. package/dist/types/src/components/MembersContainer.stories.d.ts +1664 -5
  137. package/dist/types/src/components/MembersContainer.stories.d.ts.map +1 -1
  138. package/dist/types/src/components/MenuFooter.d.ts.map +1 -1
  139. package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts +9 -0
  140. package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts.map +1 -0
  141. package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts +10 -0
  142. package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts.map +1 -0
  143. package/dist/types/src/components/ObjectDetailsPanel/index.d.ts +3 -0
  144. package/dist/types/src/components/ObjectDetailsPanel/index.d.ts.map +1 -0
  145. package/dist/types/src/components/ObjectSettings/AdvancedObjectSettings.d.ts.map +1 -1
  146. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts +2 -2
  147. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts.map +1 -1
  148. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts +1500 -0
  149. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts.map +1 -0
  150. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts +1 -1
  151. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts.map +1 -1
  152. package/dist/types/src/components/ObjectSettings/ObjectSettingsContainer.d.ts.map +1 -1
  153. package/dist/types/src/components/ObjectSettings/index.d.ts +2 -1
  154. package/dist/types/src/components/ObjectSettings/index.d.ts.map +1 -1
  155. package/dist/types/src/components/PersistenceStatus.d.ts.map +1 -1
  156. package/dist/types/src/components/PopoverRenameObject.d.ts +2 -2
  157. package/dist/types/src/components/PopoverRenameObject.d.ts.map +1 -1
  158. package/dist/types/src/components/PopoverRenameSpace.d.ts +1 -1
  159. package/dist/types/src/components/PopoverRenameSpace.d.ts.map +1 -1
  160. package/dist/types/src/components/RecordMain.d.ts +8 -0
  161. package/dist/types/src/components/RecordMain.d.ts.map +1 -0
  162. package/dist/types/src/components/RecordMain.stories.d.ts +1667 -0
  163. package/dist/types/src/components/RecordMain.stories.d.ts.map +1 -0
  164. package/dist/types/src/components/SpacePluginSettings.d.ts.map +1 -1
  165. package/dist/types/src/components/SpacePresence.d.ts.map +1 -1
  166. package/dist/types/src/components/SpacePresence.stories.d.ts +1492 -4
  167. package/dist/types/src/components/SpacePresence.stories.d.ts.map +1 -1
  168. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
  169. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts +1497 -4
  170. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts.map +1 -1
  171. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts +1 -1
  172. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
  173. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts +1498 -5
  174. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
  175. package/dist/types/src/components/SyncStatus/status.d.ts +5 -5
  176. package/dist/types/src/components/ViewEditor.d.ts +8 -0
  177. package/dist/types/src/components/ViewEditor.d.ts.map +1 -0
  178. package/dist/types/src/components/index.d.ts +13 -2
  179. package/dist/types/src/components/index.d.ts.map +1 -1
  180. package/dist/types/src/events.d.ts +1 -0
  181. package/dist/types/src/events.d.ts.map +1 -1
  182. package/dist/types/src/hooks/index.d.ts +1 -0
  183. package/dist/types/src/hooks/index.d.ts.map +1 -1
  184. package/dist/types/src/hooks/useActiveSpace.d.ts.map +1 -1
  185. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts +1 -1
  186. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts.map +1 -1
  187. package/dist/types/src/hooks/usePath.d.ts +1 -1
  188. package/dist/types/src/hooks/usePath.d.ts.map +1 -1
  189. package/dist/types/src/hooks/useTypeOptions.d.ts +10 -0
  190. package/dist/types/src/hooks/useTypeOptions.d.ts.map +1 -0
  191. package/dist/types/src/meta.d.ts +0 -1
  192. package/dist/types/src/meta.d.ts.map +1 -1
  193. package/dist/types/src/translations.d.ts +1342 -11
  194. package/dist/types/src/translations.d.ts.map +1 -1
  195. package/dist/types/src/types/types.d.ts +128 -66
  196. package/dist/types/src/types/types.d.ts.map +1 -1
  197. package/dist/types/src/util.d.ts +37 -7
  198. package/dist/types/src/util.d.ts.map +1 -1
  199. package/dist/types/tsconfig.tsbuildinfo +1 -1
  200. package/package.json +63 -60
  201. package/src/SpacePlugin.ts +201 -139
  202. package/src/capabilities/app-graph-builder.ts +265 -47
  203. package/src/capabilities/app-graph-serializer.ts +7 -7
  204. package/src/capabilities/capabilities.ts +20 -9
  205. package/src/capabilities/identity-created.ts +1 -1
  206. package/src/capabilities/index.ts +0 -1
  207. package/src/capabilities/intent-resolver.ts +147 -21
  208. package/src/capabilities/react-root.tsx +4 -3
  209. package/src/capabilities/react-surface.tsx +79 -99
  210. package/src/capabilities/schema-defs.ts +3 -2
  211. package/src/capabilities/spaces-ready.ts +11 -8
  212. package/src/capabilities/state.ts +5 -4
  213. package/src/components/AwaitingObject.tsx +7 -9
  214. package/src/components/CollectionMain.tsx +4 -2
  215. package/src/components/CollectionSection.tsx +2 -2
  216. package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +11 -10
  217. package/src/components/CreateDialog/CreateObjectDialog.tsx +51 -36
  218. package/src/components/CreateDialog/CreateObjectPanel.tsx +22 -11
  219. package/src/components/CreateDialog/CreateSpaceDialog.tsx +6 -5
  220. package/src/components/JoinDialog.tsx +7 -7
  221. package/src/components/MembersContainer.stories.tsx +36 -10
  222. package/src/components/MembersContainer.tsx +18 -17
  223. package/src/components/MenuFooter.tsx +4 -5
  224. package/src/components/ObjectDetailsPanel/ObjectDetailsPanel.tsx +52 -0
  225. package/src/components/ObjectDetailsPanel/ObjectForm.tsx +75 -0
  226. package/src/components/ObjectDetailsPanel/index.ts +7 -0
  227. package/src/components/ObjectSettings/AdvancedObjectSettings.tsx +4 -3
  228. package/src/components/ObjectSettings/BaseObjectSettings.stories.tsx +63 -0
  229. package/src/components/ObjectSettings/BaseObjectSettings.tsx +86 -26
  230. package/src/components/ObjectSettings/ForeignKeys.tsx +3 -3
  231. package/src/components/ObjectSettings/ObjectSettingsContainer.tsx +3 -2
  232. package/src/components/ObjectSettings/index.ts +3 -1
  233. package/src/components/PersistenceStatus.tsx +7 -8
  234. package/src/components/PopoverRenameObject.tsx +10 -16
  235. package/src/components/PopoverRenameSpace.tsx +4 -4
  236. package/src/components/RecordMain.stories.tsx +116 -0
  237. package/src/components/RecordMain.tsx +83 -0
  238. package/src/components/SchemaContainer.tsx +5 -5
  239. package/src/components/SpacePluginSettings.tsx +8 -9
  240. package/src/components/SpacePresence.stories.tsx +23 -22
  241. package/src/components/SpacePresence.tsx +10 -10
  242. package/src/components/SpaceSettings/SpaceSettingsContainer.stories.tsx +17 -9
  243. package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +19 -18
  244. package/src/components/SyncStatus/InlineSyncStatus.tsx +7 -7
  245. package/src/components/SyncStatus/SyncStatus.stories.tsx +9 -9
  246. package/src/components/SyncStatus/SyncStatus.tsx +98 -7
  247. package/src/components/SyncStatus/status.ts +4 -4
  248. package/src/components/ViewEditor.tsx +58 -0
  249. package/src/components/index.ts +8 -2
  250. package/src/events.ts +7 -6
  251. package/src/hooks/index.ts +1 -0
  252. package/src/hooks/useActiveSpace.ts +2 -2
  253. package/src/hooks/useInputSurfaceLookup.tsx +2 -2
  254. package/src/hooks/usePath.ts +1 -1
  255. package/src/hooks/useTypeOptions.ts +59 -0
  256. package/src/meta.ts +6 -3
  257. package/src/translations.ts +77 -5
  258. package/src/types/types.ts +78 -16
  259. package/src/util.tsx +215 -57
  260. package/dist/lib/browser/app-graph-builder-PMDF6PJV.mjs +0 -363
  261. package/dist/lib/browser/app-graph-builder-PMDF6PJV.mjs.map +0 -7
  262. package/dist/lib/browser/app-graph-serializer-UKYMBX4O.mjs.map +0 -7
  263. package/dist/lib/browser/chunk-6VLSHG4A.mjs.map +0 -7
  264. package/dist/lib/browser/chunk-C7KGJTAL.mjs +0 -18
  265. package/dist/lib/browser/chunk-C7KGJTAL.mjs.map +0 -7
  266. package/dist/lib/browser/chunk-FBCGT5YY.mjs +0 -13
  267. package/dist/lib/browser/chunk-FBCGT5YY.mjs.map +0 -7
  268. package/dist/lib/browser/chunk-GVTXQCIW.mjs.map +0 -7
  269. package/dist/lib/browser/chunk-S6NY637J.mjs.map +0 -7
  270. package/dist/lib/browser/chunk-VLBRSGJ2.mjs +0 -94
  271. package/dist/lib/browser/chunk-VLBRSGJ2.mjs.map +0 -7
  272. package/dist/lib/browser/chunk-WBSEOLEM.mjs.map +0 -7
  273. package/dist/lib/browser/chunk-XXIPJLJF.mjs +0 -19
  274. package/dist/lib/browser/chunk-XXIPJLJF.mjs.map +0 -7
  275. package/dist/lib/browser/intent-resolver-WK5WYFH3.mjs.map +0 -7
  276. package/dist/lib/browser/react-root-7S6FIC5G.mjs.map +0 -7
  277. package/dist/lib/browser/react-surface-6C3YJNDK.mjs.map +0 -7
  278. package/dist/lib/browser/schema-defs-K3B3OAH4.mjs.map +0 -7
  279. package/dist/lib/browser/schema-tools-BNP4JTD7.mjs +0 -124
  280. package/dist/lib/browser/schema-tools-BNP4JTD7.mjs.map +0 -7
  281. package/dist/lib/browser/spaces-ready-K7NSNBHM.mjs.map +0 -7
  282. package/dist/lib/browser/state-522XTUR4.mjs.map +0 -7
  283. package/dist/lib/node-esm/app-graph-builder-TO72W6MI.mjs.map +0 -7
  284. package/dist/lib/node-esm/app-graph-serializer-LA3IZDXJ.mjs.map +0 -7
  285. package/dist/lib/node-esm/chunk-2THX6G4C.mjs.map +0 -7
  286. package/dist/lib/node-esm/chunk-72QMMRKC.mjs +0 -19
  287. package/dist/lib/node-esm/chunk-72QMMRKC.mjs.map +0 -7
  288. package/dist/lib/node-esm/chunk-AT7LGFER.mjs +0 -20
  289. package/dist/lib/node-esm/chunk-AT7LGFER.mjs.map +0 -7
  290. package/dist/lib/node-esm/chunk-HJJHLWKY.mjs.map +0 -7
  291. package/dist/lib/node-esm/chunk-HWNG4MEU.mjs +0 -15
  292. package/dist/lib/node-esm/chunk-HWNG4MEU.mjs.map +0 -7
  293. package/dist/lib/node-esm/chunk-OUBADVJE.mjs.map +0 -7
  294. package/dist/lib/node-esm/chunk-SSLBYZEY.mjs +0 -96
  295. package/dist/lib/node-esm/chunk-SSLBYZEY.mjs.map +0 -7
  296. package/dist/lib/node-esm/chunk-SXD6T2N4.mjs.map +0 -7
  297. package/dist/lib/node-esm/intent-resolver-HSR27ME4.mjs.map +0 -7
  298. package/dist/lib/node-esm/react-root-HUK3ANLV.mjs.map +0 -7
  299. package/dist/lib/node-esm/react-surface-AGAWX7DD.mjs.map +0 -7
  300. package/dist/lib/node-esm/schema-defs-4MCDG4DV.mjs.map +0 -7
  301. package/dist/lib/node-esm/schema-tools-KWW5PTML.mjs +0 -126
  302. package/dist/lib/node-esm/schema-tools-KWW5PTML.mjs.map +0 -7
  303. package/dist/lib/node-esm/spaces-ready-UM2P3DCR.mjs.map +0 -7
  304. package/dist/lib/node-esm/state-C4IOXPZP.mjs.map +0 -7
  305. package/dist/types/src/capabilities/schema-tool.test.d.ts +0 -2
  306. package/dist/types/src/capabilities/schema-tool.test.d.ts.map +0 -1
  307. package/dist/types/src/capabilities/schema-tools.d.ts +0 -13
  308. package/dist/types/src/capabilities/schema-tools.d.ts.map +0 -1
  309. package/src/capabilities/schema-tool.test.ts +0 -44
  310. package/src/capabilities/schema-tools.ts +0 -125
@@ -0,0 +1,116 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
6
+ import React from 'react';
7
+
8
+ import { Capabilities, contributes, createSurface } from '@dxos/app-framework';
9
+ import { withPluginManager } from '@dxos/app-framework/testing';
10
+ import { Filter, Obj, Ref, Relation, type Type } from '@dxos/echo';
11
+ import { faker } from '@dxos/random';
12
+ import { useQuery } from '@dxos/react-client/echo';
13
+ import { useClientProvider, withClientProvider } from '@dxos/react-client/testing';
14
+ import { withTheme } from '@dxos/react-ui/testing';
15
+ import { Card } from '@dxos/react-ui-stack';
16
+ import { DataType } from '@dxos/schema';
17
+ import { type ValueGenerator, createAsyncGenerator } from '@dxos/schema/testing';
18
+ import { translations as shellTranslations } from '@dxos/shell/react';
19
+ import { render } from '@dxos/storybook-utils';
20
+
21
+ import { translations } from '../translations';
22
+
23
+ import { RecordMain } from './RecordMain';
24
+
25
+ faker.seed(1);
26
+ const generator: ValueGenerator = faker as any;
27
+
28
+ const DefaultStory = () => {
29
+ const { space } = useClientProvider();
30
+ const [org] = useQuery(space, Filter.type(DataType.Organization));
31
+ if (!org) {
32
+ return null;
33
+ }
34
+
35
+ return <RecordMain record={org} />;
36
+ };
37
+
38
+ const meta = {
39
+ title: 'plugins/plugin-space/RecordMain',
40
+ component: RecordMain as any,
41
+ render: render(DefaultStory),
42
+ decorators: [
43
+ withTheme, // TODO(wittjosiah): Try to write story which does not depend on plugin manager.
44
+ withPluginManager({
45
+ capabilities: [
46
+ contributes(Capabilities.ReactSurface, [
47
+ createSurface({
48
+ id: 'section',
49
+ role: 'section',
50
+ component: ({ data }) => (
51
+ <div role='none' className='flex justify-center'>
52
+ <div role='none' className='card-max-width'>
53
+ <Card.SurfaceRoot classNames='p-2'>
54
+ <pre className='overflow-x-auto'>{JSON.stringify(data, null, 2)}</pre>
55
+ </Card.SurfaceRoot>
56
+ </div>
57
+ </div>
58
+ ),
59
+ }),
60
+ createSurface({
61
+ id: 'card',
62
+ role: 'card',
63
+ component: ({ data }) => (
64
+ <Card.SurfaceRoot classNames='p-2'>
65
+ <pre className='overflow-x-auto'>{JSON.stringify(data, null, 2)}</pre>
66
+ </Card.SurfaceRoot>
67
+ ),
68
+ }),
69
+ ]),
70
+ ],
71
+ }),
72
+ withClientProvider({
73
+ createIdentity: true,
74
+ createSpace: true,
75
+ types: [DataType.Organization, DataType.Person, DataType.Task, DataType.HasSubject],
76
+ onCreateSpace: async ({ space }) => {
77
+ const org = space.db.add(
78
+ Obj.make(DataType.Organization, {
79
+ name: 'ACME Corp',
80
+ }),
81
+ );
82
+ const task = space.db.add(
83
+ Obj.make(DataType.Task, {
84
+ title: 'Task',
85
+ }),
86
+ );
87
+ space.db.add(
88
+ Relation.make(DataType.HasSubject, {
89
+ [Relation.Source]: task,
90
+ [Relation.Target]: org,
91
+ completedAt: new Date().toISOString(),
92
+ }),
93
+ );
94
+ const objectGenerator = createAsyncGenerator(generator, DataType.Person as Type.Obj.Any, {
95
+ db: space?.db,
96
+ force: true,
97
+ });
98
+ await objectGenerator.createObjects(3).then((objects) => {
99
+ objects.forEach((object) => {
100
+ object.organization = Ref.make(org);
101
+ });
102
+ });
103
+ },
104
+ }),
105
+ ],
106
+ parameters: {
107
+ layout: 'fullscreen',
108
+ translations: [...translations, ...shellTranslations],
109
+ },
110
+ } satisfies Meta<typeof DefaultStory>;
111
+
112
+ export default meta;
113
+
114
+ type Story = StoryObj<typeof meta>;
115
+
116
+ export const Default: Story = {};
@@ -0,0 +1,83 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import React, { useMemo } from 'react';
6
+
7
+ import { Surface } from '@dxos/app-framework';
8
+ import { Filter, type Obj, Ref, Relation } from '@dxos/echo';
9
+ import { getSpace, useQuery } from '@dxos/react-client/echo';
10
+ import { useTranslation } from '@dxos/react-ui';
11
+ import { Masonry } from '@dxos/react-ui-masonry';
12
+ import { StackItem } from '@dxos/react-ui-stack';
13
+ import { mx } from '@dxos/react-ui-theme';
14
+ import { isNonNullable } from '@dxos/util';
15
+
16
+ import { meta } from '../meta';
17
+
18
+ export type RecordMainProps = {
19
+ record: Obj.Any;
20
+ };
21
+
22
+ export const RecordMain = ({ record }: RecordMainProps) => {
23
+ const { t } = useTranslation(meta.id);
24
+ const space = getSpace(record);
25
+ const data = useMemo(() => ({ subject: record }), [record]);
26
+
27
+ // TODO(wittjosiah): This is a hack. ECHO needs to have a back reference index to easily query for related objects.
28
+ const objects = useQuery(space, Filter.everything());
29
+ const related = useMemo(() => {
30
+ const relations = objects.filter((obj) => Relation.isRelation(obj));
31
+ const targetObjects = relations
32
+ .filter((relation) => Relation.getSource(relation) === record)
33
+ .map((relation) => Relation.getTarget(relation));
34
+ const sourceObjects = relations
35
+ .filter((relation) => Relation.getTarget(relation) === record)
36
+ .map((relation) => Relation.getSource(relation));
37
+
38
+ const references = getReferencesFromObject(record);
39
+ const referencedObjects = references.map((ref) => ref.target).filter(isNonNullable);
40
+ const referencingObjects = objects.filter((obj) => {
41
+ const refs = getReferencesFromObject(obj);
42
+ return refs.some((ref) => ref.target === record);
43
+ });
44
+
45
+ return [...referencedObjects, ...referencingObjects, ...targetObjects, ...sourceObjects];
46
+ }, [record, objects]);
47
+
48
+ return (
49
+ <StackItem.Content classNames='flex flex-col items-center'>
50
+ <div role='none' className={mx('flex flex-col gap-4 p-6 is-full overflow-y-auto')}>
51
+ <div role='none' className={mx('flex flex-col gap-1 card-min-width card-max-width')}>
52
+ <Surface role='section' data={data} limit={1} />
53
+ </div>
54
+
55
+ {/* TODO(wittjosiah): This should maybe be in a separate stack item. */}
56
+ {related.length > 0 && (
57
+ <div role='none' className={mx('flex flex-col gap-1', related.length === 1 ? 'card-max-width' : 'is-full')}>
58
+ <label className='text-description text-sm mbs-2'>{t('related objects label')}</label>
59
+ <Masonry.Root<Obj.Any>
60
+ items={related}
61
+ render={Card}
62
+ intrinsicHeight
63
+ columnCount={related.length === 1 ? 1 : undefined}
64
+ />
65
+ </div>
66
+ )}
67
+ </div>
68
+ </StackItem.Content>
69
+ );
70
+ };
71
+
72
+ const Card = ({ data: subject }: { data: Obj.Any }) => {
73
+ const data = useMemo(() => ({ subject }), [subject]);
74
+ return <Surface role='card' data={data} limit={1} />;
75
+ };
76
+
77
+ const getReferencesFromObject = (obj: Obj.Any): Ref.Any[] => {
78
+ return Object.getOwnPropertyNames(obj)
79
+ .map((name) => obj[name as keyof Obj.Any])
80
+ .filter((value) => Ref.isRef(value)) as Ref.Any[];
81
+ };
82
+
83
+ export default RecordMain;
@@ -2,15 +2,15 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import React, { useState, useEffect } from 'react';
5
+ import React, { useEffect, useState } from 'react';
6
6
 
7
7
  import { type Type } from '@dxos/echo';
8
8
  import { type Space } from '@dxos/react-client/echo';
9
9
  import { useTranslation } from '@dxos/react-ui';
10
- import { controlItemClasses, ControlPage, ControlSection } from '@dxos/react-ui-form';
10
+ import { ControlPage, ControlSection, controlItemClasses } from '@dxos/react-ui-form';
11
11
  import { StackItem } from '@dxos/react-ui-stack';
12
12
 
13
- import { SPACE_PLUGIN } from '../meta';
13
+ import { meta } from '../meta';
14
14
 
15
15
  type SchemaPanelProps = { space: Space };
16
16
 
@@ -37,11 +37,11 @@ export const useQuerySpaceSchemas = (space: Space): Type.Schema[] => {
37
37
  };
38
38
 
39
39
  export const SchemaContainer = ({ space }: SchemaPanelProps) => {
40
- const { t } = useTranslation(SPACE_PLUGIN);
40
+ const { t } = useTranslation(meta.id);
41
41
  const schemas = useQuerySpaceSchemas(space);
42
42
 
43
43
  return (
44
- <StackItem.Content classNames='block overflow-y-auto'>
44
+ <StackItem.Content scrollable>
45
45
  <ControlPage>
46
46
  <ControlSection title={t('schema verbose label')} description={t('schema description')}>
47
47
  <div role='none' className={controlItemClasses}>
@@ -7,31 +7,30 @@ import React from 'react';
7
7
  import { createIntent, useIntentDispatcher } from '@dxos/app-framework';
8
8
  import { useClient } from '@dxos/react-client';
9
9
  import { useSpaces } from '@dxos/react-client/echo';
10
- import { Input, toLocalizedString, useTranslation, List, ListItem, IconButton } from '@dxos/react-ui';
11
- import { controlItemClasses, ControlPage, ControlSection, DeprecatedFormInput } from '@dxos/react-ui-form';
10
+ import { IconButton, Input, List, ListItem, toLocalizedString, useTranslation } from '@dxos/react-ui';
11
+ import { ControlGroup, ControlItemInput, ControlPage, ControlSection, controlItemClasses } from '@dxos/react-ui-form';
12
12
 
13
- import { SPACE_PLUGIN } from '../meta';
13
+ import { meta } from '../meta';
14
14
  import { SpaceAction, type SpaceSettingsProps } from '../types';
15
15
  import { getSpaceDisplayName } from '../util';
16
16
 
17
17
  export const SpacePluginSettings = ({ settings }: { settings: SpaceSettingsProps }) => {
18
- const { t } = useTranslation(SPACE_PLUGIN);
18
+ const { t } = useTranslation(meta.id);
19
19
  const client = useClient();
20
20
  const spaces = useSpaces({ all: settings.showHidden });
21
21
  const { dispatchPromise: dispatch } = useIntentDispatcher();
22
22
 
23
- // TODO(wittjosiah): Migrate to new form container.
24
23
  return (
25
24
  <ControlPage>
26
25
  <ControlSection title={t('space settings label')} description={t('space settings description')}>
27
- <div className='pli-trimMd container-max-width'>
28
- <DeprecatedFormInput label={t('show hidden spaces label')}>
26
+ <ControlGroup>
27
+ <ControlItemInput title={t('show hidden spaces label')}>
29
28
  <Input.Switch
30
29
  checked={settings.showHidden}
31
30
  onCheckedChange={(checked) => (settings.showHidden = !!checked)}
32
31
  />
33
- </DeprecatedFormInput>
34
- </div>
32
+ </ControlItemInput>
33
+ </ControlGroup>
35
34
  <List classNames={[controlItemClasses, 'flex flex-col gap-trimSm']}>
36
35
  {spaces.map((space) => (
37
36
  <ListItem.Root key={space.id} classNames='is-full items-center'>
@@ -2,19 +2,18 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import '@dxos-theme';
6
-
7
5
  import { type Meta } from '@storybook/react-vite';
8
6
  import React from 'react';
9
7
 
10
8
  import { IdentityDid, PublicKey } from '@dxos/keys';
11
9
  import { HaloSpaceMember, SpaceMember } from '@dxos/react-client/echo';
12
- import { withLayout, withTheme } from '@dxos/storybook-utils';
10
+ import { withTheme } from '@dxos/react-ui/testing';
13
11
 
14
- import { FullPresence, type MemberPresenceProps, SmallPresence, type Member } from './SpacePresence';
15
12
  import { translations } from '../translations';
16
13
 
17
- const nViewers = (n: number, currentlyAttended = true): Member[] =>
14
+ import { FullPresence, type Member, type MemberPresenceProps, SmallPresence } from './SpacePresence';
15
+
16
+ const viewers = (n: number, currentlyAttended = true): Member[] =>
18
17
  Array.from({ length: n }, () => ({
19
18
  role: HaloSpaceMember.Role.ADMIN,
20
19
  identity: { did: IdentityDid.random(), identityKey: PublicKey.random() },
@@ -23,6 +22,16 @@ const nViewers = (n: number, currentlyAttended = true): Member[] =>
23
22
  currentlyAttended,
24
23
  }));
25
24
 
25
+ const meta = {
26
+ title: 'plugins/plugin-space/SpacePresence',
27
+ decorators: [withTheme],
28
+ parameters: {
29
+ translations,
30
+ },
31
+ } satisfies Meta<typeof IdentityDid>;
32
+
33
+ export default meta;
34
+
26
35
  export const Full = (props: MemberPresenceProps) => {
27
36
  const p: MemberPresenceProps = {
28
37
  ...props,
@@ -31,31 +40,31 @@ export const Full = (props: MemberPresenceProps) => {
31
40
  return (
32
41
  <div className='p-4'>
33
42
  <div className='p-3'>
34
- <FullPresence members={nViewers(1)} {...p} />
43
+ <FullPresence members={viewers(1)} {...p} />
35
44
  </div>
36
45
  <div className='p-3'>
37
- <FullPresence members={nViewers(2)} {...p} />
46
+ <FullPresence members={viewers(2)} {...p} />
38
47
  </div>
39
48
  <div className='p-3'>
40
- <FullPresence members={nViewers(3)} {...p} />
49
+ <FullPresence members={viewers(3)} {...p} />
41
50
  </div>
42
51
  <div className='p-3'>
43
- <FullPresence members={nViewers(3, false)} {...p} />
52
+ <FullPresence members={viewers(3, false)} {...p} />
44
53
  </div>
45
54
  <div className='p-3'>
46
- <FullPresence members={nViewers(4)} {...p} />
55
+ <FullPresence members={viewers(4)} {...p} />
47
56
  </div>
48
57
  <div className='p-3'>
49
- <FullPresence members={nViewers(5)} {...p} />
58
+ <FullPresence members={viewers(5)} {...p} />
50
59
  </div>
51
60
  <div className='p-3'>
52
- <FullPresence members={nViewers(5, false)} {...p} />
61
+ <FullPresence members={viewers(5, false)} {...p} />
53
62
  </div>
54
63
  <div className='p-3'>
55
- <FullPresence members={nViewers(10)} {...p} />
64
+ <FullPresence members={viewers(10)} {...p} />
56
65
  </div>
57
66
  <div className='p-3'>
58
- <FullPresence members={nViewers(100)} {...p} />
67
+ <FullPresence members={viewers(100)} {...p} />
59
68
  </div>
60
69
  </div>
61
70
  );
@@ -97,11 +106,3 @@ export const Small = () => {
97
106
  </div>
98
107
  );
99
108
  };
100
-
101
- const meta: Meta = {
102
- title: 'plugins/plugin-space/SpacePresence',
103
- decorators: [withTheme, withLayout()],
104
- parameters: { translations },
105
- };
106
-
107
- export default meta;
@@ -2,34 +2,34 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { Option } from 'effect';
5
+ import * as Option from 'effect/Option';
6
6
  import React, { forwardRef, useCallback, useEffect, useState } from 'react';
7
7
 
8
8
  import { useAppGraph, useCapability } from '@dxos/app-framework';
9
9
  import { generateName } from '@dxos/display-name';
10
10
  import { type Type } from '@dxos/echo';
11
11
  import { PublicKey, useClient } from '@dxos/react-client';
12
- import { getSpace, useMembers, type SpaceMember, fullyQualifiedId } from '@dxos/react-client/echo';
12
+ import { type SpaceMember, fullyQualifiedId, getSpace, useMembers } from '@dxos/react-client/echo';
13
13
  import { type Identity, useIdentity } from '@dxos/react-client/halo';
14
14
  import {
15
15
  Avatar,
16
16
  type AvatarContentProps,
17
+ type DxAvatar,
18
+ List,
19
+ ListItem,
20
+ Popover,
17
21
  type Size,
18
22
  type ThemedClassName,
19
23
  Tooltip,
20
- Popover,
21
- useTranslation,
22
- List,
23
- ListItem,
24
24
  useDefaultValue,
25
- type DxAvatar,
25
+ useTranslation,
26
26
  } from '@dxos/react-ui';
27
- import { AttentionGlyph, useAttended, useAttention, type AttentionGlyphProps } from '@dxos/react-ui-attention';
27
+ import { AttentionGlyph, type AttentionGlyphProps, useAttended, useAttention } from '@dxos/react-ui-attention';
28
28
  import { ComplexMap, keyToFallback } from '@dxos/util';
29
29
 
30
30
  import { SpaceCapabilities } from '../capabilities';
31
31
  import { usePath } from '../hooks';
32
- import { SPACE_PLUGIN } from '../meta';
32
+ import { meta } from '../meta';
33
33
  import type { ObjectViewerProps } from '../types';
34
34
 
35
35
  // TODO(thure): Get/derive these values from protocol
@@ -254,7 +254,7 @@ export type SmallPresenceProps = {
254
254
  } & Pick<AttentionGlyphProps, 'attended' | 'containsAttended'>;
255
255
 
256
256
  export const SmallPresence = ({ count = 0, attended, containsAttended }: SmallPresenceProps) => {
257
- const { t } = useTranslation(SPACE_PLUGIN);
257
+ const { t } = useTranslation(meta.id);
258
258
 
259
259
  return (
260
260
  <Tooltip.Trigger asChild content={t('presence label', { count })} side='bottom'>
@@ -2,37 +2,45 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- import '@dxos-theme';
6
-
7
5
  import { type Meta, type StoryObj } from '@storybook/react-vite';
8
6
  import React from 'react';
9
7
 
8
+ import { IntentPlugin } from '@dxos/app-framework';
9
+ import { withPluginManager } from '@dxos/app-framework/testing';
10
10
  import { useClientProvider, withClientProvider } from '@dxos/react-client/testing';
11
- import { withTheme } from '@dxos/storybook-utils';
11
+ import { withTheme } from '@dxos/react-ui/testing';
12
12
 
13
- import { SpaceSettingsContainer, type SpaceSettingsContainerProps } from './SpaceSettingsContainer';
14
13
  import { translations } from '../../translations';
15
14
 
16
- const Story = (args: Partial<SpaceSettingsContainerProps>) => {
15
+ import { SpaceSettingsContainer, type SpaceSettingsContainerProps } from './SpaceSettingsContainer';
16
+
17
+ const Story = (props: Partial<SpaceSettingsContainerProps>) => {
17
18
  const { space } = useClientProvider();
18
19
  return (
19
20
  <div role='none' className='p-2 border border-primary-500 rounded'>
20
- <SpaceSettingsContainer {...args} space={space!} />
21
+ <SpaceSettingsContainer {...props} space={space!} />
21
22
  </div>
22
23
  );
23
24
  };
24
25
 
25
- const meta: Meta = {
26
+ const meta = {
26
27
  title: 'plugins/plugin-space/SpaceSettingsContainer',
27
28
  component: SpaceSettingsContainer,
28
29
  render: Story,
29
- decorators: [withClientProvider({ createIdentity: true, createSpace: true }), withTheme],
30
+ decorators: [
31
+ withTheme,
32
+ withClientProvider({ createIdentity: true, createSpace: true }),
33
+ // TODO(wittjosiah): Try to write story which does not depend on plugin manager.
34
+ withPluginManager({ plugins: [IntentPlugin()] }),
35
+ ],
30
36
  parameters: {
31
37
  translations,
32
38
  layout: 'centered',
33
39
  },
34
- };
40
+ } satisfies Meta<typeof SpaceSettingsContainer>;
35
41
 
36
42
  export default meta;
37
43
 
44
+ type Story = StoryObj<typeof meta>;
45
+
38
46
  export const Default: StoryObj<typeof SpaceSettingsContainer> = {};
@@ -2,27 +2,28 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- import { pipe, Schema } from 'effect';
5
+ import * as Function from 'effect/Function';
6
+ import * as Schema from 'effect/Schema';
6
7
  import React, { type ChangeEvent, useCallback, useMemo, useState } from 'react';
7
8
 
8
- import { chain, createIntent, LayoutAction, useIntentDispatcher } from '@dxos/app-framework';
9
+ import { LayoutAction, chain, createIntent, useIntentDispatcher } from '@dxos/app-framework';
9
10
  import { log } from '@dxos/log';
10
11
  import { EdgeReplicationSetting } from '@dxos/protocols/proto/dxos/echo/metadata';
11
12
  import { useClient } from '@dxos/react-client';
12
- import { SpaceState, type Space } from '@dxos/react-client/echo';
13
+ import { type Space, SpaceState } from '@dxos/react-client/echo';
13
14
  import { Button, Input, useMulticastObservable, useTranslation } from '@dxos/react-ui';
14
15
  import {
15
- Form,
16
- type InputComponent,
17
16
  ControlItem,
18
17
  ControlItemInput,
19
- ControlSection,
20
18
  ControlPage,
19
+ ControlSection,
20
+ Form,
21
+ type InputComponent,
21
22
  } from '@dxos/react-ui-form';
22
23
  import { HuePicker, IconPicker } from '@dxos/react-ui-pickers';
23
24
  import { StackItem } from '@dxos/react-ui-stack';
24
25
 
25
- import { SPACE_PLUGIN } from '../../meta';
26
+ import { meta } from '../../meta';
26
27
  import { SpaceAction, SpaceForm } from '../../types';
27
28
 
28
29
  const FormSchema = SpaceForm.pipe(
@@ -35,7 +36,7 @@ export type SpaceSettingsContainerProps = {
35
36
 
36
37
  // TODO(wittjosiah): Handle space migrations here?
37
38
  export const SpaceSettingsContainer = ({ space }: SpaceSettingsContainerProps) => {
38
- const { t } = useTranslation(SPACE_PLUGIN);
39
+ const { t } = useTranslation(meta.id);
39
40
  const { dispatchPromise: dispatch } = useIntentDispatcher();
40
41
  const client = useClient();
41
42
  const archived = useMulticastObservable(space.state) === SpaceState.SPACE_INACTIVE;
@@ -69,7 +70,7 @@ export const SpaceSettingsContainer = ({ space }: SpaceSettingsContainerProps) =
69
70
  }
70
71
  if (properties.archived && !archived) {
71
72
  void dispatch(
72
- pipe(
73
+ Function.pipe(
73
74
  createIntent(SpaceAction.Close, { space }),
74
75
  chain(LayoutAction.SwitchWorkspace, { part: 'workspace', subject: client.spaces.default.id }),
75
76
  ),
@@ -111,14 +112,14 @@ export const SpaceSettingsContainer = ({ space }: SpaceSettingsContainerProps) =
111
112
  );
112
113
  },
113
114
  icon: ({ type, label, getValue, onValueChange }) => {
114
- const handleChange = useCallback((nextEmoji: string) => onValueChange(type, nextEmoji), [onValueChange, type]);
115
- const handleEmojiReset = useCallback(() => onValueChange(type, undefined), [onValueChange, type]);
115
+ const handleChange = useCallback((icon: string) => onValueChange(type, icon), [onValueChange, type]);
116
+ const handleReset = useCallback(() => onValueChange(type, undefined), [onValueChange, type]);
116
117
  return (
117
118
  <ControlItem title={label} description={t('icon description')}>
118
119
  <IconPicker
119
120
  value={getValue()}
120
121
  onChange={handleChange}
121
- onReset={handleEmojiReset}
122
+ onReset={handleReset}
122
123
  classNames='justify-self-end'
123
124
  iconSize={5}
124
125
  />
@@ -127,13 +128,13 @@ export const SpaceSettingsContainer = ({ space }: SpaceSettingsContainerProps) =
127
128
  },
128
129
  hue: ({ type, label, getValue, onValueChange }) => {
129
130
  const handleChange = useCallback((nextHue: string) => onValueChange(type, nextHue), [onValueChange, type]);
130
- const handleHueReset = useCallback(() => onValueChange(type, undefined), [onValueChange, type]);
131
+ const handleReset = useCallback(() => onValueChange(type, undefined), [onValueChange, type]);
131
132
  return (
132
133
  <ControlItem title={label} description={t('hue description')}>
133
134
  <HuePicker
134
135
  value={getValue()}
135
136
  onChange={handleChange}
136
- onReset={handleHueReset}
137
+ onReset={handleReset}
137
138
  classNames='[--hue-preview-size:1.25rem] justify-self-end'
138
139
  />
139
140
  </ControlItem>
@@ -162,11 +163,11 @@ export const SpaceSettingsContainer = ({ space }: SpaceSettingsContainerProps) =
162
163
  );
163
164
 
164
165
  return (
165
- <StackItem.Content classNames='block overflow-y-auto pli-2'>
166
+ <StackItem.Content scrollable>
166
167
  <ControlPage>
167
168
  <ControlSection
168
- title={t('space properties settings verbose label', { ns: SPACE_PLUGIN })}
169
- description={t('space properties settings description', { ns: SPACE_PLUGIN })}
169
+ title={t('space properties settings verbose label', { ns: meta.id })}
170
+ description={t('space properties settings description', { ns: meta.id })}
170
171
  >
171
172
  <Form
172
173
  schema={FormSchema}
@@ -175,7 +176,7 @@ export const SpaceSettingsContainer = ({ space }: SpaceSettingsContainerProps) =
175
176
  onSave={handleSave}
176
177
  Custom={customElements}
177
178
  outerSpacing={false}
178
- classNames='container-max-width grid grid-cols-1 md:grid-cols-[1fr_min-content] gap-4'
179
+ classNames='container-max-width grid grid-cols-1 md:grid-cols-[1fr_min-content]'
179
180
  />
180
181
  </ControlSection>
181
182
  </ControlPage>
@@ -2,7 +2,7 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- import { Option } from 'effect';
5
+ import * as Option from 'effect/Option';
6
6
  import React, { useEffect, useState } from 'react';
7
7
 
8
8
  import { useAppGraph } from '@dxos/app-framework';
@@ -14,14 +14,14 @@ import { Tooltip, useTranslation } from '@dxos/react-ui';
14
14
  import { AttentionGlyph, useAttended, useAttention } from '@dxos/react-ui-attention';
15
15
 
16
16
  import { usePath } from '../../hooks';
17
- import { SPACE_PLUGIN } from '../../meta';
17
+ import { meta } from '../../meta';
18
18
 
19
- const useEdgeStatus = (): EdgeStatus => {
20
- const [status, setStatus] = useState(EdgeStatus.NOT_CONNECTED);
19
+ const useEdgeStatus = (): EdgeStatus.ConnectionState => {
20
+ const [status, setStatus] = useState(EdgeStatus.ConnectionState.NOT_CONNECTED);
21
21
  const client = useClient();
22
22
  useEffect(() => {
23
23
  client.services.services.EdgeAgentService?.queryEdgeStatus().subscribe(({ status }) => {
24
- setStatus(status);
24
+ setStatus(status.state);
25
25
  });
26
26
  }, [client]);
27
27
 
@@ -29,7 +29,7 @@ const useEdgeStatus = (): EdgeStatus => {
29
29
  };
30
30
 
31
31
  export const InlineSyncStatus = ({ space, open }: { space: Space; open?: boolean }) => {
32
- const { t } = useTranslation(SPACE_PLUGIN);
32
+ const { t } = useTranslation(meta.id);
33
33
  const id = space.id;
34
34
  const { hasAttention, isAncestor, isRelated } = useAttention(id);
35
35
  const isAttended = hasAttention || isAncestor || isRelated;
@@ -43,7 +43,7 @@ export const InlineSyncStatus = ({ space, open }: { space: Space; open?: boolean
43
43
  const path = usePath(graph, startOfAttention);
44
44
  const containsAttended = !open && !isAttended && id && Option.isSome(path) ? path.value.includes(id) : false;
45
45
 
46
- const connectedToEdge = useEdgeStatus() === EdgeStatus.CONNECTED;
46
+ const connectedToEdge = useEdgeStatus() === EdgeStatus.ConnectionState.CONNECTED;
47
47
  // TODO(wittjosiah): This is not reactive.
48
48
  const edgeSyncEnabled = space.internal.data.edgeReplication === EdgeReplicationSetting.ENABLED;
49
49
  const syncState = useSpaceSyncState(space);
@@ -2,28 +2,28 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import '@dxos-theme';
6
-
7
5
  import { type Meta, type StoryObj } from '@storybook/react-vite';
8
6
 
9
- import { withTheme } from '@dxos/storybook-utils';
7
+ import { withClientProvider } from '@dxos/react-client/testing';
8
+ import { withTheme } from '@dxos/react-ui/testing';
10
9
 
11
- import { SyncStatusIndicator } from './SyncStatus';
12
10
  import { translations } from '../../translations';
13
11
 
14
- const meta: Meta = {
12
+ import { SyncStatusIndicator } from './SyncStatus';
13
+
14
+ const meta = {
15
15
  title: 'plugins/plugin-space/SyncStatusIndicator',
16
16
  component: SyncStatusIndicator,
17
- decorators: [withTheme],
17
+ decorators: [withTheme, withClientProvider({ createIdentity: true })],
18
18
  parameters: {
19
- translations,
20
19
  layout: 'centered',
20
+ translations,
21
21
  },
22
- };
22
+ } satisfies Meta<typeof SyncStatusIndicator>;
23
23
 
24
24
  export default meta;
25
25
 
26
- type Story = StoryObj<typeof SyncStatusIndicator>;
26
+ type Story = StoryObj<typeof meta>;
27
27
 
28
28
  export const Default: Story = {
29
29
  args: {