@dxos/plugin-space 0.8.1 → 0.8.2-main.2f9c567

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 (279) hide show
  1. package/dist/lib/browser/{app-graph-builder-GMFCSOLG.mjs → app-graph-builder-I2BU35J5.mjs} +61 -7
  2. package/dist/lib/browser/app-graph-builder-I2BU35J5.mjs.map +7 -0
  3. package/dist/lib/browser/{app-graph-serializer-DSF2U3A5.mjs → app-graph-serializer-HPYDOKA5.mjs} +8 -8
  4. package/dist/lib/browser/app-graph-serializer-HPYDOKA5.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-5BDV575R.mjs → chunk-OS5QKO4Z.mjs} +20 -8
  6. package/dist/lib/browser/chunk-OS5QKO4Z.mjs.map +7 -0
  7. package/dist/lib/browser/{chunk-LO5UL6RU.mjs → chunk-RERTVPBV.mjs} +60 -141
  8. package/dist/lib/browser/chunk-RERTVPBV.mjs.map +7 -0
  9. package/dist/lib/browser/{chunk-JZXWPMLA.mjs → chunk-TSX67XGX.mjs} +526 -670
  10. package/dist/lib/browser/chunk-TSX67XGX.mjs.map +7 -0
  11. package/dist/lib/browser/chunk-YQNBTJI4.mjs +308 -0
  12. package/dist/lib/browser/chunk-YQNBTJI4.mjs.map +7 -0
  13. package/dist/lib/browser/{identity-created-JR7BNXFH.mjs → identity-created-DWFKBGOA.mjs} +4 -4
  14. package/dist/lib/browser/identity-created-DWFKBGOA.mjs.map +7 -0
  15. package/dist/lib/browser/index.mjs +19 -40
  16. package/dist/lib/browser/index.mjs.map +3 -3
  17. package/dist/lib/browser/{intent-resolver-RKYILWWQ.mjs → intent-resolver-GKDCJ4H2.mjs} +92 -82
  18. package/dist/lib/browser/intent-resolver-GKDCJ4H2.mjs.map +7 -0
  19. package/dist/lib/browser/meta.json +1 -1
  20. package/dist/lib/browser/{react-root-6H7NX2M2.mjs → react-root-667IZ2Q4.mjs} +4 -4
  21. package/dist/lib/browser/{react-surface-7AGLOVMK.mjs → react-surface-I4RNTGGN.mjs} +121 -47
  22. package/dist/lib/browser/react-surface-I4RNTGGN.mjs.map +7 -0
  23. package/dist/lib/browser/{schema-FHTA26SW.mjs → schema-defs-FLFEUSLB.mjs} +4 -4
  24. package/dist/lib/browser/{schema-FHTA26SW.mjs.map → schema-defs-FLFEUSLB.mjs.map} +2 -2
  25. package/dist/lib/browser/{schema-tools-YAXPRIXP.mjs → schema-tools-MYC4LTQD.mjs} +22 -22
  26. package/dist/lib/browser/schema-tools-MYC4LTQD.mjs.map +7 -0
  27. package/dist/lib/browser/{settings-PJPTJUPE.mjs → settings-ILGGNYJ7.mjs} +4 -4
  28. package/dist/lib/browser/settings-ILGGNYJ7.mjs.map +7 -0
  29. package/dist/lib/browser/{spaces-ready-BSSP7HHG.mjs → spaces-ready-IXZF3RWW.mjs} +5 -5
  30. package/dist/lib/browser/spaces-ready-IXZF3RWW.mjs.map +7 -0
  31. package/dist/lib/browser/{state-X7VLCC6E.mjs → state-CYV6QCTN.mjs} +1 -3
  32. package/dist/lib/browser/state-CYV6QCTN.mjs.map +7 -0
  33. package/dist/lib/browser/types/index.mjs +7 -1
  34. package/dist/lib/node/{app-graph-builder-DPY7AUZE.cjs → app-graph-builder-H7MDHM3X.cjs} +83 -30
  35. package/dist/lib/node/app-graph-builder-H7MDHM3X.cjs.map +7 -0
  36. package/dist/lib/node/{app-graph-serializer-JELGJUAY.cjs → app-graph-serializer-G7UYFWG6.cjs} +20 -20
  37. package/dist/lib/node/app-graph-serializer-G7UYFWG6.cjs.map +7 -0
  38. package/dist/lib/node/chunk-AR3JHVCY.cjs +336 -0
  39. package/dist/lib/node/chunk-AR3JHVCY.cjs.map +7 -0
  40. package/dist/lib/node/{chunk-TUZWEPGX.cjs → chunk-EG3WAZLA.cjs} +84 -167
  41. package/dist/lib/node/chunk-EG3WAZLA.cjs.map +7 -0
  42. package/dist/lib/node/{chunk-3GKCNADA.cjs → chunk-HD4C6KKO.cjs} +517 -659
  43. package/dist/lib/node/chunk-HD4C6KKO.cjs.map +7 -0
  44. package/dist/lib/node/{chunk-PU2EYH4E.cjs → chunk-NCSFM6RA.cjs} +24 -12
  45. package/dist/lib/node/chunk-NCSFM6RA.cjs.map +7 -0
  46. package/dist/lib/node/{identity-created-XU4HFV2T.cjs → identity-created-YLGVEWAJ.cjs} +6 -6
  47. package/dist/lib/node/identity-created-YLGVEWAJ.cjs.map +7 -0
  48. package/dist/lib/node/index.cjs +73 -94
  49. package/dist/lib/node/index.cjs.map +3 -3
  50. package/dist/lib/node/{intent-resolver-VJ7YV74L.cjs → intent-resolver-V7UJKLE7.cjs} +141 -131
  51. package/dist/lib/node/intent-resolver-V7UJKLE7.cjs.map +7 -0
  52. package/dist/lib/node/meta.json +1 -1
  53. package/dist/lib/node/{react-root-TEL5RW3N.cjs → react-root-I3SSFA5O.cjs} +8 -8
  54. package/dist/lib/node/{react-surface-2H3S5TY5.cjs → react-surface-OLMQCCYD.cjs} +146 -74
  55. package/dist/lib/node/react-surface-OLMQCCYD.cjs.map +7 -0
  56. package/dist/lib/node/{schema-PPJ5BZ3A.cjs → schema-defs-PKZVL52M.cjs} +6 -6
  57. package/dist/lib/node/{schema-PPJ5BZ3A.cjs.map → schema-defs-PKZVL52M.cjs.map} +2 -2
  58. package/dist/lib/node/{schema-tools-BLIMOZYY.cjs → schema-tools-OE3MFYYH.cjs} +24 -24
  59. package/dist/lib/node/schema-tools-OE3MFYYH.cjs.map +7 -0
  60. package/dist/lib/node/{settings-WVFP2UEP.cjs → settings-7TC55JP4.cjs} +7 -7
  61. package/dist/lib/node/settings-7TC55JP4.cjs.map +7 -0
  62. package/dist/lib/node/{spaces-ready-7DNZSUOG.cjs → spaces-ready-4H3Q46GV.cjs} +12 -12
  63. package/dist/lib/node/spaces-ready-4H3Q46GV.cjs.map +7 -0
  64. package/dist/lib/node/{state-5KX6WBJH.cjs → state-JLN7TGRR.cjs} +4 -6
  65. package/dist/lib/node/state-JLN7TGRR.cjs.map +7 -0
  66. package/dist/lib/node/types/index.cjs +18 -12
  67. package/dist/lib/node/types/index.cjs.map +2 -2
  68. package/dist/lib/node-esm/{app-graph-builder-42IGWRPL.mjs → app-graph-builder-NI7X6W3Q.mjs} +61 -7
  69. package/dist/lib/node-esm/app-graph-builder-NI7X6W3Q.mjs.map +7 -0
  70. package/dist/lib/node-esm/{app-graph-serializer-FXONFKOE.mjs → app-graph-serializer-CVPYWWW3.mjs} +8 -8
  71. package/dist/lib/node-esm/app-graph-serializer-CVPYWWW3.mjs.map +7 -0
  72. package/dist/lib/node-esm/{chunk-ZGLK25WQ.mjs → chunk-B2P24Q5R.mjs} +60 -141
  73. package/dist/lib/node-esm/chunk-B2P24Q5R.mjs.map +7 -0
  74. package/dist/lib/node-esm/{chunk-BEWBZ4Q4.mjs → chunk-BU6F7ZU4.mjs} +526 -670
  75. package/dist/lib/node-esm/chunk-BU6F7ZU4.mjs.map +7 -0
  76. package/dist/lib/node-esm/{chunk-3ZOUV4DF.mjs → chunk-FUH5OODY.mjs} +20 -8
  77. package/dist/lib/node-esm/chunk-FUH5OODY.mjs.map +7 -0
  78. package/dist/lib/node-esm/chunk-RUWTHAV7.mjs +309 -0
  79. package/dist/lib/node-esm/chunk-RUWTHAV7.mjs.map +7 -0
  80. package/dist/lib/node-esm/{identity-created-WJKAS2PV.mjs → identity-created-7NHGER3Q.mjs} +4 -4
  81. package/dist/lib/node-esm/identity-created-7NHGER3Q.mjs.map +7 -0
  82. package/dist/lib/node-esm/index.mjs +19 -40
  83. package/dist/lib/node-esm/index.mjs.map +3 -3
  84. package/dist/lib/node-esm/{intent-resolver-ZFNSA4CM.mjs → intent-resolver-IL63YTIT.mjs} +92 -82
  85. package/dist/lib/node-esm/intent-resolver-IL63YTIT.mjs.map +7 -0
  86. package/dist/lib/node-esm/meta.json +1 -1
  87. package/dist/lib/node-esm/{react-root-PRBJMWLQ.mjs → react-root-JEGVIVVK.mjs} +4 -4
  88. package/dist/lib/node-esm/{react-surface-RCZG2PNF.mjs → react-surface-DRRXIJBE.mjs} +121 -47
  89. package/dist/lib/node-esm/react-surface-DRRXIJBE.mjs.map +7 -0
  90. package/dist/lib/node-esm/{schema-OUZKVYM5.mjs → schema-defs-IIEQR7B3.mjs} +4 -4
  91. package/dist/lib/node-esm/{schema-OUZKVYM5.mjs.map → schema-defs-IIEQR7B3.mjs.map} +2 -2
  92. package/dist/lib/node-esm/{schema-tools-IU7EX5A5.mjs → schema-tools-YTJLA3NQ.mjs} +22 -22
  93. package/dist/lib/node-esm/schema-tools-YTJLA3NQ.mjs.map +7 -0
  94. package/dist/lib/node-esm/{settings-FJZPC2TV.mjs → settings-CXMV2AFR.mjs} +4 -4
  95. package/dist/lib/node-esm/settings-CXMV2AFR.mjs.map +7 -0
  96. package/dist/lib/node-esm/{spaces-ready-7X5PGB2V.mjs → spaces-ready-QMXLQ4QV.mjs} +5 -5
  97. package/dist/lib/node-esm/spaces-ready-QMXLQ4QV.mjs.map +7 -0
  98. package/dist/lib/node-esm/{state-Z6E2YTNC.mjs → state-YZPY5T5A.mjs} +1 -3
  99. package/dist/lib/node-esm/state-YZPY5T5A.mjs.map +7 -0
  100. package/dist/lib/node-esm/types/index.mjs +7 -1
  101. package/dist/types/src/SpacePlugin.d.ts.map +1 -1
  102. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  103. package/dist/types/src/capabilities/index.d.ts +3 -2
  104. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  105. package/dist/types/src/capabilities/intent-resolver.d.ts +2 -1
  106. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  107. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  108. package/dist/types/src/capabilities/{schema.d.ts → schema-defs.d.ts} +1 -1
  109. package/dist/types/src/capabilities/schema-defs.d.ts.map +1 -0
  110. package/dist/types/src/capabilities/schema-tools.d.ts +2 -2
  111. package/dist/types/src/capabilities/schema-tools.d.ts.map +1 -1
  112. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  113. package/dist/types/src/components/CollectionMain.d.ts.map +1 -1
  114. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts +2 -2
  115. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
  116. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
  117. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts.map +1 -1
  118. package/dist/types/src/components/MembersContainer.d.ts.map +1 -1
  119. package/dist/types/src/components/MenuFooter.d.ts +2 -2
  120. package/dist/types/src/components/MenuFooter.d.ts.map +1 -1
  121. package/dist/types/src/components/{ObjectSettingsContainer → ObjectSettings}/AdvancedObjectSettings.d.ts +2 -2
  122. package/dist/types/src/components/ObjectSettings/AdvancedObjectSettings.d.ts.map +1 -0
  123. package/dist/types/src/components/{ObjectSettingsContainer → ObjectSettings}/BaseObjectSettings.d.ts +2 -2
  124. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts.map +1 -0
  125. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts.map +1 -0
  126. package/dist/types/src/components/{ObjectSettingsContainer → ObjectSettings}/ObjectSettingsContainer.d.ts +2 -2
  127. package/dist/types/src/components/ObjectSettings/ObjectSettingsContainer.d.ts.map +1 -0
  128. package/dist/types/src/components/ObjectSettings/index.d.ts.map +1 -0
  129. package/dist/types/src/components/PopoverAddSpace.d.ts.map +1 -1
  130. package/dist/types/src/components/PopoverRenameObject.d.ts +2 -2
  131. package/dist/types/src/components/PopoverRenameObject.d.ts.map +1 -1
  132. package/dist/types/src/components/PopoverRenameSpace.d.ts.map +1 -1
  133. package/dist/types/src/components/SchemaContainer.d.ts +13 -0
  134. package/dist/types/src/components/SchemaContainer.d.ts.map +1 -0
  135. package/dist/types/src/components/SpacePluginSettings.d.ts.map +1 -1
  136. package/dist/types/src/components/SpacePresence.d.ts.map +1 -1
  137. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts +0 -2
  138. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
  139. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts +7 -0
  140. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts.map +1 -0
  141. package/dist/types/src/components/SpaceSettings/index.d.ts +0 -1
  142. package/dist/types/src/components/SpaceSettings/index.d.ts.map +1 -1
  143. package/dist/types/src/components/SyncStatus/InlineSyncStatus.d.ts.map +1 -1
  144. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts +1 -8
  145. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
  146. package/dist/types/src/components/index.d.ts +2 -2
  147. package/dist/types/src/components/index.d.ts.map +1 -1
  148. package/dist/types/src/hooks/index.d.ts +1 -0
  149. package/dist/types/src/hooks/index.d.ts.map +1 -1
  150. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts +14 -0
  151. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts.map +1 -0
  152. package/dist/types/src/translations.d.ts +45 -9
  153. package/dist/types/src/translations.d.ts.map +1 -1
  154. package/dist/types/src/types/collection.d.ts +9 -8
  155. package/dist/types/src/types/collection.d.ts.map +1 -1
  156. package/dist/types/src/types/thread.d.ts +329 -110
  157. package/dist/types/src/types/thread.d.ts.map +1 -1
  158. package/dist/types/src/types/types.d.ts +167 -140
  159. package/dist/types/src/types/types.d.ts.map +1 -1
  160. package/dist/types/src/util.d.ts +31 -9
  161. package/dist/types/src/util.d.ts.map +1 -1
  162. package/package.json +46 -44
  163. package/src/SpacePlugin.tsx +11 -20
  164. package/src/capabilities/app-graph-builder.ts +47 -8
  165. package/src/capabilities/app-graph-serializer.ts +4 -4
  166. package/src/capabilities/identity-created.ts +2 -2
  167. package/src/capabilities/index.ts +2 -2
  168. package/src/capabilities/intent-resolver.ts +87 -84
  169. package/src/capabilities/react-surface.tsx +111 -42
  170. package/src/capabilities/schema-tool.test.ts +2 -3
  171. package/src/capabilities/schema-tools.ts +25 -25
  172. package/src/capabilities/settings.ts +2 -2
  173. package/src/capabilities/spaces-ready.ts +2 -2
  174. package/src/capabilities/state.ts +0 -2
  175. package/src/components/CollectionMain.tsx +2 -5
  176. package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +2 -2
  177. package/src/components/CreateDialog/CreateObjectDialog.tsx +3 -3
  178. package/src/components/CreateDialog/CreateObjectPanel.tsx +3 -25
  179. package/src/components/CreateDialog/CreateSpaceDialog.tsx +6 -3
  180. package/src/components/MembersContainer.tsx +80 -54
  181. package/src/components/MenuFooter.tsx +2 -2
  182. package/src/components/{ObjectSettingsContainer → ObjectSettings}/AdvancedObjectSettings.tsx +2 -2
  183. package/src/components/{ObjectSettingsContainer → ObjectSettings}/BaseObjectSettings.tsx +2 -2
  184. package/src/components/{ObjectSettingsContainer → ObjectSettings}/ObjectSettingsContainer.tsx +2 -2
  185. package/src/components/PopoverAddSpace.tsx +9 -3
  186. package/src/components/PopoverRenameObject.tsx +14 -8
  187. package/src/components/PopoverRenameSpace.tsx +8 -0
  188. package/src/components/SchemaContainer.tsx +59 -0
  189. package/src/components/SpacePluginSettings.tsx +27 -2
  190. package/src/components/SpacePresence.tsx +29 -25
  191. package/src/components/SpaceSettings/{SpacePropertiesForm.stories.tsx → SpaceSettingsContainer.stories.tsx} +6 -6
  192. package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +159 -39
  193. package/src/components/SpaceSettings/index.ts +0 -1
  194. package/src/components/SyncStatus/InlineSyncStatus.tsx +5 -7
  195. package/src/components/SyncStatus/SyncStatus.tsx +6 -69
  196. package/src/components/index.ts +2 -2
  197. package/src/hooks/index.ts +1 -0
  198. package/src/hooks/useInputSurfaceLookup.tsx +31 -0
  199. package/src/translations.ts +18 -5
  200. package/src/types/collection.ts +6 -4
  201. package/src/types/thread.ts +14 -8
  202. package/src/types/types.ts +128 -101
  203. package/src/util.tsx +52 -112
  204. package/dist/lib/browser/app-graph-builder-GMFCSOLG.mjs.map +0 -7
  205. package/dist/lib/browser/app-graph-serializer-DSF2U3A5.mjs.map +0 -7
  206. package/dist/lib/browser/chunk-5BDV575R.mjs.map +0 -7
  207. package/dist/lib/browser/chunk-AYW4IDRT.mjs +0 -275
  208. package/dist/lib/browser/chunk-AYW4IDRT.mjs.map +0 -7
  209. package/dist/lib/browser/chunk-JZXWPMLA.mjs.map +0 -7
  210. package/dist/lib/browser/chunk-LO5UL6RU.mjs.map +0 -7
  211. package/dist/lib/browser/identity-created-JR7BNXFH.mjs.map +0 -7
  212. package/dist/lib/browser/intent-resolver-RKYILWWQ.mjs.map +0 -7
  213. package/dist/lib/browser/react-surface-7AGLOVMK.mjs.map +0 -7
  214. package/dist/lib/browser/schema-tools-YAXPRIXP.mjs.map +0 -7
  215. package/dist/lib/browser/settings-PJPTJUPE.mjs.map +0 -7
  216. package/dist/lib/browser/spaces-ready-BSSP7HHG.mjs.map +0 -7
  217. package/dist/lib/browser/state-X7VLCC6E.mjs.map +0 -7
  218. package/dist/lib/node/app-graph-builder-DPY7AUZE.cjs.map +0 -7
  219. package/dist/lib/node/app-graph-serializer-JELGJUAY.cjs.map +0 -7
  220. package/dist/lib/node/chunk-3GKCNADA.cjs.map +0 -7
  221. package/dist/lib/node/chunk-PU2EYH4E.cjs.map +0 -7
  222. package/dist/lib/node/chunk-TUZWEPGX.cjs.map +0 -7
  223. package/dist/lib/node/chunk-WDEIFDTX.cjs +0 -300
  224. package/dist/lib/node/chunk-WDEIFDTX.cjs.map +0 -7
  225. package/dist/lib/node/identity-created-XU4HFV2T.cjs.map +0 -7
  226. package/dist/lib/node/intent-resolver-VJ7YV74L.cjs.map +0 -7
  227. package/dist/lib/node/react-surface-2H3S5TY5.cjs.map +0 -7
  228. package/dist/lib/node/schema-tools-BLIMOZYY.cjs.map +0 -7
  229. package/dist/lib/node/settings-WVFP2UEP.cjs.map +0 -7
  230. package/dist/lib/node/spaces-ready-7DNZSUOG.cjs.map +0 -7
  231. package/dist/lib/node/state-5KX6WBJH.cjs.map +0 -7
  232. package/dist/lib/node-esm/app-graph-builder-42IGWRPL.mjs.map +0 -7
  233. package/dist/lib/node-esm/app-graph-serializer-FXONFKOE.mjs.map +0 -7
  234. package/dist/lib/node-esm/chunk-3ZOUV4DF.mjs.map +0 -7
  235. package/dist/lib/node-esm/chunk-BEWBZ4Q4.mjs.map +0 -7
  236. package/dist/lib/node-esm/chunk-FC4UHDPL.mjs +0 -276
  237. package/dist/lib/node-esm/chunk-FC4UHDPL.mjs.map +0 -7
  238. package/dist/lib/node-esm/chunk-ZGLK25WQ.mjs.map +0 -7
  239. package/dist/lib/node-esm/identity-created-WJKAS2PV.mjs.map +0 -7
  240. package/dist/lib/node-esm/intent-resolver-ZFNSA4CM.mjs.map +0 -7
  241. package/dist/lib/node-esm/react-surface-RCZG2PNF.mjs.map +0 -7
  242. package/dist/lib/node-esm/schema-tools-IU7EX5A5.mjs.map +0 -7
  243. package/dist/lib/node-esm/settings-FJZPC2TV.mjs.map +0 -7
  244. package/dist/lib/node-esm/spaces-ready-7X5PGB2V.mjs.map +0 -7
  245. package/dist/lib/node-esm/state-Z6E2YTNC.mjs.map +0 -7
  246. package/dist/types/src/capabilities/schema.d.ts.map +0 -1
  247. package/dist/types/src/components/ObjectSettingsContainer/AdvancedObjectSettings.d.ts.map +0 -1
  248. package/dist/types/src/components/ObjectSettingsContainer/BaseObjectSettings.d.ts.map +0 -1
  249. package/dist/types/src/components/ObjectSettingsContainer/ForeignKeys.d.ts.map +0 -1
  250. package/dist/types/src/components/ObjectSettingsContainer/ObjectSettingsContainer.d.ts.map +0 -1
  251. package/dist/types/src/components/ObjectSettingsContainer/index.d.ts.map +0 -1
  252. package/dist/types/src/components/ShareSpaceButton.d.ts +0 -9
  253. package/dist/types/src/components/ShareSpaceButton.d.ts.map +0 -1
  254. package/dist/types/src/components/ShareSpaceButton.stories.d.ts +0 -10
  255. package/dist/types/src/components/ShareSpaceButton.stories.d.ts.map +0 -1
  256. package/dist/types/src/components/SpaceSettings/SpacePropertiesForm.d.ts +0 -7
  257. package/dist/types/src/components/SpaceSettings/SpacePropertiesForm.d.ts.map +0 -1
  258. package/dist/types/src/components/SpaceSettings/SpacePropertiesForm.stories.d.ts +0 -7
  259. package/dist/types/src/components/SpaceSettings/SpacePropertiesForm.stories.d.ts.map +0 -1
  260. package/dist/types/src/components/SyncStatus/Space.d.ts +0 -13
  261. package/dist/types/src/components/SyncStatus/Space.d.ts.map +0 -1
  262. package/dist/types/src/components/SyncStatus/SyncStatusDetail.stories.d.ts +0 -9
  263. package/dist/types/src/components/SyncStatus/SyncStatusDetail.stories.d.ts.map +0 -1
  264. package/dist/types/src/components/SyncStatus/sync-state.d.ts +0 -18
  265. package/dist/types/src/components/SyncStatus/sync-state.d.ts.map +0 -1
  266. package/src/components/ShareSpaceButton.stories.tsx +0 -27
  267. package/src/components/ShareSpaceButton.tsx +0 -32
  268. package/src/components/SpaceSettings/SpacePropertiesForm.tsx +0 -136
  269. package/src/components/SyncStatus/Space.tsx +0 -133
  270. package/src/components/SyncStatus/SyncStatusDetail.stories.tsx +0 -89
  271. package/src/components/SyncStatus/sync-state.ts +0 -101
  272. /package/dist/lib/browser/{react-root-6H7NX2M2.mjs.map → react-root-667IZ2Q4.mjs.map} +0 -0
  273. /package/dist/lib/node/{react-root-TEL5RW3N.cjs.map → react-root-I3SSFA5O.cjs.map} +0 -0
  274. /package/dist/lib/node-esm/{react-root-PRBJMWLQ.mjs.map → react-root-JEGVIVVK.mjs.map} +0 -0
  275. /package/dist/types/src/components/{ObjectSettingsContainer → ObjectSettings}/ForeignKeys.d.ts +0 -0
  276. /package/dist/types/src/components/{ObjectSettingsContainer → ObjectSettings}/index.d.ts +0 -0
  277. /package/src/capabilities/{schema.ts → schema-defs.ts} +0 -0
  278. /package/src/components/{ObjectSettingsContainer → ObjectSettings}/ForeignKeys.tsx +0 -0
  279. /package/src/components/{ObjectSettingsContainer → ObjectSettings}/index.ts +0 -0
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  AwaitingObject
3
- } from "./chunk-JZXWPMLA.mjs";
3
+ } from "./chunk-TSX67XGX.mjs";
4
4
  import {
5
5
  SpaceCapabilities
6
6
  } from "./chunk-KVRYWFZU.mjs";
