@dxos/plugin-space 0.8.4-staging.60fe92afc8 → 0.9.1-main.c7dcc2e112

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 (368) hide show
  1. package/dist/lib/neutral/{CollectionArticle-S3OF5KJ7.mjs → CollectionArticle-BMH7SZ7Q.mjs} +9 -12
  2. package/dist/lib/neutral/CollectionArticle-BMH7SZ7Q.mjs.map +7 -0
  3. package/dist/lib/neutral/{CollectionSection-A5WRHE5Z.mjs → CollectionSection-BLYTGOKH.mjs} +2 -2
  4. package/dist/lib/neutral/{CollectionSection-A5WRHE5Z.mjs.map → CollectionSection-BLYTGOKH.mjs.map} +3 -3
  5. package/dist/lib/neutral/{CreateObjectDialog-66R3K6I3.mjs → CreateObjectDialog-4VMOUKM7.mjs} +10 -10
  6. package/dist/lib/neutral/CreateObjectDialog-4VMOUKM7.mjs.map +7 -0
  7. package/dist/lib/neutral/{CreateSpaceDialog-CDGSEIJB.mjs → CreateSpaceDialog-WWNUTLVK.mjs} +6 -6
  8. package/dist/lib/neutral/CreateSpaceDialog-WWNUTLVK.mjs.map +7 -0
  9. package/dist/lib/neutral/{ImportSpaceDialog-7GKV4OTF.mjs → ImportSpaceDialog-CSSRTFAO.mjs} +4 -4
  10. package/dist/lib/neutral/ImportSpaceDialog-CSSRTFAO.mjs.map +7 -0
  11. package/dist/lib/neutral/{InlineSyncStatus-TBJKZCH7.mjs → InlineSyncStatus-UOUTAPCU.mjs} +4 -4
  12. package/dist/lib/neutral/InlineSyncStatus-UOUTAPCU.mjs.map +7 -0
  13. package/dist/lib/neutral/{JoinDialog-SSFKRFTJ.mjs → JoinDialog-QZGNRJ4P.mjs} +16 -9
  14. package/dist/lib/neutral/JoinDialog-QZGNRJ4P.mjs.map +7 -0
  15. package/dist/lib/neutral/{MembersContainer-KMCQDWCS.mjs → MembersContainer-OWCAMBKS.mjs} +5 -5
  16. package/dist/lib/neutral/MembersContainer-OWCAMBKS.mjs.map +7 -0
  17. package/dist/lib/neutral/{MenuFooter-5JT7V5FZ.mjs → MenuFooter-QCNFUIAO.mjs} +6 -6
  18. package/dist/lib/neutral/MenuFooter-QCNFUIAO.mjs.map +7 -0
  19. package/dist/lib/neutral/{ObjectCardStack-IXNU3HEN.mjs → ObjectCardStack-DHVDRNRK.mjs} +4 -4
  20. package/dist/lib/neutral/ObjectCardStack-DHVDRNRK.mjs.map +7 -0
  21. package/dist/lib/neutral/RecordArticle-JSORXRAA.mjs +102 -0
  22. package/dist/lib/neutral/RecordArticle-JSORXRAA.mjs.map +7 -0
  23. package/dist/lib/neutral/{RelatedArticle-YDNGUDAJ.mjs → RelatedArticle-YRCRBIYU.mjs} +11 -9
  24. package/dist/lib/neutral/RelatedArticle-YRCRBIYU.mjs.map +7 -0
  25. package/dist/lib/neutral/RenamePopover-XBZAKNM7.mjs +96 -0
  26. package/dist/lib/neutral/RenamePopover-XBZAKNM7.mjs.map +7 -0
  27. package/dist/lib/neutral/{SchemaContainer-Q4BP6X2M.mjs → SchemaContainer-2NK5YB5O.mjs} +2 -2
  28. package/dist/lib/neutral/SchemaContainer-2NK5YB5O.mjs.map +7 -0
  29. package/dist/lib/neutral/{SmallPresenceLive-GUF4WLUC.mjs → SmallPresenceLive-L4H7WJOA.mjs} +2 -2
  30. package/dist/lib/neutral/SpaceHomeArticle-ZV7EERLS.mjs +78 -0
  31. package/dist/lib/neutral/SpaceHomeArticle-ZV7EERLS.mjs.map +7 -0
  32. package/dist/lib/neutral/SpaceHomeRecent-ZR4LIIUD.mjs +83 -0
  33. package/dist/lib/neutral/SpaceHomeRecent-ZR4LIIUD.mjs.map +7 -0
  34. package/dist/lib/neutral/SpacePlugin.mjs +1 -1
  35. package/dist/lib/neutral/SpacePlugin.node.mjs +4 -4
  36. package/dist/lib/neutral/SpacePlugin.node.mjs.map +3 -3
  37. package/dist/lib/neutral/{SpacePresence-ACEXUS3N.mjs → SpacePresence-PDTEDHDE.mjs} +2 -2
  38. package/dist/lib/neutral/{SpaceSettings-YAHBOY5T.mjs → SpaceSettings-IVTCSLNT.mjs} +6 -6
  39. package/dist/lib/neutral/SpaceSettings-IVTCSLNT.mjs.map +7 -0
  40. package/dist/lib/neutral/{SpaceSettingsContainer-IB34TEOB.mjs → SpaceSettingsContainer-QAFQ4LWC.mjs} +8 -8
  41. package/dist/lib/neutral/SpaceSettingsContainer-QAFQ4LWC.mjs.map +7 -0
  42. package/dist/lib/neutral/{SyncStatus-CWOXWDDZ.mjs → SyncStatus-J7CHLO5O.mjs} +3 -3
  43. package/dist/lib/neutral/SyncStatus-J7CHLO5O.mjs.map +7 -0
  44. package/dist/lib/neutral/{add-object-QYOMCBJA.mjs → add-object-S64XELC3.mjs} +10 -10
  45. package/dist/lib/neutral/add-object-S64XELC3.mjs.map +7 -0
  46. package/dist/lib/neutral/{add-relation-HV3VCMJG.mjs → add-relation-GWSE42BU.mjs} +3 -3
  47. package/dist/lib/neutral/{add-type-CZVKSEIW.mjs → add-type-C3KYE6PI.mjs} +3 -3
  48. package/dist/lib/neutral/{app-graph-builder-SQGCUCDO.mjs → app-graph-builder-TMAD2ZTH.mjs} +128 -71
  49. package/dist/lib/neutral/app-graph-builder-TMAD2ZTH.mjs.map +7 -0
  50. package/dist/lib/neutral/capabilities/index.mjs +13 -15
  51. package/dist/lib/neutral/capabilities/index.mjs.map +3 -3
  52. package/dist/lib/neutral/capabilities/node.mjs +2 -2
  53. package/dist/lib/neutral/{chunk-EEXRKYOD.mjs → chunk-2LTGSUGQ.mjs} +2 -2
  54. package/dist/lib/neutral/{chunk-EEXRKYOD.mjs.map → chunk-2LTGSUGQ.mjs.map} +2 -2
  55. package/dist/lib/neutral/chunk-2RPQHHD7.mjs +17 -0
  56. package/dist/lib/neutral/chunk-2RPQHHD7.mjs.map +7 -0
  57. package/dist/lib/neutral/chunk-5ZZS3KMK.mjs +46 -0
  58. package/dist/lib/neutral/chunk-5ZZS3KMK.mjs.map +7 -0
  59. package/dist/lib/neutral/{chunk-K34BPPQE.mjs → chunk-DSYEB2UN.mjs} +29 -17
  60. package/dist/lib/neutral/chunk-DSYEB2UN.mjs.map +7 -0
  61. package/dist/lib/neutral/{chunk-YY62663T.mjs → chunk-F2VJ6VBV.mjs} +3 -3
  62. package/dist/lib/neutral/chunk-F2VJ6VBV.mjs.map +7 -0
  63. package/dist/lib/neutral/{chunk-JHZGRYGS.mjs → chunk-G2KHP7FX.mjs} +2 -2
  64. package/dist/lib/neutral/{chunk-JHZGRYGS.mjs.map → chunk-G2KHP7FX.mjs.map} +2 -2
  65. package/dist/lib/neutral/chunk-I5JXVBXX.mjs +8 -0
  66. package/dist/lib/neutral/{chunk-BBQR23DW.mjs → chunk-LY6XK5MV.mjs} +105 -128
  67. package/dist/lib/neutral/chunk-LY6XK5MV.mjs.map +7 -0
  68. package/dist/lib/neutral/{chunk-7WUJENBF.mjs → chunk-PSCIOT7Q.mjs} +4 -4
  69. package/dist/lib/neutral/chunk-PSCIOT7Q.mjs.map +7 -0
  70. package/dist/lib/neutral/{close-FGQN37PK.mjs → close-YZHFYPUN.mjs} +3 -3
  71. package/dist/lib/neutral/components/index.mjs +7 -7
  72. package/dist/lib/neutral/components/index.mjs.map +3 -3
  73. package/dist/lib/neutral/containers/index.mjs +23 -21
  74. package/dist/lib/neutral/containers/index.mjs.map +3 -3
  75. package/dist/lib/neutral/{create-EPIFSRJA.mjs → create-XKU2W6QC.mjs} +6 -6
  76. package/dist/lib/neutral/create-XKU2W6QC.mjs.map +7 -0
  77. package/dist/lib/neutral/{delete-LIA5M3WI.mjs → delete-EFM7CAVO.mjs} +3 -3
  78. package/dist/lib/neutral/{delete-field-ZIGFXFHY.mjs → delete-field-ONAPFFO5.mjs} +3 -3
  79. package/dist/lib/neutral/{duplicate-object-X37FM6PW.mjs → duplicate-object-OJRPFV5I.mjs} +3 -3
  80. package/dist/lib/neutral/{export-space-VWJHVXWF.mjs → export-space-M5RNVUQX.mjs} +3 -3
  81. package/dist/lib/neutral/{get-share-link-3LEA5FSK.mjs → get-share-link-FUQBJPSQ.mjs} +4 -4
  82. package/dist/lib/neutral/hooks/index.mjs +16 -4
  83. package/dist/lib/neutral/hooks/index.mjs.map +3 -3
  84. package/dist/lib/neutral/{identity-created-57RML5XT.mjs → identity-created-QMV4DANW.mjs} +4 -4
  85. package/dist/lib/neutral/identity-created-QMV4DANW.mjs.map +7 -0
  86. package/dist/lib/neutral/{import-space-Y5L3QE3C.mjs → import-space-L3AUIARM.mjs} +3 -3
  87. package/dist/lib/neutral/index.mjs +12 -6
  88. package/dist/lib/neutral/{join-Z5K4OAIG.mjs → join-VY3QYBU7.mjs} +4 -4
  89. package/dist/lib/neutral/meta.json +1 -1
  90. package/dist/lib/neutral/meta.mjs +1 -1
  91. package/dist/lib/neutral/{migrate-G7I52UKD.mjs → migrate-WPUISBC4.mjs} +3 -3
  92. package/dist/lib/neutral/{navigation-handler-QQJYEMAS.mjs → navigation-handler-IKXZGMII.mjs} +4 -4
  93. package/dist/lib/neutral/{navigation-resolver-IFVQRCGU.mjs → navigation-resolver-VBPGMFCE.mjs} +7 -7
  94. package/dist/lib/neutral/navigation-resolver-VBPGMFCE.mjs.map +7 -0
  95. package/dist/lib/neutral/{open-CPWVZSI4.mjs → open-RRYULTSY.mjs} +3 -3
  96. package/dist/lib/neutral/{open-create-object-4LN4PR6N.mjs → open-create-object-BRUVFZSY.mjs} +4 -4
  97. package/dist/lib/neutral/{open-create-space-VPAW3F2T.mjs → open-create-space-ARLQWW65.mjs} +4 -4
  98. package/dist/lib/neutral/{open-import-space-VLQ5V55H.mjs → open-import-space-65H57JXX.mjs} +4 -4
  99. package/dist/lib/neutral/{open-members-BEXOSSBS.mjs → open-members-677P6KD3.mjs} +6 -6
  100. package/dist/lib/neutral/open-members-677P6KD3.mjs.map +7 -0
  101. package/dist/lib/neutral/{open-settings-RHDBW2K5.mjs → open-settings-PRBSGO6D.mjs} +6 -6
  102. package/dist/lib/neutral/open-settings-PRBSGO6D.mjs.map +7 -0
  103. package/dist/lib/neutral/operations/index.mjs +3 -3
  104. package/dist/lib/neutral/plugin.mjs +4 -4
  105. package/dist/lib/neutral/{react-root-2DJPZQT4.mjs → react-root-YLYRCSAZ.mjs} +2 -2
  106. package/dist/lib/neutral/{react-root-2DJPZQT4.mjs.map → react-root-YLYRCSAZ.mjs.map} +3 -3
  107. package/dist/lib/neutral/{react-surface-LYCTOQLY.mjs → react-surface-5EQ6X4CL.mjs} +48 -70
  108. package/dist/lib/neutral/react-surface-5EQ6X4CL.mjs.map +7 -0
  109. package/dist/lib/neutral/{remove-objects-OWDMA4IF.mjs → remove-objects-PWJJI36V.mjs} +5 -5
  110. package/dist/lib/neutral/remove-objects-PWJJI36V.mjs.map +7 -0
  111. package/dist/lib/neutral/{rename-SR6BBSPU.mjs → rename-4727PKI4.mjs} +8 -7
  112. package/dist/lib/neutral/rename-4727PKI4.mjs.map +7 -0
  113. package/dist/lib/neutral/{rename-object-5H6E5AOX.mjs → rename-object-FXUAB5FN.mjs} +8 -7
  114. package/dist/lib/neutral/rename-object-FXUAB5FN.mjs.map +7 -0
  115. package/dist/lib/neutral/{repair-PSYRVSJ6.mjs → repair-HMH476U3.mjs} +3 -3
  116. package/dist/lib/neutral/repair-HMH476U3.mjs.map +7 -0
  117. package/dist/lib/neutral/{restore-field-UHDG2ZQM.mjs → restore-field-3ICSIHGA.mjs} +3 -3
  118. package/dist/lib/neutral/{restore-objects-2UD5P6OC.mjs → restore-objects-V2BTEWN3.mjs} +3 -3
  119. package/dist/lib/neutral/{settings-Q32EQCHX.mjs → settings-5IBSYBVU.mjs} +3 -3
  120. package/dist/lib/neutral/{settings-Q32EQCHX.mjs.map → settings-5IBSYBVU.mjs.map} +3 -3
  121. package/dist/lib/neutral/{share-5Y4NZA75.mjs → share-ZOZPAUGI.mjs} +3 -3
  122. package/dist/lib/neutral/{snapshot-H3HKOFVP.mjs → snapshot-ZC5PU55W.mjs} +3 -3
  123. package/dist/lib/neutral/{spaces-ready-GBF72QJH.mjs → spaces-ready-EXPCJD4N.mjs} +11 -11
  124. package/dist/lib/neutral/spaces-ready-EXPCJD4N.mjs.map +7 -0
  125. package/dist/lib/neutral/{state-DPBOZRAW.mjs → state-KMH2NUAL.mjs} +2 -2
  126. package/dist/lib/neutral/state-KMH2NUAL.mjs.map +7 -0
  127. package/dist/lib/neutral/testing.mjs +1 -1
  128. package/dist/lib/neutral/translations.mjs +4 -2
  129. package/dist/lib/neutral/translations.mjs.map +3 -3
  130. package/dist/lib/neutral/types/index.mjs +9 -3
  131. package/dist/lib/neutral/{undo-mappings-OBRQOYN4.mjs → undo-mappings-P43EAUGI.mjs} +5 -5
  132. package/dist/lib/neutral/{undo-mappings-OBRQOYN4.mjs.map → undo-mappings-P43EAUGI.mjs.map} +3 -3
  133. package/dist/lib/neutral/{wait-for-object-3TAWUWTP.mjs → wait-for-object-WURK2SLQ.mjs} +3 -3
  134. package/dist/types/dx.config.d.ts +28 -0
  135. package/dist/types/dx.config.d.ts.map +1 -0
  136. package/dist/types/src/SpacePlugin.d.ts.map +1 -1
  137. package/dist/types/src/capabilities/app-graph-builder/extensions/collections.d.ts +12 -0
  138. package/dist/types/src/capabilities/app-graph-builder/extensions/collections.d.ts.map +1 -1
  139. package/dist/types/src/capabilities/app-graph-builder/extensions/database.d.ts.map +1 -1
  140. package/dist/types/src/capabilities/app-graph-builder/extensions/shared.d.ts +0 -1
  141. package/dist/types/src/capabilities/app-graph-builder/extensions/shared.d.ts.map +1 -1
  142. package/dist/types/src/capabilities/app-graph-builder/extensions/spaces.d.ts +13 -1
  143. package/dist/types/src/capabilities/app-graph-builder/extensions/spaces.d.ts.map +1 -1
  144. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +1 -1
  145. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +1 -1
  146. package/dist/types/src/capabilities/index.d.ts +10 -54
  147. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  148. package/dist/types/src/capabilities/navigation-handler/index.d.ts +1 -1
  149. package/dist/types/src/capabilities/navigation-handler/index.d.ts.map +1 -1
  150. package/dist/types/src/capabilities/navigation-resolver.d.ts.map +1 -1
  151. package/dist/types/src/capabilities/node.d.ts +3 -33
  152. package/dist/types/src/capabilities/node.d.ts.map +1 -1
  153. package/dist/types/src/capabilities/react-surface.d.ts +2 -2
  154. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  155. package/dist/types/src/commands/database/add.d.ts.map +1 -1
  156. package/dist/types/src/commands/queue/query.d.ts.map +1 -1
  157. package/dist/types/src/components/SpaceSettings/SpaceSettings.stories.d.ts +20 -0
  158. package/dist/types/src/components/SpaceSettings/SpaceSettings.stories.d.ts.map +1 -1
  159. package/dist/types/src/constants.d.ts +1 -2
  160. package/dist/types/src/constants.d.ts.map +1 -1
  161. package/dist/types/src/containers/CreateObjectDialog/CreateObjectDialog.d.ts.map +1 -1
  162. package/dist/types/src/containers/CreateObjectDialog/CreateObjectDialog.stories.d.ts +20 -0
  163. package/dist/types/src/containers/CreateObjectDialog/CreateObjectDialog.stories.d.ts.map +1 -1
  164. package/dist/types/src/containers/CreateSpaceDialog/CreateSpaceDialog.d.ts.map +1 -1
  165. package/dist/types/src/containers/CreateSpaceDialog/CreateSpaceDialog.stories.d.ts +20 -0
  166. package/dist/types/src/containers/CreateSpaceDialog/CreateSpaceDialog.stories.d.ts.map +1 -1
  167. package/dist/types/src/containers/JoinDialog/JoinDialog.d.ts.map +1 -1
  168. package/dist/types/src/containers/JoinDialog/JoinDialog.stories.d.ts +20 -0
  169. package/dist/types/src/containers/JoinDialog/JoinDialog.stories.d.ts.map +1 -1
  170. package/dist/types/src/containers/ObjectProperties/ObjectProperties.d.ts +1 -1
  171. package/dist/types/src/containers/RecordArticle/RecordArticle.d.ts.map +1 -1
  172. package/dist/types/src/containers/RenamePopover/RenamePopover.d.ts +12 -0
  173. package/dist/types/src/containers/RenamePopover/RenamePopover.d.ts.map +1 -0
  174. package/dist/types/src/containers/RenamePopover/index.d.ts +3 -0
  175. package/dist/types/src/containers/RenamePopover/index.d.ts.map +1 -0
  176. package/dist/types/src/containers/SpaceHomeArticle/SpaceHomeArticle.d.ts +15 -0
  177. package/dist/types/src/containers/SpaceHomeArticle/SpaceHomeArticle.d.ts.map +1 -0
  178. package/dist/types/src/containers/SpaceHomeArticle/index.d.ts +2 -0
  179. package/dist/types/src/containers/SpaceHomeArticle/index.d.ts.map +1 -0
  180. package/dist/types/src/containers/SpaceHomeRecent/SpaceHomeRecent.d.ts +22 -0
  181. package/dist/types/src/containers/SpaceHomeRecent/SpaceHomeRecent.d.ts.map +1 -0
  182. package/dist/types/src/containers/SpaceHomeRecent/index.d.ts +2 -0
  183. package/dist/types/src/containers/SpaceHomeRecent/index.d.ts.map +1 -0
  184. package/dist/types/src/containers/SpacePresence/SpacePresence.stories.d.ts +20 -0
  185. package/dist/types/src/containers/SpacePresence/SpacePresence.stories.d.ts.map +1 -1
  186. package/dist/types/src/containers/SpaceSettingsContainer/SpaceSettingsContainer.stories.d.ts +20 -0
  187. package/dist/types/src/containers/SpaceSettingsContainer/SpaceSettingsContainer.stories.d.ts.map +1 -1
  188. package/dist/types/src/containers/SyncStatus/SyncStatus.stories.d.ts +20 -0
  189. package/dist/types/src/containers/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
  190. package/dist/types/src/containers/index.d.ts +3 -2
  191. package/dist/types/src/containers/index.d.ts.map +1 -1
  192. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts.map +1 -1
  193. package/dist/types/src/hooks/useRelatedObjects.d.ts.map +1 -1
  194. package/dist/types/src/meta.d.ts +28 -2
  195. package/dist/types/src/meta.d.ts.map +1 -1
  196. package/dist/types/src/operations/add-object.d.ts.map +1 -1
  197. package/dist/types/src/operations/helpers.d.ts.map +1 -1
  198. package/dist/types/src/operations/remove-objects.d.ts.map +1 -1
  199. package/dist/types/src/operations/rename-object.d.ts.map +1 -1
  200. package/dist/types/src/operations/rename.d.ts.map +1 -1
  201. package/dist/types/src/translations.d.ts +20 -0
  202. package/dist/types/src/translations.d.ts.map +1 -1
  203. package/dist/types/src/types/capabilities.d.ts.map +1 -1
  204. package/dist/types/src/types/events.d.ts.map +1 -1
  205. package/dist/types/src/types/form.d.ts +7 -1
  206. package/dist/types/src/types/form.d.ts.map +1 -1
  207. package/dist/types/src/types/index.d.ts +1 -0
  208. package/dist/types/src/types/index.d.ts.map +1 -1
  209. package/dist/types/src/types/surface.d.ts +26 -0
  210. package/dist/types/src/types/surface.d.ts.map +1 -0
  211. package/dist/types/src/types/types.d.ts +7 -0
  212. package/dist/types/src/types/types.d.ts.map +1 -1
  213. package/dist/types/src/util.d.ts.map +1 -1
  214. package/dist/types/tsconfig.tsbuildinfo +1 -1
  215. package/dx.config.ts +35 -0
  216. package/package.json +51 -50
  217. package/src/SpacePlugin.test.ts +1 -1
  218. package/src/SpacePlugin.ts +1 -7
  219. package/src/capabilities/app-graph-builder/extensions/collections.ts +44 -24
  220. package/src/capabilities/app-graph-builder/extensions/companions.ts +3 -3
  221. package/src/capabilities/app-graph-builder/extensions/database.ts +17 -14
  222. package/src/capabilities/app-graph-builder/extensions/settings.ts +9 -9
  223. package/src/capabilities/app-graph-builder/extensions/shared.ts +5 -20
  224. package/src/capabilities/app-graph-builder/extensions/spaces.ts +49 -26
  225. package/src/capabilities/identity-created.ts +3 -3
  226. package/src/capabilities/index.ts +0 -1
  227. package/src/capabilities/navigation-resolver.ts +6 -13
  228. package/src/capabilities/react-root.tsx +1 -1
  229. package/src/capabilities/react-surface.tsx +58 -88
  230. package/src/capabilities/repair.ts +4 -2
  231. package/src/capabilities/settings.ts +2 -2
  232. package/src/capabilities/spaces-ready.ts +8 -15
  233. package/src/capabilities/state.ts +1 -1
  234. package/src/capabilities/undo-mappings.ts +3 -3
  235. package/src/commands/database/add.ts +4 -2
  236. package/src/commands/queue/query.ts +4 -3
  237. package/src/components/AwaitingObject/AwaitingObject.tsx +1 -1
  238. package/src/components/CreateObjectPanel/CreateObjectPanel.tsx +2 -2
  239. package/src/components/ForeignKeys/ForeignKeys.tsx +1 -1
  240. package/src/components/SpaceSettings/SpaceSettings.tsx +3 -3
  241. package/src/constants.ts +5 -6
  242. package/src/containers/CollectionArticle/CollectionArticle.tsx +10 -6
  243. package/src/containers/CollectionSection/CollectionSection.tsx +1 -1
  244. package/src/containers/CreateObjectDialog/CreateObjectDialog.tsx +10 -7
  245. package/src/containers/CreateSpaceDialog/CreateSpaceDialog.tsx +5 -5
  246. package/src/containers/ImportSpaceDialog/ImportSpaceDialog.tsx +3 -3
  247. package/src/containers/InlineSyncStatus/InlineSyncStatus.tsx +3 -3
  248. package/src/containers/JoinDialog/JoinDialog.tsx +13 -11
  249. package/src/containers/MembersContainer/MembersContainer.tsx +5 -5
  250. package/src/containers/MenuFooter/MenuFooter.tsx +3 -3
  251. package/src/containers/ObjectCardStack/ObjectCardStack.tsx +3 -3
  252. package/src/containers/RecordArticle/RecordArticle.tsx +67 -8
  253. package/src/containers/RelatedArticle/RelatedArticle.tsx +17 -13
  254. package/src/containers/RenamePopover/RenamePopover.tsx +112 -0
  255. package/src/containers/RenamePopover/index.ts +6 -0
  256. package/src/containers/SchemaContainer/SchemaContainer.tsx +1 -1
  257. package/src/containers/SpaceHomeArticle/SpaceHomeArticle.tsx +100 -0
  258. package/src/containers/SpaceHomeArticle/index.ts +5 -0
  259. package/src/containers/SpaceHomeRecent/SpaceHomeRecent.tsx +101 -0
  260. package/src/containers/SpaceHomeRecent/index.ts +5 -0
  261. package/src/containers/SpacePresence/SpacePresence.tsx +1 -1
  262. package/src/containers/SpaceSettingsContainer/SpaceSettingsContainer.tsx +7 -7
  263. package/src/containers/SyncStatus/SyncStatus.tsx +2 -2
  264. package/src/containers/index.ts +3 -2
  265. package/src/hooks/useInputSurfaceLookup.tsx +3 -2
  266. package/src/hooks/useRelatedObjects.ts +13 -1
  267. package/src/meta.ts +2 -27
  268. package/src/operations/add-object.ts +7 -14
  269. package/src/operations/create.ts +2 -2
  270. package/src/operations/definitions.ts +1 -1
  271. package/src/operations/helpers.ts +1 -1
  272. package/src/operations/open-members.ts +3 -3
  273. package/src/operations/open-settings.ts +3 -3
  274. package/src/operations/remove-objects.ts +3 -2
  275. package/src/operations/rename-object.ts +3 -2
  276. package/src/operations/rename.ts +3 -2
  277. package/src/translations.ts +3 -1
  278. package/src/types/capabilities.ts +8 -8
  279. package/src/types/events.ts +5 -5
  280. package/src/types/form.ts +5 -1
  281. package/src/types/index.ts +1 -0
  282. package/src/types/surface.ts +31 -0
  283. package/src/types/types.ts +9 -1
  284. package/src/util.ts +3 -3
  285. package/dist/lib/neutral/CollectionArticle-S3OF5KJ7.mjs.map +0 -7
  286. package/dist/lib/neutral/CreateObjectDialog-66R3K6I3.mjs.map +0 -7
  287. package/dist/lib/neutral/CreateSpaceDialog-CDGSEIJB.mjs.map +0 -7
  288. package/dist/lib/neutral/EntityRenamePopover-MYSW262F.mjs +0 -59
  289. package/dist/lib/neutral/EntityRenamePopover-MYSW262F.mjs.map +0 -7
  290. package/dist/lib/neutral/ImportSpaceDialog-7GKV4OTF.mjs.map +0 -7
  291. package/dist/lib/neutral/InlineSyncStatus-TBJKZCH7.mjs.map +0 -7
  292. package/dist/lib/neutral/JoinDialog-SSFKRFTJ.mjs.map +0 -7
  293. package/dist/lib/neutral/MembersContainer-KMCQDWCS.mjs.map +0 -7
  294. package/dist/lib/neutral/MenuFooter-5JT7V5FZ.mjs.map +0 -7
  295. package/dist/lib/neutral/ObjectCardStack-IXNU3HEN.mjs.map +0 -7
  296. package/dist/lib/neutral/RecordArticle-QWGH25NT.mjs +0 -51
  297. package/dist/lib/neutral/RecordArticle-QWGH25NT.mjs.map +0 -7
  298. package/dist/lib/neutral/RelatedArticle-YDNGUDAJ.mjs.map +0 -7
  299. package/dist/lib/neutral/SchemaContainer-Q4BP6X2M.mjs.map +0 -7
  300. package/dist/lib/neutral/SpaceRenamePopover-KFWL4CTJ.mjs +0 -56
  301. package/dist/lib/neutral/SpaceRenamePopover-KFWL4CTJ.mjs.map +0 -7
  302. package/dist/lib/neutral/SpaceSettings-YAHBOY5T.mjs.map +0 -7
  303. package/dist/lib/neutral/SpaceSettingsContainer-IB34TEOB.mjs.map +0 -7
  304. package/dist/lib/neutral/SyncStatus-CWOXWDDZ.mjs.map +0 -7
  305. package/dist/lib/neutral/add-object-QYOMCBJA.mjs.map +0 -7
  306. package/dist/lib/neutral/app-graph-builder-SQGCUCDO.mjs.map +0 -7
  307. package/dist/lib/neutral/app-graph-serializer-IBPPU5VR.mjs +0 -81
  308. package/dist/lib/neutral/app-graph-serializer-IBPPU5VR.mjs.map +0 -7
  309. package/dist/lib/neutral/chunk-4RTSNTDC.mjs +0 -37
  310. package/dist/lib/neutral/chunk-4RTSNTDC.mjs.map +0 -7
  311. package/dist/lib/neutral/chunk-7WUJENBF.mjs.map +0 -7
  312. package/dist/lib/neutral/chunk-B7DBIARR.mjs +0 -8
  313. package/dist/lib/neutral/chunk-BBQR23DW.mjs.map +0 -7
  314. package/dist/lib/neutral/chunk-F5MESIRH.mjs +0 -19
  315. package/dist/lib/neutral/chunk-F5MESIRH.mjs.map +0 -7
  316. package/dist/lib/neutral/chunk-K34BPPQE.mjs.map +0 -7
  317. package/dist/lib/neutral/chunk-YY62663T.mjs.map +0 -7
  318. package/dist/lib/neutral/create-EPIFSRJA.mjs.map +0 -7
  319. package/dist/lib/neutral/identity-created-57RML5XT.mjs.map +0 -7
  320. package/dist/lib/neutral/navigation-resolver-IFVQRCGU.mjs.map +0 -7
  321. package/dist/lib/neutral/open-members-BEXOSSBS.mjs.map +0 -7
  322. package/dist/lib/neutral/open-settings-RHDBW2K5.mjs.map +0 -7
  323. package/dist/lib/neutral/react-surface-LYCTOQLY.mjs.map +0 -7
  324. package/dist/lib/neutral/remove-objects-OWDMA4IF.mjs.map +0 -7
  325. package/dist/lib/neutral/rename-SR6BBSPU.mjs.map +0 -7
  326. package/dist/lib/neutral/rename-object-5H6E5AOX.mjs.map +0 -7
  327. package/dist/lib/neutral/repair-PSYRVSJ6.mjs.map +0 -7
  328. package/dist/lib/neutral/spaces-ready-GBF72QJH.mjs.map +0 -7
  329. package/dist/lib/neutral/state-DPBOZRAW.mjs.map +0 -7
  330. package/dist/types/src/capabilities/app-graph-serializer.d.ts +0 -5
  331. package/dist/types/src/capabilities/app-graph-serializer.d.ts.map +0 -1
  332. package/dist/types/src/containers/EntityRenamePopover/EntityRenamePopover.d.ts +0 -7
  333. package/dist/types/src/containers/EntityRenamePopover/EntityRenamePopover.d.ts.map +0 -1
  334. package/dist/types/src/containers/EntityRenamePopover/index.d.ts +0 -2
  335. package/dist/types/src/containers/EntityRenamePopover/index.d.ts.map +0 -1
  336. package/dist/types/src/containers/SpaceRenamePopover/SpaceRenamePopover.d.ts +0 -7
  337. package/dist/types/src/containers/SpaceRenamePopover/SpaceRenamePopover.d.ts.map +0 -1
  338. package/dist/types/src/containers/SpaceRenamePopover/index.d.ts +0 -2
  339. package/dist/types/src/containers/SpaceRenamePopover/index.d.ts.map +0 -1
  340. package/src/capabilities/app-graph-serializer.ts +0 -85
  341. package/src/containers/EntityRenamePopover/EntityRenamePopover.tsx +0 -52
  342. package/src/containers/EntityRenamePopover/index.ts +0 -5
  343. package/src/containers/SpaceRenamePopover/SpaceRenamePopover.tsx +0 -54
  344. package/src/containers/SpaceRenamePopover/index.ts +0 -5
  345. /package/dist/lib/neutral/{SmallPresenceLive-GUF4WLUC.mjs.map → SmallPresenceLive-L4H7WJOA.mjs.map} +0 -0
  346. /package/dist/lib/neutral/{SpacePresence-ACEXUS3N.mjs.map → SpacePresence-PDTEDHDE.mjs.map} +0 -0
  347. /package/dist/lib/neutral/{add-relation-HV3VCMJG.mjs.map → add-relation-GWSE42BU.mjs.map} +0 -0
  348. /package/dist/lib/neutral/{add-type-CZVKSEIW.mjs.map → add-type-C3KYE6PI.mjs.map} +0 -0
  349. /package/dist/lib/neutral/{chunk-B7DBIARR.mjs.map → chunk-I5JXVBXX.mjs.map} +0 -0
  350. /package/dist/lib/neutral/{close-FGQN37PK.mjs.map → close-YZHFYPUN.mjs.map} +0 -0
  351. /package/dist/lib/neutral/{delete-LIA5M3WI.mjs.map → delete-EFM7CAVO.mjs.map} +0 -0
  352. /package/dist/lib/neutral/{delete-field-ZIGFXFHY.mjs.map → delete-field-ONAPFFO5.mjs.map} +0 -0
  353. /package/dist/lib/neutral/{duplicate-object-X37FM6PW.mjs.map → duplicate-object-OJRPFV5I.mjs.map} +0 -0
  354. /package/dist/lib/neutral/{export-space-VWJHVXWF.mjs.map → export-space-M5RNVUQX.mjs.map} +0 -0
  355. /package/dist/lib/neutral/{get-share-link-3LEA5FSK.mjs.map → get-share-link-FUQBJPSQ.mjs.map} +0 -0
  356. /package/dist/lib/neutral/{import-space-Y5L3QE3C.mjs.map → import-space-L3AUIARM.mjs.map} +0 -0
  357. /package/dist/lib/neutral/{join-Z5K4OAIG.mjs.map → join-VY3QYBU7.mjs.map} +0 -0
  358. /package/dist/lib/neutral/{migrate-G7I52UKD.mjs.map → migrate-WPUISBC4.mjs.map} +0 -0
  359. /package/dist/lib/neutral/{navigation-handler-QQJYEMAS.mjs.map → navigation-handler-IKXZGMII.mjs.map} +0 -0
  360. /package/dist/lib/neutral/{open-CPWVZSI4.mjs.map → open-RRYULTSY.mjs.map} +0 -0
  361. /package/dist/lib/neutral/{open-create-object-4LN4PR6N.mjs.map → open-create-object-BRUVFZSY.mjs.map} +0 -0
  362. /package/dist/lib/neutral/{open-create-space-VPAW3F2T.mjs.map → open-create-space-ARLQWW65.mjs.map} +0 -0
  363. /package/dist/lib/neutral/{open-import-space-VLQ5V55H.mjs.map → open-import-space-65H57JXX.mjs.map} +0 -0
  364. /package/dist/lib/neutral/{restore-field-UHDG2ZQM.mjs.map → restore-field-3ICSIHGA.mjs.map} +0 -0
  365. /package/dist/lib/neutral/{restore-objects-2UD5P6OC.mjs.map → restore-objects-V2BTEWN3.mjs.map} +0 -0
  366. /package/dist/lib/neutral/{share-5Y4NZA75.mjs.map → share-ZOZPAUGI.mjs.map} +0 -0
  367. /package/dist/lib/neutral/{snapshot-H3HKOFVP.mjs.map → snapshot-ZC5PU55W.mjs.map} +0 -0
  368. /package/dist/lib/neutral/{wait-for-object-3TAWUWTP.mjs.map → wait-for-object-WURK2SLQ.mjs.map} +0 -0
