@dxos/plugin-space 0.8.2-staging.7ac8446 → 0.8.2

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 (341) hide show
  1. package/dist/lib/browser/app-graph-builder-DCWUULKX.mjs +328 -0
  2. package/dist/lib/browser/app-graph-builder-DCWUULKX.mjs.map +7 -0
  3. package/dist/lib/browser/{app-graph-serializer-DSF2U3A5.mjs → app-graph-serializer-MLU7XI2P.mjs} +10 -10
  4. package/dist/lib/browser/app-graph-serializer-MLU7XI2P.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-KVRYWFZU.mjs → chunk-3LN4LJN6.mjs} +3 -8
  6. package/dist/lib/{node-esm/chunk-PIYAWT5N.mjs.map → browser/chunk-3LN4LJN6.mjs.map} +3 -3
  7. package/dist/lib/browser/chunk-7Y4M7GXO.mjs +94 -0
  8. package/dist/lib/browser/chunk-7Y4M7GXO.mjs.map +7 -0
  9. package/dist/lib/browser/{chunk-LO5UL6RU.mjs → chunk-N5QMRLKI.mjs} +78 -173
  10. package/dist/lib/browser/chunk-N5QMRLKI.mjs.map +7 -0
  11. package/dist/lib/browser/chunk-Q4BTFH2P.mjs +1900 -0
  12. package/dist/lib/browser/chunk-Q4BTFH2P.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-5BDV575R.mjs → chunk-VEBKN45O.mjs} +21 -10
  14. package/dist/lib/browser/chunk-VEBKN45O.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-W46VVHFM.mjs +288 -0
  16. package/dist/lib/browser/chunk-W46VVHFM.mjs.map +7 -0
  17. package/dist/lib/browser/{identity-created-JR7BNXFH.mjs → identity-created-O63SIYOF.mjs} +5 -5
  18. package/dist/lib/browser/identity-created-O63SIYOF.mjs.map +7 -0
  19. package/dist/lib/browser/index.mjs +34 -54
  20. package/dist/lib/browser/index.mjs.map +3 -3
  21. package/dist/lib/browser/{intent-resolver-RKYILWWQ.mjs → intent-resolver-KBF3YU6I.mjs} +116 -108
  22. package/dist/lib/browser/intent-resolver-KBF3YU6I.mjs.map +7 -0
  23. package/dist/lib/browser/meta.json +1 -1
  24. package/dist/lib/browser/{react-root-6H7NX2M2.mjs → react-root-PVKJE4EZ.mjs} +6 -5
  25. package/dist/lib/browser/{react-surface-7AGLOVMK.mjs → react-surface-252P4NCK.mjs} +121 -54
  26. package/dist/lib/browser/react-surface-252P4NCK.mjs.map +7 -0
  27. package/dist/lib/browser/schema-defs-JMN74RNK.mjs +26 -0
  28. package/dist/lib/browser/schema-defs-JMN74RNK.mjs.map +7 -0
  29. package/dist/lib/browser/{schema-tools-YAXPRIXP.mjs → schema-tools-JIEMHUXV.mjs} +26 -26
  30. package/dist/lib/browser/schema-tools-JIEMHUXV.mjs.map +7 -0
  31. package/dist/lib/browser/{settings-PJPTJUPE.mjs → settings-2IN2WLUK.mjs} +4 -4
  32. package/dist/lib/browser/settings-2IN2WLUK.mjs.map +7 -0
  33. package/dist/lib/browser/{spaces-ready-BSSP7HHG.mjs → spaces-ready-L4QAGTDE.mjs} +20 -19
  34. package/dist/lib/browser/spaces-ready-L4QAGTDE.mjs.map +7 -0
  35. package/dist/lib/browser/{state-X7VLCC6E.mjs → state-6HOSHLIN.mjs} +3 -5
  36. package/dist/lib/browser/state-6HOSHLIN.mjs.map +7 -0
  37. package/dist/lib/browser/types/index.mjs +7 -7
  38. package/dist/lib/node/app-graph-builder-WC445X77.cjs +328 -0
  39. package/dist/lib/node/app-graph-builder-WC445X77.cjs.map +7 -0
  40. package/dist/lib/node/{app-graph-serializer-JELGJUAY.cjs → app-graph-serializer-UPQOQVMJ.cjs} +22 -22
  41. package/dist/lib/node/app-graph-serializer-UPQOQVMJ.cjs.map +7 -0
  42. package/dist/lib/node/chunk-5WLAXYE3.cjs +125 -0
  43. package/dist/lib/node/chunk-5WLAXYE3.cjs.map +7 -0
  44. package/dist/lib/node/{chunk-IKIDS6XF.cjs → chunk-7GQGM4ZF.cjs} +7 -13
  45. package/dist/lib/node/{chunk-IKIDS6XF.cjs.map → chunk-7GQGM4ZF.cjs.map} +3 -3
  46. package/dist/lib/node/{chunk-TUZWEPGX.cjs → chunk-COQYISES.cjs} +100 -198
  47. package/dist/lib/node/chunk-COQYISES.cjs.map +7 -0
  48. package/dist/lib/node/{chunk-PU2EYH4E.cjs → chunk-DXL5TDFP.cjs} +25 -14
  49. package/dist/lib/node/chunk-DXL5TDFP.cjs.map +7 -0
  50. package/dist/lib/node/chunk-FXHI7JNY.cjs +315 -0
  51. package/dist/lib/node/chunk-FXHI7JNY.cjs.map +7 -0
  52. package/dist/lib/node/chunk-Q3YZEYZT.cjs +1904 -0
  53. package/dist/lib/node/chunk-Q3YZEYZT.cjs.map +7 -0
  54. package/dist/lib/node/{identity-created-XU4HFV2T.cjs → identity-created-UXEAUGC7.cjs} +7 -7
  55. package/dist/lib/node/identity-created-UXEAUGC7.cjs.map +7 -0
  56. package/dist/lib/node/index.cjs +83 -105
  57. package/dist/lib/node/index.cjs.map +3 -3
  58. package/dist/lib/node/{intent-resolver-VJ7YV74L.cjs → intent-resolver-SVFJKUH7.cjs} +161 -152
  59. package/dist/lib/node/intent-resolver-SVFJKUH7.cjs.map +7 -0
  60. package/dist/lib/node/meta.json +1 -1
  61. package/dist/lib/node/{react-root-TEL5RW3N.cjs → react-root-DDPDUMCG.cjs} +11 -10
  62. package/dist/lib/node/{react-root-TEL5RW3N.cjs.map → react-root-DDPDUMCG.cjs.map} +1 -1
  63. package/dist/lib/node/{react-surface-2H3S5TY5.cjs → react-surface-JUIU37BX.cjs} +144 -77
  64. package/dist/lib/node/react-surface-JUIU37BX.cjs.map +7 -0
  65. package/dist/lib/node/{schema-PPJ5BZ3A.cjs → schema-defs-XLFBG3XK.cjs} +14 -12
  66. package/dist/lib/node/schema-defs-XLFBG3XK.cjs.map +7 -0
  67. package/dist/lib/node/{schema-tools-BLIMOZYY.cjs → schema-tools-ZG6Z2QRC.cjs} +32 -32
  68. package/dist/lib/node/schema-tools-ZG6Z2QRC.cjs.map +7 -0
  69. package/dist/lib/node/{settings-WVFP2UEP.cjs → settings-FOH7EB5C.cjs} +7 -7
  70. package/dist/lib/node/settings-FOH7EB5C.cjs.map +7 -0
  71. package/dist/lib/node/{spaces-ready-7DNZSUOG.cjs → spaces-ready-VXQYCBII.cjs} +27 -26
  72. package/dist/lib/node/spaces-ready-VXQYCBII.cjs.map +7 -0
  73. package/dist/lib/node/{state-5KX6WBJH.cjs → state-ZT3MTZXB.cjs} +7 -9
  74. package/dist/lib/node/state-ZT3MTZXB.cjs.map +7 -0
  75. package/dist/lib/node/types/index.cjs +15 -15
  76. package/dist/lib/node/types/index.cjs.map +1 -1
  77. package/dist/lib/node-esm/app-graph-builder-E7CCGPQJ.mjs +329 -0
  78. package/dist/lib/node-esm/app-graph-builder-E7CCGPQJ.mjs.map +7 -0
  79. package/dist/lib/node-esm/{app-graph-serializer-FXONFKOE.mjs → app-graph-serializer-UCMSLPIA.mjs} +10 -10
  80. package/dist/lib/node-esm/app-graph-serializer-UCMSLPIA.mjs.map +7 -0
  81. package/dist/lib/node-esm/{chunk-PIYAWT5N.mjs → chunk-4X4Y63ND.mjs} +3 -8
  82. package/dist/lib/{browser/chunk-KVRYWFZU.mjs.map → node-esm/chunk-4X4Y63ND.mjs.map} +3 -3
  83. package/dist/lib/node-esm/chunk-FTELJGEG.mjs +289 -0
  84. package/dist/lib/node-esm/chunk-FTELJGEG.mjs.map +7 -0
  85. package/dist/lib/node-esm/chunk-GH2FGJXH.mjs +96 -0
  86. package/dist/lib/node-esm/chunk-GH2FGJXH.mjs.map +7 -0
  87. package/dist/lib/node-esm/chunk-HL2Z2GNW.mjs +1901 -0
  88. package/dist/lib/node-esm/chunk-HL2Z2GNW.mjs.map +7 -0
  89. package/dist/lib/node-esm/{chunk-3ZOUV4DF.mjs → chunk-OSPEGYX3.mjs} +21 -10
  90. package/dist/lib/node-esm/chunk-OSPEGYX3.mjs.map +7 -0
  91. package/dist/lib/node-esm/{chunk-ZGLK25WQ.mjs → chunk-XAZNQ3QN.mjs} +78 -173
  92. package/dist/lib/node-esm/chunk-XAZNQ3QN.mjs.map +7 -0
  93. package/dist/lib/node-esm/{identity-created-WJKAS2PV.mjs → identity-created-ZECO4NH3.mjs} +5 -5
  94. package/dist/lib/node-esm/identity-created-ZECO4NH3.mjs.map +7 -0
  95. package/dist/lib/node-esm/index.mjs +34 -54
  96. package/dist/lib/node-esm/index.mjs.map +3 -3
  97. package/dist/lib/node-esm/{intent-resolver-ZFNSA4CM.mjs → intent-resolver-K2UDBF2R.mjs} +116 -108
  98. package/dist/lib/node-esm/intent-resolver-K2UDBF2R.mjs.map +7 -0
  99. package/dist/lib/node-esm/meta.json +1 -1
  100. package/dist/lib/node-esm/{react-root-PRBJMWLQ.mjs → react-root-6F7B3OVO.mjs} +6 -5
  101. package/dist/lib/{browser/react-root-6H7NX2M2.mjs.map → node-esm/react-root-6F7B3OVO.mjs.map} +1 -1
  102. package/dist/lib/node-esm/{react-surface-RCZG2PNF.mjs → react-surface-NP3Y6BNZ.mjs} +121 -54
  103. package/dist/lib/node-esm/react-surface-NP3Y6BNZ.mjs.map +7 -0
  104. package/dist/lib/node-esm/schema-defs-QZJS6UXN.mjs +27 -0
  105. package/dist/lib/node-esm/schema-defs-QZJS6UXN.mjs.map +7 -0
  106. package/dist/lib/node-esm/{schema-tools-IU7EX5A5.mjs → schema-tools-2Y4D42PD.mjs} +26 -26
  107. package/dist/lib/node-esm/schema-tools-2Y4D42PD.mjs.map +7 -0
  108. package/dist/lib/node-esm/{settings-FJZPC2TV.mjs → settings-Q4XDFSYD.mjs} +4 -4
  109. package/dist/lib/node-esm/settings-Q4XDFSYD.mjs.map +7 -0
  110. package/dist/lib/node-esm/{spaces-ready-7X5PGB2V.mjs → spaces-ready-JHKPD4PH.mjs} +20 -19
  111. package/dist/lib/node-esm/spaces-ready-JHKPD4PH.mjs.map +7 -0
  112. package/dist/lib/node-esm/{state-Z6E2YTNC.mjs → state-4ATRHSKA.mjs} +3 -5
  113. package/dist/lib/node-esm/state-4ATRHSKA.mjs.map +7 -0
  114. package/dist/lib/node-esm/types/index.mjs +7 -7
  115. package/dist/types/src/SpacePlugin.d.ts.map +1 -1
  116. package/dist/types/src/capabilities/app-graph-builder.d.ts +2 -179
  117. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  118. package/dist/types/src/capabilities/app-graph-serializer.d.ts +2 -2
  119. package/dist/types/src/capabilities/app-graph-serializer.d.ts.map +1 -1
  120. package/dist/types/src/capabilities/capabilities.d.ts +0 -8
  121. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  122. package/dist/types/src/capabilities/identity-created.d.ts +2 -2
  123. package/dist/types/src/capabilities/identity-created.d.ts.map +1 -1
  124. package/dist/types/src/capabilities/index.d.ts +9 -184
  125. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  126. package/dist/types/src/capabilities/intent-resolver.d.ts +4 -3
  127. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  128. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  129. package/dist/types/src/capabilities/schema-defs.d.ts +4 -0
  130. package/dist/types/src/capabilities/schema-defs.d.ts.map +1 -0
  131. package/dist/types/src/capabilities/schema-tools.d.ts +3 -3
  132. package/dist/types/src/capabilities/schema-tools.d.ts.map +1 -1
  133. package/dist/types/src/capabilities/spaces-ready.d.ts +2 -2
  134. package/dist/types/src/capabilities/spaces-ready.d.ts.map +1 -1
  135. package/dist/types/src/capabilities/state.d.ts +2 -2
  136. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  137. package/dist/types/src/components/AwaitingObject.d.ts.map +1 -1
  138. package/dist/types/src/components/CollectionMain.d.ts.map +1 -1
  139. package/dist/types/src/components/CollectionSection.d.ts.map +1 -1
  140. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts +2 -2
  141. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
  142. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
  143. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts.map +1 -1
  144. package/dist/types/src/components/JoinDialog.d.ts.map +1 -1
  145. package/dist/types/src/components/MembersContainer.d.ts.map +1 -1
  146. package/dist/types/src/components/MembersContainer.stories.d.ts.map +1 -1
  147. package/dist/types/src/components/MenuFooter.d.ts +2 -2
  148. package/dist/types/src/components/MenuFooter.d.ts.map +1 -1
  149. package/dist/types/src/components/{ObjectSettingsContainer → ObjectSettings}/AdvancedObjectSettings.d.ts +2 -2
  150. package/dist/types/src/components/ObjectSettings/AdvancedObjectSettings.d.ts.map +1 -0
  151. package/dist/types/src/components/{ObjectSettingsContainer → ObjectSettings}/BaseObjectSettings.d.ts +2 -2
  152. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts.map +1 -0
  153. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts.map +1 -0
  154. package/dist/types/src/components/{ObjectSettingsContainer → ObjectSettings}/ObjectSettingsContainer.d.ts +2 -2
  155. package/dist/types/src/components/ObjectSettings/ObjectSettingsContainer.d.ts.map +1 -0
  156. package/dist/types/src/components/ObjectSettings/index.d.ts.map +1 -0
  157. package/dist/types/src/components/PersistenceStatus.d.ts.map +1 -1
  158. package/dist/types/src/components/PopoverRenameObject.d.ts +2 -2
  159. package/dist/types/src/components/PopoverRenameObject.d.ts.map +1 -1
  160. package/dist/types/src/components/PopoverRenameSpace.d.ts.map +1 -1
  161. package/dist/types/src/components/SchemaContainer.d.ts +13 -0
  162. package/dist/types/src/components/SchemaContainer.d.ts.map +1 -0
  163. package/dist/types/src/components/SpacePluginSettings.d.ts.map +1 -1
  164. package/dist/types/src/components/SpacePresence.d.ts.map +1 -1
  165. package/dist/types/src/components/SpacePresence.stories.d.ts.map +1 -1
  166. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts +0 -2
  167. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
  168. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts +7 -0
  169. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts.map +1 -0
  170. package/dist/types/src/components/SpaceSettings/index.d.ts +0 -1
  171. package/dist/types/src/components/SpaceSettings/index.d.ts.map +1 -1
  172. package/dist/types/src/components/SyncStatus/InlineSyncStatus.d.ts.map +1 -1
  173. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts +1 -8
  174. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
  175. package/dist/types/src/components/SyncStatus/save-tracker.d.ts.map +1 -1
  176. package/dist/types/src/components/SyncStatus/status.d.ts.map +1 -1
  177. package/dist/types/src/components/index.d.ts +2 -3
  178. package/dist/types/src/components/index.d.ts.map +1 -1
  179. package/dist/types/src/hooks/index.d.ts +2 -0
  180. package/dist/types/src/hooks/index.d.ts.map +1 -1
  181. package/dist/types/src/hooks/useActiveSpace.d.ts +4 -0
  182. package/dist/types/src/hooks/useActiveSpace.d.ts.map +1 -0
  183. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts +14 -0
  184. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts.map +1 -0
  185. package/dist/types/src/hooks/usePath.d.ts +3 -2
  186. package/dist/types/src/hooks/usePath.d.ts.map +1 -1
  187. package/dist/types/src/index.d.ts +3 -2
  188. package/dist/types/src/index.d.ts.map +1 -1
  189. package/dist/types/src/translations.d.ts +17 -242
  190. package/dist/types/src/translations.d.ts.map +1 -1
  191. package/dist/types/src/types/collection.d.ts +9 -8
  192. package/dist/types/src/types/collection.d.ts.map +1 -1
  193. package/dist/types/src/types/index.d.ts +0 -1
  194. package/dist/types/src/types/index.d.ts.map +1 -1
  195. package/dist/types/src/types/types.d.ts +173 -146
  196. package/dist/types/src/types/types.d.ts.map +1 -1
  197. package/dist/types/src/util.d.ts +36 -20
  198. package/dist/types/src/util.d.ts.map +1 -1
  199. package/dist/types/tsconfig.tsbuildinfo +1 -1
  200. package/package.json +54 -47
  201. package/src/SpacePlugin.tsx +11 -20
  202. package/src/capabilities/app-graph-builder.ts +377 -230
  203. package/src/capabilities/app-graph-serializer.ts +8 -8
  204. package/src/capabilities/capabilities.ts +0 -9
  205. package/src/capabilities/identity-created.ts +5 -5
  206. package/src/capabilities/index.ts +2 -2
  207. package/src/capabilities/intent-resolver.ts +107 -111
  208. package/src/capabilities/react-surface.tsx +111 -50
  209. package/src/capabilities/schema-defs.ts +30 -0
  210. package/src/capabilities/schema-tool.test.ts +2 -3
  211. package/src/capabilities/schema-tools.ts +29 -29
  212. package/src/capabilities/settings.ts +2 -2
  213. package/src/capabilities/spaces-ready.ts +17 -15
  214. package/src/capabilities/state.ts +3 -5
  215. package/src/components/AwaitingObject.tsx +1 -1
  216. package/src/components/CollectionMain.tsx +2 -5
  217. package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +4 -4
  218. package/src/components/CreateDialog/CreateObjectDialog.tsx +4 -4
  219. package/src/components/CreateDialog/CreateObjectPanel.tsx +3 -25
  220. package/src/components/CreateDialog/CreateSpaceDialog.tsx +6 -3
  221. package/src/components/MembersContainer.stories.tsx +1 -5
  222. package/src/components/MembersContainer.tsx +80 -54
  223. package/src/components/MenuFooter.tsx +2 -2
  224. package/src/components/{ObjectSettingsContainer → ObjectSettings}/AdvancedObjectSettings.tsx +4 -4
  225. package/src/components/{ObjectSettingsContainer → ObjectSettings}/BaseObjectSettings.tsx +2 -2
  226. package/src/components/{ObjectSettingsContainer → ObjectSettings}/ObjectSettingsContainer.tsx +4 -4
  227. package/src/components/PersistenceStatus.tsx +11 -14
  228. package/src/components/PopoverRenameObject.tsx +15 -9
  229. package/src/components/PopoverRenameSpace.tsx +9 -1
  230. package/src/components/SchemaContainer.tsx +59 -0
  231. package/src/components/SpacePluginSettings.tsx +27 -2
  232. package/src/components/SpacePresence.stories.tsx +1 -1
  233. package/src/components/SpacePresence.tsx +60 -65
  234. package/src/components/SpaceSettings/{SpacePropertiesForm.stories.tsx → SpaceSettingsContainer.stories.tsx} +6 -6
  235. package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +159 -39
  236. package/src/components/SpaceSettings/index.ts +0 -1
  237. package/src/components/SyncStatus/InlineSyncStatus.tsx +15 -24
  238. package/src/components/SyncStatus/SyncStatus.tsx +6 -69
  239. package/src/components/index.ts +2 -3
  240. package/src/hooks/index.ts +2 -0
  241. package/src/hooks/useActiveSpace.ts +20 -0
  242. package/src/hooks/useInputSurfaceLookup.tsx +31 -0
  243. package/src/hooks/usePath.ts +9 -6
  244. package/src/index.ts +3 -2
  245. package/src/translations.ts +19 -7
  246. package/src/types/collection.ts +6 -4
  247. package/src/types/index.ts +0 -1
  248. package/src/types/types.ts +130 -101
  249. package/src/util.tsx +75 -172
  250. package/dist/lib/browser/app-graph-builder-GMFCSOLG.mjs +0 -315
  251. package/dist/lib/browser/app-graph-builder-GMFCSOLG.mjs.map +0 -7
  252. package/dist/lib/browser/app-graph-serializer-DSF2U3A5.mjs.map +0 -7
  253. package/dist/lib/browser/chunk-5BDV575R.mjs.map +0 -7
  254. package/dist/lib/browser/chunk-AYW4IDRT.mjs +0 -275
  255. package/dist/lib/browser/chunk-AYW4IDRT.mjs.map +0 -7
  256. package/dist/lib/browser/chunk-JZXWPMLA.mjs +0 -2081
  257. package/dist/lib/browser/chunk-JZXWPMLA.mjs.map +0 -7
  258. package/dist/lib/browser/chunk-LO5UL6RU.mjs.map +0 -7
  259. package/dist/lib/browser/identity-created-JR7BNXFH.mjs.map +0 -7
  260. package/dist/lib/browser/intent-resolver-RKYILWWQ.mjs.map +0 -7
  261. package/dist/lib/browser/react-surface-7AGLOVMK.mjs.map +0 -7
  262. package/dist/lib/browser/schema-FHTA26SW.mjs +0 -24
  263. package/dist/lib/browser/schema-FHTA26SW.mjs.map +0 -7
  264. package/dist/lib/browser/schema-tools-YAXPRIXP.mjs.map +0 -7
  265. package/dist/lib/browser/settings-PJPTJUPE.mjs.map +0 -7
  266. package/dist/lib/browser/spaces-ready-BSSP7HHG.mjs.map +0 -7
  267. package/dist/lib/browser/state-X7VLCC6E.mjs.map +0 -7
  268. package/dist/lib/node/app-graph-builder-DPY7AUZE.cjs +0 -318
  269. package/dist/lib/node/app-graph-builder-DPY7AUZE.cjs.map +0 -7
  270. package/dist/lib/node/app-graph-serializer-JELGJUAY.cjs.map +0 -7
  271. package/dist/lib/node/chunk-3GKCNADA.cjs +0 -2074
  272. package/dist/lib/node/chunk-3GKCNADA.cjs.map +0 -7
  273. package/dist/lib/node/chunk-PU2EYH4E.cjs.map +0 -7
  274. package/dist/lib/node/chunk-TUZWEPGX.cjs.map +0 -7
  275. package/dist/lib/node/chunk-WDEIFDTX.cjs +0 -300
  276. package/dist/lib/node/chunk-WDEIFDTX.cjs.map +0 -7
  277. package/dist/lib/node/identity-created-XU4HFV2T.cjs.map +0 -7
  278. package/dist/lib/node/intent-resolver-VJ7YV74L.cjs.map +0 -7
  279. package/dist/lib/node/react-surface-2H3S5TY5.cjs.map +0 -7
  280. package/dist/lib/node/schema-PPJ5BZ3A.cjs.map +0 -7
  281. package/dist/lib/node/schema-tools-BLIMOZYY.cjs.map +0 -7
  282. package/dist/lib/node/settings-WVFP2UEP.cjs.map +0 -7
  283. package/dist/lib/node/spaces-ready-7DNZSUOG.cjs.map +0 -7
  284. package/dist/lib/node/state-5KX6WBJH.cjs.map +0 -7
  285. package/dist/lib/node-esm/app-graph-builder-42IGWRPL.mjs +0 -316
  286. package/dist/lib/node-esm/app-graph-builder-42IGWRPL.mjs.map +0 -7
  287. package/dist/lib/node-esm/app-graph-serializer-FXONFKOE.mjs.map +0 -7
  288. package/dist/lib/node-esm/chunk-3ZOUV4DF.mjs.map +0 -7
  289. package/dist/lib/node-esm/chunk-BEWBZ4Q4.mjs +0 -2082
  290. package/dist/lib/node-esm/chunk-BEWBZ4Q4.mjs.map +0 -7
  291. package/dist/lib/node-esm/chunk-FC4UHDPL.mjs +0 -276
  292. package/dist/lib/node-esm/chunk-FC4UHDPL.mjs.map +0 -7
  293. package/dist/lib/node-esm/chunk-ZGLK25WQ.mjs.map +0 -7
  294. package/dist/lib/node-esm/identity-created-WJKAS2PV.mjs.map +0 -7
  295. package/dist/lib/node-esm/intent-resolver-ZFNSA4CM.mjs.map +0 -7
  296. package/dist/lib/node-esm/react-surface-RCZG2PNF.mjs.map +0 -7
  297. package/dist/lib/node-esm/schema-OUZKVYM5.mjs +0 -25
  298. package/dist/lib/node-esm/schema-OUZKVYM5.mjs.map +0 -7
  299. package/dist/lib/node-esm/schema-tools-IU7EX5A5.mjs.map +0 -7
  300. package/dist/lib/node-esm/settings-FJZPC2TV.mjs.map +0 -7
  301. package/dist/lib/node-esm/spaces-ready-7X5PGB2V.mjs.map +0 -7
  302. package/dist/lib/node-esm/state-Z6E2YTNC.mjs.map +0 -7
  303. package/dist/types/src/capabilities/schema.d.ts +0 -4
  304. package/dist/types/src/capabilities/schema.d.ts.map +0 -1
  305. package/dist/types/src/components/ObjectSettingsContainer/AdvancedObjectSettings.d.ts.map +0 -1
  306. package/dist/types/src/components/ObjectSettingsContainer/BaseObjectSettings.d.ts.map +0 -1
  307. package/dist/types/src/components/ObjectSettingsContainer/ForeignKeys.d.ts.map +0 -1
  308. package/dist/types/src/components/ObjectSettingsContainer/ObjectSettingsContainer.d.ts.map +0 -1
  309. package/dist/types/src/components/ObjectSettingsContainer/index.d.ts.map +0 -1
  310. package/dist/types/src/components/PopoverAddSpace.d.ts +0 -4
  311. package/dist/types/src/components/PopoverAddSpace.d.ts.map +0 -1
  312. package/dist/types/src/components/ShareSpaceButton.d.ts +0 -9
  313. package/dist/types/src/components/ShareSpaceButton.d.ts.map +0 -1
  314. package/dist/types/src/components/ShareSpaceButton.stories.d.ts +0 -10
  315. package/dist/types/src/components/ShareSpaceButton.stories.d.ts.map +0 -1
  316. package/dist/types/src/components/SpaceSettings/SpacePropertiesForm.d.ts +0 -7
  317. package/dist/types/src/components/SpaceSettings/SpacePropertiesForm.d.ts.map +0 -1
  318. package/dist/types/src/components/SpaceSettings/SpacePropertiesForm.stories.d.ts +0 -7
  319. package/dist/types/src/components/SpaceSettings/SpacePropertiesForm.stories.d.ts.map +0 -1
  320. package/dist/types/src/components/SyncStatus/Space.d.ts +0 -13
  321. package/dist/types/src/components/SyncStatus/Space.d.ts.map +0 -1
  322. package/dist/types/src/components/SyncStatus/SyncStatusDetail.stories.d.ts +0 -9
  323. package/dist/types/src/components/SyncStatus/SyncStatusDetail.stories.d.ts.map +0 -1
  324. package/dist/types/src/components/SyncStatus/sync-state.d.ts +0 -18
  325. package/dist/types/src/components/SyncStatus/sync-state.d.ts.map +0 -1
  326. package/dist/types/src/types/thread.d.ts +0 -128
  327. package/dist/types/src/types/thread.d.ts.map +0 -1
  328. package/src/capabilities/schema.ts +0 -27
  329. package/src/components/PopoverAddSpace.tsx +0 -46
  330. package/src/components/ShareSpaceButton.stories.tsx +0 -27
  331. package/src/components/ShareSpaceButton.tsx +0 -32
  332. package/src/components/SpaceSettings/SpacePropertiesForm.tsx +0 -136
  333. package/src/components/SyncStatus/Space.tsx +0 -133
  334. package/src/components/SyncStatus/SyncStatusDetail.stories.tsx +0 -89
  335. package/src/components/SyncStatus/sync-state.ts +0 -101
  336. package/src/types/thread.ts +0 -24
  337. /package/dist/lib/{node-esm/react-root-PRBJMWLQ.mjs.map → browser/react-root-PVKJE4EZ.mjs.map} +0 -0
  338. /package/dist/types/src/components/{ObjectSettingsContainer → ObjectSettings}/ForeignKeys.d.ts +0 -0
  339. /package/dist/types/src/components/{ObjectSettingsContainer → ObjectSettings}/index.d.ts +0 -0
  340. /package/src/components/{ObjectSettingsContainer → ObjectSettings}/ForeignKeys.tsx +0 -0
  341. /package/src/components/{ObjectSettingsContainer → ObjectSettings}/index.ts +0 -0
