@dxos/plugin-space 0.8.4-main.67995b8 → 0.8.4-main.a4bbb77

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 (263) hide show
  1. package/dist/lib/browser/{CollectionMain-D2B75XBS.mjs → CollectionMain-AX7KKXWP.mjs} +4 -4
  2. package/dist/lib/browser/CollectionMain-AX7KKXWP.mjs.map +7 -0
  3. package/dist/lib/browser/{ObjectDetailsPanel-YPTDQKMG.mjs → ObjectDetailsPanel-ETI5YBTH.mjs} +10 -8
  4. package/dist/lib/browser/ObjectDetailsPanel-ETI5YBTH.mjs.map +7 -0
  5. package/dist/lib/browser/RecordMain-TEBGAVSL.mjs +68 -0
  6. package/dist/lib/browser/RecordMain-TEBGAVSL.mjs.map +7 -0
  7. package/dist/lib/browser/{app-graph-builder-V3MP3CDK.mjs → app-graph-builder-W7RVDAUA.mjs} +80 -43
  8. package/dist/lib/browser/app-graph-builder-W7RVDAUA.mjs.map +7 -0
  9. package/dist/lib/browser/{app-graph-serializer-H6AW7KGS.mjs → app-graph-serializer-VLHVTDX4.mjs} +14 -14
  10. package/dist/lib/browser/app-graph-serializer-VLHVTDX4.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-FBJEXW54.mjs → chunk-2BFVC5K6.mjs} +139 -150
  12. package/dist/lib/browser/chunk-2BFVC5K6.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-E2I747A7.mjs +20 -0
  14. package/dist/lib/browser/chunk-E2I747A7.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-EIXZABXD.mjs +19 -0
  16. package/dist/lib/browser/chunk-EIXZABXD.mjs.map +7 -0
  17. package/dist/lib/browser/{chunk-VLBRSGJ2.mjs → chunk-ELJDGQTO.mjs} +3 -3
  18. package/dist/lib/browser/{chunk-VLBRSGJ2.mjs.map → chunk-ELJDGQTO.mjs.map} +3 -3
  19. package/dist/lib/browser/chunk-IRKDREHY.mjs +11 -0
  20. package/dist/lib/browser/chunk-IRKDREHY.mjs.map +7 -0
  21. package/dist/lib/browser/{chunk-SGTQ52SU.mjs → chunk-JCHSUOPF.mjs} +14 -8
  22. package/dist/lib/browser/chunk-JCHSUOPF.mjs.map +7 -0
  23. package/dist/lib/browser/{chunk-XUYKJUU7.mjs → chunk-PN27K4I7.mjs} +93 -41
  24. package/dist/lib/browser/chunk-PN27K4I7.mjs.map +7 -0
  25. package/dist/lib/browser/{chunk-QACNNDOT.mjs → chunk-ZIZ2JLW6.mjs} +10 -9
  26. package/dist/lib/browser/chunk-ZIZ2JLW6.mjs.map +7 -0
  27. package/dist/lib/browser/{identity-created-23XJJV2N.mjs → identity-created-PW2BA46S.mjs} +4 -4
  28. package/dist/lib/browser/{identity-created-23XJJV2N.mjs.map → identity-created-PW2BA46S.mjs.map} +3 -3
  29. package/dist/lib/browser/index.mjs +19 -39
  30. package/dist/lib/browser/index.mjs.map +3 -3
  31. package/dist/lib/browser/{intent-resolver-XHGD73WZ.mjs → intent-resolver-HA7DPAUE.mjs} +46 -41
  32. package/dist/lib/browser/intent-resolver-HA7DPAUE.mjs.map +7 -0
  33. package/dist/lib/browser/meta.json +1 -1
  34. package/dist/lib/browser/{react-root-CMWOGJG5.mjs → react-root-YQUJU64P.mjs} +11 -11
  35. package/dist/lib/browser/react-root-YQUJU64P.mjs.map +7 -0
  36. package/dist/lib/browser/{react-surface-YWZZQF7H.mjs → react-surface-HTXYMRSW.mjs} +50 -40
  37. package/dist/lib/browser/react-surface-HTXYMRSW.mjs.map +7 -0
  38. package/dist/lib/browser/{schema-defs-Z6FC4AHC.mjs → schema-defs-R56ZDBZ7.mjs} +5 -5
  39. package/dist/lib/browser/schema-defs-R56ZDBZ7.mjs.map +7 -0
  40. package/dist/lib/browser/{settings-4IMP5RYT.mjs → settings-5XPQMSPO.mjs} +5 -5
  41. package/dist/lib/browser/{settings-4IMP5RYT.mjs.map → settings-5XPQMSPO.mjs.map} +1 -1
  42. package/dist/lib/browser/{spaces-ready-TOPG6IV4.mjs → spaces-ready-YY77ANIF.mjs} +17 -15
  43. package/dist/lib/browser/spaces-ready-YY77ANIF.mjs.map +7 -0
  44. package/dist/lib/browser/{state-QYZAB45H.mjs → state-Y4RVCG4A.mjs} +7 -7
  45. package/dist/lib/browser/state-Y4RVCG4A.mjs.map +7 -0
  46. package/dist/lib/browser/types/index.mjs +2 -2
  47. package/dist/lib/node-esm/{CollectionMain-ZJIFCWKZ.mjs → CollectionMain-EU57SRYK.mjs} +4 -4
  48. package/dist/lib/node-esm/CollectionMain-EU57SRYK.mjs.map +7 -0
  49. package/dist/lib/node-esm/{ObjectDetailsPanel-QKZEDSZK.mjs → ObjectDetailsPanel-TQ5GN4QJ.mjs} +10 -8
  50. package/dist/lib/node-esm/ObjectDetailsPanel-TQ5GN4QJ.mjs.map +7 -0
  51. package/dist/lib/node-esm/RecordMain-WLYJMYER.mjs +70 -0
  52. package/dist/lib/node-esm/RecordMain-WLYJMYER.mjs.map +7 -0
  53. package/dist/lib/node-esm/{app-graph-builder-SG4VECBB.mjs → app-graph-builder-5ZJJUMQI.mjs} +80 -43
  54. package/dist/lib/node-esm/app-graph-builder-5ZJJUMQI.mjs.map +7 -0
  55. package/dist/lib/node-esm/{app-graph-serializer-2ICUGQQT.mjs → app-graph-serializer-EZJSGJUT.mjs} +14 -14
  56. package/dist/lib/node-esm/app-graph-serializer-EZJSGJUT.mjs.map +7 -0
  57. package/dist/lib/node-esm/{chunk-P442DOQ3.mjs → chunk-5XRYHWL7.mjs} +10 -9
  58. package/dist/lib/node-esm/chunk-5XRYHWL7.mjs.map +7 -0
  59. package/dist/lib/node-esm/{chunk-JH6F4C3I.mjs → chunk-6WNZW6KT.mjs} +14 -8
  60. package/dist/lib/node-esm/chunk-6WNZW6KT.mjs.map +7 -0
  61. package/dist/lib/node-esm/{chunk-2A3VBXBP.mjs → chunk-BLPXWPLB.mjs} +139 -150
  62. package/dist/lib/node-esm/chunk-BLPXWPLB.mjs.map +7 -0
  63. package/dist/lib/node-esm/chunk-IJVBBVCL.mjs +21 -0
  64. package/dist/lib/node-esm/chunk-IJVBBVCL.mjs.map +7 -0
  65. package/dist/lib/node-esm/{chunk-HWNG4MEU.mjs → chunk-MWNATOXL.mjs} +2 -4
  66. package/dist/lib/node-esm/chunk-MWNATOXL.mjs.map +7 -0
  67. package/dist/lib/node-esm/{chunk-SSLBYZEY.mjs → chunk-Q6AAQLQG.mjs} +3 -3
  68. package/dist/lib/node-esm/{chunk-SSLBYZEY.mjs.map → chunk-Q6AAQLQG.mjs.map} +3 -3
  69. package/dist/lib/node-esm/chunk-SVFKU7EW.mjs +20 -0
  70. package/dist/lib/node-esm/chunk-SVFKU7EW.mjs.map +7 -0
  71. package/dist/lib/node-esm/{chunk-4AOMYKDE.mjs → chunk-XDQXUZMK.mjs} +93 -41
  72. package/dist/lib/node-esm/chunk-XDQXUZMK.mjs.map +7 -0
  73. package/dist/lib/node-esm/{identity-created-IJQO6GCR.mjs → identity-created-MWTLGQRU.mjs} +4 -4
  74. package/dist/lib/node-esm/{identity-created-IJQO6GCR.mjs.map → identity-created-MWTLGQRU.mjs.map} +3 -3
  75. package/dist/lib/node-esm/index.mjs +19 -39
  76. package/dist/lib/node-esm/index.mjs.map +3 -3
  77. package/dist/lib/node-esm/{intent-resolver-LEANKSKZ.mjs → intent-resolver-LQNHMPIX.mjs} +46 -41
  78. package/dist/lib/node-esm/intent-resolver-LQNHMPIX.mjs.map +7 -0
  79. package/dist/lib/node-esm/meta.json +1 -1
  80. package/dist/lib/node-esm/{react-root-5Y7LJRX6.mjs → react-root-UTLJEIKE.mjs} +11 -11
  81. package/dist/lib/node-esm/react-root-UTLJEIKE.mjs.map +7 -0
  82. package/dist/lib/node-esm/{react-surface-YQFNIKYT.mjs → react-surface-LYDYON3U.mjs} +50 -40
  83. package/dist/lib/node-esm/react-surface-LYDYON3U.mjs.map +7 -0
  84. package/dist/lib/node-esm/{schema-defs-WHJM7UZE.mjs → schema-defs-7IMJPIWS.mjs} +5 -5
  85. package/dist/lib/node-esm/schema-defs-7IMJPIWS.mjs.map +7 -0
  86. package/dist/lib/node-esm/{settings-SAOBPND3.mjs → settings-XBSK5KHH.mjs} +5 -5
  87. package/dist/lib/node-esm/{settings-SAOBPND3.mjs.map → settings-XBSK5KHH.mjs.map} +1 -1
  88. package/dist/lib/node-esm/{spaces-ready-HIUKNDZK.mjs → spaces-ready-YX4IHT4P.mjs} +17 -15
  89. package/dist/lib/node-esm/spaces-ready-YX4IHT4P.mjs.map +7 -0
  90. package/dist/lib/node-esm/{state-ZVEHQ4BJ.mjs → state-HOHAVPUO.mjs} +7 -7
  91. package/dist/lib/node-esm/state-HOHAVPUO.mjs.map +7 -0
  92. package/dist/lib/node-esm/types/index.mjs +2 -2
  93. package/dist/types/src/SpacePlugin.d.ts +1 -1
  94. package/dist/types/src/SpacePlugin.d.ts.map +1 -1
  95. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
  96. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  97. package/dist/types/src/capabilities/app-graph-serializer.d.ts +1 -1
  98. package/dist/types/src/capabilities/capabilities.d.ts +3 -3
  99. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  100. package/dist/types/src/capabilities/identity-created.d.ts +1 -1
  101. package/dist/types/src/capabilities/identity-created.d.ts.map +1 -1
  102. package/dist/types/src/capabilities/index.d.ts +11 -12
  103. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  104. package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
  105. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  106. package/dist/types/src/capabilities/react-root.d.ts +2 -2
  107. package/dist/types/src/capabilities/react-root.d.ts.map +1 -1
  108. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  109. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  110. package/dist/types/src/capabilities/schema-defs.d.ts +1 -1
  111. package/dist/types/src/capabilities/schema-defs.d.ts.map +1 -1
  112. package/dist/types/src/capabilities/settings.d.ts +1 -1
  113. package/dist/types/src/capabilities/spaces-ready.d.ts +1 -1
  114. package/dist/types/src/capabilities/spaces-ready.d.ts.map +1 -1
  115. package/dist/types/src/capabilities/state.d.ts +1 -1
  116. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  117. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts +3 -3
  118. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
  119. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts +1584 -4
  120. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts.map +1 -1
  121. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +5 -3
  122. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
  123. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts +1 -1
  124. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts.map +1 -1
  125. package/dist/types/src/components/JoinDialog.d.ts +1 -1
  126. package/dist/types/src/components/JoinDialog.d.ts.map +1 -1
  127. package/dist/types/src/components/MembersContainer.d.ts +3 -2
  128. package/dist/types/src/components/MembersContainer.d.ts.map +1 -1
  129. package/dist/types/src/components/MembersContainer.stories.d.ts +1584 -5
  130. package/dist/types/src/components/MembersContainer.stories.d.ts.map +1 -1
  131. package/dist/types/src/components/ObjectDetailsPanel.d.ts.map +1 -1
  132. package/dist/types/src/components/ObjectSettings/AdvancedObjectSettings.d.ts.map +1 -1
  133. package/dist/types/src/components/ObjectSettings/ObjectSettingsContainer.d.ts.map +1 -1
  134. package/dist/types/src/components/PopoverRenameObject.d.ts +2 -2
  135. package/dist/types/src/components/PopoverRenameObject.d.ts.map +1 -1
  136. package/dist/types/src/components/PopoverRenameSpace.d.ts +1 -1
  137. package/dist/types/src/components/PopoverRenameSpace.d.ts.map +1 -1
  138. package/dist/types/src/components/RecordMain.d.ts +7 -0
  139. package/dist/types/src/components/RecordMain.d.ts.map +1 -0
  140. package/dist/types/src/components/SpacePluginSettings.d.ts.map +1 -1
  141. package/dist/types/src/components/SpacePresence.d.ts.map +1 -1
  142. package/dist/types/src/components/SpacePresence.stories.d.ts +1412 -4
  143. package/dist/types/src/components/SpacePresence.stories.d.ts.map +1 -1
  144. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
  145. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts +1417 -4
  146. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts.map +1 -1
  147. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
  148. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts +1418 -5
  149. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
  150. package/dist/types/src/components/ViewEditor.d.ts +1 -1
  151. package/dist/types/src/components/ViewEditor.d.ts.map +1 -1
  152. package/dist/types/src/components/index.d.ts +8 -2
  153. package/dist/types/src/components/index.d.ts.map +1 -1
  154. package/dist/types/src/events.d.ts.map +1 -1
  155. package/dist/types/src/hooks/useActiveSpace.d.ts.map +1 -1
  156. package/dist/types/src/meta.d.ts +0 -1
  157. package/dist/types/src/meta.d.ts.map +1 -1
  158. package/dist/types/src/translations.d.ts +1216 -26
  159. package/dist/types/src/translations.d.ts.map +1 -1
  160. package/dist/types/src/types/types.d.ts +73 -93
  161. package/dist/types/src/types/types.d.ts.map +1 -1
  162. package/dist/types/src/util.d.ts +8 -6
  163. package/dist/types/src/util.d.ts.map +1 -1
  164. package/dist/types/tsconfig.tsbuildinfo +1 -1
  165. package/package.json +63 -62
  166. package/src/SpacePlugin.ts +203 -218
  167. package/src/capabilities/app-graph-builder.ts +100 -53
  168. package/src/capabilities/app-graph-serializer.ts +7 -7
  169. package/src/capabilities/capabilities.ts +11 -10
  170. package/src/capabilities/identity-created.ts +1 -1
  171. package/src/capabilities/index.ts +0 -1
  172. package/src/capabilities/intent-resolver.ts +36 -24
  173. package/src/capabilities/react-root.tsx +4 -3
  174. package/src/capabilities/react-surface.tsx +45 -36
  175. package/src/capabilities/schema-defs.ts +3 -2
  176. package/src/capabilities/spaces-ready.ts +10 -7
  177. package/src/capabilities/state.ts +5 -4
  178. package/src/components/AwaitingObject.tsx +3 -3
  179. package/src/components/CollectionMain.tsx +2 -2
  180. package/src/components/CollectionSection.tsx +2 -2
  181. package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +11 -10
  182. package/src/components/CreateDialog/CreateObjectDialog.tsx +21 -11
  183. package/src/components/CreateDialog/CreateObjectPanel.tsx +22 -11
  184. package/src/components/CreateDialog/CreateSpaceDialog.tsx +4 -4
  185. package/src/components/JoinDialog.tsx +7 -7
  186. package/src/components/MembersContainer.stories.tsx +36 -10
  187. package/src/components/MembersContainer.tsx +12 -13
  188. package/src/components/MenuFooter.tsx +2 -2
  189. package/src/components/ObjectDetailsPanel.tsx +6 -4
  190. package/src/components/ObjectSettings/AdvancedObjectSettings.tsx +3 -2
  191. package/src/components/ObjectSettings/ForeignKeys.tsx +2 -2
  192. package/src/components/ObjectSettings/ObjectSettingsContainer.tsx +3 -2
  193. package/src/components/PersistenceStatus.tsx +2 -2
  194. package/src/components/PopoverRenameObject.tsx +9 -15
  195. package/src/components/PopoverRenameSpace.tsx +4 -4
  196. package/src/components/RecordMain.tsx +43 -0
  197. package/src/components/SchemaContainer.tsx +4 -4
  198. package/src/components/SpacePluginSettings.tsx +8 -9
  199. package/src/components/SpacePresence.stories.tsx +23 -22
  200. package/src/components/SpacePresence.tsx +9 -9
  201. package/src/components/SpaceSettings/SpaceSettingsContainer.stories.tsx +17 -9
  202. package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +17 -17
  203. package/src/components/SyncStatus/InlineSyncStatus.tsx +2 -2
  204. package/src/components/SyncStatus/SyncStatus.stories.tsx +6 -7
  205. package/src/components/SyncStatus/SyncStatus.tsx +4 -3
  206. package/src/components/ViewEditor.tsx +13 -18
  207. package/src/components/index.ts +1 -0
  208. package/src/events.ts +7 -7
  209. package/src/hooks/useActiveSpace.ts +2 -2
  210. package/src/hooks/useInputSurfaceLookup.tsx +1 -1
  211. package/src/meta.ts +1 -3
  212. package/src/translations.ts +8 -7
  213. package/src/types/types.ts +15 -10
  214. package/src/util.tsx +86 -37
  215. package/dist/lib/browser/CollectionMain-D2B75XBS.mjs.map +0 -7
  216. package/dist/lib/browser/ObjectDetailsPanel-YPTDQKMG.mjs.map +0 -7
  217. package/dist/lib/browser/app-graph-builder-V3MP3CDK.mjs.map +0 -7
  218. package/dist/lib/browser/app-graph-serializer-H6AW7KGS.mjs.map +0 -7
  219. package/dist/lib/browser/chunk-CEFHNVU7.mjs +0 -20
  220. package/dist/lib/browser/chunk-CEFHNVU7.mjs.map +0 -7
  221. package/dist/lib/browser/chunk-FBCGT5YY.mjs +0 -13
  222. package/dist/lib/browser/chunk-FBCGT5YY.mjs.map +0 -7
  223. package/dist/lib/browser/chunk-FBJEXW54.mjs.map +0 -7
  224. package/dist/lib/browser/chunk-JS3MMC42.mjs +0 -19
  225. package/dist/lib/browser/chunk-JS3MMC42.mjs.map +0 -7
  226. package/dist/lib/browser/chunk-QACNNDOT.mjs.map +0 -7
  227. package/dist/lib/browser/chunk-SGTQ52SU.mjs.map +0 -7
  228. package/dist/lib/browser/chunk-XUYKJUU7.mjs.map +0 -7
  229. package/dist/lib/browser/intent-resolver-XHGD73WZ.mjs.map +0 -7
  230. package/dist/lib/browser/react-root-CMWOGJG5.mjs.map +0 -7
  231. package/dist/lib/browser/react-surface-YWZZQF7H.mjs.map +0 -7
  232. package/dist/lib/browser/schema-defs-Z6FC4AHC.mjs.map +0 -7
  233. package/dist/lib/browser/schema-tools-BNP4JTD7.mjs +0 -124
  234. package/dist/lib/browser/schema-tools-BNP4JTD7.mjs.map +0 -7
  235. package/dist/lib/browser/spaces-ready-TOPG6IV4.mjs.map +0 -7
  236. package/dist/lib/browser/state-QYZAB45H.mjs.map +0 -7
  237. package/dist/lib/node-esm/CollectionMain-ZJIFCWKZ.mjs.map +0 -7
  238. package/dist/lib/node-esm/ObjectDetailsPanel-QKZEDSZK.mjs.map +0 -7
  239. package/dist/lib/node-esm/app-graph-builder-SG4VECBB.mjs.map +0 -7
  240. package/dist/lib/node-esm/app-graph-serializer-2ICUGQQT.mjs.map +0 -7
  241. package/dist/lib/node-esm/chunk-2A3VBXBP.mjs.map +0 -7
  242. package/dist/lib/node-esm/chunk-4AOMYKDE.mjs.map +0 -7
  243. package/dist/lib/node-esm/chunk-5HHYE264.mjs +0 -20
  244. package/dist/lib/node-esm/chunk-5HHYE264.mjs.map +0 -7
  245. package/dist/lib/node-esm/chunk-5T3ZH23B.mjs +0 -21
  246. package/dist/lib/node-esm/chunk-5T3ZH23B.mjs.map +0 -7
  247. package/dist/lib/node-esm/chunk-HWNG4MEU.mjs.map +0 -7
  248. package/dist/lib/node-esm/chunk-JH6F4C3I.mjs.map +0 -7
  249. package/dist/lib/node-esm/chunk-P442DOQ3.mjs.map +0 -7
  250. package/dist/lib/node-esm/intent-resolver-LEANKSKZ.mjs.map +0 -7
  251. package/dist/lib/node-esm/react-root-5Y7LJRX6.mjs.map +0 -7
  252. package/dist/lib/node-esm/react-surface-YQFNIKYT.mjs.map +0 -7
  253. package/dist/lib/node-esm/schema-defs-WHJM7UZE.mjs.map +0 -7
  254. package/dist/lib/node-esm/schema-tools-KWW5PTML.mjs +0 -126
  255. package/dist/lib/node-esm/schema-tools-KWW5PTML.mjs.map +0 -7
  256. package/dist/lib/node-esm/spaces-ready-HIUKNDZK.mjs.map +0 -7
  257. package/dist/lib/node-esm/state-ZVEHQ4BJ.mjs.map +0 -7
  258. package/dist/types/src/capabilities/schema-tool.test.d.ts +0 -2
  259. package/dist/types/src/capabilities/schema-tool.test.d.ts.map +0 -1
  260. package/dist/types/src/capabilities/schema-tools.d.ts +0 -13
  261. package/dist/types/src/capabilities/schema-tools.d.ts.map +0 -1
  262. package/src/capabilities/schema-tool.test.ts +0 -44
  263. package/src/capabilities/schema-tools.ts +0 -125
