@dxos/plugin-space 0.8.4-main.2e9d522 → 0.8.4-main.3c1ae3b

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 (389) hide show
  1. package/dist/lib/browser/{CollectionMain-D2B75XBS.mjs → CollectionArticle-WTHWY4YS.mjs} +10 -10
  2. package/dist/lib/browser/CollectionArticle-WTHWY4YS.mjs.map +7 -0
  3. package/dist/lib/browser/ObjectCardStack-TE7AWPMH.mjs +144 -0
  4. package/dist/lib/browser/ObjectCardStack-TE7AWPMH.mjs.map +7 -0
  5. package/dist/lib/browser/ObjectDetails-666IBRHE.mjs +144 -0
  6. package/dist/lib/browser/ObjectDetails-666IBRHE.mjs.map +7 -0
  7. package/dist/lib/browser/RecordArticle-2PFEBPXY.mjs +116 -0
  8. package/dist/lib/browser/RecordArticle-2PFEBPXY.mjs.map +7 -0
  9. package/dist/lib/browser/app-graph-builder-USKWFIDK.mjs +551 -0
  10. package/dist/lib/browser/app-graph-builder-USKWFIDK.mjs.map +7 -0
  11. package/dist/lib/browser/{app-graph-serializer-H6AW7KGS.mjs → app-graph-serializer-SXIQ425K.mjs} +19 -19
  12. package/dist/lib/browser/app-graph-serializer-SXIQ425K.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-VLBRSGJ2.mjs → chunk-5CSSKOWR.mjs} +42 -16
  14. package/dist/lib/browser/chunk-5CSSKOWR.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-C6DAPIFF.mjs +20 -0
  16. package/dist/lib/browser/chunk-C6DAPIFF.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-E4BEMEZ3.mjs +399 -0
  18. package/dist/lib/browser/chunk-E4BEMEZ3.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-XUYKJUU7.mjs → chunk-IJCMB5B5.mjs} +269 -145
  20. package/dist/lib/browser/chunk-IJCMB5B5.mjs.map +7 -0
  21. package/dist/lib/browser/{chunk-QACNNDOT.mjs → chunk-POFUXISV.mjs} +69 -62
  22. package/dist/lib/browser/chunk-POFUXISV.mjs.map +7 -0
  23. package/dist/lib/browser/chunk-VZBIIYFM.mjs +16 -0
  24. package/dist/lib/browser/chunk-VZBIIYFM.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-WJXU4GKV.mjs +19 -0
  26. package/dist/lib/browser/chunk-WJXU4GKV.mjs.map +7 -0
  27. package/dist/lib/browser/{chunk-V7MJSSBQ.mjs → chunk-XKQCDLXX.mjs} +734 -615
  28. package/dist/lib/browser/chunk-XKQCDLXX.mjs.map +7 -0
  29. package/dist/lib/browser/{identity-created-23XJJV2N.mjs → identity-created-NAXTPQXE.mjs} +6 -6
  30. package/dist/lib/browser/identity-created-NAXTPQXE.mjs.map +7 -0
  31. package/dist/lib/browser/index.mjs +92 -139
  32. package/dist/lib/browser/index.mjs.map +3 -3
  33. package/dist/lib/browser/{intent-resolver-TIXVDYN7.mjs → intent-resolver-QEIM7NQT.mjs} +118 -109
  34. package/dist/lib/browser/intent-resolver-QEIM7NQT.mjs.map +7 -0
  35. package/dist/lib/browser/meta.json +1 -1
  36. package/dist/lib/browser/react-root-T6ZETLD2.mjs +30 -0
  37. package/dist/lib/browser/react-root-T6ZETLD2.mjs.map +7 -0
  38. package/dist/lib/browser/{react-surface-TPNLWJJH.mjs → react-surface-MLN5BZ2G.mjs} +120 -120
  39. package/dist/lib/browser/react-surface-MLN5BZ2G.mjs.map +7 -0
  40. package/dist/lib/browser/repair-CNLE35NF.mjs +44 -0
  41. package/dist/lib/browser/repair-CNLE35NF.mjs.map +7 -0
  42. package/dist/lib/browser/{settings-4IMP5RYT.mjs → settings-EGTCHS7U.mjs} +5 -5
  43. package/dist/lib/browser/{settings-4IMP5RYT.mjs.map → settings-EGTCHS7U.mjs.map} +1 -1
  44. package/dist/lib/browser/{spaces-ready-TOPG6IV4.mjs → spaces-ready-YS4BBZXW.mjs} +29 -20
  45. package/dist/lib/browser/spaces-ready-YS4BBZXW.mjs.map +7 -0
  46. package/dist/lib/browser/{state-QYZAB45H.mjs → state-C7N6EDDZ.mjs} +7 -7
  47. package/dist/lib/browser/state-C7N6EDDZ.mjs.map +7 -0
  48. package/dist/lib/browser/types/index.mjs +10 -4
  49. package/dist/lib/node-esm/{CollectionMain-ZJIFCWKZ.mjs → CollectionArticle-KHXYT3SH.mjs} +10 -10
  50. package/dist/lib/node-esm/CollectionArticle-KHXYT3SH.mjs.map +7 -0
  51. package/dist/lib/node-esm/ObjectCardStack-AAKMAQ6T.mjs +145 -0
  52. package/dist/lib/node-esm/ObjectCardStack-AAKMAQ6T.mjs.map +7 -0
  53. package/dist/lib/node-esm/ObjectDetails-TZ5YKXGN.mjs +145 -0
  54. package/dist/lib/node-esm/ObjectDetails-TZ5YKXGN.mjs.map +7 -0
  55. package/dist/lib/node-esm/RecordArticle-SSJ7PULS.mjs +117 -0
  56. package/dist/lib/node-esm/RecordArticle-SSJ7PULS.mjs.map +7 -0
  57. package/dist/lib/node-esm/app-graph-builder-QRQ5EQLB.mjs +552 -0
  58. package/dist/lib/node-esm/app-graph-builder-QRQ5EQLB.mjs.map +7 -0
  59. package/dist/lib/node-esm/{app-graph-serializer-2ICUGQQT.mjs → app-graph-serializer-P2X4W7LI.mjs} +19 -19
  60. package/dist/lib/node-esm/app-graph-serializer-P2X4W7LI.mjs.map +7 -0
  61. package/dist/lib/node-esm/{chunk-4AOMYKDE.mjs → chunk-3D4NGZPW.mjs} +269 -145
  62. package/dist/lib/node-esm/chunk-3D4NGZPW.mjs.map +7 -0
  63. package/dist/lib/node-esm/{chunk-P442DOQ3.mjs → chunk-AX3UGL5D.mjs} +69 -62
  64. package/dist/lib/node-esm/chunk-AX3UGL5D.mjs.map +7 -0
  65. package/dist/lib/node-esm/chunk-BDEFTL6K.mjs +18 -0
  66. package/dist/lib/node-esm/chunk-BDEFTL6K.mjs.map +7 -0
  67. package/dist/lib/node-esm/chunk-H4JILUJK.mjs +20 -0
  68. package/dist/lib/node-esm/chunk-H4JILUJK.mjs.map +7 -0
  69. package/dist/lib/node-esm/chunk-QQQE2ZCX.mjs +400 -0
  70. package/dist/lib/node-esm/chunk-QQQE2ZCX.mjs.map +7 -0
  71. package/dist/lib/node-esm/{chunk-SSLBYZEY.mjs → chunk-UMZ7G6G4.mjs} +41 -16
  72. package/dist/lib/node-esm/chunk-UMZ7G6G4.mjs.map +7 -0
  73. package/dist/lib/node-esm/chunk-WWGV5FJM.mjs +21 -0
  74. package/dist/lib/node-esm/chunk-WWGV5FJM.mjs.map +7 -0
  75. package/dist/lib/node-esm/{chunk-6X5DLJM5.mjs → chunk-XD532BVR.mjs} +734 -615
  76. package/dist/lib/node-esm/chunk-XD532BVR.mjs.map +7 -0
  77. package/dist/lib/node-esm/{identity-created-IJQO6GCR.mjs → identity-created-OXLKCJE3.mjs} +6 -6
  78. package/dist/lib/node-esm/identity-created-OXLKCJE3.mjs.map +7 -0
  79. package/dist/lib/node-esm/index.mjs +92 -139
  80. package/dist/lib/node-esm/index.mjs.map +3 -3
  81. package/dist/lib/node-esm/{intent-resolver-MHGHRGDT.mjs → intent-resolver-ZWCBVABN.mjs} +118 -109
  82. package/dist/lib/node-esm/intent-resolver-ZWCBVABN.mjs.map +7 -0
  83. package/dist/lib/node-esm/meta.json +1 -1
  84. package/dist/lib/node-esm/{react-root-KW3TGJGY.mjs → react-root-SKB4UJ4K.mjs} +13 -12
  85. package/dist/lib/node-esm/react-root-SKB4UJ4K.mjs.map +7 -0
  86. package/dist/lib/node-esm/{react-surface-UUIUUD6P.mjs → react-surface-BVZGNSBB.mjs} +120 -120
  87. package/dist/lib/node-esm/react-surface-BVZGNSBB.mjs.map +7 -0
  88. package/dist/lib/node-esm/repair-EHZS6MFY.mjs +45 -0
  89. package/dist/lib/node-esm/repair-EHZS6MFY.mjs.map +7 -0
  90. package/dist/lib/node-esm/{settings-SAOBPND3.mjs → settings-N3F6JCIR.mjs} +5 -5
  91. package/dist/lib/node-esm/{settings-SAOBPND3.mjs.map → settings-N3F6JCIR.mjs.map} +1 -1
  92. package/dist/lib/node-esm/{spaces-ready-HIUKNDZK.mjs → spaces-ready-U2K5P4LB.mjs} +29 -20
  93. package/dist/lib/node-esm/spaces-ready-U2K5P4LB.mjs.map +7 -0
  94. package/dist/lib/node-esm/{state-ZVEHQ4BJ.mjs → state-45TXZQJ6.mjs} +7 -7
  95. package/dist/lib/node-esm/state-45TXZQJ6.mjs.map +7 -0
  96. package/dist/lib/node-esm/types/index.mjs +10 -4
  97. package/dist/types/src/SpacePlugin.d.ts +1 -1
  98. package/dist/types/src/SpacePlugin.d.ts.map +1 -1
  99. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
  100. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  101. package/dist/types/src/capabilities/app-graph-serializer.d.ts +1 -1
  102. package/dist/types/src/capabilities/capabilities.d.ts +14 -8
  103. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  104. package/dist/types/src/capabilities/identity-created.d.ts +1 -1
  105. package/dist/types/src/capabilities/identity-created.d.ts.map +1 -1
  106. package/dist/types/src/capabilities/index.d.ts +11 -12
  107. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  108. package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
  109. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  110. package/dist/types/src/capabilities/react-root.d.ts +2 -2
  111. package/dist/types/src/capabilities/react-root.d.ts.map +1 -1
  112. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  113. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  114. package/dist/types/src/capabilities/repair.d.ts +4 -0
  115. package/dist/types/src/capabilities/repair.d.ts.map +1 -0
  116. package/dist/types/src/capabilities/settings.d.ts +1 -1
  117. package/dist/types/src/capabilities/spaces-ready.d.ts +1 -1
  118. package/dist/types/src/capabilities/spaces-ready.d.ts.map +1 -1
  119. package/dist/types/src/capabilities/state.d.ts +1 -1
  120. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  121. package/dist/types/src/components/AwaitingObject.d.ts.map +1 -1
  122. package/dist/types/src/components/CollectionArticle.d.ts +6 -0
  123. package/dist/types/src/components/CollectionArticle.d.ts.map +1 -0
  124. package/dist/types/src/components/CollectionSection.d.ts +3 -4
  125. package/dist/types/src/components/CollectionSection.d.ts.map +1 -1
  126. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts +3 -3
  127. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
  128. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts +1588 -4
  129. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts.map +1 -1
  130. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +18 -9
  131. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
  132. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts +1 -1
  133. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts.map +1 -1
  134. package/dist/types/src/components/{JoinDialog.d.ts → JoinDialog/JoinDialog.d.ts} +1 -1
  135. package/dist/types/src/components/JoinDialog/JoinDialog.d.ts.map +1 -0
  136. package/dist/types/src/components/JoinDialog/index.d.ts +2 -0
  137. package/dist/types/src/components/JoinDialog/index.d.ts.map +1 -0
  138. package/dist/types/src/components/{MembersContainer.d.ts → MembersContainer/MembersContainer.d.ts} +3 -2
  139. package/dist/types/src/components/MembersContainer/MembersContainer.d.ts.map +1 -0
  140. package/dist/types/src/components/MembersContainer/MembersContainer.stories.d.ts +1591 -0
  141. package/dist/types/src/components/MembersContainer/MembersContainer.stories.d.ts.map +1 -0
  142. package/dist/types/src/components/MembersContainer/index.d.ts +2 -0
  143. package/dist/types/src/components/MembersContainer/index.d.ts.map +1 -0
  144. package/dist/types/src/components/ObjectCardStack/ObjectCardStack.d.ts +8 -0
  145. package/dist/types/src/components/ObjectCardStack/ObjectCardStack.d.ts.map +1 -0
  146. package/dist/types/src/components/ObjectCardStack/ObjectForm.d.ts +9 -0
  147. package/dist/types/src/components/ObjectCardStack/ObjectForm.d.ts.map +1 -0
  148. package/dist/types/src/components/ObjectCardStack/index.d.ts +3 -0
  149. package/dist/types/src/components/ObjectCardStack/index.d.ts.map +1 -0
  150. package/dist/types/src/components/{ObjectSettings → ObjectDetails}/BaseObjectSettings.d.ts +2 -2
  151. package/dist/types/src/components/ObjectDetails/BaseObjectSettings.d.ts.map +1 -0
  152. package/dist/types/src/components/ObjectDetails/BaseObjectSettings.stories.d.ts +1424 -0
  153. package/dist/types/src/components/ObjectDetails/BaseObjectSettings.stories.d.ts.map +1 -0
  154. package/dist/types/src/components/ObjectDetails/ForeignKeys.d.ts +8 -0
  155. package/dist/types/src/components/ObjectDetails/ForeignKeys.d.ts.map +1 -0
  156. package/dist/types/src/components/ObjectDetails/ObjectDetails.d.ts +8 -0
  157. package/dist/types/src/components/ObjectDetails/ObjectDetails.d.ts.map +1 -0
  158. package/dist/types/src/components/ObjectDetails/index.d.ts +3 -0
  159. package/dist/types/src/components/ObjectDetails/index.d.ts.map +1 -0
  160. package/dist/types/src/components/ObjectRenamePopover/ObjectRenamePopover.d.ts +7 -0
  161. package/dist/types/src/components/ObjectRenamePopover/ObjectRenamePopover.d.ts.map +1 -0
  162. package/dist/types/src/components/ObjectRenamePopover/index.d.ts +2 -0
  163. package/dist/types/src/components/ObjectRenamePopover/index.d.ts.map +1 -0
  164. package/dist/types/src/components/RecordArticle.d.ts +5 -0
  165. package/dist/types/src/components/RecordArticle.d.ts.map +1 -0
  166. package/dist/types/src/components/RecordArticle.stories.d.ts +1591 -0
  167. package/dist/types/src/components/RecordArticle.stories.d.ts.map +1 -0
  168. package/dist/types/src/components/SchemaContainer.d.ts +2 -2
  169. package/dist/types/src/components/SchemaContainer.d.ts.map +1 -1
  170. package/dist/types/src/components/SpacePluginSettings.d.ts.map +1 -1
  171. package/dist/types/src/components/{SpacePresence.d.ts → SpacePresence/SpacePresence.d.ts} +6 -5
  172. package/dist/types/src/components/SpacePresence/SpacePresence.d.ts.map +1 -0
  173. package/dist/types/src/components/SpacePresence/SpacePresence.stories.d.ts +1421 -0
  174. package/dist/types/src/components/SpacePresence/SpacePresence.stories.d.ts.map +1 -0
  175. package/dist/types/src/components/SpacePresence/index.d.ts +2 -0
  176. package/dist/types/src/components/SpacePresence/index.d.ts.map +1 -0
  177. package/dist/types/src/components/SpaceRenamePopover/SpaceRenamePopover.d.ts +7 -0
  178. package/dist/types/src/components/SpaceRenamePopover/SpaceRenamePopover.d.ts.map +1 -0
  179. package/dist/types/src/components/SpaceRenamePopover/index.d.ts +2 -0
  180. package/dist/types/src/components/SpaceRenamePopover/index.d.ts.map +1 -0
  181. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts +1 -1
  182. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
  183. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts +1421 -4
  184. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts.map +1 -1
  185. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
  186. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts +1422 -5
  187. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
  188. package/dist/types/src/components/ViewEditor.d.ts +3 -4
  189. package/dist/types/src/components/ViewEditor.d.ts.map +1 -1
  190. package/dist/types/src/components/index.d.ts +10 -12
  191. package/dist/types/src/components/index.d.ts.map +1 -1
  192. package/dist/types/src/events.d.ts.map +1 -1
  193. package/dist/types/src/helpers/index.d.ts +2 -0
  194. package/dist/types/src/helpers/index.d.ts.map +1 -0
  195. package/dist/types/src/helpers/query.d.ts +7 -0
  196. package/dist/types/src/helpers/query.d.ts.map +1 -0
  197. package/dist/types/src/helpers/query.test.d.ts +2 -0
  198. package/dist/types/src/helpers/query.test.d.ts.map +1 -0
  199. package/dist/types/src/hooks/index.d.ts +1 -0
  200. package/dist/types/src/hooks/index.d.ts.map +1 -1
  201. package/dist/types/src/hooks/useActiveSpace.d.ts.map +1 -1
  202. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts +2 -8
  203. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts.map +1 -1
  204. package/dist/types/src/hooks/usePath.d.ts +1 -1
  205. package/dist/types/src/hooks/usePath.d.ts.map +1 -1
  206. package/dist/types/src/hooks/useTypeOptions.d.ts +10 -0
  207. package/dist/types/src/hooks/useTypeOptions.d.ts.map +1 -0
  208. package/dist/types/src/index.d.ts +1 -0
  209. package/dist/types/src/index.d.ts.map +1 -1
  210. package/dist/types/src/meta.d.ts +0 -1
  211. package/dist/types/src/meta.d.ts.map +1 -1
  212. package/dist/types/src/translations.d.ts +1261 -67
  213. package/dist/types/src/translations.d.ts.map +1 -1
  214. package/dist/types/src/types/form.d.ts +22 -0
  215. package/dist/types/src/types/form.d.ts.map +1 -0
  216. package/dist/types/src/types/index.d.ts +1 -0
  217. package/dist/types/src/types/index.d.ts.map +1 -1
  218. package/dist/types/src/types/types.d.ts +96 -157
  219. package/dist/types/src/types/types.d.ts.map +1 -1
  220. package/dist/types/src/util.d.ts +25 -36
  221. package/dist/types/src/util.d.ts.map +1 -1
  222. package/dist/types/tsconfig.tsbuildinfo +1 -1
  223. package/package.json +70 -59
  224. package/src/SpacePlugin.ts +182 -222
  225. package/src/capabilities/app-graph-builder.ts +271 -246
  226. package/src/capabilities/app-graph-serializer.ts +12 -12
  227. package/src/capabilities/capabilities.ts +28 -17
  228. package/src/capabilities/identity-created.ts +3 -3
  229. package/src/capabilities/index.ts +1 -2
  230. package/src/capabilities/intent-resolver.ts +92 -81
  231. package/src/capabilities/react-root.tsx +6 -4
  232. package/src/capabilities/react-surface.tsx +127 -155
  233. package/src/capabilities/repair.ts +57 -0
  234. package/src/capabilities/spaces-ready.ts +38 -17
  235. package/src/capabilities/state.ts +5 -4
  236. package/src/components/AwaitingObject.tsx +12 -14
  237. package/src/components/{CollectionMain.tsx → CollectionArticle.tsx} +7 -6
  238. package/src/components/CollectionSection.tsx +8 -6
  239. package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +17 -16
  240. package/src/components/CreateDialog/CreateObjectDialog.tsx +74 -46
  241. package/src/components/CreateDialog/CreateObjectPanel.tsx +65 -43
  242. package/src/components/CreateDialog/CreateSpaceDialog.tsx +45 -22
  243. package/src/components/{JoinDialog.tsx → JoinDialog/JoinDialog.tsx} +26 -10
  244. package/src/components/JoinDialog/index.ts +5 -0
  245. package/src/components/MembersContainer/MembersContainer.stories.tsx +56 -0
  246. package/src/components/{MembersContainer.tsx → MembersContainer/MembersContainer.tsx} +22 -21
  247. package/src/components/MembersContainer/index.ts +5 -0
  248. package/src/components/MenuFooter.tsx +2 -2
  249. package/src/components/ObjectCardStack/ObjectCardStack.tsx +64 -0
  250. package/src/components/ObjectCardStack/ObjectForm.tsx +90 -0
  251. package/src/components/ObjectCardStack/index.ts +7 -0
  252. package/src/components/ObjectDetails/BaseObjectSettings.stories.tsx +63 -0
  253. package/src/components/ObjectDetails/BaseObjectSettings.tsx +118 -0
  254. package/src/components/{ObjectSettings → ObjectDetails}/ForeignKeys.tsx +8 -8
  255. package/src/components/ObjectDetails/ObjectDetails.tsx +35 -0
  256. package/src/components/ObjectDetails/index.ts +7 -0
  257. package/src/components/{PopoverRenameObject.tsx → ObjectRenamePopover/ObjectRenamePopover.tsx} +10 -16
  258. package/src/components/ObjectRenamePopover/index.ts +5 -0
  259. package/src/components/RecordArticle.stories.tsx +115 -0
  260. package/src/components/RecordArticle.tsx +114 -0
  261. package/src/components/SchemaContainer.tsx +26 -29
  262. package/src/components/SpacePluginSettings.tsx +16 -11
  263. package/src/components/{SpacePresence.stories.tsx → SpacePresence/SpacePresence.stories.tsx} +24 -23
  264. package/src/components/{SpacePresence.tsx → SpacePresence/SpacePresence.tsx} +22 -17
  265. package/src/components/SpacePresence/index.ts +5 -0
  266. package/src/components/{PopoverRenameSpace.tsx → SpaceRenamePopover/SpaceRenamePopover.tsx} +7 -6
  267. package/src/components/SpaceRenamePopover/index.ts +5 -0
  268. package/src/components/SpaceSettings/SpaceSettingsContainer.stories.tsx +17 -9
  269. package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +190 -155
  270. package/src/components/SyncStatus/InlineSyncStatus.tsx +8 -8
  271. package/src/components/SyncStatus/SyncStatus.stories.tsx +9 -9
  272. package/src/components/SyncStatus/SyncStatus.tsx +109 -12
  273. package/src/components/ViewEditor.tsx +56 -23
  274. package/src/components/index.ts +7 -7
  275. package/src/events.ts +7 -7
  276. package/src/helpers/index.ts +5 -0
  277. package/src/helpers/query.test.ts +24 -0
  278. package/src/helpers/query.ts +152 -0
  279. package/src/hooks/index.ts +1 -0
  280. package/src/hooks/useActiveSpace.ts +3 -2
  281. package/src/hooks/useInputSurfaceLookup.tsx +9 -13
  282. package/src/hooks/usePath.ts +1 -1
  283. package/src/hooks/useTypeOptions.ts +25 -0
  284. package/src/index.ts +1 -0
  285. package/src/meta.ts +6 -3
  286. package/src/translations.ts +68 -58
  287. package/src/types/form.ts +69 -0
  288. package/src/types/index.ts +1 -0
  289. package/src/types/types.ts +51 -52
  290. package/src/util.tsx +269 -147
  291. package/dist/lib/browser/CollectionMain-D2B75XBS.mjs.map +0 -7
  292. package/dist/lib/browser/ObjectDetailsPanel-YPTDQKMG.mjs +0 -88
  293. package/dist/lib/browser/ObjectDetailsPanel-YPTDQKMG.mjs.map +0 -7
  294. package/dist/lib/browser/app-graph-builder-7CZZJS3S.mjs +0 -479
  295. package/dist/lib/browser/app-graph-builder-7CZZJS3S.mjs.map +0 -7
  296. package/dist/lib/browser/app-graph-serializer-H6AW7KGS.mjs.map +0 -7
  297. package/dist/lib/browser/chunk-CEFHNVU7.mjs +0 -20
  298. package/dist/lib/browser/chunk-CEFHNVU7.mjs.map +0 -7
  299. package/dist/lib/browser/chunk-FBCGT5YY.mjs +0 -13
  300. package/dist/lib/browser/chunk-FBCGT5YY.mjs.map +0 -7
  301. package/dist/lib/browser/chunk-JS3MMC42.mjs +0 -19
  302. package/dist/lib/browser/chunk-JS3MMC42.mjs.map +0 -7
  303. package/dist/lib/browser/chunk-QACNNDOT.mjs.map +0 -7
  304. package/dist/lib/browser/chunk-SGTQ52SU.mjs +0 -338
  305. package/dist/lib/browser/chunk-SGTQ52SU.mjs.map +0 -7
  306. package/dist/lib/browser/chunk-V7MJSSBQ.mjs.map +0 -7
  307. package/dist/lib/browser/chunk-VLBRSGJ2.mjs.map +0 -7
  308. package/dist/lib/browser/chunk-XUYKJUU7.mjs.map +0 -7
  309. package/dist/lib/browser/identity-created-23XJJV2N.mjs.map +0 -7
  310. package/dist/lib/browser/intent-resolver-TIXVDYN7.mjs.map +0 -7
  311. package/dist/lib/browser/react-root-N2J7TDRX.mjs +0 -29
  312. package/dist/lib/browser/react-root-N2J7TDRX.mjs.map +0 -7
  313. package/dist/lib/browser/react-surface-TPNLWJJH.mjs.map +0 -7
  314. package/dist/lib/browser/schema-defs-Z6FC4AHC.mjs +0 -26
  315. package/dist/lib/browser/schema-defs-Z6FC4AHC.mjs.map +0 -7
  316. package/dist/lib/browser/schema-tools-BNP4JTD7.mjs +0 -124
  317. package/dist/lib/browser/schema-tools-BNP4JTD7.mjs.map +0 -7
  318. package/dist/lib/browser/spaces-ready-TOPG6IV4.mjs.map +0 -7
  319. package/dist/lib/browser/state-QYZAB45H.mjs.map +0 -7
  320. package/dist/lib/node-esm/CollectionMain-ZJIFCWKZ.mjs.map +0 -7
  321. package/dist/lib/node-esm/ObjectDetailsPanel-QKZEDSZK.mjs +0 -89
  322. package/dist/lib/node-esm/ObjectDetailsPanel-QKZEDSZK.mjs.map +0 -7
  323. package/dist/lib/node-esm/app-graph-builder-KGIGWC72.mjs +0 -480
  324. package/dist/lib/node-esm/app-graph-builder-KGIGWC72.mjs.map +0 -7
  325. package/dist/lib/node-esm/app-graph-serializer-2ICUGQQT.mjs.map +0 -7
  326. package/dist/lib/node-esm/chunk-4AOMYKDE.mjs.map +0 -7
  327. package/dist/lib/node-esm/chunk-5HHYE264.mjs +0 -20
  328. package/dist/lib/node-esm/chunk-5HHYE264.mjs.map +0 -7
  329. package/dist/lib/node-esm/chunk-5T3ZH23B.mjs +0 -21
  330. package/dist/lib/node-esm/chunk-5T3ZH23B.mjs.map +0 -7
  331. package/dist/lib/node-esm/chunk-6X5DLJM5.mjs.map +0 -7
  332. package/dist/lib/node-esm/chunk-HWNG4MEU.mjs +0 -15
  333. package/dist/lib/node-esm/chunk-HWNG4MEU.mjs.map +0 -7
  334. package/dist/lib/node-esm/chunk-JH6F4C3I.mjs +0 -339
  335. package/dist/lib/node-esm/chunk-JH6F4C3I.mjs.map +0 -7
  336. package/dist/lib/node-esm/chunk-P442DOQ3.mjs.map +0 -7
  337. package/dist/lib/node-esm/chunk-SSLBYZEY.mjs.map +0 -7
  338. package/dist/lib/node-esm/identity-created-IJQO6GCR.mjs.map +0 -7
  339. package/dist/lib/node-esm/intent-resolver-MHGHRGDT.mjs.map +0 -7
  340. package/dist/lib/node-esm/react-root-KW3TGJGY.mjs.map +0 -7
  341. package/dist/lib/node-esm/react-surface-UUIUUD6P.mjs.map +0 -7
  342. package/dist/lib/node-esm/schema-defs-WHJM7UZE.mjs +0 -27
  343. package/dist/lib/node-esm/schema-defs-WHJM7UZE.mjs.map +0 -7
  344. package/dist/lib/node-esm/schema-tools-KWW5PTML.mjs +0 -126
  345. package/dist/lib/node-esm/schema-tools-KWW5PTML.mjs.map +0 -7
  346. package/dist/lib/node-esm/spaces-ready-HIUKNDZK.mjs.map +0 -7
  347. package/dist/lib/node-esm/state-ZVEHQ4BJ.mjs.map +0 -7
  348. package/dist/types/src/capabilities/schema-defs.d.ts +0 -4
  349. package/dist/types/src/capabilities/schema-defs.d.ts.map +0 -1
  350. package/dist/types/src/capabilities/schema-tool.test.d.ts +0 -2
  351. package/dist/types/src/capabilities/schema-tool.test.d.ts.map +0 -1
  352. package/dist/types/src/capabilities/schema-tools.d.ts +0 -13
  353. package/dist/types/src/capabilities/schema-tools.d.ts.map +0 -1
  354. package/dist/types/src/components/CollectionMain.d.ts +0 -7
  355. package/dist/types/src/components/CollectionMain.d.ts.map +0 -1
  356. package/dist/types/src/components/JoinDialog.d.ts.map +0 -1
  357. package/dist/types/src/components/MembersContainer.d.ts.map +0 -1
  358. package/dist/types/src/components/MembersContainer.stories.d.ts +0 -8
  359. package/dist/types/src/components/MembersContainer.stories.d.ts.map +0 -1
  360. package/dist/types/src/components/ObjectDetailsPanel.d.ts +0 -9
  361. package/dist/types/src/components/ObjectDetailsPanel.d.ts.map +0 -1
  362. package/dist/types/src/components/ObjectSettings/AdvancedObjectSettings.d.ts +0 -7
  363. package/dist/types/src/components/ObjectSettings/AdvancedObjectSettings.d.ts.map +0 -1
  364. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts.map +0 -1
  365. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts +0 -8
  366. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts.map +0 -1
  367. package/dist/types/src/components/ObjectSettings/ObjectSettingsContainer.d.ts +0 -8
  368. package/dist/types/src/components/ObjectSettings/ObjectSettingsContainer.d.ts.map +0 -1
  369. package/dist/types/src/components/ObjectSettings/index.d.ts +0 -2
  370. package/dist/types/src/components/ObjectSettings/index.d.ts.map +0 -1
  371. package/dist/types/src/components/PersistenceStatus.d.ts +0 -6
  372. package/dist/types/src/components/PersistenceStatus.d.ts.map +0 -1
  373. package/dist/types/src/components/PopoverRenameObject.d.ts +0 -7
  374. package/dist/types/src/components/PopoverRenameObject.d.ts.map +0 -1
  375. package/dist/types/src/components/PopoverRenameSpace.d.ts +0 -7
  376. package/dist/types/src/components/PopoverRenameSpace.d.ts.map +0 -1
  377. package/dist/types/src/components/SpacePresence.d.ts.map +0 -1
  378. package/dist/types/src/components/SpacePresence.stories.d.ts +0 -9
  379. package/dist/types/src/components/SpacePresence.stories.d.ts.map +0 -1
  380. package/src/capabilities/schema-defs.ts +0 -30
  381. package/src/capabilities/schema-tool.test.ts +0 -44
  382. package/src/capabilities/schema-tools.ts +0 -125
  383. package/src/components/MembersContainer.stories.tsx +0 -30
  384. package/src/components/ObjectDetailsPanel.tsx +0 -77
  385. package/src/components/ObjectSettings/AdvancedObjectSettings.tsx +0 -80
  386. package/src/components/ObjectSettings/BaseObjectSettings.tsx +0 -47
  387. package/src/components/ObjectSettings/ObjectSettingsContainer.tsx +0 -36
  388. package/src/components/ObjectSettings/index.ts +0 -5
  389. package/src/components/PersistenceStatus.tsx +0 -83
