@dxos/plugin-space 0.8.4-main.c85a9c8dae → 0.8.4-main.d05673bc65

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 (344) hide show
  1. package/dist/lib/browser/{CollectionArticle-WASDM637.mjs → CollectionArticle-WPLUW5HF.mjs} +5 -36
  2. package/dist/lib/browser/CollectionArticle-WPLUW5HF.mjs.map +7 -0
  3. package/dist/lib/browser/{CollectionSection-LK4O6QDD.mjs → CollectionSection-H2MBNI63.mjs} +2 -2
  4. package/dist/lib/browser/{CreateObjectDialog-MA6DPYMD.mjs → CreateObjectDialog-YUBUWSEL.mjs} +17 -21
  5. package/dist/lib/browser/CreateObjectDialog-YUBUWSEL.mjs.map +7 -0
  6. package/dist/lib/browser/{CreateSpaceDialog-WCEICWIE.mjs → CreateSpaceDialog-3M2LAWV6.mjs} +7 -7
  7. package/dist/lib/browser/CreateSpaceDialog-3M2LAWV6.mjs.map +7 -0
  8. package/dist/lib/browser/{InlineSyncStatus-BT7BRBCO.mjs → InlineSyncStatus-K5MZ3YMZ.mjs} +9 -18
  9. package/dist/lib/browser/InlineSyncStatus-K5MZ3YMZ.mjs.map +7 -0
  10. package/dist/lib/browser/{JoinDialog-PMCAIRCU.mjs → JoinDialog-PBK2RE5F.mjs} +8 -10
  11. package/dist/lib/browser/JoinDialog-PBK2RE5F.mjs.map +7 -0
  12. package/dist/lib/browser/{MembersContainer-MMFCXLVZ.mjs → MembersContainer-OGYV2L4M.mjs} +4 -4
  13. package/dist/lib/browser/{MenuFooter-HYBTNOBT.mjs → MenuFooter-XCBDK7WP.mjs} +3 -4
  14. package/dist/lib/{node-esm/MenuFooter-2QB3453Y.mjs.map → browser/MenuFooter-XCBDK7WP.mjs.map} +1 -1
  15. package/dist/lib/browser/{ObjectCardStack-CHWNLUYQ.mjs → ObjectCardStack-OMXF2DSG.mjs} +6 -6
  16. package/dist/lib/browser/{ObjectDetails-YUGVDNSA.mjs → ObjectDetails-QFTQQN4W.mjs} +6 -6
  17. package/dist/lib/browser/{ObjectRenamePopover-RQUOVPFH.mjs → ObjectRenamePopover-JNPJIFIR.mjs} +3 -3
  18. package/dist/lib/browser/{ObjectRenamePopover-RQUOVPFH.mjs.map → ObjectRenamePopover-JNPJIFIR.mjs.map} +1 -1
  19. package/dist/lib/browser/{RecordArticle-ONWKYM3Z.mjs → RecordArticle-BO2XHBFN.mjs} +2 -2
  20. package/dist/lib/browser/{SchemaContainer-62AJXKAF.mjs → SchemaContainer-QWCSIZBS.mjs} +2 -2
  21. package/dist/lib/browser/SmallPresenceLive-AHHLBAUP.mjs +9 -0
  22. package/dist/lib/browser/{SpacePluginSettings-BRJTADV5.mjs → SpacePluginSettings-QGZKNQLK.mjs} +4 -4
  23. package/dist/lib/browser/SpacePresence-JIWLBUWO.mjs +12 -0
  24. package/dist/lib/browser/{SpaceRenamePopover-SAKMPDLX.mjs → SpaceRenamePopover-ZL6RRZ2B.mjs} +3 -3
  25. package/dist/lib/browser/{SpaceRenamePopover-SAKMPDLX.mjs.map → SpaceRenamePopover-ZL6RRZ2B.mjs.map} +1 -1
  26. package/dist/lib/browser/{SpaceSettingsContainer-UBMVKUPR.mjs → SpaceSettingsContainer-MIOOT63N.mjs} +5 -5
  27. package/dist/lib/browser/SpaceSettingsContainer-MIOOT63N.mjs.map +7 -0
  28. package/dist/lib/browser/{SyncStatus-5UQ7CIII.mjs → SyncStatus-6N7JJ7XF.mjs} +6 -6
  29. package/dist/lib/browser/{ViewEditor-F74RR542.mjs → ViewEditor-3FX5HDRT.mjs} +4 -7
  30. package/dist/lib/browser/ViewEditor-3FX5HDRT.mjs.map +7 -0
  31. package/dist/lib/browser/app-graph-builder-JORZZE3P.mjs +1203 -0
  32. package/dist/lib/browser/app-graph-builder-JORZZE3P.mjs.map +7 -0
  33. package/dist/lib/browser/{app-graph-serializer-KTQOBYUF.mjs → app-graph-serializer-UZWWGLGY.mjs} +5 -5
  34. package/dist/lib/browser/{chunk-RWOK4F4G.mjs → chunk-2WHUSAHE.mjs} +17 -14
  35. package/dist/lib/browser/chunk-2WHUSAHE.mjs.map +7 -0
  36. package/dist/lib/browser/{chunk-USN5QKRV.mjs → chunk-6IT5IBB5.mjs} +54 -86
  37. package/dist/lib/browser/chunk-6IT5IBB5.mjs.map +7 -0
  38. package/dist/lib/browser/chunk-6OA75CWN.mjs +77 -0
  39. package/dist/lib/browser/chunk-6OA75CWN.mjs.map +7 -0
  40. package/dist/lib/browser/{chunk-PXVKN4LU.mjs → chunk-AUX3RRLY.mjs} +34 -9
  41. package/dist/lib/browser/chunk-AUX3RRLY.mjs.map +7 -0
  42. package/dist/lib/browser/{chunk-HSMQFM57.mjs → chunk-CBWGVOJE.mjs} +2 -2
  43. package/dist/lib/browser/{chunk-HSMQFM57.mjs.map → chunk-CBWGVOJE.mjs.map} +1 -1
  44. package/dist/lib/browser/{chunk-XIIYC7P5.mjs → chunk-ICXESMDI.mjs} +6 -6
  45. package/dist/lib/browser/chunk-ICXESMDI.mjs.map +7 -0
  46. package/dist/lib/browser/chunk-RJUOHI3B.mjs +19 -0
  47. package/dist/lib/browser/{chunk-ASV6DYFH.mjs.map → chunk-RJUOHI3B.mjs.map} +1 -1
  48. package/dist/lib/browser/{chunk-J5F4LUJD.mjs → chunk-SSTUPFZ2.mjs} +3 -3
  49. package/dist/lib/browser/{chunk-ABCDB5YC.mjs → chunk-UYOJYBGW.mjs} +7 -16
  50. package/dist/lib/browser/chunk-UYOJYBGW.mjs.map +7 -0
  51. package/dist/lib/browser/cli/index.mjs +8 -17
  52. package/dist/lib/browser/cli/index.mjs.map +3 -3
  53. package/dist/lib/browser/{identity-created-VKLIZOXJ.mjs → identity-created-ETXNQYR6.mjs} +4 -4
  54. package/dist/lib/browser/{identity-created-VKLIZOXJ.mjs.map → identity-created-ETXNQYR6.mjs.map} +3 -3
  55. package/dist/lib/browser/index.mjs +33 -53
  56. package/dist/lib/browser/index.mjs.map +3 -3
  57. package/dist/lib/browser/meta.json +1 -1
  58. package/dist/lib/browser/{operation-resolver-Y3HYRXX7.mjs → operation-resolver-D4LHB4D4.mjs} +64 -88
  59. package/dist/lib/browser/operation-resolver-D4LHB4D4.mjs.map +7 -0
  60. package/dist/lib/browser/{react-root-UYBW5RE7.mjs → react-root-OD2HP63B.mjs} +6 -6
  61. package/dist/lib/browser/{react-surface-NJ23NZFF.mjs → react-surface-E4TAFED5.mjs} +57 -79
  62. package/dist/lib/browser/react-surface-E4TAFED5.mjs.map +7 -0
  63. package/dist/lib/browser/repair-NUVEV4AK.mjs +31 -0
  64. package/dist/lib/browser/repair-NUVEV4AK.mjs.map +7 -0
  65. package/dist/lib/browser/{settings-2ELVUFDR.mjs → settings-RUDP2Q56.mjs} +3 -3
  66. package/dist/lib/browser/{spaces-ready-Q6JASPT4.mjs → spaces-ready-B2GYL5IN.mjs} +6 -6
  67. package/dist/lib/browser/spaces-ready-B2GYL5IN.mjs.map +7 -0
  68. package/dist/lib/browser/{state-CTX4WQOM.mjs → state-I6JDZCDE.mjs} +5 -5
  69. package/dist/lib/browser/{state-CTX4WQOM.mjs.map → state-I6JDZCDE.mjs.map} +2 -2
  70. package/dist/lib/browser/types/index.mjs +2 -2
  71. package/dist/lib/node-esm/{CollectionArticle-A6GGG73Z.mjs → CollectionArticle-JGVNBX66.mjs} +5 -36
  72. package/dist/lib/node-esm/CollectionArticle-JGVNBX66.mjs.map +7 -0
  73. package/dist/lib/node-esm/{CollectionSection-WWKDOAAT.mjs → CollectionSection-BI66Y34F.mjs} +2 -2
  74. package/dist/lib/node-esm/{CreateObjectDialog-4WEFNDDF.mjs → CreateObjectDialog-B6OLP5VQ.mjs} +17 -21
  75. package/dist/lib/node-esm/CreateObjectDialog-B6OLP5VQ.mjs.map +7 -0
  76. package/dist/lib/node-esm/{CreateSpaceDialog-P7QCPB5J.mjs → CreateSpaceDialog-J47M5FPQ.mjs} +7 -7
  77. package/dist/lib/node-esm/CreateSpaceDialog-J47M5FPQ.mjs.map +7 -0
  78. package/dist/lib/node-esm/{InlineSyncStatus-3PCXU7NX.mjs → InlineSyncStatus-BLD57LB5.mjs} +9 -18
  79. package/dist/lib/node-esm/InlineSyncStatus-BLD57LB5.mjs.map +7 -0
  80. package/dist/lib/node-esm/{JoinDialog-XEOLJZVN.mjs → JoinDialog-XCOYKSHA.mjs} +8 -10
  81. package/dist/lib/node-esm/JoinDialog-XCOYKSHA.mjs.map +7 -0
  82. package/dist/lib/node-esm/{MembersContainer-UQZLW3YA.mjs → MembersContainer-4PV3Z4BA.mjs} +4 -4
  83. package/dist/lib/node-esm/{MenuFooter-2QB3453Y.mjs → MenuFooter-PXG2GV6A.mjs} +3 -4
  84. package/dist/lib/node-esm/{ObjectCardStack-UXEWG6RV.mjs → ObjectCardStack-457SNNVF.mjs} +6 -6
  85. package/dist/lib/node-esm/{ObjectDetails-26PVHUQL.mjs → ObjectDetails-OLF7HSM4.mjs} +6 -6
  86. package/dist/lib/node-esm/{ObjectRenamePopover-EHTP76G7.mjs → ObjectRenamePopover-BRPKVNVF.mjs} +3 -3
  87. package/dist/lib/node-esm/{ObjectRenamePopover-EHTP76G7.mjs.map → ObjectRenamePopover-BRPKVNVF.mjs.map} +1 -1
  88. package/dist/lib/node-esm/{RecordArticle-APY2WKUW.mjs → RecordArticle-XUIT25PP.mjs} +2 -2
  89. package/dist/lib/node-esm/{SchemaContainer-XR2D6MYX.mjs → SchemaContainer-5G4R3Z6O.mjs} +2 -2
  90. package/dist/lib/node-esm/SmallPresenceLive-4K7RJS74.mjs +10 -0
  91. package/dist/lib/node-esm/SmallPresenceLive-4K7RJS74.mjs.map +7 -0
  92. package/dist/lib/node-esm/{SpacePluginSettings-VEB5IGG7.mjs → SpacePluginSettings-PENV4GHL.mjs} +4 -4
  93. package/dist/lib/node-esm/SpacePresence-H3VZWFJV.mjs +13 -0
  94. package/dist/lib/node-esm/SpacePresence-H3VZWFJV.mjs.map +7 -0
  95. package/dist/lib/node-esm/{SpaceRenamePopover-WHM632OT.mjs → SpaceRenamePopover-XEMTI4PU.mjs} +3 -3
  96. package/dist/lib/node-esm/{SpaceRenamePopover-WHM632OT.mjs.map → SpaceRenamePopover-XEMTI4PU.mjs.map} +1 -1
  97. package/dist/lib/node-esm/{SpaceSettingsContainer-Y62J2L65.mjs → SpaceSettingsContainer-WI4D7RWA.mjs} +5 -5
  98. package/dist/lib/node-esm/SpaceSettingsContainer-WI4D7RWA.mjs.map +7 -0
  99. package/dist/lib/node-esm/{SyncStatus-XTJAVHPN.mjs → SyncStatus-YEBGTNSD.mjs} +6 -6
  100. package/dist/lib/node-esm/{ViewEditor-B2BLYF5U.mjs → ViewEditor-CUQVNM2H.mjs} +4 -7
  101. package/dist/lib/node-esm/ViewEditor-CUQVNM2H.mjs.map +7 -0
  102. package/dist/lib/node-esm/app-graph-builder-WTM6SSX7.mjs +1204 -0
  103. package/dist/lib/node-esm/app-graph-builder-WTM6SSX7.mjs.map +7 -0
  104. package/dist/lib/node-esm/{app-graph-serializer-GXQYSQAZ.mjs → app-graph-serializer-RT2RQTV2.mjs} +5 -5
  105. package/dist/lib/node-esm/{chunk-OSFH2XKO.mjs → chunk-2OLR2ZKH.mjs} +6 -6
  106. package/dist/lib/node-esm/chunk-2OLR2ZKH.mjs.map +7 -0
  107. package/dist/lib/node-esm/chunk-5KTTTTEX.mjs +20 -0
  108. package/dist/lib/node-esm/{chunk-CVXULIYC.mjs.map → chunk-5KTTTTEX.mjs.map} +1 -1
  109. package/dist/lib/node-esm/{chunk-SL4BJSUG.mjs → chunk-63N5JJXI.mjs} +2 -2
  110. package/dist/lib/node-esm/{chunk-SL4BJSUG.mjs.map → chunk-63N5JJXI.mjs.map} +1 -1
  111. package/dist/lib/node-esm/{chunk-UJQUBDQS.mjs → chunk-EDC2RUJU.mjs} +7 -16
  112. package/dist/lib/node-esm/chunk-EDC2RUJU.mjs.map +7 -0
  113. package/dist/lib/node-esm/{chunk-3DWZCVVQ.mjs → chunk-EVNSLSQS.mjs} +54 -86
  114. package/dist/lib/node-esm/chunk-EVNSLSQS.mjs.map +7 -0
  115. package/dist/lib/node-esm/chunk-GEGWQVZX.mjs +78 -0
  116. package/dist/lib/node-esm/chunk-GEGWQVZX.mjs.map +7 -0
  117. package/dist/lib/node-esm/{chunk-P2AVANDG.mjs → chunk-RYQQXNI7.mjs} +34 -9
  118. package/dist/lib/node-esm/chunk-RYQQXNI7.mjs.map +7 -0
  119. package/dist/lib/node-esm/{chunk-GWUPFA7J.mjs → chunk-S5BQUCL4.mjs} +17 -14
  120. package/dist/lib/node-esm/chunk-S5BQUCL4.mjs.map +7 -0
  121. package/dist/lib/node-esm/{chunk-S2IELCDF.mjs → chunk-XYLDAH5C.mjs} +3 -3
  122. package/dist/lib/node-esm/cli/index.mjs +8 -17
  123. package/dist/lib/node-esm/cli/index.mjs.map +3 -3
  124. package/dist/lib/node-esm/{identity-created-EGSTETJ5.mjs → identity-created-U5LGULVL.mjs} +4 -4
  125. package/dist/lib/node-esm/{identity-created-EGSTETJ5.mjs.map → identity-created-U5LGULVL.mjs.map} +3 -3
  126. package/dist/lib/node-esm/index.mjs +33 -53
  127. package/dist/lib/node-esm/index.mjs.map +3 -3
  128. package/dist/lib/node-esm/meta.json +1 -1
  129. package/dist/lib/node-esm/{operation-resolver-IRQ2NVUQ.mjs → operation-resolver-IL2AHNPN.mjs} +64 -88
  130. package/dist/lib/node-esm/operation-resolver-IL2AHNPN.mjs.map +7 -0
  131. package/dist/lib/node-esm/{react-root-UEN3LLJD.mjs → react-root-RILC5MBD.mjs} +6 -6
  132. package/dist/lib/node-esm/{react-surface-UDO3PGH6.mjs → react-surface-SWKRVK4S.mjs} +57 -79
  133. package/dist/lib/node-esm/react-surface-SWKRVK4S.mjs.map +7 -0
  134. package/dist/lib/node-esm/repair-LRZHFPSJ.mjs +32 -0
  135. package/dist/lib/node-esm/repair-LRZHFPSJ.mjs.map +7 -0
  136. package/dist/lib/node-esm/{settings-DCTVM2BV.mjs → settings-3EKSEAAG.mjs} +3 -3
  137. package/dist/lib/node-esm/{spaces-ready-XLGRTJV2.mjs → spaces-ready-QK3EHBOS.mjs} +6 -6
  138. package/dist/lib/node-esm/spaces-ready-QK3EHBOS.mjs.map +7 -0
  139. package/dist/lib/node-esm/{state-G74V3WZG.mjs → state-W36RRYUO.mjs} +5 -5
  140. package/dist/lib/node-esm/{state-G74V3WZG.mjs.map → state-W36RRYUO.mjs.map} +2 -2
  141. package/dist/lib/node-esm/types/index.mjs +2 -2
  142. package/dist/types/src/SpacePlugin.d.ts.map +1 -1
  143. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +1 -2
  144. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -1
  145. package/dist/types/src/capabilities/app-graph-builder/extensions/collections.d.ts +33 -0
  146. package/dist/types/src/capabilities/app-graph-builder/extensions/collections.d.ts.map +1 -0
  147. package/dist/types/src/capabilities/app-graph-builder/extensions/companions.d.ts +19 -0
  148. package/dist/types/src/capabilities/app-graph-builder/extensions/companions.d.ts.map +1 -0
  149. package/dist/types/src/capabilities/app-graph-builder/extensions/index.d.ts +6 -0
  150. package/dist/types/src/capabilities/app-graph-builder/extensions/index.d.ts.map +1 -0
  151. package/dist/types/src/capabilities/app-graph-builder/extensions/settings.d.ts +12 -0
  152. package/dist/types/src/capabilities/app-graph-builder/extensions/settings.d.ts.map +1 -0
  153. package/dist/types/src/capabilities/app-graph-builder/extensions/shared.d.ts +57 -0
  154. package/dist/types/src/capabilities/app-graph-builder/extensions/shared.d.ts.map +1 -0
  155. package/dist/types/src/capabilities/app-graph-builder/extensions/shared.test.d.ts +2 -0
  156. package/dist/types/src/capabilities/app-graph-builder/extensions/shared.test.d.ts.map +1 -0
  157. package/dist/types/src/capabilities/app-graph-builder/extensions/spaces.d.ts +24 -0
  158. package/dist/types/src/capabilities/app-graph-builder/extensions/spaces.d.ts.map +1 -0
  159. package/dist/types/src/capabilities/app-graph-builder/extensions/types.d.ts +38 -0
  160. package/dist/types/src/capabilities/app-graph-builder/extensions/types.d.ts.map +1 -0
  161. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -1
  162. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -1
  163. package/dist/types/src/capabilities/repair/repair.d.ts.map +1 -1
  164. package/dist/types/src/capabilities/state/state.d.ts.map +1 -1
  165. package/dist/types/src/cli/commands/database/add.d.ts +0 -1
  166. package/dist/types/src/cli/commands/database/add.d.ts.map +1 -1
  167. package/dist/types/src/cli/plugin.d.ts.map +1 -1
  168. package/dist/types/src/components/AwaitingObject/AwaitingObject.d.ts.map +1 -0
  169. package/dist/types/src/components/AwaitingObject/index.d.ts +2 -0
  170. package/dist/types/src/components/AwaitingObject/index.d.ts.map +1 -0
  171. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +0 -1
  172. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
  173. package/dist/types/src/components/ObjectDetails/BaseObjectSettings.stories.d.ts +68 -14
  174. package/dist/types/src/components/ObjectDetails/BaseObjectSettings.stories.d.ts.map +1 -1
  175. package/dist/types/src/components/ObjectForm/ObjectForm.d.ts.map +1 -1
  176. package/dist/types/src/containers/CollectionArticle/CollectionArticle.d.ts +1 -2
  177. package/dist/types/src/containers/CollectionArticle/CollectionArticle.d.ts.map +1 -1
  178. package/dist/types/src/containers/CreateObjectDialog/CreateObjectDialog.d.ts +2 -1
  179. package/dist/types/src/containers/CreateObjectDialog/CreateObjectDialog.d.ts.map +1 -1
  180. package/dist/types/src/containers/CreateObjectDialog/index.d.ts +2 -2
  181. package/dist/types/src/containers/CreateObjectDialog/index.d.ts.map +1 -1
  182. package/dist/types/src/containers/CreateSpaceDialog/CreateSpaceDialog.d.ts.map +1 -1
  183. package/dist/types/src/containers/InlineSyncStatus/InlineSyncStatus.d.ts.map +1 -1
  184. package/dist/types/src/containers/JoinDialog/index.d.ts +2 -2
  185. package/dist/types/src/containers/JoinDialog/index.d.ts.map +1 -1
  186. package/dist/types/src/containers/ObjectDetails/ObjectDetails.d.ts +1 -0
  187. package/dist/types/src/containers/ObjectDetails/ObjectDetails.d.ts.map +1 -1
  188. package/dist/types/src/containers/SmallPresenceLive/index.d.ts +1 -1
  189. package/dist/types/src/containers/SmallPresenceLive/index.d.ts.map +1 -1
  190. package/dist/types/src/containers/SpacePresence/SpacePresence.d.ts.map +1 -1
  191. package/dist/types/src/containers/SpacePresence/SpacePresence.stories.d.ts +67 -13
  192. package/dist/types/src/containers/SpacePresence/SpacePresence.stories.d.ts.map +1 -1
  193. package/dist/types/src/containers/SpacePresence/index.d.ts +2 -2
  194. package/dist/types/src/containers/SpacePresence/index.d.ts.map +1 -1
  195. package/dist/types/src/containers/SpaceSettingsContainer/SpaceSettingsContainer.stories.d.ts +67 -13
  196. package/dist/types/src/containers/SpaceSettingsContainer/SpaceSettingsContainer.stories.d.ts.map +1 -1
  197. package/dist/types/src/containers/SyncStatus/SyncStatus.stories.d.ts +67 -13
  198. package/dist/types/src/containers/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
  199. package/dist/types/src/containers/ViewEditor/ViewEditor.d.ts.map +1 -1
  200. package/dist/types/src/containers/index.d.ts +1 -1
  201. package/dist/types/src/containers/index.d.ts.map +1 -1
  202. package/dist/types/src/translations.d.ts +67 -13
  203. package/dist/types/src/translations.d.ts.map +1 -1
  204. package/dist/types/src/types/form.d.ts +0 -2
  205. package/dist/types/src/types/form.d.ts.map +1 -1
  206. package/dist/types/src/types/types.d.ts +29 -46
  207. package/dist/types/src/types/types.d.ts.map +1 -1
  208. package/dist/types/src/util.d.ts +4 -161
  209. package/dist/types/src/util.d.ts.map +1 -1
  210. package/dist/types/tsconfig.tsbuildinfo +1 -1
  211. package/package.json +57 -57
  212. package/src/SpacePlugin.ts +14 -22
  213. package/src/capabilities/app-graph-builder/app-graph-builder.ts +14 -657
  214. package/src/capabilities/app-graph-builder/extensions/collections.ts +351 -0
  215. package/src/capabilities/app-graph-builder/extensions/companions.ts +80 -0
  216. package/src/capabilities/app-graph-builder/extensions/index.ts +9 -0
  217. package/src/capabilities/app-graph-builder/extensions/settings.ts +60 -0
  218. package/src/capabilities/app-graph-builder/extensions/shared.test.ts +112 -0
  219. package/src/capabilities/app-graph-builder/extensions/shared.ts +171 -0
  220. package/src/capabilities/app-graph-builder/extensions/spaces.ts +338 -0
  221. package/src/capabilities/app-graph-builder/extensions/types.ts +421 -0
  222. package/src/capabilities/identity-created/identity-created.ts +3 -3
  223. package/src/capabilities/operation-resolver/operation-resolver.ts +65 -73
  224. package/src/capabilities/react-surface/react-surface.tsx +33 -58
  225. package/src/capabilities/repair/repair.ts +3 -32
  226. package/src/capabilities/spaces-ready/spaces-ready.ts +2 -2
  227. package/src/capabilities/state/state.ts +4 -2
  228. package/src/cli/commands/database/add.ts +0 -1
  229. package/src/cli/commands/space/close/close.ts +1 -1
  230. package/src/cli/commands/space/create/create.ts +1 -1
  231. package/src/cli/commands/space/join/join.ts +1 -1
  232. package/src/cli/commands/space/open/open.ts +1 -1
  233. package/src/cli/plugin.ts +0 -1
  234. package/src/components/{AwaitingObject.tsx → AwaitingObject/AwaitingObject.tsx} +2 -2
  235. package/src/components/AwaitingObject/index.ts +5 -0
  236. package/src/components/CreateDialog/CreateObjectPanel.tsx +5 -2
  237. package/src/components/ObjectDetails/BaseObjectSettings.stories.tsx +4 -4
  238. package/src/components/ObjectDetails/BaseObjectSettings.tsx +4 -4
  239. package/src/components/ObjectForm/ObjectForm.tsx +6 -4
  240. package/src/constants.ts +5 -5
  241. package/src/containers/CollectionArticle/CollectionArticle.tsx +7 -54
  242. package/src/containers/CreateObjectDialog/CreateObjectDialog.tsx +10 -10
  243. package/src/containers/CreateObjectDialog/index.ts +2 -3
  244. package/src/containers/CreateSpaceDialog/CreateSpaceDialog.tsx +5 -3
  245. package/src/containers/InlineSyncStatus/InlineSyncStatus.tsx +7 -18
  246. package/src/containers/JoinDialog/JoinDialog.tsx +4 -4
  247. package/src/containers/JoinDialog/index.ts +2 -3
  248. package/src/containers/ObjectRenamePopover/ObjectRenamePopover.tsx +1 -1
  249. package/src/containers/SmallPresenceLive/index.ts +1 -1
  250. package/src/containers/SpacePresence/SpacePresence.tsx +4 -16
  251. package/src/containers/SpacePresence/index.ts +2 -3
  252. package/src/containers/SpaceRenamePopover/SpaceRenamePopover.tsx +1 -1
  253. package/src/containers/SpaceSettingsContainer/SpaceSettingsContainer.tsx +2 -2
  254. package/src/containers/ViewEditor/ViewEditor.tsx +0 -1
  255. package/src/containers/index.ts +1 -1
  256. package/src/helpers/query.test.ts +1 -1
  257. package/src/hooks/useActiveSpace.ts +4 -4
  258. package/src/meta.ts +1 -1
  259. package/src/translations.ts +27 -1
  260. package/src/types/capabilities.ts +7 -7
  261. package/src/types/events.ts +5 -5
  262. package/src/types/form.ts +1 -8
  263. package/src/types/types.ts +36 -58
  264. package/src/util.ts +82 -0
  265. package/dist/lib/browser/CollectionArticle-WASDM637.mjs.map +0 -7
  266. package/dist/lib/browser/CreateObjectDialog-MA6DPYMD.mjs.map +0 -7
  267. package/dist/lib/browser/CreateSpaceDialog-WCEICWIE.mjs.map +0 -7
  268. package/dist/lib/browser/InlineSyncStatus-BT7BRBCO.mjs.map +0 -7
  269. package/dist/lib/browser/JoinDialog-PMCAIRCU.mjs.map +0 -7
  270. package/dist/lib/browser/SmallPresenceLive-LZD2NGKK.mjs +0 -10
  271. package/dist/lib/browser/SpacePresence-MLU576L6.mjs +0 -13
  272. package/dist/lib/browser/SpacePresence-MLU576L6.mjs.map +0 -7
  273. package/dist/lib/browser/SpaceSettingsContainer-UBMVKUPR.mjs.map +0 -7
  274. package/dist/lib/browser/ViewEditor-F74RR542.mjs.map +0 -7
  275. package/dist/lib/browser/app-graph-builder-VFYFI7CD.mjs +0 -593
  276. package/dist/lib/browser/app-graph-builder-VFYFI7CD.mjs.map +0 -7
  277. package/dist/lib/browser/chunk-ABCDB5YC.mjs.map +0 -7
  278. package/dist/lib/browser/chunk-ASV6DYFH.mjs +0 -19
  279. package/dist/lib/browser/chunk-PXVKN4LU.mjs.map +0 -7
  280. package/dist/lib/browser/chunk-RWOK4F4G.mjs.map +0 -7
  281. package/dist/lib/browser/chunk-TPZUQ5DC.mjs +0 -749
  282. package/dist/lib/browser/chunk-TPZUQ5DC.mjs.map +0 -7
  283. package/dist/lib/browser/chunk-USN5QKRV.mjs.map +0 -7
  284. package/dist/lib/browser/chunk-XIIYC7P5.mjs.map +0 -7
  285. package/dist/lib/browser/operation-resolver-Y3HYRXX7.mjs.map +0 -7
  286. package/dist/lib/browser/react-surface-NJ23NZFF.mjs.map +0 -7
  287. package/dist/lib/browser/repair-N2I4DR2Z.mjs +0 -50
  288. package/dist/lib/browser/repair-N2I4DR2Z.mjs.map +0 -7
  289. package/dist/lib/browser/spaces-ready-Q6JASPT4.mjs.map +0 -7
  290. package/dist/lib/node-esm/CollectionArticle-A6GGG73Z.mjs.map +0 -7
  291. package/dist/lib/node-esm/CreateObjectDialog-4WEFNDDF.mjs.map +0 -7
  292. package/dist/lib/node-esm/CreateSpaceDialog-P7QCPB5J.mjs.map +0 -7
  293. package/dist/lib/node-esm/InlineSyncStatus-3PCXU7NX.mjs.map +0 -7
  294. package/dist/lib/node-esm/JoinDialog-XEOLJZVN.mjs.map +0 -7
  295. package/dist/lib/node-esm/SmallPresenceLive-K4243KXR.mjs +0 -11
  296. package/dist/lib/node-esm/SpacePresence-HC2XGQ54.mjs +0 -14
  297. package/dist/lib/node-esm/SpacePresence-HC2XGQ54.mjs.map +0 -7
  298. package/dist/lib/node-esm/SpaceSettingsContainer-Y62J2L65.mjs.map +0 -7
  299. package/dist/lib/node-esm/ViewEditor-B2BLYF5U.mjs.map +0 -7
  300. package/dist/lib/node-esm/app-graph-builder-N37ED6UI.mjs +0 -594
  301. package/dist/lib/node-esm/app-graph-builder-N37ED6UI.mjs.map +0 -7
  302. package/dist/lib/node-esm/chunk-3DWZCVVQ.mjs.map +0 -7
  303. package/dist/lib/node-esm/chunk-CVXULIYC.mjs +0 -20
  304. package/dist/lib/node-esm/chunk-GWUPFA7J.mjs.map +0 -7
  305. package/dist/lib/node-esm/chunk-OSFH2XKO.mjs.map +0 -7
  306. package/dist/lib/node-esm/chunk-P2AVANDG.mjs.map +0 -7
  307. package/dist/lib/node-esm/chunk-UJQUBDQS.mjs.map +0 -7
  308. package/dist/lib/node-esm/chunk-WW6YYBRG.mjs +0 -750
  309. package/dist/lib/node-esm/chunk-WW6YYBRG.mjs.map +0 -7
  310. package/dist/lib/node-esm/operation-resolver-IRQ2NVUQ.mjs.map +0 -7
  311. package/dist/lib/node-esm/react-surface-UDO3PGH6.mjs.map +0 -7
  312. package/dist/lib/node-esm/repair-P6ND7ZRU.mjs +0 -51
  313. package/dist/lib/node-esm/repair-P6ND7ZRU.mjs.map +0 -7
  314. package/dist/lib/node-esm/spaces-ready-XLGRTJV2.mjs.map +0 -7
  315. package/dist/types/src/components/AwaitingObject.d.ts.map +0 -1
  316. package/src/util.tsx +0 -956
  317. /package/dist/lib/browser/{CollectionSection-LK4O6QDD.mjs.map → CollectionSection-H2MBNI63.mjs.map} +0 -0
  318. /package/dist/lib/browser/{MembersContainer-MMFCXLVZ.mjs.map → MembersContainer-OGYV2L4M.mjs.map} +0 -0
  319. /package/dist/lib/browser/{ObjectCardStack-CHWNLUYQ.mjs.map → ObjectCardStack-OMXF2DSG.mjs.map} +0 -0
  320. /package/dist/lib/browser/{ObjectDetails-YUGVDNSA.mjs.map → ObjectDetails-QFTQQN4W.mjs.map} +0 -0
  321. /package/dist/lib/browser/{RecordArticle-ONWKYM3Z.mjs.map → RecordArticle-BO2XHBFN.mjs.map} +0 -0
  322. /package/dist/lib/browser/{SchemaContainer-62AJXKAF.mjs.map → SchemaContainer-QWCSIZBS.mjs.map} +0 -0
  323. /package/dist/lib/browser/{SmallPresenceLive-LZD2NGKK.mjs.map → SmallPresenceLive-AHHLBAUP.mjs.map} +0 -0
  324. /package/dist/lib/browser/{SpacePluginSettings-BRJTADV5.mjs.map → SpacePluginSettings-QGZKNQLK.mjs.map} +0 -0
  325. /package/dist/lib/{node-esm/SmallPresenceLive-K4243KXR.mjs.map → browser/SpacePresence-JIWLBUWO.mjs.map} +0 -0
  326. /package/dist/lib/browser/{SyncStatus-5UQ7CIII.mjs.map → SyncStatus-6N7JJ7XF.mjs.map} +0 -0
  327. /package/dist/lib/browser/{app-graph-serializer-KTQOBYUF.mjs.map → app-graph-serializer-UZWWGLGY.mjs.map} +0 -0
  328. /package/dist/lib/browser/{chunk-J5F4LUJD.mjs.map → chunk-SSTUPFZ2.mjs.map} +0 -0
  329. /package/dist/lib/browser/{react-root-UYBW5RE7.mjs.map → react-root-OD2HP63B.mjs.map} +0 -0
  330. /package/dist/lib/browser/{settings-2ELVUFDR.mjs.map → settings-RUDP2Q56.mjs.map} +0 -0
  331. /package/dist/lib/node-esm/{CollectionSection-WWKDOAAT.mjs.map → CollectionSection-BI66Y34F.mjs.map} +0 -0
  332. /package/dist/lib/node-esm/{MembersContainer-UQZLW3YA.mjs.map → MembersContainer-4PV3Z4BA.mjs.map} +0 -0
  333. /package/dist/lib/{browser/MenuFooter-HYBTNOBT.mjs.map → node-esm/MenuFooter-PXG2GV6A.mjs.map} +0 -0
  334. /package/dist/lib/node-esm/{ObjectCardStack-UXEWG6RV.mjs.map → ObjectCardStack-457SNNVF.mjs.map} +0 -0
  335. /package/dist/lib/node-esm/{ObjectDetails-26PVHUQL.mjs.map → ObjectDetails-OLF7HSM4.mjs.map} +0 -0
  336. /package/dist/lib/node-esm/{RecordArticle-APY2WKUW.mjs.map → RecordArticle-XUIT25PP.mjs.map} +0 -0
  337. /package/dist/lib/node-esm/{SchemaContainer-XR2D6MYX.mjs.map → SchemaContainer-5G4R3Z6O.mjs.map} +0 -0
  338. /package/dist/lib/node-esm/{SpacePluginSettings-VEB5IGG7.mjs.map → SpacePluginSettings-PENV4GHL.mjs.map} +0 -0
  339. /package/dist/lib/node-esm/{SyncStatus-XTJAVHPN.mjs.map → SyncStatus-YEBGTNSD.mjs.map} +0 -0
  340. /package/dist/lib/node-esm/{app-graph-serializer-GXQYSQAZ.mjs.map → app-graph-serializer-RT2RQTV2.mjs.map} +0 -0
  341. /package/dist/lib/node-esm/{chunk-S2IELCDF.mjs.map → chunk-XYLDAH5C.mjs.map} +0 -0
  342. /package/dist/lib/node-esm/{react-root-UEN3LLJD.mjs.map → react-root-RILC5MBD.mjs.map} +0 -0
  343. /package/dist/lib/node-esm/{settings-DCTVM2BV.mjs.map → settings-3EKSEAAG.mjs.map} +0 -0
  344. /package/dist/types/src/components/{AwaitingObject.d.ts → AwaitingObject/AwaitingObject.d.ts} +0 -0