@@ -1,30 +1,30 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  AwaitingObject
4
- } from "./chunk-2A3VBXBP.mjs";
5
- import "./chunk-SSLBYZEY.mjs";
4
+ } from "./chunk-BLPXWPLB.mjs";
5
+ import "./chunk-Q6AAQLQG.mjs";
6
6
  import {
7
7
  SpaceCapabilities
8
- } from "./chunk-5T3ZH23B.mjs";
9
- import "./chunk-4AOMYKDE.mjs";
10
- import "./chunk-JH6F4C3I.mjs";
8
+ } from "./chunk-IJVBBVCL.mjs";
9
+ import "./chunk-XDQXUZMK.mjs";
10
+ import "./chunk-6WNZW6KT.mjs";
11
11
  import {
12
- SPACE_PLUGIN
13
- } from "./chunk-HWNG4MEU.mjs";
12
+ meta
13
+ } from "./chunk-MWNATOXL.mjs";
14
14
 
15
15
  // src/capabilities/react-root.tsx
16
16
  import React from "react";
17
17
  import { Capabilities, contributes, useCapability } from "@dxos/app-framework";
18
- var react_root_default = () => contributes(Capabilities.ReactRoot, {
19
- id: SPACE_PLUGIN,
18
+ var react_root_default = (() => contributes(Capabilities.ReactRoot, {
19
+ id: meta.id,
20
20
  root: () => {
21
21
  const state = useCapability(SpaceCapabilities.State);
22
22
  return state.awaiting ? /* @__PURE__ */ React.createElement(AwaitingObject, {
23
23
  id: state.awaiting
24
24
  }) : null;
25
25
  }
26
- });
26
+ }));
27
27
  export {
28
28
  react_root_default as default
29
29
  };
