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

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 (376) 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/ObjectDetailsPanel-ACGHWPDX.mjs +141 -0
  4. package/dist/lib/browser/ObjectDetailsPanel-ACGHWPDX.mjs.map +7 -0
  5. package/dist/lib/browser/ObjectSettings-U3IH7BMV.mjs +144 -0
  6. package/dist/lib/browser/ObjectSettings-U3IH7BMV.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-HABMCWAI.mjs +517 -0
  10. package/dist/lib/browser/app-graph-builder-HABMCWAI.mjs.map +7 -0
  11. package/dist/lib/browser/{app-graph-serializer-H6AW7KGS.mjs → app-graph-serializer-G3VFEGTN.mjs} +19 -19
  12. package/dist/lib/browser/app-graph-serializer-G3VFEGTN.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-6A3NWBB6.mjs +392 -0
  14. package/dist/lib/browser/chunk-6A3NWBB6.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-XUYKJUU7.mjs → chunk-GJOZILGC.mjs} +262 -143
  18. package/dist/lib/browser/chunk-GJOZILGC.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-FBJEXW54.mjs → chunk-KCZ527AM.mjs} +667 -525
  20. package/dist/lib/browser/chunk-KCZ527AM.mjs.map +7 -0
  21. package/dist/lib/browser/{chunk-VLBRSGJ2.mjs → chunk-P25R3AOK.mjs} +36 -6
  22. package/dist/lib/browser/chunk-P25R3AOK.mjs.map +7 -0
  23. package/dist/lib/browser/{chunk-QACNNDOT.mjs → chunk-POFUXISV.mjs} +69 -62
  24. package/dist/lib/browser/chunk-POFUXISV.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-VZBIIYFM.mjs +16 -0
  26. package/dist/lib/browser/chunk-VZBIIYFM.mjs.map +7 -0
  27. package/dist/lib/browser/chunk-WJXU4GKV.mjs +19 -0
  28. package/dist/lib/browser/chunk-WJXU4GKV.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 +88 -135
  32. package/dist/lib/browser/index.mjs.map +3 -3
  33. package/dist/lib/browser/{intent-resolver-XHGD73WZ.mjs → intent-resolver-RZEWNJ2K.mjs} +114 -101
  34. package/dist/lib/browser/intent-resolver-RZEWNJ2K.mjs.map +7 -0
  35. package/dist/lib/browser/meta.json +1 -1
  36. package/dist/lib/browser/react-root-JCRD74GI.mjs +30 -0
  37. package/dist/lib/browser/react-root-JCRD74GI.mjs.map +7 -0
  38. package/dist/lib/browser/{react-surface-YWZZQF7H.mjs → react-surface-VOETEAG3.mjs} +101 -111
  39. package/dist/lib/browser/react-surface-VOETEAG3.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-TRLI52I5.mjs} +5 -5
  43. package/dist/lib/browser/{settings-4IMP5RYT.mjs.map → settings-TRLI52I5.mjs.map} +1 -1
  44. package/dist/lib/browser/{spaces-ready-TOPG6IV4.mjs → spaces-ready-OHGCWZHQ.mjs} +28 -19
  45. package/dist/lib/browser/spaces-ready-OHGCWZHQ.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/ObjectDetailsPanel-6OFTT3GG.mjs +142 -0
  52. package/dist/lib/node-esm/ObjectDetailsPanel-6OFTT3GG.mjs.map +7 -0
  53. package/dist/lib/node-esm/ObjectSettings-YXPJQMJ5.mjs +145 -0
  54. package/dist/lib/node-esm/ObjectSettings-YXPJQMJ5.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-T6VJKIOA.mjs +518 -0
  58. package/dist/lib/node-esm/app-graph-builder-T6VJKIOA.mjs.map +7 -0
  59. package/dist/lib/node-esm/{app-graph-serializer-2ICUGQQT.mjs → app-graph-serializer-2NLWWFUB.mjs} +19 -19
  60. package/dist/lib/node-esm/app-graph-serializer-2NLWWFUB.mjs.map +7 -0
  61. package/dist/lib/node-esm/{chunk-SSLBYZEY.mjs → chunk-7EV4SN47.mjs} +35 -6
  62. package/dist/lib/node-esm/chunk-7EV4SN47.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-4AOMYKDE.mjs → chunk-I6FZP42D.mjs} +262 -143
  70. package/dist/lib/node-esm/chunk-I6FZP42D.mjs.map +7 -0
  71. package/dist/lib/node-esm/{chunk-2A3VBXBP.mjs → chunk-JAMGJUFU.mjs} +667 -525
  72. package/dist/lib/node-esm/chunk-JAMGJUFU.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-X34VDVMY.mjs +393 -0
  76. package/dist/lib/node-esm/chunk-X34VDVMY.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 +88 -135
  80. package/dist/lib/node-esm/index.mjs.map +3 -3
  81. package/dist/lib/node-esm/{intent-resolver-LEANKSKZ.mjs → intent-resolver-4PHJWDXW.mjs} +114 -101
  82. package/dist/lib/node-esm/intent-resolver-4PHJWDXW.mjs.map +7 -0
  83. package/dist/lib/node-esm/meta.json +1 -1
  84. package/dist/lib/node-esm/{react-root-5Y7LJRX6.mjs → react-root-O5I5CDJ7.mjs} +13 -12
  85. package/dist/lib/node-esm/react-root-O5I5CDJ7.mjs.map +7 -0
  86. package/dist/lib/node-esm/{react-surface-YQFNIKYT.mjs → react-surface-J3XDMU2D.mjs} +101 -111
  87. package/dist/lib/node-esm/react-surface-J3XDMU2D.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-MNQTKHL7.mjs} +5 -5
  91. package/dist/lib/node-esm/{settings-SAOBPND3.mjs.map → settings-MNQTKHL7.mjs.map} +1 -1
  92. package/dist/lib/node-esm/{spaces-ready-HIUKNDZK.mjs → spaces-ready-ZPU24DA2.mjs} +28 -19
  93. package/dist/lib/node-esm/spaces-ready-ZPU24DA2.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/ObjectDetailsPanel/ObjectDetailsPanel.d.ts +9 -0
  145. package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts.map +1 -0
  146. package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts +10 -0
  147. package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts.map +1 -0
  148. package/dist/types/src/components/ObjectDetailsPanel/index.d.ts +3 -0
  149. package/dist/types/src/components/ObjectDetailsPanel/index.d.ts.map +1 -0
  150. package/dist/types/src/components/ObjectRenamePopover/ObjectRenamePopover.d.ts +7 -0
  151. package/dist/types/src/components/ObjectRenamePopover/ObjectRenamePopover.d.ts.map +1 -0
  152. package/dist/types/src/components/ObjectRenamePopover/index.d.ts +2 -0
  153. package/dist/types/src/components/ObjectRenamePopover/index.d.ts.map +1 -0
  154. package/dist/types/src/components/ObjectSettings/AdvancedObjectSettings.d.ts.map +1 -1
  155. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts +2 -2
  156. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts.map +1 -1
  157. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts +1424 -0
  158. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts.map +1 -0
  159. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts +3 -3
  160. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts.map +1 -1
  161. package/dist/types/src/components/ObjectSettings/ObjectSettingsContainer.d.ts.map +1 -1
  162. package/dist/types/src/components/ObjectSettings/index.d.ts +2 -1
  163. package/dist/types/src/components/ObjectSettings/index.d.ts.map +1 -1
  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.map +1 -1
  182. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts +1421 -4
  183. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts.map +1 -1
  184. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
  185. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts +1422 -5
  186. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
  187. package/dist/types/src/components/ViewEditor.d.ts +3 -4
  188. package/dist/types/src/components/ViewEditor.d.ts.map +1 -1
  189. package/dist/types/src/components/index.d.ts +10 -11
  190. package/dist/types/src/components/index.d.ts.map +1 -1
  191. package/dist/types/src/events.d.ts.map +1 -1
  192. package/dist/types/src/helpers/index.d.ts +2 -0
  193. package/dist/types/src/helpers/index.d.ts.map +1 -0
  194. package/dist/types/src/helpers/query.d.ts +8 -0
  195. package/dist/types/src/helpers/query.d.ts.map +1 -0
  196. package/dist/types/src/helpers/query.test.d.ts +2 -0
  197. package/dist/types/src/helpers/query.test.d.ts.map +1 -0
  198. package/dist/types/src/hooks/index.d.ts +1 -0
  199. package/dist/types/src/hooks/index.d.ts.map +1 -1
  200. package/dist/types/src/hooks/useActiveSpace.d.ts.map +1 -1
  201. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts +1 -1
  202. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts.map +1 -1
  203. package/dist/types/src/hooks/usePath.d.ts +1 -1
  204. package/dist/types/src/hooks/usePath.d.ts.map +1 -1
  205. package/dist/types/src/hooks/useTypeOptions.d.ts +10 -0
  206. package/dist/types/src/hooks/useTypeOptions.d.ts.map +1 -0
  207. package/dist/types/src/index.d.ts +1 -0
  208. package/dist/types/src/index.d.ts.map +1 -1
  209. package/dist/types/src/meta.d.ts +0 -1
  210. package/dist/types/src/meta.d.ts.map +1 -1
  211. package/dist/types/src/translations.d.ts +1261 -67
  212. package/dist/types/src/translations.d.ts.map +1 -1
  213. package/dist/types/src/types/form.d.ts +24 -0
  214. package/dist/types/src/types/form.d.ts.map +1 -0
  215. package/dist/types/src/types/index.d.ts +1 -0
  216. package/dist/types/src/types/index.d.ts.map +1 -1
  217. package/dist/types/src/types/types.d.ts +94 -155
  218. package/dist/types/src/types/types.d.ts.map +1 -1
  219. package/dist/types/src/util.d.ts +25 -36
  220. package/dist/types/src/util.d.ts.map +1 -1
  221. package/dist/types/tsconfig.tsbuildinfo +1 -1
  222. package/package.json +72 -63
  223. package/src/SpacePlugin.ts +182 -222
  224. package/src/capabilities/app-graph-builder.ts +221 -237
  225. package/src/capabilities/app-graph-serializer.ts +12 -12
  226. package/src/capabilities/capabilities.ts +28 -17
  227. package/src/capabilities/identity-created.ts +3 -3
  228. package/src/capabilities/index.ts +1 -2
  229. package/src/capabilities/intent-resolver.ts +91 -79
  230. package/src/capabilities/react-root.tsx +6 -4
  231. package/src/capabilities/react-surface.tsx +108 -149
  232. package/src/capabilities/repair.ts +57 -0
  233. package/src/capabilities/spaces-ready.ts +23 -11
  234. package/src/capabilities/state.ts +5 -4
  235. package/src/components/AwaitingObject.tsx +12 -14
  236. package/src/components/{CollectionMain.tsx → CollectionArticle.tsx} +7 -6
  237. package/src/components/CollectionSection.tsx +8 -6
  238. package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +17 -16
  239. package/src/components/CreateDialog/CreateObjectDialog.tsx +74 -46
  240. package/src/components/CreateDialog/CreateObjectPanel.tsx +51 -33
  241. package/src/components/CreateDialog/CreateSpaceDialog.tsx +30 -11
  242. package/src/components/{JoinDialog.tsx → JoinDialog/JoinDialog.tsx} +26 -10
  243. package/src/components/JoinDialog/index.ts +5 -0
  244. package/src/components/MembersContainer/MembersContainer.stories.tsx +56 -0
  245. package/src/components/{MembersContainer.tsx → MembersContainer/MembersContainer.tsx} +22 -21
  246. package/src/components/MembersContainer/index.ts +5 -0
  247. package/src/components/MenuFooter.tsx +2 -2
  248. package/src/components/ObjectDetailsPanel/ObjectDetailsPanel.tsx +51 -0
  249. package/src/components/ObjectDetailsPanel/ObjectForm.tsx +72 -0
  250. package/src/components/ObjectDetailsPanel/index.ts +7 -0
  251. package/src/components/{PopoverRenameObject.tsx → ObjectRenamePopover/ObjectRenamePopover.tsx} +10 -16
  252. package/src/components/ObjectRenamePopover/index.ts +5 -0
  253. package/src/components/ObjectSettings/AdvancedObjectSettings.tsx +7 -7
  254. package/src/components/ObjectSettings/BaseObjectSettings.stories.tsx +63 -0
  255. package/src/components/ObjectSettings/BaseObjectSettings.tsx +90 -26
  256. package/src/components/ObjectSettings/ForeignKeys.tsx +8 -8
  257. package/src/components/ObjectSettings/ObjectSettingsContainer.tsx +4 -3
  258. package/src/components/ObjectSettings/index.ts +3 -1
  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 +68 -28
  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 +57 -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 +158 -0
  279. package/src/hooks/index.ts +1 -0
  280. package/src/hooks/useActiveSpace.ts +3 -2
  281. package/src/hooks/useInputSurfaceLookup.tsx +8 -3
  282. package/src/hooks/usePath.ts +1 -1
  283. package/src/hooks/useTypeOptions.ts +27 -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 +75 -0
  288. package/src/types/index.ts +1 -0
  289. package/src/types/types.ts +49 -50
  290. package/src/util.tsx +268 -145
  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-V3MP3CDK.mjs +0 -480
  295. package/dist/lib/browser/app-graph-builder-V3MP3CDK.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-FBJEXW54.mjs.map +0 -7
  302. package/dist/lib/browser/chunk-JS3MMC42.mjs +0 -19
  303. package/dist/lib/browser/chunk-JS3MMC42.mjs.map +0 -7
  304. package/dist/lib/browser/chunk-QACNNDOT.mjs.map +0 -7
  305. package/dist/lib/browser/chunk-SGTQ52SU.mjs +0 -338
  306. package/dist/lib/browser/chunk-SGTQ52SU.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-XHGD73WZ.mjs.map +0 -7
  311. package/dist/lib/browser/react-root-CMWOGJG5.mjs +0 -29
  312. package/dist/lib/browser/react-root-CMWOGJG5.mjs.map +0 -7
  313. package/dist/lib/browser/react-surface-YWZZQF7H.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-SG4VECBB.mjs +0 -481
  324. package/dist/lib/node-esm/app-graph-builder-SG4VECBB.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-2A3VBXBP.mjs.map +0 -7
  327. package/dist/lib/node-esm/chunk-4AOMYKDE.mjs.map +0 -7
  328. package/dist/lib/node-esm/chunk-5HHYE264.mjs +0 -20
  329. package/dist/lib/node-esm/chunk-5HHYE264.mjs.map +0 -7
  330. package/dist/lib/node-esm/chunk-5T3ZH23B.mjs +0 -21
  331. package/dist/lib/node-esm/chunk-5T3ZH23B.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-LEANKSKZ.mjs.map +0 -7
  340. package/dist/lib/node-esm/react-root-5Y7LJRX6.mjs.map +0 -7
  341. package/dist/lib/node-esm/react-surface-YQFNIKYT.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/PersistenceStatus.d.ts +0 -6
  363. package/dist/types/src/components/PersistenceStatus.d.ts.map +0 -1
  364. package/dist/types/src/components/PopoverRenameObject.d.ts +0 -7
  365. package/dist/types/src/components/PopoverRenameObject.d.ts.map +0 -1
  366. package/dist/types/src/components/PopoverRenameSpace.d.ts +0 -7
  367. package/dist/types/src/components/PopoverRenameSpace.d.ts.map +0 -1
  368. package/dist/types/src/components/SpacePresence.d.ts.map +0 -1
  369. package/dist/types/src/components/SpacePresence.stories.d.ts +0 -9
  370. package/dist/types/src/components/SpacePresence.stories.d.ts.map +0 -1
  371. package/src/capabilities/schema-defs.ts +0 -30
  372. package/src/capabilities/schema-tool.test.ts +0 -44
  373. package/src/capabilities/schema-tools.ts +0 -125
  374. package/src/components/MembersContainer.stories.tsx +0 -30
  375. package/src/components/ObjectDetailsPanel.tsx +0 -77
  376. package/src/components/PersistenceStatus.tsx +0 -83