@@ -10,15 +10,14 @@ import React, { useCallback } from 'react';
10
10
  import { Capabilities, Capability } from '@dxos/app-framework';
11
11
  import { Surface, useAtomCapability, useSettingsState } from '@dxos/app-framework/ui';
12
12
  import { AppCapabilities } from '@dxos/app-toolkit';
13
- import { useLayout } from '@dxos/app-toolkit/ui';
14
13
  import { Database, Obj, type Ref } from '@dxos/echo';
15
14
  import { Collection, type View } from '@dxos/echo';
16
15
  import { findAnnotation } from '@dxos/effect';
17
- import { type Space, SpaceState, getSpace, isSpace, parseId, useSpace } from '@dxos/react-client/echo';
16
+ import { type Space, SpaceState, getSpace, isSpace, useSpace } from '@dxos/react-client/echo';
18
17
  import { Input } from '@dxos/react-ui';
19
18
  import { type FormFieldComponentProps, SelectField } from '@dxos/react-ui-form';
20
19
  import { HuePicker, IconPicker } from '@dxos/react-ui-pickers';
21
- import { ManagedCollection, ViewAnnotation } from '@dxos/schema';
20
+ import { ViewAnnotation } from '@dxos/schema';
22
21
  import { type JoinPanelProps } from '@dxos/shell/react';