package/dx.config.ts ADDED
@@ -0,0 +1,35 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { Config2 } from '@dxos/app-framework/config';
6
+ import { trim } from '@dxos/util';
7
+
8
+ export default Config2.make({
9
+ plugin: {
10
+ key: 'org.dxos.plugin.space',
11
+ name: 'Spaces',
12
+ author: 'DXOS',
13
+ description: trim`
14
+ SpacePlugin is the core workspace container for DXOS Composer. It owns the full lifecycle of
15
+ collaborative spaces — creating, joining, opening, closing, and resetting them — and manages
16
+ the membership and invitation system that controls who can access each space.
17
+
18
+ The plugin maintains an ordered app-graph of every space and its collections, wires navigation
19
+ so that opening a space or object updates the layout, and tracks real-time peer presence so
20
+ that the UI can show which collaborators are viewing each object.
21
+
22
+ Object and schema management sit at the heart of SpacePlugin: it registers the canonical DXOS
23
+ schema types (Person, Task, Project, Event, …), provides the create-object dialog that all
24
+ other plugins populate with their own types, and exposes operations for adding, removing,
25
+ restoring, duplicating, and serialising objects. Import/export of space archives and schema
26
+ migrations are also handled here.
27
+
28
+ A full set of undo-aware operations (RemoveObjects/RestoreObjects, DeleteField/RestoreField)
29
+ integrates with the process manager so that destructive edits can be reversed in one step.
30
+ `,
31
+ icon: { key: 'ph--planet--regular' },
32
+ spec: 'PLUGIN.mdl',
33
+ tags: ['system'],
34
+ },
35
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/plugin-space",
3
- "version": "0.8.4-staging.60fe92afc8",
3
+ "version": "0.9.1-main.c7dcc2e112",
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",
@@ -105,6 +105,7 @@
105
105
  "types": "dist/types/src/index.d.ts",
106
106
  "files": [
107
107
  "dist",
108
+ "dx.config.ts",
108
109
  "src",
109
110
  "PLUGIN.mdl"
110
111
  ],
@@ -114,46 +115,46 @@
114
115
  "@effect/cli": "0.75.2",
115
116
  "react-drag-drop-files": "^2.3.8",
116
117
  "react-qr-rounded": "^1.0.0",
117
- "@dxos/app-framework": "0.8.4-staging.60fe92afc8",
118
- "@dxos/app-toolkit": "0.8.4-staging.60fe92afc8",
119
- "@dxos/async": "0.8.4-staging.60fe92afc8",
120
- "@dxos/cli-util": "0.8.4-staging.60fe92afc8",
121
- "@dxos/client": "0.8.4-staging.60fe92afc8",
122
- "@dxos/compute": "0.8.4-staging.60fe92afc8",
123
- "@dxos/context": "0.8.4-staging.60fe92afc8",
124
- "@dxos/echo": "0.8.4-staging.60fe92afc8",
125
- "@dxos/display-name": "0.8.4-staging.60fe92afc8",
126
- "@dxos/echo-client": "0.8.4-staging.60fe92afc8",
127
- "@dxos/effect": "0.8.4-staging.60fe92afc8",
128
- "@dxos/invariant": "0.8.4-staging.60fe92afc8",
129
- "@dxos/keys": "0.8.4-staging.60fe92afc8",
130
- "@dxos/client-protocol": "0.8.4-staging.60fe92afc8",
131
- "@dxos/log": "0.8.4-staging.60fe92afc8",
132
- "@dxos/migrations": "0.8.4-staging.60fe92afc8",
133
- "@dxos/plugin-attention": "0.8.4-staging.60fe92afc8",
134
- "@dxos/plugin-client": "0.8.4-staging.60fe92afc8",
135
- "@dxos/plugin-graph": "0.8.4-staging.60fe92afc8",
136
- "@dxos/plugin-observability": "0.8.4-staging.60fe92afc8",
137
- "@dxos/plugin-settings": "0.8.4-staging.60fe92afc8",
138
- "@dxos/protocols": "0.8.4-staging.60fe92afc8",
139
- "@dxos/react-client": "0.8.4-staging.60fe92afc8",
140
- "@dxos/react-ui": "0.8.4-staging.60fe92afc8",
141
- "@dxos/plugin-status-bar": "0.8.4-staging.60fe92afc8",
142
- "@dxos/react-ui-attention": "0.8.4-staging.60fe92afc8",
143
- "@dxos/react-ui-components": "0.8.4-staging.60fe92afc8",
144
- "@dxos/react-ui-list": "0.8.4-staging.60fe92afc8",
145
- "@dxos/react-ui-masonry": "0.8.4-staging.60fe92afc8",
146
- "@dxos/react-ui-form": "0.8.4-staging.60fe92afc8",
147
- "@dxos/react-ui-mosaic": "0.8.4-staging.60fe92afc8",
148
- "@dxos/react-ui-menu": "0.8.4-staging.60fe92afc8",
149
- "@dxos/react-ui-pickers": "0.8.4-staging.60fe92afc8",
150
- "@dxos/react-ui-search": "0.8.4-staging.60fe92afc8",
151
- "@dxos/shell": "0.8.4-staging.60fe92afc8",
152
- "@dxos/schema": "0.8.4-staging.60fe92afc8",
153
- "@dxos/types": "0.8.4-staging.60fe92afc8",
154
- "@dxos/ui-types": "0.8.4-staging.60fe92afc8",
155
- "@dxos/ui-theme": "0.8.4-staging.60fe92afc8",
156
- "@dxos/util": "0.8.4-staging.60fe92afc8"
118
+ "@dxos/app-framework": "0.9.1-main.c7dcc2e112",
119
+ "@dxos/async": "0.9.1-main.c7dcc2e112",
120
+ "@dxos/app-toolkit": "0.9.1-main.c7dcc2e112",
121
+ "@dxos/cli-util": "0.9.1-main.c7dcc2e112",
122
+ "@dxos/client": "0.9.1-main.c7dcc2e112",
123
+ "@dxos/client-protocol": "0.9.1-main.c7dcc2e112",
124
+ "@dxos/context": "0.9.1-main.c7dcc2e112",
125
+ "@dxos/display-name": "0.9.1-main.c7dcc2e112",
126
+ "@dxos/compute": "0.9.1-main.c7dcc2e112",
127
+ "@dxos/echo": "0.9.1-main.c7dcc2e112",
128
+ "@dxos/effect": "0.9.1-main.c7dcc2e112",
129
+ "@dxos/invariant": "0.9.1-main.c7dcc2e112",
130
+ "@dxos/keys": "0.9.1-main.c7dcc2e112",
131
+ "@dxos/log": "0.9.1-main.c7dcc2e112",
132
+ "@dxos/plugin-graph": "0.9.1-main.c7dcc2e112",
133
+ "@dxos/echo-client": "0.9.1-main.c7dcc2e112",
134
+ "@dxos/migrations": "0.9.1-main.c7dcc2e112",
135
+ "@dxos/plugin-client": "0.9.1-main.c7dcc2e112",
136
+ "@dxos/plugin-settings": "0.9.1-main.c7dcc2e112",
137
+ "@dxos/plugin-status-bar": "0.9.1-main.c7dcc2e112",
138
+ "@dxos/plugin-observability": "0.9.1-main.c7dcc2e112",
139
+ "@dxos/react-client": "0.9.1-main.c7dcc2e112",
140
+ "@dxos/protocols": "0.9.1-main.c7dcc2e112",
141
+ "@dxos/react-ui": "0.9.1-main.c7dcc2e112",
142
+ "@dxos/react-ui-components": "0.9.1-main.c7dcc2e112",
143
+ "@dxos/react-ui-form": "0.9.1-main.c7dcc2e112",
144
+ "@dxos/react-ui-list": "0.9.1-main.c7dcc2e112",
145
+ "@dxos/react-ui-attention": "0.9.1-main.c7dcc2e112",
146
+ "@dxos/react-ui-menu": "0.9.1-main.c7dcc2e112",
147
+ "@dxos/react-ui-mosaic": "0.9.1-main.c7dcc2e112",
148
+ "@dxos/react-ui-masonry": "0.9.1-main.c7dcc2e112",
149
+ "@dxos/plugin-attention": "0.9.1-main.c7dcc2e112",
150
+ "@dxos/react-ui-pickers": "0.9.1-main.c7dcc2e112",
151
+ "@dxos/react-ui-search": "0.9.1-main.c7dcc2e112",
152
+ "@dxos/schema": "0.9.1-main.c7dcc2e112",
153
+ "@dxos/types": "0.9.1-main.c7dcc2e112",
154
+ "@dxos/shell": "0.9.1-main.c7dcc2e112",
155
+ "@dxos/ui-theme": "0.9.1-main.c7dcc2e112",
156
+ "@dxos/ui-types": "0.9.1-main.c7dcc2e112",
157
+ "@dxos/util": "0.9.1-main.c7dcc2e112"
157
158
  },
158
159
  "devDependencies": {
159
160
  "@atlaskit/pragmatic-drag-and-drop-hitbox": "1.1.0",
@@ -166,13 +167,13 @@
166
167
  "react": "~19.2.3",
167
168
  "react-dom": "~19.2.3",
168
169
  "vite": "^8.0.16",
169
- "@dxos/lit-ui": "0.8.4-staging.60fe92afc8",
170
- "@dxos/plugin-preview": "0.8.4-staging.60fe92afc8",
171
- "@dxos/plugin-testing": "0.8.4-staging.60fe92afc8",
172
- "@dxos/react-ui": "0.8.4-staging.60fe92afc8",
173
- "@dxos/random": "0.8.4-staging.60fe92afc8",
174
- "@dxos/ui-theme": "0.8.4-staging.60fe92afc8",
175
- "@dxos/storybook-utils": "0.8.4-staging.60fe92afc8"
170
+ "@dxos/lit-ui": "0.9.1-main.c7dcc2e112",
171
+ "@dxos/plugin-testing": "0.9.1-main.c7dcc2e112",
172
+ "@dxos/plugin-preview": "0.9.1-main.c7dcc2e112",
173
+ "@dxos/random": "0.9.1-main.c7dcc2e112",
174
+ "@dxos/storybook-utils": "0.9.1-main.c7dcc2e112",
175
+ "@dxos/ui-theme": "0.9.1-main.c7dcc2e112",
176
+ "@dxos/react-ui": "0.9.1-main.c7dcc2e112"
176
177
  },
177
178
  "peerDependencies": {
178
179
  "@effect-atom/atom-react": "^0.5.0",
@@ -180,8 +181,8 @@
180
181
  "effect": "3.21.3",
181
182
  "react": "~19.2.3",
182
183
  "react-dom": "~19.2.3",
183
- "@dxos/react-ui": "0.8.4-staging.60fe92afc8",
184
- "@dxos/ui-theme": "0.8.4-staging.60fe92afc8"
184
+ "@dxos/react-ui": "0.9.1-main.c7dcc2e112",
185
+ "@dxos/ui-theme": "0.9.1-main.c7dcc2e112"
185
186
  },
186
187
  "publishConfig": {
187
188
  "access": "public"
@@ -11,7 +11,7 @@ import { SpacePlugin } from '#plugin';
11
11
 
12
12
  import { meta } from './meta';
13
13
 
14
- const moduleId = (name: string) => `${meta.id}.module.${name}`;
14
+ const moduleId = (name: string) => `${meta.profile.key}.module.${name}`;
15
15
 
16
16
  describe('SpacePlugin', () => {
17
17
  test('modules activate on the expected events', async ({ expect }) => {
@@ -26,7 +26,6 @@ import {
26
26
  } from '@dxos/types';
27
27
 
28
28
  import {
29
- AppGraphSerializer,
30
29
  CreateObject,
31
30
  IdentityCreated,
32
31
  NavigationHandler,
@@ -134,11 +133,6 @@ export const SpacePlugin = Plugin.define<SpacePluginOptions>(meta).pipe(
134
133
  };
135
134
  },
136
135
  ),
137
- // TODO(wittjosiah): This could probably be deferred.
138
- Plugin.addModule({
139
- activatesOn: AppActivationEvents.AppGraphReady,
140
- activate: AppGraphSerializer,
141
- }),
142
136
  Plugin.addModule({
143
137
  activatesOn: ClientEvents.IdentityCreated,
144
138
  firesAfterActivation: [SpaceEvents.PersonalSpaceReady],
@@ -160,7 +154,7 @@ export const SpacePlugin = Plugin.define<SpacePluginOptions>(meta).pipe(
160
154
  activate: Repair,
161
155
  }),
162
156
  AppPlugin.addPluginAssetModule({
163
- asset: { pluginId: meta.id, path: 'PLUGIN.mdl', content: pluginSpec, mimeType: 'application/x-mdl' },
157
+ asset: { pluginId: meta.profile.key, path: 'PLUGIN.mdl', content: pluginSpec, mimeType: 'application/x-mdl' },
164
158
  }),
165
159
  Plugin.make,
166
160
  );
@@ -6,15 +6,7 @@ import * as Effect from 'effect/Effect';
6
6
  import * as Option from 'effect/Option';
7
7
 
8
8
  import { Capabilities, Capability } from '@dxos/app-framework';
9
- import {
10
- AppCapabilities,
11
- AppNodeMatcher,
12
- LayoutOperation,
13
- RootCollectionAnnotation,
14
- Segments,
15
- getObjectPathFromObject,
16
- toUrlPath,
17
- } from '@dxos/app-toolkit';
9
+ import { AppAnnotation, AppCapabilities, AppNode, AppNodeMatcher, LayoutOperation, Paths } from '@dxos/app-toolkit';
18
10
  import { SpaceState, isSpace } from '@dxos/client/echo';
19
11
  import { Operation } from '@dxos/compute';
20
12
  import { Annotation, Collection, Obj, Type } from '@dxos/echo';
@@ -32,9 +24,6 @@ import {
32
24
  CREATE_OBJECT_IN_COLLECTION_LABEL,
33
25
  EXPOSE_OBJECT_LABEL,
34
26
  REMOVE_FROM_COLLECTION_LABEL,
35
- createObjectNode,
36
- getCollectionGraphNodePartials,
37
- getDynamicLabel,
38
27
  } from './shared';
39
28
 
40
29
  //
@@ -61,22 +50,24 @@ export const createCollectionExtensions = Effect.fnUntraced(function* ({
61
50
  }
62
51
 
63
52
  get(Obj.atom(space.properties));
64
- const collectionRef = Annotation.get(space.properties, RootCollectionAnnotation).pipe(Option.getOrUndefined);
53
+ const collectionRef = Annotation.get(space.properties, AppAnnotation.RootCollectionAnnotation).pipe(
54
+ Option.getOrUndefined,
55
+ );
65
56
  if (collectionRef) {
66
57
  get(Obj.atom(collectionRef));
67
58
  }
68
59
  const rootCollection = collectionRef?.target;
69
60
  const collectionPartials = rootCollection
70
- ? getCollectionGraphNodePartials({ db: space.db, collection: rootCollection })
61
+ ? AppNode.getCollectionGraphNodePartials({ db: space.db, collection: rootCollection })
71
62
  : undefined;
72
63
 
73
64
  return Effect.succeed([
74
65
  Node.make({
75
- id: Segments.collections,
66
+ id: Paths.Segments.collections,
76
67
  type: COLLECTIONS_SECTION_TYPE,
77
68
  data: null,
78
69
  properties: {
79
- label: ['collections-section.label', { ns: meta.id }],
70
+ label: ['collections-section.label', { ns: meta.profile.key }],
80
71
  icon: 'ph--folder--regular',
81
72
  iconHue: 'amber',
82
73
  role: 'branch',
@@ -104,7 +95,9 @@ export const createCollectionExtensions = Effect.fnUntraced(function* ({
104
95
  const ephemeralState = get(ephemeralAtom);
105
96
 
106
97
  get(Obj.atom(space.properties));
107
- const collectionRef = Annotation.get(space.properties, RootCollectionAnnotation).pipe(Option.getOrUndefined);
98
+ const collectionRef = Annotation.get(space.properties, AppAnnotation.RootCollectionAnnotation).pipe(
99
+ Option.getOrUndefined,
100
+ );
108
101
  const collection = collectionRef ? get(Obj.atom(collectionRef)) : undefined;
109
102
  if (!collection) {
110
103
  return Effect.succeed([]);
@@ -122,7 +115,8 @@ export const createCollectionExtensions = Effect.fnUntraced(function* ({
122
115
  return Effect.succeed(
123
116
  objects
124
117
  .map((object: Obj.Unknown) =>
125
- createObjectNode({
118
+ AppNode.makeObject({
119
+ get,
126
120
  db: space.db,
127
121
  object,
128
122
  navigable: ephemeralState.navigableCollections,
@@ -158,7 +152,8 @@ export const createCollectionExtensions = Effect.fnUntraced(function* ({
158
152
  .map(
159
153
  (object: Obj.Unknown) =>
160
154
  db &&
161
- createObjectNode({
155
+ AppNode.makeObject({
156
+ get,
162
157
  object,
163
158
  db,
164
159
  navigable: ephemeralState.navigableCollections,
@@ -211,6 +206,31 @@ export const createCollectionExtensions = Effect.fnUntraced(function* ({
211
206
  );
212
207
  },
213
208
  }),
209
+
210
+ // Action on the collections section header to create a new collection.
211
+ GraphBuilder.createExtension({
212
+ id: 'collectionsSectionActions',
213
+ match: (node) => {
214
+ const space = isSpace(node.properties.space) ? node.properties.space : undefined;
215
+ return node.type === COLLECTIONS_SECTION_TYPE && space ? Option.some(space) : Option.none();
216
+ },
217
+ actions: (space) =>
218
+ Effect.succeed([
219
+ Node.makeAction({
220
+ id: 'create-collection',
221
+ data: () =>
222
+ Operation.invoke(SpaceOperation.OpenCreateObject, {
223
+ target: space.db,
224
+ typename: Type.getTypename(Collection.Collection),
225
+ }),
226
+ properties: {
227
+ label: ['add-object.label', { ns: Type.getTypename(Collection.Collection) }],
228
+ icon: 'ph--plus--regular',
229
+ disposition: 'list-item-primary',
230
+ },
231
+ }),
232
+ ]),
233
+ }),
214
234
  ]);
215
235
  });
216
236
 
@@ -259,7 +279,7 @@ const constructObjectActions = ({
259
279
  data: (params?: Node.InvokeProps) =>
260
280
  Operation.invoke(SpaceOperation.RenameObject, { object, caller: `${params?.caller}:${params?.parent?.id}` }),
261
281
  properties: {
262
- label: getDynamicLabel('rename-object.label', typename, { defaultValue: 'Rename' }),
282
+ label: AppNode.getDynamicLabel('rename-object.label', typename, { defaultValue: 'Rename' }),
263
283
  icon: 'ph--pencil-simple-line--regular',
264
284
  disposition: 'list-item',
265
285
  testId: 'spacePlugin.renameObject',
@@ -282,7 +302,7 @@ const constructObjectActions = ({
282
302
 
283
303
  if (isActive) {
284
304
  yield* Operation.invoke(LayoutOperation.Open, {
285
- subject: [getObjectPathFromObject(object)],
305
+ subject: [Paths.getObjectPathFromObject(object)],
286
306
  });
287
307
  }
288
308
  }
@@ -304,7 +324,7 @@ const constructObjectActions = ({
304
324
  target: parentCollection,
305
325
  }),
306
326
  properties: {
307
- label: getDynamicLabel('delete-object.label', typename, { defaultValue: 'Delete' }),
327
+ label: AppNode.getDynamicLabel('delete-object.label', typename, { defaultValue: 'Delete' }),
308
328
  icon: 'ph--trash--regular',
309
329
  disposition: 'list-item',
310
330
  disabled: !deletable,
@@ -317,7 +337,7 @@ const constructObjectActions = ({
317
337
  id: 'copyLink',
318
338
  data: () =>
319
339
  Effect.promise(async () => {
320
- const url = new URL(toUrlPath(nodeId), shareableLinkOrigin);
340
+ const url = new URL(Paths.toUrlPath(nodeId), shareableLinkOrigin);
321
341
  await navigator.clipboard.writeText(url.toString());
322
342
  }),
323
343
  properties: {
@@ -331,7 +351,7 @@ const constructObjectActions = ({
331
351
  : []),
332
352
  Node.makeAction({
333
353
  id: LayoutOperation.Expose.meta.key,
334
- data: () => Operation.invoke(LayoutOperation.Expose, { subject: getObjectPathFromObject(object) }),
354
+ data: () => Operation.invoke(LayoutOperation.Expose, { subject: Paths.getObjectPathFromObject(object) }),
335
355
  properties: {
336
356
  label: EXPOSE_OBJECT_LABEL,
337
357
  icon: 'ph--eye--regular',
@@ -31,7 +31,7 @@ export const createCompanionExtensions: () => Effect.Effect<GraphBuilder.Builder
31
31
  Effect.succeed([
32
32
  AppNode.makeCompanion({
33
33
  id: linkedSegment('settings'),
34
- label: ['object-properties.label', { ns: meta.id }],
34
+ label: ['object-properties.label', { ns: meta.profile.key }],
35
35
  icon: 'ph--sliders--regular',
36
36
  data: 'settings', // TODO(burdon): Change to 'object-properties'.
37
37
  position: 'last',
@@ -47,7 +47,7 @@ export const createCompanionExtensions: () => Effect.Effect<GraphBuilder.Builder
47
47
  Effect.succeed([
48
48
  AppNode.makeCompanion({
49
49
  id: linkedSegment('related'),
50
- label: ['companion-related.label', { ns: meta.id }],
50
+ label: ['companion-related.label', { ns: meta.profile.key }],
51
51
  icon: 'ph--graph--regular',
52
52
  data: 'related',
53
53
  position: 'last',
@@ -79,7 +79,7 @@ export const createCompanionExtensions: () => Effect.Effect<GraphBuilder.Builder
79
79
  Effect.succeed([
80
80
  AppNode.makeCompanion({
81
81
  id: linkedSegment('selected-objects'),
82
- label: ['companion-selected-objects.label', { ns: meta.id }],
82
+ label: ['companion-selected-objects.label', { ns: meta.profile.key }],
83
83
  icon: 'ph--tree-view--regular',
84
84
  data: 'selected-objects',
85
85
  }),
@@ -8,7 +8,7 @@ import * as Match from 'effect/Match';
8
8
  import * as Option from 'effect/Option';
9
9
 
10
10
  import { Capability, type CapabilityManager } from '@dxos/app-framework';
11
- import { AppNode, AppNodeMatcher, LayoutOperation, Segments, getTypeSlug } from '@dxos/app-toolkit';
11
+ import { AppNode, AppNodeMatcher, LayoutOperation, Paths } from '@dxos/app-toolkit';
12
12
  import { type Space, SpaceState, isSpace } from '@dxos/client/echo';
13
13
  import { Operation } from '@dxos/compute';
14
14
  import { Annotation, Collection, Entity, Filter, Obj, Query, Scope, Type } from '@dxos/echo';
@@ -32,9 +32,7 @@ import {
32
32
  TYPES_SECTION_TYPE,
33
33
  TYPE_COLLECTION_TYPE,
34
34
  buildViewIndex,
35
- createObjectNode,
36
35
  downloadBlob,
37
- getDynamicLabel,
38
36
  } from './shared';
39
37
 
40
38
  //
@@ -58,9 +56,9 @@ export const createDatabaseExtensions = Effect.fnUntraced(function* () {
58
56
 
59
57
  return Effect.succeed([
60
58
  AppNode.makeSection({
61
- id: Segments.types,
59
+ id: Paths.Segments.types,
62
60
  type: TYPES_SECTION_TYPE,
63
- label: ['types-section.label', { ns: meta.id }],
61
+ label: ['types-section.label', { ns: meta.profile.key }],
64
62
  icon: 'ph--database--regular',
65
63
  space,
66
64
  position: 'last',
@@ -130,7 +128,7 @@ export const createDatabaseExtensions = Effect.fnUntraced(function* () {
130
128
  const client = get(capabilities.atom(ClientCapabilities.Client)).at(0);
131
129
  const schemas = client ? get(client.graph.registry.query(Filter.type(Type.Type)).atom) : [];
132
130
 
133
- const slug = getTypeSlug(schema);
131
+ const slug = Paths.getTypeSlug(schema);
134
132
  const typeUri = Type.getURI(schema);
135
133
 
136
134
  // {All} virtual node.
@@ -139,7 +137,7 @@ export const createDatabaseExtensions = Effect.fnUntraced(function* () {
139
137
  type: TYPE_COLLECTION_TYPE,
140
138
  data: { space, typeUri },
141
139
  properties: {
142
- label: ['type-collection-all.label', { ns: meta.id }],
140
+ label: ['type-collection-all.label', { ns: meta.profile.key }],
143
141
  icon: 'ph--list--regular',
144
142
  iconHue: 'neutral',
145
143
  role: 'branch',
@@ -157,7 +155,8 @@ export const createDatabaseExtensions = Effect.fnUntraced(function* () {
157
155
  const viewNodes = viewIndex
158
156
  .getViewsForTypeUri(typeUri)
159
157
  .map((object: Obj.Unknown) =>
160
- createObjectNode({
158
+ AppNode.makeObject({
159
+ get,
161
160
  db: space.db,
162
161
  object,
163
162
  droppable: false,
@@ -190,7 +189,8 @@ export const createDatabaseExtensions = Effect.fnUntraced(function* () {
190
189
  objects
191
190
  .map((object: Obj.Unknown) => {
192
191
  get(Obj.atom(object));
193
- return createObjectNode({
192
+ return AppNode.makeObject({
193
+ get,
194
194
  db: space.db,
195
195
  object,
196
196
  droppable: false,
@@ -254,7 +254,7 @@ const createSchemaNode = ({
254
254
  const typename = Type.getTypename(schema);
255
255
  // The node id doubles as the `types/<slug>` path segment, so it must be slash- and colon-free:
256
256
  // a stored schema's entity id, or a static schema's typename.
257
- const slug = getTypeSlug(schema);
257
+ const slug = Paths.getTypeSlug(schema);
258
258
  const iconAnnotation =
259
259
  Type.getDatabase(schema) == null
260
260
  ? Option.getOrUndefined(Annotation.IconAnnotation.get(Type.getSchema(schema)))
@@ -275,7 +275,7 @@ const createSchemaNode = ({
275
275
  },
276
276
  ),
277
277
  Match.orElse(() => ({
278
- label: getDynamicLabel('typename.label', typename, { count: 2, defaultValue: typename }),
278
+ label: AppNode.getDynamicLabel('typename.label', typename, { count: 2, defaultValue: typename }),
279
279
  nodeId: slug,
280
280
  })),
281
281
  );
@@ -351,7 +351,10 @@ const createSchemaActions = ({
351
351
  properties: {
352
352
  // Static plugin types carry a per-typename `add-object.label` (e.g. "Add event");
353
353
  // database types have no such namespace, so fall back to the plugin's generic label.
354
- label: getDynamicLabel('add-object.label', Type.getDatabase(type) != null ? meta.id : typename),
354
+ label: AppNode.getDynamicLabel(
355
+ 'add-object.label',
356
+ Type.getDatabase(type) != null ? meta.profile.key : typename,
357
+ ),
355
358
  icon: 'ph--plus--regular',
356
359
  disposition: 'list-item-primary',
357
360
  testId: 'spacePlugin.createObject',
@@ -384,7 +387,7 @@ const createSchemaActions = ({
384
387
  })
385
388
  : Effect.fail(new Error('Cannot rename immutable schema')),
386
389
  properties: {
387
- label: getDynamicLabel('rename-object.label', Type.getTypename(Type.Type)),
390
+ label: AppNode.getDynamicLabel('rename-object.label', Type.getTypename(Type.Type)),
388
391
  icon: 'ph--pencil-simple-line--regular',
389
392
  disabled: Type.getDatabase(type) == null,
390
393
  disposition: 'list-item',
@@ -400,7 +403,7 @@ const createSchemaActions = ({
400
403
  })
401
404
  : Effect.succeed(undefined),
402
405
  properties: {
403
- label: getDynamicLabel('delete-object.label', Type.getTypename(Type.Type)),
406
+ label: AppNode.getDynamicLabel('delete-object.label', Type.getTypename(Type.Type)),
404
407
  icon: 'ph--trash--regular',
405
408
  disposition: 'list-item',
406
409
  disabled: !deletable,
@@ -4,7 +4,7 @@
4
4
 
5
5
  import * as Effect from 'effect/Effect';
6
6
 
7
- import { AppNode, AppNodeMatcher, isPersonalSpace } from '@dxos/app-toolkit';
7
+ import { AppNode, AppNodeMatcher, AppSpace } from '@dxos/app-toolkit';
8
8
  import { GraphBuilder, Node } from '@dxos/plugin-graph';
9
9
 
10
10
  import { meta } from '#meta';
@@ -31,7 +31,7 @@ export const createSettingsExtensions = Effect.fnUntraced(function* () {
31
31
  AppNode.makeSection({
32
32
  id: SETTINGS_SECTION_ID,
33
33
  type: SETTINGS_SECTION_TYPE,
34
- label: ['settings-section.label', { ns: meta.id }],
34
+ label: ['settings-section.label', { ns: meta.profile.key }],
35
35
  icon: 'ph--sliders--regular',
36
36
  iconHue: 'indigo',
37
37
  space,
@@ -45,14 +45,14 @@ export const createSettingsExtensions = Effect.fnUntraced(function* () {
45
45
  id: 'settingsSections',
46
46
  match: AppNodeMatcher.whenSpaceSettings,
47
47
  connector: (space) => {
48
- const personal = isPersonalSpace(space);
48
+ const personal = AppSpace.isPersonalSpace(space);
49
49
  return Effect.succeed([
50
50
  Node.make({
51
51
  id: 'general',
52
- type: `${meta.id}.general`,
53
- data: `${meta.id}.general`,
52
+ type: `${meta.profile.key}.general`,
53
+ data: `${meta.profile.key}.general`,
54
54
  properties: {
55
- label: ['space-settings-properties.label', { ns: meta.id }],
55
+ label: ['space-settings-properties.label', { ns: meta.profile.key }],
56
56
  icon: 'ph--brackets-curly--regular',
57
57
  iconHue: 'indigo',
58
58
  space,
@@ -63,10 +63,10 @@ export const createSettingsExtensions = Effect.fnUntraced(function* () {
63
63
  ? [
64
64
  Node.make({
65
65
  id: 'members',
66
- type: `${meta.id}.members`,
67
- data: `${meta.id}.members`,
66
+ type: `${meta.profile.key}.members`,
67
+ data: `${meta.profile.key}.members`,
68
68
  properties: {
69
- label: ['members-panel.label', { ns: meta.id }],
69
+ label: ['members-panel.label', { ns: meta.profile.key }],
70
70
  icon: 'ph--users--regular',
71
71
  iconHue: 'indigo',
72
72
  space,
@@ -17,36 +17,21 @@ import { type Label } from '@dxos/ui-types/translations';
17
17
 
18
18
  import { meta } from '#meta';
19
19
 
20
- export {
21
- ACCEPT_ECHO_CLASS,
22
- CACHEABLE_PROPS,
23
- CAN_DROP_OBJECT,
24
- blockInstructionCache,
25
- buildCollectionPartials,
26
- collectionPartialsCache,
27
- createFactory,
28
- createObjectNode,
29
- getAcceptPersistenceKey,
30
- getCollectionGraphNodePartials,
31
- getDynamicLabel,
32
- rearrangeCache,
33
- } from '@dxos/app-toolkit';
34
-
35
20
  //
36
21
  // Virtual Node Types
37
22
  //
38
23
 
39
- export const TYPES_SECTION_TYPE = `${meta.id}.types`;
40
- export const COLLECTIONS_SECTION_TYPE = `${meta.id}.collections`;
41
- export const TYPE_COLLECTION_TYPE = `${meta.id}.type-collection`;
42
- export const STATIC_SCHEMA_TYPE = `${meta.id}.static-schema`;
24
+ export const TYPES_SECTION_TYPE = `${meta.profile.key}.types`;
25
+ export const COLLECTIONS_SECTION_TYPE = `${meta.profile.key}.collections`;
26
+ export const TYPE_COLLECTION_TYPE = `${meta.profile.key}.type-collection`;
27
+ export const STATIC_SCHEMA_TYPE = `${meta.profile.key}.static-schema`;
43
28
 
44
29
  //
45
30
  // Constants
46
31
  //
47
32
 
48
33
  /** Shared translation namespace descriptor. */
49
- export const META_NS: { ns: string } = { ns: meta.id };
34
+ export const META_NS: { ns: string } = { ns: meta.profile.key };
50
35
 
51
36
  //
52
37
  // Stable Callbacks