@dxos/plugin-space 0.8.1 → 0.8.2-main.12df754

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 (230) hide show
  1. package/dist/lib/browser/{app-graph-builder-GMFCSOLG.mjs → app-graph-builder-J4PN5HOM.mjs} +60 -6
  2. package/dist/lib/browser/app-graph-builder-J4PN5HOM.mjs.map +7 -0
  3. package/dist/lib/browser/{app-graph-serializer-DSF2U3A5.mjs → app-graph-serializer-6WIAFHYK.mjs} +8 -8
  4. package/dist/lib/browser/app-graph-serializer-6WIAFHYK.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-LO5UL6RU.mjs → chunk-FSHDAPFY.mjs} +60 -141
  6. package/dist/lib/browser/chunk-FSHDAPFY.mjs.map +7 -0
  7. package/dist/lib/browser/{chunk-AYW4IDRT.mjs → chunk-KDNV4YRD.mjs} +11 -3
  8. package/dist/lib/browser/chunk-KDNV4YRD.mjs.map +7 -0
  9. package/dist/lib/browser/{chunk-JZXWPMLA.mjs → chunk-MHTZAZT2.mjs} +497 -639
  10. package/dist/lib/browser/chunk-MHTZAZT2.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-5BDV575R.mjs → chunk-MIJHUABE.mjs} +20 -8
  12. package/dist/lib/browser/chunk-MIJHUABE.mjs.map +7 -0
  13. package/dist/lib/browser/{identity-created-JR7BNXFH.mjs → identity-created-DVHNLGYU.mjs} +4 -4
  14. package/dist/lib/browser/identity-created-DVHNLGYU.mjs.map +7 -0
  15. package/dist/lib/browser/index.mjs +11 -29
  16. package/dist/lib/browser/index.mjs.map +3 -3
  17. package/dist/lib/browser/{intent-resolver-RKYILWWQ.mjs → intent-resolver-72IWBVYE.mjs} +23 -27
  18. package/dist/lib/browser/intent-resolver-72IWBVYE.mjs.map +7 -0
  19. package/dist/lib/browser/meta.json +1 -1
  20. package/dist/lib/browser/{react-root-6H7NX2M2.mjs → react-root-DRVM5ACV.mjs} +4 -4
  21. package/dist/lib/browser/{react-surface-7AGLOVMK.mjs → react-surface-KODNQYDN.mjs} +139 -48
  22. package/dist/lib/browser/react-surface-KODNQYDN.mjs.map +7 -0
  23. package/dist/lib/browser/{settings-PJPTJUPE.mjs → settings-2UIV5WX5.mjs} +4 -4
  24. package/dist/lib/browser/settings-2UIV5WX5.mjs.map +7 -0
  25. package/dist/lib/browser/{spaces-ready-BSSP7HHG.mjs → spaces-ready-3URIMLCR.mjs} +5 -5
  26. package/dist/lib/browser/spaces-ready-3URIMLCR.mjs.map +7 -0
  27. package/dist/lib/browser/{state-X7VLCC6E.mjs → state-CYV6QCTN.mjs} +1 -3
  28. package/dist/lib/browser/state-CYV6QCTN.mjs.map +7 -0
  29. package/dist/lib/browser/types/index.mjs +7 -1
  30. package/dist/lib/node/{app-graph-builder-DPY7AUZE.cjs → app-graph-builder-3BNPC5GB.cjs} +82 -29
  31. package/dist/lib/node/app-graph-builder-3BNPC5GB.cjs.map +7 -0
  32. package/dist/lib/node/{app-graph-serializer-JELGJUAY.cjs → app-graph-serializer-GOLCQHFQ.cjs} +20 -20
  33. package/dist/lib/node/app-graph-serializer-GOLCQHFQ.cjs.map +7 -0
  34. package/dist/lib/node/{chunk-WDEIFDTX.cjs → chunk-3UKLWXNJ.cjs} +17 -6
  35. package/dist/lib/node/chunk-3UKLWXNJ.cjs.map +7 -0
  36. package/dist/lib/node/{chunk-PU2EYH4E.cjs → chunk-EI3ZPOLJ.cjs} +24 -12
  37. package/dist/lib/node/chunk-EI3ZPOLJ.cjs.map +7 -0
  38. package/dist/lib/node/{chunk-3GKCNADA.cjs → chunk-GPZPEQXP.cjs} +482 -622
  39. package/dist/lib/node/chunk-GPZPEQXP.cjs.map +7 -0
  40. package/dist/lib/node/{chunk-TUZWEPGX.cjs → chunk-U63V2254.cjs} +84 -167
  41. package/dist/lib/node/chunk-U63V2254.cjs.map +7 -0
  42. package/dist/lib/node/{identity-created-XU4HFV2T.cjs → identity-created-YYTW4K3Z.cjs} +6 -6
  43. package/dist/lib/node/identity-created-YYTW4K3Z.cjs.map +7 -0
  44. package/dist/lib/node/index.cjs +69 -87
  45. package/dist/lib/node/index.cjs.map +3 -3
  46. package/dist/lib/node/{intent-resolver-VJ7YV74L.cjs → intent-resolver-KA56XGUX.cjs} +75 -79
  47. package/dist/lib/node/intent-resolver-KA56XGUX.cjs.map +7 -0
  48. package/dist/lib/node/meta.json +1 -1
  49. package/dist/lib/node/{react-root-TEL5RW3N.cjs → react-root-6WGN5WRQ.cjs} +8 -8
  50. package/dist/lib/node/{react-surface-2H3S5TY5.cjs → react-surface-37AVZFPL.cjs} +163 -74
  51. package/dist/lib/node/react-surface-37AVZFPL.cjs.map +7 -0
  52. package/dist/lib/node/{settings-WVFP2UEP.cjs → settings-HJROTHC4.cjs} +7 -7
  53. package/dist/lib/node/settings-HJROTHC4.cjs.map +7 -0
  54. package/dist/lib/node/{spaces-ready-7DNZSUOG.cjs → spaces-ready-IWDDIAAD.cjs} +12 -12
  55. package/dist/lib/node/spaces-ready-IWDDIAAD.cjs.map +7 -0
  56. package/dist/lib/node/{state-5KX6WBJH.cjs → state-JLN7TGRR.cjs} +4 -6
  57. package/dist/lib/node/state-JLN7TGRR.cjs.map +7 -0
  58. package/dist/lib/node/types/index.cjs +18 -12
  59. package/dist/lib/node/types/index.cjs.map +2 -2
  60. package/dist/lib/node-esm/{app-graph-builder-42IGWRPL.mjs → app-graph-builder-OVMSUAX3.mjs} +60 -6
  61. package/dist/lib/node-esm/app-graph-builder-OVMSUAX3.mjs.map +7 -0
  62. package/dist/lib/node-esm/{app-graph-serializer-FXONFKOE.mjs → app-graph-serializer-AZXSO7HK.mjs} +8 -8
  63. package/dist/lib/node-esm/app-graph-serializer-AZXSO7HK.mjs.map +7 -0
  64. package/dist/lib/node-esm/{chunk-FC4UHDPL.mjs → chunk-35OHQARN.mjs} +11 -3
  65. package/dist/lib/node-esm/chunk-35OHQARN.mjs.map +7 -0
  66. package/dist/lib/node-esm/{chunk-BEWBZ4Q4.mjs → chunk-ABKX22IP.mjs} +497 -639
  67. package/dist/lib/node-esm/chunk-ABKX22IP.mjs.map +7 -0
  68. package/dist/lib/node-esm/{chunk-3ZOUV4DF.mjs → chunk-DUA32XUX.mjs} +20 -8
  69. package/dist/lib/node-esm/chunk-DUA32XUX.mjs.map +7 -0
  70. package/dist/lib/node-esm/{chunk-ZGLK25WQ.mjs → chunk-TVN6VHTT.mjs} +60 -141
  71. package/dist/lib/node-esm/chunk-TVN6VHTT.mjs.map +7 -0
  72. package/dist/lib/node-esm/{identity-created-WJKAS2PV.mjs → identity-created-MP4GLXHO.mjs} +4 -4
  73. package/dist/lib/node-esm/identity-created-MP4GLXHO.mjs.map +7 -0
  74. package/dist/lib/node-esm/index.mjs +11 -29
  75. package/dist/lib/node-esm/index.mjs.map +3 -3
  76. package/dist/lib/node-esm/{intent-resolver-ZFNSA4CM.mjs → intent-resolver-SG2ECM5R.mjs} +23 -27
  77. package/dist/lib/node-esm/intent-resolver-SG2ECM5R.mjs.map +7 -0
  78. package/dist/lib/node-esm/meta.json +1 -1
  79. package/dist/lib/node-esm/{react-root-PRBJMWLQ.mjs → react-root-MSUT6S2S.mjs} +4 -4
  80. package/dist/lib/node-esm/{react-surface-RCZG2PNF.mjs → react-surface-G73SO23W.mjs} +139 -48
  81. package/dist/lib/node-esm/react-surface-G73SO23W.mjs.map +7 -0
  82. package/dist/lib/node-esm/{settings-FJZPC2TV.mjs → settings-KCLKPJVY.mjs} +4 -4
  83. package/dist/lib/node-esm/settings-KCLKPJVY.mjs.map +7 -0
  84. package/dist/lib/node-esm/{spaces-ready-7X5PGB2V.mjs → spaces-ready-Z3SXKWX2.mjs} +5 -5
  85. package/dist/lib/node-esm/spaces-ready-Z3SXKWX2.mjs.map +7 -0
  86. package/dist/lib/node-esm/{state-Z6E2YTNC.mjs → state-YZPY5T5A.mjs} +1 -3
  87. package/dist/lib/node-esm/state-YZPY5T5A.mjs.map +7 -0
  88. package/dist/lib/node-esm/types/index.mjs +7 -1
  89. package/dist/types/src/SpacePlugin.d.ts.map +1 -1
  90. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  91. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  92. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  93. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  94. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts +2 -2
  95. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
  96. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
  97. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts.map +1 -1
  98. package/dist/types/src/components/MembersContainer.d.ts.map +1 -1
  99. package/dist/types/src/components/ObjectSettings/AdvancedObjectSettings.d.ts.map +1 -0
  100. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts.map +1 -0
  101. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts.map +1 -0
  102. package/dist/types/src/components/ObjectSettings/ObjectSettingsContainer.d.ts.map +1 -0
  103. package/dist/types/src/components/ObjectSettings/index.d.ts.map +1 -0
  104. package/dist/types/src/components/PopoverAddSpace.d.ts.map +1 -1
  105. package/dist/types/src/components/PopoverRenameObject.d.ts +2 -2
  106. package/dist/types/src/components/PopoverRenameObject.d.ts.map +1 -1
  107. package/dist/types/src/components/SchemaContainer.d.ts +13 -0
  108. package/dist/types/src/components/SchemaContainer.d.ts.map +1 -0
  109. package/dist/types/src/components/SpacePluginSettings.d.ts.map +1 -1
  110. package/dist/types/src/components/SpacePresence.d.ts.map +1 -1
  111. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts +0 -2
  112. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
  113. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts +7 -0
  114. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts.map +1 -0
  115. package/dist/types/src/components/SpaceSettings/index.d.ts +0 -1
  116. package/dist/types/src/components/SpaceSettings/index.d.ts.map +1 -1
  117. package/dist/types/src/components/SyncStatus/InlineSyncStatus.d.ts.map +1 -1
  118. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts +1 -8
  119. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
  120. package/dist/types/src/components/index.d.ts +2 -1
  121. package/dist/types/src/components/index.d.ts.map +1 -1
  122. package/dist/types/src/hooks/index.d.ts +1 -0
  123. package/dist/types/src/hooks/index.d.ts.map +1 -1
  124. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts +14 -0
  125. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts.map +1 -0
  126. package/dist/types/src/translations.d.ts +45 -9
  127. package/dist/types/src/translations.d.ts.map +1 -1
  128. package/dist/types/src/types/types.d.ts +12 -13
  129. package/dist/types/src/types/types.d.ts.map +1 -1
  130. package/dist/types/src/util.d.ts +27 -5
  131. package/dist/types/src/util.d.ts.map +1 -1
  132. package/package.json +44 -43
  133. package/src/SpacePlugin.tsx +2 -12
  134. package/src/capabilities/app-graph-builder.ts +43 -4
  135. package/src/capabilities/app-graph-serializer.ts +4 -4
  136. package/src/capabilities/identity-created.ts +2 -2
  137. package/src/capabilities/intent-resolver.ts +14 -20
  138. package/src/capabilities/react-surface.tsx +120 -38
  139. package/src/capabilities/settings.ts +2 -2
  140. package/src/capabilities/spaces-ready.ts +2 -2
  141. package/src/capabilities/state.ts +0 -2
  142. package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +2 -2
  143. package/src/components/CreateDialog/CreateObjectDialog.tsx +3 -3
  144. package/src/components/CreateDialog/CreateObjectPanel.tsx +3 -25
  145. package/src/components/CreateDialog/CreateSpaceDialog.tsx +4 -0
  146. package/src/components/MembersContainer.tsx +57 -39
  147. package/src/components/PopoverAddSpace.tsx +8 -2
  148. package/src/components/PopoverRenameObject.tsx +2 -2
  149. package/src/components/SchemaContainer.tsx +59 -0
  150. package/src/components/SpacePluginSettings.tsx +27 -2
  151. package/src/components/SpacePresence.tsx +29 -25
  152. package/src/components/SpaceSettings/{SpacePropertiesForm.stories.tsx → SpaceSettingsContainer.stories.tsx} +6 -6
  153. package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +157 -39
  154. package/src/components/SpaceSettings/index.ts +0 -1
  155. package/src/components/SyncStatus/InlineSyncStatus.tsx +5 -7
  156. package/src/components/SyncStatus/SyncStatus.tsx +6 -69
  157. package/src/components/index.ts +2 -1
  158. package/src/hooks/index.ts +1 -0
  159. package/src/hooks/useInputSurfaceLookup.tsx +31 -0
  160. package/src/translations.ts +18 -5
  161. package/src/types/types.ts +8 -7
  162. package/src/util.tsx +43 -103
  163. package/dist/lib/browser/app-graph-builder-GMFCSOLG.mjs.map +0 -7
  164. package/dist/lib/browser/app-graph-serializer-DSF2U3A5.mjs.map +0 -7
  165. package/dist/lib/browser/chunk-5BDV575R.mjs.map +0 -7
  166. package/dist/lib/browser/chunk-AYW4IDRT.mjs.map +0 -7
  167. package/dist/lib/browser/chunk-JZXWPMLA.mjs.map +0 -7
  168. package/dist/lib/browser/chunk-LO5UL6RU.mjs.map +0 -7
  169. package/dist/lib/browser/identity-created-JR7BNXFH.mjs.map +0 -7
  170. package/dist/lib/browser/intent-resolver-RKYILWWQ.mjs.map +0 -7
  171. package/dist/lib/browser/react-surface-7AGLOVMK.mjs.map +0 -7
  172. package/dist/lib/browser/settings-PJPTJUPE.mjs.map +0 -7
  173. package/dist/lib/browser/spaces-ready-BSSP7HHG.mjs.map +0 -7
  174. package/dist/lib/browser/state-X7VLCC6E.mjs.map +0 -7
  175. package/dist/lib/node/app-graph-builder-DPY7AUZE.cjs.map +0 -7
  176. package/dist/lib/node/app-graph-serializer-JELGJUAY.cjs.map +0 -7
  177. package/dist/lib/node/chunk-3GKCNADA.cjs.map +0 -7
  178. package/dist/lib/node/chunk-PU2EYH4E.cjs.map +0 -7
  179. package/dist/lib/node/chunk-TUZWEPGX.cjs.map +0 -7
  180. package/dist/lib/node/chunk-WDEIFDTX.cjs.map +0 -7
  181. package/dist/lib/node/identity-created-XU4HFV2T.cjs.map +0 -7
  182. package/dist/lib/node/intent-resolver-VJ7YV74L.cjs.map +0 -7
  183. package/dist/lib/node/react-surface-2H3S5TY5.cjs.map +0 -7
  184. package/dist/lib/node/settings-WVFP2UEP.cjs.map +0 -7
  185. package/dist/lib/node/spaces-ready-7DNZSUOG.cjs.map +0 -7
  186. package/dist/lib/node/state-5KX6WBJH.cjs.map +0 -7
  187. package/dist/lib/node-esm/app-graph-builder-42IGWRPL.mjs.map +0 -7
  188. package/dist/lib/node-esm/app-graph-serializer-FXONFKOE.mjs.map +0 -7
  189. package/dist/lib/node-esm/chunk-3ZOUV4DF.mjs.map +0 -7
  190. package/dist/lib/node-esm/chunk-BEWBZ4Q4.mjs.map +0 -7
  191. package/dist/lib/node-esm/chunk-FC4UHDPL.mjs.map +0 -7
  192. package/dist/lib/node-esm/chunk-ZGLK25WQ.mjs.map +0 -7
  193. package/dist/lib/node-esm/identity-created-WJKAS2PV.mjs.map +0 -7
  194. package/dist/lib/node-esm/intent-resolver-ZFNSA4CM.mjs.map +0 -7
  195. package/dist/lib/node-esm/react-surface-RCZG2PNF.mjs.map +0 -7
  196. package/dist/lib/node-esm/settings-FJZPC2TV.mjs.map +0 -7
  197. package/dist/lib/node-esm/spaces-ready-7X5PGB2V.mjs.map +0 -7
  198. package/dist/lib/node-esm/state-Z6E2YTNC.mjs.map +0 -7
  199. package/dist/types/src/components/ObjectSettingsContainer/AdvancedObjectSettings.d.ts.map +0 -1
  200. package/dist/types/src/components/ObjectSettingsContainer/BaseObjectSettings.d.ts.map +0 -1
  201. package/dist/types/src/components/ObjectSettingsContainer/ForeignKeys.d.ts.map +0 -1
  202. package/dist/types/src/components/ObjectSettingsContainer/ObjectSettingsContainer.d.ts.map +0 -1
  203. package/dist/types/src/components/ObjectSettingsContainer/index.d.ts.map +0 -1
  204. package/dist/types/src/components/SpaceSettings/SpacePropertiesForm.d.ts +0 -7
  205. package/dist/types/src/components/SpaceSettings/SpacePropertiesForm.d.ts.map +0 -1
  206. package/dist/types/src/components/SpaceSettings/SpacePropertiesForm.stories.d.ts +0 -7
  207. package/dist/types/src/components/SpaceSettings/SpacePropertiesForm.stories.d.ts.map +0 -1
  208. package/dist/types/src/components/SyncStatus/Space.d.ts +0 -13
  209. package/dist/types/src/components/SyncStatus/Space.d.ts.map +0 -1
  210. package/dist/types/src/components/SyncStatus/SyncStatusDetail.stories.d.ts +0 -9
  211. package/dist/types/src/components/SyncStatus/SyncStatusDetail.stories.d.ts.map +0 -1
  212. package/dist/types/src/components/SyncStatus/sync-state.d.ts +0 -18
  213. package/dist/types/src/components/SyncStatus/sync-state.d.ts.map +0 -1
  214. package/src/components/SpaceSettings/SpacePropertiesForm.tsx +0 -136
  215. package/src/components/SyncStatus/Space.tsx +0 -133
  216. package/src/components/SyncStatus/SyncStatusDetail.stories.tsx +0 -89
  217. package/src/components/SyncStatus/sync-state.ts +0 -101
  218. /package/dist/lib/browser/{react-root-6H7NX2M2.mjs.map → react-root-DRVM5ACV.mjs.map} +0 -0
  219. /package/dist/lib/node/{react-root-TEL5RW3N.cjs.map → react-root-6WGN5WRQ.cjs.map} +0 -0
  220. /package/dist/lib/node-esm/{react-root-PRBJMWLQ.mjs.map → react-root-MSUT6S2S.mjs.map} +0 -0
  221. /package/dist/types/src/components/{ObjectSettingsContainer → ObjectSettings}/AdvancedObjectSettings.d.ts +0 -0
  222. /package/dist/types/src/components/{ObjectSettingsContainer → ObjectSettings}/BaseObjectSettings.d.ts +0 -0
  223. /package/dist/types/src/components/{ObjectSettingsContainer → ObjectSettings}/ForeignKeys.d.ts +0 -0
  224. /package/dist/types/src/components/{ObjectSettingsContainer → ObjectSettings}/ObjectSettingsContainer.d.ts +0 -0
  225. /package/dist/types/src/components/{ObjectSettingsContainer → ObjectSettings}/index.d.ts +0 -0
  226. /package/src/components/{ObjectSettingsContainer → ObjectSettings}/AdvancedObjectSettings.tsx +0 -0
  227. /package/src/components/{ObjectSettingsContainer → ObjectSettings}/BaseObjectSettings.tsx +0 -0
  228. /package/src/components/{ObjectSettingsContainer → ObjectSettings}/ForeignKeys.tsx +0 -0
  229. /package/src/components/{ObjectSettingsContainer → ObjectSettings}/ObjectSettingsContainer.tsx +0 -0
  230. /package/src/components/{ObjectSettingsContainer → ObjectSettings}/index.ts +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/plugin-space",