30
- //# sourceMappingURL=react-root-5Y7LJRX6.mjs.map
30
+ //# sourceMappingURL=react-root-UTLJEIKE.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/react-root.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Capabilities, contributes, useCapability } from '@dxos/app-framework';\n\nimport { AwaitingObject } from '../components';\nimport { meta } from '../meta';\n\nimport { SpaceCapabilities } from './capabilities';\n\nexport default () =>\n contributes(Capabilities.ReactRoot, {\n id: meta.id,\n root: () => {\n const state = useCapability(SpaceCapabilities.State);\n return state.awaiting ? <AwaitingObject id={state.awaiting} /> : null;\n },\n });\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;AAIA,OAAOA,WAAW;AAElB,SAASC,cAAcC,aAAaC,qBAAqB;AAOzD,IAAA,sBAAe,MACbC,YAAYC,aAAaC,WAAW;EAClCC,IAAIC,KAAKD;EACTE,MAAM,MAAA;AACJ,UAAMC,QAAQC,cAAcC,kBAAkBC,KAAK;AACnD,WAAOH,MAAMI,WAAW,sBAAA,cAACC,gBAAAA;MAAeR,IAAIG,MAAMI;SAAe;EACnE;AACF,CAAA;",
6
+ "names": ["React", "Capabilities", "contributes", "useCapability", "contributes", "Capabilities", "ReactRoot", "id", "meta", "root", "state", "useCapability", "SpaceCapabilities", "State", "awaiting", "AwaitingObject"]
7
+ }
@@ -17,6 +17,7 @@ import {
17
17
  POPOVER_RENAME_SPACE,
18
18
  PopoverRenameObject,
19
19
  PopoverRenameSpace,
20
+ RecordMain,
20
21
  SchemaContainer,
21
22
  SmallPresenceLive,
22
23
  SpacePluginSettings,
@@ -24,40 +25,40 @@ import {
24
25
  SpaceSettingsContainer,
25
26
  SyncStatus,
26
27
  ViewEditor
27
- } from "./chunk-2A3VBXBP.mjs";
28
- import "./chunk-SSLBYZEY.mjs";
28
+ } from "./chunk-BLPXWPLB.mjs";
29
+ import "./chunk-Q6AAQLQG.mjs";
29
30
  import {
30
31
  SpaceCapabilities
31
- } from "./chunk-5T3ZH23B.mjs";
32
- import "./chunk-4AOMYKDE.mjs";
32
+ } from "./chunk-IJVBBVCL.mjs";
33
+ import "./chunk-XDQXUZMK.mjs";
33
34
  import {
34
35
  HueAnnotationId,
35
36
  IconAnnotationId
36
- } from "./chunk-JH6F4C3I.mjs";
37
+ } from "./chunk-6WNZW6KT.mjs";
37
38
  import {
38
- SPACE_PLUGIN
39
- } from "./chunk-HWNG4MEU.mjs";
39
+ meta
40
+ } from "./chunk-MWNATOXL.mjs";
40
41
 