@@ -1,30 +1,31 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  AwaitingObject
4
- } from "./chunk-6X5DLJM5.mjs";
5
- import "./chunk-SSLBYZEY.mjs";
4
+ } from "./chunk-XD532BVR.mjs";
5
+ import "./chunk-UMZ7G6G4.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-WWGV5FJM.mjs";
9
+ import "./chunk-3D4NGZPW.mjs";
10
+ import "./chunk-QQQE2ZCX.mjs";
11
11
  import {
12
- SPACE_PLUGIN
13
- } from "./chunk-HWNG4MEU.mjs";
12
+ meta
13
+ } from "./chunk-BDEFTL6K.mjs";
14
14
 
15
15
  // src/capabilities/react-root.tsx
16
16
  import React from "react";
17
- import { Capabilities, contributes, useCapability } from "@dxos/app-framework";
18
- var react_root_default = () => contributes(Capabilities.ReactRoot, {
19
- id: SPACE_PLUGIN,
17
+ import { Capabilities, contributes } from "@dxos/app-framework";
18
+ import { useCapability } from "@dxos/app-framework/react";
19
+ var react_root_default = (() => contributes(Capabilities.ReactRoot, {
20
+ id: meta.id,
20
21
  root: () => {
21
22
  const state = useCapability(SpaceCapabilities.State);
22
23
  return state.awaiting ? /* @__PURE__ */ React.createElement(AwaitingObject, {
23
24
  id: state.awaiting
24
25
  }) : null;
25
26
  }
26
- });
27
+ }));
27
28
  export {
28
29
  react_root_default as default
29
30
  };