3
- "version": "0.8.1",
3
+ "version": "0.8.2-main.12df754",
4
4
  "description": "DXOS Surface plugin for DXOS ECHO Spaces",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -41,42 +41,43 @@
41
41
  "react-drag-drop-files": "^2.3.8",
42
42
  "react-is": "~18.2.0",
43
43
  "react-qr-rounded": "^1.0.0",
44
- "@dxos/app-framework": "0.8.1",
45
- "@dxos/async": "0.8.1",
46
- "@dxos/artifact": "0.8.1",
47
- "@dxos/client": "0.8.1",
48
- "@dxos/automerge": "0.8.1",
49
- "@dxos/context": "0.8.1",
50
- "@dxos/echo-schema": "0.8.1",
51
- "@dxos/display-name": "0.8.1",
52
- "@dxos/echo-signals": "0.8.1",
53
- "@dxos/invariant": "0.8.1",
54
- "@dxos/keys": "0.8.1",
55
- "@dxos/live-object": "0.8.1",
56
- "@dxos/log": "0.8.1",
57
- "@dxos/plugin-attention": "0.8.1",
58
- "@dxos/migrations": "0.8.1",
59
- "@dxos/local-storage": "0.8.1",
60
- "@dxos/plugin-deck": "0.8.1",
61
- "@dxos/plugin-client": "0.8.1",
62
- "@dxos/plugin-observability": "0.8.1",
63
- "@dxos/plugin-status-bar": "0.8.1",
64
- "@dxos/protocols": "0.8.1",
65
- "@dxos/plugin-graph": "0.8.1",
66
- "@dxos/react-ui-form": "0.8.1",
67
- "@dxos/react-ui-attention": "0.8.1",
68
- "@dxos/react-client": "0.8.1",
69
- "@dxos/react-ui-pickers": "0.8.1",
70
- "@dxos/react-ui-searchlist": "0.8.1",
71
- "@dxos/react-ui-editor": "0.8.1",
72
- "@dxos/react-ui-list": "0.8.1",
73
- "@dxos/react-ui-stack": "0.8.1",
74
- "@dxos/react-ui-syntax-highlighter": "0.8.1",
75
- "@dxos/react-ui-tabs": "0.8.1",
76
- "@dxos/react-ui-theme": "0.8.1",
77
- "@dxos/shell": "0.8.1",
78
- "@dxos/util": "0.8.1",
79
- "@dxos/schema": "0.8.1"
44
+ "@dxos/app-framework": "0.8.2-main.12df754",
45
+ "@dxos/automerge": "0.8.2-main.12df754",
46
+ "@dxos/client": "0.8.2-main.12df754",
47
+ "@dxos/artifact": "0.8.2-main.12df754",
48
+ "@dxos/async": "0.8.2-main.12df754",
49
+ "@dxos/context": "0.8.2-main.12df754",
50
+ "@dxos/display-name": "0.8.2-main.12df754",
51
+ "@dxos/echo-signals": "0.8.2-main.12df754",
52
+ "@dxos/effect": "0.8.2-main.12df754",
53
+ "@dxos/echo-schema": "0.8.2-main.12df754",
54
+ "@dxos/invariant": "0.8.2-main.12df754",
55
+ "@dxos/keys": "0.8.2-main.12df754",
56
+ "@dxos/live-object": "0.8.2-main.12df754",
57
+ "@dxos/local-storage": "0.8.2-main.12df754",
58
+ "@dxos/log": "0.8.2-main.12df754",
59
+ "@dxos/migrations": "0.8.2-main.12df754",
60
+ "@dxos/plugin-attention": "0.8.2-main.12df754",
61
+ "@dxos/plugin-client": "0.8.2-main.12df754",
62
+ "@dxos/plugin-deck": "0.8.2-main.12df754",
63
+ "@dxos/plugin-graph": "0.8.2-main.12df754",
64
+ "@dxos/plugin-observability": "0.8.2-main.12df754",
65
+ "@dxos/plugin-status-bar": "0.8.2-main.12df754",
66
+ "@dxos/protocols": "0.8.2-main.12df754",
67
+ "@dxos/react-client": "0.8.2-main.12df754",
68
+ "@dxos/react-ui-attention": "0.8.2-main.12df754",
69
+ "@dxos/react-ui-editor": "0.8.2-main.12df754",
70
+ "@dxos/react-ui-form": "0.8.2-main.12df754",
71
+ "@dxos/react-ui-list": "0.8.2-main.12df754",
72
+ "@dxos/react-ui-pickers": "0.8.2-main.12df754",
73
+ "@dxos/react-ui-searchlist": "0.8.2-main.12df754",
74
+ "@dxos/react-ui-syntax-highlighter": "0.8.2-main.12df754",
75
+ "@dxos/react-ui-tabs": "0.8.2-main.12df754",
76
+ "@dxos/react-ui-theme": "0.8.2-main.12df754",
77
+ "@dxos/react-ui-stack": "0.8.2-main.12df754",
78
+ "@dxos/schema": "0.8.2-main.12df754",
79
+ "@dxos/util": "0.8.2-main.12df754",
80
+ "@dxos/shell": "0.8.2-main.12df754"
80
81
  },