41
42
  // src/capabilities/react-surface.tsx
42
43
  import React, { useCallback, useMemo } from "react";
43
- import { Capabilities, contributes, createSurface, Surface, useCapabilities, useCapability, useLayout } from "@dxos/app-framework";
44
+ import { Capabilities, Surface, contributes, createSurface, useCapabilities, useCapability, useLayout } from "@dxos/app-framework";
44
45
  import { Obj, Type } from "@dxos/echo";
45
46
  import { findAnnotation } from "@dxos/effect";
46
47
  import { SettingsStore } from "@dxos/local-storage";
47
48
  import { ClientCapabilities } from "@dxos/plugin-client";
48
49
  import { useClient } from "@dxos/react-client";
49
- import { fullyQualifiedId, getSpace, isLiveObject, isSpace, parseId, SpaceState, useSpace } from "@dxos/react-client/echo";
50
+ import { SpaceState, fullyQualifiedId, getSpace, isLiveObject, isSpace, parseId, useSpace } from "@dxos/react-client/echo";
50
51
  import { Input, useTranslation } from "@dxos/react-ui";
51
52
  import { SelectInput } from "@dxos/react-ui-form";
52
53
  import { HuePicker, IconPicker } from "@dxos/react-ui-pickers";
53
54
  import { DataType, TypenameAnnotationId } from "@dxos/schema";
54
55
  var OMIT = [
55
56
  DataType.Collection.typename,
56
- DataType.QueryCollection.typename
57
+ Type.getTypename(DataType.QueryCollection)
57
58
  ];