30
- //# sourceMappingURL=react-root-KW3TGJGY.mjs.map
31
+ //# sourceMappingURL=react-root-SKB4UJ4K.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 } from '@dxos/app-framework';\nimport { useCapability } from '@dxos/app-framework/react';\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,mBAAmB;AAC1C,SAASC,qBAAqB;AAO9B,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
+ }
@@ -2,7 +2,7 @@ import { createRequire } from 'node:module';const require = createRequire(import
2
2
  import {
3
3
  CREATE_OBJECT_DIALOG,
4
4
  CREATE_SPACE_DIALOG,
5
- CollectionMain,
5
+ CollectionArticle,
6
6
  CollectionSection,
7
7
  CreateObjectDialog,
8
8
  CreateSpaceDialog,
@@ -11,53 +11,53 @@ import {
11
11
  JoinDialog,
12
12
  MembersContainer,
13
13
  MenuFooter,
14
- ObjectDetailsPanel,
15
- ObjectSettingsContainer,
16
- POPOVER_RENAME_OBJECT,
17
- POPOVER_RENAME_SPACE,
18
- PopoverRenameObject,
19
- PopoverRenameSpace,
14
+ OBJECT_RENAME_POPOVER,
15
+ ObjectCardStack,
16
+ ObjectDetails,
17
+ ObjectRenamePopover,
18
+ RecordArticle,
19
+ SPACE_RENAME_POPOVER,
20
20
  SchemaContainer,
21
21
  SmallPresenceLive,
22
22
  SpacePluginSettings,
23
23
  SpacePresence,
24
+ SpaceRenamePopover,
24
25
  SpaceSettingsContainer,
25
26
  SyncStatus,
26
27
  ViewEditor
27
- } from "./chunk-6X5DLJM5.mjs";
28
- import "./chunk-SSLBYZEY.mjs";
28
+ } from "./chunk-XD532BVR.mjs";
29
+ import {
30
+ useTypeOptions
31
+ } from "./chunk-UMZ7G6G4.mjs";
29
32
  import {
30
33
  SpaceCapabilities
31
- } from "./chunk-5T3ZH23B.mjs";
32
- import "./chunk-4AOMYKDE.mjs";
34
+ } from "./chunk-WWGV5FJM.mjs";
35
+ import "./chunk-3D4NGZPW.mjs";
33
36
  import {
34
37
  HueAnnotationId,
35
- IconAnnotationId
36
- } from "./chunk-JH6F4C3I.mjs";
38
+ IconAnnotationId,
39
+ TypeInputOptionsAnnotationId
40
+ } from "./chunk-QQQE2ZCX.mjs";
37
41
  import {
38
- SPACE_PLUGIN
39
- } from "./chunk-HWNG4MEU.mjs";
42
+ meta
43
+ } from "./chunk-BDEFTL6K.mjs";
40
44
 