@@ -4,15 +4,15 @@
4
4
 
5
5
  import { Capabilities, type PluginContext, contributes, createIntent } from '@dxos/app-framework';
6
6
  import { isSpace } from '@dxos/client/echo';
7
- import { Obj, Type } from '@dxos/echo';
8
- import { DataType } from '@dxos/schema';
7
+ import { Obj } from '@dxos/echo';
8
+ import { Collection } from '@dxos/schema';
9
9
 
10
- import { SPACE_PLUGIN } from '../meta';
10
+ import { meta } from '../meta';
11
11
  import { translations } from '../translations';
12
12
  import { SPACE_TYPE, SpaceAction } from '../types';
13
13
  import { SPACES } from '../util';
14
14
 
15
- const COLLECTION_TYPE = Type.getTypename(DataType.Collection);
15
+ const COLLECTION_TYPE = Collection.Collection.typename;
16
16
 
17
17
  // https://stackoverflow.com/a/19016910
18
18
  const DIRECTORY_TYPE = 'text/directory';
@@ -23,8 +23,8 @@ export default (context: PluginContext) =>
23
23
  inputType: SPACES,
24
24
  outputType: DIRECTORY_TYPE,
25
25
  serialize: (node) => ({
26
- name: translations[0]['en-US'][SPACE_PLUGIN]['spaces label'] ?? 'Spaces',
27
- data: translations[0]['en-US'][SPACE_PLUGIN]['spaces label'] ?? 'Spaces',
26
+ name: translations[0]['en-US'][meta.id]['spaces label'] ?? 'Spaces',
27
+ data: translations[0]['en-US'][meta.id]['spaces label'] ?? 'Spaces',
28
28
  type: DIRECTORY_TYPE,
29
29
  }),