58
- var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilities.ReactSurface, [
59
+ var react_surface_default = (({ createInvitationUrl }) => contributes(Capabilities.ReactSurface, [
59
60
  createSurface({
60
- id: `${SPACE_PLUGIN}/article`,
61
+ id: `${meta.id}/article`,
61
62
  role: "article",
62
63
  filter: (data) => (
63
64
  // TODO(wittjosiah): Need to avoid shotgun parsing space state everywhere.
@@ -73,7 +74,16 @@ var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilitie
73
74
  })
74
75
  }),
75
76
  createSurface({
76
- id: `${SPACE_PLUGIN}/collection-fallback`,
77
+ id: `${meta.id}/record-article`,
78
+ role: "article",
79
+ position: "fallback",
80
+ filter: (data) => Obj.isObject(data.subject),
81
+ component: ({ data }) => /* @__PURE__ */ React.createElement(RecordMain, {
82
+ record: data.subject
83
+ })
84
+ }),
85
+ createSurface({
86
+ id: `${meta.id}/collection-fallback`,
77
87
  role: "article",
78
88
  position: "fallback",
79
89
  filter: (data) => Obj.instanceOf(DataType.Collection, data.subject),
@@ -82,15 +92,15 @@ var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilitie
82
92
  })
83
93
  }),
84
94
  createSurface({
85
- id: `${SPACE_PLUGIN}/plugin-settings`,
95
+ id: `${meta.id}/plugin-settings`,
86
96
  role: "article",
87
- filter: (data) => data.subject instanceof SettingsStore && data.subject.prefix === SPACE_PLUGIN,
97
+ filter: (data) => data.subject instanceof SettingsStore && data.subject.prefix === meta.id,
88
98
  component: ({ data: { subject } }) => /* @__PURE__ */ React.createElement(SpacePluginSettings, {
89
99
  settings: subject.value
90
100
  })
91
101
  }),
92
102
  createSurface({
93
- id: `${SPACE_PLUGIN}/companion/object-settings`,
103
+ id: `${meta.id}/companion/object-settings`,
94
104
  role: "article",
95
105
  filter: (data) => Obj.isObject(data.companionTo) && data.subject === "settings",
96
106
  component: ({ data, role }) => /* @__PURE__ */ React.createElement(ObjectSettingsContainer, {
@@ -99,9 +109,9 @@ var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilitie
99
109
  })
100
110
  }),
101
111
  createSurface({
102
- id: `${SPACE_PLUGIN}/space-settings-properties`,
112
+ id: `${meta.id}/space-settings-properties`,
103
113
  role: "article",
104
- filter: (data) => data.subject === `${SPACE_PLUGIN}/properties`,
114
+ filter: (data) => data.subject === `${meta.id}/properties`,
105
115
  component: () => {
106
116
  const layout = useLayout();
107
117
  const { spaceId } = parseId(layout.workspace);
@@ -115,10 +125,10 @@ var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilitie
115
125
  }
116
126
  }),
117
127
  createSurface({
118
- id: `${SPACE_PLUGIN}/space-settings-members`,
128
+ id: `${meta.id}/space-settings-members`,
119
129
  role: "article",
120
130
  position: "hoist",
121
- filter: (data) => data.subject === `${SPACE_PLUGIN}/members`,
131
+ filter: (data) => data.subject === `${meta.id}/members`,
122
132
  component: () => {
123
133
  const layout = useLayout();
124
134
  const { spaceId } = parseId(layout.workspace);
@@ -133,9 +143,9 @@ var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilitie
133
143
  }
134
144
  }),
135
145
  createSurface({
136
- id: `${SPACE_PLUGIN}/space-settings-schema`,
146
+ id: `${meta.id}/space-settings-schema`,
137
147
  role: "article",
138
- filter: (data) => data.subject === `${SPACE_PLUGIN}/schema`,
148
+ filter: (data) => data.subject === `${meta.id}/schema`,
139
149
  component: () => {
140
150
  const layout = useLayout();
141
151
  const { spaceId } = parseId(layout.workspace);
@@ -149,7 +159,7 @@ var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilitie
149
159
  }
150
160
  }),
151
161
  createSurface({
152
- id: `${SPACE_PLUGIN}/selected-objects`,
162
+ id: `${meta.id}/selected-objects`,
153
163
  role: "article",
154
164
  filter: (data) => Obj.instanceOf(DataType.View, data.companionTo) && data.subject === "selected-objects",
155
165
  component: ({ data }) => /* @__PURE__ */ React.createElement(ObjectDetailsPanel, {
@@ -177,14 +187,14 @@ var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilitie
177
187
  component: ({ data }) => /* @__PURE__ */ React.createElement(CreateObjectDialog, data.props)
178
188
  }),
179
189
  createSurface({
180
- id: `${SPACE_PLUGIN}/create-initial-space-form-[hue]`,
190
+ id: `${meta.id}/create-initial-space-form-[hue]`,
181
191
  role: "form-input",
182
192
  filter: (data) => {
183
193
  const annotation = findAnnotation(data.schema.ast, HueAnnotationId);
184
194
  return !!annotation;
185
195
  },
186
196
  component: ({ data: _, ...inputProps }) => {
187
- const { label, disabled, type, getValue, onValueChange } = inputProps;
197
+ const { label, readonly, type, getValue, onValueChange } = inputProps;
188
198
  const handleChange = useCallback((nextHue) => onValueChange(type, nextHue), [
189
199
  onValueChange
190
200
  ]);
@@ -192,7 +202,7 @@ var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilitie
192
202
  onValueChange
193
203
  ]);
194
204
  return /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Label, null, label), /* @__PURE__ */ React.createElement(HuePicker, {
195
- disabled,
205
+ disabled: !!readonly,
196
206
  value: getValue() ?? "",
197
207
  onChange: handleChange,
198
208
  onReset: handleReset
@@ -200,14 +210,14 @@ var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilitie
200
210
  }
201
211
  }),
202
212
  createSurface({
203
- id: `${SPACE_PLUGIN}/create-initial-space-form-[icon]`,
213
+ id: `${meta.id}/create-initial-space-form-[icon]`,
204
214
  role: "form-input",
205
215
  filter: (data) => {
206
216
  const annotation = findAnnotation(data.schema.ast, IconAnnotationId);
207
217
  return !!annotation;
208
218
  },
209
219
  component: ({ data: _, ...inputProps }) => {
210
- const { label, disabled, type, getValue, onValueChange } = inputProps;
220
+ const { label, readonly, type, getValue, onValueChange } = inputProps;
211
221
  const handleChange = useCallback((nextIcon) => onValueChange(type, nextIcon), [
212
222
  onValueChange
213
223
  ]);
@@ -215,7 +225,7 @@ var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilitie
215
225
  onValueChange
216
226
  ]);
217
227
  return /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Label, null, label), /* @__PURE__ */ React.createElement(IconPicker, {
218
- disabled,
228
+ disabled: !!readonly,
219
229
  value: getValue() ?? "",
220
230
  onChange: handleChange,
221
231
  onReset: handleReset
@@ -223,7 +233,7 @@ var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilitie
223
233
  }
224
234
  }),
225
235
  createSurface({
226
- id: `${SPACE_PLUGIN}/typename-form-input`,
236
+ id: `${meta.id}/typename-form-input`,
227
237
  role: "form-input",
228
238
  filter: (data) => {
229
239
  if (data.prop !== "typename") {
@@ -278,7 +288,7 @@ var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilitie
278
288
  }
279
289
  }),
280
290
  createSurface({
281
- id: `${SPACE_PLUGIN}/object-settings`,
291
+ id: `${meta.id}/object-settings`,
282
292
  role: "object-settings",
283
293
  filter: (data) => Obj.instanceOf(DataType.View, data.subject),
284
294
  component: ({ data }) => /* @__PURE__ */ React.createElement(ViewEditor, {
@@ -302,7 +312,7 @@ var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilitie
302
312
  })
303
313
  }),
304
314
  createSurface({
305
- id: `${SPACE_PLUGIN}/menu-footer`,
315
+ id: `${meta.id}/menu-footer`,
306
316
  role: "menu-footer",
307
317
  filter: (data) => Obj.isObject(data.subject),
308
318
  component: ({ data }) => /* @__PURE__ */ React.createElement(MenuFooter, {
@@ -310,7 +320,7 @@ var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilitie
310
320
  })
311
321
  }),
312
322
  createSurface({
313
- id: `${SPACE_PLUGIN}/navtree-presence`,
323
+ id: `${meta.id}/navtree-presence`,
314
324
  role: "navtree-item-end",
315
325
  filter: (data) => typeof data.id === "string" && Obj.isObject(data.subject),
316
326
  component: ({ data }) => {
@@ -324,7 +334,7 @@ var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilitie
324
334
  }),
325
335
  // TODO(wittjosiah): Attention glyph for non-echo items should be handled elsewhere.
326
336
  createSurface({
327
- id: `${SPACE_PLUGIN}/navtree-presence-fallback`,
337
+ id: `${meta.id}/navtree-presence-fallback`,
328
338
  role: "navtree-item-end",
329
339
  position: "fallback",
330
340
  filter: (data) => typeof data.id === "string",
@@ -335,7 +345,7 @@ var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilitie
335
345
  }),
336
346
  // TODO(wittjosiah): Broken?
337
347
  createSurface({
338
- id: `${SPACE_PLUGIN}/navtree-sync-status`,
348
+ id: `${meta.id}/navtree-sync-status`,
339
349
  role: "navtree-item-end",
340
350
  filter: (data) => isSpace(data.subject),
341
351
  component: ({ data }) => /* @__PURE__ */ React.createElement(InlineSyncStatus, {
@@ -344,7 +354,7 @@ var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilitie
344
354
  })
345
355
  }),
346
356
  createSurface({
347
- id: `${SPACE_PLUGIN}/navbar-presence`,
357
+ id: `${meta.id}/navbar-presence`,
348
358
  role: "navbar-end",
349
359
  position: "hoist",
350
360
  filter: (data) => isSpace(data.subject) || Obj.isObject(data.subject),
@@ -357,7 +367,7 @@ var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilitie
357
367
  }
358
368
  }),
359
369
  createSurface({
360
- id: `${SPACE_PLUGIN}/collection-section`,
370
+ id: `${meta.id}/collection-section`,
361
371
  role: "section",
362
372
  filter: (data) => Obj.instanceOf(DataType.Collection, data.subject),
363
373
  component: ({ data }) => /* @__PURE__ */ React.createElement(CollectionSection, {
@@ -365,12 +375,12 @@ var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilitie
365
375
  })
366
376
  }),
367
377
  createSurface({
368
- id: `${SPACE_PLUGIN}/status`,
378
+ id: `${meta.id}/status`,
369
379
  role: "status",
370
380
  component: () => /* @__PURE__ */ React.createElement(SyncStatus, null)
371
381
  })
372
- ]);
382
+ ]));
373
383
  export {
374
384
  react_surface_default as default
375
385
  };
