@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
@@ -4,19 +4,20 @@ import {
4
4
  JOIN_DIALOG,
5
5
  OBJECT_RENAME_POPOVER,
6
6
  SPACE_RENAME_POPOVER
7
- } from "./chunk-ASV6DYFH.mjs";
7
+ } from "./chunk-RJUOHI3B.mjs";
8
8
  import {
9
+ useActiveSpace,
9
10
  useTypeOptions
10
- } from "./chunk-XIIYC7P5.mjs";
11
+ } from "./chunk-ICXESMDI.mjs";
11
12
  import {
12
13
  HueAnnotationId,
13
14
  IconAnnotationId,
14
15
  SpaceCapabilities,
15
16
  TypeInputOptionsAnnotationId
16
- } from "./chunk-USN5QKRV.mjs";
17
+ } from "./chunk-6IT5IBB5.mjs";
17
18
  import {
18
19
  meta
19
- } from "./chunk-HSMQFM57.mjs";
20
+ } from "./chunk-CBWGVOJE.mjs";
20
21
 
21
22
  // src/capabilities/react-surface/react-surface.tsx
22
23
  import * as Effect from "effect/Effect";
@@ -25,69 +26,52 @@ import React, { useCallback } from "react";
25
26
  import { Capabilities, Capability } from "@dxos/app-framework";
26
27
  import { Surface, useAtomCapability, useSettingsState } from "@dxos/app-framework/ui";
27
28
  import { AppCapabilities } from "@dxos/app-toolkit";
28
- import { useLayout } from "@dxos/app-toolkit/ui";
29
29
  import { Database, Obj } from "@dxos/echo";
30
30
  import { Collection } from "@dxos/echo";
31
31
  import { findAnnotation } from "@dxos/effect";
32
- import { SpaceState, getSpace, isSpace, parseId, useSpace } from "@dxos/react-client/echo";
32
+ import { SpaceState, getSpace, isSpace, useSpace } from "@dxos/react-client/echo";
33
33
  import { Input } from "@dxos/react-ui";
34
34
  import { SelectField } from "@dxos/react-ui-form";
35
35
  import { HuePicker, IconPicker } from "@dxos/react-ui-pickers";
36
- import { ManagedCollection, ViewAnnotation } from "@dxos/schema";
36
+ import { ViewAnnotation } from "@dxos/schema";
37
37
 
38
38
  // src/containers/index.ts
39
39
  import { lazy } from "react";
40
- var CollectionArticle = lazy(() => import("./CollectionArticle-WASDM637.mjs"));
41
- var CollectionSection = lazy(() => import("./CollectionSection-LK4O6QDD.mjs"));
42
- var CreateObjectDialog = lazy(() => import("./CreateObjectDialog-MA6DPYMD.mjs"));
43
- var CreateSpaceDialog = lazy(() => import("./CreateSpaceDialog-WCEICWIE.mjs"));
44
- var InlineSyncStatus = lazy(() => import("./InlineSyncStatus-BT7BRBCO.mjs"));
45
- var JoinDialog = lazy(() => import("./JoinDialog-PMCAIRCU.mjs"));
46
- var MembersContainer = lazy(() => import("./MembersContainer-MMFCXLVZ.mjs"));
47
- var MenuFooter = lazy(() => import("./MenuFooter-HYBTNOBT.mjs"));
48
- var ObjectCardStack = lazy(() => import("./ObjectCardStack-CHWNLUYQ.mjs"));
49
- var ObjectDetails = lazy(() => import("./ObjectDetails-YUGVDNSA.mjs"));
50
- var ObjectRenamePopover = lazy(() => import("./ObjectRenamePopover-RQUOVPFH.mjs"));
51
- var RecordArticle = lazy(() => import("./RecordArticle-ONWKYM3Z.mjs"));
52
- var SchemaContainer = lazy(() => import("./SchemaContainer-62AJXKAF.mjs"));
53
- var SmallPresenceLive = lazy(() => import("./SmallPresenceLive-LZD2NGKK.mjs"));
54
- var SpacePluginSettings = lazy(() => import("./SpacePluginSettings-BRJTADV5.mjs"));
55
- var SpacePresence = lazy(() => import("./SpacePresence-MLU576L6.mjs"));
56
- var SpaceRenamePopover = lazy(() => import("./SpaceRenamePopover-SAKMPDLX.mjs"));
57
- var SpaceSettingsContainer = lazy(() => import("./SpaceSettingsContainer-UBMVKUPR.mjs"));
58
- var SyncStatus = lazy(() => import("./SyncStatus-5UQ7CIII.mjs"));
59
- var ViewEditor = lazy(() => import("./ViewEditor-F74RR542.mjs"));
40
+ var CollectionArticle = lazy(() => import("./CollectionArticle-WPLUW5HF.mjs"));
41
+ var CollectionSection = lazy(() => import("./CollectionSection-H2MBNI63.mjs"));
42
+ var CreateObjectDialog = lazy(() => import("./CreateObjectDialog-YUBUWSEL.mjs"));
43
+ var CreateSpaceDialog = lazy(() => import("./CreateSpaceDialog-3M2LAWV6.mjs"));
44
+ var InlineSyncStatus = lazy(() => import("./InlineSyncStatus-K5MZ3YMZ.mjs"));
45
+ var JoinDialog = lazy(() => import("./JoinDialog-PBK2RE5F.mjs"));
46
+ var MembersContainer = lazy(() => import("./MembersContainer-OGYV2L4M.mjs"));
47
+ var MenuFooter = lazy(() => import("./MenuFooter-XCBDK7WP.mjs"));
48
+ var ObjectCardStack = lazy(() => import("./ObjectCardStack-OMXF2DSG.mjs"));
49
+ var ObjectDetails = lazy(() => import("./ObjectDetails-QFTQQN4W.mjs"));
50
+ var ObjectRenamePopover = lazy(() => import("./ObjectRenamePopover-JNPJIFIR.mjs"));
51
+ var RecordArticle = lazy(() => import("./RecordArticle-BO2XHBFN.mjs"));
52
+ var SchemaContainer = lazy(() => import("./SchemaContainer-QWCSIZBS.mjs"));
53
+ var SmallPresenceLive = lazy(() => import("./SmallPresenceLive-AHHLBAUP.mjs"));
54
+ var SpacePluginSettings = lazy(() => import("./SpacePluginSettings-QGZKNQLK.mjs"));
55
+ var SpacePresence = lazy(() => import("./SpacePresence-JIWLBUWO.mjs"));
56
+ var SpaceRenamePopover = lazy(() => import("./SpaceRenamePopover-ZL6RRZ2B.mjs"));
57
+ var SpaceSettingsContainer = lazy(() => import("./SpaceSettingsContainer-MIOOT63N.mjs"));
58
+ var SyncStatus = lazy(() => import("./SyncStatus-6N7JJ7XF.mjs"));
59
+ var ViewEditor = lazy(() => import("./ViewEditor-3FX5HDRT.mjs"));
60
60
 
61
61
  // src/capabilities/react-surface/react-surface.tsx
