@dxos/plugin-space 0.7.5-main.9d2a38b → 0.7.5-main.e94eead

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 (251) hide show
  1. package/dist/lib/browser/{app-graph-builder-F6XSETHX.mjs → app-graph-builder-MGK5HWPZ.mjs} +26 -103
  2. package/dist/lib/browser/app-graph-builder-MGK5HWPZ.mjs.map +7 -0
  3. package/dist/lib/browser/{app-graph-serializer-FYJE23GN.mjs → app-graph-serializer-FOWFLYGU.mjs} +5 -5
  4. package/dist/lib/browser/{chunk-IZ7QKQ2E.mjs → chunk-23RVI5FZ.mjs} +27 -11
  5. package/dist/lib/browser/chunk-23RVI5FZ.mjs.map +7 -0
  6. package/dist/lib/browser/{chunk-UH5P4UL3.mjs → chunk-NU7WDVGN.mjs} +4 -2
  7. package/dist/lib/browser/chunk-NU7WDVGN.mjs.map +7 -0
  8. package/dist/lib/browser/{chunk-SOXNANA6.mjs → chunk-PQXZCNAU.mjs} +3 -2
  9. package/dist/lib/browser/{chunk-SOXNANA6.mjs.map → chunk-PQXZCNAU.mjs.map} +3 -3
  10. package/dist/lib/browser/{chunk-XXD33C4E.mjs → chunk-S6B7627U.mjs} +486 -349
  11. package/dist/lib/browser/chunk-S6B7627U.mjs.map +7 -0
  12. package/dist/lib/browser/{chunk-T36CIHPG.mjs → chunk-UDWHTKB5.mjs} +7 -4
  13. package/dist/lib/browser/chunk-UDWHTKB5.mjs.map +7 -0
  14. package/dist/lib/browser/{chunk-SSJ772GK.mjs → chunk-ULA2UQJ4.mjs} +18 -5
  15. package/dist/lib/browser/chunk-ULA2UQJ4.mjs.map +7 -0
  16. package/dist/lib/browser/{identity-created-4Q4PFIC5.mjs → identity-created-FYGS6TBH.mjs} +3 -3
  17. package/dist/lib/browser/index.mjs +59 -24
  18. package/dist/lib/browser/index.mjs.map +3 -3
  19. package/dist/lib/browser/intent-resolver-QVR4MSJV.mjs +555 -0
  20. package/dist/lib/browser/intent-resolver-QVR4MSJV.mjs.map +7 -0
  21. package/dist/lib/browser/meta.json +1 -1
  22. package/dist/lib/browser/{react-root-BDOPFJGJ.mjs → react-root-IP2ZB245.mjs} +6 -6
  23. package/dist/lib/browser/{react-surface-EGOL2JBL.mjs → react-surface-BT3EHB6V.mjs} +36 -49
  24. package/dist/lib/browser/react-surface-BT3EHB6V.mjs.map +7 -0
  25. package/dist/lib/browser/schema-5W3DSY2E.mjs +24 -0
  26. package/dist/lib/browser/schema-5W3DSY2E.mjs.map +7 -0
  27. package/dist/lib/browser/{settings-WF67QZSD.mjs → settings-PHPCXX33.mjs} +3 -3
  28. package/dist/lib/browser/{spaces-ready-WVU7US3C.mjs → spaces-ready-K47RR7N2.mjs} +31 -32
  29. package/dist/lib/browser/spaces-ready-K47RR7N2.mjs.map +7 -0
  30. package/dist/lib/browser/{state-MS4KYJWI.mjs → state-INJ63O57.mjs} +3 -3
  31. package/dist/lib/browser/types/index.mjs +6 -4
  32. package/dist/lib/node/{app-graph-builder-GKLVZ4PM.cjs → app-graph-builder-ZIUBXRPA.cjs} +59 -136
  33. package/dist/lib/node/app-graph-builder-ZIUBXRPA.cjs.map +7 -0
  34. package/dist/lib/node/{app-graph-serializer-RMTU5YSC.cjs → app-graph-serializer-VQOGHKXL.cjs} +21 -21
  35. package/dist/lib/node/{chunk-AJRP7AD6.cjs → chunk-N2FS7PRA.cjs} +552 -414
  36. package/dist/lib/node/chunk-N2FS7PRA.cjs.map +7 -0
  37. package/dist/lib/node/{chunk-5D4RWKTV.cjs → chunk-OVGKWJOC.cjs} +78 -62
  38. package/dist/lib/node/chunk-OVGKWJOC.cjs.map +7 -0
  39. package/dist/lib/node/{chunk-UENH2YBM.cjs → chunk-U6DYXAR3.cjs} +12 -9
  40. package/dist/lib/node/chunk-U6DYXAR3.cjs.map +7 -0
  41. package/dist/lib/node/{chunk-YCBBGTFD.cjs → chunk-WAJKBO3J.cjs} +25 -11
  42. package/dist/lib/node/chunk-WAJKBO3J.cjs.map +7 -0
  43. package/dist/lib/node/{chunk-AO4EW2RX.cjs → chunk-WZR6OAN3.cjs} +6 -5
  44. package/dist/lib/node/{chunk-AO4EW2RX.cjs.map → chunk-WZR6OAN3.cjs.map} +3 -3
  45. package/dist/lib/node/{chunk-56NGXG2A.cjs → chunk-YZKNRFHU.cjs} +10 -8
  46. package/dist/lib/node/chunk-YZKNRFHU.cjs.map +7 -0
  47. package/dist/lib/node/{identity-created-QQWX7WX3.cjs → identity-created-AXI64BLE.cjs} +7 -7
  48. package/dist/lib/node/index.cjs +132 -98
  49. package/dist/lib/node/index.cjs.map +3 -3
  50. package/dist/lib/node/intent-resolver-MLENGECT.cjs +553 -0
  51. package/dist/lib/node/intent-resolver-MLENGECT.cjs.map +7 -0
  52. package/dist/lib/node/meta.json +1 -1
  53. package/dist/lib/node/{react-root-ZTR2J2I3.cjs → react-root-3OX5Z5CX.cjs} +12 -12
  54. package/dist/lib/node/{react-surface-75KRPQYT.cjs → react-surface-5NYCMXSM.cjs} +77 -89
  55. package/dist/lib/node/react-surface-5NYCMXSM.cjs.map +7 -0
  56. package/dist/lib/node/schema-YN7WVFRX.cjs +40 -0
  57. package/dist/lib/node/schema-YN7WVFRX.cjs.map +7 -0
  58. package/dist/lib/node/{settings-KOVSPA3S.cjs → settings-5QYFWNH7.cjs} +8 -8
  59. package/dist/lib/node/{spaces-ready-ILVGUHJH.cjs → spaces-ready-FQNAKR7G.cjs} +39 -40
  60. package/dist/lib/node/spaces-ready-FQNAKR7G.cjs.map +7 -0
  61. package/dist/lib/node/{state-4UIOUKLJ.cjs → state-57UE3DYE.cjs} +8 -8
  62. package/dist/lib/node/types/index.cjs +19 -17
  63. package/dist/lib/node/types/index.cjs.map +2 -2
  64. package/dist/lib/node-esm/{app-graph-builder-NEHQ5Z63.mjs → app-graph-builder-TERVM2SL.mjs} +26 -103
  65. package/dist/lib/node-esm/app-graph-builder-TERVM2SL.mjs.map +7 -0
  66. package/dist/lib/node-esm/{app-graph-serializer-UWWS5OVC.mjs → app-graph-serializer-GZRSWHEN.mjs} +5 -5
  67. package/dist/lib/node-esm/{chunk-E5DWIQ3N.mjs → chunk-2TQ2AJEZ.mjs} +7 -4
  68. package/dist/lib/node-esm/chunk-2TQ2AJEZ.mjs.map +7 -0
  69. package/dist/lib/node-esm/{chunk-375RB3CZ.mjs → chunk-6RSVVEPS.mjs} +4 -2
  70. package/dist/lib/node-esm/chunk-6RSVVEPS.mjs.map +7 -0
  71. package/dist/lib/node-esm/{chunk-GVOPDPS2.mjs → chunk-DIKRH2IK.mjs} +486 -349
  72. package/dist/lib/node-esm/chunk-DIKRH2IK.mjs.map +7 -0
  73. package/dist/lib/node-esm/{chunk-7FUVU45N.mjs → chunk-ICCM4YRJ.mjs} +3 -2
  74. package/dist/lib/node-esm/{chunk-7FUVU45N.mjs.map → chunk-ICCM4YRJ.mjs.map} +3 -3
  75. package/dist/lib/node-esm/{chunk-5QMAPAZD.mjs → chunk-PGH5L7MV.mjs} +27 -11
  76. package/dist/lib/node-esm/chunk-PGH5L7MV.mjs.map +7 -0
  77. package/dist/lib/node-esm/{chunk-HTBGWQEU.mjs → chunk-TRNZQEEN.mjs} +18 -5
  78. package/dist/lib/node-esm/chunk-TRNZQEEN.mjs.map +7 -0
  79. package/dist/lib/node-esm/{identity-created-HMNY2MPB.mjs → identity-created-3CGEXNPO.mjs} +3 -3
  80. package/dist/lib/node-esm/index.mjs +59 -24
  81. package/dist/lib/node-esm/index.mjs.map +3 -3
  82. package/dist/lib/node-esm/intent-resolver-BLW4RM6X.mjs +556 -0
  83. package/dist/lib/node-esm/intent-resolver-BLW4RM6X.mjs.map +7 -0
  84. package/dist/lib/node-esm/meta.json +1 -1
  85. package/dist/lib/node-esm/{react-root-OUPJA4RY.mjs → react-root-7XXGP56B.mjs} +6 -6
  86. package/dist/lib/node-esm/{react-surface-7EVWCKIP.mjs → react-surface-R2ECJSFB.mjs} +36 -49
  87. package/dist/lib/node-esm/react-surface-R2ECJSFB.mjs.map +7 -0
  88. package/dist/lib/node-esm/schema-LOR2EVGY.mjs +25 -0
  89. package/dist/lib/node-esm/schema-LOR2EVGY.mjs.map +7 -0
  90. package/dist/lib/node-esm/{settings-EDK6WI3V.mjs → settings-H6MXTEQM.mjs} +3 -3
  91. package/dist/lib/node-esm/{spaces-ready-CH3W7OGN.mjs → spaces-ready-HKAQG5SA.mjs} +31 -32
  92. package/dist/lib/node-esm/spaces-ready-HKAQG5SA.mjs.map +7 -0
  93. package/dist/lib/node-esm/{state-BMISGQ2O.mjs → state-VYA6OFHD.mjs} +3 -3
  94. package/dist/lib/node-esm/types/index.mjs +6 -4
  95. package/dist/types/src/SpacePlugin.d.ts +5 -1
  96. package/dist/types/src/SpacePlugin.d.ts.map +1 -1
  97. package/dist/types/src/capabilities/app-graph-builder.d.ts +110 -110
  98. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  99. package/dist/types/src/capabilities/capabilities.d.ts +8 -1
  100. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  101. package/dist/types/src/capabilities/index.d.ts +123 -121
  102. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  103. package/dist/types/src/capabilities/intent-resolver.d.ts +2 -1
  104. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  105. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  106. package/dist/types/src/capabilities/schema.d.ts +4 -0
  107. package/dist/types/src/capabilities/schema.d.ts.map +1 -0
  108. package/dist/types/src/capabilities/spaces-ready.d.ts.map +1 -1
  109. package/dist/types/src/components/AdvancedObjectSettings/AdvancedObjectSettings.d.ts +1 -2
  110. package/dist/types/src/components/AdvancedObjectSettings/AdvancedObjectSettings.d.ts.map +1 -1
  111. package/dist/types/src/components/AdvancedObjectSettings/ForeignKeys.d.ts +1 -2
  112. package/dist/types/src/components/AdvancedObjectSettings/ForeignKeys.d.ts.map +1 -1
  113. package/dist/types/src/components/AwaitingObject.d.ts +1 -2
  114. package/dist/types/src/components/AwaitingObject.d.ts.map +1 -1
  115. package/dist/types/src/components/BaseObjectSettings.d.ts +1 -2
  116. package/dist/types/src/components/BaseObjectSettings.d.ts.map +1 -1
  117. package/dist/types/src/components/CollectionMain.d.ts +1 -2
  118. package/dist/types/src/components/CollectionMain.d.ts.map +1 -1
  119. package/dist/types/src/components/CollectionSection.d.ts +1 -2
  120. package/dist/types/src/components/CollectionSection.d.ts.map +1 -1
  121. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts +2 -4
  122. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
  123. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts.map +1 -1
  124. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +8 -9
  125. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
  126. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts +1 -2
  127. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts.map +1 -1
  128. package/dist/types/src/components/JoinDialog.d.ts +1 -2
  129. package/dist/types/src/components/JoinDialog.d.ts.map +1 -1
  130. package/dist/types/src/components/MenuFooter.d.ts +1 -2
  131. package/dist/types/src/components/MenuFooter.d.ts.map +1 -1
  132. package/dist/types/src/components/PersistenceStatus.d.ts +1 -2
  133. package/dist/types/src/components/PersistenceStatus.d.ts.map +1 -1
  134. package/dist/types/src/components/PopoverAddSpace.d.ts +3 -0
  135. package/dist/types/src/components/PopoverAddSpace.d.ts.map +1 -0
  136. package/dist/types/src/components/PopoverRenameObject.d.ts +1 -2
  137. package/dist/types/src/components/PopoverRenameObject.d.ts.map +1 -1
  138. package/dist/types/src/components/PopoverRenameSpace.d.ts +1 -2
  139. package/dist/types/src/components/PopoverRenameSpace.d.ts.map +1 -1
  140. package/dist/types/src/components/ShareSpaceButton.d.ts +2 -3
  141. package/dist/types/src/components/ShareSpaceButton.d.ts.map +1 -1
  142. package/dist/types/src/components/SpacePluginSettings.d.ts +1 -2
  143. package/dist/types/src/components/SpacePluginSettings.d.ts.map +1 -1
  144. package/dist/types/src/components/SpacePresence.d.ts +4 -5
  145. package/dist/types/src/components/SpacePresence.d.ts.map +1 -1
  146. package/dist/types/src/components/SpacePresence.stories.d.ts +2 -3
  147. package/dist/types/src/components/SpacePresence.stories.d.ts.map +1 -1
  148. package/dist/types/src/components/SpaceSettings/SpaceSettingsDialog.d.ts +1 -2
  149. package/dist/types/src/components/SpaceSettings/SpaceSettingsDialog.d.ts.map +1 -1
  150. package/dist/types/src/components/SpaceSettings/SpaceSettingsPanel.d.ts +3 -5
  151. package/dist/types/src/components/SpaceSettings/SpaceSettingsPanel.d.ts.map +1 -1
  152. package/dist/types/src/components/SpaceSettings/SpaceSettingsPanel.stories.d.ts.map +1 -1
  153. package/dist/types/src/components/SyncStatus/InlineSyncStatus.d.ts +1 -2
  154. package/dist/types/src/components/SyncStatus/InlineSyncStatus.d.ts.map +1 -1
  155. package/dist/types/src/components/SyncStatus/Space.d.ts +2 -3
  156. package/dist/types/src/components/SyncStatus/Space.d.ts.map +1 -1
  157. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts +3 -4
  158. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
  159. package/dist/types/src/components/index.d.ts +1 -0
  160. package/dist/types/src/components/index.d.ts.map +1 -1
  161. package/dist/types/src/events.d.ts +4 -0
  162. package/dist/types/src/events.d.ts.map +1 -1
  163. package/dist/types/src/index.d.ts +1 -1
  164. package/dist/types/src/index.d.ts.map +1 -1
  165. package/dist/types/src/meta.d.ts +1 -0
  166. package/dist/types/src/meta.d.ts.map +1 -1
  167. package/dist/types/src/translations.d.ts +9 -0
  168. package/dist/types/src/translations.d.ts.map +1 -1
  169. package/dist/types/src/types/collection.d.ts +2 -2
  170. package/dist/types/src/types/thread.d.ts +34 -34
  171. package/dist/types/src/types/types.d.ts +37 -12
  172. package/dist/types/src/types/types.d.ts.map +1 -1
  173. package/dist/types/src/util.d.ts +3 -2
  174. package/dist/types/src/util.d.ts.map +1 -1
  175. package/package.json +41 -38
  176. package/src/SpacePlugin.tsx +44 -15
  177. package/src/capabilities/app-graph-builder.ts +19 -92
  178. package/src/capabilities/capabilities.ts +7 -2
  179. package/src/capabilities/index.ts +1 -0
  180. package/src/capabilities/intent-resolver.ts +428 -312
  181. package/src/capabilities/react-surface.tsx +32 -56
  182. package/src/capabilities/schema.ts +27 -0
  183. package/src/capabilities/spaces-ready.ts +20 -21
  184. package/src/components/AwaitingObject.tsx +5 -5
  185. package/src/components/BaseObjectSettings.tsx +7 -0
  186. package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +1 -3
  187. package/src/components/CreateDialog/CreateObjectDialog.tsx +42 -34
  188. package/src/components/CreateDialog/CreateObjectPanel.tsx +126 -129
  189. package/src/components/CreateDialog/CreateSpaceDialog.tsx +18 -9
  190. package/src/components/JoinDialog.tsx +27 -19
  191. package/src/components/PopoverAddSpace.tsx +46 -0
  192. package/src/components/SpacePluginSettings.tsx +3 -3
  193. package/src/components/SpacePresence.stories.tsx +2 -2
  194. package/src/components/SpacePresence.tsx +2 -3
  195. package/src/components/SpaceSettings/SpaceSettingsDialog.tsx +16 -1
  196. package/src/components/SpaceSettings/SpaceSettingsPanel.stories.tsx +5 -1
  197. package/src/components/SpaceSettings/SpaceSettingsPanel.tsx +30 -8
  198. package/src/components/SyncStatus/InlineSyncStatus.tsx +2 -2
  199. package/src/components/SyncStatus/SyncStatus.tsx +2 -1
  200. package/src/components/index.ts +1 -0
  201. package/src/events.ts +6 -0
  202. package/src/index.ts +1 -1
  203. package/src/meta.ts +1 -0
  204. package/src/translations.ts +3 -0
  205. package/src/types/types.ts +23 -4
  206. package/src/util.tsx +16 -6
  207. package/dist/lib/browser/app-graph-builder-F6XSETHX.mjs.map +0 -7
  208. package/dist/lib/browser/chunk-IZ7QKQ2E.mjs.map +0 -7
  209. package/dist/lib/browser/chunk-SSJ772GK.mjs.map +0 -7
  210. package/dist/lib/browser/chunk-T36CIHPG.mjs.map +0 -7
  211. package/dist/lib/browser/chunk-UH5P4UL3.mjs.map +0 -7
  212. package/dist/lib/browser/chunk-XXD33C4E.mjs.map +0 -7
  213. package/dist/lib/browser/intent-resolver-XRZYCXXX.mjs +0 -459
  214. package/dist/lib/browser/intent-resolver-XRZYCXXX.mjs.map +0 -7
  215. package/dist/lib/browser/react-surface-EGOL2JBL.mjs.map +0 -7
  216. package/dist/lib/browser/spaces-ready-WVU7US3C.mjs.map +0 -7
  217. package/dist/lib/node/app-graph-builder-GKLVZ4PM.cjs.map +0 -7
  218. package/dist/lib/node/chunk-56NGXG2A.cjs.map +0 -7
  219. package/dist/lib/node/chunk-5D4RWKTV.cjs.map +0 -7
  220. package/dist/lib/node/chunk-AJRP7AD6.cjs.map +0 -7
  221. package/dist/lib/node/chunk-UENH2YBM.cjs.map +0 -7
  222. package/dist/lib/node/chunk-YCBBGTFD.cjs.map +0 -7
  223. package/dist/lib/node/intent-resolver-3NI6AUAI.cjs +0 -458
  224. package/dist/lib/node/intent-resolver-3NI6AUAI.cjs.map +0 -7
  225. package/dist/lib/node/react-surface-75KRPQYT.cjs.map +0 -7
  226. package/dist/lib/node/spaces-ready-ILVGUHJH.cjs.map +0 -7
  227. package/dist/lib/node-esm/app-graph-builder-NEHQ5Z63.mjs.map +0 -7
  228. package/dist/lib/node-esm/chunk-375RB3CZ.mjs.map +0 -7
  229. package/dist/lib/node-esm/chunk-5QMAPAZD.mjs.map +0 -7
  230. package/dist/lib/node-esm/chunk-E5DWIQ3N.mjs.map +0 -7
  231. package/dist/lib/node-esm/chunk-GVOPDPS2.mjs.map +0 -7
  232. package/dist/lib/node-esm/chunk-HTBGWQEU.mjs.map +0 -7
  233. package/dist/lib/node-esm/intent-resolver-P5EVBOGP.mjs +0 -460
  234. package/dist/lib/node-esm/intent-resolver-P5EVBOGP.mjs.map +0 -7
  235. package/dist/lib/node-esm/react-surface-7EVWCKIP.mjs.map +0 -7
  236. package/dist/lib/node-esm/spaces-ready-CH3W7OGN.mjs.map +0 -7
  237. /package/dist/lib/browser/{app-graph-serializer-FYJE23GN.mjs.map → app-graph-serializer-FOWFLYGU.mjs.map} +0 -0
  238. /package/dist/lib/browser/{identity-created-4Q4PFIC5.mjs.map → identity-created-FYGS6TBH.mjs.map} +0 -0
  239. /package/dist/lib/browser/{react-root-BDOPFJGJ.mjs.map → react-root-IP2ZB245.mjs.map} +0 -0
  240. /package/dist/lib/browser/{settings-WF67QZSD.mjs.map → settings-PHPCXX33.mjs.map} +0 -0
  241. /package/dist/lib/browser/{state-MS4KYJWI.mjs.map → state-INJ63O57.mjs.map} +0 -0
  242. /package/dist/lib/node/{app-graph-serializer-RMTU5YSC.cjs.map → app-graph-serializer-VQOGHKXL.cjs.map} +0 -0
  243. /package/dist/lib/node/{identity-created-QQWX7WX3.cjs.map → identity-created-AXI64BLE.cjs.map} +0 -0
  244. /package/dist/lib/node/{react-root-ZTR2J2I3.cjs.map → react-root-3OX5Z5CX.cjs.map} +0 -0
  245. /package/dist/lib/node/{settings-KOVSPA3S.cjs.map → settings-5QYFWNH7.cjs.map} +0 -0
  246. /package/dist/lib/node/{state-4UIOUKLJ.cjs.map → state-57UE3DYE.cjs.map} +0 -0
  247. /package/dist/lib/node-esm/{app-graph-serializer-UWWS5OVC.mjs.map → app-graph-serializer-GZRSWHEN.mjs.map} +0 -0
  248. /package/dist/lib/node-esm/{identity-created-HMNY2MPB.mjs.map → identity-created-3CGEXNPO.mjs.map} +0 -0
  249. /package/dist/lib/node-esm/{react-root-OUPJA4RY.mjs.map → react-root-7XXGP56B.mjs.map} +0 -0
  250. /package/dist/lib/node-esm/{settings-EDK6WI3V.mjs.map → settings-H6MXTEQM.mjs.map} +0 -0
  251. /package/dist/lib/node-esm/{state-BMISGQ2O.mjs.map → state-VYA6OFHD.mjs.map} +0 -0