376
- //# sourceMappingURL=react-surface-YQFNIKYT.mjs.map
386
+ //# sourceMappingURL=react-surface-LYDYON3U.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, useMemo } from 'react';\n\nimport {\n Capabilities,\n Surface,\n contributes,\n createSurface,\n useCapabilities,\n useCapability,\n useLayout,\n} from '@dxos/app-framework';\nimport { Obj, Type } from '@dxos/echo';\nimport { findAnnotation } from '@dxos/effect';\nimport { SettingsStore } from '@dxos/local-storage';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { useClient } from '@dxos/react-client';\nimport {\n type Space,\n SpaceState,\n fullyQualifiedId,\n getSpace,\n isLiveObject,\n isSpace,\n parseId,\n useSpace,\n} from '@dxos/react-client/echo';\nimport { Input, useTranslation } from '@dxos/react-ui';\nimport { type InputProps, SelectInput } from '@dxos/react-ui-form';\nimport { HuePicker, IconPicker } from '@dxos/react-ui-pickers';\nimport { DataType, type TypenameAnnotation, TypenameAnnotationId } from '@dxos/schema';\nimport { type JoinPanelProps } from '@dxos/shell/react';\n\nimport {\n CREATE_OBJECT_DIALOG,\n CREATE_SPACE_DIALOG,\n CollectionMain,\n CollectionSection,\n CreateObjectDialog,\n type CreateObjectDialogProps,\n CreateSpaceDialog,\n InlineSyncStatus,\n JOIN_DIALOG,\n JoinDialog,\n MembersContainer,\n MenuFooter,\n ObjectDetailsPanel,\n ObjectSettingsContainer,\n POPOVER_RENAME_OBJECT,\n POPOVER_RENAME_SPACE,\n PopoverRenameObject,\n PopoverRenameSpace,\n RecordMain,\n SchemaContainer,\n SmallPresenceLive,\n SpacePluginSettings,\n SpacePresence,\n SpaceSettingsContainer,\n SyncStatus,\n ViewEditor,\n} from '../components';\nimport { meta } from '../meta';\nimport { HueAnnotationId, IconAnnotationId, type SpaceSettingsProps } from '../types';\n\nimport { SpaceCapabilities } from './capabilities';\n\ntype ReactSurfaceOptions = {\n createInvitationUrl: (invitationCode: string) => string;\n};\n\nconst OMIT = [DataType.Collection.typename, Type.getTypename(DataType.QueryCollection)];\n\nexport default ({ createInvitationUrl }: ReactSurfaceOptions) =>\n contributes(Capabilities.ReactSurface, [\n createSurface({\n id: `${meta.id}/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={{\n id: data.subject.id,\n subject: data.subject.properties[DataType.Collection.typename]?.target,\n }}\n role={role}\n {...rest}\n />\n ),\n }),\n createSurface({\n id: `${meta.id}/record-article`,\n role: 'article',\n position: 'fallback',\n filter: (data): data is { subject: Obj.Any } => Obj.isObject(data.subject),\n component: ({ data }) => <RecordMain record={data.subject} />,\n }),\n createSurface({\n id: `${meta.id}/collection-fallback`,\n role: 'article',\n position: 'fallback',\n filter: (data): data is { subject: DataType.Collection } => Obj.instanceOf(DataType.Collection, data.subject),\n component: ({ data }) => <CollectionMain collection={data.subject} />,\n }),\n createSurface({\n id: `${meta.id}/plugin-settings`,\n role: 'article',\n filter: (data): data is { subject: SettingsStore<SpaceSettingsProps> } =>\n data.subject instanceof SettingsStore && data.subject.prefix === meta.id,\n component: ({ data: { subject } }) => <SpacePluginSettings settings={subject.value} />,\n }),\n createSurface({\n id: `${meta.id}/companion/object-settings`,\n role: 'article',\n filter: (data): data is { companionTo: Obj.Any } => Obj.isObject(data.companionTo) && data.subject === 'settings',\n component: ({ data, role }) => <ObjectSettingsContainer object={data.companionTo} role={role} />,\n }),\n createSurface({\n id: `${meta.id}/space-settings-properties`,\n role: 'article',\n filter: (data): data is { subject: string } => data.subject === `${meta.id}/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: `${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 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: `${meta.id}/space-settings-schema`,\n role: 'article',\n filter: (data): data is { subject: string } => data.subject === `${meta.id}/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: `${meta.id}/selected-objects`,\n role: 'article',\n filter: (data): data is { companionTo: DataType.View; subject: 'selected-objects' } =>\n Obj.instanceOf(DataType.View, data.companionTo) && data.subject === 'selected-objects',\n component: ({ data }) => (\n <ObjectDetailsPanel\n key={fullyQualifiedId(data.companionTo)}\n objectId={fullyQualifiedId(data.companionTo)}\n view={data.companionTo}\n />\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: `${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 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={!!readonly} value={getValue() ?? ''} onChange={handleChange} onReset={handleReset} />\n </Input.Root>\n );\n },\n }),\n createSurface({\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 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={!!readonly} value={getValue() ?? ''} onChange={handleChange} onReset={handleReset} />\n </Input.Root>\n );\n },\n }),\n createSurface({\n id: `${meta.id}/typename-form-input`,\n role: 'form-input',\n filter: (\n data,\n ): data is { prop: string; schema: Schema.Schema<any>; target: Space | DataType.Collection | undefined } => {\n if (data.prop !== 'typename') {\n return false;\n }\n\n const annotation = findAnnotation((data.schema as Schema.Schema.All).ast, TypenameAnnotationId);\n return !!annotation;\n },\n component: ({ data: { schema, target }, ...inputProps }) => {\n const { t } = useTranslation();\n const client = useClient();\n const props = inputProps as any as InputProps;\n const space = isSpace(target) ? target : getSpace(target);\n if (!space) {\n return null;\n }\n\n const annotation = findAnnotation<TypenameAnnotation[]>(schema.ast, TypenameAnnotationId)!;\n\n const schemaWhitelists = useCapabilities(ClientCapabilities.SchemaWhiteList);\n const whitelistedTypenames = useMemo(\n () => new Set(schemaWhitelists.flatMap((typeArray) => typeArray.map((type) => Type.getTypename(type)))),\n [schemaWhitelists],\n );\n\n const objectForms = useCapabilities(SpaceCapabilities.ObjectForm);\n const objectFormTypenames = useMemo(\n () =>\n new Set(\n objectForms\n .map((form) => Type.getTypename(form.objectSchema))\n // TODO(wittjosiah): Remove.\n .filter((typename) => !OMIT.includes(typename) && !typename.endsWith('View')),\n ),\n [objectForms],\n );\n\n const fixed = client.graph.schemaRegistry.schemas.filter((schema) => {\n const limitedStatic =\n annotation.includes('limited-static') && whitelistedTypenames.has(Type.getTypename(schema));\n const unusedStatic =\n annotation.includes('unused-static') &&\n whitelistedTypenames.has(Type.getTypename(schema)) &&\n !space.properties.staticRecords?.includes(Type.getTypename(schema));\n const usedStatic =\n annotation.includes('used-static') &&\n whitelistedTypenames.has(Type.getTypename(schema)) &&\n space.properties.staticRecords?.includes(Type.getTypename(schema));\n const objectForm = annotation.includes('object-form') && objectFormTypenames.has(Type.getTypename(schema));\n return annotation.includes('static') || limitedStatic || unusedStatic || usedStatic || objectForm;\n });\n const dynamic = space?.db.schemaRegistry.query().runSync();\n const typenames = Array.from(\n new Set<string>([\n ...(annotation.includes('limited-static') ||\n annotation.includes('unused-static') ||\n annotation.includes('used-static') ||\n annotation.includes('static') ||\n annotation.includes('object-form')\n ? fixed.map((schema) => Type.getTypename(schema))\n : []),\n ...(annotation.includes('dynamic') ? dynamic.map((schema) => schema.typename) : []),\n ]),\n ).sort();\n\n const options = useMemo(\n () =>\n typenames\n .map((typename) => ({\n value: typename,\n label: t('typename label', { ns: typename, defaultValue: typename }),\n }))\n .toSorted((a, b) => a.label.localeCompare(b.label)),\n [t, typenames],\n );\n\n return <SelectInput {...props} options={options} />;\n },\n }),\n createSurface({\n id: `${meta.id}/object-settings`,\n role: 'object-settings',\n filter: (data): data is { subject: DataType.View } => Obj.instanceOf(DataType.View, data.subject),\n component: ({ data }) => <ViewEditor view={data.subject} />,\n }),\n createSurface({\n id: POPOVER_RENAME_SPACE,\n role: 'card--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: 'card--popover',\n filter: (data): data is { props: Obj.Any } =>\n data.component === POPOVER_RENAME_OBJECT && isLiveObject(data.props),\n component: ({ data }) => <PopoverRenameObject object={data.props} />,\n }),\n createSurface({\n id: `${meta.id}/menu-footer`,\n role: 'menu-footer',\n filter: (data): data is { subject: Obj.Any } => Obj.isObject(data.subject),\n component: ({ data }) => <MenuFooter object={data.subject} />,\n }),\n createSurface({\n id: `${meta.id}/navtree-presence`,\n role: 'navtree-item-end',\n filter: (data): data is { id: string; subject: Obj.Any; open?: boolean } =>\n typeof data.id === 'string' && Obj.isObject(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: `${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 createSurface({\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 createSurface({\n id: `${meta.id}/navbar-presence`,\n role: 'navbar-end',\n position: 'hoist',\n filter: (data): data is { subject: Space | Obj.Any } => 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[DataType.Collection.typename]?.target as DataType.Collection)\n : undefined\n : data.subject;\n\n return object ? <SpacePresence object={object} /> : null;\n },\n }),\n createSurface({\n id: `${meta.id}/collection-section`,\n role: 'section',\n filter: (data): data is { subject: DataType.Collection } => Obj.instanceOf(DataType.Collection, data.subject),\n component: ({ data }) => <CollectionSection collection={data.subject} />,\n }),\n createSurface({\n id: `${meta.id}/status`,\n role: 'status',\n component: () => <SyncStatus />,\n }),\n ]);\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "useCallback", "useMemo", "Capabilities", "Surface", "contributes", "createSurface", "useCapabilities", "useCapability", "useLayout", "Obj", "Type", "findAnnotation", "SettingsStore", "ClientCapabilities", "useClient", "SpaceState", "fullyQualifiedId", "getSpace", "isLiveObject", "isSpace", "parseId", "useSpace", "Input", "useTranslation", "SelectInput", "HuePicker", "IconPicker", "DataType", "TypenameAnnotationId", "OMIT", "DataType", "Collection", "typename", "Type", "getTypename", "QueryCollection", "createInvitationUrl", "contributes", "Capabilities", "ReactSurface", "createSurface", "id", "meta", "role", "filter", "data", "isSpace", "subject", "state", "get", "SpaceState", "SPACE_READY", "component", "rest", "Surface", "properties", "target", "position", "Obj", "isObject", "RecordMain", "record", "instanceOf", "CollectionMain", "collection", "SettingsStore", "prefix", "SpacePluginSettings", "settings", "value", "companionTo", "ObjectSettingsContainer", "object", "layout", "useLayout", "spaceId", "parseId", "workspace", "space", "useSpace", "SpaceSettingsContainer", "MembersContainer", "SchemaContainer", "View", "ObjectDetailsPanel", "key", "fullyQualifiedId", "objectId", "view", "JOIN_DIALOG", "JoinDialog", "props", "CREATE_SPACE_DIALOG", "CreateSpaceDialog", "CREATE_OBJECT_DIALOG", "CreateObjectDialog", "annotation", "findAnnotation", "schema", "ast", "HueAnnotationId", "_", "inputProps", "label", "readonly", "type", "getValue", "onValueChange", "handleChange", "useCallback", "nextHue", "handleReset", "undefined", "Input", "Root", "Label", "HuePicker", "disabled", "onChange", "onReset", "IconAnnotationId", "nextIcon", "IconPicker", "prop", "TypenameAnnotationId", "t", "useTranslation", "client", "useClient", "getSpace", "schemaWhitelists", "useCapabilities", "ClientCapabilities", "SchemaWhiteList", "whitelistedTypenames", "useMemo", "Set", "flatMap", "typeArray", "map", "objectForms", "SpaceCapabilities", "ObjectForm", "objectFormTypenames", "form", "objectSchema", "includes", "endsWith", "fixed", "graph", "schemaRegistry", "schemas", "limitedStatic", "has", "unusedStatic", "staticRecords", "usedStatic", "objectForm", "dynamic", "db", "query", "runSync", "typenames", "Array", "from", "sort", "options", "ns", "defaultValue", "toSorted", "a", "b", "localeCompare", "SelectInput", "ViewEditor", "POPOVER_RENAME_SPACE", "PopoverRenameSpace", "POPOVER_RENAME_OBJECT", "isLiveObject", "PopoverRenameObject", "MenuFooter", "useCapability", "MutableState", "SmallPresenceLive", "open", "viewers", "viewersByObject", "InlineSyncStatus", "SpacePresence", "CollectionSection", "SyncStatus"]
7
+ }
@@ -1,13 +1,13 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  SpaceCapabilities
4
- } from "./chunk-5T3ZH23B.mjs";
5
- import "./chunk-HWNG4MEU.mjs";
4
+ } from "./chunk-IJVBBVCL.mjs";
5
+ import "./chunk-MWNATOXL.mjs";
6
6
 