7
- import "./chunk-LO5UL6RU.mjs";
8
- import "./chunk-AYW4IDRT.mjs";
7
+ import "./chunk-RERTVPBV.mjs";
8
+ import "./chunk-YQNBTJI4.mjs";
9
9
  import {
10
10
  SPACE_PLUGIN
11
11
  } from "./chunk-PTKYMZWO.mjs";
@@ -25,4 +25,4 @@ var react_root_default = () => contributes(Capabilities.ReactRoot, {
25
25
  export {
26
26
  react_root_default as default
27
27
  };
28
- //# sourceMappingURL=react-root-6H7NX2M2.mjs.map
28
+ //# sourceMappingURL=react-root-667IZ2Q4.mjs.map
@@ -17,30 +17,35 @@ import {
17
17
  PopoverAddSpace,
18
18
  PopoverRenameObject,
19
19
  PopoverRenameSpace,
20
+ SchemaContainer,
20
21
  SmallPresenceLive,
21
22
  SpacePluginSettings,
22
23
  SpacePresence,
23
- SpacePropertiesForm,
24
24
  SpaceSettingsContainer,
25
25
  SyncStatus
26
- } from "./chunk-JZXWPMLA.mjs";
26
+ } from "./chunk-TSX67XGX.mjs";
27
27
  import {
28
28
  SpaceCapabilities
29
29
  } from "./chunk-KVRYWFZU.mjs";
30
- import "./chunk-LO5UL6RU.mjs";
30
+ import "./chunk-RERTVPBV.mjs";
31
31
  import {
32
- CollectionType
33
- } from "./chunk-AYW4IDRT.mjs";
32
+ CollectionType,
33
+ HueAnnotationId,
34
+ IconAnnotationId
35
+ } from "./chunk-YQNBTJI4.mjs";
34
36
  import {
35
37
  SPACE_PLUGIN
36
38
  } from "./chunk-PTKYMZWO.mjs";