@@ -4,42 +4,20 @@
4
4
 
5
5
  import React, { useCallback, useState } from 'react';
6
6
 
7
- import { Surface, isSurfaceAvailable, usePluginManager } from '@dxos/app-framework';
8
- import { getTypeAnnotation, type TypeAnnotation, type S } from '@dxos/echo-schema';
7
+ import { getTypeAnnotation, type TypeAnnotation } from '@dxos/echo-schema';
9
8
  import { invariant } from '@dxos/invariant';
10
9
  import { type SpaceId, type Space } from '@dxos/react-client/echo';
11
10
  import { Icon, type ThemedClassName, toLocalizedString, useTranslation } from '@dxos/react-ui';
12
- import { Form, type InputProps } from '@dxos/react-ui-form';
11
+ import { Form } from '@dxos/react-ui-form';
13
12
  import { SearchList } from '@dxos/react-ui-searchlist';
14
13
  import { mx } from '@dxos/react-ui-theme';
15
14
  import { isNonNullable, type MaybePromise } from '@dxos/util';
16
15
 
16
+ import { useInputSurfaceLookup } from '../../hooks';
17
17
  import { SPACE_PLUGIN } from '../../meta';
18
18
  import { type ObjectForm, type CollectionType } from '../../types';
19
19
  import { getSpaceDisplayName } from '../../util';