81
82
  "devDependencies": {
82
83
  "@babel/core": "^7.18.13",
@@ -87,17 +88,17 @@
87
88
  "react": "~18.2.0",
88
89
  "react-dom": "~18.2.0",
89
90
  "vite": "5.4.7",
90
- "@dxos/random": "0.8.1",
91
- "@dxos/react-ui-theme": "0.8.1",
92
- "@dxos/react-ui": "0.8.1",
93
- "@dxos/storybook-utils": "0.8.1"
91
+ "@dxos/react-ui": "0.8.2-main.12df754",
92
+ "@dxos/react-ui-theme": "0.8.2-main.12df754",
93
+ "@dxos/storybook-utils": "0.8.2-main.12df754",
94
+ "@dxos/random": "0.8.2-main.12df754"
94
95
  },
95
96
  "peerDependencies": {
96
97
  "@phosphor-icons/react": "^2.1.5",
97
98
  "react": "~18.2.0",
98
99
  "react-dom": "~18.2.0",
99
- "@dxos/react-ui-theme": "0.8.1",
100
- "@dxos/react-ui": "0.8.1"
100
+ "@dxos/react-ui": "0.8.2-main.12df754",
101
+ "@dxos/react-ui-theme": "0.8.2-main.12df754"
101
102
  },