37
39
 
38
40
  // packages/plugins/plugin-space/src/capabilities/react-surface.tsx
39
- import React from "react";
40
- import { Capabilities, contributes, createSurface, Surface, useCapability } from "@dxos/app-framework";
41
+ import React, { useCallback } from "react";
42
+ import { Capabilities, contributes, createSurface, Surface, useCapability, useLayout } from "@dxos/app-framework";
41
43
  import { isInstanceOf } from "@dxos/echo-schema";
44
+ import { findAnnotation } from "@dxos/effect";
42
45
  import { SettingsStore } from "@dxos/local-storage";
43
- import { getSpace, isEchoObject, isReactiveObject, isSpace, SpaceState } from "@dxos/react-client/echo";
46
+ import { getSpace, isEchoObject, isLiveObject, isSpace, parseId, SpaceState, useSpace } from "@dxos/react-client/echo";
47
+ import { Input } from "@dxos/react-ui";
48
+ import { HuePicker, IconPicker } from "@dxos/react-ui-pickers";
44
49
  var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilities.ReactSurface, [
45
50
  createSurface({
46
51
  id: `${SPACE_PLUGIN}/article`,
@@ -68,22 +73,11 @@ var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilitie
68
73
  })
69
74
  }),
70
75
  createSurface({
71
- id: `${SPACE_PLUGIN}/members`,
72
- role: "article",
73
- position: "hoist",
74
- filter: (data) => isSpace(data.subject) && data.variant === "members",
75
- component: ({ data }) => /* @__PURE__ */ React.createElement(MembersContainer, {
76
- space: data.subject,
77
- createInvitationUrl
78
- })
79
- }),
80
- createSurface({
81
- id: `${SPACE_PLUGIN}/settings`,
76
+ id: `${SPACE_PLUGIN}/plugin-settings`,
82
77
  role: "article",
83
- position: "hoist",
84
- filter: (data) => isSpace(data.subject) && data.variant === "settings",
85
- component: ({ data }) => /* @__PURE__ */ React.createElement(SpaceSettingsContainer, {
86
- space: data.subject
78
+ filter: (data) => data.subject instanceof SettingsStore && data.subject.prefix === SPACE_PLUGIN,
79
+ component: ({ data: { subject } }) => /* @__PURE__ */ React.createElement(SpacePluginSettings, {
80
+ settings: subject.value
87
81
  })
88
82
  }),
89
83
  createSurface({
@@ -96,12 +90,54 @@ var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilitie
96
90
  })
97
91
  }),
