@dxos/plugin-space 0.8.4-main.5ea62a8 → 0.8.4-main.66e292d

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 (357) 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-3A6KBYWT.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-DCY3W36E.mjs → chunk-GJOZILGC.mjs} +210 -142
  18. package/dist/lib/browser/chunk-GJOZILGC.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-J6YZG77T.mjs → chunk-KCZ527AM.mjs} +641 -500
  20. package/dist/lib/browser/chunk-KCZ527AM.mjs.map +7 -0
  21. package/dist/lib/browser/{chunk-ELJDGQTO.mjs → chunk-P25R3AOK.mjs} +35 -5
  22. package/dist/lib/browser/chunk-P25R3AOK.mjs.map +7 -0
  23. package/dist/lib/browser/{chunk-WAXS2ZVX.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-T6ZNVE7S.mjs → identity-created-NAXTPQXE.mjs} +5 -5
  30. package/dist/lib/browser/identity-created-NAXTPQXE.mjs.map +7 -0
  31. package/dist/lib/browser/index.mjs +88 -131
  32. package/dist/lib/browser/index.mjs.map +3 -3
  33. package/dist/lib/browser/{intent-resolver-7E3IZIJS.mjs → intent-resolver-RZEWNJ2K.mjs} +105 -100
  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-GL4CE2F4.mjs → react-surface-VOETEAG3.mjs} +91 -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-B6MMHLPS.mjs → settings-TRLI52I5.mjs} +5 -5
  43. package/dist/lib/browser/{settings-B6MMHLPS.mjs.map → settings-TRLI52I5.mjs.map} +1 -1
  44. package/dist/lib/browser/{spaces-ready-QVABOCO3.mjs → spaces-ready-OHGCWZHQ.mjs} +22 -15
  45. package/dist/lib/browser/spaces-ready-OHGCWZHQ.mjs.map +7 -0
  46. package/dist/lib/browser/{state-2RGW7FQG.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-M45TH5LR.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-Q6AAQLQG.mjs → chunk-7EV4SN47.mjs} +34 -5
  62. package/dist/lib/node-esm/chunk-7EV4SN47.mjs.map +7 -0
  63. package/dist/lib/node-esm/{chunk-HYIZVPOA.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-AUQ3SKL2.mjs → chunk-I6FZP42D.mjs} +210 -142
  70. package/dist/lib/node-esm/chunk-I6FZP42D.mjs.map +7 -0
  71. package/dist/lib/node-esm/{chunk-ZCEH2VYE.mjs → chunk-JAMGJUFU.mjs} +641 -500
  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-AL7NNCKH.mjs → identity-created-OXLKCJE3.mjs} +5 -5
  78. package/dist/lib/node-esm/identity-created-OXLKCJE3.mjs.map +7 -0
  79. package/dist/lib/node-esm/index.mjs +88 -131
  80. package/dist/lib/node-esm/index.mjs.map +3 -3
  81. package/dist/lib/node-esm/{intent-resolver-UVO4MKWX.mjs → intent-resolver-4PHJWDXW.mjs} +105 -100
  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-5EKYI66P.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-IOC6YSVQ.mjs → react-surface-J3XDMU2D.mjs} +91 -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-IOFU6EAS.mjs → settings-MNQTKHL7.mjs} +5 -5
  91. package/dist/lib/node-esm/{settings-IOFU6EAS.mjs.map → settings-MNQTKHL7.mjs.map} +1 -1
  92. package/dist/lib/node-esm/{spaces-ready-MS6GHPFR.mjs → spaces-ready-ZPU24DA2.mjs} +22 -15
  93. package/dist/lib/node-esm/spaces-ready-ZPU24DA2.mjs.map +7 -0
  94. package/dist/lib/node-esm/{state-7VBVBGNS.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.map +1 -1
  100. package/dist/types/src/capabilities/capabilities.d.ts +13 -7
  101. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  102. package/dist/types/src/capabilities/index.d.ts +1 -1
  103. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  104. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  105. package/dist/types/src/capabilities/react-root.d.ts.map +1 -1
  106. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  107. package/dist/types/src/capabilities/repair.d.ts +4 -0
  108. package/dist/types/src/capabilities/repair.d.ts.map +1 -0
  109. package/dist/types/src/capabilities/spaces-ready.d.ts.map +1 -1
  110. package/dist/types/src/components/AwaitingObject.d.ts.map +1 -1
  111. package/dist/types/src/components/CollectionArticle.d.ts +6 -0
  112. package/dist/types/src/components/CollectionArticle.d.ts.map +1 -0
  113. package/dist/types/src/components/CollectionSection.d.ts +3 -4
  114. package/dist/types/src/components/CollectionSection.d.ts.map +1 -1
  115. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts +1 -1
  116. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
  117. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts +218 -215
  118. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts.map +1 -1
  119. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +16 -9
  120. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
  121. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts +1 -1
  122. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts.map +1 -1
  123. package/dist/types/src/components/{JoinDialog.d.ts → JoinDialog/JoinDialog.d.ts} +1 -1
  124. package/dist/types/src/components/JoinDialog/JoinDialog.d.ts.map +1 -0
  125. package/dist/types/src/components/JoinDialog/index.d.ts +2 -0
  126. package/dist/types/src/components/JoinDialog/index.d.ts.map +1 -0
  127. package/dist/types/src/components/MembersContainer/MembersContainer.d.ts.map +1 -0
  128. package/dist/types/src/components/MembersContainer/MembersContainer.stories.d.ts +1591 -0
  129. package/dist/types/src/components/{MembersContainer.stories.d.ts.map → MembersContainer/MembersContainer.stories.d.ts.map} +1 -1
  130. package/dist/types/src/components/MembersContainer/index.d.ts +2 -0
  131. package/dist/types/src/components/MembersContainer/index.d.ts.map +1 -0
  132. package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts +9 -0
  133. package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts.map +1 -0
  134. package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts +10 -0
  135. package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts.map +1 -0
  136. package/dist/types/src/components/ObjectDetailsPanel/index.d.ts +3 -0
  137. package/dist/types/src/components/ObjectDetailsPanel/index.d.ts.map +1 -0
  138. package/dist/types/src/components/ObjectRenamePopover/ObjectRenamePopover.d.ts +7 -0
  139. package/dist/types/src/components/ObjectRenamePopover/ObjectRenamePopover.d.ts.map +1 -0
  140. package/dist/types/src/components/ObjectRenamePopover/index.d.ts +2 -0
  141. package/dist/types/src/components/ObjectRenamePopover/index.d.ts.map +1 -0
  142. package/dist/types/src/components/ObjectSettings/AdvancedObjectSettings.d.ts.map +1 -1
  143. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts +2 -2
  144. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts.map +1 -1
  145. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts +1424 -0
  146. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts.map +1 -0
  147. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts +3 -3
  148. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts.map +1 -1
  149. package/dist/types/src/components/ObjectSettings/ObjectSettingsContainer.d.ts.map +1 -1
  150. package/dist/types/src/components/ObjectSettings/index.d.ts +2 -1
  151. package/dist/types/src/components/ObjectSettings/index.d.ts.map +1 -1
  152. package/dist/types/src/components/RecordArticle.d.ts +5 -0
  153. package/dist/types/src/components/RecordArticle.d.ts.map +1 -0
  154. package/dist/types/src/components/{MembersContainer.stories.d.ts → RecordArticle.stories.d.ts} +219 -216
  155. package/dist/types/src/components/RecordArticle.stories.d.ts.map +1 -0
  156. package/dist/types/src/components/SchemaContainer.d.ts +2 -2
  157. package/dist/types/src/components/SchemaContainer.d.ts.map +1 -1
  158. package/dist/types/src/components/SpacePluginSettings.d.ts.map +1 -1
  159. package/dist/types/src/components/{SpacePresence.d.ts → SpacePresence/SpacePresence.d.ts} +6 -5
  160. package/dist/types/src/components/SpacePresence/SpacePresence.d.ts.map +1 -0
  161. package/dist/types/src/components/{SpacePresence.stories.d.ts → SpacePresence/SpacePresence.stories.d.ts} +220 -217
  162. package/dist/types/src/components/{SpacePresence.stories.d.ts.map → SpacePresence/SpacePresence.stories.d.ts.map} +1 -1
  163. package/dist/types/src/components/SpacePresence/index.d.ts +2 -0
  164. package/dist/types/src/components/SpacePresence/index.d.ts.map +1 -0
  165. package/dist/types/src/components/SpaceRenamePopover/SpaceRenamePopover.d.ts +7 -0
  166. package/dist/types/src/components/SpaceRenamePopover/SpaceRenamePopover.d.ts.map +1 -0
  167. package/dist/types/src/components/SpaceRenamePopover/index.d.ts +2 -0
  168. package/dist/types/src/components/SpaceRenamePopover/index.d.ts.map +1 -0
  169. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
  170. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts +218 -215
  171. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts.map +1 -1
  172. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
  173. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts +219 -216
  174. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
  175. package/dist/types/src/components/ViewEditor.d.ts +3 -4
  176. package/dist/types/src/components/ViewEditor.d.ts.map +1 -1
  177. package/dist/types/src/components/index.d.ts +10 -17
  178. package/dist/types/src/components/index.d.ts.map +1 -1
  179. package/dist/types/src/events.d.ts.map +1 -1
  180. package/dist/types/src/helpers/index.d.ts +2 -0
  181. package/dist/types/src/helpers/index.d.ts.map +1 -0
  182. package/dist/types/src/helpers/query.d.ts +8 -0
  183. package/dist/types/src/helpers/query.d.ts.map +1 -0
  184. package/dist/types/src/helpers/query.test.d.ts +2 -0
  185. package/dist/types/src/helpers/query.test.d.ts.map +1 -0
  186. package/dist/types/src/hooks/index.d.ts +1 -0
  187. package/dist/types/src/hooks/index.d.ts.map +1 -1
  188. package/dist/types/src/hooks/useActiveSpace.d.ts.map +1 -1
  189. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts +1 -1
  190. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts.map +1 -1
  191. package/dist/types/src/hooks/usePath.d.ts +1 -1
  192. package/dist/types/src/hooks/usePath.d.ts.map +1 -1
  193. package/dist/types/src/hooks/useTypeOptions.d.ts +10 -0
  194. package/dist/types/src/hooks/useTypeOptions.d.ts.map +1 -0
  195. package/dist/types/src/index.d.ts +1 -0
  196. package/dist/types/src/index.d.ts.map +1 -1
  197. package/dist/types/src/meta.d.ts +0 -1
  198. package/dist/types/src/meta.d.ts.map +1 -1
  199. package/dist/types/src/translations.d.ts +1261 -67
  200. package/dist/types/src/translations.d.ts.map +1 -1
  201. package/dist/types/src/types/form.d.ts +24 -0
  202. package/dist/types/src/types/form.d.ts.map +1 -0
  203. package/dist/types/src/types/index.d.ts +1 -0
  204. package/dist/types/src/types/index.d.ts.map +1 -1
  205. package/dist/types/src/types/types.d.ts +82 -142
  206. package/dist/types/src/types/types.d.ts.map +1 -1
  207. package/dist/types/src/util.d.ts +21 -34
  208. package/dist/types/src/util.d.ts.map +1 -1
  209. package/dist/types/tsconfig.tsbuildinfo +1 -1
  210. package/package.json +68 -59
  211. package/src/SpacePlugin.ts +181 -215
  212. package/src/capabilities/app-graph-builder.ts +205 -267
  213. package/src/capabilities/app-graph-serializer.ts +12 -12
  214. package/src/capabilities/capabilities.ts +26 -16
  215. package/src/capabilities/identity-created.ts +2 -2
  216. package/src/capabilities/index.ts +1 -1
  217. package/src/capabilities/intent-resolver.ts +78 -75
  218. package/src/capabilities/react-root.tsx +4 -3
  219. package/src/capabilities/react-surface.tsx +95 -145
  220. package/src/capabilities/repair.ts +57 -0
  221. package/src/capabilities/spaces-ready.ts +15 -6
  222. package/src/capabilities/state.ts +2 -2
  223. package/src/components/AwaitingObject.tsx +12 -14
  224. package/src/components/{CollectionMain.tsx → CollectionArticle.tsx} +7 -6
  225. package/src/components/CollectionSection.tsx +8 -6
  226. package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +11 -11
  227. package/src/components/CreateDialog/CreateObjectDialog.tsx +63 -43
  228. package/src/components/CreateDialog/CreateObjectPanel.tsx +38 -31
  229. package/src/components/CreateDialog/CreateSpaceDialog.tsx +30 -11
  230. package/src/components/{JoinDialog.tsx → JoinDialog/JoinDialog.tsx} +26 -10
  231. package/src/components/JoinDialog/index.ts +5 -0
  232. package/src/components/{MembersContainer.stories.tsx → MembersContainer/MembersContainer.stories.tsx} +7 -6
  233. package/src/components/{MembersContainer.tsx → MembersContainer/MembersContainer.tsx} +16 -14
  234. package/src/components/MembersContainer/index.ts +5 -0
  235. package/src/components/MenuFooter.tsx +2 -2
  236. package/src/components/ObjectDetailsPanel/ObjectDetailsPanel.tsx +51 -0
  237. package/src/components/ObjectDetailsPanel/ObjectForm.tsx +72 -0
  238. package/src/components/ObjectDetailsPanel/index.ts +7 -0
  239. package/src/components/{PopoverRenameObject.tsx → ObjectRenamePopover/ObjectRenamePopover.tsx} +6 -6
  240. package/src/components/ObjectRenamePopover/index.ts +5 -0
  241. package/src/components/ObjectSettings/AdvancedObjectSettings.tsx +6 -7
  242. package/src/components/ObjectSettings/BaseObjectSettings.stories.tsx +63 -0
  243. package/src/components/ObjectSettings/BaseObjectSettings.tsx +90 -26
  244. package/src/components/ObjectSettings/ForeignKeys.tsx +8 -8
  245. package/src/components/ObjectSettings/ObjectSettingsContainer.tsx +4 -3
  246. package/src/components/ObjectSettings/index.ts +3 -1
  247. package/src/components/RecordArticle.stories.tsx +115 -0
  248. package/src/components/RecordArticle.tsx +114 -0
  249. package/src/components/SchemaContainer.tsx +24 -27
  250. package/src/components/SpacePluginSettings.tsx +10 -4
  251. package/src/components/{SpacePresence.stories.tsx → SpacePresence/SpacePresence.stories.tsx} +23 -25
  252. package/src/components/{SpacePresence.tsx → SpacePresence/SpacePresence.tsx} +16 -11
  253. package/src/components/SpacePresence/index.ts +5 -0
  254. package/src/components/{PopoverRenameSpace.tsx → SpaceRenamePopover/SpaceRenamePopover.tsx} +7 -6
  255. package/src/components/SpaceRenamePopover/index.ts +5 -0
  256. package/src/components/SpaceSettings/SpaceSettingsContainer.stories.tsx +9 -4
  257. package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +63 -23
  258. package/src/components/SyncStatus/InlineSyncStatus.tsx +8 -8
  259. package/src/components/SyncStatus/SyncStatus.stories.tsx +4 -5
  260. package/src/components/SyncStatus/SyncStatus.tsx +107 -11
  261. package/src/components/ViewEditor.tsx +57 -23
  262. package/src/components/index.ts +7 -8
  263. package/src/events.ts +6 -6
  264. package/src/helpers/index.ts +5 -0
  265. package/src/helpers/query.test.ts +24 -0
  266. package/src/helpers/query.ts +158 -0
  267. package/src/hooks/index.ts +1 -0
  268. package/src/hooks/useActiveSpace.ts +2 -1
  269. package/src/hooks/useInputSurfaceLookup.tsx +8 -3
  270. package/src/hooks/usePath.ts +1 -1
  271. package/src/hooks/useTypeOptions.ts +27 -0
  272. package/src/index.ts +1 -0
  273. package/src/meta.ts +6 -3
  274. package/src/translations.ts +68 -58
  275. package/src/types/form.ts +75 -0
  276. package/src/types/index.ts +1 -0
  277. package/src/types/types.ts +44 -50
  278. package/src/util.tsx +216 -143
  279. package/dist/lib/browser/CollectionMain-D2B75XBS.mjs.map +0 -7
  280. package/dist/lib/browser/ObjectDetailsPanel-SY6FYTYC.mjs +0 -88
  281. package/dist/lib/browser/ObjectDetailsPanel-SY6FYTYC.mjs.map +0 -7
  282. package/dist/lib/browser/RecordMain-TEBGAVSL.mjs +0 -68
  283. package/dist/lib/browser/RecordMain-TEBGAVSL.mjs.map +0 -7
  284. package/dist/lib/browser/app-graph-builder-FLF7XMQO.mjs +0 -516
  285. package/dist/lib/browser/app-graph-builder-FLF7XMQO.mjs.map +0 -7
  286. package/dist/lib/browser/app-graph-serializer-3A6KBYWT.mjs.map +0 -7
  287. package/dist/lib/browser/chunk-CBYL62HG.mjs +0 -19
  288. package/dist/lib/browser/chunk-CBYL62HG.mjs.map +0 -7
  289. package/dist/lib/browser/chunk-DCY3W36E.mjs.map +0 -7
  290. package/dist/lib/browser/chunk-ELJDGQTO.mjs.map +0 -7
  291. package/dist/lib/browser/chunk-FBCGT5YY.mjs +0 -13
  292. package/dist/lib/browser/chunk-FBCGT5YY.mjs.map +0 -7
  293. package/dist/lib/browser/chunk-J6YZG77T.mjs.map +0 -7
  294. package/dist/lib/browser/chunk-RQVV4XVF.mjs +0 -343
  295. package/dist/lib/browser/chunk-RQVV4XVF.mjs.map +0 -7
  296. package/dist/lib/browser/chunk-TUQZO5P4.mjs +0 -20
  297. package/dist/lib/browser/chunk-TUQZO5P4.mjs.map +0 -7
  298. package/dist/lib/browser/chunk-WAXS2ZVX.mjs.map +0 -7
  299. package/dist/lib/browser/identity-created-T6ZNVE7S.mjs.map +0 -7
  300. package/dist/lib/browser/intent-resolver-7E3IZIJS.mjs.map +0 -7
  301. package/dist/lib/browser/react-root-RWMT2RCK.mjs +0 -29
  302. package/dist/lib/browser/react-root-RWMT2RCK.mjs.map +0 -7
  303. package/dist/lib/browser/react-surface-GL4CE2F4.mjs.map +0 -7
  304. package/dist/lib/browser/schema-defs-YDPFZELA.mjs +0 -26
  305. package/dist/lib/browser/schema-defs-YDPFZELA.mjs.map +0 -7
  306. package/dist/lib/browser/spaces-ready-QVABOCO3.mjs.map +0 -7
  307. package/dist/lib/browser/state-2RGW7FQG.mjs.map +0 -7
  308. package/dist/lib/node-esm/CollectionMain-ZJIFCWKZ.mjs.map +0 -7
  309. package/dist/lib/node-esm/ObjectDetailsPanel-3MYLTMXN.mjs +0 -89
  310. package/dist/lib/node-esm/ObjectDetailsPanel-3MYLTMXN.mjs.map +0 -7
  311. package/dist/lib/node-esm/RecordMain-WLYJMYER.mjs +0 -70
  312. package/dist/lib/node-esm/RecordMain-WLYJMYER.mjs.map +0 -7
  313. package/dist/lib/node-esm/app-graph-builder-D5YPOJS5.mjs +0 -517
  314. package/dist/lib/node-esm/app-graph-builder-D5YPOJS5.mjs.map +0 -7
  315. package/dist/lib/node-esm/app-graph-serializer-M45TH5LR.mjs.map +0 -7
  316. package/dist/lib/node-esm/chunk-AUQ3SKL2.mjs.map +0 -7
  317. package/dist/lib/node-esm/chunk-FJZNSJC4.mjs +0 -20
  318. package/dist/lib/node-esm/chunk-FJZNSJC4.mjs.map +0 -7
  319. package/dist/lib/node-esm/chunk-HC677WUJ.mjs +0 -21
  320. package/dist/lib/node-esm/chunk-HC677WUJ.mjs.map +0 -7
  321. package/dist/lib/node-esm/chunk-HWNG4MEU.mjs +0 -15
  322. package/dist/lib/node-esm/chunk-HWNG4MEU.mjs.map +0 -7
  323. package/dist/lib/node-esm/chunk-HYIZVPOA.mjs.map +0 -7
  324. package/dist/lib/node-esm/chunk-Q6AAQLQG.mjs.map +0 -7
  325. package/dist/lib/node-esm/chunk-WKQTO37U.mjs +0 -344
  326. package/dist/lib/node-esm/chunk-WKQTO37U.mjs.map +0 -7
  327. package/dist/lib/node-esm/chunk-ZCEH2VYE.mjs.map +0 -7
  328. package/dist/lib/node-esm/identity-created-AL7NNCKH.mjs.map +0 -7
  329. package/dist/lib/node-esm/intent-resolver-UVO4MKWX.mjs.map +0 -7
  330. package/dist/lib/node-esm/react-root-5EKYI66P.mjs.map +0 -7
  331. package/dist/lib/node-esm/react-surface-IOC6YSVQ.mjs.map +0 -7
  332. package/dist/lib/node-esm/schema-defs-OYBCWKAS.mjs +0 -27
  333. package/dist/lib/node-esm/schema-defs-OYBCWKAS.mjs.map +0 -7
  334. package/dist/lib/node-esm/spaces-ready-MS6GHPFR.mjs.map +0 -7
  335. package/dist/lib/node-esm/state-7VBVBGNS.mjs.map +0 -7
  336. package/dist/types/src/capabilities/schema-defs.d.ts +0 -4
  337. package/dist/types/src/capabilities/schema-defs.d.ts.map +0 -1
  338. package/dist/types/src/components/CollectionMain.d.ts +0 -7
  339. package/dist/types/src/components/CollectionMain.d.ts.map +0 -1
  340. package/dist/types/src/components/JoinDialog.d.ts.map +0 -1
  341. package/dist/types/src/components/MembersContainer.d.ts.map +0 -1
  342. package/dist/types/src/components/ObjectDetailsPanel.d.ts +0 -9
  343. package/dist/types/src/components/ObjectDetailsPanel.d.ts.map +0 -1
  344. package/dist/types/src/components/PersistenceStatus.d.ts +0 -6
  345. package/dist/types/src/components/PersistenceStatus.d.ts.map +0 -1
  346. package/dist/types/src/components/PopoverRenameObject.d.ts +0 -7
  347. package/dist/types/src/components/PopoverRenameObject.d.ts.map +0 -1
  348. package/dist/types/src/components/PopoverRenameSpace.d.ts +0 -7
  349. package/dist/types/src/components/PopoverRenameSpace.d.ts.map +0 -1
  350. package/dist/types/src/components/RecordMain.d.ts +0 -7
  351. package/dist/types/src/components/RecordMain.d.ts.map +0 -1
  352. package/dist/types/src/components/SpacePresence.d.ts.map +0 -1
  353. package/src/capabilities/schema-defs.ts +0 -31
  354. package/src/components/ObjectDetailsPanel.tsx +0 -77
  355. package/src/components/PersistenceStatus.tsx +0 -83
  356. package/src/components/RecordMain.tsx +0 -43
  357. /package/dist/types/src/components/{MembersContainer.d.ts → MembersContainer/MembersContainer.d.ts} +0 -0
@@ -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,29 +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
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';
9
+ import { type Collection } from '@dxos/schema';
10
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
- // TODO(burdon): Should this be view? Forms are UI concepts? (associated with a View/schema).
29
- 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`);
30
40
  }
@@ -6,7 +6,7 @@ import { Capabilities, type PluginContext, contributes } from '@dxos/app-framewo
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,7 +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'));
13
+ export const Repair = lazy(() => import('./repair'));
14
14
  export const SpaceSettings = lazy(() => import('./settings'));
15
15
  export const SpaceState = lazy(() => import('./state'));
16
16
  export const SpacesReady = lazy(() => import('./spaces-ready'));
@@ -2,26 +2,31 @@
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 { SpaceState, fullyQualifiedId, getSpace, isSpace } 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
31
  import {
27
32
  CREATE_OBJECT_DIALOG,
@@ -29,18 +34,18 @@ import {
29
34
  type CreateObjectDialogProps,
30
35
  JOIN_DIALOG,
31
36
  type JoinDialogProps,
32
- POPOVER_RENAME_OBJECT,
33
- POPOVER_RENAME_SPACE,
37
+ OBJECT_RENAME_POPOVER,
38
+ SPACE_RENAME_POPOVER,
34
39
  } from '../components';
35
40
  import { SpaceEvents } from '../events';
36
- import { SPACE_PLUGIN } from '../meta';
41
+ import { meta } from '../meta';
37
42
  import { CollectionAction, SpaceAction } from '../types';
38
43
  import { COMPOSER_SPACE_LOCK, cloneObject, getNestedObjects } from '../util';
39
44
 
40
45
  import { SpaceCapabilities } from './capabilities';
41
46
 
42
47
  // TODO(wittjosiah): Remove.
43
- const SPACE_MAX_OBJECTS = 500;
48
+ const SPACE_MAX_OBJECTS = 750;
44
49
 
45
50
  type IntentResolverOptions = {
46
51
  context: PluginContext;
@@ -69,8 +74,10 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
69
74
  }),
70
75
  createResolver({
71
76
  intent: SpaceAction.Create,
72
- resolve: async ({ name, hue, icon, edgeReplication }) => {
77
+ resolve: async ({ name, hue: hue_, icon: icon_, edgeReplication }) => {
73
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)];
74
81
  const space = await client.spaces.create({ name, hue, icon });
75
82
  if (edgeReplication) {
76
83
  await space.internal.setEdgeReplicationPreference(EdgeReplicationSetting.ENABLED);
@@ -78,8 +85,8 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
78
85
  await space.waitUntilReady();
79
86
 
80
87
  // Create root collection.
81
- const collection = Obj.make(DataType.Collection, { objects: [] });
82
- 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);
83
90
 
84
91
  // Set current migration version.
85
92
  if (Migrations.versionProperty) {
@@ -87,16 +94,13 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
87
94
  }
88
95
 
89
96
  // Create records smart collection.
90
- const records = Obj.make(DataType.QueryCollection, {
91
- query: { typename: DataType.StoredSchema.typename },
92
- });
93
- collection.objects.push(Ref.make(records));
97
+ collection.objects.push(Ref.make(Collection.makeManaged({ key: Type.getTypename(Type.PersistentType) })));
94
98
 
95
99
  // Allow other plugins to add default content.
96
100
  await context.activatePromise(SpaceEvents.SpaceCreated);
97
- const onSpaceCreatedCallbacks = context.getCapabilities(SpaceCapabilities.OnSpaceCreated);
98
- const spaceCreatedIntents = onSpaceCreatedCallbacks.map((onSpaceCreated) =>
99
- onSpaceCreated({ space, rootCollection: collection }),
101
+ const onCreateSpaceCallbacks = context.getCapabilities(SpaceCapabilities.OnCreateSpace);
102
+ const spaceCreatedIntents = onCreateSpaceCallbacks.map((onCreateSpace) =>
103
+ onCreateSpace({ space, isDefault: false, rootCollection: collection }),
100
104
  );
101
105
 
102
106
  return {
@@ -254,7 +258,7 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
254
258
  intents: [
255
259
  createIntent(LayoutAction.UpdatePopover, {
256
260
  part: 'popover',
257
- subject: POPOVER_RENAME_SPACE,
261
+ subject: SPACE_RENAME_POPOVER,
258
262
  options: {
259
263
  anchorId: `dxos.org/ui/${caller}/${space.id}`,
260
264
  props: space,
@@ -321,9 +325,20 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
321
325
  };
322
326
  },
323
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
+ }),
324
339
  createResolver({
325
340
  intent: SpaceAction.UseStaticSchema,
326
- resolve: async ({ space, typename }) => {
341
+ resolve: async ({ space, typename, show }) => {
327
342
  const client = context.getCapability(ClientCapabilities.Client);
328
343
  const schema = client.graph.schemaRegistry.schemas.find((schema) => Type.getTypename(schema) === typename);
329
344
  invariant(schema, `Schema not found: ${typename}`);
@@ -338,7 +353,7 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
338
353
 
339
354
  await context.activatePromise(SpaceEvents.SchemaAdded);
340
355
  const onSchemaAdded = context.getCapabilities(SpaceCapabilities.OnSchemaAdded);
341
- const schemaAddedIntents = onSchemaAdded.map((onSchemaAdded) => onSchemaAdded({ space, schema }));
356
+ const schemaAddedIntents = onSchemaAdded.map((onSchemaAdded) => onSchemaAdded({ space, schema, show }));
342
357
 
343
358
  return {
344
359
  data: {},
@@ -361,7 +376,7 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
361
376
  }),
362
377
  createResolver({
363
378
  intent: SpaceAction.AddSchema,
364
- resolve: async ({ space, name, typename, version, schema: schemaInput }) => {
379
+ resolve: async ({ space, name, typename, version, schema: schemaInput, show }) => {
365
380
  const [schema] = await space.db.schemaRegistry.register([schemaInput]);
366
381
  if (name) {
367
382
  schema.storedSchema.name = name;
@@ -375,7 +390,7 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
375
390
 
376
391
  await context.activatePromise(SpaceEvents.SchemaAdded);
377
392
  const onSchemaAdded = context.getCapabilities(SpaceCapabilities.OnSchemaAdded);
378
- const schemaAddedIntents = onSchemaAdded.map((onSchemaAdded) => onSchemaAdded({ space, schema }));
393
+ const schemaAddedIntents = onSchemaAdded.map((onSchemaAdded) => onSchemaAdded({ space, schema, show }));
379
394
 
380
395
  return {
381
396
  data: {
@@ -406,15 +421,16 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
406
421
  resolve: async ({ view, fieldId, deletionData }, undo) => {
407
422
  const space = getSpace(view);
408
423
  invariant(space);
409
- invariant(view.query.typename);
410
- 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();
411
427
  invariant(schema);
412
428
  const projection = new ProjectionModel(schema.jsonSchema, view.projection);
413
429
  if (!undo) {
414
430
  const { deleted, index } = projection.deleteFieldProjection(fieldId);
415
431
  return {
416
432
  undoable: {
417
- message: ['field deleted label', { ns: SPACE_PLUGIN }],
433
+ message: ['field deleted label', { ns: meta.id }],
418
434
  data: { deletionData: { ...deleted, index } },
419
435
  },
420
436
  };
@@ -444,9 +460,9 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
444
460
  onCreateObject,
445
461
  shouldNavigate: navigable
446
462
  ? (object: Obj.Any) => {
447
- const isCollection = Obj.instanceOf(DataType.Collection, object);
448
- const isQueryCollection = Obj.instanceOf(DataType.QueryCollection, object);
449
- 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;
450
466
  }
451
467
  : () => false,
452
468
  } satisfies Partial<CreateObjectDialogProps>,
@@ -469,13 +485,13 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
469
485
  createIntent(LayoutAction.AddToast, {
470
486
  part: 'toast',
471
487
  subject: {
472
- id: `${SPACE_PLUGIN}/space-limit`,
473
- title: ['space limit label', { ns: SPACE_PLUGIN }],
474
- 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 }],
475
491
  duration: 5_000,
476
492
  icon: 'ph--warning--regular',
477
- actionLabel: ['remove deleted objects label', { ns: SPACE_PLUGIN }],
478
- 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 }],
479
495
  closeLabel: ['close label', { ns: 'os' }],
480
496
  onAction: () => space.db.coreDatabase.unlinkDeletedObjects(),
481
497
  },
@@ -494,25 +510,18 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
494
510
  };
495
511
  }
496
512
 
497
- if (Obj.instanceOf(DataType.Collection, target)) {
498
- target.objects.push(Ref.make(object));
499
- } else if (isSpace(target) && hidden) {
500
- space.db.add(object);
501
- } else if (isSpace(target)) {
502
- const collection = space.properties[DataType.Collection.typename]?.target;
503
- if (Obj.instanceOf(DataType.Collection, collection)) {
504
- collection.objects.push(Ref.make(object));
505
- } else {
506
- // TODO(wittjosiah): Can't add non-echo objects by including in a collection because of types.
507
- const collection = Obj.make(DataType.Collection, { objects: [Ref.make(object)] });
508
- space.properties[DataType.Collection.typename] = Ref.make(collection);
509
- }
510
- }
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);
511
520
 
512
521
  return {
513
522
  data: {
514
- id: fullyQualifiedId(object),
515
- subject: [fullyQualifiedId(object)],
523
+ id: Obj.getDXN(object).toString(),
524
+ subject: [Obj.getDXN(object).toString()],
516
525
  object,
517
526
  },
518
527
  intents: [
@@ -561,26 +570,26 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
561
570
  const openObjectIds = new Set<string>(layout.active);
562
571
 
563
572
  if (!undo) {
564
- const parentCollection: DataType.Collection =
565
- target ?? space.properties[DataType.Collection.typename]?.target;
573
+ const parentCollection: Collection.Collection =
574
+ target ?? space.properties[Collection.Collection.typename]?.target;
566
575
  const nestedObjectsList = await Promise.all(objects.map((obj) => getNestedObjects(obj, resolve)));
567
576
 
568
577
  const deletionData = {
569
578
  objects,
570
579
  parentCollection,
571
580
  indices: objects.map((obj) =>
572
- Obj.instanceOf(DataType.Collection, parentCollection)
581
+ Obj.instanceOf(Collection.Collection, parentCollection)
573
582
  ? parentCollection.objects.findIndex((object) => object.target === obj)
574
583
  : -1,
575
584
  ),
576
585
  nestedObjectsList,
577
586
  wasActive: objects
578
587
  .flatMap((obj, i) => [obj, ...nestedObjectsList[i]])
579
- .map((obj) => fullyQualifiedId(obj))
588
+ .map((obj) => Obj.getDXN(obj).toString())
580
589
  .filter((id) => openObjectIds.has(id)),
581
590
  } satisfies SpaceAction.DeletionData;
582
591
 
583
- if (Obj.instanceOf(DataType.Collection, deletionData.parentCollection)) {
592
+ if (Obj.instanceOf(Collection.Collection, deletionData.parentCollection)) {
584
593
  [...deletionData.indices]
585
594
  .sort((a, b) => b - a)
586
595
  .forEach((index: number) => {
@@ -595,16 +604,17 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
595
604
  });
596
605
  objects.forEach((obj) => space.db.remove(obj));
597
606
 
598
- const undoMessageKey = objects.some((obj) => Obj.instanceOf(DataType.Collection, obj))
599
- ? 'collection deleted label'
600
- : objects.length > 1
601
- ? 'objects deleted label'
602
- : '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 }];
603
613
 
604
614
  return {
605
615
  undoable: {
606
616
  // TODO(ZaymonFC): Pluralize if more than one object.
607
- message: [undoMessageKey, { ns: SPACE_PLUGIN }],
617
+ message: undoMessageLabel,
608
618
  data: { deletionData },
609
619
  },
610
620
  intents:
@@ -622,19 +632,19 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
622
632
  if (
623
633
  deletionData?.objects?.length &&
624
634
  deletionData.objects.every(Obj.isObject) &&
625
- Obj.instanceOf(DataType.Collection, deletionData.parentCollection)
635
+ Obj.instanceOf(Collection.Collection, deletionData.parentCollection)
626
636
  ) {
627
637
  // Restore the object to the space.
628
- 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));
629
639
 
630
640
  // Restore nested objects to the space.
631
- deletionData.nestedObjectsList.flat().forEach((obj: Type.Expando) => {
641
+ deletionData.nestedObjectsList.flat().forEach((obj: Obj.Any) => {
632
642
  space.db.add(obj);
633
643
  });
634
644
 
635
645
  deletionData.indices.forEach((index: number, i: number) => {
636
646
  if (index !== -1) {
637
- 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));
638
648
  }
639
649
  });
640
650
 
@@ -659,9 +669,9 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
659
669
  intents: [
660
670
  createIntent(LayoutAction.UpdatePopover, {
661
671
  part: 'popover',
662
- subject: POPOVER_RENAME_OBJECT,
672
+ subject: OBJECT_RENAME_POPOVER,
663
673
  options: {
664
- anchorId: `dxos.org/ui/${caller}/${fullyQualifiedId(object)}`,
674
+ anchorId: `dxos.org/ui/${caller}/${Obj.getDXN(object).toString()}`,
665
675
  props: object,
666
676
  },
667
677
  }),
@@ -673,7 +683,6 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
673
683
  resolve: async ({ object, target }) => {
674
684
  const space = isSpace(target) ? target : getSpace(target);
675
685
  invariant(space, 'Space not found.');
676
-
677
686
  const newObject = await cloneObject(object, resolve, space);
678
687
  return {
679
688
  intents: [createIntent(SpaceAction.AddObject, { object: newObject, target })],
@@ -690,13 +699,7 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
690
699
  createResolver({
691
700
  intent: CollectionAction.Create,
692
701
  resolve: async ({ name }) => ({
693
- data: { object: Obj.make(DataType.Collection, { name, objects: [] }) },
694
- }),
695
- }),
696
- createResolver({
697
- intent: CollectionAction.CreateQueryCollection,
698
- resolve: async ({ name, typename }) => ({
699
- data: { object: Obj.make(DataType.QueryCollection, { name, query: { typename } }) },
702
+ data: { object: Obj.make(Collection.Collection, { name, objects: [] }) },
700
703
  }),
701
704
  }),
702
705
  ]);
@@ -4,16 +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
10
  import { AwaitingObject } from '../components';
10
- import { SPACE_PLUGIN } from '../meta';
11
+ import { meta } from '../meta';
11
12
 
12
13
  import { SpaceCapabilities } from './capabilities';
13
14
 
14
15
  export default () =>
15
16
  contributes(Capabilities.ReactRoot, {
16
- id: SPACE_PLUGIN,
17
+ id: meta.id,
17
18
  root: () => {
18
19
  const state = useCapability(SpaceCapabilities.State);
19
20
  return state.awaiting ? <AwaitingObject id={state.awaiting} /> : null;