23
22
 
24
23
  import {
@@ -51,7 +50,7 @@ import {
51
50
  SyncStatus,
52
51
  ViewEditor,
53
52
  } from '../../containers';
54
- import { useTypeOptions } from '../../hooks';
53
+ import { useActiveSpace, useTypeOptions } from '../../hooks';
55
54
  import { meta } from '../../meta';
56
55
  import {
57
56
  HueAnnotationId,
@@ -70,40 +69,22 @@ export default Capability.makeModule(
70
69
  Effect.fnUntraced(function* ({ createInvitationUrl }: ReactSurfaceOptions) {
71
70
  return Capability.contributes(Capabilities.ReactSurface, [
72
71
  Surface.create({
73
- id: `${meta.id}/article`,
74
- role: 'article',
75
- filter: (data): data is { subject: Space } =>
76
- // TODO(wittjosiah): Need to avoid shotgun parsing space state everywhere.
77
- isSpace(data.subject) && data.subject.state.get() === SpaceState.SPACE_READY,
78
- component: ({ data, role, ...rest }) => (
79
- <Surface.Surface
80
- data={{
81
- id: data.subject.id,
82
- subject: data.subject.properties[Collection.Collection.typename]?.target,
83
- }}
84
- role={role}
85
- {...rest}
86
- />
87
- ),
88
- }),
89
- Surface.create({
90
- id: `${meta.id}/collection-fallback`,
72
+ id: `${meta.id}.collection-fallback`,
91
73
  role: 'article',
92
74
  position: 'fallback',
93
- filter: (data): data is { subject: Collection.Collection | ManagedCollection.ManagedCollection } =>
94
- Obj.instanceOf(Collection.Collection, data.subject) ||
95
- Obj.instanceOf(ManagedCollection.ManagedCollection, data.subject),
75
+ filter: (data): data is { subject: Collection.Collection } =>
76
+ Obj.instanceOf(Collection.Collection, data.subject),
96
77
  component: ({ data }) => <CollectionArticle subject={data.subject} />,
97
78
  }),
98
79
  Surface.create({
99
- id: `${meta.id}/record-article`,
80
+ id: `${meta.id}.record-article`,
100
81
  role: 'article',
101
82
  position: 'fallback',
102
83
  filter: (data): data is { subject: Obj.Unknown } => Obj.isObject(data.subject),
103
84
  component: ({ data }) => <RecordArticle subject={data.subject} />,
104
85
  }),
105
86
  Surface.create({
106
- id: `${meta.id}/plugin-settings`,
87
+ id: `${meta.id}.plugin-settings`,
107
88
  role: 'article',
108
89
  filter: (data): data is { subject: AppCapabilities.Settings } =>
109
90
  AppCapabilities.isSettings(data.subject) && data.subject.prefix === meta.id,
@@ -113,21 +94,19 @@ export default Capability.makeModule(
113
94
  },
114
95
  }),
115
96
  Surface.create({
116
- id: `${meta.id}/companion/object-settings`,
97
+ id: `${meta.id}.companion.object-settings`,
117
98
  role: 'article',
118
99
  filter: (data): data is { companionTo: Obj.Unknown } =>
119
100
  Obj.isObject(data.companionTo) && data.subject === 'settings',
120
101
  component: ({ ref, data, role }) => <ObjectDetails subject={data.companionTo} role={role} ref={ref} />,
121
102
  }),
122
103
  Surface.create({
123
- id: `${meta.id}/space-settings-properties`,
104
+ id: `${meta.id}.space-settings-properties`,
124
105
  role: 'article',
125
- filter: (data): data is { subject: string } => data.subject === `${meta.id}/properties`,
106
+ filter: (data): data is { subject: string } => data.subject === `${meta.id}.general`,
126
107
  component: ({ ref }) => {
127
- const layout = useLayout();
128
- const { spaceId } = parseId(layout.workspace);
129
- const space = useSpace(spaceId);
130
- if (!space || !spaceId) {
108
+ const space = useActiveSpace();
109
+ if (!space) {
131
110
  return null;
132
111
  }
133
112
 
@@ -135,15 +114,13 @@ export default Capability.makeModule(
135
114
  },
136
115
  }),
137
116
  Surface.create({
138
- id: `${meta.id}/space-settings-members`,
117
+ id: `${meta.id}.space-settings-members`,
139
118
  role: 'article',
140
119
  position: 'hoist',
141
- filter: (data): data is { subject: string } => data.subject === `${meta.id}/members`,
120
+ filter: (data): data is { subject: string } => data.subject === `${meta.id}.members`,
142
121
  component: () => {
143
- const layout = useLayout();
144
- const { spaceId } = parseId(layout.workspace);
145
- const space = useSpace(spaceId);
146
- if (!space || !spaceId) {
122
+ const space = useActiveSpace();
123
+ if (!space) {
147
124
  return null;
148
125
  }
149
126
 
@@ -151,14 +128,12 @@ export default Capability.makeModule(
151
128
  },
152
129
  }),
153
130
  Surface.create({
154
- id: `${meta.id}/space-settings-schema`,
131
+ id: `${meta.id}.space-settings-schema`,
155
132
  role: 'article',
156
- filter: (data): data is { subject: string } => data.subject === `${meta.id}/schema`,
133
+ filter: (data): data is { subject: string } => data.subject === `${meta.id}.schema`,
157
134
  component: () => {
158
- const layout = useLayout();
159
- const { spaceId } = parseId(layout.workspace);
160
- const space = useSpace(spaceId);
161
- if (!space || !spaceId) {
135
+ const space = useActiveSpace();
136
+ if (!space) {
162
137
  return null;
163
138
  }
164
139
 
@@ -166,7 +141,7 @@ export default Capability.makeModule(
166
141
  },
167
142
  }),
168
143
  Surface.create({
169
- id: `${meta.id}/selected-objects`,
144
+ id: `${meta.id}.selected-objects`,
170
145
  role: 'article',
171
146
  filter: (
172
147
  data,
@@ -211,7 +186,7 @@ export default Capability.makeModule(
211
186
  component: ({ data }) => <CreateObjectDialog {...data.props} />,
212
187
  }),
213
188
  Surface.create({
214
- id: `${meta.id}/create-initial-space-form-[hue]`,
189
+ id: `${meta.id}.create-initial-space-form-[hue]`,
215
190
  role: 'form-input',
216
191
  filter: (data): data is { prop: string; schema: Schema.Schema<any> } => {
217
192
  const annotation = findAnnotation<boolean>((data.schema as Schema.Schema.All).ast, HueAnnotationId);
@@ -230,7 +205,7 @@ export default Capability.makeModule(
230
205
  },
231
206
  }),
232
207
  Surface.create({
233
- id: `${meta.id}/create-initial-space-form-[icon]`,
208
+ id: `${meta.id}.create-initial-space-form-[icon]`,
234
209
  role: 'form-input',
235
210
  filter: (data): data is { prop: string; schema: Schema.Schema<any> } => {
236
211
  const annotation = findAnnotation<boolean>((data.schema as Schema.Schema.All).ast, IconAnnotationId);
@@ -254,7 +229,7 @@ export default Capability.makeModule(
254
229
  },
255
230
  }),
256
231
  Surface.create({
257
- id: `${meta.id}/typename-form-input`,
232
+ id: `${meta.id}.typename-form-input`,
258
233
  role: 'form-input',
259
234
  filter: (
260
235
  data,
@@ -281,7 +256,7 @@ export default Capability.makeModule(
281
256
  },
282
257
  }),
283
258
  Surface.create({
284
- id: `${meta.id}/object-settings`,
259
+ id: `${meta.id}.object-settings`,
285
260
  role: 'object-settings',
286
261
  filter: (data): data is { subject: { view: Ref.Ref<View.View> } } => {
287
262
  if (!Obj.isObject(data.subject)) {
@@ -317,13 +292,13 @@ export default Capability.makeModule(
317
292
  component: ({ data }) => <ObjectRenamePopover object={data.props} />,
318
293
  }),
319
294
  Surface.create({
320
- id: `${meta.id}/menu-footer`,
295
+ id: `${meta.id}.menu-footer`,
321
296
  role: 'menu-footer',
322
297
  filter: (data): data is { subject: Obj.Unknown } => Obj.isObject(data.subject),
323
298
  component: ({ data }) => <MenuFooter object={data.subject} />,
324
299
  }),
325
300
  Surface.create({
326
- id: `${meta.id}/navtree-presence`,
301
+ id: `${meta.id}.navtree-presence`,
327
302
  role: 'navtree-item-end',
328
303
  filter: (data): data is { id: string; subject: Obj.Unknown; open?: boolean } =>
329
304
  typeof data.id === 'string' && Obj.isObject(data.subject),
@@ -334,7 +309,7 @@ export default Capability.makeModule(
334
309
  }),
335
310
  // TODO(wittjosiah): Attention glyph for non-echo items should be handled elsewhere.
336
311
  Surface.create({
337
- id: `${meta.id}/navtree-presence-fallback`,
312
+ id: `${meta.id}.navtree-presence-fallback`,
338
313
  role: 'navtree-item-end',
339
314
  position: 'fallback',
340
315
  filter: (data): data is { id: string; open?: boolean } => typeof data.id === 'string',
@@ -342,13 +317,13 @@ export default Capability.makeModule(
342
317
  }),
343
318
  // TODO(wittjosiah): Broken?
344
319
  Surface.create({
345
- id: `${meta.id}/navtree-sync-status`,
320
+ id: `${meta.id}.navtree-sync-status`,
346
321
  role: 'navtree-item-end',
347
322
  filter: (data): data is { subject: Space; open?: boolean } => isSpace(data.subject),
348
323
  component: ({ data }) => <InlineSyncStatus space={data.subject} open={data.open} />,
349
324
  }),
350
325
  Surface.create({
351
- id: `${meta.id}/navbar-presence`,
326
+ id: `${meta.id}.navbar-presence`,
352
327
  role: 'navbar-end',
353
328
  position: 'hoist',
354
329
  filter: (data): data is { subject: Space | Obj.Unknown } => isSpace(data.subject) || Obj.isObject(data.subject),
@@ -364,14 +339,14 @@ export default Capability.makeModule(
364
339
  },
365
340
  }),
366
341
  Surface.create({
367
- id: `${meta.id}/collection-section`,
342
+ id: `${meta.id}.collection-section`,
368
343
  role: 'section',
369
344
  filter: (data): data is { subject: Collection.Collection } =>
370
345
  Obj.instanceOf(Collection.Collection, data.subject),
371
346
  component: ({ data }) => <CollectionSection subject={data.subject} />,
372
347
  }),
373
348
  Surface.create({
374
- id: `${meta.id}/status`,
349
+ id: `${meta.id}.status`,
375
350
  role: 'status',
376
351
  component: () => <SyncStatus />,
377
352
  }),
@@ -5,9 +5,8 @@
5
5
  import * as Effect from 'effect/Effect';
6
6
 
7
7
  import { Capability } from '@dxos/app-framework';
8
- import { Collection, Obj, Ref, Type } from '@dxos/echo';
8
+ import { Collection, Obj, Ref } from '@dxos/echo';
9
9
  import { type Space } from '@dxos/react-client/echo';
10
- import { ManagedCollection } from '@dxos/schema';
11
10
 
12
11
  import { SpaceCapabilities } from '../../types';
13
12
 
@@ -15,7 +14,6 @@ export default Capability.makeModule(() =>
15
14
  Effect.succeed(
16
15
  Capability.contributes(SpaceCapabilities.Repair, async ({ space }: { space: Space }) => {
17
16
  await removeQueryCollections(space);
18
- await ensureSystemCollection(space);
19
17
  }),
20
18
  ),
21
19
  );
@@ -30,42 +28,15 @@ const removeQueryCollections = async (space: Space) => {
30
28
  }
31
29
 
32
30
  const objects = await Promise.all(rootCollection.objects.map((ref) => ref.load()));
33
- const queryCollections = objects.filter((object) => Obj.getTypename(object) === 'dxos.org/type/QueryCollection');
31
+ const queryCollections = objects.filter((object) => Obj.getTypename(object) === 'org.dxos.type.query-collection');
34
32
  if (queryCollections.length === 0) {
35
33
  return;
36
34
  }
37
35
 
38
36
  Obj.change(rootCollection, (c) => {
39
37
  c.objects = objects
40
- .filter((object) => Obj.getTypename(object) !== 'dxos.org/type/QueryCollection')
38
+ .filter((object) => Obj.getTypename(object) !== 'org.dxos.type.query-collection')
41
39
  .map((object) => Ref.make(object));
42
40
  });
43
41
  queryCollections.forEach((object) => space.db.remove(object));
44
42
  };
45
-
46
- /**
47
- * Ensure the root collection has a system collection for StoredSchema.
48
- */
49
- const ensureSystemCollection = async (space: Space) => {
50
- const rootCollection: Collection.Collection = await space.properties[Collection.Collection.typename]?.load();
51
- if (!rootCollection) {
52
- return;
53
- }
54
-
55
- const objects = await Promise.all(rootCollection.objects.map((ref) => ref.load()));
56
- const records = objects.find(
57
- (object) =>
58
- Obj.instanceOf(ManagedCollection.ManagedCollection, object) &&
59
- object.key === Type.getTypename(Type.PersistentType),
60
- );
61
- if (records) {
62
- return;
63
- }
64
-
65
- const recordsCollectionRef = Ref.make(
66
- ManagedCollection.makeManagedCollection({ key: Type.getTypename(Type.PersistentType) }),
67
- );
68
- Obj.change(rootCollection, (c) => {
69
- c.objects.push(recordsCollectionRef);
70
- });
71
- };
@@ -6,7 +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 { AppCapabilities, LayoutOperation } from '@dxos/app-toolkit';
9
+ import { AppCapabilities, LayoutOperation, getSpacePath } from '@dxos/app-toolkit';
10
10
  import { SubscriptionList } from '@dxos/async';
11
11
  import { Filter, Obj } from '@dxos/echo';
12
12
  import { log } from '@dxos/log';
@@ -48,7 +48,7 @@ export default Capability.makeModule(
48
48
  // Check if deck state indicates we should switch to default space.
49
49
  const layout = registry.get(layoutAtom);
50
50
  if (layout.workspace === 'default') {
51
- yield* invoke(LayoutOperation.SwitchWorkspace, { subject: defaultSpace.id });
51
+ yield* invoke(LayoutOperation.SwitchWorkspace, { subject: getSpacePath(defaultSpace.id) });
52
52
  }
53
53
 
54
54
  // Initialize space sharing lock in default space.
@@ -25,7 +25,7 @@ export default Capability.makeModule(
25
25
 
26
26
  // Persisted state using KVS store.
27
27
  const stateAtom = createKvsStore({
28
- key: `${meta.id}/state`,
28
+ key: `${meta.id}.state`,
29
29
  schema: SpaceCapabilities.StateSchema,
30
30
  defaultValue: () => ({ ...defaultSpaceState }),
31
31
  });
@@ -42,7 +42,9 @@ export default Capability.makeModule(
42
42
  const manager = yield* Capability.get(Capabilities.PluginManager);
43
43
  // Update navigableCollections based on plugin state.
44
44
  const updateNavigableCollections = () => {
45
- const enabled = manager.getEnabled().includes('dxos.org/plugin/stack');
45
+ const enabled =
46
+ manager.getEnabled().includes('org.dxos.plugin.stack') ||
47
+ manager.getEnabled().includes('org.dxos.plugin.simple-layout');
46
48
  const current = registry.get(ephemeralAtom);
47
49
  if (enabled !== current.navigableCollections) {
48
50
  registry.update(ephemeralAtom, (c) => ({ ...c, navigableCollections: enabled }));
@@ -28,7 +28,6 @@ import { printObject } from './util';
28
28
  export type Metadata = {
29
29
  createObject: CreateObject;
30
30
  inputSchema?: Schema.Schema.AnyNoContext;
31
- addToCollectionOnCreate?: boolean;
32
31
  };
33
32
 
34
33
  export const add = Command.make(
@@ -19,7 +19,7 @@ export const handler = ({ spaceId }: { spaceId: Key.SpaceId }) =>
19
19
  const space = yield* getSpace(spaceId);
20
20
 
21
21
  // Flush and sync before closing
22
- yield* Effect.tryPromise(() => space.db.flush({ indexes: true }));
22
+ yield* Effect.tryPromise(() => space.db.flush());
23
23
  yield* waitForSync(space);
24
24
 
25
25
  yield* Effect.tryPromise(() => space.close());
@@ -48,7 +48,7 @@ export const handler = Effect.fn(function* ({ name }: { name: Option.Option<stri
48
48
  }
49
49
 
50
50
  // Flush and sync before completion
51
- yield* Effect.tryPromise(() => space.db.flush({ indexes: true }));
51
+ yield* Effect.tryPromise(() => space.db.flush());
52
52
  yield* waitForSync(space);
53
53
  });
54
54
 
@@ -88,7 +88,7 @@ export const handler = Effect.fn(function* ({
88
88
  }
89
89
 
90
90
  // Flush and sync after joining
91
- yield* Effect.tryPromise(() => space.db.flush({ indexes: true }));
91
+ yield* Effect.tryPromise(() => space.db.flush());
92
92
  yield* waitForSync(space);
93
93
 
94
94
  if (json) {
@@ -20,7 +20,7 @@ export const handler = ({ spaceId }: { spaceId: Key.SpaceId }) =>
20
20
  yield* Effect.tryPromise(() => space.open());
21
21
 
22
22
  // Flush and sync after opening
23
- yield* Effect.tryPromise(() => space.db.flush({ indexes: true }));
23
+ yield* Effect.tryPromise(() => space.db.flush());
24
24
  yield* waitForSync(space);
25
25
 
26
26
  if (json) {
package/src/cli/plugin.ts CHANGED
@@ -41,7 +41,6 @@ export const SpacePlugin = Plugin.define<SpacePluginOptions>(meta).pipe(
41
41
  id: Collection.Collection.typename,
42
42
  metadata: {
43
43
  createObject: ((props) => Effect.sync(() => Collection.make(props))) satisfies CreateObject,
44
- addToCollectionOnCreate: true,
45
44
  },
46
45
  },
47
46
  }),
@@ -13,8 +13,8 @@ import { Filter, useQuery } from '@dxos/react-client/echo';
13
13
  import { Button, Icon, Toast, useTranslation } from '@dxos/react-ui';
14
14
  import { osTranslations } from '@dxos/ui-theme';
15
15
 
16
- import { meta } from '../meta';
17
- import { SpaceOperation } from '../types';
16
+ import { meta } from '../../meta';
17
+ import { SpaceOperation } from '../../types';
18
18
 
19
19
  const WAIT_FOR_OBJECT_TIMEOUT = 3 * 60 * 1_000;
20
20
  const TOAST_TIMEOUT = 4 * 60 * 1_000;
@@ -0,0 +1,5 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ export * from './AwaitingObject';
@@ -29,7 +29,6 @@ export type CreateObjectOption = {
29
29
  export type Metadata = {
30
30
  createObject: CreateObject;
31
31
  inputSchema?: Schema.Schema.AnyNoContext;
32
- addToCollectionOnCreate?: boolean;
33
32
  icon?: string;
34
33
  };
35
34
 
@@ -85,6 +84,10 @@ export const CreateObjectPanel = ({
85
84
  [resolve, onCreateObject],
86
85
  );
87
86
 
87
+ const inputSchema = useMemo(
88
+ () => (metadata && typeof metadata === 'object' && metadata.inputSchema ? omitId(metadata.inputSchema) : undefined),
89
+ [metadata],
90
+ );
88
91
  const inputSurfaceLookup = useInputSurfaceLookup({ target });
89
92
 
90
93
  // TODO(wittjosiah): These inputs should be rolled into a `Form` once it supports the necessary variants.
@@ -101,7 +104,7 @@ export const CreateObjectPanel = ({
101
104
  <Form.Root
102
105
  testId='create-object-form'
103
106
  autoFocus
104
- schema={omitId(metadata.inputSchema)}
107
+ schema={inputSchema}
105
108
  defaultValues={initialFormValues}
106
109
  db={Obj.isObject(target) ? Obj.getDatabase(target) : target}
107
110
  fieldProvider={inputSurfaceLookup}
@@ -7,8 +7,8 @@ import React, { useEffect, useState } from 'react';
7
7
 
8
8
  import { type Obj, Tag } from '@dxos/echo';
9
9
  import { useClientStory, withClientProvider } from '@dxos/react-client/testing';
10
- import { withTheme } from '@dxos/react-ui/testing';
11
- import { render } from '@dxos/storybook-utils';
10
+ import { Loading, withTheme } from '@dxos/react-ui/testing';
11
+
12
12
  import { Pipeline } from '@dxos/types';
13
13
 
14
14
  import { translations } from '../../translations';
@@ -27,7 +27,7 @@ const DefaultStory = () => {
27
27
  }, [space, object]);
28
28
 
29
29
  if (!object) {
30
- return null;
30
+ return <Loading data={{ space: !!space, object: !!object }} />;
31
31
  }
32
32
 
33
33
  return <BaseObjectSettings object={object} classNames='w-[20rem]' />;
@@ -36,7 +36,7 @@ const DefaultStory = () => {
36
36
  const meta = {
37
37
  title: 'plugins/plugin-space/components/BaseObjectSettings',
38
38
  component: BaseObjectSettings as any,
39
- render: render(DefaultStory),
39
+ render: DefaultStory,
40
40
  decorators: [
41
41
  withTheme(),
42
42
  withClientProvider({
@@ -35,7 +35,7 @@ export const BaseObjectSettings = ({ classNames, children, object }: BaseObjectS
35
35
  return Function.pipe(
36
36
  Obj.getSchema(object),
37
37
  Option.fromNullable,
38
- Option.map((schema) => BaseSchema.pipe(Schema.extend(schema))),
38
+ Option.map((schema) => omitId(BaseSchema.pipe(Schema.extend(schema)))),
39
39
  Option.getOrUndefined,
40
40
  );
41
41
  }, [object]);
@@ -87,7 +87,7 @@ export const BaseObjectSettings = ({ classNames, children, object }: BaseObjectS
87
87
  Obj.change(object, () => {
88
88
  for (const path of nonTagPaths) {
89
89
  const parts = splitJsonPath(path);
90
- const value = Obj.getValue(values, parts);
90
+ const value = Obj.getValue(values as any, parts);
91
91
  Obj.setValue(object, parts, value);
92
92
  }
93
93
  });
@@ -102,8 +102,8 @@ export const BaseObjectSettings = ({ classNames, children, object }: BaseObjectS
102
102
 
103
103
  return (
104
104
  <Form.Root
105
- schema={omitId(formSchema)}
106
- defaultValues={values}
105
+ schema={formSchema}
106
+ defaultValues={values as any}
107
107
  createOptionIcon='ph--plus--regular'
108
108
  createOptionLabel={['add tag label', { ns: pluginMeta.id }]}
109
109
  createInitialValuePath='label'
@@ -23,9 +23,11 @@ export const ObjectForm = ({ object, schema }: ObjectFormProps) => {
23
23
 
24
24
  const formSchema = useMemo(
25
25
  () =>
26
- Schema.Struct({
27
- tags: Schema.Array(Ref.Ref(Tag.Tag)).pipe(Schema.optional),
28
- }).pipe(Schema.extend(omitId(schema))),
26
+ omitId(
27
+ Schema.Struct({
28
+ tags: Schema.Array(Ref.Ref(Tag.Tag)).pipe(Schema.optional),
29
+ }).pipe(Schema.extend(schema)),
30
+ ),
29
31
  [schema],
30
32
  );
31
33
 
@@ -78,7 +80,7 @@ export const ObjectForm = ({ object, schema }: ObjectFormProps) => {
78
80
 
79
81
  return (
80
82
  <Form.Root
81
- schema={omitId(formSchema)}
83
+ schema={formSchema}
82
84
  defaultValues={values}
83
85
  createOptionIcon='ph--plus--regular'
84
86
  createOptionLabel={['add tag label', { ns: pluginMeta.id }]}
package/src/constants.ts CHANGED
@@ -4,8 +4,8 @@
4
4
 
5
5
  import { meta } from './meta';
6
6
 
7
- export const CREATE_OBJECT_DIALOG = `${meta.id}/CreateObjectDialog`;
8
- export const CREATE_SPACE_DIALOG = `${meta.id}/CreateSpaceDialog`;
9
- export const JOIN_DIALOG = `${meta.id}/JoinDialog`;
10
- export const OBJECT_RENAME_POPOVER = `${meta.id}/ObjectRenamePopover`;
11
- export const SPACE_RENAME_POPOVER = `${meta.id}/SpaceRenamePopover`;
7
+ export const CREATE_OBJECT_DIALOG = `${meta.id}.CreateObjectDialog`;
8
+ export const CREATE_SPACE_DIALOG = `${meta.id}.CreateSpaceDialog`;
9
+ export const JOIN_DIALOG = `${meta.id}.JoinDialog`;
10
+ export const OBJECT_RENAME_POPOVER = `${meta.id}.ObjectRenamePopover`;
11
+ export const SPACE_RENAME_POPOVER = `${meta.id}.SpaceRenamePopover`;
@@ -7,15 +7,12 @@ import React, { useCallback, useMemo } from 'react';
7
7
  import { useCapabilities, useOperationInvoker } from '@dxos/app-framework/ui';
8
8
  import { AppCapabilities, LayoutOperation } from '@dxos/app-toolkit';
9
9
  import { type SurfaceComponentProps } from '@dxos/app-toolkit/ui';
10
- import { Feed, Filter, Obj } from '@dxos/echo';
10
+ import { Obj } from '@dxos/echo';
11
11
  import { type Collection } from '@dxos/echo';
12
- import { useClient } from '@dxos/react-client';
13
- import { getSpace, useQuery } from '@dxos/react-client/echo';
14
12
  import { Panel, ScrollArea, Toolbar, toLocalizedString, useTranslation } from '@dxos/react-ui';
15
13
  import { Card } from '@dxos/react-ui';
16
14
  import { Mosaic, type MosaicStackTileComponent } from '@dxos/react-ui-mosaic';
17
15
  import { SearchList, useSearchListResults } from '@dxos/react-ui-searchlist';
18
- import { ManagedCollection } from '@dxos/schema';
19
16
  import { getStyles } from '@dxos/ui-theme';
20
17
 
21
18
  import { meta } from '../../meta';
@@ -31,9 +28,7 @@ const useMetadataResolver = () => {
31
28
  /**
32
29
  * Article view for collections.
33
30
  */
34
- export const CollectionArticle = ({
35
- subject,
36
- }: SurfaceComponentProps<Collection.Collection | ManagedCollection.ManagedCollection>) => {
31
+ export const CollectionArticle = ({ subject }: SurfaceComponentProps<Collection.Collection>) => {
37
32
  const { t } = useTranslation(meta.id);
38
33
  const resolveMetadata = useMetadataResolver();
39
34
  const { items, handleSearch } = useCollectionItems(subject, resolveMetadata);
@@ -101,58 +96,16 @@ const ObjectTile: MosaicStackTileComponent<ObjectItem> = (props) => {
101
96
  );
102
97
  };
103
98
 
104
- /**
105
- * Hook to get items from a regular collection.
106
- */
107
- const useRegularCollectionItems = (collection: Collection.Collection): Obj.Unknown[] => {
108
- return useMemo(
109
- () => (collection.objects ?? []).map((ref) => ref.target).filter((obj): obj is Obj.Unknown => Obj.isObject(obj)),
110
- [collection.objects],
111
- );
112
- };
113
-
114
- /**
115
- * Hook to get items from a managed collection by querying the space.
116
- */
117
- const useManagedCollectionItems = (collection: ManagedCollection.ManagedCollection): Obj.Unknown[] => {
118
- const client = useClient();
119
- const space = getSpace(collection);
120
- const [typename, feedKind] = collection.key.split('~');
121
-
122
- const schema = useMemo(
123
- () => client.graph.schemaRegistry.query({ typename, location: ['runtime'] }).runSync()[0],
124
- [client, typename],
125
- );
126
-
127
- const filter = useMemo(
128
- () =>
129
- typename === Feed.Feed.typename
130
- ? Filter.type(Feed.Feed, { kind: feedKind })
131
- : schema
132
- ? Filter.type(schema)
133
- : Filter.nothing(),
134
- [typename, schema, feedKind],
135
- );
136
-
137
- return useQuery(space?.db, filter);
138
- };
139
-
140
99
  type MetadataResolver = (typename: string) => { icon?: string; iconHue?: string };
141
100
 
142
101
  /**
143
102
  * Combined hook to get collection items with search/filter support.
144
103
  */
145
- const useCollectionItems = (
146
- collection: Collection.Collection | ManagedCollection.ManagedCollection,
147
- resolveMetadata: MetadataResolver,
148
- ) => {
149
- const isManaged = Obj.instanceOf(ManagedCollection.ManagedCollection, collection);
150
-
151
- // Call both hooks unconditionally to satisfy React's rules of hooks.
152
- const regularObjects = useRegularCollectionItems(collection as Collection.Collection);
153
- const managedObjects = useManagedCollectionItems(collection as ManagedCollection.ManagedCollection);
154
-
155
- const objects = isManaged ? managedObjects : regularObjects;
104
+ const useCollectionItems = (collection: Collection.Collection, resolveMetadata: MetadataResolver) => {
105
+ const objects = useMemo(
106
+ () => (collection.objects ?? []).map((ref) => ref.target).filter((obj): obj is Obj.Unknown => Obj.isObject(obj)),
107
+ [collection.objects],
108
+ );
156
109
 
157
110
  // Convert objects to items with resolved metadata.
158
111
  const items = useMemo(