98
92
  createSurface({
99
- id: `${SPACE_PLUGIN}/space-settings--properties`,
100
- role: "space-settings--properties",
101
- filter: (data) => isSpace(data.subject),
102
- component: ({ data }) => /* @__PURE__ */ React.createElement(SpacePropertiesForm, {
103
- space: data.subject
104
- })
93
+ id: `${SPACE_PLUGIN}/space-settings-properties`,
94
+ role: "article",
95
+ filter: (data) => data.subject === `${SPACE_PLUGIN}/properties`,
96
+ component: () => {
97
+ const layout = useLayout();
98
+ const { spaceId } = parseId(layout.workspace);
99
+ const space = useSpace(spaceId);
100
+ if (!space || !spaceId) {
101
+ return null;
102
+ }
103
+ return /* @__PURE__ */ React.createElement(SpaceSettingsContainer, {
104
+ space
105
+ });
106
+ }
107
+ }),
108
+ createSurface({
109
+ id: `${SPACE_PLUGIN}/space-settings-members`,
110
+ role: "article",
111
+ position: "hoist",
112
+ filter: (data) => data.subject === `${SPACE_PLUGIN}/members`,
113
+ component: () => {
114
+ const layout = useLayout();
115
+ const { spaceId } = parseId(layout.workspace);
116
+ const space = useSpace(spaceId);
117
+ if (!space || !spaceId) {
118
+ return null;
119
+ }
120
+ return /* @__PURE__ */ React.createElement(MembersContainer, {
121
+ space,
122
+ createInvitationUrl
123
+ });
124
+ }
125
+ }),
126
+ createSurface({
127
+ id: `${SPACE_PLUGIN}/space-settings-schema`,
128
+ role: "article",
129
+ filter: (data) => data.subject === `${SPACE_PLUGIN}/schema`,
130
+ component: () => {
131
+ const layout = useLayout();
132
+ const { spaceId } = parseId(layout.workspace);
133
+ const space = useSpace(spaceId);
134
+ if (!space || !spaceId) {
135
+ return null;
136
+ }
137
+ return /* @__PURE__ */ React.createElement(SchemaContainer, {
138
+ space
139
+ });
140
+ }
105
141
  }),
106
142
  createSurface({
107
143
  id: JOIN_DIALOG,
@@ -121,6 +157,52 @@ var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilitie
121
157
  filter: (data) => data.component === CREATE_OBJECT_DIALOG,
122
158
  component: ({ data }) => /* @__PURE__ */ React.createElement(CreateObjectDialog, data.props)
123
159
  }),
160
+ createSurface({
161
+ id: `${SPACE_PLUGIN}/create-initial-space-form-[hue]`,
162
+ role: "form-input",
163
+ filter: (data) => {
164
+ const annotation = findAnnotation(data.schema.ast, HueAnnotationId);
165
+ return !!annotation;
166
+ },
167
+ component: ({ data: _, ...inputProps }) => {
168
+ const { label, disabled, type, getValue, onValueChange } = inputProps;
169
+ const handleChange = useCallback((nextHue) => onValueChange(type, nextHue), [
170
+ onValueChange
171
+ ]);
172
+ const handleReset = useCallback(() => onValueChange(type, void 0), [
173
+ onValueChange
174
+ ]);
175
+ return /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Label, null, label), /* @__PURE__ */ React.createElement(HuePicker, {
176
+ disabled,
177
+ value: getValue() ?? "",
178
+ onChange: handleChange,
179
+ onReset: handleReset
180
+ }));
181
+ }
182
+ }),
183
+ createSurface({
184
+ id: `${SPACE_PLUGIN}/create-initial-space-form-[icon]`,
185
+ role: "form-input",
186
+ filter: (data) => {
187
+ const annotation = findAnnotation(data.schema.ast, IconAnnotationId);
188
+ return !!annotation;
189
+ },
190
+ component: ({ data: _, ...inputProps }) => {
191
+ const { label, disabled, type, getValue, onValueChange } = inputProps;
192
+ const handleChange = useCallback((nextIcon) => onValueChange(type, nextIcon), [
193
+ onValueChange
194
+ ]);
195
+ const handleReset = useCallback(() => onValueChange(type, void 0), [
196
+ onValueChange
197
+ ]);
198
+ return /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Label, null, label), /* @__PURE__ */ React.createElement(IconPicker, {
199
+ disabled,
200
+ value: getValue() ?? "",
201
+ onChange: handleChange,
202
+ onReset: handleReset
203
+ }));
204
+ }
205
+ }),
124
206
  createSurface({
125
207
  id: POPOVER_RENAME_SPACE,
126
208
  role: "popover",
@@ -132,7 +214,7 @@ var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilitie
132
214
  createSurface({
133
215
  id: POPOVER_RENAME_OBJECT,
134
216
  role: "popover",
135
- filter: (data) => data.component === POPOVER_RENAME_OBJECT && isReactiveObject(data.props),
217
+ filter: (data) => data.component === POPOVER_RENAME_OBJECT && isLiveObject(data.props),
136
218
  component: ({ data }) => /* @__PURE__ */ React.createElement(PopoverRenameObject, {
137
219
  object: data.props
138
220
  })
@@ -143,6 +225,14 @@ var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilitie
143
225
  filter: (data) => data.component === POPOVER_ADD_SPACE,
144
226
  component: () => /* @__PURE__ */ React.createElement(PopoverAddSpace, null)
145
227
  }),
228
+ createSurface({
229
+ id: `${SPACE_PLUGIN}/menu-footer`,
230
+ role: "menu-footer",
231
+ filter: (data) => isEchoObject(data.subject),
232
+ component: ({ data }) => /* @__PURE__ */ React.createElement(MenuFooter, {
233
+ object: data.subject
234
+ })
235
+ }),
146
236
  createSurface({
147
237
  id: `${SPACE_PLUGIN}/navtree-presence`,
148
238
  role: "navtree-item-end",
@@ -198,22 +288,6 @@ var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilitie
198
288
  collection: data.subject
199
289
  })
200
290
  }),