41
45
  // src/capabilities/react-surface.tsx
42
- import React, { useCallback, useMemo } from "react";
43
- import { Capabilities, contributes, createSurface, Surface, useCapabilities, useCapability, useLayout } from "@dxos/app-framework";
44
- import { Obj, Type } from "@dxos/echo";
46
+ import * as Option from "effect/Option";
47
+ import React, { useCallback } from "react";
48
+ import { Capabilities, contributes, createSurface } from "@dxos/app-framework";
49
+ import { Surface, useCapability, useLayout } from "@dxos/app-framework/react";
50
+ import { Obj } from "@dxos/echo";
45
51
  import { findAnnotation } from "@dxos/effect";
46
52
  import { SettingsStore } from "@dxos/local-storage";
47
- import { ClientCapabilities } from "@dxos/plugin-client";
48
- import { useClient } from "@dxos/react-client";
49
- import { fullyQualifiedId, getSpace, isLiveObject, isSpace, parseId, SpaceState, useSpace } from "@dxos/react-client/echo";
50
- import { Input, useTranslation } from "@dxos/react-ui";
51
- import { SelectInput } from "@dxos/react-ui-form";
53
+ import { SpaceState, getSpace, isLiveObject, isSpace, parseId, useSpace } from "@dxos/react-client/echo";
54
+ import { Input } from "@dxos/react-ui";
55
+ import { SelectField } from "@dxos/react-ui-form";
52
56
  import { HuePicker, IconPicker } from "@dxos/react-ui-pickers";