102
103
  "publishConfig": {
103
104
  "access": "public"
@@ -33,7 +33,7 @@ import {
33
33
  SpaceState,
34
34
  } from './capabilities';
35
35
  import { SpaceEvents } from './events';
36
- import { meta, SPACE_PLUGIN } from './meta';
36
+ import { meta } from './meta';
37
37
  import translations from './translations';
38
38
  import { CollectionAction, CollectionType, defineObjectForm } from './types';
39
39
 
@@ -57,7 +57,7 @@ export type SpacePluginOptions = {
57
57
  export const SpacePlugin = ({
58
58
  invitationUrl = window.location.origin,
59
59
  invitationParam = 'spaceInvitationCode',
60
- observability = true,
60
+ observability = false,
61
61
  }: SpacePluginOptions = {}) => {
62
62
  const createInvitationUrl = (invitationCode: string) => {
63
63
  const baseUrl = new URL(invitationUrl);
@@ -112,16 +112,6 @@ export const SpacePlugin = ({
112
112
  }),
113
113
  ),
114
114
  }),
115
- defineModule({
116
- id: `${meta.id}/module/space-settings`,
117
- activatesOn: SpaceEvents.SetupSettingsPanel,
118
- activate: () =>
119
- contributes(SpaceCapabilities.SettingsSection, {
120
- id: 'properties',
121
- label: ['space settings properties label', { ns: SPACE_PLUGIN }],
122
- position: 'hoist',
123
- }),
124
- }),
125
115
  defineModule({
126
116
  id: `${meta.id}/module/schema`,
127
117
  activatesOn: ClientEvents.ClientReady,
@@ -9,12 +9,12 @@ import {
9
9
  FQ_ID_LENGTH,
10
10
  getSpace,
11
11
  isEchoObject,
12
- isSpace,
13
12
  OBJECT_ID_LENGTH,
14
13
  type ReactiveEchoObject,
15
14
  SPACE_ID_LENGTH,
16
15
  SpaceState,
17
16
  type Space,
17
+ parseId,
18
18
  } from '@dxos/client/echo';
19
19
  import { isDeleted } from '@dxos/live-object';
20
20
  import { log } from '@dxos/log';
@@ -25,7 +25,7 @@ import { isNonNullable } from '@dxos/util';
25
25
 
26
26
  import { SpaceCapabilities } from './capabilities';
27
27
  import { SPACE_PLUGIN } from '../meta';
28
- import { CollectionType, SpaceAction, type SpaceSettingsProps } from '../types';
28
+ import { CollectionType, SPACE_TYPE, SpaceAction, type SpaceSettingsProps } from '../types';
29
29
  import {
30
30
  constructObjectActions,
31
31
  constructSpaceActions,
@@ -98,6 +98,45 @@ export default (context: PluginsContext) => {
98
98
  position: 'fallback',
99
99
  },
100
100
  },
101
+ {
102
+ id: SpaceAction.Share._tag,
103
+ data: async () => {
104
+ const { dispatchPromise: dispatch } = context.requestCapability(Capabilities.IntentDispatcher);
105
+ const layout = context.requestCapability(Capabilities.Layout);
106
+ const client = context.requestCapability(ClientCapabilities.Client);
107
+ const { spaceId } = parseId(layout.workspace);
108
+ const space = (spaceId && client.spaces.get(spaceId)) ?? client.spaces.default;
109
+ await dispatch(createIntent(SpaceAction.Share, { space }));
110
+ },
111
+ properties: {
112
+ label: ['share space label', { ns: SPACE_PLUGIN }],
113
+ icon: 'ph--users--regular',
114
+ testId: 'spacePlugin.shareSpace',
115
+ keyBinding: {
116
+ macos: 'meta+.',
117
+ windows: 'alt+.',
118
+ },
119
+ },
120
+ },
121
+ {
122
+ id: SpaceAction.OpenSettings._tag,
123
+ data: async () => {
124
+ const { dispatchPromise: dispatch } = context.requestCapability(Capabilities.IntentDispatcher);
125
+ const layout = context.requestCapability(Capabilities.Layout);
126
+ const client = context.requestCapability(ClientCapabilities.Client);
127
+ const { spaceId } = parseId(layout.workspace);
128
+ const space = (spaceId && client.spaces.get(spaceId)) ?? client.spaces.default;
129
+ await dispatch(createIntent(SpaceAction.OpenSettings, { space }));
130
+ },
131
+ properties: {
132
+ label: ['open current space settings label', { ns: SPACE_PLUGIN }],
133
+ icon: 'ph--faders--regular',
134
+ keyBinding: {
135
+ macos: 'meta+shift+,',
136
+ windows: 'ctrl+shift+,',
137
+ },
138
+ },
139
+ },
101
140
  ],
102
141
  }),