201
- createSurface({
202
- id: `${SPACE_PLUGIN}/plugin-settings`,
203
- role: "article",
204
- filter: (data) => data.subject instanceof SettingsStore && data.subject.prefix === SPACE_PLUGIN,
205
- component: ({ data: { subject } }) => /* @__PURE__ */ React.createElement(SpacePluginSettings, {
206
- settings: subject.value
207
- })
208
- }),
209
- createSurface({
210
- id: `${SPACE_PLUGIN}/menu-footer`,
211
- role: "menu-footer",
212
- filter: (data) => isEchoObject(data.subject),
213
- component: ({ data }) => /* @__PURE__ */ React.createElement(MenuFooter, {
214
- object: data.subject
215
- })
216
- }),
217
291
  createSurface({
218
292
  id: `${SPACE_PLUGIN}/status`,
219
293
  role: "status",
@@ -223,4 +297,4 @@ var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilitie
223
297
  export {
224
298
  react_surface_default as default
225
299
  };
226
- //# sourceMappingURL=react-surface-7AGLOVMK.mjs.map
300
+ //# sourceMappingURL=react-surface-I4RNTGGN.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/react-surface.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Schema } from 'effect';\nimport React, { useCallback } from 'react';\n\nimport { Capabilities, contributes, createSurface, Surface, useCapability, useLayout } from '@dxos/app-framework';\nimport { isInstanceOf } from '@dxos/echo-schema';\nimport { findAnnotation } from '@dxos/effect';\nimport { SettingsStore } from '@dxos/local-storage';\nimport {\n getSpace,\n isEchoObject,\n isLiveObject,\n isSpace,\n parseId,\n SpaceState,\n useSpace,\n type AnyLiveObject,\n type Space,\n} from '@dxos/react-client/echo';\nimport { Input } from '@dxos/react-ui';\nimport { type InputProps } from '@dxos/react-ui-form';\nimport { HuePicker, IconPicker } from '@dxos/react-ui-pickers';\nimport { type JoinPanelProps } from '@dxos/shell/react';\n\nimport { SpaceCapabilities } from './capabilities';\nimport {\n CollectionMain,\n CollectionSection,\n CREATE_OBJECT_DIALOG,\n CREATE_SPACE_DIALOG,\n CreateObjectDialog,\n CreateSpaceDialog,\n InlineSyncStatus,\n JOIN_DIALOG,\n JoinDialog,\n MenuFooter,\n POPOVER_RENAME_OBJECT,\n POPOVER_RENAME_SPACE,\n PopoverRenameObject,\n PopoverRenameSpace,\n SmallPresenceLive,\n SpacePluginSettings,\n SpacePresence,\n SyncStatus,\n type CreateObjectDialogProps,\n POPOVER_ADD_SPACE,\n PopoverAddSpace,\n MembersContainer,\n ObjectSettingsContainer,\n SpaceSettingsContainer,\n SchemaContainer,\n} from '../components';\nimport { SPACE_PLUGIN } from '../meta';\nimport { CollectionType, HueAnnotationId, IconAnnotationId, type SpaceSettingsProps } from '../types';\n\ntype ReactSurfaceOptions = {\n createInvitationUrl: (invitationCode: string) => string;\n};\n\nexport default ({ createInvitationUrl }: ReactSurfaceOptions) =>\n contributes(Capabilities.ReactSurface, [\n createSurface({\n id: `${SPACE_PLUGIN}/article`,\n role: 'article',\n filter: (data): data is { subject: Space } =>\n // TODO(wittjosiah): Need to avoid shotgun parsing space state everywhere.\n isSpace(data.subject) && data.subject.state.get() === SpaceState.SPACE_READY,\n component: ({ data, role, ...rest }) => (\n <Surface\n data={{ id: data.subject.id, subject: data.subject.properties[CollectionType.typename]?.target }}\n role={role}\n {...rest}\n />\n ),\n }),\n createSurface({\n id: `${SPACE_PLUGIN}/collection-fallback`,\n role: 'article',\n position: 'fallback',\n filter: (data): data is { subject: CollectionType } => isInstanceOf(CollectionType, data.subject),\n component: ({ data }) => <CollectionMain collection={data.subject} />,\n }),\n createSurface({\n id: `${SPACE_PLUGIN}/plugin-settings`,\n role: 'article',\n filter: (data): data is { subject: SettingsStore<SpaceSettingsProps> } =>\n data.subject instanceof SettingsStore && data.subject.prefix === SPACE_PLUGIN,\n component: ({ data: { subject } }) => <SpacePluginSettings settings={subject.value} />,\n }),\n createSurface({\n id: `${SPACE_PLUGIN}/companion/object-settings`,\n role: 'article',\n filter: (data): data is { companionTo: AnyLiveObject<any> } =>\n isEchoObject(data.companionTo) && data.subject === 'settings',\n component: ({ data, role }) => <ObjectSettingsContainer object={data.companionTo} role={role} />,\n }),\n createSurface({\n id: `${SPACE_PLUGIN}/space-settings-properties`,\n role: 'article',\n filter: (data): data is { subject: string } => data.subject === `${SPACE_PLUGIN}/properties`,\n component: () => {\n const layout = useLayout();\n const { spaceId } = parseId(layout.workspace);\n const space = useSpace(spaceId);\n if (!space || !spaceId) {\n return null;\n }\n\n return <SpaceSettingsContainer space={space} />;\n },\n }),\n createSurface({\n id: `${SPACE_PLUGIN}/space-settings-members`,\n role: 'article',\n position: 'hoist',\n filter: (data): data is { subject: string } => data.subject === `${SPACE_PLUGIN}/members`,\n component: () => {\n const layout = useLayout();\n const { spaceId } = parseId(layout.workspace);\n const space = useSpace(spaceId);\n if (!space || !spaceId) {\n return null;\n }\n\n return <MembersContainer space={space} createInvitationUrl={createInvitationUrl} />;\n },\n }),\n createSurface({\n id: `${SPACE_PLUGIN}/space-settings-schema`,\n role: 'article',\n filter: (data): data is { subject: string } => data.subject === `${SPACE_PLUGIN}/schema`,\n component: () => {\n const layout = useLayout();\n const { spaceId } = parseId(layout.workspace);\n const space = useSpace(spaceId);\n if (!space || !spaceId) {\n return null;\n }\n\n return <SchemaContainer space={space} />;\n },\n }),\n createSurface({\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 createSurface({\n id: CREATE_SPACE_DIALOG,\n role: 'dialog',\n filter: (data): data is any => data.component === CREATE_SPACE_DIALOG,\n component: () => <CreateSpaceDialog />,\n }),\n createSurface({\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 createSurface({\n id: `${SPACE_PLUGIN}/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, disabled, type, getValue, onValueChange } = inputProps as any as InputProps;\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={disabled} value={getValue() ?? ''} onChange={handleChange} onReset={handleReset} />\n </Input.Root>\n );\n },\n }),\n createSurface({\n id: `${SPACE_PLUGIN}/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, disabled, type, getValue, onValueChange } = inputProps as any as InputProps;\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 disabled={disabled} value={getValue() ?? ''} onChange={handleChange} onReset={handleReset} />\n </Input.Root>\n );\n },\n }),\n createSurface({\n id: POPOVER_RENAME_SPACE,\n role: 'popover',\n filter: (data): data is { props: Space } => data.component === POPOVER_RENAME_SPACE && isSpace(data.props),\n component: ({ data }) => <PopoverRenameSpace space={data.props} />,\n }),\n createSurface({\n id: POPOVER_RENAME_OBJECT,\n role: 'popover',\n filter: (data): data is { props: AnyLiveObject<any> } =>\n data.component === POPOVER_RENAME_OBJECT && isLiveObject(data.props),\n component: ({ data }) => <PopoverRenameObject object={data.props} />,\n }),\n createSurface({\n id: POPOVER_ADD_SPACE,\n role: 'popover',\n filter: (data): data is any => data.component === POPOVER_ADD_SPACE,\n component: () => <PopoverAddSpace />,\n }),\n createSurface({\n id: `${SPACE_PLUGIN}/menu-footer`,\n role: 'menu-footer',\n filter: (data): data is { subject: AnyLiveObject<any> } => isEchoObject(data.subject),\n component: ({ data }) => <MenuFooter object={data.subject} />,\n }),\n createSurface({\n id: `${SPACE_PLUGIN}/navtree-presence`,\n role: 'navtree-item-end',\n filter: (data): data is { id: string; subject: AnyLiveObject<any>; open?: boolean } =>\n typeof data.id === 'string' && isEchoObject(data.subject),\n component: ({ data }) => {\n // TODO(wittjosiah): Doesn't need to be mutable but readonly type messes with ComplexMap.\n const state = useCapability(SpaceCapabilities.MutableState);\n return <SmallPresenceLive id={data.id} open={data.open} viewers={state.viewersByObject[data.id]} />;\n },\n }),\n // TODO(wittjosiah): Attention glyph for non-echo items should be handled elsewhere.\n createSurface({\n id: `${SPACE_PLUGIN}/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 createSurface({\n id: `${SPACE_PLUGIN}/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 createSurface({\n id: `${SPACE_PLUGIN}/navbar-presence`,\n role: 'navbar-end',\n position: 'hoist',\n filter: (data): data is { subject: Space | AnyLiveObject<any> } =>\n isSpace(data.subject) || isEchoObject(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[CollectionType.typename]?.target as CollectionType)\n : undefined\n : data.subject;\n\n return object ? <SpacePresence object={object} /> : null;\n },\n }),\n createSurface({\n id: `${SPACE_PLUGIN}/collection-section`,\n role: 'section',\n filter: (data): data is { subject: CollectionType } => isInstanceOf(CollectionType, data.subject),\n component: ({ data }) => <CollectionSection collection={data.subject} />,\n }),\n createSurface({\n id: `${SPACE_PLUGIN}/status`,\n role: 'status',\n component: () => <SyncStatus />,\n }),\n ]);\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "useCallback", "Capabilities", "contributes", "createSurface", "Surface", "useCapability", "useLayout", "isInstanceOf", "findAnnotation", "SettingsStore", "getSpace", "isEchoObject", "isLiveObject", "isSpace", "parseId", "SpaceState", "useSpace", "Input", "HuePicker", "IconPicker", "createInvitationUrl", "contributes", "Capabilities", "ReactSurface", "createSurface", "id", "SPACE_PLUGIN", "role", "filter", "data", "isSpace", "subject", "state", "get", "SpaceState", "SPACE_READY", "component", "rest", "Surface", "properties", "CollectionType", "typename", "target", "position", "isInstanceOf", "CollectionMain", "collection", "SettingsStore", "prefix", "SpacePluginSettings", "settings", "value", "isEchoObject", "companionTo", "ObjectSettingsContainer", "object", "layout", "useLayout", "spaceId", "parseId", "workspace", "space", "useSpace", "SpaceSettingsContainer", "MembersContainer", "SchemaContainer", "JOIN_DIALOG", "JoinDialog", "props", "CREATE_SPACE_DIALOG", "CreateSpaceDialog", "CREATE_OBJECT_DIALOG", "CreateObjectDialog", "annotation", "findAnnotation", "schema", "ast", "HueAnnotationId", "_", "inputProps", "label", "disabled", "type", "getValue", "onValueChange", "handleChange", "useCallback", "nextHue", "handleReset", "undefined", "Input", "Root", "Label", "HuePicker", "onChange", "onReset", "IconAnnotationId", "nextIcon", "IconPicker", "POPOVER_RENAME_SPACE", "PopoverRenameSpace", "POPOVER_RENAME_OBJECT", "isLiveObject", "PopoverRenameObject", "POPOVER_ADD_SPACE", "PopoverAddSpace", "MenuFooter", "useCapability", "SpaceCapabilities", "MutableState", "SmallPresenceLive", "open", "viewers", "viewersByObject", "InlineSyncStatus", "getSpace", "SpacePresence", "CollectionSection", "SyncStatus"]
7
+ }
@@ -3,11 +3,11 @@ import {
3
3
  } from "./chunk-KVRYWFZU.mjs";
4
4
  import "./chunk-PTKYMZWO.mjs";
5
5
 
6
- // packages/plugins/plugin-space/src/capabilities/schema.ts
6
+ // packages/plugins/plugin-space/src/capabilities/schema-defs.ts
7
7
  import { effect } from "@preact/signals-core";
8
8
  import { Capabilities, contributes } from "@dxos/app-framework";
9
9
  import { ClientCapabilities } from "@dxos/plugin-client";
10
- var schema_default = (context) => {
10
+ var schema_defs_default = (context) => {
11
11
  const client = context.requestCapability(ClientCapabilities.Client);
12
12
  let previous = [];
13
13
  const unsubscribe = effect(() => {
@@ -19,6 +19,6 @@ var schema_default = (context) => {
19
19
  return contributes(Capabilities.Null, null, () => unsubscribe());
20
20
  };
21
21
  export {
22
- schema_default as default
22
+ schema_defs_default as default
23
23
  };
24
- //# sourceMappingURL=schema-FHTA26SW.mjs.map
24
+ //# sourceMappingURL=schema-defs-FLFEUSLB.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/capabilities/schema.ts"],
3
+ "sources": ["../../../src/capabilities/schema-defs.ts"],
4
4
  "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { effect } from '@preact/signals-core';\n\nimport { Capabilities, contributes, type PluginsContext } from '@dxos/app-framework';\nimport { ClientCapabilities } from '@dxos/plugin-client';\n\nimport { SpaceCapabilities } from './capabilities';\nimport { type ObjectForm } from '../types';\n\nexport default (context: PluginsContext) => {\n const client = context.requestCapability(ClientCapabilities.Client);\n\n // TODO(wittjosiah): Unregister schemas when they are disabled.\n let previous: ObjectForm[] = [];\n const unsubscribe = effect(() => {\n const forms = Array.from(new Set(context.requestCapabilities(SpaceCapabilities.ObjectForm)));\n // TODO(wittjosiah): Filter out schemas which the client has already registered.\n const newSchemas = forms.filter((form) => !previous.includes(form)).map((form) => form.objectSchema);\n previous = forms;\n client.addTypes(newSchemas);\n });\n\n return contributes(Capabilities.Null, null, () => unsubscribe());\n};\n"],
5
- "mappings": ";;;;;;AAIA,SAASA,cAAc;AAEvB,SAASC,cAAcC,mBAAwC;AAC/D,SAASC,0BAA0B;AAKnC,IAAA,iBAAe,CAACC,YAAAA;AACd,QAAMC,SAASD,QAAQE,kBAAkBC,mBAAmBC,MAAM;AAGlE,MAAIC,WAAyB,CAAA;AAC7B,QAAMC,cAAcC,OAAO,MAAA;AACzB,UAAMC,QAAQC,MAAMC,KAAK,IAAIC,IAAIX,QAAQY,oBAAoBC,kBAAkBC,UAAU,CAAA,CAAA;AAEzF,UAAMC,aAAaP,MAAMQ,OAAO,CAACC,SAAS,CAACZ,SAASa,SAASD,IAAAA,CAAAA,EAAOE,IAAI,CAACF,SAASA,KAAKG,YAAY;AACnGf,eAAWG;AACXP,WAAOoB,SAASN,UAAAA;EAClB,CAAA;AAEA,SAAOO,YAAYC,aAAaC,MAAM,MAAM,MAAMlB,YAAAA,CAAAA;AACpD;",
5
+ "mappings": ";;;;;;AAIA,SAASA,cAAc;AAEvB,SAASC,cAAcC,mBAAwC;AAC/D,SAASC,0BAA0B;AAKnC,IAAA,sBAAe,CAACC,YAAAA;AACd,QAAMC,SAASD,QAAQE,kBAAkBC,mBAAmBC,MAAM;AAGlE,MAAIC,WAAyB,CAAA;AAC7B,QAAMC,cAAcC,OAAO,MAAA;AACzB,UAAMC,QAAQC,MAAMC,KAAK,IAAIC,IAAIX,QAAQY,oBAAoBC,kBAAkBC,UAAU,CAAA,CAAA;AAEzF,UAAMC,aAAaP,MAAMQ,OAAO,CAACC,SAAS,CAACZ,SAASa,SAASD,IAAAA,CAAAA,EAAOE,IAAI,CAACF,SAASA,KAAKG,YAAY;AACnGf,eAAWG;AACXP,WAAOoB,SAASN,UAAAA;EAClB,CAAA;AAEA,SAAOO,YAAYC,aAAaC,MAAM,MAAM,MAAMlB,YAAAA,CAAAA;AACpD;",
6
6
  "names": ["effect", "Capabilities", "contributes", "ClientCapabilities", "context", "client", "requestCapability", "ClientCapabilities", "Client", "previous", "unsubscribe", "effect", "forms", "Array", "from", "Set", "requestCapabilities", "SpaceCapabilities", "ObjectForm", "newSchemas", "filter", "form", "includes", "map", "objectSchema", "addTypes", "contributes", "Capabilities", "Null"]
7
7
  }
@@ -1,16 +1,16 @@
1
1
  // packages/plugins/plugin-space/src/capabilities/schema-tools.ts
2
- import { DescriptionAnnotationId, ExamplesAnnotationId, TitleAnnotationId } from "effect/SchemaAST";
2
+ import { Schema, SchemaAST } from "effect";
3
3
  import { Capabilities, contributes } from "@dxos/app-framework";
4
4
  import { defineTool, ToolResult } from "@dxos/artifact";
5
- import { FormatEnum, FormatEnums, S, SelectOptionSchema, GeoPoint, toJsonSchema } from "@dxos/echo-schema";
5
+ import { FormatEnum, FormatEnums, SelectOptionSchema, GeoPoint, toJsonSchema } from "@dxos/echo-schema";
6
6
  import { invariant } from "@dxos/invariant";
7
7
  import { hues } from "@dxos/react-ui-theme";
8
8
  import { getSchemaFromPropertyDefinitions } from "@dxos/schema";
9
9
  var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-space/src/capabilities/schema-tools.ts";
10
- var TypeNameSchema = S.String.pipe(S.pattern(/^\w+\.\w{2,}\/[\w/]+$/i), S.annotations({
11
- [TitleAnnotationId]: "TypeName",
12
- [DescriptionAnnotationId]: "Domain-style type name path. Dashes are not allowed. Use camel case for the final component of the type name.",
13
- [ExamplesAnnotationId]: [
10
+ var TypeNameSchema = Schema.String.pipe(Schema.pattern(/^\w+\.\w{2,}\/[\w/]+$/i), Schema.annotations({
11
+ [SchemaAST.TitleAnnotationId]: "TypeName",
12
+ [SchemaAST.DescriptionAnnotationId]: "Domain-style type name path. Dashes are not allowed. Use camel case for the final component of the type name.",
13
+ [SchemaAST.ExamplesAnnotationId]: [
14
14
  "example.com/type/Document",
15
15
  "example.com/type/FlightList"
16
16
  ]
@@ -18,26 +18,26 @@ var TypeNameSchema = S.String.pipe(S.pattern(/^\w+\.\w{2,}\/[\w/]+$/i), S.annota
18
18
  var formatDescription = `The format of the property. Additional information:
19
19
  ${FormatEnum.GeoPoint}: ${JSON.stringify(toJsonSchema(GeoPoint))}
20
20
  This tuple is GeoJSON. You must specify \`${FormatEnum.GeoPoint}\` as [Longitude, Latitude]`;
21
- var PropertyDefinitionSchema = S.Struct({
22
- name: S.String.annotations({
23
- [DescriptionAnnotationId]: "The name of the property."
21
+ var PropertyDefinitionSchema = Schema.Struct({
22
+ name: Schema.String.annotations({
23
+ [SchemaAST.DescriptionAnnotationId]: "The name of the property."
24
24
  }),
25
- format: S.Union(...FormatEnums.map((format) => S.Literal(format))).annotations({
26
- [DescriptionAnnotationId]: formatDescription
25
+ format: Schema.Union(...FormatEnums.map((format) => Schema.Literal(format))).annotations({
26
+ [SchemaAST.DescriptionAnnotationId]: formatDescription
27
27
  }),
28
- config: S.optional(S.Struct({
29
- options: S.optional(S.Array(SelectOptionSchema).annotations({
28
+ config: Schema.optional(Schema.Struct({
29
+ options: Schema.optional(Schema.Array(SelectOptionSchema).annotations({
30
30
  description: `Options for SingleSelect/MultiSelect formats. Available colors: ${hues.join(", ")}`
31
- }).pipe(S.mutable))
31
+ }).pipe(Schema.mutable))
32
32
  }))
33
- }).pipe(S.mutable);
33
+ }).pipe(Schema.mutable);
34
34
  var SYSTEM_NAMESPACE = "dxos.org/echo/schema";
35
35
  var schema_tools_default = () => contributes(Capabilities.Tools, [
36
36
  defineTool(SYSTEM_NAMESPACE, {
37
37
  name: "list",
38
38
  description: "List registered schemas in the space.",
39
39
  caption: "Listing registered schemas...",
40
- schema: S.Struct({}),
40
+ schema: Schema.Struct({}),
41
41
  execute: async (_input, { extensions }) => {
42
42
  invariant(extensions?.space, "No space.", {
43
43
  F: __dxlog_file,
@@ -60,8 +60,8 @@ var schema_tools_default = () => contributes(Capabilities.Tools, [
60
60
  name: "get",
61
61
  description: "Get a specific schema by its typename.",
62
62
  caption: "Getting schema...",
63
- schema: S.Struct({
64
- typename: S.String.annotations({
63
+ schema: Schema.Struct({
64
+ typename: Schema.String.annotations({
65
65
  description: "The fully qualified typename of the schema."
66
66
  })
67
67
  }),
@@ -89,13 +89,13 @@ var schema_tools_default = () => contributes(Capabilities.Tools, [
89
89
  name: "create",
90
90
  description: "Create a new schema with the provided definition.",
91
91
  caption: "Creating schema...",
92
- schema: S.Struct({
92
+ schema: Schema.Struct({
93
93
  typename: TypeNameSchema.annotations({
94
94
  description: 'The fully qualified schema typename. Must start with a domain, and then one or more path components (e.g., "example.com/type/TypeName").'
95
95
  }),
96
- properties: S.Array(PropertyDefinitionSchema).pipe(S.annotations({
96
+ properties: Schema.Array(PropertyDefinitionSchema).pipe(Schema.annotations({
97
97
  description: "Array of property definitions for the schema."
98
- }), S.mutable)
98
+ }), Schema.mutable)
99
99
  }),
100
100
  execute: async ({ typename, properties }, { extensions }) => {
101
101
  invariant(extensions?.space, "No space.", {
@@ -120,4 +120,4 @@ export {
120
120
  TypeNameSchema,
121
121
  schema_tools_default as default
122
122
  };
123
- //# sourceMappingURL=schema-tools-YAXPRIXP.mjs.map
123
+ //# sourceMappingURL=schema-tools-MYC4LTQD.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/schema-tools.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Schema, SchemaAST } from 'effect';\n\nimport { Capabilities, contributes, type PromiseIntentDispatcher } from '@dxos/app-framework';\nimport { defineTool, ToolResult } from '@dxos/artifact';\nimport { type Space } from '@dxos/client/echo';\nimport { FormatEnum, FormatEnums, SelectOptionSchema, GeoPoint, toJsonSchema } from '@dxos/echo-schema';\nimport { invariant } from '@dxos/invariant';\nimport { hues } from '@dxos/react-ui-theme';\nimport { getSchemaFromPropertyDefinitions } from '@dxos/schema';\n\n// TODO(burdon): Factor out.\ndeclare global {\n interface ToolContextExtensions {\n space?: Space;\n dispatch?: PromiseIntentDispatcher;\n }\n}\n\n// TODO(ZaymonFC): Move this somewhere common.\nexport const TypeNameSchema = Schema.String.pipe(\n Schema.pattern(/^\\w+\\.\\w{2,}\\/[\\w/]+$/i),\n Schema.annotations({\n [SchemaAST.TitleAnnotationId]: 'TypeName',\n [SchemaAST.DescriptionAnnotationId]:\n 'Domain-style type name path. Dashes are not allowed. Use camel case for the final component of the type name.',\n [SchemaAST.ExamplesAnnotationId]: ['example.com/type/Document', 'example.com/type/FlightList'],\n }),\n);\n\nconst formatDescription = `The format of the property. Additional information:\n ${FormatEnum.GeoPoint}: ${JSON.stringify(toJsonSchema(GeoPoint))}\n This tuple is GeoJSON. You must specify \\`${FormatEnum.GeoPoint}\\` as [Longitude, Latitude]`;\n\n// TODO(ZaymonFC): All properties are default optional, but maybe we should allow for required properties.\nconst PropertyDefinitionSchema = Schema.Struct({\n name: Schema.String.annotations({ [SchemaAST.DescriptionAnnotationId]: 'The name of the property.' }),\n format: Schema.Union(...FormatEnums.map((format) => Schema.Literal(format))).annotations({\n [SchemaAST.DescriptionAnnotationId]: formatDescription,\n }),\n config: Schema.optional(\n Schema.Struct({\n options: Schema.optional(\n Schema.Array(SelectOptionSchema)\n .annotations({\n description: `Options for SingleSelect/MultiSelect formats. Available colors: ${hues.join(', ')}`,\n })\n .pipe(Schema.mutable),\n ),\n }),\n ),\n}).pipe(Schema.mutable);\n\nconst SYSTEM_NAMESPACE = 'dxos.org/echo/schema';\n\nexport default () =>\n contributes(Capabilities.Tools, [\n defineTool(SYSTEM_NAMESPACE, {\n name: 'list',\n description: 'List registered schemas in the space.',\n caption: 'Listing registered schemas...',\n schema: Schema.Struct({}),\n execute: async (_input, { extensions }) => {\n invariant(extensions?.space, 'No space.');\n const space = extensions.space;\n\n const schemas = await space.db.schemaRegistry.query({}).run();\n return ToolResult.Success(\n schemas.map((schema) => ({\n typename: schema.typename,\n version: schema.version,\n })),\n );\n },\n }),\n defineTool(SYSTEM_NAMESPACE, {\n name: 'get',\n description: 'Get a specific schema by its typename.',\n caption: 'Getting schema...',\n schema: Schema.Struct({\n typename: Schema.String.annotations({\n description: 'The fully qualified typename of the schema.',\n }),\n }),\n execute: async ({ typename }, { extensions }) => {\n invariant(extensions?.space, 'No space.');\n const space = extensions.space;\n\n const schema = await space.db.schemaRegistry.query({ typename }).firstOrUndefined();\n if (!schema) {\n return ToolResult.Error(`Schema not found: ${typename}`);\n }\n\n return ToolResult.Success(schema);\n },\n }),\n defineTool(SYSTEM_NAMESPACE, {\n name: 'create',\n description: 'Create a new schema with the provided definition.',\n caption: 'Creating schema...',\n schema: Schema.Struct({\n typename: TypeNameSchema.annotations({\n description:\n 'The fully qualified schema typename. Must start with a domain, and then one or more path components (e.g., \"example.com/type/TypeName\").',\n }),\n properties: Schema.Array(PropertyDefinitionSchema).pipe(\n Schema.annotations({ description: 'Array of property definitions for the schema.' }),\n Schema.mutable,\n ),\n }),\n execute: async ({ typename, properties }, { extensions }) => {\n invariant(extensions?.space, 'No space.');\n const space = extensions.space;\n\n const schema = getSchemaFromPropertyDefinitions(typename, properties);\n const [registeredSchema] = await space.db.schemaRegistry.register([schema]);\n\n return ToolResult.Success(registeredSchema);\n },\n }),\n ]);\n"],
5
+ "mappings": "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",
6
+ "names": ["Schema", "SchemaAST", "Capabilities", "contributes", "defineTool", "ToolResult", "FormatEnum", "FormatEnums", "SelectOptionSchema", "GeoPoint", "toJsonSchema", "invariant", "hues", "getSchemaFromPropertyDefinitions", "TypeNameSchema", "String", "pipe", "pattern", "annotations", "TitleAnnotationId", "DescriptionAnnotationId", "ExamplesAnnotationId", "formatDescription", "JSON", "stringify", "PropertyDefinitionSchema", "Struct", "name", "format", "Union", "map", "Literal", "config", "optional", "options", "Array", "description", "join", "mutable", "SYSTEM_NAMESPACE", "Tools", "caption", "schema", "execute", "_input", "extensions", "space", "schemas", "db", "schemaRegistry", "query", "run", "Success", "typename", "version", "firstOrUndefined", "Error", "properties", "registeredSchema", "register"]
7
+ }
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  SpaceSettingsSchema
3
- } from "./chunk-AYW4IDRT.mjs";
3
+ } from "./chunk-YQNBTJI4.mjs";
4
4
  import {
5
5
  SPACE_PLUGIN
6
6
  } from "./chunk-PTKYMZWO.mjs";
7
7
 
8
8
  // packages/plugins/plugin-space/src/capabilities/settings.ts
9
9
  import { Capabilities, contributes } from "@dxos/app-framework";
10
- import { create } from "@dxos/live-object";
10
+ import { live } from "@dxos/live-object";
11
11
  var settings_default = () => {
12
- const settings = create({
12
+ const settings = live({
13
13
  showHidden: false
14
14
  });
15
15
  return contributes(Capabilities.Settings, {
@@ -21,4 +21,4 @@ var settings_default = () => {
21
21
  export {
22
22
  settings_default as default
23
23
  };
24
- //# sourceMappingURL=settings-PJPTJUPE.mjs.map
24
+ //# sourceMappingURL=settings-ILGGNYJ7.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/settings.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes } from '@dxos/app-framework';\nimport { live } from '@dxos/live-object';\n\nimport { SPACE_PLUGIN } from '../meta';\nimport { type SpaceSettingsProps, SpaceSettingsSchema } from '../types';\n\nexport default () => {\n const settings = live<SpaceSettingsProps>({\n showHidden: false,\n });\n\n return contributes(Capabilities.Settings, { schema: SpaceSettingsSchema, prefix: SPACE_PLUGIN, value: settings });\n};\n"],
5
+ "mappings": ";;;;;;;;AAIA,SAASA,cAAcC,mBAAmB;AAC1C,SAASC,YAAY;AAKrB,IAAA,mBAAe,MAAA;AACb,QAAMC,WAAWC,KAAyB;IACxCC,YAAY;EACd,CAAA;AAEA,SAAOC,YAAYC,aAAaC,UAAU;IAAEC,QAAQC;IAAqBC,QAAQC;IAAcC,OAAOV;EAAS,CAAA;AACjH;",
6
+ "names": ["Capabilities", "contributes", "live", "settings", "live", "showHidden", "contributes", "Capabilities", "Settings", "schema", "SpaceSettingsSchema", "prefix", "SPACE_PLUGIN", "value"]
7
+ }
@@ -4,10 +4,10 @@ import {
4
4
  import {
5
5
  COMPOSER_SPACE_LOCK,
6
6
  SHARED
7
- } from "./chunk-LO5UL6RU.mjs";
7
+ } from "./chunk-RERTVPBV.mjs";
8
8
  import {
9
9
  SpaceAction
10
- } from "./chunk-AYW4IDRT.mjs";
10
+ } from "./chunk-YQNBTJI4.mjs";
11
11
  import "./chunk-PTKYMZWO.mjs";
12
12
 
13
13
  // packages/plugins/plugin-space/src/capabilities/spaces-ready.ts
@@ -15,7 +15,7 @@ import { contributes, createIntent, Capabilities, LayoutAction } from "@dxos/app
15
15
  import { SubscriptionList } from "@dxos/async";
16
16
  import { Expando } from "@dxos/echo-schema";
17
17
  import { scheduledEffect } from "@dxos/echo-signals/core";
18
- import { create } from "@dxos/live-object";
18
+ import { live } from "@dxos/live-object";
19
19
  import { log } from "@dxos/log";
20
20
  import { AttentionCapabilities } from "@dxos/plugin-attention";
21
21
  import { ClientCapabilities } from "@dxos/plugin-client";
@@ -52,7 +52,7 @@ var spaces_ready_default = async (context) => {
52
52
  key: SHARED
53
53
  })).run();
54
54
  if (!spacesOrder) {
55
- defaultSpace.db.add(create({
55
+ defaultSpace.db.add(live({
56
56
  key: SHARED,
57
57
  order: []
58
58
  }));
@@ -196,4 +196,4 @@ var spaces_ready_default = async (context) => {
196
196
  export {
197
197
  spaces_ready_default as default
198
198
  };
199
- //# sourceMappingURL=spaces-ready-BSSP7HHG.mjs.map
199
+ //# sourceMappingURL=spaces-ready-IXZF3RWW.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/spaces-ready.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { contributes, createIntent, type PluginsContext, Capabilities, LayoutAction } from '@dxos/app-framework';\nimport { SubscriptionList } from '@dxos/async';\nimport { Expando } from '@dxos/echo-schema';\nimport { scheduledEffect } from '@dxos/echo-signals/core';\nimport { live } from '@dxos/live-object';\nimport { log } from '@dxos/log';\nimport { AttentionCapabilities } from '@dxos/plugin-attention';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { DeckCapabilities } from '@dxos/plugin-deck';\nimport { EdgeReplicationSetting } from '@dxos/protocols/proto/dxos/echo/metadata';\nimport { PublicKey } from '@dxos/react-client';\nimport { Filter, FQ_ID_LENGTH, parseFullyQualifiedId, SpaceState } from '@dxos/react-client/echo';\nimport { ComplexMap, reduceGroupBy } from '@dxos/util';\n\nimport { SpaceCapabilities } from './capabilities';\nimport { SpaceAction } from '../types';\nimport { COMPOSER_SPACE_LOCK, SHARED } from '../util';\n\nconst ACTIVE_NODE_BROADCAST_INTERVAL = 30_000;\nconst WAIT_FOR_OBJECT_TIMEOUT = 1000;\n\nexport default async (context: PluginsContext) => {\n const subscriptions = new SubscriptionList();\n const spaceSubscriptions = new SubscriptionList();\n\n const { dispatchPromise: dispatch } = context.requestCapability(Capabilities.IntentDispatcher);\n const { graph } = context.requestCapability(Capabilities.AppGraph);\n const layout = context.requestCapability(Capabilities.Layout);\n const deck = context.requestCapability(DeckCapabilities.DeckState);\n const attention = context.requestCapability(AttentionCapabilities.Attention);\n const state = context.requestCapability(SpaceCapabilities.MutableState);\n const client = context.requestCapability(ClientCapabilities.Client);\n\n const defaultSpace = client.spaces.default;\n await defaultSpace.waitUntilReady();\n\n if (deck.activeDeck === 'default') {\n await dispatch(createIntent(LayoutAction.SwitchWorkspace, { part: 'workspace', subject: defaultSpace.id }));\n }\n\n // Initialize space sharing lock in default space.\n if (typeof defaultSpace.properties[COMPOSER_SPACE_LOCK] !== 'boolean') {\n defaultSpace.properties[COMPOSER_SPACE_LOCK] = true;\n }\n\n const {\n objects: [spacesOrder],\n } = await defaultSpace.db.query(Filter.schema(Expando, { key: SHARED })).run();\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(live({ key: SHARED, order: [] }));\n }\n\n // Await missing objects.\n subscriptions.add(\n scheduledEffect(\n () => ({ active: layout.active }),\n ({ active }) => {\n if (active.length !== 1) {\n return;\n }\n\n const node = graph.findNode(active[0]);\n if (!node && active[0].length === FQ_ID_LENGTH) {\n const timeout = setTimeout(async () => {\n const node = graph.findNode(active[0]);\n if (!node) {\n await dispatch(createIntent(SpaceAction.WaitForObject, { id: active[0] }));\n }\n }, WAIT_FOR_OBJECT_TIMEOUT);\n\n return () => clearTimeout(timeout);\n }\n },\n ),\n );\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 subscriptions.add(\n scheduledEffect(\n () => ({ name: space.properties.name }),\n ({ name }) => (state.spaceNames[space.id] = name),\n ),\n );\n });\n }).unsubscribe,\n );\n\n // Broadcast active node to other peers in the space.\n subscriptions.add(\n scheduledEffect(\n () => ({ current: attention.current, active: layout.active, inactive: layout.inactive }),\n ({ current, active, inactive }) => {\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) => {\n try {\n const [spaceId] = parseFullyQualifiedId(id);\n return spaceId;\n } catch {\n return null;\n }\n });\n\n const removedBySpace = reduceGroupBy(inactive, (id) => {\n try {\n const [spaceId] = parseFullyQualifiedId(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.', { err: err.message });\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 return () => clearInterval(interval);\n },\n ),\n );\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 added.forEach((id) => {\n if (typeof id === 'string') {\n if (!(id in state.viewersByObject)) {\n state.viewersByObject[id] = new ComplexMap(PublicKey.hash);\n }\n state.viewersByObject[id]!.set(identityKey, {\n lastSeen: Date.now(),\n currentlyAttended: new Set(attended).has(id),\n });\n if (!state.viewersByIdentity.has(identityKey)) {\n state.viewersByIdentity.set(identityKey, new Set());\n }\n state.viewersByIdentity.get(identityKey)!.add(id);\n }\n });\n\n removed.forEach((id) => {\n if (typeof id === 'string') {\n state.viewersByObject[id]?.delete(identityKey);\n state.viewersByIdentity.get(identityKey)?.delete(id);\n // It’s okay for these to be empty sets/maps, reduces churn.\n }\n });\n }\n }),\n );\n });\n }).unsubscribe,\n );\n\n // Enable edge replication for all spaces.\n try {\n await Promise.all(\n client.spaces.get().map((space) => space.internal.setEdgeReplicationPreference(EdgeReplicationSetting.ENABLED)),\n );\n state.enabledEdgeReplication = true;\n } catch (err) {\n log.catch(err);\n }\n\n return contributes(Capabilities.Null, null, () => {\n spaceSubscriptions.clear();\n subscriptions.clear();\n });\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["contributes", "createIntent", "Capabilities", "LayoutAction", "SubscriptionList", "Expando", "scheduledEffect", "live", "log", "AttentionCapabilities", "ClientCapabilities", "DeckCapabilities", "EdgeReplicationSetting", "PublicKey", "Filter", "FQ_ID_LENGTH", "parseFullyQualifiedId", "SpaceState", "ComplexMap", "reduceGroupBy", "ACTIVE_NODE_BROADCAST_INTERVAL", "WAIT_FOR_OBJECT_TIMEOUT", "context", "subscriptions", "SubscriptionList", "spaceSubscriptions", "dispatchPromise", "dispatch", "requestCapability", "Capabilities", "IntentDispatcher", "graph", "AppGraph", "layout", "Layout", "deck", "DeckCapabilities", "DeckState", "attention", "AttentionCapabilities", "Attention", "state", "SpaceCapabilities", "MutableState", "client", "ClientCapabilities", "Client", "defaultSpace", "spaces", "default", "waitUntilReady", "activeDeck", "createIntent", "LayoutAction", "SwitchWorkspace", "part", "subject", "id", "properties", "COMPOSER_SPACE_LOCK", "objects", "spacesOrder", "db", "query", "Filter", "schema", "Expando", "key", "SHARED", "run", "add", "live", "order", "scheduledEffect", "active", "length", "node", "findNode", "FQ_ID_LENGTH", "timeout", "setTimeout", "SpaceAction", "WaitForObject", "clearTimeout", "subscribe", "get", "SpaceState", "SPACE_REQUIRES_MIGRATION", "internal", "migrate", "filter", "space", "SPACE_READY", "forEach", "name", "spaceNames", "unsubscribe", "current", "inactive", "send", "identity", "halo", "idsBySpace", "reduceGroupBy", "spaceId", "parseFullyQualifiedId", "removedBySpace", "has", "set", "added", "removed", "find", "postMessage", "identityKey", "toHex", "attended", "catch", "err", "log", "warn", "message", "interval", "setInterval", "clearInterval", "clear", "listen", "payload", "PublicKey", "safeFrom", "currentIdentity", "equals", "Array", "isArray", "viewersByObject", "ComplexMap", "hash", "lastSeen", "Date", "now", "currentlyAttended", "Set", "viewersByIdentity", "delete", "Promise", "all", "map", "setEdgeReplicationPreference", "EdgeReplicationSetting", "ENABLED", "enabledEdgeReplication", "contributes", "Null"]
7
+ }
@@ -12,11 +12,9 @@ import { PublicKey } from "@dxos/keys";
12
12
  import { LocalStorageStore } from "@dxos/local-storage";
13
13
  import { ComplexMap } from "@dxos/util";
14
14
  var state_default = (context) => {
15
- const sections = context.requestCapabilities(SpaceCapabilities.SettingsSection);
16
15
  const state = new LocalStorageStore(SPACE_PLUGIN, {
17
16
  awaiting: void 0,
18
17
  spaceNames: {},
19
- spaceSettingsOpenSections: sections.map((section) => section.id),
20
18
  viewersByObject: {},
21
19
  // TODO(wittjosiah): Stop using (Complex)Map inside reactive object.
22
20
  viewersByIdentity: new ComplexMap(PublicKey.hash),
@@ -46,4 +44,4 @@ var state_default = (context) => {
46
44
  export {
47
45
  state_default as default
48
46
  };
49
- //# sourceMappingURL=state-X7VLCC6E.mjs.map
47
+ //# sourceMappingURL=state-CYV6QCTN.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/state.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { effect } from '@preact/signals-core';\n\nimport { Capabilities, contributes, type PluginsContext } from '@dxos/app-framework';\nimport { PublicKey } from '@dxos/keys';\nimport { LocalStorageStore } from '@dxos/local-storage';\nimport { ComplexMap } from '@dxos/util';\n\nimport { SpaceCapabilities } from './capabilities';\nimport { SPACE_PLUGIN } from '../meta';\nimport { type PluginState } from '../types';\n\nexport default (context: PluginsContext) => {\n const state = new LocalStorageStore<PluginState>(SPACE_PLUGIN, {\n awaiting: undefined,\n spaceNames: {},\n viewersByObject: {},\n // TODO(wittjosiah): Stop using (Complex)Map inside reactive object.\n viewersByIdentity: new ComplexMap(PublicKey.hash),\n sdkMigrationRunning: {},\n navigableCollections: false,\n enabledEdgeReplication: false,\n });\n\n state\n .prop({ key: 'spaceNames', type: LocalStorageStore.json<Record<string, string>>() })\n .prop({ key: 'enabledEdgeReplication', type: LocalStorageStore.bool() });\n\n const manager = context.requestCapability(Capabilities.PluginManager);\n const unsubscribe = effect(() => {\n // TODO(wittjosiah): Find a way to make this capability-based.\n const enabled = manager.enabled.includes('dxos.org/plugin/stack');\n if (enabled !== state.values.navigableCollections) {\n state.values.navigableCollections = enabled;\n }\n });\n\n return contributes(SpaceCapabilities.State, state.values, () => {\n unsubscribe();\n state.close();\n });\n};\n"],
5
+ "mappings": ";;;;;;;;AAIA,SAASA,cAAc;AAEvB,SAASC,cAAcC,mBAAwC;AAC/D,SAASC,iBAAiB;AAC1B,SAASC,yBAAyB;AAClC,SAASC,kBAAkB;AAM3B,IAAA,gBAAe,CAACC,YAAAA;AACd,QAAMC,QAAQ,IAAIC,kBAA+BC,cAAc;IAC7DC,UAAUC;IACVC,YAAY,CAAC;IACbC,iBAAiB,CAAC;;IAElBC,mBAAmB,IAAIC,WAAWC,UAAUC,IAAI;IAChDC,qBAAqB,CAAC;IACtBC,sBAAsB;IACtBC,wBAAwB;EAC1B,CAAA;AAEAb,QACGc,KAAK;IAAEC,KAAK;IAAcC,MAAMf,kBAAkBgB,KAAI;EAA2B,CAAA,EACjFH,KAAK;IAAEC,KAAK;IAA0BC,MAAMf,kBAAkBiB,KAAI;EAAG,CAAA;AAExE,QAAMC,UAAUpB,QAAQqB,kBAAkBC,aAAaC,aAAa;AACpE,QAAMC,cAAcC,OAAO,MAAA;AAEzB,UAAMC,UAAUN,QAAQM,QAAQC,SAAS,uBAAA;AACzC,QAAID,YAAYzB,MAAM2B,OAAOf,sBAAsB;AACjDZ,YAAM2B,OAAOf,uBAAuBa;IACtC;EACF,CAAA;AAEA,SAAOG,YAAYC,kBAAkBC,OAAO9B,MAAM2B,QAAQ,MAAA;AACxDJ,gBAAAA;AACAvB,UAAM+B,MAAK;EACb,CAAA;AACF;",
6
+ "names": ["effect", "Capabilities", "contributes", "PublicKey", "LocalStorageStore", "ComplexMap", "context", "state", "LocalStorageStore", "SPACE_PLUGIN", "awaiting", "undefined", "spaceNames", "viewersByObject", "viewersByIdentity", "ComplexMap", "PublicKey", "hash", "sdkMigrationRunning", "navigableCollections", "enabledEdgeReplication", "prop", "key", "type", "json", "bool", "manager", "requestCapability", "Capabilities", "PluginManager", "unsubscribe", "effect", "enabled", "includes", "values", "contributes", "SpaceCapabilities", "State", "close"]
7
+ }