30
30
  deserialize: () => {
@@ -35,8 +35,8 @@ export default (context: PluginContext) =>
35
35
  inputType: SPACE_TYPE,
36
36
  outputType: DIRECTORY_TYPE,
37
37
  serialize: (node) => ({
38
- name: node.data.properties.name ?? translations[0]['en-US'][SPACE_PLUGIN]['unnamed space label'],
39
- data: node.data.properties.name ?? translations[0]['en-US'][SPACE_PLUGIN]['unnamed space label'],
38
+ name: node.data.properties.name ?? translations[0]['en-US'][meta.id]['unnamed space label'],
39
+ data: node.data.properties.name ?? translations[0]['en-US'][meta.id]['unnamed space label'],
40
40
  type: DIRECTORY_TYPE,
41
41
  }),
42
42
  deserialize: async (data) => {
@@ -49,14 +49,14 @@ export default (context: PluginContext) =>
49
49
  inputType: COLLECTION_TYPE,
50
50
  outputType: DIRECTORY_TYPE,
51
51
  serialize: (node) => ({
52
- name: node.data.name ?? translations[0]['en-US'][SPACE_PLUGIN]['object name placeholder'],
53
- data: node.data.name ?? translations[0]['en-US'][SPACE_PLUGIN]['object name placeholder'],
52
+ name: node.data.name ?? translations[0]['en-US'][meta.id]['object name placeholder'],
53
+ data: node.data.name ?? translations[0]['en-US'][meta.id]['object name placeholder'],
54
54
  type: DIRECTORY_TYPE,
55
55
  }),
56
56
  deserialize: async (data, ancestors) => {
57
57
  const space = ancestors.find(isSpace);
58
58
  const collection =
59
- ancestors.findLast((ancestor) => Obj.instanceOf(DataType.Collection, ancestor)) ??
59
+ ancestors.findLast((ancestor) => Obj.instanceOf(Collection.Collection, ancestor)) ??
60
60
  space?.properties[COLLECTION_TYPE]?.target;
61
61
  if (!space || !collection) {
62
62
  return;
@@ -66,7 +66,7 @@ export default (context: PluginContext) =>
66
66
  const result = await dispatch(
67
67
  createIntent(SpaceAction.AddObject, {
68
68
  target: collection,
69
- object: Obj.make(DataType.Collection, { name: data.name, objects: [] }),
69
+ object: Obj.make(Collection.Collection, { name: data.name, objects: [] }),
70
70
  }),
71
71
  );
72
72
 
@@ -2,28 +2,39 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { type Schema } from 'effect';
5
+ import type * as Schema from 'effect/Schema';
6
6
 
7
- import { type AnyIntentChain, defineCapability, type Label } from '@dxos/app-framework';
7
+ import { type AnyIntentChain, type Label, defineCapability } from '@dxos/app-framework';
8
8
  import { type Space } from '@dxos/react-client/echo';
9
- import { type DataType } from '@dxos/schema';
10
- import { type Position, type DeepReadonly } from '@dxos/util';
9
+ import { type Collection } from '@dxos/schema';
10
+ import { type DeepReadonly, type Position } from '@dxos/util';
11
11
 
12
- import { SPACE_PLUGIN } from '../meta';
13
- import { type ObjectForm, type PluginState } from '../types';
12
+ import { meta } from '../meta';
13
+ import { type PluginState } from '../types';
14
14
 
15
15
  export namespace SpaceCapabilities {
16
- export const State = defineCapability<DeepReadonly<PluginState>>(`${SPACE_PLUGIN}/capability/state`);
17
- export const MutableState = defineCapability<PluginState>(`${SPACE_PLUGIN}/capability/state`);
16
+ export const State = defineCapability<DeepReadonly<PluginState>>(`${meta.id}/capability/state`);
17
+ export const MutableState = defineCapability<PluginState>(`${meta.id}/capability/state`);
18
18
 
19
19
  export type SettingsSection = { id: string; label: Label; position?: Position };
20
- export const SettingsSection = defineCapability<SettingsSection>(`${SPACE_PLUGIN}/capability/settings-section`);
21
-
22
- export type OnSpaceCreated = (params: { space: Space; rootCollection: DataType.Collection }) => AnyIntentChain;
23
- export const OnSpaceCreated = defineCapability<OnSpaceCreated>(`${SPACE_PLUGIN}/capability/on-space-created`);
24
-
25
- export type OnSchemaAdded = (params: { space: Space; schema: Schema.Schema.AnyNoContext }) => AnyIntentChain;
26
- export const OnSchemaAdded = defineCapability<OnSchemaAdded>(`${SPACE_PLUGIN}/capability/on-schema-added`);
27
-
28
- export const ObjectForm = defineCapability<ObjectForm<any>>(`${SPACE_PLUGIN}/capability/object-form`);
20
+ export const SettingsSection = defineCapability<SettingsSection>(`${meta.id}/capability/settings-section`);
21
+
22
+ export type OnCreateSpace = (params: {
23
+ space: Space;
24
+ isDefault: boolean;
25
+ rootCollection: Collection.Collection;
26
+ }) => AnyIntentChain;
27
+ export const OnCreateSpace = defineCapability<OnCreateSpace>(`${meta.id}/capability/on-space-created`);
28
+
29
+ export type OnSchemaAdded = (params: {
30
+ space: Space;
31
+ schema: Schema.Schema.AnyNoContext;
32
+ // TODO(wittjosiah): This is leaky.
33
+ show?: boolean;
34
+ }) => AnyIntentChain;
35
+ export const OnSchemaAdded = defineCapability<OnSchemaAdded>(`${meta.id}/capability/on-schema-added`);
36
+
37
+ // TODO(wittjosiah): Replace with migrations, this is not a sustainable solution.
38
+ export type HandleRepair = (params: { space: Space; isDefault: boolean }) => Promise<void>;
39
+ export const Repair = defineCapability<HandleRepair>(`${meta.id}/capability/repair`);
29
40
  }
@@ -2,11 +2,11 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { contributes, type PluginContext, Capabilities } from '@dxos/app-framework';
5
+ import { Capabilities, type PluginContext, contributes } from '@dxos/app-framework';
6
6
  import { Obj, Ref } from '@dxos/echo';
7
7
  import { Migrations } from '@dxos/migrations';
8
8
  import { ClientCapabilities } from '@dxos/plugin-client';
9
- import { DataType } from '@dxos/schema';
9
+ import { Collection } from '@dxos/schema';
10
10
 
11
11
  export default async (context: PluginContext) => {
12
12
  const client = context.getCapability(ClientCapabilities.Client);
@@ -16,7 +16,7 @@ export default async (context: PluginContext) => {
16
16
  await defaultSpace.waitUntilReady();
17
17
 
18
18
  // Create root collection structure.
19
- defaultSpace.properties[DataType.Collection.typename] = Ref.make(Obj.make(DataType.Collection, { objects: [] }));
19
+ defaultSpace.properties[Collection.Collection.typename] = Ref.make(Obj.make(Collection.Collection, { objects: [] }));
20
20
  if (Migrations.versionProperty) {
21
21
  defaultSpace.properties[Migrations.versionProperty] = Migrations.targetVersion;
22
22
  }
@@ -10,8 +10,7 @@ export const IdentityCreated = lazy(() => import('./identity-created'));
10
10
  export const IntentResolver = lazy(() => import('./intent-resolver'));
11
11
  export const ReactRoot = lazy(() => import('./react-root'));
12
12
  export const ReactSurface = lazy(() => import('./react-surface'));
13
- export const SchemaDefs = lazy(() => import('./schema-defs'));
14
- export const SchemaTools = lazy(() => import('./schema-tools'));
13
+ export const Repair = lazy(() => import('./repair'));
15
14
  export const SpaceSettings = lazy(() => import('./settings'));
16
15
  export const SpaceState = lazy(() => import('./state'));
17
16
  export const SpacesReady = lazy(() => import('./spaces-ready'));
@@ -2,44 +2,50 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { Effect } from 'effect';
5
+ import * as Effect from 'effect/Effect';
6
6
 
7
7
  import {
8
8
  Capabilities,
9
+ type Label,
9
10
  LayoutAction,
10
11
  type PluginContext,
11
12
  contributes,
12
13
  createIntent,
13
14
  createResolver,
14
15
  } from '@dxos/app-framework';
15
- import { Obj, Ref, Relation, Type } from '@dxos/echo';
16
+ import { Obj, Query, Ref, Relation, Type } from '@dxos/echo';
17
+ import { Serializer } from '@dxos/echo-db';
18
+ import { DatabaseService } from '@dxos/functions';
16
19
  import { invariant } from '@dxos/invariant';
17
20
  import { Migrations } from '@dxos/migrations';
18
21
  import { ClientCapabilities } from '@dxos/plugin-client';
19
22
  import { ObservabilityAction } from '@dxos/plugin-observability/types';
20
23
  import { EdgeReplicationSetting } from '@dxos/protocols/proto/dxos/echo/metadata';
21
- import { isSpace, getSpace, SpaceState, fullyQualifiedId } from '@dxos/react-client/echo';
24
+ import { SpaceState, getSpace, isSpace } from '@dxos/react-client/echo';
22
25
  import { Invitation, InvitationEncoder } from '@dxos/react-client/invitations';
23
26
  import { ATTENDABLE_PATH_SEPARATOR } from '@dxos/react-ui-attention';
24
- import { DataType, ProjectionModel } from '@dxos/schema';
27
+ import { iconValues } from '@dxos/react-ui-pickers';
28
+ import { hues } from '@dxos/react-ui-theme';
29
+ import { Collection, ProjectionModel, getTypenameFromQuery } from '@dxos/schema';
25
30
 
26
- import { SpaceCapabilities } from './capabilities';
27
31
  import {
28
32
  CREATE_OBJECT_DIALOG,
29
33
  CREATE_SPACE_DIALOG,
30
- JOIN_DIALOG,
31
- POPOVER_RENAME_OBJECT,
32
- POPOVER_RENAME_SPACE,
33
34
  type CreateObjectDialogProps,
35
+ JOIN_DIALOG,
34
36
  type JoinDialogProps,
37
+ OBJECT_RENAME_POPOVER,
38
+ SPACE_RENAME_POPOVER,
35
39
  } from '../components';
36
40
  import { SpaceEvents } from '../events';
37
- import { SPACE_PLUGIN } from '../meta';
41
+ import { meta } from '../meta';
38
42
  import { CollectionAction, SpaceAction } from '../types';
39
- import { cloneObject, COMPOSER_SPACE_LOCK, getNestedObjects } from '../util';
43
+ import { COMPOSER_SPACE_LOCK, cloneObject, getNestedObjects } from '../util';
44
+
45
+ import { SpaceCapabilities } from './capabilities';
40
46
 
41
47
  // TODO(wittjosiah): Remove.
42
- const SPACE_MAX_OBJECTS = 500;
48
+ const SPACE_MAX_OBJECTS = 750;
43
49
 
44
50
  type IntentResolverOptions = {
45
51
  context: PluginContext;
@@ -68,8 +74,10 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
68
74
  }),
69
75
  createResolver({
70
76
  intent: SpaceAction.Create,
71
- resolve: async ({ name, hue, icon, edgeReplication }) => {
77
+ resolve: async ({ name, hue: hue_, icon: icon_, edgeReplication }) => {
72
78
  const client = context.getCapability(ClientCapabilities.Client);
79
+ const hue = hue_ ?? hues[Math.floor(Math.random() * hues.length)];
80
+ const icon = icon_ ?? iconValues[Math.floor(Math.random() * iconValues.length)];
73
81
  const space = await client.spaces.create({ name, hue, icon });
74
82
  if (edgeReplication) {
75
83
  await space.internal.setEdgeReplicationPreference(EdgeReplicationSetting.ENABLED);
@@ -77,8 +85,8 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
77
85
  await space.waitUntilReady();
78
86
 
79
87
  // Create root collection.
80
- const collection = Obj.make(DataType.Collection, { objects: [] });
81
- space.properties[DataType.Collection.typename] = Ref.make(collection);
88
+ const collection = Obj.make(Collection.Collection, { objects: [] });
89
+ space.properties[Collection.Collection.typename] = Ref.make(collection);
82
90
 
83
91
  // Set current migration version.
84
92
  if (Migrations.versionProperty) {
@@ -86,16 +94,13 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
86
94
  }
87
95
 
88
96
  // Create records smart collection.
89
- const records = Obj.make(DataType.QueryCollection, {
90
- query: { typename: DataType.StoredSchema.typename },
91
- });
92
- collection.objects.push(Ref.make(records));
97
+ collection.objects.push(Ref.make(Collection.makeManaged({ key: Type.getTypename(Type.PersistentType) })));
93
98
 
94
99
  // Allow other plugins to add default content.
95
100
  await context.activatePromise(SpaceEvents.SpaceCreated);
96
- const onSpaceCreatedCallbacks = context.getCapabilities(SpaceCapabilities.OnSpaceCreated);
97
- const spaceCreatedIntents = onSpaceCreatedCallbacks.map((onSpaceCreated) =>
98
- onSpaceCreated({ space, rootCollection: collection }),
101
+ const onCreateSpaceCallbacks = context.getCapabilities(SpaceCapabilities.OnCreateSpace);
102
+ const spaceCreatedIntents = onCreateSpaceCallbacks.map((onCreateSpace) =>
103
+ onCreateSpace({ space, isDefault: false, rootCollection: collection }),
99
104
  );
100
105
 
101
106
  return {
@@ -253,7 +258,7 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
253
258
  intents: [
254
259
  createIntent(LayoutAction.UpdatePopover, {
255
260
  part: 'popover',
256
- subject: POPOVER_RENAME_SPACE,
261
+ subject: SPACE_RENAME_POPOVER,
257
262
  options: {
258
263
  anchorId: `dxos.org/ui/${caller}/${space.id}`,
259
264
  props: space,
@@ -320,9 +325,20 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
320
325
  };
321
326
  },
322
327
  }),
328
+ createResolver({
329
+ intent: SpaceAction.Snapshot,
330
+ resolve: async ({ space, query }) => {
331
+ const backup = await new Serializer().export(space.db, query && Query.fromAst(query));
332
+ return {
333
+ data: {
334
+ snapshot: new Blob([JSON.stringify(backup, null, 2)], { type: 'application/json' }),
335
+ },
336
+ };
337
+ },
338
+ }),
323
339
  createResolver({
324
340
  intent: SpaceAction.UseStaticSchema,
325
- resolve: async ({ space, typename }) => {
341
+ resolve: async ({ space, typename, show }) => {
326
342
  const client = context.getCapability(ClientCapabilities.Client);
327
343
  const schema = client.graph.schemaRegistry.schemas.find((schema) => Type.getTypename(schema) === typename);
328
344
  invariant(schema, `Schema not found: ${typename}`);
@@ -337,7 +353,7 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
337
353
 
338
354
  await context.activatePromise(SpaceEvents.SchemaAdded);
339
355
  const onSchemaAdded = context.getCapabilities(SpaceCapabilities.OnSchemaAdded);
340
- const schemaAddedIntents = onSchemaAdded.map((onSchemaAdded) => onSchemaAdded({ space, schema }));
356
+ const schemaAddedIntents = onSchemaAdded.map((onSchemaAdded) => onSchemaAdded({ space, schema, show }));
341
357
 
342
358
  return {
343
359
  data: {},
@@ -360,15 +376,21 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
360
376
  }),
361
377
  createResolver({
362
378
  intent: SpaceAction.AddSchema,
363
- resolve: async ({ space, name, schema: schemaInput }) => {
379
+ resolve: async ({ space, name, typename, version, schema: schemaInput, show }) => {
364
380
  const [schema] = await space.db.schemaRegistry.register([schemaInput]);
365
381
  if (name) {
366
382
  schema.storedSchema.name = name;
367
383
  }
384
+ if (typename) {
385
+ schema.storedSchema.typename = typename;
386
+ }
387
+ if (version) {
388
+ schema.storedSchema.version = version;
389
+ }
368
390
 
369
391
  await context.activatePromise(SpaceEvents.SchemaAdded);
370
392
  const onSchemaAdded = context.getCapabilities(SpaceCapabilities.OnSchemaAdded);
371
- const schemaAddedIntents = onSchemaAdded.map((onSchemaAdded) => onSchemaAdded({ space, schema }));
393
+ const schemaAddedIntents = onSchemaAdded.map((onSchemaAdded) => onSchemaAdded({ space, schema, show }));
372
394
 
373
395
  return {
374
396
  data: {
@@ -399,15 +421,16 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
399
421
  resolve: async ({ view, fieldId, deletionData }, undo) => {
400
422
  const space = getSpace(view);
401
423
  invariant(space);
402
- invariant(view.query.typename);
403
- const schema = await space.db.schemaRegistry.query({ typename: view.query.typename }).firstOrUndefined();
424
+ const typename = getTypenameFromQuery(view.query.ast);
425
+ invariant(typename);
426
+ const schema = await space.db.schemaRegistry.query({ typename }).firstOrUndefined();
404
427
  invariant(schema);
405
428
  const projection = new ProjectionModel(schema.jsonSchema, view.projection);
406
429
  if (!undo) {
407
430
  const { deleted, index } = projection.deleteFieldProjection(fieldId);
408
431
  return {
409
432
  undoable: {
410
- message: ['field deleted label', { ns: SPACE_PLUGIN }],
433
+ message: ['field deleted label', { ns: meta.id }],
411
434
  data: { deletionData: { ...deleted, index } },
412
435
  },
413
436
  };
@@ -419,7 +442,7 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
419
442
  }),
420
443
  createResolver({
421
444
  intent: SpaceAction.OpenCreateObject,
422
- resolve: ({ target, typename, navigable = true, onCreateObject }) => {
445
+ resolve: ({ target, views, typename, initialFormValues, navigable = true, onCreateObject }) => {
423
446
  const state = context.getCapability(SpaceCapabilities.State);
424
447
 
425
448
  return {
@@ -431,13 +454,15 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
431
454
  blockAlign: 'start',
432
455
  props: {
433
456
  target,
457
+ views,
434
458
  typename,
459
+ initialFormValues,
435
460
  onCreateObject,
436
461
  shouldNavigate: navigable
437
462
  ? (object: Obj.Any) => {
438
- const isCollection = Obj.instanceOf(DataType.Collection, object);
439
- const isQueryCollection = Obj.instanceOf(DataType.QueryCollection, object);
440
- return (!isCollection && !isQueryCollection) || state.navigableCollections;
463
+ const isCollection = Obj.instanceOf(Collection.Collection, object);
464
+ const isSystemCollection = Obj.instanceOf(Collection.Managed, object);
465
+ return (!isCollection && !isSystemCollection) || state.navigableCollections;
441
466
  }
442
467
  : () => false,
443
468
  } satisfies Partial<CreateObjectDialogProps>,
@@ -460,13 +485,13 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
460
485
  createIntent(LayoutAction.AddToast, {
461
486
  part: 'toast',
462
487
  subject: {
463
- id: `${SPACE_PLUGIN}/space-limit`,
464
- title: ['space limit label', { ns: SPACE_PLUGIN }],
465
- description: ['space limit description', { ns: SPACE_PLUGIN }],
488
+ id: `${meta.id}/space-limit`,
489
+ title: ['space limit label', { ns: meta.id }],
490
+ description: ['space limit description', { ns: meta.id }],
466
491
  duration: 5_000,
467
492
  icon: 'ph--warning--regular',
468
- actionLabel: ['remove deleted objects label', { ns: SPACE_PLUGIN }],
469
- actionAlt: ['remove deleted objects alt', { ns: SPACE_PLUGIN }],
493
+ actionLabel: ['remove deleted objects label', { ns: meta.id }],
494
+ actionAlt: ['remove deleted objects alt', { ns: meta.id }],
470
495
  closeLabel: ['close label', { ns: 'os' }],
471
496
  onAction: () => space.db.coreDatabase.unlinkDeletedObjects(),
472
497
  },
@@ -485,25 +510,18 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
485
510
  };
486
511
  }
487
512
 
488
- if (Obj.instanceOf(DataType.Collection, target)) {
489
- target.objects.push(Ref.make(object));
490
- } else if (isSpace(target) && hidden) {
491
- space.db.add(object);
492
- } else if (isSpace(target)) {
493
- const collection = space.properties[DataType.Collection.typename]?.target;
494
- if (Obj.instanceOf(DataType.Collection, collection)) {
495
- collection.objects.push(Ref.make(object));
496
- } else {
497
- // TODO(wittjosiah): Can't add non-echo objects by including in a collection because of types.
498
- const collection = Obj.make(DataType.Collection, { objects: [Ref.make(object)] });
499
- space.properties[DataType.Collection.typename] = Ref.make(collection);
500
- }
501
- }
513
+ await Effect.gen(function* () {
514
+ yield* Collection.add({
515
+ object,
516
+ target: isSpace(target) ? undefined : target,
517
+ hidden,
518
+ });
519
+ }).pipe(Effect.provide(DatabaseService.layer(space.db)), Effect.runPromise);
502
520
 
503
521
  return {
504
522
  data: {
505
- id: fullyQualifiedId(object),
506
- subject: [fullyQualifiedId(object)],
523
+ id: Obj.getDXN(object).toString(),
524
+ subject: [Obj.getDXN(object).toString()],
507
525
  object,
508
526
  },
509
527
  intents: [
@@ -552,26 +570,26 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
552
570
  const openObjectIds = new Set<string>(layout.active);
553
571
 
554
572
  if (!undo) {
555
- const parentCollection: DataType.Collection =
556
- target ?? space.properties[DataType.Collection.typename]?.target;
573
+ const parentCollection: Collection.Collection =
574
+ target ?? space.properties[Collection.Collection.typename]?.target;
557
575
  const nestedObjectsList = await Promise.all(objects.map((obj) => getNestedObjects(obj, resolve)));
558
576
 
559
577
  const deletionData = {
560
578
  objects,
561
579
  parentCollection,
562
580
  indices: objects.map((obj) =>
563
- Obj.instanceOf(DataType.Collection, parentCollection)
581
+ Obj.instanceOf(Collection.Collection, parentCollection)
564
582
  ? parentCollection.objects.findIndex((object) => object.target === obj)
565
583
  : -1,
566
584
  ),
567
585
  nestedObjectsList,
568
586
  wasActive: objects
569
587
  .flatMap((obj, i) => [obj, ...nestedObjectsList[i]])
570
- .map((obj) => fullyQualifiedId(obj))
588
+ .map((obj) => Obj.getDXN(obj).toString())
571
589
  .filter((id) => openObjectIds.has(id)),
572
590
  } satisfies SpaceAction.DeletionData;
573
591
 
574
- if (Obj.instanceOf(DataType.Collection, deletionData.parentCollection)) {
592
+ if (Obj.instanceOf(Collection.Collection, deletionData.parentCollection)) {
575
593
  [...deletionData.indices]
576
594
  .sort((a, b) => b - a)
577
595
  .forEach((index: number) => {
@@ -586,16 +604,17 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
586
604
  });
587
605
  objects.forEach((obj) => space.db.remove(obj));
588
606
 
589
- const undoMessageKey = objects.some((obj) => Obj.instanceOf(DataType.Collection, obj))
590
- ? 'collection deleted label'
591
- : objects.length > 1
592
- ? 'objects deleted label'
593
- : 'object deleted label';
607
+ // TODO(wittjosiah): Once we can compose translations outside of react, use count instead.
608
+ // ['deleted label', { ns: meta.id, typename: ['typename label', { ns: typename, count: objects.length }] }]
609
+ const undoMessageLabel: Label =
610
+ objects.length === 1
611
+ ? ['object deleted label', { ns: Obj.getTypename(objects[0]) ?? meta.id, defaultValue: 'Object deleted' }]
612
+ : ['objects deleted label', { ns: meta.id }];
594
613
 
595
614
  return {
596
615
  undoable: {
597
616
  // TODO(ZaymonFC): Pluralize if more than one object.
598
- message: [undoMessageKey, { ns: SPACE_PLUGIN }],
617
+ message: undoMessageLabel,
599
618
  data: { deletionData },
600
619
  },
601
620
  intents:
@@ -613,19 +632,19 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
613
632
  if (
614
633
  deletionData?.objects?.length &&
615
634
  deletionData.objects.every(Obj.isObject) &&
616
- Obj.instanceOf(DataType.Collection, deletionData.parentCollection)
635
+ Obj.instanceOf(Collection.Collection, deletionData.parentCollection)
617
636
  ) {
618
637
  // Restore the object to the space.
619
- const restoredObjects = deletionData.objects.map((obj: Type.Expando) => space.db.add(obj));
638
+ const restoredObjects = deletionData.objects.map((obj: Obj.Any) => space.db.add(obj));
620
639
 
621
640
  // Restore nested objects to the space.
622
- deletionData.nestedObjectsList.flat().forEach((obj: Type.Expando) => {
641
+ deletionData.nestedObjectsList.flat().forEach((obj: Obj.Any) => {
623
642
  space.db.add(obj);
624
643
  });
625
644
 
626
645
  deletionData.indices.forEach((index: number, i: number) => {
627
646
  if (index !== -1) {
628
- deletionData.parentCollection.objects.splice(index, 0, Ref.make(restoredObjects[i] as Type.Expando));
647
+ deletionData.parentCollection.objects.splice(index, 0, Ref.make(restoredObjects[i] as Obj.Any));
629
648
  }
630
649
  });
631
650
 
@@ -650,9 +669,9 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
650
669
  intents: [
651
670
  createIntent(LayoutAction.UpdatePopover, {
652
671
  part: 'popover',
653
- subject: POPOVER_RENAME_OBJECT,
672
+ subject: OBJECT_RENAME_POPOVER,
654
673
  options: {
655
- anchorId: `dxos.org/ui/${caller}/${fullyQualifiedId(object)}`,
674
+ anchorId: `dxos.org/ui/${caller}/${Obj.getDXN(object).toString()}`,
656
675
  props: object,
657
676
  },
658
677
  }),
@@ -664,7 +683,6 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
664
683
  resolve: async ({ object, target }) => {
665
684
  const space = isSpace(target) ? target : getSpace(target);
666
685
  invariant(space, 'Space not found.');
667
-
668
686
  const newObject = await cloneObject(object, resolve, space);
669
687
  return {
670
688
  intents: [createIntent(SpaceAction.AddObject, { object: newObject, target })],
@@ -681,13 +699,7 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
681
699
  createResolver({
682
700
  intent: CollectionAction.Create,
683
701
  resolve: async ({ name }) => ({
684
- data: { object: Obj.make(DataType.Collection, { name, objects: [] }) },
685
- }),
686
- }),
687
- createResolver({
688
- intent: CollectionAction.CreateQueryCollection,
689
- resolve: async ({ name, typename }) => ({
690
- data: { object: Obj.make(DataType.QueryCollection, { name, query: { typename } }) },
702
+ data: { object: Obj.make(Collection.Collection, { name, objects: [] }) },
691
703
  }),
692
704
  }),
693
705
  ]);
@@ -4,15 +4,17 @@
4
4
 
5
5
  import React from 'react';
6
6
 
7
- import { Capabilities, contributes, useCapability } from '@dxos/app-framework';
7
+ import { Capabilities, contributes } from '@dxos/app-framework';
8
+ import { useCapability } from '@dxos/app-framework/react';
8
9
 
9
- import { SpaceCapabilities } from './capabilities';
10
10
  import { AwaitingObject } from '../components';
11
- import { SPACE_PLUGIN } from '../meta';
11
+ import { meta } from '../meta';
12
+
13
+ import { SpaceCapabilities } from './capabilities';
12
14
 
13
15
  export default () =>
14
16
  contributes(Capabilities.ReactRoot, {
15
- id: SPACE_PLUGIN,
17
+ id: meta.id,
16
18
  root: () => {
17
19
  const state = useCapability(SpaceCapabilities.State);
18
20
  return state.awaiting ? <AwaitingObject id={state.awaiting} /> : null;