53
- import { DataType, TypenameAnnotationId } from "@dxos/schema";
54
- var OMIT = [
55
- DataType.Collection.typename,
56
- DataType.QueryCollection.typename
57
- ];
58
- var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilities.ReactSurface, [
57
+ import { Collection, ViewAnnotation } from "@dxos/schema";
58
+ var react_surface_default = (({ createInvitationUrl }) => contributes(Capabilities.ReactSurface, [
59
59
  createSurface({
60
- id: `${SPACE_PLUGIN}/article`,
60
+ id: `${meta.id}/article`,
61
61
  role: "article",
62
62
  filter: (data) => (
63
63
  // TODO(wittjosiah): Need to avoid shotgun parsing space state everywhere.
@@ -66,43 +66,53 @@ var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilitie
66
66
  component: ({ data, role, ...rest }) => /* @__PURE__ */ React.createElement(Surface, {
67
67
  data: {
68
68
  id: data.subject.id,
69
- subject: data.subject.properties[DataType.Collection.typename]?.target
69
+ subject: data.subject.properties[Collection.Collection.typename]?.target
70
70
  },
71
71
  role,
72
72
  ...rest
73
73
  })
74
74
  }),
75
75
  createSurface({
76
- id: `${SPACE_PLUGIN}/collection-fallback`,
76
+ id: `${meta.id}/record-article`,
77
+ role: "article",
78
+ position: "fallback",
79
+ filter: (data) => Obj.isObject(data.subject),
80
+ component: ({ data }) => /* @__PURE__ */ React.createElement(RecordArticle, {
81
+ subject: data.subject
82
+ })
83
+ }),
84
+ createSurface({
85
+ id: `${meta.id}/collection-fallback`,
77
86
  role: "article",
78
87
  position: "fallback",
79
- filter: (data) => Obj.instanceOf(DataType.Collection, data.subject),
80
- component: ({ data }) => /* @__PURE__ */ React.createElement(CollectionMain, {
81
- collection: data.subject
88
+ filter: (data) => Obj.instanceOf(Collection.Collection, data.subject),
89
+ component: ({ data }) => /* @__PURE__ */ React.createElement(CollectionArticle, {
90
+ subject: data.subject
82
91
  })
83
92
  }),
84
93
  createSurface({
85
- id: `${SPACE_PLUGIN}/plugin-settings`,
94
+ id: `${meta.id}/plugin-settings`,
86
95
  role: "article",
87
- filter: (data) => data.subject instanceof SettingsStore && data.subject.prefix === SPACE_PLUGIN,
96
+ filter: (data) => data.subject instanceof SettingsStore && data.subject.prefix === meta.id,
88
97
  component: ({ data: { subject } }) => /* @__PURE__ */ React.createElement(SpacePluginSettings, {
89
98
  settings: subject.value
90
99
  })
91
100
  }),
92
101
  createSurface({
93
- id: `${SPACE_PLUGIN}/companion/object-settings`,
102
+ id: `${meta.id}/companion/object-settings`,
94
103
  role: "article",
95
104
  filter: (data) => Obj.isObject(data.companionTo) && data.subject === "settings",
96
- component: ({ data, role }) => /* @__PURE__ */ React.createElement(ObjectSettingsContainer, {
105
+ component: ({ ref, data, role }) => /* @__PURE__ */ React.createElement(ObjectDetails, {
97
106
  object: data.companionTo,
98
- role
107
+ role,
108
+ ref
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`,
105
- component: () => {
114
+ filter: (data) => data.subject === `${meta.id}/properties`,
115
+ component: ({ ref }) => {
106
116
  const layout = useLayout();
107
117
  const { spaceId } = parseId(layout.workspace);
108
118
  const space = useSpace(spaceId);
@@ -110,15 +120,16 @@ var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilitie
110
120
  return null;
111
121
  }
112
122
  return /* @__PURE__ */ React.createElement(SpaceSettingsContainer, {
113
- space
123
+ space,
124
+ ref
114
125
  });
115
126
  }
116
127
  }),
117
128
  createSurface({
118
- id: `${SPACE_PLUGIN}/space-settings-members`,
129
+ id: `${meta.id}/space-settings-members`,
119
130
  role: "article",
120
131
  position: "hoist",
121
- filter: (data) => data.subject === `${SPACE_PLUGIN}/members`,
132
+ filter: (data) => data.subject === `${meta.id}/members`,
122
133
  component: () => {
123
134
  const layout = useLayout();
124
135
  const { spaceId } = parseId(layout.workspace);
@@ -133,9 +144,9 @@ var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilitie
133
144
  }
134
145
  }),
135
146
  createSurface({
136
- id: `${SPACE_PLUGIN}/space-settings-schema`,
147
+ id: `${meta.id}/space-settings-schema`,
137
148
  role: "article",
138
- filter: (data) => data.subject === `${SPACE_PLUGIN}/schema`,
149
+ filter: (data) => data.subject === `${meta.id}/schema`,
139
150
  component: () => {
140
151
  const layout = useLayout();
141
152
  const { spaceId } = parseId(layout.workspace);
@@ -149,13 +160,20 @@ var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilitie
149
160
  }
150
161
  }),
151
162
  createSurface({
152
- id: `${SPACE_PLUGIN}/selected-objects`,
163
+ id: `${meta.id}/selected-objects`,
153
164
  role: "article",
154
- filter: (data) => Obj.instanceOf(DataType.View, data.companionTo) && data.subject === "selected-objects",
155
- component: ({ data }) => /* @__PURE__ */ React.createElement(ObjectDetailsPanel, {
156
- key: fullyQualifiedId(data.companionTo),
157
- objectId: fullyQualifiedId(data.companionTo),
158
- view: data.companionTo
165
+ filter: (data) => {
166
+ if (data.subject !== "selected-objects" || !Obj.isObject(data.companionTo)) {
167
+ return false;
168
+ }
169
+ const schema = Obj.getSchema(data.companionTo);
170
+ return Option.fromNullable(schema).pipe(Option.flatMap((schema2) => ViewAnnotation.get(schema2)), Option.getOrElse(() => false));
171
+ },
172
+ component: ({ data, ref }) => /* @__PURE__ */ React.createElement(ObjectCardStack, {
173
+ key: Obj.getDXN(data.companionTo).toString(),
174
+ objectId: Obj.getDXN(data.companionTo).toString(),
175
+ view: data.companionTo.view.target,
176
+ ref
159
177
  })
160
178
  }),
161
179
  createSurface({
@@ -177,14 +195,14 @@ var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilitie
177
195
  component: ({ data }) => /* @__PURE__ */ React.createElement(CreateObjectDialog, data.props)
178
196
  }),
179
197
  createSurface({
180
- id: `${SPACE_PLUGIN}/create-initial-space-form-[hue]`,
198
+ id: `${meta.id}/create-initial-space-form-[hue]`,
181
199
  role: "form-input",
182
200
  filter: (data) => {
183
201
  const annotation = findAnnotation(data.schema.ast, HueAnnotationId);
184
202
  return !!annotation;
185
203
  },
186
204
  component: ({ data: _, ...inputProps }) => {
187
- const { label, disabled, type, getValue, onValueChange } = inputProps;
205
+ const { label, readonly, type, getValue, onValueChange } = inputProps;
188
206
  const handleChange = useCallback((nextHue) => onValueChange(type, nextHue), [
189
207
  onValueChange
190
208
  ]);
@@ -192,7 +210,7 @@ var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilitie
192
210
  onValueChange
193
211
  ]);
194
212
  return /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Label, null, label), /* @__PURE__ */ React.createElement(HuePicker, {
195
- disabled,
213
+ disabled: !!readonly,
196
214
  value: getValue() ?? "",
197
215
  onChange: handleChange,
198
216
  onReset: handleReset
@@ -200,14 +218,14 @@ var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilitie
200
218
  }
201
219
  }),
202
220
  createSurface({
203
- id: `${SPACE_PLUGIN}/create-initial-space-form-[icon]`,
221
+ id: `${meta.id}/create-initial-space-form-[icon]`,
204
222
  role: "form-input",
205
223
  filter: (data) => {
206
224
  const annotation = findAnnotation(data.schema.ast, IconAnnotationId);
207
225
  return !!annotation;
208
226
  },
209
227
  component: ({ data: _, ...inputProps }) => {
210
- const { label, disabled, type, getValue, onValueChange } = inputProps;
228
+ const { label, readonly, type, getValue, onValueChange } = inputProps;
211
229
  const handleChange = useCallback((nextIcon) => onValueChange(type, nextIcon), [
212
230
  onValueChange
213
231
  ]);
@@ -215,7 +233,7 @@ var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilitie
215
233
  onValueChange
216
234
  ]);
217
235
  return /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Label, null, label), /* @__PURE__ */ React.createElement(IconPicker, {
218
- disabled,
236
+ disabled: !!readonly,
219
237
  value: getValue() ?? "",
220
238
  onChange: handleChange,
221
239
  onReset: handleReset
@@ -223,85 +241,67 @@ var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilitie
223
241
  }
224
242
  }),
225
243
  createSurface({
226
- id: `${SPACE_PLUGIN}/typename-form-input`,
244
+ id: `${meta.id}/typename-form-input`,
227
245
  role: "form-input",
228
246
  filter: (data) => {
229
247
  if (data.prop !== "typename") {
230
248
  return false;
231
249
  }
232
- const annotation = findAnnotation(data.schema.ast, TypenameAnnotationId);
250
+ const annotation = findAnnotation(data.schema.ast, TypeInputOptionsAnnotationId);
233
251
  return !!annotation;
234
252
  },
235
253
  component: ({ data: { schema, target }, ...inputProps }) => {
236
- const { t } = useTranslation();
237
- const client = useClient();
238
254
  const props = inputProps;
239
255
  const space = isSpace(target) ? target : getSpace(target);
240
- if (!space) {
241
- return null;
242
- }
243
- const annotation = findAnnotation(schema.ast, TypenameAnnotationId);
244
- const schemaWhitelists = useCapabilities(ClientCapabilities.SchemaWhiteList);
245
- const whitelistedTypenames = useMemo(() => new Set(schemaWhitelists.flatMap((typeArray) => typeArray.map((type) => Type.getTypename(type)))), [
246
- schemaWhitelists
247
- ]);
248
- const objectForms = useCapabilities(SpaceCapabilities.ObjectForm);
249
- const objectFormTypenames = useMemo(() => new Set(objectForms.map((form) => Type.getTypename(form.objectSchema)).filter((typename) => !OMIT.includes(typename) && !typename.endsWith("View"))), [
250
- objectForms
251
- ]);
252
- const fixed = client.graph.schemaRegistry.schemas.filter((schema2) => {
253
- const limitedStatic = annotation.includes("limited-static") && whitelistedTypenames.has(Type.getTypename(schema2));
254
- const unusedStatic = annotation.includes("unused-static") && whitelistedTypenames.has(Type.getTypename(schema2)) && !space.properties.staticRecords?.includes(Type.getTypename(schema2));
255
- const objectForm = annotation.includes("object-form") && objectFormTypenames.has(Type.getTypename(schema2));
256
- return annotation.includes("static") || limitedStatic || unusedStatic || objectForm;
256
+ const annotation = findAnnotation(schema.ast, TypeInputOptionsAnnotationId);
257
+ const options = useTypeOptions({
258
+ space,
259
+ annotation
257
260
  });
258
- const dynamic = space?.db.schemaRegistry.query().runSync();
259
- const typenames = Array.from(/* @__PURE__ */ new Set([
260
- ...annotation.includes("limited-static") || annotation.includes("unused-static") || annotation.includes("static") || annotation.includes("object-form") ? fixed.map((schema2) => Type.getTypename(schema2)) : [],
261
- ...annotation.includes("dynamic") ? dynamic.map((schema2) => schema2.typename) : []
262
- ])).sort();
263
- const options = useMemo(() => typenames.map((typename) => ({
264
- value: typename,
265
- label: t("typename label", {
266
- ns: typename,
267
- defaultValue: typename
268
- })
269
- })).toSorted((a, b) => a.label.localeCompare(b.label)), [
270
- t,
271
- typenames
272
- ]);
273
- return /* @__PURE__ */ React.createElement(SelectInput, {
261
+ return /* @__PURE__ */ React.createElement(SelectField, {
274
262
  ...props,
275
263
  options
276
264
  });
277
265
  }
278
266
  }),
279
267
  createSurface({
280
- id: `${SPACE_PLUGIN}/object-settings`,
268
+ id: `${meta.id}/object-settings`,
281
269
  role: "object-settings",
282
- filter: (data) => Obj.instanceOf(DataType.View, data.subject),
283
- component: ({ data }) => /* @__PURE__ */ React.createElement(ViewEditor, {
284
- view: data.subject
285
- })
270
+ filter: (data) => {
271
+ if (!Obj.isObject(data.subject)) {
272
+ return false;
273
+ }
274
+ const schema = Obj.getSchema(data.subject);
275
+ return Option.fromNullable(schema).pipe(Option.flatMap((schema2) => ViewAnnotation.get(schema2)), Option.getOrElse(() => false));
276
+ },
277
+ component: ({ data }) => {
278
+ const view = data.subject.view.target;
279
+ if (!view) {
280
+ return null;
281
+ }
282
+ return /* @__PURE__ */ React.createElement(ViewEditor, {
283
+ view
284
+ });
285
+ }
286
286
  }),
287
287
  createSurface({
288
- id: POPOVER_RENAME_SPACE,
288
+ id: SPACE_RENAME_POPOVER,
289
289
  role: "card--popover",
290
- filter: (data) => data.component === POPOVER_RENAME_SPACE && isSpace(data.props),
291
- component: ({ data }) => /* @__PURE__ */ React.createElement(PopoverRenameSpace, {
290
+ filter: (data) => data.component === SPACE_RENAME_POPOVER && isSpace(data.props),
291
+ component: ({ data }) => /* @__PURE__ */ React.createElement(SpaceRenamePopover, {
292
292
  space: data.props
293
293
  })
294
294
  }),
295
295
  createSurface({
296
- id: POPOVER_RENAME_OBJECT,
296
+ id: OBJECT_RENAME_POPOVER,
297
297
  role: "card--popover",
298
- filter: (data) => data.component === POPOVER_RENAME_OBJECT && isLiveObject(data.props),
299
- component: ({ data }) => /* @__PURE__ */ React.createElement(PopoverRenameObject, {
298
+ filter: (data) => data.component === OBJECT_RENAME_POPOVER && isLiveObject(data.props),
299
+ component: ({ data }) => /* @__PURE__ */ React.createElement(ObjectRenamePopover, {
300
300
  object: data.props
301
301
  })
302
302
  }),
303
303
  createSurface({
304
- id: `${SPACE_PLUGIN}/menu-footer`,
304
+ id: `${meta.id}/menu-footer`,
305
305
  role: "menu-footer",
306
306
  filter: (data) => Obj.isObject(data.subject),
307
307
  component: ({ data }) => /* @__PURE__ */ React.createElement(MenuFooter, {
@@ -309,7 +309,7 @@ var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilitie
309
309
  })
310
310
  }),
311
311
  createSurface({
312
- id: `${SPACE_PLUGIN}/navtree-presence`,
312
+ id: `${meta.id}/navtree-presence`,
313
313
  role: "navtree-item-end",
314
314
  filter: (data) => typeof data.id === "string" && Obj.isObject(data.subject),
315
315
  component: ({ data }) => {
@@ -323,7 +323,7 @@ var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilitie
323
323
  }),
324
324
  // TODO(wittjosiah): Attention glyph for non-echo items should be handled elsewhere.
325
325
  createSurface({
326
- id: `${SPACE_PLUGIN}/navtree-presence-fallback`,
326
+ id: `${meta.id}/navtree-presence-fallback`,
327
327
  role: "navtree-item-end",
328
328
  position: "fallback",
329
329
  filter: (data) => typeof data.id === "string",
@@ -334,7 +334,7 @@ var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilitie
334
334
  }),
335
335
  // TODO(wittjosiah): Broken?
336
336
  createSurface({
337
- id: `${SPACE_PLUGIN}/navtree-sync-status`,
337
+ id: `${meta.id}/navtree-sync-status`,
338
338
  role: "navtree-item-end",
339
339
  filter: (data) => isSpace(data.subject),
340
340
  component: ({ data }) => /* @__PURE__ */ React.createElement(InlineSyncStatus, {
@@ -343,33 +343,33 @@ var react_surface_default = ({ createInvitationUrl }) => contributes(Capabilitie
343
343
  })
344
344
  }),
345
345
  createSurface({
346
- id: `${SPACE_PLUGIN}/navbar-presence`,
346
+ id: `${meta.id}/navbar-presence`,
347
347
  role: "navbar-end",
348
348
  position: "hoist",
349
349
  filter: (data) => isSpace(data.subject) || Obj.isObject(data.subject),
350
350
  component: ({ data }) => {
351
351
  const space = isSpace(data.subject) ? data.subject : getSpace(data.subject);
352
- const object = isSpace(data.subject) ? data.subject.state.get() === SpaceState.SPACE_READY ? space?.properties[DataType.Collection.typename]?.target : void 0 : data.subject;
352
+ const object = isSpace(data.subject) ? data.subject.state.get() === SpaceState.SPACE_READY ? space?.properties[Collection.Collection.typename]?.target : void 0 : data.subject;
353
353
  return object ? /* @__PURE__ */ React.createElement(SpacePresence, {
354
354
  object
355
355
  }) : null;
356
356
  }
357
357
  }),
358
358
  createSurface({
359
- id: `${SPACE_PLUGIN}/collection-section`,
359
+ id: `${meta.id}/collection-section`,
360
360
  role: "section",
361
- filter: (data) => Obj.instanceOf(DataType.Collection, data.subject),
361
+ filter: (data) => Obj.instanceOf(Collection.Collection, data.subject),
362
362
  component: ({ data }) => /* @__PURE__ */ React.createElement(CollectionSection, {
363
- collection: data.subject
363
+ subject: data.subject
364
364
  })
365
365
  }),
366
366
  createSurface({
367
- id: `${SPACE_PLUGIN}/status`,
367
+ id: `${meta.id}/status`,
368
368
  role: "status",
369
369
  component: () => /* @__PURE__ */ React.createElement(SyncStatus, null)
370
370
  })
371
- ]);
371
+ ]));
372
372
  export {
373
373
  react_surface_default as default
374
374
  };
375
- //# sourceMappingURL=react-surface-UUIUUD6P.mjs.map
375
+ //# sourceMappingURL=react-surface-BVZGNSBB.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 * as Option from 'effect/Option';\nimport type * as Schema from 'effect/Schema';\nimport React, { useCallback } from 'react';\n\nimport { Capabilities, contributes, createSurface } from '@dxos/app-framework';\nimport { Surface, useCapability, useLayout } from '@dxos/app-framework/react';\nimport { Obj, type Ref } from '@dxos/echo';\nimport { findAnnotation } from '@dxos/effect';\nimport { SettingsStore } from '@dxos/local-storage';\nimport { type Space, SpaceState, getSpace, isLiveObject, isSpace, parseId, useSpace } from '@dxos/react-client/echo';\nimport { Input } from '@dxos/react-ui';\nimport { type FormFieldComponentProps, SelectField } from '@dxos/react-ui-form';\nimport { HuePicker, IconPicker } from '@dxos/react-ui-pickers';\nimport { Collection, type View, ViewAnnotation } from '@dxos/schema';\nimport { type JoinPanelProps } from '@dxos/shell/react';\n\nimport {\n CREATE_OBJECT_DIALOG,\n CREATE_SPACE_DIALOG,\n CollectionArticle,\n CollectionSection,\n CreateObjectDialog,\n type CreateObjectDialogProps,\n CreateSpaceDialog,\n InlineSyncStatus,\n JOIN_DIALOG,\n JoinDialog,\n MembersContainer,\n MenuFooter,\n OBJECT_RENAME_POPOVER,\n ObjectCardStack,\n ObjectDetails,\n ObjectRenamePopover,\n RecordArticle,\n SPACE_RENAME_POPOVER,\n SchemaContainer,\n SmallPresenceLive,\n SpacePluginSettings,\n SpacePresence,\n SpaceRenamePopover,\n SpaceSettingsContainer,\n SyncStatus,\n ViewEditor,\n} from '../components';\nimport { useTypeOptions } from '../hooks';\nimport { meta } from '../meta';\nimport {\n HueAnnotationId,\n IconAnnotationId,\n type SpaceSettingsProps,\n type TypeInputOptions,\n TypeInputOptionsAnnotationId,\n} from '../types';\n\nimport { SpaceCapabilities } from './capabilities';\n\ntype ReactSurfaceOptions = {\n createInvitationUrl: (invitationCode: string) => string;\n};\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[Collection.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 }) => <RecordArticle subject={data.subject} />,\n }),\n createSurface({\n id: `${meta.id}/collection-fallback`,\n role: 'article',\n position: 'fallback',\n filter: (data): data is { subject: Collection.Collection } => Obj.instanceOf(Collection.Collection, data.subject),\n component: ({ data }) => <CollectionArticle subject={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: ({ ref, data, role }) => <ObjectDetails object={data.companionTo} role={role} ref={ref} />,\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: ({ ref }) => {\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} ref={ref} />;\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: Obj.Obj<{ view: Ref.Ref<View.View> }>; subject: 'selected-objects' } => {\n if (data.subject !== 'selected-objects' || !Obj.isObject(data.companionTo)) {\n return false;\n }\n\n // TODO(burdon): Check companionTo.view.target is valid.\n const schema = Obj.getSchema(data.companionTo);\n return Option.fromNullable(schema).pipe(\n Option.flatMap((schema) => ViewAnnotation.get(schema)),\n Option.getOrElse(() => false),\n );\n },\n component: ({ data, ref }) => (\n <ObjectCardStack\n key={Obj.getDXN(data.companionTo).toString()}\n objectId={Obj.getDXN(data.companionTo).toString()}\n view={data.companionTo.view.target!}\n ref={ref}\n />\n ),\n }),\n 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 FormFieldComponentProps;\n const handleChange = useCallback((nextHue: string) => onValueChange(type, nextHue), [onValueChange]);\n const handleReset = useCallback(() => onValueChange(type, undefined), [onValueChange]);\n return (\n <Input.Root>\n <Input.Label>{label}</Input.Label>\n <HuePicker disabled={!!readonly} value={getValue() ?? ''} onChange={handleChange} onReset={handleReset} />\n </Input.Root>\n );\n },\n }),\n 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 FormFieldComponentProps;\n const handleChange = useCallback((nextIcon: string) => onValueChange(type, nextIcon), [onValueChange]);\n const handleReset = useCallback(() => onValueChange(type, undefined), [onValueChange]);\n return (\n <Input.Root>\n <Input.Label>{label}</Input.Label>\n <IconPicker 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 {\n prop: string;\n schema: Schema.Schema.Any;\n target: Space | Collection.Collection | undefined;\n } => {\n if (data.prop !== 'typename') {\n return false;\n }\n\n const annotation = findAnnotation((data.schema as Schema.Schema.All).ast, TypeInputOptionsAnnotationId);\n return !!annotation;\n },\n component: ({ data: { schema, target }, ...inputProps }) => {\n const props = inputProps as any as FormFieldComponentProps;\n const space = isSpace(target) ? target : getSpace(target);\n const annotation = findAnnotation<TypeInputOptions>(schema.ast, TypeInputOptionsAnnotationId)!;\n const options = useTypeOptions({ space, annotation });\n\n return <SelectField {...props} options={options} />;\n },\n }),\n createSurface({\n id: `${meta.id}/object-settings`,\n role: 'object-settings',\n filter: (data): data is { subject: { view: Ref.Ref<View.View> } } => {\n if (!Obj.isObject(data.subject)) {\n return false;\n }\n\n const schema = Obj.getSchema(data.subject);\n return Option.fromNullable(schema).pipe(\n Option.flatMap((schema) => ViewAnnotation.get(schema)),\n Option.getOrElse(() => false),\n );\n },\n component: ({ data }) => {\n const view = data.subject.view.target;\n if (!view) {\n return null;\n }\n\n return <ViewEditor view={view} />;\n },\n }),\n createSurface({\n id: SPACE_RENAME_POPOVER,\n role: 'card--popover',\n filter: (data): data is { props: Space } => data.component === SPACE_RENAME_POPOVER && isSpace(data.props),\n component: ({ data }) => <SpaceRenamePopover space={data.props} />,\n }),\n createSurface({\n id: OBJECT_RENAME_POPOVER,\n role: 'card--popover',\n filter: (data): data is { props: Obj.Any } =>\n data.component === OBJECT_RENAME_POPOVER && isLiveObject(data.props),\n component: ({ data }) => <ObjectRenamePopover 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[Collection.Collection.typename]?.target as Collection.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: Collection.Collection } => Obj.instanceOf(Collection.Collection, data.subject),\n component: ({ data }) => <CollectionSection subject={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": ["Option", "React", "useCallback", "Capabilities", "contributes", "createSurface", "Surface", "useCapability", "useLayout", "Obj", "findAnnotation", "SettingsStore", "SpaceState", "getSpace", "isLiveObject", "isSpace", "parseId", "useSpace", "Input", "SelectField", "HuePicker", "IconPicker", "Collection", "ViewAnnotation", "createInvitationUrl", "contributes", "Capabilities", "ReactSurface", "createSurface", "id", "meta", "role", "filter", "data", "isSpace", "subject", "state", "get", "SpaceState", "SPACE_READY", "component", "rest", "Surface", "properties", "Collection", "typename", "target", "position", "Obj", "isObject", "RecordArticle", "instanceOf", "CollectionArticle", "SettingsStore", "prefix", "SpacePluginSettings", "settings", "value", "companionTo", "ref", "ObjectDetails", "object", "layout", "useLayout", "spaceId", "parseId", "workspace", "space", "useSpace", "SpaceSettingsContainer", "MembersContainer", "SchemaContainer", "schema", "getSchema", "fromNullable", "pipe", "flatMap", "ViewAnnotation", "getOrElse", "ObjectCardStack", "key", "getDXN", "toString", "objectId", "view", "JOIN_DIALOG", "JoinDialog", "props", "CREATE_SPACE_DIALOG", "CreateSpaceDialog", "CREATE_OBJECT_DIALOG", "CreateObjectDialog", "annotation", "findAnnotation", "ast", "HueAnnotationId", "_", "inputProps", "label", "readonly", "type", "getValue", "onValueChange", "handleChange", "useCallback", "nextHue", "handleReset", "undefined", "Input", "Root", "Label", "HuePicker", "disabled", "onChange", "onReset", "IconAnnotationId", "nextIcon", "IconPicker", "prop", "TypeInputOptionsAnnotationId", "getSpace", "options", "useTypeOptions", "SelectField", "ViewEditor", "SPACE_RENAME_POPOVER", "SpaceRenamePopover", "OBJECT_RENAME_POPOVER", "isLiveObject", "ObjectRenamePopover", "MenuFooter", "useCapability", "SpaceCapabilities", "MutableState", "SmallPresenceLive", "open", "viewers", "viewersByObject", "InlineSyncStatus", "SpacePresence", "CollectionSection", "SyncStatus"]
7
+ }
@@ -0,0 +1,45 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ SpaceCapabilities
4
+ } from "./chunk-WWGV5FJM.mjs";
5
+ import "./chunk-BDEFTL6K.mjs";
6
+
7
+ // src/capabilities/repair.ts
8
+ import { contributes } from "@dxos/app-framework";
9
+ import { Obj, Ref, Type } from "@dxos/echo";
10
+ import { Collection } from "@dxos/schema";
11
+ var repair_default = (() => contributes(SpaceCapabilities.Repair, async ({ space }) => {
12
+ await removeQueryCollections(space);
13
+ await ensureSystemCollection(space);
14
+ }));
15
+ var removeQueryCollections = async (space) => {
16
+ const rootCollection = await space.properties[Collection.Collection.typename]?.load();
17
+ if (!rootCollection) {
18
+ return;
19
+ }
20
+ const objects = await Promise.all(rootCollection.objects.map((ref) => ref.load()));
21
+ const queryCollections = objects.filter((object) => Obj.getTypename(object) === "dxos.org/type/QueryCollection");
22
+ if (queryCollections.length === 0) {
23
+ return;
24
+ }
25
+ rootCollection.objects = objects.filter((object) => Obj.getTypename(object) !== "dxos.org/type/QueryCollection").map((object) => Ref.make(object));
26
+ queryCollections.forEach((object) => space.db.remove(object));
27
+ };
28
+ var ensureSystemCollection = async (space) => {
29
+ const rootCollection = await space.properties[Collection.Collection.typename]?.load();
30
+ if (!rootCollection) {
31
+ return;
32
+ }
33
+ const objects = await Promise.all(rootCollection.objects.map((ref) => ref.load()));
34
+ const records = objects.find((object) => Obj.instanceOf(Collection.Managed, object) && object.key === Type.getTypename(Type.PersistentType));
35
+ if (records) {
36
+ return;
37
+ }
38
+ rootCollection.objects.push(Ref.make(Collection.makeManaged({
39
+ key: Type.getTypename(Type.PersistentType)
40
+ })));
41
+ };
42
+ export {
43
+ repair_default as default
44
+ };
45
+ //# sourceMappingURL=repair-EHZS6MFY.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/repair.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { contributes } from '@dxos/app-framework';\nimport { Obj, Ref, Type } from '@dxos/echo';\nimport { type Space } from '@dxos/react-client/echo';\nimport { Collection } from '@dxos/schema';\n\nimport { SpaceCapabilities } from './capabilities';\n\nexport default () =>\n contributes(SpaceCapabilities.Repair, async ({ space }) => {\n await removeQueryCollections(space);\n await ensureSystemCollection(space);\n });\n\n/**\n * Remove all existing query collections from the root collection.\n */\nconst removeQueryCollections = async (space: Space) => {\n const rootCollection: Collection.Collection = await space.properties[Collection.Collection.typename]?.load();\n if (!rootCollection) {\n return;\n }\n\n const objects = await Promise.all(rootCollection.objects.map((ref) => ref.load()));\n const queryCollections = objects.filter((object) => Obj.getTypename(object) === 'dxos.org/type/QueryCollection');\n if (queryCollections.length === 0) {\n return;\n }\n\n rootCollection.objects = objects\n .filter((object) => Obj.getTypename(object) !== 'dxos.org/type/QueryCollection')\n .map((object) => Ref.make(object));\n queryCollections.forEach((object) => space.db.remove(object));\n};\n\n/**\n * Ensure the root collection has a system collection for StoredSchema.\n */\nconst ensureSystemCollection = async (space: Space) => {\n const rootCollection: Collection.Collection = await space.properties[Collection.Collection.typename]?.load();\n if (!rootCollection) {\n return;\n }\n\n const objects = await Promise.all(rootCollection.objects.map((ref) => ref.load()));\n const records = objects.find(\n (object) => Obj.instanceOf(Collection.Managed, object) && object.key === Type.getTypename(Type.PersistentType),\n );\n if (records) {\n return;\n }\n\n rootCollection.objects.push(Ref.make(Collection.makeManaged({ key: Type.getTypename(Type.PersistentType) })));\n};\n"],
5
+ "mappings": ";;;;;;;AAIA,SAASA,mBAAmB;AAC5B,SAASC,KAAKC,KAAKC,YAAY;AAE/B,SAASC,kBAAkB;AAI3B,IAAA,kBAAe,MACbC,YAAYC,kBAAkBC,QAAQ,OAAO,EAAEC,MAAK,MAAE;AACpD,QAAMC,uBAAuBD,KAAAA;AAC7B,QAAME,uBAAuBF,KAAAA;AAC/B,CAAA;AAKF,IAAMC,yBAAyB,OAAOD,UAAAA;AACpC,QAAMG,iBAAwC,MAAMH,MAAMI,WAAWC,WAAWA,WAAWC,QAAQ,GAAGC,KAAAA;AACtG,MAAI,CAACJ,gBAAgB;AACnB;EACF;AAEA,QAAMK,UAAU,MAAMC,QAAQC,IAAIP,eAAeK,QAAQG,IAAI,CAACC,QAAQA,IAAIL,KAAI,CAAA,CAAA;AAC9E,QAAMM,mBAAmBL,QAAQM,OAAO,CAACC,WAAWC,IAAIC,YAAYF,MAAAA,MAAY,+BAAA;AAChF,MAAIF,iBAAiBK,WAAW,GAAG;AACjC;EACF;AAEAf,iBAAeK,UAAUA,QACtBM,OAAO,CAACC,WAAWC,IAAIC,YAAYF,MAAAA,MAAY,+BAAA,EAC/CJ,IAAI,CAACI,WAAWI,IAAIC,KAAKL,MAAAA,CAAAA;AAC5BF,mBAAiBQ,QAAQ,CAACN,WAAWf,MAAMsB,GAAGC,OAAOR,MAAAA,CAAAA;AACvD;AAKA,IAAMb,yBAAyB,OAAOF,UAAAA;AACpC,QAAMG,iBAAwC,MAAMH,MAAMI,WAAWC,WAAWA,WAAWC,QAAQ,GAAGC,KAAAA;AACtG,MAAI,CAACJ,gBAAgB;AACnB;EACF;AAEA,QAAMK,UAAU,MAAMC,QAAQC,IAAIP,eAAeK,QAAQG,IAAI,CAACC,QAAQA,IAAIL,KAAI,CAAA,CAAA;AAC9E,QAAMiB,UAAUhB,QAAQiB,KACtB,CAACV,WAAWC,IAAIU,WAAWrB,WAAWsB,SAASZ,MAAAA,KAAWA,OAAOa,QAAQC,KAAKZ,YAAYY,KAAKC,cAAc,CAAA;AAE/G,MAAIN,SAAS;AACX;EACF;AAEArB,iBAAeK,QAAQuB,KAAKZ,IAAIC,KAAKf,WAAW2B,YAAY;IAAEJ,KAAKC,KAAKZ,YAAYY,KAAKC,cAAc;EAAE,CAAA,CAAA,CAAA;AAC3G;",
6
+ "names": ["contributes", "Obj", "Ref", "Type", "Collection", "contributes", "SpaceCapabilities", "Repair", "space", "removeQueryCollections", "ensureSystemCollection", "rootCollection", "properties", "Collection", "typename", "load", "objects", "Promise", "all", "map", "ref", "queryCollections", "filter", "object", "Obj", "getTypename", "length", "Ref", "make", "forEach", "db", "remove", "records", "find", "instanceOf", "Managed", "key", "Type", "PersistentType", "push", "makeManaged"]
7
+ }