103
142
 
@@ -203,7 +242,7 @@ export default (context: PluginsContext) => {
203
242
  // Create space actions.
204
243
  createExtension({
205
244
  id: `${SPACE_PLUGIN}/actions`,
206
- filter: (node): node is Node<Space> => isSpace(node.data),
245
+ filter: (node): node is Node<Space> => node.type === SPACE_TYPE,
207
246
  actions: ({ node }) => {
208
247
  const space = node.data;
209
248
  const { dispatchPromise: dispatch } = context.requestCapability(Capabilities.IntentDispatcher);
@@ -221,7 +260,7 @@ export default (context: PluginsContext) => {
221
260
  // Create nodes for objects in the root collection of a space.
222
261
  createExtension({
223
262
  id: `${SPACE_PLUGIN}/root-collection`,
224
- filter: (node): node is Node<Space> => isSpace(node.data),
263
+ filter: (node): node is Node<Space> => node.type === SPACE_TYPE,
225
264
  connector: ({ node }) => {
226
265
  const space = node.data;
227
266
  const spaceState = toSignal(
@@ -4,12 +4,12 @@
4
4
 
5
5
  import { Capabilities, contributes, createIntent, type PluginsContext } from '@dxos/app-framework';
6
6
  import { isSpace } from '@dxos/client/echo';
7
- import { create } from '@dxos/live-object';
7
+ import { live } from '@dxos/live-object';
8
8
 
9
9
  import { SPACE_PLUGIN } from '../meta';
10
10
  import translations from '../translations';
11
- import { CollectionType, SpaceAction } from '../types';
12
- import { SPACES, SPACE_TYPE } from '../util';
11
+ import { CollectionType, SpaceAction, SPACE_TYPE } from '../types';
12
+ import { SPACES } from '../util';
13
13
 
14
14
  // https://stackoverflow.com/a/19016910
15
15
  const DIRECTORY_TYPE = 'text/directory';
@@ -63,7 +63,7 @@ export default (context: PluginsContext) =>
63
63
  const result = await dispatch(
64
64
  createIntent(SpaceAction.AddObject, {
65
65
  target: collection,
66
- object: create(CollectionType, { name: data.name, objects: [], views: {} }),
66
+ object: live(CollectionType, { name: data.name, objects: [], views: {} }),
67
67
  }),
68
68
  );
69
69
 
@@ -3,7 +3,7 @@
3
3
  //
4
4
 
5
5
  import { contributes, type PluginsContext, Capabilities } from '@dxos/app-framework';
6
- import { create, makeRef } from '@dxos/live-object';
6
+ import { live, makeRef } from '@dxos/live-object';
7
7
  import { Migrations } from '@dxos/migrations';
8
8
  import { ClientCapabilities } from '@dxos/plugin-client';
9
9
 
@@ -17,7 +17,7 @@ export default async (context: PluginsContext) => {
17
17
  await defaultSpace.waitUntilReady();
18
18
 
19
19
  // Create root collection structure.
20
- defaultSpace.properties[CollectionType.typename] = makeRef(create(CollectionType, { objects: [], views: {} }));
20
+ defaultSpace.properties[CollectionType.typename] = makeRef(live(CollectionType, { objects: [], views: {} }));
21
21
  if (Migrations.versionProperty) {
22
22
  defaultSpace.properties[Migrations.versionProperty] = Migrations.targetVersion;
23
23
  }
@@ -15,13 +15,13 @@ import {
15
15
  } from '@dxos/app-framework';
16
16
  import { type Expando, getTypename, type HasId } from '@dxos/echo-schema';
17
17
  import { invariant } from '@dxos/invariant';
18
- import { create, makeRef, type ReactiveObject } from '@dxos/live-object';
18
+ import { live, makeRef, type Live } from '@dxos/live-object';
19
19
  import { Migrations } from '@dxos/migrations';
20
20
  import { ClientCapabilities } from '@dxos/plugin-client';
21
- import { ATTENDABLE_PATH_SEPARATOR } from '@dxos/plugin-deck/types';
22
21
  import { ObservabilityAction } from '@dxos/plugin-observability/types';
23
22
  import { EdgeReplicationSetting } from '@dxos/protocols/proto/dxos/echo/metadata';
24
- import { isSpace, getSpace, SpaceState, type Space, fullyQualifiedId, isEchoObject } from '@dxos/react-client/echo';
23
+ import { isSpace, getSpace, SpaceState, fullyQualifiedId, isEchoObject } from '@dxos/react-client/echo';
24
+ import { ATTENDABLE_PATH_SEPARATOR } from '@dxos/react-ui-attention';
25
25
 
26
26
  import { SpaceCapabilities } from './capabilities';
27
27
  import {
@@ -67,14 +67,14 @@ export default ({ context, observability }: IntentResolverOptions) => {
67
67
  }),
68
68
  createResolver({
69
69
  intent: SpaceAction.Create,
70
- resolve: async ({ name, edgeReplication }) => {
70
+ resolve: async ({ name, hue, icon, edgeReplication }) => {
71
71
  const client = context.requestCapability(ClientCapabilities.Client);
72
- const space = await client.spaces.create({ name });
72
+ const space = await client.spaces.create({ name, hue, icon });
73
73
  if (edgeReplication) {
74
74
  await space.internal.setEdgeReplicationPreference(EdgeReplicationSetting.ENABLED);
75
75
  }
76
76
  await space.waitUntilReady();
77
- const collection = create(CollectionType, { objects: [], views: {} });
77
+ const collection = live(CollectionType, { objects: [], views: {} });
78
78
  space.properties[CollectionType.typename] = makeRef(collection);
79
79
 
80
80
  if (Migrations.versionProperty) {
@@ -122,10 +122,9 @@ export default ({ context, observability }: IntentResolverOptions) => {
122
122
  }),
123
123
  createResolver({
124
124
  intent: SpaceAction.Share,
125
- filter: (data): data is { space: Space } => !data.space.properties[COMPOSER_SPACE_LOCK],
126
125
  resolve: ({ space }) => {
127
126
  const layout = context.requestCapability(Capabilities.Layout);
128
- const id = `${space.id}${ATTENDABLE_PATH_SEPARATOR}members`;
127
+ const id = `members-settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`;
129
128
  if (layout.active.includes(id)) {
130
129
  return {
131
130
  intents: [
@@ -146,10 +145,7 @@ export default ({ context, observability }: IntentResolverOptions) => {
146
145
  }),
147
146
  chain(LayoutAction.Open, {
148
147
  part: 'main',
149
- subject: [space.id],
150
- options: {
151
- variant: 'members',
152
- },
148
+ subject: [id],
153
149
  }),
154
150
  ),
155
151
  ...(observability
@@ -232,6 +228,7 @@ export default ({ context, observability }: IntentResolverOptions) => {
232
228
  part: 'popover',
233
229
  subject: POPOVER_ADD_SPACE,
234
230
  options: {
231
+ variant: 'react',
235
232
  anchorId: SpaceAction.AddSpace._tag,
236
233
  side: 'right',
237
234
  },
@@ -244,7 +241,7 @@ export default ({ context, observability }: IntentResolverOptions) => {
244
241
  intent: SpaceAction.OpenSettings,
245
242
  resolve: ({ space }) => {
246
243
  const layout = context.requestCapability(Capabilities.Layout);
247
- const id = `${space.id}${ATTENDABLE_PATH_SEPARATOR}settings`;
244
+ const id = `properties-settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`;
248
245
  if (layout.active.includes(id)) {
249
246
  return {
250
247
  intents: [
@@ -265,10 +262,7 @@ export default ({ context, observability }: IntentResolverOptions) => {
265
262
  }),
266
263
  chain(LayoutAction.Open, {
267
264
  part: 'main',
268
- subject: [space.id],
269
- options: {
270
- variant: 'settings',
271
- },
265
+ subject: [id],
272
266
  }),
273
267
  ),
274
268
  ],
@@ -333,7 +327,7 @@ export default ({ context, observability }: IntentResolverOptions) => {
333
327
  props: {
334
328
  target,
335
329
  shouldNavigate: navigable
336
- ? (object: ReactiveObject<any>) => !(object instanceof CollectionType) || state.navigableCollections
330
+ ? (object: Live<any>) => !(object instanceof CollectionType) || state.navigableCollections
337
331
  : () => false,
338
332
  } satisfies Partial<CreateObjectDialogProps>,
339
333
  },
@@ -390,7 +384,7 @@ export default ({ context, observability }: IntentResolverOptions) => {
390
384
  collection.objects.push(makeRef(object as HasId));
391
385
  } else {
392
386
  // TODO(wittjosiah): Can't add non-echo objects by including in a collection because of types.
393
- const collection = create(CollectionType, { objects: [makeRef(object as HasId)], views: {} });
387
+ const collection = live(CollectionType, { objects: [makeRef(object as HasId)], views: {} });
394
388
  space.properties[CollectionType.typename] = makeRef(collection);
395
389
  }
396
390
  }
@@ -557,7 +551,7 @@ export default ({ context, observability }: IntentResolverOptions) => {
557
551
  createResolver({
558
552
  intent: CollectionAction.Create,
559
553
  resolve: async ({ name }) => ({
560
- data: { object: create(CollectionType, { name, objects: [], views: {} }) },
554
+ data: { object: live(CollectionType, { name, objects: [], views: {} }) },
561
555
  }),
562
556
  }),
563
557
  ]);
@@ -2,20 +2,27 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import React from 'react';
5
+ import { type Schema as S } from 'effect';
6
+ import React, { useCallback } from 'react';
6
7
 
7
- import { Capabilities, contributes, createSurface, Surface, useCapability } from '@dxos/app-framework';
8
- import { isInstanceOf } from '@dxos/echo-schema';
8
+ import { Capabilities, contributes, createSurface, Surface, useCapability, useLayout } from '@dxos/app-framework';
9
+ import { getSchema, isInstanceOf } from '@dxos/echo-schema';
10
+ import { findAnnotation } from '@dxos/effect';
9
11
  import { SettingsStore } from '@dxos/local-storage';
10
12
  import {
11
13
  getSpace,
12
14
  isEchoObject,
13
- isReactiveObject,
15
+ isLiveObject,
14
16
  isSpace,
17
+ parseId,
15
18
  SpaceState,
19
+ useSpace,
16
20
  type ReactiveEchoObject,
17
21
  type Space,
18
22
  } from '@dxos/react-client/echo';
23
+ import { Input } from '@dxos/react-ui';
24
+ import { Form, type InputProps } from '@dxos/react-ui-form';
25
+ import { HuePicker, IconPicker } from '@dxos/react-ui-pickers';
19
26
  import { type JoinPanelProps } from '@dxos/shell/react';
20
27
 
21
28
  import { SpaceCapabilities } from './capabilities';
@@ -41,13 +48,13 @@ import {
41
48
  type CreateObjectDialogProps,
42
49
  POPOVER_ADD_SPACE,
43
50
  PopoverAddSpace,
44
- SpaceSettingsContainer,
45
- SpacePropertiesForm,
46
51
  MembersContainer,
47
52
  ObjectSettingsContainer,
53
+ SpaceSettingsContainer,
54
+ SchemaContainer,
48
55
  } from '../components';
49
56
  import { SPACE_PLUGIN } from '../meta';
50
- import { CollectionType, type SpaceSettingsProps } from '../types';
57
+ import { CollectionType, HueAnnotationId, IconAnnotationId, type SpaceSettingsProps } from '../types';
51
58
 
52
59
  type ReactSurfaceOptions = {
53
60
  createInvitationUrl: (invitationCode: string) => string;
@@ -77,20 +84,11 @@ export default ({ createInvitationUrl }: ReactSurfaceOptions) =>
77
84
  component: ({ data }) => <CollectionMain collection={data.subject} />,
78
85
  }),
79
86
  createSurface({
80
- id: `${SPACE_PLUGIN}/members`,
81
- role: 'article',
82
- position: 'hoist',
83
- filter: (data): data is { subject: Space; variant: 'members' } =>
84
- isSpace(data.subject) && data.variant === 'members',
85
- component: ({ data }) => <MembersContainer space={data.subject} createInvitationUrl={createInvitationUrl} />,
86
- }),
87
- createSurface({
88
- id: `${SPACE_PLUGIN}/settings`,
87
+ id: `${SPACE_PLUGIN}/plugin-settings`,
89
88
  role: 'article',
90
- position: 'hoist',
91
- filter: (data): data is { subject: Space; variant: 'settings' } =>
92
- isSpace(data.subject) && data.variant === 'settings',
93
- component: ({ data }) => <SpaceSettingsContainer space={data.subject} />,
89
+ filter: (data): data is { subject: SettingsStore<SpaceSettingsProps> } =>
90
+ data.subject instanceof SettingsStore && data.subject.prefix === SPACE_PLUGIN,
91
+ component: ({ data: { subject } }) => <SpacePluginSettings settings={subject.value} />,
94
92
  }),
95
93
  createSurface({
96
94
  id: `${SPACE_PLUGIN}/companion/object-settings`,
@@ -100,10 +98,50 @@ export default ({ createInvitationUrl }: ReactSurfaceOptions) =>
100
98
  component: ({ data, role }) => <ObjectSettingsContainer object={data.companionTo} role={role} />,
101
99
  }),
102
100
  createSurface({
103
- id: `${SPACE_PLUGIN}/space-settings--properties`,
104
- role: 'space-settings--properties',
105
- filter: (data): data is { subject: Space } => isSpace(data.subject),
106
- component: ({ data }) => <SpacePropertiesForm space={data.subject} />,
101
+ id: `${SPACE_PLUGIN}/space-settings-properties`,
102
+ role: 'article',
103
+ filter: (data): data is { subject: string } => data.subject === `${SPACE_PLUGIN}/properties`,
104
+ component: () => {
105
+ const layout = useLayout();
106
+ const { spaceId } = parseId(layout.workspace);
107
+ const space = useSpace(spaceId);
108
+ if (!space || !spaceId) {
109
+ return null;
110
+ }
111
+
112
+ return <SpaceSettingsContainer space={space} />;
113
+ },
114
+ }),
115
+ createSurface({
116
+ id: `${SPACE_PLUGIN}/space-settings-members`,
117
+ role: 'article',
118
+ position: 'hoist',
119
+ filter: (data): data is { subject: string } => data.subject === `${SPACE_PLUGIN}/members`,
120
+ component: () => {
121
+ const layout = useLayout();
122
+ const { spaceId } = parseId(layout.workspace);
123
+ const space = useSpace(spaceId);
124
+ if (!space || !spaceId) {
125
+ return null;
126
+ }
127
+
128
+ return <MembersContainer space={space} createInvitationUrl={createInvitationUrl} />;
129
+ },
130
+ }),
131
+ createSurface({
132
+ id: `${SPACE_PLUGIN}/space-settings-schema`,
133
+ role: 'article',
134
+ filter: (data): data is { subject: string } => data.subject === `${SPACE_PLUGIN}/schema`,
135
+ component: () => {
136
+ const layout = useLayout();
137
+ const { spaceId } = parseId(layout.workspace);
138
+ const space = useSpace(spaceId);
139
+ if (!space || !spaceId) {
140
+ return null;
141
+ }
142
+
143
+ return <SchemaContainer space={space} />;
144
+ },
107
145
  }),
108
146
  createSurface({
109
147
  id: JOIN_DIALOG,
@@ -123,6 +161,57 @@ export default ({ createInvitationUrl }: ReactSurfaceOptions) =>
123
161
  filter: (data): data is { props: CreateObjectDialogProps } => data.component === CREATE_OBJECT_DIALOG,
124
162
  component: ({ data }) => <CreateObjectDialog {...data.props} />,
125
163
  }),
164
+ createSurface({
165
+ id: `${SPACE_PLUGIN}/create-initial-space-form-[hue]`,
166
+ role: 'form-input',
167
+ filter: (data): data is { prop: string; schema: S.Schema<any> } => {
168
+ const annotation = findAnnotation<boolean>((data.schema as S.Schema.All).ast, HueAnnotationId);
169
+ return !!annotation;
170
+ },
171
+ component: ({ data: _, ...inputProps }) => {
172
+ const { label, disabled, type, getValue, onValueChange } = inputProps as any as InputProps;
173
+ const handleChange = useCallback((nextHue: string) => onValueChange(type, nextHue), [onValueChange]);
174
+ const handleReset = useCallback(() => onValueChange(type, undefined), [onValueChange]);
175
+ return (
176
+ <Input.Root>
177
+ <Input.Label>{label}</Input.Label>
178
+ <HuePicker disabled={disabled} value={getValue() ?? ''} onChange={handleChange} onReset={handleReset} />
179
+ </Input.Root>
180
+ );
181
+ },
182
+ }),
183
+ createSurface({
184
+ id: `${SPACE_PLUGIN}/create-initial-space-form-[icon]`,
185
+ role: 'form-input',
186
+ filter: (data): data is { prop: string; schema: S.Schema<any> } => {
187
+ const annotation = findAnnotation<boolean>((data.schema as S.Schema.All).ast, IconAnnotationId);
188
+ return !!annotation;
189
+ },
190
+ component: ({ data: _, ...inputProps }) => {
191
+ const { label, disabled, type, getValue, onValueChange } = inputProps as any as InputProps;
192
+ const handleChange = useCallback((nextIcon: string) => onValueChange(type, nextIcon), [onValueChange]);
193
+ const handleReset = useCallback(() => onValueChange(type, undefined), [onValueChange]);
194
+ return (
195
+ <Input.Root>
196
+ <Input.Label>{label}</Input.Label>
197
+ <IconPicker disabled={disabled} value={getValue() ?? ''} onChange={handleChange} onReset={handleReset} />
198
+ </Input.Root>
199
+ );
200
+ },
201
+ }),
202
+ createSurface({
203
+ id: `${SPACE_PLUGIN}/preview-popover`,
204
+ role: 'popover',
205
+ filter: (data): data is { subject: ReactiveEchoObject<any> } => isEchoObject(data.subject),
206
+ component: ({ data }) => {
207
+ const schema = getSchema(data.subject);
208
+ if (!schema) {
209
+ return null;
210
+ }
211
+
212
+ return <Form schema={schema} values={data.subject} readonly />;
213
+ },
214
+ }),
126
215
  createSurface({
127
216
  id: POPOVER_RENAME_SPACE,
128
217
  role: 'popover',
@@ -133,7 +222,7 @@ export default ({ createInvitationUrl }: ReactSurfaceOptions) =>
133
222
  id: POPOVER_RENAME_OBJECT,
134
223
  role: 'popover',
135
224
  filter: (data): data is { props: ReactiveEchoObject<any> } =>
136
- data.component === POPOVER_RENAME_OBJECT && isReactiveObject(data.props),
225
+ data.component === POPOVER_RENAME_OBJECT && isLiveObject(data.props),
137
226
  component: ({ data }) => <PopoverRenameObject object={data.props} />,
138
227
  }),
139
228
  createSurface({
@@ -142,6 +231,12 @@ export default ({ createInvitationUrl }: ReactSurfaceOptions) =>
142
231
  filter: (data): data is any => data.component === POPOVER_ADD_SPACE,
143
232
  component: () => <PopoverAddSpace />,
144
233
  }),
234
+ createSurface({
235
+ id: `${SPACE_PLUGIN}/menu-footer`,
236
+ role: 'menu-footer',
237
+ filter: (data): data is { subject: ReactiveEchoObject<any> } => isEchoObject(data.subject),
238
+ component: ({ data }) => <MenuFooter object={data.subject} />,
239
+ }),
145
240
  createSurface({
146
241
  id: `${SPACE_PLUGIN}/navtree-presence`,
147
242
  role: 'navtree-item-end',
@@ -191,19 +286,6 @@ export default ({ createInvitationUrl }: ReactSurfaceOptions) =>
191
286
  filter: (data): data is { subject: CollectionType } => isInstanceOf(CollectionType, data.subject),
192
287
  component: ({ data }) => <CollectionSection collection={data.subject} />,
193
288
  }),
194
- createSurface({
195
- id: `${SPACE_PLUGIN}/plugin-settings`,
196
- role: 'article',
197
- filter: (data): data is { subject: SettingsStore<SpaceSettingsProps> } =>
198
- data.subject instanceof SettingsStore && data.subject.prefix === SPACE_PLUGIN,
199
- component: ({ data: { subject } }) => <SpacePluginSettings settings={subject.value} />,
200
- }),
201
- createSurface({
202
- id: `${SPACE_PLUGIN}/menu-footer`,
203
- role: 'menu-footer',
204
- filter: (data): data is { subject: ReactiveEchoObject<any> } => isEchoObject(data.subject),
205
- component: ({ data }) => <MenuFooter object={data.subject} />,
206
- }),
207
289
  createSurface({
208
290
  id: `${SPACE_PLUGIN}/status`,
209
291
  role: 'status',
@@ -3,13 +3,13 @@
3
3
  //
4
4
 
5
5
  import { Capabilities, contributes } from '@dxos/app-framework';
6
- import { create } from '@dxos/live-object';
6
+ import { live } from '@dxos/live-object';
7
7
 
8
8
  import { SPACE_PLUGIN } from '../meta';
9
9
  import { type SpaceSettingsProps, SpaceSettingsSchema } from '../types';
10
10
 
11
11
  export default () => {
12
- const settings = create<SpaceSettingsProps>({
12
+ const settings = live<SpaceSettingsProps>({
13
13
  showHidden: false,
14
14
  });
15
15
 
@@ -6,7 +6,7 @@ import { contributes, createIntent, type PluginsContext, Capabilities, LayoutAct
6
6
  import { SubscriptionList } from '@dxos/async';
7
7
  import { Expando } from '@dxos/echo-schema';
8
8
  import { scheduledEffect } from '@dxos/echo-signals/core';
9
- import { create } from '@dxos/live-object';
9
+ import { live } from '@dxos/live-object';
10
10
  import { log } from '@dxos/log';
11
11
  import { AttentionCapabilities } from '@dxos/plugin-attention';
12
12
  import { ClientCapabilities } from '@dxos/plugin-client';
@@ -53,7 +53,7 @@ export default async (context: PluginsContext) => {
53
53
  if (!spacesOrder) {
54
54
  // TODO(wittjosiah): Cannot be a Folder because Spaces are not TypedObjects so can't be saved in the database.
55
55
  // Instead, we store order as an array of space ids.
56
- defaultSpace.db.add(create({ key: SHARED, order: [] }));
56
+ defaultSpace.db.add(live({ key: SHARED, order: [] }));
57
57
  }
58
58
 
59
59
  // Await missing objects.