20
20
 
21
- // TODO(ZaymonFC): Move this if you find yourself needing it elsewhere.
22
- /**
23
- * Creates a surface input component based on plugin context.
24
- * @param baseData Additional data that will be merged with form data and passed to the surface.
25
- * This allows providing more context to the surface than what's available from the form itself.
26
- */
27
- const useInputSurfaceLookup = (baseData?: Record<string, any>) => {
28
- const pluginManager = usePluginManager();
29
-
30
- return useCallback(
31
- ({ prop, schema, inputProps }: { prop: string; schema: S.Schema<any>; inputProps: InputProps }) => {
32
- const composedData = { prop, schema, ...baseData };
33
- if (!isSurfaceAvailable(pluginManager.context, { role: 'form-input', data: composedData })) {
34
- return undefined;
35
- }
36
-
37
- return <Surface role='form-input' data={composedData} {...inputProps} />;
38
- },
39
- [pluginManager, baseData],
40
- );
41
- };
42
-
43
21
  export type CreateObjectPanelProps = ThemedClassName<{
44
22
  forms: ObjectForm[];
45
23
  spaces: Space[];
@@ -2,20 +2,20 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- import { Effect } from 'effect';
5
+ import { Effect, type Schema } from 'effect';
6
6
  import React, { useCallback, useRef } from 'react';
7
7
 
8
8
  import { createIntent, LayoutAction, useIntentDispatcher } from '@dxos/app-framework';
9
- import { type S } from '@dxos/echo-schema';
10
9
  import { Button, Dialog, Icon, useTranslation } from '@dxos/react-ui';
11
10
  import { Form } from '@dxos/react-ui-form';
12
11
 
12
+ import { useInputSurfaceLookup } from '../../hooks';
13
13
  import { SPACE_PLUGIN } from '../../meta';
14
14
  import { SpaceAction, SpaceForm } from '../../types';
15
15
 
16
16
  export const CREATE_SPACE_DIALOG = `${SPACE_PLUGIN}/CreateSpaceDialog`;
17
17
 
18
- type FormValues = S.Schema.Type<typeof SpaceForm>;
18
+ type FormValues = Schema.Schema.Type<typeof SpaceForm>;
19
19
  const initialValues: FormValues = { edgeReplication: true };
20
20
 
21
21
  export const CreateSpaceDialog = () => {
@@ -23,6 +23,8 @@ export const CreateSpaceDialog = () => {
23
23
  const { t } = useTranslation(SPACE_PLUGIN);
24
24
  const { dispatch } = useIntentDispatcher();
25
25
 
26
+ const inputSurfaceLookup = useInputSurfaceLookup();
27
+
26
28
  const handleCreateSpace = useCallback(
27
29
  async (data: FormValues) => {
28
30
  const program = Effect.gen(function* () {
@@ -54,6 +56,7 @@ export const CreateSpaceDialog = () => {
54
56
  autoFocus
55
57
  values={initialValues}
56
58
  schema={SpaceForm}
59
+ lookupComponent={inputSurfaceLookup}
57
60
  onSave={handleCreateSpace}
58
61
  />
59
62
  </div>
@@ -16,11 +16,7 @@ import translations from '../translations';
16
16
  const meta: Meta = {
17
17
  title: 'plugins/plugin-space/MembersContainer',
18
18
  component: MembersContainer,
19
- decorators: [
20
- withClientProvider({ createIdentity: true, createSpace: true }),
21
- withTheme,
22
- withLayout({ tooltips: true }),
23
- ],
19
+ decorators: [withClientProvider({ createIdentity: true, createSpace: true }), withTheme, withLayout()],
24
20
  parameters: {
25
21
  layout: 'fullscreen',
26
22
  translations: [...translations, osTranslations],
@@ -3,15 +3,16 @@
3
3
  //
4
4
 
5
5
  import { Check, X } from '@phosphor-icons/react';
6
- import React, { type Dispatch, type SetStateAction, useMemo, useState } from 'react';
6
+ import React, { type Dispatch, type SetStateAction, useCallback, useMemo, useState } from 'react';
7
7
  import { QR } from 'react-qr-rounded';
8
8
 
9
+ import { createIntent, useIntentDispatcher } from '@dxos/app-framework';
9
10
  import { log } from '@dxos/log';
10
11
  import { useConfig } from '@dxos/react-client';
11
12
  import { fullyQualifiedId, useSpaceInvitations, type Space } from '@dxos/react-client/echo';
12
13
  import { type CancellableInvitationObservable, Invitation, InvitationEncoder } from '@dxos/react-client/invitations';
13
- import { Button, Clipboard, Icon, useId, useTranslation } from '@dxos/react-ui';
14
- import { ControlSection, ControlFrame, ControlFrameItem } from '@dxos/react-ui-form';
14
+ import { Button, Clipboard, Icon, Input, useId, useTranslation } from '@dxos/react-ui';
15
+ import { ControlPage, ControlSection, ControlFrame, ControlFrameItem, ControlItemInput } from '@dxos/react-ui-form';
15
16
  import { StackItem } from '@dxos/react-ui-stack';
16
17
  import { getSize, mx } from '@dxos/react-ui-theme';
17
18
  import {
@@ -27,7 +28,8 @@ import {
27
28
  import { hexToEmoji } from '@dxos/util';
28
29
 
29
30
  import { SPACE_PLUGIN } from '../meta';
30
- import { CollectionType } from '../types';
31
+ import { CollectionType, SpaceAction } from '../types';
32
+ import { COMPOSER_SPACE_LOCK } from '../util';
31
33
 
32
34
  // TODO(wittjosiah): Copied from Shell.
33
35
  const activeActionKey = 'dxos:react-shell/space-manager/active-action';
@@ -47,8 +49,9 @@ export const MembersContainer = ({
47
49
  space: Space;
48
50
  createInvitationUrl: (invitationCode: string) => string;
49
51
  }) => {
50
- const { t } = useTranslation('os');
52
+ const { t } = useTranslation(SPACE_PLUGIN);
51
53
  const config = useConfig();
54
+ const { dispatchPromise: dispatch } = useIntentDispatcher();
52
55
  const invitations = useSpaceInvitations(space.key);
53
56
  const visibleInvitations = invitations?.filter(
54
57
  (invitation) => ![Invitation.State.CANCELLED].includes(invitation.get().state),
@@ -64,20 +67,28 @@ export const MembersContainer = ({
64
67
  // TODO(wittjosiah): Track which was the most recently viewed object.
65
68
  const target = space.properties[CollectionType.typename]?.target?.objects[0]?.target;
66
69
 
70
+ const locked = space.properties[COMPOSER_SPACE_LOCK];
71
+ const handleChangeLocked = useCallback(() => {
72
+ space.properties[COMPOSER_SPACE_LOCK] = !locked;
73
+ }, [locked, space]);
74
+
67
75
  const inviteActions = useMemo(
68
76
  (): Record<string, ActionMenuItem> => ({
69
77
  inviteOne: {
70
- label: t('invite one label'),
71
- description: t('invite one description'),
78
+ label: t('invite one label', { ns: 'os' }),
79
+ description: t('invite one description', { ns: 'os' }),
72
80
  icon: () => <Icon icon='ph--user-plus--regular' size={5} />,
73
81
  testId: 'membersContainer.inviteOne',
74
- onClick: () => {
75
- const invitation = space.share?.({
76
- type: Invitation.Type.INTERACTIVE,
77
- authMethod: Invitation.AuthMethod.SHARED_SECRET,
78
- multiUse: false,
79
- target: target && fullyQualifiedId(target),
80
- });
82
+ onClick: async () => {
83
+ const { data: invitation } = await dispatch(
84
+ createIntent(SpaceAction.Share, {
85
+ space,
86
+ type: Invitation.Type.INTERACTIVE,
87
+ authMethod: Invitation.AuthMethod.SHARED_SECRET,
88
+ multiUse: false,
89
+ target: target && fullyQualifiedId(target),
90
+ }),
91
+ );
81
92
  if (invitation && config.values.runtime?.app?.env?.DX_ENVIRONMENT !== 'production') {
82
93
  const subscription: ZenObservable.Subscription = invitation.subscribe((invitation) =>
83
94
  handleInvitationEvent(invitation, subscription),
@@ -86,17 +97,20 @@ export const MembersContainer = ({
86
97
  },
87
98
  },
88
99
  inviteMany: {
89
- label: t('invite many label'),
90
- description: t('invite many description'),
100
+ label: t('invite many label', { ns: 'os' }),
101
+ description: t('invite many description', { ns: 'os' }),
91
102
  icon: () => <Icon icon='ph--users-three--regular' size={5} />,
92
103
  testId: 'membersContainer.inviteMany',
93
- onClick: () => {
94
- const invitation = space.share?.({
95
- type: Invitation.Type.DELEGATED,
96
- authMethod: Invitation.AuthMethod.KNOWN_PUBLIC_KEY,
97
- multiUse: true,
98
- target: target && fullyQualifiedId(target),
99
- });
104
+ onClick: async () => {
105
+ const { data: invitation } = await dispatch(
106
+ createIntent(SpaceAction.Share, {
107
+ space,
108
+ type: Invitation.Type.DELEGATED,
109
+ authMethod: Invitation.AuthMethod.KNOWN_PUBLIC_KEY,
110
+ multiUse: true,
111
+ target: target && fullyQualifiedId(target),
112
+ }),
113
+ );
100
114
  if (invitation && config.values.runtime?.app?.env?.DX_ENVIRONMENT !== 'production') {
101
115
  const subscription: ZenObservable.Subscription = invitation.subscribe((invitation) =>
102
116
  handleInvitationEvent(invitation, subscription),
@@ -118,38 +132,50 @@ export const MembersContainer = ({
118
132
 
119
133
  return (
120
134
  <Clipboard.Provider>
121
- <StackItem.Content classNames='p-2 block overflow-y-auto'>
122
- <ControlSection
123
- title={t('members verbose label', { ns: SPACE_PLUGIN })}
124
- description={t('members description', { ns: SPACE_PLUGIN })}
125
- >
126
- <ControlFrame>
127
- <ControlFrameItem title={t('members label', { ns: SPACE_PLUGIN })}>
128
- <SpaceMemberList spaceKey={space.key} includeSelf />
129
- </ControlFrameItem>
130
- <ControlFrameItem title={t('invitations label', { ns: SPACE_PLUGIN })}>
131
- {selectedInvitation && <InvitationSection {...selectedInvitation} onBack={handleBack} />}
132
- {!selectedInvitation && (
133
- <>
134
- <p className='text-description mbe-2'>{t('space invitation description', { ns: SPACE_PLUGIN })}</p>
135
- <InvitationList
136
- className='mb-2'
137
- send={handleSend}
138
- invitations={visibleInvitations ?? []}
139
- onClickRemove={(invitation) => invitation.cancel()}
140
- createInvitationUrl={createInvitationUrl}
141
- />
142
- <BifurcatedAction
143
- actions={inviteActions}
144
- activeAction={activeAction}
145
- onChangeActiveAction={setActiveAction as Dispatch<SetStateAction<string>>}
146
- data-testid='membersContainer.createInvitation'
147
- />
148
- </>
135
+ <StackItem.Content classNames='block overflow-y-auto'>
136
+ <ControlPage>
137
+ <ControlSection title={t('members verbose label')} description={t('members description')}>
138
+ <ControlFrame>
139
+ <ControlFrameItem title={t('members label')}>
140
+ <SpaceMemberList spaceKey={space.key} includeSelf />
141
+ </ControlFrameItem>
142
+ {locked && (
143
+ <ControlFrameItem title={t('invitations label')}>
144
+ <p className='text-description mbe-2'>{t('locked space description')}</p>
145
+ </ControlFrameItem>
146
+ )}
147
+ {!locked && (
148
+ <ControlFrameItem title={t('invitations label')}>
149
+ {selectedInvitation && <InvitationSection {...selectedInvitation} onBack={handleBack} />}
150
+ {!selectedInvitation && (
151
+ <>
152
+ <p className='text-description mbe-2'>{t('space invitation description')}</p>
153
+ <InvitationList
154
+ className='mb-2'
155
+ send={handleSend}
156
+ invitations={visibleInvitations ?? []}
157
+ onClickRemove={(invitation) => invitation.cancel()}
158
+ createInvitationUrl={createInvitationUrl}
159
+ />
160
+ <BifurcatedAction
161
+ actions={inviteActions}
162
+ activeAction={activeAction}
163
+ onChangeActiveAction={setActiveAction as Dispatch<SetStateAction<string>>}
164
+ data-testid='membersContainer.createInvitation'
165
+ />
166
+ </>
167
+ )}
168
+ </ControlFrameItem>
149
169
  )}
150
- </ControlFrameItem>
151
- </ControlFrame>
152
- </ControlSection>
170
+ </ControlFrame>
171
+ {/* TODO(wittjosiah): Make ControlItemInput & ControlFrame compatible. */}
172
+ <div className='justify-center gap-4 p-0 mbs-4 container-max-width grid grid-cols-1 md:grid-cols-[1fr_min-content]'>
173
+ <ControlItemInput title={t('space locked label')} description={t('space locked description')}>
174
+ <Input.Switch checked={locked} onCheckedChange={handleChangeLocked} classNames='justify-self-end' />
175
+ </ControlItemInput>
176
+ </div>
177
+ </ControlSection>
178
+ </ControlPage>
153
179
  </StackItem.Content>
154
180
  </Clipboard.Provider>
155
181
  );
@@ -5,14 +5,14 @@
5
5
  import { Planet } from '@phosphor-icons/react';
6
6
  import React from 'react';
7
7
 
8
- import { type ReactiveEchoObject, getSpace } from '@dxos/client/echo';
8
+ import { type AnyLiveObject, getSpace } from '@dxos/client/echo';
9
9
  import { useClient } from '@dxos/react-client';
10
10
  import { DropdownMenu, toLocalizedString, useTranslation } from '@dxos/react-ui';
11
11
 
12
12
  import { SPACE_PLUGIN } from '../meta';
13
13
  import { getSpaceDisplayName } from '../util';
14
14
 
15
- export const MenuFooter = ({ object }: { object: ReactiveEchoObject<any> }) => {
15
+ export const MenuFooter = ({ object }: { object: AnyLiveObject<any> }) => {
16
16
  const { t } = useTranslation(SPACE_PLUGIN);
17
17
  const client = useClient();
18
18
  const space = getSpace(object);
@@ -4,8 +4,8 @@
4
4
 
5
5
  import React, { useCallback, useState } from 'react';
6
6
 
7
- import { type ForeignKey, ForeignKeySchema } from '@dxos/echo-schema';
8
- import { getMeta, type ReactiveEchoObject } from '@dxos/react-client/echo';
7
+ import { ForeignKey } from '@dxos/echo-schema';
8
+ import { getMeta, type AnyLiveObject } from '@dxos/react-client/echo';
9
9
  import { IconButton, useTranslation } from '@dxos/react-ui';
10
10
  import { Form } from '@dxos/react-ui-form';
11
11
 
@@ -18,7 +18,7 @@ const initialValues = {
18
18
  };
19
19
 
20
20
  export type AdvancedObjectSettingsProps = {
21
- object: ReactiveEchoObject<any>;
21
+ object: AnyLiveObject<any>;
22
22
  };
23
23
 
24
24
  export const AdvancedObjectSettings = ({ object }: AdvancedObjectSettingsProps) => {
@@ -66,7 +66,7 @@ export const AdvancedObjectSettings = ({ object }: AdvancedObjectSettingsProps)
66
66
  {!adding && <ForeignKeys keys={keys} onDelete={handleDelete} />}
67
67
  </div>
68
68
 
69
- {adding && <Form schema={ForeignKeySchema} values={initialValues} onSave={handleSave} onCancel={handleCancel} />}
69
+ {adding && <Form schema={ForeignKey} values={initialValues} onSave={handleSave} onCancel={handleCancel} />}
70
70
  </>
71
71
  );
72
72
  };
@@ -4,7 +4,7 @@
4
4
 
5
5
  import React, { type PropsWithChildren, useRef } from 'react';
6
6
 
7
- import { type ReactiveEchoObject } from '@dxos/react-client/echo';
7
+ import { type AnyLiveObject } from '@dxos/react-client/echo';
8
8
  import { Input, type ThemedClassName, useTranslation } from '@dxos/react-ui';
9
9
  import { mx } from '@dxos/react-ui-theme';
10
10
 
@@ -12,7 +12,7 @@ import { meta } from '../../meta';
12
12
 
13
13
  export type BaseObjectSettingsProps = ThemedClassName<
14
14
  PropsWithChildren<{
15
- object: ReactiveEchoObject<any>;
15
+ object: AnyLiveObject<any>;
16
16
  }>
17
17
  >;
18
18
 
@@ -5,15 +5,14 @@
5
5
  import React, { useMemo } from 'react';
6
6
 
7
7
  import { Surface } from '@dxos/app-framework';
8
- import { type ReactiveEchoObject } from '@dxos/react-client/echo';
8
+ import { type AnyLiveObject } from '@dxos/react-client/echo';
9
9
  import { Clipboard } from '@dxos/react-ui';
10
10
  import { StackItem } from '@dxos/react-ui-stack';
11
11
 
12
- import { AdvancedObjectSettings } from './AdvancedObjectSettings';
13
12
  import { BaseObjectSettings } from './BaseObjectSettings';
14
13
 
15
14
  export type ObjectSettingsContainerProps = {
16
- object: ReactiveEchoObject<any>;
15
+ object: AnyLiveObject<any>;
17
16
  role: string;
18
17
  };
19
18
 
@@ -28,7 +27,8 @@ export const ObjectSettingsContainer = ({ object, role }: ObjectSettingsContaine
28
27
  <Surface role='base-object-settings' data={data} />
29
28
  </BaseObjectSettings>
30
29
  <Surface role='object-settings' data={data} />
31
- <AdvancedObjectSettings object={object} />
30
+ {/* TODO(wittjosiah): Remove? */}
31
+ {/* <AdvancedObjectSettings object={object} /> */}
32
32
  </div>
33
33
  </StackItem.Content>
34
34
  </Clipboard.Provider>
@@ -68,20 +68,17 @@ export const PersistenceStatus = ({ db }: { db: EchoDatabase }) => {
68
68
  case Status.PERSISTED_LOCALLY:
69
69
  default:
70
70
  return (
71
- <Tooltip.Root delayDuration={400}>
72
- <Tooltip.Trigger role='status' className='flex items-center'>
73
- <CheckCircle className={mx(getSize(4), 'me-1')} />
74
- {displayMessage && (
75
- <span className={mx('text-sm', staticPlaceholderText)}>{t('persisted locally label')}</span>
76
- )}
77
- </Tooltip.Trigger>
78
- <Tooltip.Portal>
79
- <Tooltip.Content>
80
- {t('persisted locally message')}
81
- <Tooltip.Arrow />
82
- </Tooltip.Content>
83
- </Tooltip.Portal>
84
- </Tooltip.Root>
71
+ <Tooltip.Trigger
72
+ delayDuration={400}
73
+ role='status'
74
+ content={t('persisted locally message')}
75
+ className='flex items-center'
76
+ >
77
+ <CheckCircle className={mx(getSize(4), 'me-1')} />
78
+ {displayMessage && (
79
+ <span className={mx('text-sm', staticPlaceholderText)}>{t('persisted locally label')}</span>
80
+ )}
81
+ </Tooltip.Trigger>
85
82
  );
86
83
  }
87
84
  };
@@ -4,21 +4,23 @@
4
4
 
5
5
  import React, { useCallback, useRef, useState } from 'react';
6
6
 
7
- import { type ReactiveObject } from '@dxos/live-object';
7
+ import { createIntent, LayoutAction, useIntentDispatcher } from '@dxos/app-framework';
8
+ import { type Live } from '@dxos/live-object';
8
9
  import { log } from '@dxos/log';
9
- import { Button, Input, Popover, useTranslation } from '@dxos/react-ui';
10
+ import { Button, Input, useTranslation } from '@dxos/react-ui';
10
11
 
11
12
  import { SPACE_PLUGIN } from '../meta';
12
13
 
13
14
  export const POPOVER_RENAME_OBJECT = `${SPACE_PLUGIN}/PopoverRenameObject`;
14
15
 
15
- export const PopoverRenameObject = ({ object: obj }: { object: ReactiveObject<any> }) => {
16
+ export const PopoverRenameObject = ({ object: obj }: { object: Live<any> }) => {
16
17
  const { t } = useTranslation(SPACE_PLUGIN);
17
18
  const doneButton = useRef<HTMLButtonElement>(null);
18
19
  // TODO(wittjosiah): Use schema here.
19
20
  const object = obj as any;
20
21
  // TODO(burdon): Field should not be hardcoded field.
21
22
  const [name, setName] = useState(object.name || object.title || '');
23
+ const { dispatchPromise: dispatch } = useIntentDispatcher();
22
24
 
23
25
  const handleDone = useCallback(() => {
24
26
  try {
@@ -30,10 +32,16 @@ export const PopoverRenameObject = ({ object: obj }: { object: ReactiveObject<an
30
32
  log.error('Failed to rename object', { err });
31
33
  }
32
34
  }
35
+ void dispatch(
36
+ createIntent(LayoutAction.UpdatePopover, {
37
+ part: 'popover',
38
+ options: { variant: 'react', anchorId: '', state: false },
39
+ }),
40
+ );
33
41
  }, [object, name]);
34
42
 
35
43
  return (
36
- <div role='none' className='p-1 flex gap-2'>
44
+ <div role='none' className='p-2 flex gap-2'>
37
45
  <div role='none' className='flex-1'>
38
46
  <Input.Root>
39
47
  <Input.Label srOnly>{t('object name label')}</Input.Label>
@@ -46,11 +54,9 @@ export const PopoverRenameObject = ({ object: obj }: { object: ReactiveObject<an
46
54
  />
47
55
  </Input.Root>
48
56
  </div>
49
- <Popover.Close asChild>
50
- <Button ref={doneButton} classNames='self-stretch' onClick={handleDone}>
51
- {t('done label', { ns: 'os' })}
52
- </Button>
53
- </Popover.Close>
57
+ <Button ref={doneButton} classNames='self-stretch' onClick={handleDone}>
58
+ {t('done label', { ns: 'os' })}
59
+ </Button>
54
60
  </div>
55
61
  );
56
62
  };
@@ -4,6 +4,7 @@
4
4
 
5
5
  import React, { useCallback, useRef, useState } from 'react';
6
6
 
7
+ import { createIntent, LayoutAction, useIntentDispatcher } from '@dxos/app-framework';
7
8
  import { type Space } from '@dxos/react-client/echo';
8
9
  import { Button, Input, Popover, useTranslation } from '@dxos/react-ui';
9
10
 
@@ -15,14 +16,21 @@ export const PopoverRenameSpace = ({ space }: { space: Space }) => {
15
16
  const { t } = useTranslation(SPACE_PLUGIN);
16
17
  const doneButton = useRef<HTMLButtonElement>(null);
17
18
  const [name, setName] = useState(space.properties.name ?? '');
19
+ const { dispatchPromise: dispatch } = useIntentDispatcher();
18
20
 
19
21
  const handleDone = useCallback(() => {
20
22
  space.properties.name = name;
23
+ void dispatch(
24
+ createIntent(LayoutAction.UpdatePopover, {
25
+ part: 'popover',
26
+ options: { variant: 'react', anchorId: '', state: false },
27
+ }),
28
+ );
21
29
  }, [space, name]);
22
30
 
23
31
  // TODO(thure): Why does the input value need to be uncontrolled to work?
24
32
  return (
25
- <div role='none' className='p-1 flex gap-2'>
33
+ <div role='none' className='p-2 flex gap-2'>
26
34
  <div role='none' className='flex-1'>
27
35
  <Input.Root>
28
36
  <Input.Label srOnly>{t('space name label')}</Input.Label>
@@ -0,0 +1,59 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import React, { useState, useEffect } from 'react';
6
+
7
+ import { type EchoSchema } from '@dxos/echo-schema';
8
+ import { type Space } from '@dxos/react-client/echo';
9
+ import { useTranslation } from '@dxos/react-ui';
10
+ import { controlItemClasses, ControlPage, ControlSection } from '@dxos/react-ui-form';
11
+ import { StackItem } from '@dxos/react-ui-stack';
12
+
13
+ import { SPACE_PLUGIN } from '../meta';
14
+
15
+ type SchemaPanelProps = { space: Space };
16
+
17
+ // TODO(ZaymonFC):
18
+ // - Support deleting Schema. This should tie in to some sort of
19
+ // 'DangerZone™️' / 'Are you really sure?' / 'this might have consequences' component.
20
+
21
+ /**
22
+ * Subscribe to and retrieve all schemas from a space's schema registry.
23
+ */
24
+ export const useQuerySpaceSchemas = (space: Space): EchoSchema[] => {
25
+ const [schemas, setSchemas] = useState<EchoSchema[]>([]);
26
+
27
+ useEffect(() => {
28
+ const query = space.db.schemaRegistry.query();
29
+ const initialResults = query.runSync();
30
+ setSchemas(initialResults);
31
+
32
+ const unsubscribe = query.subscribe(() => setSchemas(query.results));
33
+ return () => unsubscribe();
34
+ }, [space]);
35
+
36
+ return schemas;
37
+ };
38
+
39
+ export const SchemaContainer = ({ space }: SchemaPanelProps) => {
40
+ const { t } = useTranslation(SPACE_PLUGIN);
41
+ const schemas = useQuerySpaceSchemas(space);
42
+
43
+ return (
44
+ <StackItem.Content classNames='block overflow-y-auto'>
45
+ <ControlPage>
46
+ <ControlSection title={t('schema verbose label')} description={t('schema description')}>
47
+ <div role='none' className={controlItemClasses}>
48
+ {schemas.length === 0 && <div className='text-center plb-4'>{t('no schemas found message')}</div>}
49
+ {schemas.map((schema) => (
50
+ <div key={schema.id}>
51
+ <div>{schema.typename}</div>
52
+ </div>
53
+ ))}
54
+ </div>
55
+ </ControlSection>
56
+ </ControlPage>
57
+ </StackItem.Content>
58
+ );
59
+ };
@@ -4,20 +4,45 @@
4
4
 
5
5
  import React from 'react';
6
6
 
7
- import { Input, useTranslation } from '@dxos/react-ui';
7
+ import { createIntent, useIntentDispatcher } from '@dxos/app-framework';
8
+ import { useClient } from '@dxos/react-client';
9
+ import { useSpaces } from '@dxos/react-client/echo';
10
+ import { Input, toLocalizedString, useTranslation, List, ListItem, Button } from '@dxos/react-ui';
8
11
  import { DeprecatedFormContainer, DeprecatedFormInput } from '@dxos/react-ui-form';
9
12
 
10
13
  import { SPACE_PLUGIN } from '../meta';
11
- import { type SpaceSettingsProps } from '../types';
14
+ import { SpaceAction, type SpaceSettingsProps } from '../types';
15
+ import { getSpaceDisplayName } from '../util';
12
16
 
13
17
  export const SpacePluginSettings = ({ settings }: { settings: SpaceSettingsProps }) => {
14
18
  const { t } = useTranslation(SPACE_PLUGIN);
19
+ const { dispatchPromise: dispatch } = useIntentDispatcher();
20
+ const client = useClient();
21
+ const spaces = useSpaces({ all: settings.showHidden });
15
22
 
23
+ // TODO(wittjosiah): Migrate to new form container.
16
24
  return (
17
25
  <DeprecatedFormContainer>
18
26
  <DeprecatedFormInput label={t('show hidden spaces label')}>
19
27
  <Input.Switch checked={settings.showHidden} onCheckedChange={(checked) => (settings.showHidden = !!checked)} />
20
28
  </DeprecatedFormInput>
29
+ <div role='none'>
30
+ <h2 className='text-xl my-4'>Space Settings</h2>
31
+ <List classNames='max-w-md mx-auto'>
32
+ {spaces.map((space) => (
33
+ <ListItem.Root key={space.id}>
34
+ <ListItem.Heading classNames='flex flex-col grow truncate mbe-2'>
35
+ {toLocalizedString(getSpaceDisplayName(space, { personal: space === client.spaces.default }), t)}
36
+ </ListItem.Heading>
37
+ <ListItem.Endcap>
38
+ <Button onClick={() => dispatch(createIntent(SpaceAction.OpenSettings, { space }))}>
39
+ {t('open space settings label')}
40
+ </Button>
41
+ </ListItem.Endcap>
42
+ </ListItem.Root>
43
+ ))}
44
+ </List>
45
+ </div>
21
46
  </DeprecatedFormContainer>
22
47
  );
23
48
  };
@@ -100,7 +100,7 @@ export const Small = () => {
100
100
 
101
101
  const meta: Meta = {
102
102
  title: 'plugins/plugin-space/SpacePresence',
103
- decorators: [withTheme, withLayout({ tooltips: true })],
103
+ decorators: [withTheme, withLayout()],
104
104
  parameters: { translations },
105
105
  };
106
106