7
7
  // src/capabilities/schema-defs.ts
8
8
  import { Capabilities, contributes } from "@dxos/app-framework";
9
9
  import { ClientCapabilities } from "@dxos/plugin-client";
10
- var schema_defs_default = (context) => {
10
+ var schema_defs_default = ((context) => {
11
11
  const registry = context.getCapability(Capabilities.RxRegistry);
12
12
  const client = context.getCapability(ClientCapabilities.Client);
13
13
  let previous = [];
@@ -20,8 +20,8 @@ var schema_defs_default = (context) => {
20
20
  immediate: true
21
21
  });
22
22
  return contributes(Capabilities.Null, null, () => cancel());
23
- };
23
+ });
24
24
  export {
25
25
  schema_defs_default as default
26
26
  };
27
- //# sourceMappingURL=schema-defs-WHJM7UZE.mjs.map
27
+ //# sourceMappingURL=schema-defs-7IMJPIWS.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/schema-defs.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, type PluginContext, contributes } from '@dxos/app-framework';\nimport { ClientCapabilities } from '@dxos/plugin-client';\n\nimport { type ObjectForm } from '../types';\n\nimport { SpaceCapabilities } from './capabilities';\n\nexport default (context: PluginContext) => {\n const registry = context.getCapability(Capabilities.RxRegistry);\n const client = context.getCapability(ClientCapabilities.Client);\n\n // TODO(wittjosiah): Unregister schemas when they are disabled.\n let previous: ObjectForm[] = [];\n const cancel = registry.subscribe(\n context.capabilities(SpaceCapabilities.ObjectForm),\n (_forms) => {\n const forms = Array.from(new Set(_forms));\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 { immediate: true },\n );\n\n return contributes(Capabilities.Null, null, () => cancel());\n};\n"],
5
+ "mappings": ";;;;;;;AAIA,SAASA,cAAkCC,mBAAmB;AAC9D,SAASC,0BAA0B;AAMnC,IAAA,uBAAe,CAACC,YAAAA;AACd,QAAMC,WAAWD,QAAQE,cAAcC,aAAaC,UAAU;AAC9D,QAAMC,SAASL,QAAQE,cAAcI,mBAAmBC,MAAM;AAG9D,MAAIC,WAAyB,CAAA;AAC7B,QAAMC,SAASR,SAASS,UACtBV,QAAQW,aAAaC,kBAAkBC,UAAU,GACjD,CAACC,WAAAA;AACC,UAAMC,QAAQC,MAAMC,KAAK,IAAIC,IAAIJ,MAAAA,CAAAA;AAEjC,UAAMK,aAAaJ,MAAMK,OAAO,CAACC,SAAS,CAACb,SAASc,SAASD,IAAAA,CAAAA,EAAOE,IAAI,CAACF,SAASA,KAAKG,YAAY;AACnGhB,eAAWO;AACXV,WAAOoB,SAASN,UAAAA;EAClB,GACA;IAAEO,WAAW;EAAK,CAAA;AAGpB,SAAOC,YAAYxB,aAAayB,MAAM,MAAM,MAAMnB,OAAAA,CAAAA;AACpD;",
6
+ "names": ["Capabilities", "contributes", "ClientCapabilities", "context", "registry", "getCapability", "Capabilities", "RxRegistry", "client", "ClientCapabilities", "Client", "previous", "cancel", "subscribe", "capabilities", "SpaceCapabilities", "ObjectForm", "_forms", "forms", "Array", "from", "Set", "newSchemas", "filter", "form", "includes", "map", "objectSchema", "addTypes", "immediate", "contributes", "Null"]
7
+ }
@@ -1,15 +1,15 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  SpaceSettingsSchema
4
- } from "./chunk-JH6F4C3I.mjs";
4
+ } from "./chunk-6WNZW6KT.mjs";
5
5
  import {
6
6
  meta
7
- } from "./chunk-HWNG4MEU.mjs";
7
+ } from "./chunk-MWNATOXL.mjs";
8
8
 
9
9
  // src/capabilities/settings.ts
10
10
  import { Capabilities, contributes } from "@dxos/app-framework";
11
11
  import { live } from "@dxos/live-object";
12
- var settings_default = () => {
12
+ var settings_default = (() => {
13
13
  const settings = live({
14
14
  showHidden: false
15
15
  });
@@ -18,8 +18,8 @@ var settings_default = () => {
18
18
  schema: SpaceSettingsSchema,
19
19
  value: settings
20
20
  });
21
- };
21
+ });
22
22
  export {
23
23
  settings_default as default
24
24
  };
25
- //# sourceMappingURL=settings-SAOBPND3.mjs.map
25
+ //# sourceMappingURL=settings-XBSK5KHH.mjs.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/capabilities/settings.ts"],
4
4
  "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes } from '@dxos/app-framework';\nimport { live } from '@dxos/live-object';\n\nimport { meta } 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, {\n prefix: meta.id,\n schema: SpaceSettingsSchema,\n value: settings,\n });\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;IACxCC,QAAQC,KAAKC;IACbC,QAAQC;IACRC,OAAOX;EACT,CAAA;AACF;",