62
62
  var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* ({ createInvitationUrl }) {
63
63
  return Capability.contributes(Capabilities.ReactSurface, [
64
64
  Surface.create({
65
- id: `${meta.id}/article`,
66
- role: "article",
67
- filter: (data) => (
68
- // TODO(wittjosiah): Need to avoid shotgun parsing space state everywhere.
69
- isSpace(data.subject) && data.subject.state.get() === SpaceState.SPACE_READY
70
- ),
71
- component: ({ data, role, ...rest }) => /* @__PURE__ */ React.createElement(Surface.Surface, {
72
- data: {
73
- id: data.subject.id,
74
- subject: data.subject.properties[Collection.Collection.typename]?.target
75
- },
76
- role,
77
- ...rest
78
- })
79
- }),
80
- Surface.create({
81
- id: `${meta.id}/collection-fallback`,
65
+ id: `${meta.id}.collection-fallback`,
82
66
  role: "article",
83
67
  position: "fallback",
84
- filter: (data) => Obj.instanceOf(Collection.Collection, data.subject) || Obj.instanceOf(ManagedCollection.ManagedCollection, data.subject),
68
+ filter: (data) => Obj.instanceOf(Collection.Collection, data.subject),
85
69
  component: ({ data }) => /* @__PURE__ */ React.createElement(CollectionArticle, {
86
70
  subject: data.subject
87
71
  })
88
72
  }),
89
73
  Surface.create({
90
- id: `${meta.id}/record-article`,
74
+ id: `${meta.id}.record-article`,
91
75
  role: "article",
92
76
  position: "fallback",
93
77
  filter: (data) => Obj.isObject(data.subject),
@@ -96,7 +80,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* ({
96
80
  })
97
81
  }),
98
82
  Surface.create({
99
- id: `${meta.id}/plugin-settings`,
83
+ id: `${meta.id}.plugin-settings`,
100
84
  role: "article",
101
85
  filter: (data) => AppCapabilities.isSettings(data.subject) && data.subject.prefix === meta.id,
102
86
  component: ({ data: { subject } }) => {
@@ -108,7 +92,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* ({
108
92
  }
109
93
  }),
110
94
  Surface.create({
111
- id: `${meta.id}/companion/object-settings`,
95
+ id: `${meta.id}.companion.object-settings`,
112
96
  role: "article",
113
97
  filter: (data) => Obj.isObject(data.companionTo) && data.subject === "settings",
114
98
  component: ({ ref, data, role }) => /* @__PURE__ */ React.createElement(ObjectDetails, {
@@ -118,14 +102,12 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* ({
118
102
  })
119
103
  }),
120
104
  Surface.create({
121
- id: `${meta.id}/space-settings-properties`,
105
+ id: `${meta.id}.space-settings-properties`,
122
106
  role: "article",
123
- filter: (data) => data.subject === `${meta.id}/properties`,
107
+ filter: (data) => data.subject === `${meta.id}.general`,
124
108
  component: ({ ref }) => {
125
- const layout = useLayout();
126
- const { spaceId } = parseId(layout.workspace);
127
- const space = useSpace(spaceId);
128
- if (!space || !spaceId) {
109
+ const space = useActiveSpace();
110
+ if (!space) {
129
111
  return null;
130
112
  }
131
113
  return /* @__PURE__ */ React.createElement(SpaceSettingsContainer, {
@@ -134,15 +116,13 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* ({
134
116
  }
135
117
  }),
136
118
  Surface.create({
137
- id: `${meta.id}/space-settings-members`,
119
+ id: `${meta.id}.space-settings-members`,
138
120
  role: "article",
139
121
  position: "hoist",
140
- filter: (data) => data.subject === `${meta.id}/members`,
122
+ filter: (data) => data.subject === `${meta.id}.members`,
141
123
  component: () => {
142
- const layout = useLayout();
143
- const { spaceId } = parseId(layout.workspace);
144
- const space = useSpace(spaceId);
145
- if (!space || !spaceId) {
124
+ const space = useActiveSpace();
125
+ if (!space) {
146
126
  return null;
147
127
  }
148
128
  return /* @__PURE__ */ React.createElement(MembersContainer, {
@@ -152,14 +132,12 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* ({
152
132
  }
153
133
  }),
154
134
  Surface.create({
155
- id: `${meta.id}/space-settings-schema`,
135
+ id: `${meta.id}.space-settings-schema`,
156
136
  role: "article",
157
- filter: (data) => data.subject === `${meta.id}/schema`,
137
+ filter: (data) => data.subject === `${meta.id}.schema`,
158
138
  component: () => {
159
- const layout = useLayout();
160
- const { spaceId } = parseId(layout.workspace);
161
- const space = useSpace(spaceId);
162
- if (!space || !spaceId) {
139
+ const space = useActiveSpace();
140
+ if (!space) {
163
141
  return null;
164
142
  }
165
143
  return /* @__PURE__ */ React.createElement(SchemaContainer, {
@@ -168,7 +146,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* ({
168
146
  }
169
147
  }),
170
148
  Surface.create({
171
- id: `${meta.id}/selected-objects`,
149
+ id: `${meta.id}.selected-objects`,
172
150
  role: "article",
173
151
  filter: (data) => {
174
152
  if (data.subject !== "selected-objects" || !Obj.isObject(data.companionTo)) {
@@ -204,7 +182,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* ({
204
182
  component: ({ data }) => /* @__PURE__ */ React.createElement(CreateObjectDialog, data.props)
205
183
  }),
206
184
  Surface.create({
207
- id: `${meta.id}/create-initial-space-form-[hue]`,
185
+ id: `${meta.id}.create-initial-space-form-[hue]`,
208
186
  role: "form-input",
209
187
  filter: (data) => {
210
188
  const annotation = findAnnotation(data.schema.ast, HueAnnotationId);
@@ -227,7 +205,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* ({
227
205
  }
228
206
  }),
229
207
  Surface.create({
230
- id: `${meta.id}/create-initial-space-form-[icon]`,
208
+ id: `${meta.id}.create-initial-space-form-[icon]`,
231
209
  role: "form-input",
232
210
  filter: (data) => {
233
211
  const annotation = findAnnotation(data.schema.ast, IconAnnotationId);
@@ -250,7 +228,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* ({
250
228
  }
251
229
  }),
252
230
  Surface.create({
253
- id: `${meta.id}/typename-form-input`,
231
+ id: `${meta.id}.typename-form-input`,
254
232
  role: "form-input",
255
233
  filter: (data) => {
256
234
  if (data.prop !== "typename") {
@@ -275,7 +253,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* ({
275
253
  }
276
254
  }),
277
255
  Surface.create({
278
- id: `${meta.id}/object-settings`,
256
+ id: `${meta.id}.object-settings`,
279
257
  role: "object-settings",
280
258
  filter: (data) => {
281
259
  if (!Obj.isObject(data.subject)) {
@@ -311,7 +289,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* ({
311
289
  })
312
290
  }),
313
291
  Surface.create({
314
- id: `${meta.id}/menu-footer`,
292
+ id: `${meta.id}.menu-footer`,
315
293
  role: "menu-footer",
316
294
  filter: (data) => Obj.isObject(data.subject),
317
295
  component: ({ data }) => /* @__PURE__ */ React.createElement(MenuFooter, {
@@ -319,7 +297,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* ({
319
297
  })
320
298
  }),
321
299
  Surface.create({
322
- id: `${meta.id}/navtree-presence`,
300
+ id: `${meta.id}.navtree-presence`,
323
301
  role: "navtree-item-end",
324
302
  filter: (data) => typeof data.id === "string" && Obj.isObject(data.subject),
325
303
  component: ({ data }) => {
@@ -333,7 +311,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* ({
333
311
  }),
334
312
  // TODO(wittjosiah): Attention glyph for non-echo items should be handled elsewhere.
335
313
  Surface.create({
336
- id: `${meta.id}/navtree-presence-fallback`,
314
+ id: `${meta.id}.navtree-presence-fallback`,
337
315
  role: "navtree-item-end",
338
316
  position: "fallback",
339
317
  filter: (data) => typeof data.id === "string",
@@ -344,7 +322,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* ({
344
322
  }),
345
323
  // TODO(wittjosiah): Broken?
346
324
  Surface.create({
347
- id: `${meta.id}/navtree-sync-status`,
325
+ id: `${meta.id}.navtree-sync-status`,
348
326
  role: "navtree-item-end",
349
327
  filter: (data) => isSpace(data.subject),
350
328
  component: ({ data }) => /* @__PURE__ */ React.createElement(InlineSyncStatus, {
@@ -353,7 +331,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* ({
353
331
  })
354
332
  }),
355
333
  Surface.create({
356
- id: `${meta.id}/navbar-presence`,
334
+ id: `${meta.id}.navbar-presence`,
357
335
  role: "navbar-end",
358
336
  position: "hoist",
359
337
  filter: (data) => isSpace(data.subject) || Obj.isObject(data.subject),
@@ -366,7 +344,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* ({
366
344
  }
367
345
  }),
368
346
  Surface.create({
369
- id: `${meta.id}/collection-section`,
347
+ id: `${meta.id}.collection-section`,
370
348
  role: "section",
371
349
  filter: (data) => Obj.instanceOf(Collection.Collection, data.subject),
372
350
  component: ({ data }) => /* @__PURE__ */ React.createElement(CollectionSection, {
@@ -374,7 +352,7 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* ({
374
352
  })
375
353
  }),
376
354
  Surface.create({
377
- id: `${meta.id}/status`,
355
+ id: `${meta.id}.status`,
378
356
  role: "status",
379
357
  component: () => /* @__PURE__ */ React.createElement(SyncStatus, null)
380
358
  })
@@ -383,4 +361,4 @@ var react_surface_default = Capability.makeModule(Effect.fnUntraced(function* ({
383
361
  export {
384
362
  react_surface_default as default
385
363
  };
386
- //# sourceMappingURL=react-surface-NJ23NZFF.mjs.map
364
+ //# sourceMappingURL=react-surface-E4TAFED5.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/react-surface/react-surface.tsx", "../../../src/containers/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\nimport type * as Schema from 'effect/Schema';\nimport React, { useCallback } from 'react';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { Surface, useAtomCapability, useSettingsState } from '@dxos/app-framework/ui';\nimport { AppCapabilities } from '@dxos/app-toolkit';\nimport { Database, Obj, type Ref } from '@dxos/echo';\nimport { Collection, type View } from '@dxos/echo';\nimport { findAnnotation } from '@dxos/effect';\nimport { type Space, SpaceState, getSpace, isSpace, useSpace } from '@dxos/react-client/echo';\nimport { Input } from '@dxos/react-ui';\nimport { type FormFieldComponentProps, SelectField } from '@dxos/react-ui-form';\nimport { HuePicker, IconPicker } from '@dxos/react-ui-pickers';\nimport { ViewAnnotation } from '@dxos/schema';\nimport { type JoinPanelProps } from '@dxos/shell/react';\n\nimport {\n CREATE_OBJECT_DIALOG,\n CREATE_SPACE_DIALOG,\n JOIN_DIALOG,\n OBJECT_RENAME_POPOVER,\n SPACE_RENAME_POPOVER,\n} from '../../constants';\nimport {\n CollectionArticle,\n CollectionSection,\n CreateObjectDialog,\n type CreateObjectDialogProps,\n CreateSpaceDialog,\n InlineSyncStatus,\n JoinDialog,\n MembersContainer,\n MenuFooter,\n ObjectCardStack,\n ObjectDetails,\n ObjectRenamePopover,\n RecordArticle,\n SchemaContainer,\n SmallPresenceLive,\n SpacePluginSettings,\n SpacePresence,\n SpaceRenamePopover,\n SpaceSettingsContainer,\n SyncStatus,\n ViewEditor,\n} from '../../containers';\nimport { useActiveSpace, useTypeOptions } from '../../hooks';\nimport { meta } from '../../meta';\nimport {\n HueAnnotationId,\n IconAnnotationId,\n SpaceCapabilities,\n type SpaceSettingsProps,\n type TypeInputOptions,\n TypeInputOptionsAnnotationId,\n} from '../../types';\n\ntype ReactSurfaceOptions = {\n createInvitationUrl: (invitationCode: string) => string;\n};\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* ({ createInvitationUrl }: ReactSurfaceOptions) {\n return Capability.contributes(Capabilities.ReactSurface, [\n Surface.create({\n id: `${meta.id}.collection-fallback`,\n role: 'article',\n position: 'fallback',\n filter: (data): data is { subject: Collection.Collection } =>\n Obj.instanceOf(Collection.Collection, data.subject),\n component: ({ data }) => <CollectionArticle subject={data.subject} />,\n }),\n Surface.create({\n id: `${meta.id}.record-article`,\n role: 'article',\n position: 'fallback',\n filter: (data): data is { subject: Obj.Unknown } => Obj.isObject(data.subject),\n component: ({ data }) => <RecordArticle subject={data.subject} />,\n }),\n Surface.create({\n id: `${meta.id}.plugin-settings`,\n role: 'article',\n filter: (data): data is { subject: AppCapabilities.Settings } =>\n AppCapabilities.isSettings(data.subject) && data.subject.prefix === meta.id,\n component: ({ data: { subject } }) => {\n const { settings, updateSettings } = useSettingsState<SpaceSettingsProps>(subject.atom);\n return <SpacePluginSettings settings={settings} onSettingsChange={updateSettings} />;\n },\n }),\n Surface.create({\n id: `${meta.id}.companion.object-settings`,\n role: 'article',\n filter: (data): data is { companionTo: Obj.Unknown } =>\n Obj.isObject(data.companionTo) && data.subject === 'settings',\n component: ({ ref, data, role }) => <ObjectDetails subject={data.companionTo} role={role} ref={ref} />,\n }),\n Surface.create({\n id: `${meta.id}.space-settings-properties`,\n role: 'article',\n filter: (data): data is { subject: string } => data.subject === `${meta.id}.general`,\n component: ({ ref }) => {\n const space = useActiveSpace();\n if (!space) {\n return null;\n }\n\n return <SpaceSettingsContainer space={space} />;\n },\n }),\n Surface.create({\n id: `${meta.id}.space-settings-members`,\n role: 'article',\n position: 'hoist',\n filter: (data): data is { subject: string } => data.subject === `${meta.id}.members`,\n component: () => {\n const space = useActiveSpace();\n if (!space) {\n return null;\n }\n\n return <MembersContainer space={space} createInvitationUrl={createInvitationUrl} />;\n },\n }),\n Surface.create({\n id: `${meta.id}.space-settings-schema`,\n role: 'article',\n filter: (data): data is { subject: string } => data.subject === `${meta.id}.schema`,\n component: () => {\n const space = useActiveSpace();\n if (!space) {\n return null;\n }\n\n return <SchemaContainer space={space} />;\n },\n }),\n Surface.create({\n id: `${meta.id}.selected-objects`,\n role: 'article',\n filter: (\n data,\n ): data is { companionTo: Obj.OfShape<{ view: Ref.Ref<View.View> }>; subject: 'selected-objects' } => {\n if (data.subject !== 'selected-objects' || !Obj.isObject(data.companionTo)) {\n return false;\n }\n\n // TODO(burdon): Check companionTo.view.target is valid.\n const schema = Obj.getSchema(data.companionTo);\n return Option.fromNullable(schema).pipe(\n Option.flatMap((schema) => ViewAnnotation.get(schema)),\n Option.getOrElse(() => false),\n );\n },\n // TODO(burdon): Replace with mosaic.\n component: ({ data, ref }) => (\n <ObjectCardStack\n key={Obj.getDXN(data.companionTo).toString()}\n objectId={Obj.getDXN(data.companionTo).toString()}\n view={data.companionTo.view.target!}\n ref={ref}\n />\n ),\n }),\n Surface.create({\n id: JOIN_DIALOG,\n role: 'dialog',\n filter: (data): data is { props: JoinPanelProps } => data.component === JOIN_DIALOG,\n component: ({ data }) => <JoinDialog {...data.props} />,\n }),\n Surface.create({\n id: CREATE_SPACE_DIALOG,\n role: 'dialog',\n filter: (data): data is any => data.component === CREATE_SPACE_DIALOG,\n component: () => <CreateSpaceDialog />,\n }),\n Surface.create({\n id: CREATE_OBJECT_DIALOG,\n role: 'dialog',\n filter: (data): data is { props: CreateObjectDialogProps } => data.component === CREATE_OBJECT_DIALOG,\n component: ({ data }) => <CreateObjectDialog {...data.props} />,\n }),\n Surface.create({\n id: `${meta.id}.create-initial-space-form-[hue]`,\n role: 'form-input',\n filter: (data): data is { prop: string; schema: Schema.Schema<any> } => {\n const annotation = findAnnotation<boolean>((data.schema as Schema.Schema.All).ast, HueAnnotationId);\n return !!annotation;\n },\n component: ({ data: _, ...inputProps }) => {\n const { label, readonly, type, getValue, onValueChange } = inputProps as any as FormFieldComponentProps;\n const handleChange = useCallback((nextHue: string) => onValueChange(type, nextHue), [onValueChange]);\n const handleReset = useCallback(() => onValueChange(type, undefined), [onValueChange]);\n return (\n <Input.Root>\n <Input.Label>{label}</Input.Label>\n <HuePicker disabled={!!readonly} value={getValue() ?? ''} onChange={handleChange} onReset={handleReset} />\n </Input.Root>\n );\n },\n }),\n Surface.create({\n id: `${meta.id}.create-initial-space-form-[icon]`,\n role: 'form-input',\n filter: (data): data is { prop: string; schema: Schema.Schema<any> } => {\n const annotation = findAnnotation<boolean>((data.schema as Schema.Schema.All).ast, IconAnnotationId);\n return !!annotation;\n },\n component: ({ data: _, ...inputProps }) => {\n const { label, readonly, type, getValue, onValueChange } = inputProps as any as FormFieldComponentProps;\n const handleChange = useCallback((nextIcon: string) => onValueChange(type, nextIcon), [onValueChange]);\n const handleReset = useCallback(() => onValueChange(type, undefined), [onValueChange]);\n return (\n <Input.Root>\n <Input.Label>{label}</Input.Label>\n <IconPicker\n disabled={!!readonly}\n value={getValue() ?? ''}\n onChange={handleChange}\n onReset={handleReset}\n />\n </Input.Root>\n );\n },\n }),\n Surface.create({\n id: `${meta.id}.typename-form-input`,\n role: 'form-input',\n filter: (\n data,\n ): data is {\n prop: string;\n schema: Schema.Schema.Any;\n target: Database.Database | Collection.Collection | undefined;\n } => {\n if (data.prop !== 'typename') {\n return false;\n }\n\n const annotation = findAnnotation((data.schema as Schema.Schema.All).ast, TypeInputOptionsAnnotationId);\n return !!annotation;\n },\n component: ({ data: { schema, target }, ...inputProps }) => {\n const props = inputProps as any as FormFieldComponentProps;\n const db = Database.isDatabase(target) ? target : target && Obj.getDatabase(target);\n const space = useSpace(db?.spaceId);\n const annotation = findAnnotation<TypeInputOptions>(schema.ast, TypeInputOptionsAnnotationId)!;\n const options = useTypeOptions({ space, annotation });\n\n return <SelectField {...props} options={options} />;\n },\n }),\n Surface.create({\n id: `${meta.id}.object-settings`,\n role: 'object-settings',\n filter: (data): data is { subject: { view: Ref.Ref<View.View> } } => {\n if (!Obj.isObject(data.subject)) {\n return false;\n }\n\n const schema = Obj.getSchema(data.subject);\n return Option.fromNullable(schema).pipe(\n Option.flatMap((schema) => ViewAnnotation.get(schema)),\n Option.getOrElse(() => false),\n );\n },\n component: ({ data }) => {\n const view = data.subject.view.target;\n if (!view) {\n return null;\n }\n\n return <ViewEditor view={view} />;\n },\n }),\n Surface.create({\n id: SPACE_RENAME_POPOVER,\n role: 'popover',\n filter: (data): data is { props: Space } => data.component === SPACE_RENAME_POPOVER && isSpace(data.props),\n component: ({ data }) => <SpaceRenamePopover space={data.props} />,\n }),\n Surface.create({\n id: OBJECT_RENAME_POPOVER,\n role: 'popover',\n filter: (data): data is { props: Obj.Unknown } =>\n data.component === OBJECT_RENAME_POPOVER && Obj.isObject(data.props),\n component: ({ data }) => <ObjectRenamePopover object={data.props} />,\n }),\n Surface.create({\n id: `${meta.id}.menu-footer`,\n role: 'menu-footer',\n filter: (data): data is { subject: Obj.Unknown } => Obj.isObject(data.subject),\n component: ({ data }) => <MenuFooter object={data.subject} />,\n }),\n Surface.create({\n id: `${meta.id}.navtree-presence`,\n role: 'navtree-item-end',\n filter: (data): data is { id: string; subject: Obj.Unknown; open?: boolean } =>\n typeof data.id === 'string' && Obj.isObject(data.subject),\n component: ({ data }) => {\n const ephemeral = useAtomCapability(SpaceCapabilities.EphemeralState);\n return <SmallPresenceLive id={data.id} open={data.open} viewers={ephemeral.viewersByObject[data.id]} />;\n },\n }),\n // TODO(wittjosiah): Attention glyph for non-echo items should be handled elsewhere.\n Surface.create({\n id: `${meta.id}.navtree-presence-fallback`,\n role: 'navtree-item-end',\n position: 'fallback',\n filter: (data): data is { id: string; open?: boolean } => typeof data.id === 'string',\n component: ({ data }) => <SmallPresenceLive id={data.id} open={data.open} />,\n }),\n // TODO(wittjosiah): Broken?\n Surface.create({\n id: `${meta.id}.navtree-sync-status`,\n role: 'navtree-item-end',\n filter: (data): data is { subject: Space; open?: boolean } => isSpace(data.subject),\n component: ({ data }) => <InlineSyncStatus space={data.subject} open={data.open} />,\n }),\n Surface.create({\n id: `${meta.id}.navbar-presence`,\n role: 'navbar-end',\n position: 'hoist',\n filter: (data): data is { subject: Space | Obj.Unknown } => isSpace(data.subject) || Obj.isObject(data.subject),\n component: ({ data }) => {\n const space = isSpace(data.subject) ? data.subject : getSpace(data.subject);\n const object = isSpace(data.subject)\n ? data.subject.state.get() === SpaceState.SPACE_READY\n ? (space?.properties[Collection.Collection.typename]?.target as Collection.Collection)\n : undefined\n : data.subject;\n\n return object ? <SpacePresence object={object} /> : null;\n },\n }),\n Surface.create({\n id: `${meta.id}.collection-section`,\n role: 'section',\n filter: (data): data is { subject: Collection.Collection } =>\n Obj.instanceOf(Collection.Collection, data.subject),\n component: ({ data }) => <CollectionSection subject={data.subject} />,\n }),\n Surface.create({\n id: `${meta.id}.status`,\n role: 'status',\n component: () => <SyncStatus />,\n }),\n ]);\n }),\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type ComponentType, lazy } from 'react';\n\nexport type { CreateObjectDialogProps } from './CreateObjectDialog';\n\nexport const CollectionArticle: ComponentType<any> = lazy(() => import('./CollectionArticle'));\nexport const CollectionSection: ComponentType<any> = lazy(() => import('./CollectionSection'));\nexport const CreateObjectDialog: ComponentType<any> = lazy(() => import('./CreateObjectDialog'));\nexport const CreateSpaceDialog: ComponentType<any> = lazy(() => import('./CreateSpaceDialog'));\nexport const InlineSyncStatus: ComponentType<any> = lazy(() => import('./InlineSyncStatus'));\nexport const JoinDialog: ComponentType<any> = lazy(() => import('./JoinDialog'));\nexport const MembersContainer: ComponentType<any> = lazy(() => import('./MembersContainer'));\nexport const MenuFooter: ComponentType<any> = lazy(() => import('./MenuFooter'));\nexport const ObjectCardStack: ComponentType<any> = lazy(() => import('./ObjectCardStack'));\nexport const ObjectDetails: ComponentType<any> = lazy(() => import('./ObjectDetails'));\nexport const ObjectRenamePopover: ComponentType<any> = lazy(() => import('./ObjectRenamePopover'));\nexport const RecordArticle: ComponentType<any> = lazy(() => import('./RecordArticle'));\nexport const SchemaContainer: ComponentType<any> = lazy(() => import('./SchemaContainer'));\nexport const SmallPresenceLive: ComponentType<any> = lazy(() => import('./SmallPresenceLive'));\nexport const SpacePluginSettings: ComponentType<any> = lazy(() => import('./SpacePluginSettings'));\nexport const SpacePresence: ComponentType<any> = lazy(() => import('./SpacePresence'));\nexport const SpaceRenamePopover: ComponentType<any> = lazy(() => import('./SpaceRenamePopover'));\nexport const SpaceSettingsContainer: ComponentType<any> = lazy(() => import('./SpaceSettingsContainer'));\nexport const SyncStatus: ComponentType<any> = lazy(() => import('./SyncStatus'));\nexport const ViewEditor: ComponentType<any> = lazy(() => import('./ViewEditor'));\n"],
5
+ "mappings": "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",
6
+ "names": ["Effect", "Option", "React", "useCallback", "Capabilities", "Capability", "Surface", "useAtomCapability", "useSettingsState", "AppCapabilities", "Database", "Obj", "Collection", "findAnnotation", "SpaceState", "getSpace", "isSpace", "useSpace", "Input", "SelectField", "HuePicker", "IconPicker", "ViewAnnotation", "lazy", "CollectionArticle", "lazy", "CollectionSection", "CreateObjectDialog", "CreateSpaceDialog", "InlineSyncStatus", "JoinDialog", "MembersContainer", "MenuFooter", "ObjectCardStack", "ObjectDetails", "ObjectRenamePopover", "RecordArticle", "SchemaContainer", "SmallPresenceLive", "SpacePluginSettings", "SpacePresence", "SpaceRenamePopover", "SpaceSettingsContainer", "SyncStatus", "ViewEditor", "Capability", "makeModule", "fnUntraced", "createInvitationUrl", "contributes", "Capabilities", "ReactSurface", "Surface", "create", "id", "meta", "role", "position", "filter", "data", "Obj", "instanceOf", "Collection", "subject", "component", "CollectionArticle", "isObject", "RecordArticle", "AppCapabilities", "isSettings", "prefix", "settings", "updateSettings", "useSettingsState", "atom", "SpacePluginSettings", "onSettingsChange", "companionTo", "ref", "ObjectDetails", "space", "useActiveSpace", "SpaceSettingsContainer", "MembersContainer", "SchemaContainer", "schema", "getSchema", "fromNullable", "pipe", "flatMap", "ViewAnnotation", "get", "getOrElse", "ObjectCardStack", "key", "getDXN", "toString", "objectId", "view", "target", "JOIN_DIALOG", "JoinDialog", "props", "CREATE_SPACE_DIALOG", "CreateSpaceDialog", "CREATE_OBJECT_DIALOG", "CreateObjectDialog", "annotation", "findAnnotation", "ast", "HueAnnotationId", "_", "inputProps", "label", "readonly", "type", "getValue", "onValueChange", "handleChange", "useCallback", "nextHue", "handleReset", "undefined", "Input", "Root", "Label", "HuePicker", "disabled", "value", "onChange", "onReset", "IconAnnotationId", "nextIcon", "IconPicker", "prop", "TypeInputOptionsAnnotationId", "db", "Database", "isDatabase", "getDatabase", "useSpace", "spaceId", "options", "useTypeOptions", "SelectField", "ViewEditor", "SPACE_RENAME_POPOVER", "isSpace", "SpaceRenamePopover", "OBJECT_RENAME_POPOVER", "ObjectRenamePopover", "object", "MenuFooter", "ephemeral", "useAtomCapability", "SpaceCapabilities", "EphemeralState", "SmallPresenceLive", "open", "viewers", "viewersByObject", "InlineSyncStatus", "getSpace", "state", "SpaceState", "SPACE_READY", "properties", "typename", "SpacePresence", "CollectionSection", "SyncStatus"]
7
+ }
@@ -0,0 +1,31 @@
1
+ import {
2
+ SpaceCapabilities
3
+ } from "./chunk-6IT5IBB5.mjs";
4
+ import "./chunk-CBWGVOJE.mjs";
5
+
6
+ // src/capabilities/repair/repair.ts
7
+ import * as Effect from "effect/Effect";
8
+ import { Capability } from "@dxos/app-framework";
9
+ import { Collection, Obj, Ref } from "@dxos/echo";
10
+ var repair_default = Capability.makeModule(() => Effect.succeed(Capability.contributes(SpaceCapabilities.Repair, async ({ space }) => {
11
+ await removeQueryCollections(space);
12
+ })));
13
+ var removeQueryCollections = async (space) => {
14
+ const rootCollection = await space.properties[Collection.Collection.typename]?.load();
15
+ if (!rootCollection) {
16
+ return;
17
+ }
18
+ const objects = await Promise.all(rootCollection.objects.map((ref) => ref.load()));
19
+ const queryCollections = objects.filter((object) => Obj.getTypename(object) === "org.dxos.type.query-collection");
20
+ if (queryCollections.length === 0) {
21
+ return;
22
+ }
23
+ Obj.change(rootCollection, (c) => {
24
+ c.objects = objects.filter((object) => Obj.getTypename(object) !== "org.dxos.type.query-collection").map((object) => Ref.make(object));
25
+ });
26
+ queryCollections.forEach((object) => space.db.remove(object));
27
+ };
28
+ export {
29
+ repair_default as default
30
+ };
31
+ //# sourceMappingURL=repair-NUVEV4AK.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/repair/repair.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capability } from '@dxos/app-framework';\nimport { Collection, Obj, Ref } from '@dxos/echo';\nimport { type Space } from '@dxos/react-client/echo';\n\nimport { SpaceCapabilities } from '../../types';\n\nexport default Capability.makeModule(() =>\n Effect.succeed(\n Capability.contributes(SpaceCapabilities.Repair, async ({ space }: { space: Space }) => {\n await removeQueryCollections(space);\n }),\n ),\n);\n\n/**\n * Remove all existing query collections from the root collection.\n */\nconst removeQueryCollections = async (space: Space) => {\n const rootCollection: Collection.Collection = await space.properties[Collection.Collection.typename]?.load();\n if (!rootCollection) {\n return;\n }\n\n const objects = await Promise.all(rootCollection.objects.map((ref) => ref.load()));\n const queryCollections = objects.filter((object) => Obj.getTypename(object) === 'org.dxos.type.query-collection');\n if (queryCollections.length === 0) {\n return;\n }\n\n Obj.change(rootCollection, (c) => {\n c.objects = objects\n .filter((object) => Obj.getTypename(object) !== 'org.dxos.type.query-collection')\n .map((object) => Ref.make(object));\n });\n queryCollections.forEach((object) => space.db.remove(object));\n};\n"],
5
+ "mappings": ";;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,kBAAkB;AAC3B,SAASC,YAAYC,KAAKC,WAAW;AAKrC,IAAA,iBAAeC,WAAWC,WAAW,MAC5BC,eACLF,WAAWG,YAAYC,kBAAkBC,QAAQ,OAAO,EAAEC,MAAK,MAAoB;AACjF,QAAMC,uBAAuBD,KAAAA;AAC/B,CAAA,CAAA,CAAA;AAOJ,IAAMC,yBAAyB,OAAOD,UAAAA;AACpC,QAAME,iBAAwC,MAAMF,MAAMG,WAAWC,WAAWA,WAAWC,QAAQ,GAAGC,KAAAA;AACtG,MAAI,CAACJ,gBAAgB;AACnB;EACF;AAEA,QAAMK,UAAU,MAAMC,QAAQC,IAAIP,eAAeK,QAAQG,IAAI,CAACC,QAAQA,IAAIL,KAAI,CAAA,CAAA;AAC9E,QAAMM,mBAAmBL,QAAQM,OAAO,CAACC,WAAWC,IAAIC,YAAYF,MAAAA,MAAY,gCAAA;AAChF,MAAIF,iBAAiBK,WAAW,GAAG;AACjC;EACF;AAEAF,MAAIG,OAAOhB,gBAAgB,CAACiB,MAAAA;AAC1BA,MAAEZ,UAAUA,QACTM,OAAO,CAACC,WAAWC,IAAIC,YAAYF,MAAAA,MAAY,gCAAA,EAC/CJ,IAAI,CAACI,WAAWM,IAAIC,KAAKP,MAAAA,CAAAA;EAC9B,CAAA;AACAF,mBAAiBU,QAAQ,CAACR,WAAWd,MAAMuB,GAAGC,OAAOV,MAAAA,CAAAA;AACvD;",
6
+ "names": ["Effect", "Capability", "Collection", "Obj", "Ref", "Capability", "makeModule", "succeed", "contributes", "SpaceCapabilities", "Repair", "space", "removeQueryCollections", "rootCollection", "properties", "Collection", "typename", "load", "objects", "Promise", "all", "map", "ref", "queryCollections", "filter", "object", "Obj", "getTypename", "length", "change", "c", "Ref", "make", "forEach", "db", "remove"]
7
+ }
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  SpaceCapabilities,
3
3
  SpaceSettingsSchema
4
- } from "./chunk-USN5QKRV.mjs";
4
+ } from "./chunk-6IT5IBB5.mjs";
5
5
  import {
6
6
  meta
7
- } from "./chunk-HSMQFM57.mjs";
7
+ } from "./chunk-CBWGVOJE.mjs";
8
8
 
9
9
  // src/capabilities/settings/settings.ts
10
10
  import * as Effect from "effect/Effect";
@@ -31,4 +31,4 @@ var settings_default = Capability.makeModule(() => Effect.sync(() => {
31
31
  export {
32
32
  settings_default as default
33
33
  };
34
- //# sourceMappingURL=settings-2ELVUFDR.mjs.map
34
+ //# sourceMappingURL=settings-RUDP2Q56.mjs.map
@@ -1,18 +1,18 @@
1
1
  import {
2
2
  COMPOSER_SPACE_LOCK,
3
3
  SHARED
4
- } from "./chunk-TPZUQ5DC.mjs";
4
+ } from "./chunk-6OA75CWN.mjs";
5
5
  import {
6
6
  SpaceCapabilities,
7
7
  SpaceOperation
8
- } from "./chunk-USN5QKRV.mjs";
9
- import "./chunk-HSMQFM57.mjs";
8
+ } from "./chunk-6IT5IBB5.mjs";
9
+ import "./chunk-CBWGVOJE.mjs";
10
10
 
11
11
  // src/capabilities/spaces-ready/spaces-ready.ts
12
12
  import * as Effect from "effect/Effect";
13
13
  import * as Option from "effect/Option";
14
14
  import { Capabilities, Capability } from "@dxos/app-framework";
15
- import { AppCapabilities, LayoutOperation } from "@dxos/app-toolkit";
15
+ import { AppCapabilities, LayoutOperation, getSpacePath } from "@dxos/app-toolkit";
16
16
  import { SubscriptionList } from "@dxos/async";
17
17
  import { Filter, Obj } from "@dxos/echo";
18
18
  import { log } from "@dxos/log";
@@ -44,7 +44,7 @@ var spaces_ready_default = Capability.makeModule(Effect.fnUntraced(function* ()
44
44
  const layout = registry.get(layoutAtom);
45
45
  if (layout.workspace === "default") {
46
46
  yield* invoke(LayoutOperation.SwitchWorkspace, {
47
- subject: defaultSpace.id
47
+ subject: getSpacePath(defaultSpace.id)
48
48
  });
49
49
  }
50
50
  if (typeof defaultSpace.properties[COMPOSER_SPACE_LOCK] !== "boolean") {
@@ -240,4 +240,4 @@ var spaces_ready_default = Capability.makeModule(Effect.fnUntraced(function* ()
240
240
  export {
241
241
  spaces_ready_default as default
242
242
  };
243
- //# sourceMappingURL=spaces-ready-Q6JASPT4.mjs.map
243
+ //# sourceMappingURL=spaces-ready-B2GYL5IN.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/spaces-ready/spaces-ready.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { AppCapabilities, LayoutOperation, getSpacePath } from '@dxos/app-toolkit';\nimport { SubscriptionList } from '@dxos/async';\nimport { Filter, Obj } from '@dxos/echo';\nimport { log } from '@dxos/log';\nimport { AttentionCapabilities } from '@dxos/plugin-attention';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { Graph } from '@dxos/plugin-graph';\nimport { EdgeReplicationSetting } from '@dxos/protocols/proto/dxos/echo/metadata';\nimport { PublicKey } from '@dxos/react-client';\nimport { SPACE_ID_LENGTH, SpaceState, parseId } from '@dxos/react-client/echo';\nimport { Expando } from '@dxos/schema';\nimport { ComplexMap, reduceGroupBy } from '@dxos/util';\n\nimport { SpaceCapabilities, SpaceOperation } from '../../types';\nimport { COMPOSER_SPACE_LOCK, SHARED } from '../../util';\n\nconst ACTIVE_NODE_BROADCAST_INTERVAL = 30_000;\nconst WAIT_FOR_OBJECT_TIMEOUT = 5_000;\n\n// E.g., dxn:echo:BA25QRC2FEWCSAMRP4RZL65LWJ7352CKE:01J00J9B45YHYSGZQTQMSKMGJ6\nconst ECHO_DXN_LENGTH = 3 + 1 + 4 + 1 + 33 + 1 + 26;\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const subscriptions = new SubscriptionList();\n const spaceSubscriptions = new SubscriptionList();\n\n const { invoke, invokePromise } = yield* Capability.get(Capabilities.OperationInvoker);\n const { graph } = yield* Capability.get(AppCapabilities.AppGraph);\n const registry = yield* Capability.get(Capabilities.AtomRegistry);\n const layoutAtom = yield* Capability.get(AppCapabilities.Layout);\n const attention = yield* Capability.get(AttentionCapabilities.Attention);\n const stateAtom = yield* Capability.get(SpaceCapabilities.State);\n const ephemeralAtom = yield* Capability.get(SpaceCapabilities.EphemeralState);\n const client = yield* Capability.get(ClientCapabilities.Client);\n\n const defaultSpace = client.spaces.default;\n yield* Effect.tryPromise(() => defaultSpace.waitUntilReady());\n\n // Check if deck state indicates we should switch to default space.\n const layout = registry.get(layoutAtom);\n if (layout.workspace === 'default') {\n yield* invoke(LayoutOperation.SwitchWorkspace, { subject: getSpacePath(defaultSpace.id) });\n }\n\n // Initialize space sharing lock in default space.\n if (typeof defaultSpace.properties[COMPOSER_SPACE_LOCK] !== 'boolean') {\n Obj.change(defaultSpace.properties, (p) => {\n p[COMPOSER_SPACE_LOCK] = true;\n });\n }\n\n const queryResults = yield* Effect.tryPromise(() =>\n defaultSpace.db.query(Filter.type(Expando.Expando, { key: SHARED })).run(),\n );\n const spacesOrder = queryResults[0];\n if (!spacesOrder) {\n // TODO(wittjosiah): Cannot be a Folder because Spaces are not TypedObjects so can't be saved in the database.\n // Instead, we store order as an array of space ids.\n defaultSpace.db.add(Obj.make(Expando.Expando, { key: SHARED, order: [] }));\n }\n\n // Await missing objects - subscribe to layout atom changes.\n // NOTE: Use immediate: true to check initial state (URL handler may have already set active).\n let lastActiveCleanup: (() => void) | undefined;\n subscriptions.add(\n registry.subscribe(\n layoutAtom,\n (layout) => {\n // Clean up previous effect.\n lastActiveCleanup?.();\n lastActiveCleanup = undefined;\n\n // Determine the ID to check - either from active item or workspace.\n const id = layout.active.length === 1 ? layout.active[0] : layout.workspace;\n if (!id) {\n return;\n }\n\n const node = Graph.getNode(graph, id).pipe(Option.getOrNull);\n if (!node && (id.length === ECHO_DXN_LENGTH || id.length === SPACE_ID_LENGTH)) {\n void Graph.initialize(graph, id);\n const timeout = setTimeout(async () => {\n const node = Graph.getNode(graph, id).pipe(Option.getOrNull);\n if (!node) {\n await invokePromise(SpaceOperation.WaitForObject, { id });\n }\n }, WAIT_FOR_OBJECT_TIMEOUT);\n\n lastActiveCleanup = () => clearTimeout(timeout);\n }\n },\n { immediate: true },\n ),\n );\n // Also add cleanup for the last effect.\n subscriptions.add(() => lastActiveCleanup?.());\n\n // Cache space names.\n subscriptions.add(\n client.spaces.subscribe(async (spaces) => {\n // TODO(wittjosiah): Remove. This is a hack to be able to migrate the default space properties.\n if (defaultSpace.state.get() === SpaceState.SPACE_REQUIRES_MIGRATION) {\n await defaultSpace.internal.migrate();\n }\n\n spaces\n .filter((space) => space.state.get() === SpaceState.SPACE_READY)\n .forEach((space) => {\n const updateSpaceName = () => {\n const name = space.properties.name;\n if (!name) {\n registry.update(stateAtom, (current) => {\n const { [space.id]: _, ...rest } = current.spaceNames;\n return { ...current, spaceNames: rest };\n });\n } else {\n registry.update(stateAtom, (current) => ({\n ...current,\n spaceNames: { ...current.spaceNames, [space.id]: name },\n }));\n }\n };\n updateSpaceName();\n subscriptions.add(Obj.subscribe(space.properties, updateSpaceName));\n });\n }).unsubscribe,\n );\n\n // Broadcast active node to other peers in the space - subscribe to both layout and attention.\n let broadcastCleanup: (() => void) | undefined;\n const setupBroadcast = () => {\n broadcastCleanup?.();\n\n const layout = registry.get(layoutAtom);\n const current = attention.getCurrent();\n const active = layout.active;\n const inactive = layout.inactive;\n\n const send = () => {\n const spaces = client.spaces.get();\n const identity = client.halo.identity.get();\n if (identity) {\n // Group parts by space for efficient messaging.\n const idsBySpace = reduceGroupBy(active, (id: string) => {\n try {\n const { spaceId } = parseId(id);\n return spaceId;\n } catch {\n return null;\n }\n });\n\n const removedBySpace = reduceGroupBy(inactive, (id: string) => {\n try {\n const { spaceId } = parseId(id);\n return spaceId;\n } catch {\n return null;\n }\n });\n\n // NOTE: Ensure all spaces are included so that we send the correct `removed` object arrays.\n for (const space of spaces) {\n if (!idsBySpace.has(space.id)) {\n idsBySpace.set(space.id, []);\n }\n }\n\n for (const [spaceId, added] of idsBySpace) {\n const removed = removedBySpace.get(spaceId) ?? [];\n const space = spaces.find((space) => space.id === spaceId);\n if (!space) {\n continue;\n }\n\n void space\n .postMessage('viewing', {\n identityKey: identity.identityKey.toHex(),\n attended: current,\n added,\n removed,\n })\n // TODO(burdon): This seems defensive; why would this fail? Backoff interval.\n .catch((err) => {\n log.warn('Failed to broadcast active node for presence.', {\n err: err.message,\n });\n });\n }\n }\n };\n\n send();\n // Send at interval to allow peers to expire entries if they become disconnected.\n const interval = setInterval(() => send(), ACTIVE_NODE_BROADCAST_INTERVAL);\n broadcastCleanup = () => clearInterval(interval);\n };\n\n // Subscribe to layout changes for broadcast.\n subscriptions.add(registry.subscribe(layoutAtom, setupBroadcast));\n // Subscribe to attention.current changes.\n subscriptions.add(attention.subscribeCurrent(() => setupBroadcast()));\n // Initial setup.\n setupBroadcast();\n // Cleanup.\n subscriptions.add(() => broadcastCleanup?.());\n\n // Listen for active nodes from other peers in the space.\n subscriptions.add(\n client.spaces.subscribe((spaces) => {\n spaceSubscriptions.clear();\n spaces.forEach((space) => {\n spaceSubscriptions.add(\n space.listen('viewing', (message) => {\n const { added, removed, attended } = message.payload;\n\n const identityKey = PublicKey.safeFrom(message.payload.identityKey);\n const currentIdentity = client.halo.identity.get();\n if (\n identityKey &&\n !currentIdentity?.identityKey.equals(identityKey) &&\n Array.isArray(added) &&\n Array.isArray(removed)\n ) {\n // TODO(wittjosiah): Stop using (Complex)Map inside reactive object.\n registry.update(ephemeralAtom, (ephemeral) => {\n added.forEach((id) => {\n if (typeof id === 'string') {\n if (!(id in ephemeral.viewersByObject)) {\n ephemeral.viewersByObject[id] = new ComplexMap(PublicKey.hash);\n }\n ephemeral.viewersByObject[id]!.set(identityKey, {\n lastSeen: Date.now(),\n currentlyAttended: new Set(attended).has(id),\n });\n if (!ephemeral.viewersByIdentity.has(identityKey)) {\n ephemeral.viewersByIdentity.set(identityKey, new Set());\n }\n ephemeral.viewersByIdentity.get(identityKey)!.add(id);\n }\n });\n\n removed.forEach((id) => {\n if (typeof id === 'string') {\n ephemeral.viewersByObject[id]?.delete(identityKey);\n ephemeral.viewersByIdentity.get(identityKey)?.delete(id);\n // It's okay for these to be empty sets/maps, reduces churn.\n }\n });\n\n return { ...ephemeral };\n });\n }\n }),\n );\n });\n }).unsubscribe,\n );\n\n // Enable edge replication for all spaces.\n try {\n yield* Effect.tryPromise(() =>\n Promise.all(\n client.spaces\n .get()\n .map((space) => space.internal.setEdgeReplicationPreference(EdgeReplicationSetting.ENABLED)),\n ),\n );\n registry.update(stateAtom, (current) => ({ ...current, enabledEdgeReplication: true }));\n } catch (err) {\n log.catch(err);\n }\n\n return Capability.contributes(Capabilities.Null, null, () =>\n Effect.sync(() => {\n spaceSubscriptions.clear();\n subscriptions.clear();\n }),\n );\n }),\n);\n"],
5
+ "mappings": "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",
6
+ "names": ["Effect", "Option", "Capabilities", "Capability", "AppCapabilities", "LayoutOperation", "getSpacePath", "SubscriptionList", "Filter", "Obj", "log", "AttentionCapabilities", "ClientCapabilities", "Graph", "EdgeReplicationSetting", "PublicKey", "SPACE_ID_LENGTH", "SpaceState", "parseId", "Expando", "ComplexMap", "reduceGroupBy", "ACTIVE_NODE_BROADCAST_INTERVAL", "WAIT_FOR_OBJECT_TIMEOUT", "ECHO_DXN_LENGTH", "Capability", "makeModule", "fnUntraced", "subscriptions", "SubscriptionList", "spaceSubscriptions", "invoke", "invokePromise", "get", "Capabilities", "OperationInvoker", "graph", "AppCapabilities", "AppGraph", "registry", "AtomRegistry", "layoutAtom", "Layout", "attention", "AttentionCapabilities", "Attention", "stateAtom", "SpaceCapabilities", "State", "ephemeralAtom", "EphemeralState", "client", "ClientCapabilities", "Client", "defaultSpace", "spaces", "default", "tryPromise", "waitUntilReady", "layout", "workspace", "LayoutOperation", "SwitchWorkspace", "subject", "getSpacePath", "id", "properties", "COMPOSER_SPACE_LOCK", "Obj", "change", "p", "queryResults", "db", "query", "Filter", "type", "Expando", "key", "SHARED", "run", "spacesOrder", "add", "make", "order", "lastActiveCleanup", "subscribe", "undefined", "active", "length", "node", "Graph", "getNode", "pipe", "getOrNull", "SPACE_ID_LENGTH", "initialize", "timeout", "setTimeout", "SpaceOperation", "WaitForObject", "clearTimeout", "immediate", "state", "SpaceState", "SPACE_REQUIRES_MIGRATION", "internal", "migrate", "filter", "space", "SPACE_READY", "forEach", "updateSpaceName", "name", "update", "current", "_", "rest", "spaceNames", "unsubscribe", "broadcastCleanup", "setupBroadcast", "getCurrent", "inactive", "send", "identity", "halo", "idsBySpace", "reduceGroupBy", "spaceId", "parseId", "removedBySpace", "has", "set", "added", "removed", "find", "postMessage", "identityKey", "toHex", "attended", "catch", "err", "log", "warn", "message", "interval", "setInterval", "clearInterval", "subscribeCurrent", "clear", "listen", "payload", "PublicKey", "safeFrom", "currentIdentity", "equals", "Array", "isArray", "ephemeral", "viewersByObject", "ComplexMap", "hash", "lastSeen", "Date", "now", "currentlyAttended", "Set", "viewersByIdentity", "delete", "Promise", "all", "map", "setEdgeReplicationPreference", "EdgeReplicationSetting", "ENABLED", "enabledEdgeReplication", "contributes", "Null", "sync"]
7
+ }
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  SpaceCapabilities
3
- } from "./chunk-USN5QKRV.mjs";
3
+ } from "./chunk-6IT5IBB5.mjs";
4
4
  import {
5
5
  meta
6
- } from "./chunk-HSMQFM57.mjs";
6
+ } from "./chunk-CBWGVOJE.mjs";
7
7
 
8
8
  // src/capabilities/state/state.ts
9
9
  import { Atom } from "@effect-atom/atom-react";
@@ -19,7 +19,7 @@ var defaultSpaceState = {
19
19
  var state_default = Capability.makeModule(Effect.fnUntraced(function* () {
20
20
  const registry = yield* Capability.get(Capabilities.AtomRegistry);
21
21
  const stateAtom = createKvsStore({
22
- key: `${meta.id}/state`,
22
+ key: `${meta.id}.state`,
23
23
  schema: SpaceCapabilities.StateSchema,
24
24
  defaultValue: () => ({
25
25
  ...defaultSpaceState
@@ -34,7 +34,7 @@ var state_default = Capability.makeModule(Effect.fnUntraced(function* () {
34
34
  }).pipe(Atom.keepAlive);
35
35
  const manager = yield* Capability.get(Capabilities.PluginManager);
36
36
  const updateNavigableCollections = () => {
37
- const enabled = manager.getEnabled().includes("dxos.org/plugin/stack");
37
+ const enabled = manager.getEnabled().includes("org.dxos.plugin.stack") || manager.getEnabled().includes("org.dxos.plugin.simple-layout");
38
38
  const current = registry.get(ephemeralAtom);
39
39
  if (enabled !== current.navigableCollections) {
40
40
  registry.update(ephemeralAtom, (c) => ({
@@ -55,4 +55,4 @@ var state_default = Capability.makeModule(Effect.fnUntraced(function* () {
55
55
  export {
56
56
  state_default as default
57
57
  };
58
- //# sourceMappingURL=state-CTX4WQOM.mjs.map
58
+ //# sourceMappingURL=state-I6JDZCDE.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/capabilities/state/state.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom } from '@effect-atom/atom-react';\nimport * as Effect from 'effect/Effect';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { createKvsStore } from '@dxos/effect';\nimport { PublicKey } from '@dxos/keys';\nimport { ComplexMap } from '@dxos/util';\n\nimport { meta } from '../../meta';\nimport { SpaceCapabilities } from '../../types';\n\n/** Default persisted state. */\nconst defaultSpaceState: SpaceCapabilities.SpaceState = {\n spaceNames: {},\n enabledEdgeReplication: false,\n};\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const registry = yield* Capability.get(Capabilities.AtomRegistry);\n\n // Persisted state using KVS store.\n const stateAtom = createKvsStore({\n key: `${meta.id}/state`,\n schema: SpaceCapabilities.StateSchema,\n defaultValue: () => ({ ...defaultSpaceState }),\n });\n\n // Ephemeral state (not persisted, but kept alive to prevent GC resets).\n const ephemeralAtom = Atom.make<SpaceCapabilities.SpaceEphemeralState>({\n awaiting: undefined,\n sdkMigrationRunning: {},\n navigableCollections: false,\n viewersByObject: {},\n viewersByIdentity: new ComplexMap<PublicKey, Set<string>>(PublicKey.hash),\n }).pipe(Atom.keepAlive);\n\n const manager = yield* Capability.get(Capabilities.PluginManager);\n // Update navigableCollections based on plugin state.\n const updateNavigableCollections = () => {\n const enabled = manager.getEnabled().includes('dxos.org/plugin/stack');\n const current = registry.get(ephemeralAtom);\n if (enabled !== current.navigableCollections) {\n registry.update(ephemeralAtom, (c) => ({ ...c, navigableCollections: enabled }));\n }\n };\n // Check initial state and subscribe to changes.\n updateNavigableCollections();\n const unsubscribe = registry.subscribe(manager.enabled, updateNavigableCollections);\n\n return [\n Capability.contributes(SpaceCapabilities.State, stateAtom),\n Capability.contributes(SpaceCapabilities.EphemeralState, ephemeralAtom, () =>\n Effect.sync(() => {\n unsubscribe();\n }),\n ),\n ];\n }),\n);\n"],
5
- "mappings": ";;;;;;;;AAIA,SAASA,YAAY;AACrB,YAAYC,YAAY;AAExB,SAASC,cAAcC,kBAAkB;AACzC,SAASC,sBAAsB;AAC/B,SAASC,iBAAiB;AAC1B,SAASC,kBAAkB;AAM3B,IAAMC,oBAAkD;EACtDC,YAAY,CAAC;EACbC,wBAAwB;AAC1B;AAEA,IAAA,gBAAeC,WAAWC,WACjBC,kBAAW,aAAA;AAChB,QAAMC,WAAW,OAAOH,WAAWI,IAAIC,aAAaC,YAAY;AAGhE,QAAMC,YAAYC,eAAe;IAC/BC,KAAK,GAAGC,KAAKC,EAAE;IACfC,QAAQC,kBAAkBC;IAC1BC,cAAc,OAAO;MAAE,GAAGlB;IAAkB;EAC9C,CAAA;AAGA,QAAMmB,gBAAgBC,KAAKC,KAA4C;IACrEC,UAAUC;IACVC,qBAAqB,CAAC;IACtBC,sBAAsB;IACtBC,iBAAiB,CAAC;IAClBC,mBAAmB,IAAIC,WAAmCC,UAAUC,IAAI;EAC1E,CAAA,EAAGC,KAAKX,KAAKY,SAAS;AAEtB,QAAMC,UAAU,OAAO9B,WAAWI,IAAIC,aAAa0B,aAAa;AAEhE,QAAMC,6BAA6B,MAAA;AACjC,UAAMC,UAAUH,QAAQI,WAAU,EAAGC,SAAS,uBAAA;AAC9C,UAAMC,UAAUjC,SAASC,IAAIY,aAAAA;AAC7B,QAAIiB,YAAYG,QAAQd,sBAAsB;AAC5CnB,eAASkC,OAAOrB,eAAe,CAACsB,OAAO;QAAE,GAAGA;QAAGhB,sBAAsBW;MAAQ,EAAA;IAC/E;EACF;AAEAD,6BAAAA;AACA,QAAMO,cAAcpC,SAASqC,UAAUV,QAAQG,SAASD,0BAAAA;AAExD,SAAO;IACLhC,WAAWyC,YAAY5B,kBAAkB6B,OAAOnC,SAAAA;IAChDP,WAAWyC,YAAY5B,kBAAkB8B,gBAAgB3B,eAAe,MAC/D4B,YAAK,MAAA;AACVL,kBAAAA;IACF,CAAA,CAAA;;AAGN,CAAA,CAAA;",
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom } from '@effect-atom/atom-react';\nimport * as Effect from 'effect/Effect';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { createKvsStore } from '@dxos/effect';\nimport { PublicKey } from '@dxos/keys';\nimport { ComplexMap } from '@dxos/util';\n\nimport { meta } from '../../meta';\nimport { SpaceCapabilities } from '../../types';\n\n/** Default persisted state. */\nconst defaultSpaceState: SpaceCapabilities.SpaceState = {\n spaceNames: {},\n enabledEdgeReplication: false,\n};\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const registry = yield* Capability.get(Capabilities.AtomRegistry);\n\n // Persisted state using KVS store.\n const stateAtom = createKvsStore({\n key: `${meta.id}.state`,\n schema: SpaceCapabilities.StateSchema,\n defaultValue: () => ({ ...defaultSpaceState }),\n });\n\n // Ephemeral state (not persisted, but kept alive to prevent GC resets).\n const ephemeralAtom = Atom.make<SpaceCapabilities.SpaceEphemeralState>({\n awaiting: undefined,\n sdkMigrationRunning: {},\n navigableCollections: false,\n viewersByObject: {},\n viewersByIdentity: new ComplexMap<PublicKey, Set<string>>(PublicKey.hash),\n }).pipe(Atom.keepAlive);\n\n const manager = yield* Capability.get(Capabilities.PluginManager);\n // Update navigableCollections based on plugin state.\n const updateNavigableCollections = () => {\n const enabled =\n manager.getEnabled().includes('org.dxos.plugin.stack') ||\n manager.getEnabled().includes('org.dxos.plugin.simple-layout');\n const current = registry.get(ephemeralAtom);\n if (enabled !== current.navigableCollections) {\n registry.update(ephemeralAtom, (c) => ({ ...c, navigableCollections: enabled }));\n }\n };\n // Check initial state and subscribe to changes.\n updateNavigableCollections();\n const unsubscribe = registry.subscribe(manager.enabled, updateNavigableCollections);\n\n return [\n Capability.contributes(SpaceCapabilities.State, stateAtom),\n Capability.contributes(SpaceCapabilities.EphemeralState, ephemeralAtom, () =>\n Effect.sync(() => {\n unsubscribe();\n }),\n ),\n ];\n }),\n);\n"],
5
+ "mappings": ";;;;;;;;AAIA,SAASA,YAAY;AACrB,YAAYC,YAAY;AAExB,SAASC,cAAcC,kBAAkB;AACzC,SAASC,sBAAsB;AAC/B,SAASC,iBAAiB;AAC1B,SAASC,kBAAkB;AAM3B,IAAMC,oBAAkD;EACtDC,YAAY,CAAC;EACbC,wBAAwB;AAC1B;AAEA,IAAA,gBAAeC,WAAWC,WACjBC,kBAAW,aAAA;AAChB,QAAMC,WAAW,OAAOH,WAAWI,IAAIC,aAAaC,YAAY;AAGhE,QAAMC,YAAYC,eAAe;IAC/BC,KAAK,GAAGC,KAAKC,EAAE;IACfC,QAAQC,kBAAkBC;IAC1BC,cAAc,OAAO;MAAE,GAAGlB;IAAkB;EAC9C,CAAA;AAGA,QAAMmB,gBAAgBC,KAAKC,KAA4C;IACrEC,UAAUC;IACVC,qBAAqB,CAAC;IACtBC,sBAAsB;IACtBC,iBAAiB,CAAC;IAClBC,mBAAmB,IAAIC,WAAmCC,UAAUC,IAAI;EAC1E,CAAA,EAAGC,KAAKX,KAAKY,SAAS;AAEtB,QAAMC,UAAU,OAAO9B,WAAWI,IAAIC,aAAa0B,aAAa;AAEhE,QAAMC,6BAA6B,MAAA;AACjC,UAAMC,UACJH,QAAQI,WAAU,EAAGC,SAAS,uBAAA,KAC9BL,QAAQI,WAAU,EAAGC,SAAS,+BAAA;AAChC,UAAMC,UAAUjC,SAASC,IAAIY,aAAAA;AAC7B,QAAIiB,YAAYG,QAAQd,sBAAsB;AAC5CnB,eAASkC,OAAOrB,eAAe,CAACsB,OAAO;QAAE,GAAGA;QAAGhB,sBAAsBW;MAAQ,EAAA;IAC/E;EACF;AAEAD,6BAAAA;AACA,QAAMO,cAAcpC,SAASqC,UAAUV,QAAQG,SAASD,0BAAAA;AAExD,SAAO;IACLhC,WAAWyC,YAAY5B,kBAAkB6B,OAAOnC,SAAAA;IAChDP,WAAWyC,YAAY5B,kBAAkB8B,gBAAgB3B,eAAe,MAC/D4B,YAAK,MAAA;AACVL,kBAAAA;IACF,CAAA,CAAA;;AAGN,CAAA,CAAA;",
6
6
  "names": ["Atom", "Effect", "Capabilities", "Capability", "createKvsStore", "PublicKey", "ComplexMap", "defaultSpaceState", "spaceNames", "enabledEdgeReplication", "Capability", "makeModule", "fnUntraced", "registry", "get", "Capabilities", "AtomRegistry", "stateAtom", "createKvsStore", "key", "meta", "id", "schema", "SpaceCapabilities", "StateSchema", "defaultValue", "ephemeralAtom", "Atom", "make", "awaiting", "undefined", "sdkMigrationRunning", "navigableCollections", "viewersByObject", "viewersByIdentity", "ComplexMap", "PublicKey", "hash", "pipe", "keepAlive", "manager", "PluginManager", "updateNavigableCollections", "enabled", "getEnabled", "includes", "current", "update", "c", "unsubscribe", "subscribe", "contributes", "State", "EphemeralState", "sync"]
7
7
  }
@@ -13,8 +13,8 @@ import {
13
13
  TypeInputOptionsAnnotation,
14
14
  TypeInputOptionsAnnotationId,
15
15
  getTypenames
16
- } from "../chunk-USN5QKRV.mjs";
17
- import "../chunk-HSMQFM57.mjs";
16
+ } from "../chunk-6IT5IBB5.mjs";
17
+ import "../chunk-CBWGVOJE.mjs";
18
18
  export {
19
19
  CollectionOperation,
20
20
  HueAnnotationId,