@@ -12,10 +12,12 @@ import {
12
12
  Events,
13
13
  oneOf,
14
14
  } from '@dxos/app-framework';
15
+ import { S } from '@dxos/echo-schema';
15
16
  import { RefArray } from '@dxos/live-object';
16
17
  import { AttentionEvents } from '@dxos/plugin-attention';
17
- import { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';
18
- import { DeckCapabilities } from '@dxos/plugin-deck';
18
+ import { ClientEvents } from '@dxos/plugin-client';
19
+ import { DeckCapabilities, DeckEvents } from '@dxos/plugin-deck';
20
+ import { isEchoObject, getSpace } from '@dxos/react-client/echo';
19
21
  import { osTranslations } from '@dxos/shell/react';
20
22
 
21
23
  import {
@@ -25,6 +27,8 @@ import {
25
27
  IntentResolver,
26
28
  ReactRoot,
27
29
  ReactSurface,
30
+ Schema,
31
+ SpaceCapabilities,
28
32
  SpaceSettings,
29
33
  SpacesReady,
30
34
  SpaceState,
@@ -32,7 +36,7 @@ import {
32
36
  import { SpaceEvents } from './events';
33
37
  import { meta, SPACE_PLUGIN } from './meta';
34
38
  import translations from './translations';
35
- import { CollectionAction, CollectionType } from './types';
39
+ import { CollectionAction, CollectionType, defineObjectForm } from './types';
36
40
 
37
41
  export type SpacePluginOptions = {
38
42
  /**
@@ -44,11 +48,17 @@ export type SpacePluginOptions = {
44
48
  * Query parameter for the invitation code.
45
49
  */
46
50
  invitationParam?: string;
51
+
52
+ /**
53
+ * Whether to send observability events.
54
+ */
55
+ observability?: boolean;
47
56
  };
48
57
 
49
58
  export const SpacePlugin = ({
50
59
  invitationUrl = window.location.origin,
51
60
  invitationParam = 'spaceInvitationCode',
61
+ observability = true,
52
62
  }: SpacePluginOptions = {}) => {
53
63
  const createInvitationUrl = (invitationCode: string) => {
54
64
  const baseUrl = new URL(invitationUrl);
@@ -59,7 +69,10 @@ export const SpacePlugin = ({
59
69
  return definePlugin(meta, [
60
70
  defineModule({
61
71
  id: `${meta.id}/module/state`,
62
- activatesOn: oneOf(Events.Startup, Events.SetupAppGraph),
72
+ // TODO(wittjosiah): Does not integrate with settings store.
73
+ // Should this be a different event?
74
+ // Should settings store be renamed to be more generic?
75
+ activatesOn: oneOf(Events.SetupSettings, Events.SetupAppGraph),
63
76
  activatesAfter: [SpaceEvents.StateReady],
64
77
  activate: SpaceState,
65
78
  }),
@@ -75,12 +88,11 @@ export const SpacePlugin = ({
75
88
  }),
76
89
  defineModule({
77
90
  id: `${meta.id}/module/metadata`,
78
- activatesOn: oneOf(Events.Startup, Events.SetupAppGraph),
91
+ activatesOn: Events.SetupMetadata,
79
92
  activate: () =>
80
93
  contributes(Capabilities.Metadata, {
81
94
  id: CollectionType.typename,
82
95
  metadata: {
83
- createObject: (props: { name?: string }) => createIntent(CollectionAction.Create, props),
84
96
  placeholder: ['unnamed collection label', { ns: SPACE_PLUGIN }],
85
97
  icon: 'ph--cards-three--regular',
86
98
  // TODO(wittjosiah): Move out of metadata.
@@ -89,20 +101,36 @@ export const SpacePlugin = ({
89
101
  },
90
102
  }),
91
103
  }),
104
+ defineModule({
105
+ id: `${meta.id}/module/object-form`,
106
+ activatesOn: ClientEvents.SetupSchema,
107
+ activate: () =>
108
+ contributes(
109
+ SpaceCapabilities.ObjectForm,
110
+ defineObjectForm({
111
+ objectSchema: CollectionType,
112
+ formSchema: S.Struct({ name: S.optional(S.String) }),
113
+ getIntent: (props) => createIntent(CollectionAction.Create, props),
114
+ }),
115
+ ),
116
+ }),
92
117
  defineModule({
93
118
  id: `${meta.id}/module/complementary-panel`,
94
- activatesOn: Events.Startup,
119
+ activatesOn: DeckEvents.SetupComplementaryPanels,
95
120
  activate: () =>
96
121
  contributes(DeckCapabilities.ComplementaryPanel, {
97
122
  id: 'settings',
98
123
  label: ['settings panel label', { ns: SPACE_PLUGIN }],
99
- icon: 'ph--gear--regular',
124
+ icon: 'ph--sliders--regular',
125
+ position: 'hoist',
126
+ filter: (node) => isEchoObject(node.data) && !!getSpace(node.data),
100
127
  }),
101
128
  }),
102
129
  defineModule({
103
130
  id: `${meta.id}/module/schema`,
104
- activatesOn: ClientEvents.SetupClient,
105
- activate: () => contributes(ClientCapabilities.Schema, [CollectionType]),
131
+ activatesOn: ClientEvents.ClientReady,
132
+ activatesBefore: [ClientEvents.SetupSchema],
133
+ activate: Schema,
106
134
  }),
107
135
  defineModule({
108
136
  id: `${meta.id}/module/react-root`,
@@ -111,13 +139,15 @@ export const SpacePlugin = ({
111
139
  }),
112
140
  defineModule({
113
141
  id: `${meta.id}/module/react-surface`,
114
- activatesOn: Events.Startup,
142
+ activatesOn: Events.SetupReactSurface,
143
+ // TODO(wittjosiah): Should occur before the settings dialog is loaded when surfaces activation is more granular.
144
+ activatesBefore: [SpaceEvents.SetupSettingsPanel],
115
145
  activate: () => ReactSurface({ createInvitationUrl }),
116
146
  }),
117
147
  defineModule({
118
148
  id: `${meta.id}/module/intent-resolver`,
119
- activatesOn: Events.SetupIntents,
120
- activate: (context) => IntentResolver({ createInvitationUrl, context }),
149
+ activatesOn: Events.SetupIntentResolver,
150
+ activate: (context) => IntentResolver({ createInvitationUrl, context, observability }),
121
151
  }),
122
152
  defineModule({
123
153
  id: `${meta.id}/module/app-graph-builder`,
@@ -127,7 +157,7 @@ export const SpacePlugin = ({
127
157
  // TODO(wittjosiah): This could probably be deferred.
128
158
  defineModule({
129
159
  id: `${meta.id}/module/app-graph-serializer`,
130
- activatesOn: Events.Startup,
160
+ activatesOn: Events.AppGraphReady,
131
161
  activate: AppGraphSerializer,
132
162
  }),
133
163
  defineModule({
@@ -141,7 +171,6 @@ export const SpacePlugin = ({
141
171
  activatesOn: allOf(
142
172
  Events.DispatcherReady,
143
173
  Events.LayoutReady,
144
- Events.LocationReady,
145
174
  Events.AppGraphReady,
146
175
  AttentionEvents.AttentionReady,
147
176
  SpaceEvents.StateReady,
@@ -11,17 +11,16 @@ import {
11
11
  isEchoObject,
12
12
  isSpace,
13
13
  OBJECT_ID_LENGTH,
14
- parseId,
15
14
  type ReactiveEchoObject,
16
15
  SPACE_ID_LENGTH,
17
16
  SpaceState,
18
17
  type Space,
19
18
  } from '@dxos/client/echo';
20
- import { getTypename, isDeleted } from '@dxos/live-object';
19
+ import { isDeleted } from '@dxos/live-object';
21
20
  import { log } from '@dxos/log';
22
21
  import { ClientCapabilities } from '@dxos/plugin-client';
23
- import { createExtension, toSignal, type Node } from '@dxos/plugin-graph';
24
- import { nonNullable } from '@dxos/util';
22
+ import { createExtension, toSignal, type Node, type InvokeParams } from '@dxos/plugin-graph';
23
+ import { isNonNullable } from '@dxos/util';
25
24
 
26
25
  import { SpaceCapabilities } from './capabilities';
27
26
  import { SPACE_PLUGIN } from '../meta';
@@ -46,8 +45,10 @@ export default (context: PluginsContext) => {
46
45
  cacheable: ['label', 'role'],
47
46
  properties: {
48
47
  label: ['spaces label', { ns: SPACE_PLUGIN }],
48
+ icon: 'ph--planet--regular',
49
49
  testId: 'spacePlugin.spaces',
50
50
  role: 'branch',
51
+ disposition: 'collection',
51
52
  disabled: true,
52
53
  childrenPersistenceClass: 'echo',
53
54
  onRearrangeChildren: async (nextOrder: Space[]) => {
@@ -79,33 +80,21 @@ export default (context: PluginsContext) => {
79
80
  // Primary actions.
80
81
  createExtension({
81
82
  id: `${SPACE_PLUGIN}/primary-actions`,
82
- disposition: 'hoist',
83
+ position: 'hoist',
83
84
  filter: (node): node is Node<null> => node.id === 'root',
84
85
  actions: () => [
85
86
  {
86
- id: SpaceAction.OpenCreateSpace._tag,
87
- data: async () => {
87
+ id: SpaceAction.AddSpace._tag,
88
+ data: async (params: InvokeParams) => {
88
89
  const { dispatchPromise: dispatch } = context.requestCapability(Capabilities.IntentDispatcher);
89
- await dispatch(createIntent(SpaceAction.OpenCreateSpace));
90
+ await dispatch(createIntent(SpaceAction.AddSpace));
90
91
  },
91
92
  properties: {
92
- label: ['create space label', { ns: SPACE_PLUGIN }],
93
+ label: ['add space label', { ns: SPACE_PLUGIN }],
93
94
  icon: 'ph--plus--regular',
94
- testId: 'spacePlugin.createSpace',
95
- disposition: 'item',
96
- },
97
- },
98
- {
99
- id: SpaceAction.Join._tag,
100
- data: async () => {
101
- const { dispatchPromise: dispatch } = context.requestCapability(Capabilities.IntentDispatcher);
102
- await dispatch(createIntent(SpaceAction.Join));
103
- },
104
- properties: {
105
- label: ['join space label', { ns: SPACE_PLUGIN }],
106
- icon: 'ph--sign-in--regular',
107
- testId: 'spacePlugin.joinSpace',
95
+ testId: 'spacePlugin.addSpace',
108
96
  disposition: 'item',
97
+ position: 'fallback',
109
98
  },
110
99
  },
111
100
  ],
@@ -114,7 +103,7 @@ export default (context: PluginsContext) => {
114
103
  // Create spaces group node.
115
104
  createExtension({
116
105
  id: `${SPACE_PLUGIN}/root`,
117
- disposition: 'hoist',
106
+ position: 'hoist',
118
107
  filter: (node): node is Node<null> => node.id === 'root',
119
108
  connector: () => [spacesNode],
120
109
  resolver: ({ id }) => (id === SPACES ? spacesNode : undefined),
@@ -195,6 +184,8 @@ export default (context: PluginsContext) => {
195
184
 
196
185
  if (space.state.get() === SpaceState.SPACE_INACTIVE) {
197
186
  return false;
187
+ } else if (space.state.get() !== SpaceState.SPACE_READY) {
188
+ return undefined;
198
189
  } else {
199
190
  const state = context.requestCapability(SpaceCapabilities.State);
200
191
  return constructSpaceNode({
@@ -250,9 +241,9 @@ export default (context: PluginsContext) => {
250
241
 
251
242
  return collection.objects
252
243
  .map((object) => object.target)
253
- .filter(nonNullable)
244
+ .filter(isNonNullable)
254
245
  .map((object) => createObjectNode({ object, space, resolve, navigable: state.navigableCollections }))
255
- .filter(nonNullable);
246
+ .filter(isNonNullable);
256
247
  },
257
248
  }),
258
249
 
@@ -271,9 +262,9 @@ export default (context: PluginsContext) => {
271
262
 
272
263
  return collection.objects
273
264
  .map((object) => object.target)
274
- .filter(nonNullable)
265
+ .filter(isNonNullable)
275
266
  .map((object) => createObjectNode({ object, space, resolve, navigable: state.navigableCollections }))
276
- .filter(nonNullable);
267
+ .filter(isNonNullable);
277
268
  },
278
269
  resolver: ({ id }) => {
279
270
  if (id.length !== FQ_ID_LENGTH) {
@@ -324,69 +315,5 @@ export default (context: PluginsContext) => {
324
315
  return constructObjectActions({ node, dispatch, navigable: state.navigableCollections });
325
316
  },
326
317
  }),
327
-
328
- // Create nodes for object settings.
329
- createExtension({
330
- id: `${SPACE_PLUGIN}/settings-for-subject`,
331
- resolver: ({ id }) => {
332
- // TODO(Zan): Find util (or make one).
333
- if (!id.endsWith('~settings')) {
334
- return;
335
- }
336
-
337
- const type = 'orphan-settings-for-subject';
338
- const icon = 'ph--gear--regular';
339
-
340
- const [subjectId] = id.split('~');
341
- const { spaceId, objectId } = parseId(subjectId);
342
- const client = context.requestCapability(ClientCapabilities.Client);
343
- const spaces = toSignal(
344
- (onChange) => client.spaces.subscribe(() => onChange()).unsubscribe,
345
- () => client.spaces.get(),
346
- );
347
- const space = spaces?.find((space) => space.id === spaceId && space.state.get() === SpaceState.SPACE_READY);
348
- if (!objectId) {
349
- const label = space
350
- ? space.properties.name || ['unnamed space label', { ns: SPACE_PLUGIN }]
351
- : ['unnamed object settings label', { ns: SPACE_PLUGIN }];
352
-
353
- // TODO(wittjosiah): Support comments for arbitrary subjects.
354
- // This is to ensure that the comments panel is not stuck on an old object.
355
- return {
356
- id,
357
- type,
358
- data: null,
359
- properties: {
360
- icon,
361
- label,
362
- showResolvedThreads: false,
363
- object: null,
364
- space,
365
- },
366
- };
367
- }
368
-
369
- const [object] = memoizeQuery(space, { id: objectId });
370
- if (!object || !subjectId) {
371
- return;
372
- }
373
-
374
- const meta = resolve(getTypename(object) ?? '');
375
- const label = meta.label?.(object) ||
376
- object.name ||
377
- meta.placeholder || ['unnamed object settings label', { ns: SPACE_PLUGIN }];
378
-
379
- return {
380
- id,
381
- type,
382
- data: null,
383
- properties: {
384
- icon,
385
- label,
386
- object,
387
- },
388
- };
389
- },
390
- }),
391
318
  ]);
392
319
  };
@@ -2,15 +2,20 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { defineCapability } from '@dxos/app-framework';
5
+ import { defineCapability, type Label } from '@dxos/app-framework';
6
6
  import { type DeepReadonly } from '@dxos/util';
7
7
 
8
8
  import { SPACE_PLUGIN } from '../meta';
9
- import { type PluginState } from '../types';
9
+ import { type ObjectForm, type PluginState } from '../types';
10
10
 
11
11
  export namespace SpaceCapabilities {
12
12
  export const State = defineCapability<DeepReadonly<PluginState>>(`${SPACE_PLUGIN}/capability/state`);
13
13
  export const MutableState = defineCapability<PluginState>(`${SPACE_PLUGIN}/capability/state`);
14
+
15
+ export type SpaceSettingsPanel = { id: string; label: Label };
16
+ export const SettingsPanel = defineCapability<SpaceSettingsPanel>(`${SPACE_PLUGIN}/capability/settings-panel`);
17
+
18
+ export const ObjectForm = defineCapability<ObjectForm<any>>(`${SPACE_PLUGIN}/capability/object-form`);
14
19
  }
15
20
 
16
21
  // TODO(wittjosiah): Factor out.
@@ -10,6 +10,7 @@ export const IdentityCreated = lazy(() => import('./identity-created'));
10
10
  export const IntentResolver = lazy(() => import('./intent-resolver'));
11
11
  export const ReactRoot = lazy(() => import('./react-root'));
12
12
  export const ReactSurface = lazy(() => import('./react-surface'));
13
+ export const Schema = lazy(() => import('./schema'));
13
14
  export const SpaceSettings = lazy(() => import('./settings'));
14
15
  export const SpaceState = lazy(() => import('./state'));
15
16
  export const SpacesReady = lazy(() => import('./spaces-ready'));