5
+ "mappings": ";;;;;;;;;AAIA,SAASA,cAAcC,mBAAmB;AAC1C,SAASC,YAAY;AAKrB,IAAA,oBAAe,MAAA;AACb,QAAMC,WAAWC,KAAyB;IACxCC,YAAY;EACd,CAAA;AAEA,SAAOC,YAAYC,aAAaC,UAAU;IACxCC,QAAQC,KAAKC;IACbC,QAAQC;IACRC,OAAOX;EACT,CAAA;AACF;",
6
6
  "names": ["Capabilities", "contributes", "live", "settings", "live", "showHidden", "contributes", "Capabilities", "Settings", "prefix", "meta", "id", "schema", "SpaceSettingsSchema", "value"]
7
7
  }
@@ -1,19 +1,19 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  SpaceCapabilities
4
- } from "./chunk-5T3ZH23B.mjs";
4
+ } from "./chunk-IJVBBVCL.mjs";
5
5
  import {
6
6
  COMPOSER_SPACE_LOCK,
7
7
  SHARED
8
- } from "./chunk-4AOMYKDE.mjs";
8
+ } from "./chunk-XDQXUZMK.mjs";
9
9
  import {
10
10
  SpaceAction
11
- } from "./chunk-JH6F4C3I.mjs";
12
- import "./chunk-HWNG4MEU.mjs";
11
+ } from "./chunk-6WNZW6KT.mjs";
12
+ import "./chunk-MWNATOXL.mjs";
13
13
 
14
14
  // src/capabilities/spaces-ready.ts
15
15
  import { Option } from "effect";
16
- import { contributes, createIntent, Capabilities, LayoutAction } from "@dxos/app-framework";
16
+ import { Capabilities, LayoutAction, contributes, createIntent } from "@dxos/app-framework";
17
17
  import { SubscriptionList } from "@dxos/async";
18
18
  import { Filter, Obj, Type } from "@dxos/echo";
19
19
  import { scheduledEffect } from "@dxos/echo-signals/core";
@@ -23,12 +23,12 @@ import { ClientCapabilities } from "@dxos/plugin-client";
23
23
  import { DeckCapabilities } from "@dxos/plugin-deck";
24
24
  import { EdgeReplicationSetting } from "@dxos/protocols/proto/dxos/echo/metadata";
25
25
  import { PublicKey } from "@dxos/react-client";
26
- import { FQ_ID_LENGTH, parseFullyQualifiedId, SpaceState } from "@dxos/react-client/echo";
26
+ import { FQ_ID_LENGTH, SpaceState, parseFullyQualifiedId } from "@dxos/react-client/echo";
27
27
  import { ComplexMap, reduceGroupBy } from "@dxos/util";
28
28
  var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-space/src/capabilities/spaces-ready.ts";
29
29
  var ACTIVE_NODE_BROADCAST_INTERVAL = 3e4;
30
30
  var WAIT_FOR_OBJECT_TIMEOUT = 5e3;
31
- var spaces_ready_default = async (context) => {
31
+ var spaces_ready_default = (async (context) => {
32
32
  const subscriptions = new SubscriptionList();
33
33
  const spaceSubscriptions = new SubscriptionList();
34
34
  const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);
@@ -64,13 +64,15 @@ var spaces_ready_default = async (context) => {
64
64
  if (active.length !== 1) {
65
65
  return;
66
66
  }
67
- const node = graph.getNode(active[0]).pipe(Option.getOrNull);
68
- if (!node && active[0].length === FQ_ID_LENGTH) {
67
+ const id = active[0];
68
+ const node = graph.getNode(id).pipe(Option.getOrNull);
69
+ if (!node && id.length === FQ_ID_LENGTH) {
70
+ void graph.initialize(id);
69
71
  const timeout = setTimeout(async () => {
70
- const node2 = graph.getNode(active[0]).pipe(Option.getOrNull);
72
+ const node2 = graph.getNode(id).pipe(Option.getOrNull);
71
73
  if (!node2) {
72
74
  await dispatch(createIntent(SpaceAction.WaitForObject, {
73
- id: active[0]
75
+ id
74
76
  }));
75
77
  }
76
78
  }, WAIT_FOR_OBJECT_TIMEOUT);
@@ -133,7 +135,7 @@ var spaces_ready_default = async (context) => {
133
135
  err: err.message
134
136
  }, {
135
137
  F: __dxlog_file,
136
- L: 156,
138
+ L: 159,
137
139
  S: void 0,
138
140
  C: (f, a) => f(...a)
139
141
  });
@@ -184,7 +186,7 @@ var spaces_ready_default = async (context) => {
184
186
  } catch (err) {
185
187
  log.catch(err, void 0, {
186
188
  F: __dxlog_file,
187
- L: 224,
189
+ L: 227,
188
190
  S: void 0,
189
191
  C: (f, a) => f(...a)
190
192
  });
@@ -193,8 +195,8 @@ var spaces_ready_default = async (context) => {
193
195
  spaceSubscriptions.clear();
194
196
  subscriptions.clear();
195
197
  });
196
- };
198
+ });
197
199
  export {
198
200
  spaces_ready_default as default
199
201
  };
200
- //# sourceMappingURL=spaces-ready-HIUKNDZK.mjs.map
202
+ //# sourceMappingURL=spaces-ready-YX4IHT4P.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 { Option } from 'effect';\n\nimport { Capabilities, LayoutAction, type PluginContext, contributes, createIntent } from '@dxos/app-framework';\nimport { SubscriptionList } from '@dxos/async';\nimport { Filter, Obj, Type } from '@dxos/echo';\nimport { scheduledEffect } from '@dxos/echo-signals/core';\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 { FQ_ID_LENGTH, SpaceState, parseFullyQualifiedId } from '@dxos/react-client/echo';\nimport { ComplexMap, reduceGroupBy } from '@dxos/util';\n\nimport { SpaceAction } from '../types';\nimport { COMPOSER_SPACE_LOCK, SHARED } from '../util';\n\nimport { SpaceCapabilities } from './capabilities';\n\nconst ACTIVE_NODE_BROADCAST_INTERVAL = 30_000;\nconst WAIT_FOR_OBJECT_TIMEOUT = 5_000;\n\nexport default async (context: PluginContext) => {\n const subscriptions = new SubscriptionList();\n const spaceSubscriptions = new SubscriptionList();\n\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n const { graph } = context.getCapability(Capabilities.AppGraph);\n const layout = context.getCapability(Capabilities.Layout);\n const deck = context.getCapabilities(DeckCapabilities.DeckState)[0];\n const attention = context.getCapability(AttentionCapabilities.Attention);\n const state = context.getCapability(SpaceCapabilities.MutableState);\n const client = context.getCapability(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.type(Type.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(Obj.make(Type.Expando, { 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 id = active[0];\n const node = graph.getNode(id).pipe(Option.getOrNull);\n if (!node && id.length === FQ_ID_LENGTH) {\n void graph.initialize(id);\n const timeout = setTimeout(async () => {\n const node = graph.getNode(id).pipe(Option.getOrNull);\n if (!node) {\n await dispatch(createIntent(SpaceAction.WaitForObject, { id }));\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": ["Option", "Capabilities", "LayoutAction", "contributes", "createIntent", "SubscriptionList", "Filter", "Obj", "Type", "scheduledEffect", "log", "AttentionCapabilities", "ClientCapabilities", "DeckCapabilities", "EdgeReplicationSetting", "PublicKey", "FQ_ID_LENGTH", "SpaceState", "parseFullyQualifiedId", "ComplexMap", "reduceGroupBy", "ACTIVE_NODE_BROADCAST_INTERVAL", "WAIT_FOR_OBJECT_TIMEOUT", "context", "subscriptions", "SubscriptionList", "spaceSubscriptions", "dispatchPromise", "dispatch", "getCapability", "Capabilities", "IntentDispatcher", "graph", "AppGraph", "layout", "Layout", "deck", "getCapabilities", "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", "type", "Type", "Expando", "key", "SHARED", "run", "add", "Obj", "make", "order", "scheduledEffect", "active", "length", "node", "getNode", "pipe", "Option", "getOrNull", "FQ_ID_LENGTH", "initialize", "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
+ }