@dxos/plugin-space 0.8.4-main.f9ba587 → 0.8.4-main.fffef41

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 (361) hide show
  1. package/dist/lib/browser/CollectionArticle-WTHWY4YS.mjs +31 -0
  2. package/dist/lib/browser/CollectionArticle-WTHWY4YS.mjs.map +7 -0
  3. package/dist/lib/browser/ObjectDetailsPanel-2BRUBHP6.mjs +141 -0
  4. package/dist/lib/browser/ObjectDetailsPanel-2BRUBHP6.mjs.map +7 -0
  5. package/dist/lib/browser/ObjectSettings-5LLWCVEK.mjs +144 -0
  6. package/dist/lib/browser/ObjectSettings-5LLWCVEK.mjs.map +7 -0
  7. package/dist/lib/browser/RecordArticle-SXDRWTTU.mjs +116 -0
  8. package/dist/lib/browser/RecordArticle-SXDRWTTU.mjs.map +7 -0
  9. package/dist/lib/browser/app-graph-builder-DTM7BJ6D.mjs +528 -0
  10. package/dist/lib/browser/app-graph-builder-DTM7BJ6D.mjs.map +7 -0
  11. package/dist/lib/browser/{app-graph-serializer-UKYMBX4O.mjs → app-graph-serializer-TIKXF43P.mjs} +19 -19
  12. package/dist/lib/browser/app-graph-serializer-TIKXF43P.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-AFUOMLX6.mjs +167 -0
  14. package/dist/lib/browser/chunk-AFUOMLX6.mjs.map +7 -0
  15. package/dist/lib/browser/{chunk-GVTXQCIW.mjs → chunk-CKACGS7T.mjs} +714 -571
  16. package/dist/lib/browser/chunk-CKACGS7T.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-K5J7ZB5P.mjs +20 -0
  18. package/dist/lib/browser/chunk-K5J7ZB5P.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-WBSEOLEM.mjs → chunk-KFUMADZF.mjs} +301 -73
  20. package/dist/lib/browser/chunk-KFUMADZF.mjs.map +7 -0
  21. package/dist/lib/browser/{chunk-6VLSHG4A.mjs → chunk-VGKOXAPE.mjs} +87 -12
  22. package/dist/lib/browser/chunk-VGKOXAPE.mjs.map +7 -0
  23. package/dist/lib/browser/chunk-VZBIIYFM.mjs +16 -0
  24. package/dist/lib/browser/chunk-VZBIIYFM.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-WJXU4GKV.mjs +19 -0
  26. package/dist/lib/browser/chunk-WJXU4GKV.mjs.map +7 -0
  27. package/dist/lib/browser/{chunk-S6NY637J.mjs → chunk-ZQMSGD5J.mjs} +95 -19
  28. package/dist/lib/browser/chunk-ZQMSGD5J.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 +148 -59
  32. package/dist/lib/browser/index.mjs.map +3 -3
  33. package/dist/lib/browser/{intent-resolver-WK5WYFH3.mjs → intent-resolver-3FNTO3VW.mjs} +236 -68
  34. package/dist/lib/browser/intent-resolver-3FNTO3VW.mjs.map +7 -0
  35. package/dist/lib/browser/meta.json +1 -1
  36. package/dist/lib/browser/react-root-Q7VBWBES.mjs +30 -0
  37. package/dist/lib/browser/react-root-Q7VBWBES.mjs.map +7 -0
  38. package/dist/lib/browser/{react-surface-6C3YJNDK.mjs → react-surface-TTHS332A.mjs} +98 -100
  39. package/dist/lib/browser/react-surface-TTHS332A.mjs.map +7 -0
  40. package/dist/lib/browser/{schema-defs-K3B3OAH4.mjs → schema-defs-QPI2JU3X.mjs} +6 -6
  41. package/dist/lib/browser/schema-defs-QPI2JU3X.mjs.map +7 -0
  42. package/dist/lib/browser/{settings-XNWYRWNM.mjs → settings-45PGPO2V.mjs} +5 -5
  43. package/dist/lib/browser/{settings-XNWYRWNM.mjs.map → settings-45PGPO2V.mjs.map} +1 -1
  44. package/dist/lib/browser/{spaces-ready-K7NSNBHM.mjs → spaces-ready-QCND4DVY.mjs} +21 -18
  45. package/dist/lib/browser/spaces-ready-QCND4DVY.mjs.map +7 -0
  46. package/dist/lib/browser/{state-522XTUR4.mjs → state-Q7YRE5KG.mjs} +7 -7
  47. package/dist/lib/browser/state-Q7YRE5KG.mjs.map +7 -0
  48. package/dist/lib/browser/types/index.mjs +2 -2
  49. package/dist/lib/node-esm/CollectionArticle-KHXYT3SH.mjs +32 -0
  50. package/dist/lib/node-esm/CollectionArticle-KHXYT3SH.mjs.map +7 -0
  51. package/dist/lib/node-esm/ObjectDetailsPanel-6PZQIQG3.mjs +142 -0
  52. package/dist/lib/node-esm/ObjectDetailsPanel-6PZQIQG3.mjs.map +7 -0
  53. package/dist/lib/node-esm/ObjectSettings-OQSBOH7K.mjs +145 -0
  54. package/dist/lib/node-esm/ObjectSettings-OQSBOH7K.mjs.map +7 -0
  55. package/dist/lib/node-esm/RecordArticle-NACBH42P.mjs +117 -0
  56. package/dist/lib/node-esm/RecordArticle-NACBH42P.mjs.map +7 -0
  57. package/dist/lib/node-esm/app-graph-builder-FBJFWI4H.mjs +529 -0
  58. package/dist/lib/node-esm/app-graph-builder-FBJFWI4H.mjs.map +7 -0
  59. package/dist/lib/node-esm/{app-graph-serializer-LA3IZDXJ.mjs → app-graph-serializer-BESQZAYU.mjs} +19 -19
  60. package/dist/lib/node-esm/app-graph-serializer-BESQZAYU.mjs.map +7 -0
  61. package/dist/lib/node-esm/{chunk-2THX6G4C.mjs → chunk-6VEONPNZ.mjs} +95 -19
  62. package/dist/lib/node-esm/chunk-6VEONPNZ.mjs.map +7 -0
  63. package/dist/lib/node-esm/chunk-6ZQGZBEP.mjs +168 -0
  64. package/dist/lib/node-esm/chunk-6ZQGZBEP.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-HJJHLWKY.mjs → chunk-OK2L7N2F.mjs} +301 -73
  70. package/dist/lib/node-esm/chunk-OK2L7N2F.mjs.map +7 -0
  71. package/dist/lib/node-esm/{chunk-SXD6T2N4.mjs → chunk-QBRPYAEL.mjs} +87 -12
  72. package/dist/lib/node-esm/chunk-QBRPYAEL.mjs.map +7 -0
  73. package/dist/lib/node-esm/{chunk-OUBADVJE.mjs → chunk-XGAMJC5C.mjs} +714 -571
  74. package/dist/lib/node-esm/chunk-XGAMJC5C.mjs.map +7 -0
  75. package/dist/lib/node-esm/chunk-Z7BB6HC2.mjs +21 -0
  76. package/dist/lib/node-esm/chunk-Z7BB6HC2.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 +148 -59
  80. package/dist/lib/node-esm/index.mjs.map +3 -3
  81. package/dist/lib/node-esm/{intent-resolver-HSR27ME4.mjs → intent-resolver-6O5FSB7Z.mjs} +236 -68
  82. package/dist/lib/node-esm/intent-resolver-6O5FSB7Z.mjs.map +7 -0
  83. package/dist/lib/node-esm/meta.json +1 -1
  84. package/dist/lib/node-esm/{react-root-HUK3ANLV.mjs → react-root-K66W3FMA.mjs} +13 -12
  85. package/dist/lib/node-esm/react-root-K66W3FMA.mjs.map +7 -0
  86. package/dist/lib/node-esm/{react-surface-AGAWX7DD.mjs → react-surface-Y7FTEIDF.mjs} +98 -100
  87. package/dist/lib/node-esm/react-surface-Y7FTEIDF.mjs.map +7 -0
  88. package/dist/lib/node-esm/{schema-defs-4MCDG4DV.mjs → schema-defs-ZS2D47XW.mjs} +6 -6
  89. package/dist/lib/node-esm/schema-defs-ZS2D47XW.mjs.map +7 -0
  90. package/dist/lib/node-esm/{settings-YGKHGFPH.mjs → settings-6FO65BA6.mjs} +5 -5
  91. package/dist/lib/node-esm/{settings-YGKHGFPH.mjs.map → settings-6FO65BA6.mjs.map} +1 -1
  92. package/dist/lib/node-esm/{spaces-ready-UM2P3DCR.mjs → spaces-ready-P7CKVXBE.mjs} +21 -18
  93. package/dist/lib/node-esm/spaces-ready-P7CKVXBE.mjs.map +7 -0
  94. package/dist/lib/node-esm/{state-C4IOXPZP.mjs → state-362I5BMK.mjs} +7 -7
  95. package/dist/lib/node-esm/state-362I5BMK.mjs.map +7 -0
  96. package/dist/lib/node-esm/types/index.mjs +2 -2
  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 -7
  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/schema-defs.d.ts +1 -1
  115. package/dist/types/src/capabilities/schema-defs.d.ts.map +1 -1
  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 +5 -4
  127. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
  128. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts +1704 -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 +7 -5
  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 +1707 -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/MenuFooter.d.ts.map +1 -1
  145. package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts +9 -0
  146. package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts.map +1 -0
  147. package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts +10 -0
  148. package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts.map +1 -0
  149. package/dist/types/src/components/ObjectDetailsPanel/index.d.ts +3 -0
  150. package/dist/types/src/components/ObjectDetailsPanel/index.d.ts.map +1 -0
  151. package/dist/types/src/components/ObjectRenamePopover/ObjectRenamePopover.d.ts +7 -0
  152. package/dist/types/src/components/ObjectRenamePopover/ObjectRenamePopover.d.ts.map +1 -0
  153. package/dist/types/src/components/ObjectRenamePopover/index.d.ts +2 -0
  154. package/dist/types/src/components/ObjectRenamePopover/index.d.ts.map +1 -0
  155. package/dist/types/src/components/ObjectSettings/AdvancedObjectSettings.d.ts.map +1 -1
  156. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts +2 -2
  157. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts.map +1 -1
  158. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts +1540 -0
  159. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts.map +1 -0
  160. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts +1 -1
  161. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts.map +1 -1
  162. package/dist/types/src/components/ObjectSettings/ObjectSettingsContainer.d.ts.map +1 -1
  163. package/dist/types/src/components/ObjectSettings/index.d.ts +2 -1
  164. package/dist/types/src/components/ObjectSettings/index.d.ts.map +1 -1
  165. package/dist/types/src/components/RecordArticle.d.ts +5 -0
  166. package/dist/types/src/components/RecordArticle.d.ts.map +1 -0
  167. package/dist/types/src/components/RecordArticle.stories.d.ts +1707 -0
  168. package/dist/types/src/components/RecordArticle.stories.d.ts.map +1 -0
  169. package/dist/types/src/components/SchemaContainer.d.ts +1 -1
  170. package/dist/types/src/components/SchemaContainer.d.ts.map +1 -1
  171. package/dist/types/src/components/SpacePluginSettings.d.ts.map +1 -1
  172. package/dist/types/src/components/{SpacePresence.d.ts → SpacePresence/SpacePresence.d.ts} +4 -3
  173. package/dist/types/src/components/SpacePresence/SpacePresence.d.ts.map +1 -0
  174. package/dist/types/src/components/SpacePresence/SpacePresence.stories.d.ts +1537 -0
  175. package/dist/types/src/components/SpacePresence/SpacePresence.stories.d.ts.map +1 -0
  176. package/dist/types/src/components/SpacePresence/index.d.ts +2 -0
  177. package/dist/types/src/components/SpacePresence/index.d.ts.map +1 -0
  178. package/dist/types/src/components/SpaceRenamePopover/SpaceRenamePopover.d.ts +7 -0
  179. package/dist/types/src/components/SpaceRenamePopover/SpaceRenamePopover.d.ts.map +1 -0
  180. package/dist/types/src/components/SpaceRenamePopover/index.d.ts +2 -0
  181. package/dist/types/src/components/SpaceRenamePopover/index.d.ts.map +1 -0
  182. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
  183. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts +1537 -4
  184. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts.map +1 -1
  185. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts +1 -1
  186. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
  187. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts +1538 -5
  188. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
  189. package/dist/types/src/components/SyncStatus/status.d.ts +5 -5
  190. package/dist/types/src/components/ViewEditor.d.ts +7 -0
  191. package/dist/types/src/components/ViewEditor.d.ts.map +1 -0
  192. package/dist/types/src/components/index.d.ts +11 -5
  193. package/dist/types/src/components/index.d.ts.map +1 -1
  194. package/dist/types/src/events.d.ts +1 -0
  195. package/dist/types/src/events.d.ts.map +1 -1
  196. package/dist/types/src/helpers/index.d.ts +2 -0
  197. package/dist/types/src/helpers/index.d.ts.map +1 -0
  198. package/dist/types/src/helpers/query.d.ts +8 -0
  199. package/dist/types/src/helpers/query.d.ts.map +1 -0
  200. package/dist/types/src/helpers/query.test.d.ts +2 -0
  201. package/dist/types/src/helpers/query.test.d.ts.map +1 -0
  202. package/dist/types/src/hooks/index.d.ts +1 -0
  203. package/dist/types/src/hooks/index.d.ts.map +1 -1
  204. package/dist/types/src/hooks/useActiveSpace.d.ts.map +1 -1
  205. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts +1 -1
  206. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts.map +1 -1
  207. package/dist/types/src/hooks/usePath.d.ts +1 -1
  208. package/dist/types/src/hooks/usePath.d.ts.map +1 -1
  209. package/dist/types/src/hooks/useTypeOptions.d.ts +10 -0
  210. package/dist/types/src/hooks/useTypeOptions.d.ts.map +1 -0
  211. package/dist/types/src/index.d.ts +1 -0
  212. package/dist/types/src/index.d.ts.map +1 -1
  213. package/dist/types/src/meta.d.ts +0 -1
  214. package/dist/types/src/meta.d.ts.map +1 -1
  215. package/dist/types/src/translations.d.ts +1382 -11
  216. package/dist/types/src/translations.d.ts.map +1 -1
  217. package/dist/types/src/types/types.d.ts +141 -66
  218. package/dist/types/src/types/types.d.ts.map +1 -1
  219. package/dist/types/src/util.d.ts +40 -10
  220. package/dist/types/src/util.d.ts.map +1 -1
  221. package/dist/types/tsconfig.tsbuildinfo +1 -1
  222. package/package.json +67 -61
  223. package/src/SpacePlugin.ts +232 -139
  224. package/src/capabilities/app-graph-builder.ts +335 -88
  225. package/src/capabilities/app-graph-serializer.ts +12 -12
  226. package/src/capabilities/capabilities.ts +21 -10
  227. package/src/capabilities/identity-created.ts +3 -3
  228. package/src/capabilities/index.ts +0 -1
  229. package/src/capabilities/intent-resolver.ts +191 -54
  230. package/src/capabilities/react-root.tsx +6 -4
  231. package/src/capabilities/react-surface.tsx +94 -119
  232. package/src/capabilities/schema-defs.ts +4 -3
  233. package/src/capabilities/spaces-ready.ts +16 -10
  234. package/src/capabilities/state.ts +5 -4
  235. package/src/components/AwaitingObject.tsx +16 -20
  236. package/src/components/{CollectionMain.tsx → CollectionArticle.tsx} +8 -5
  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 +76 -54
  240. package/src/components/CreateDialog/CreateObjectPanel.tsx +24 -13
  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} +27 -24
  246. package/src/components/MembersContainer/index.ts +5 -0
  247. package/src/components/MenuFooter.tsx +4 -5
  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} +11 -17
  252. package/src/components/ObjectRenamePopover/index.ts +5 -0
  253. package/src/components/ObjectSettings/AdvancedObjectSettings.tsx +4 -3
  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 +4 -4
  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 +25 -28
  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 +49 -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 +110 -13
  273. package/src/components/SyncStatus/status.ts +4 -4
  274. package/src/components/ViewEditor.tsx +92 -0
  275. package/src/components/index.ts +10 -5
  276. package/src/events.ts +7 -6
  277. package/src/helpers/index.ts +5 -0
  278. package/src/helpers/query.test.ts +24 -0
  279. package/src/helpers/query.ts +158 -0
  280. package/src/hooks/index.ts +1 -0
  281. package/src/hooks/useActiveSpace.ts +3 -2
  282. package/src/hooks/useInputSurfaceLookup.tsx +8 -3
  283. package/src/hooks/usePath.ts +1 -1
  284. package/src/hooks/useTypeOptions.ts +59 -0
  285. package/src/index.ts +1 -0
  286. package/src/meta.ts +6 -3
  287. package/src/translations.ts +85 -7
  288. package/src/types/types.ts +94 -22
  289. package/src/util.tsx +297 -75
  290. package/dist/lib/browser/app-graph-builder-PMDF6PJV.mjs +0 -363
  291. package/dist/lib/browser/app-graph-builder-PMDF6PJV.mjs.map +0 -7
  292. package/dist/lib/browser/app-graph-serializer-UKYMBX4O.mjs.map +0 -7
  293. package/dist/lib/browser/chunk-6VLSHG4A.mjs.map +0 -7
  294. package/dist/lib/browser/chunk-C7KGJTAL.mjs +0 -18
  295. package/dist/lib/browser/chunk-C7KGJTAL.mjs.map +0 -7
  296. package/dist/lib/browser/chunk-FBCGT5YY.mjs +0 -13
  297. package/dist/lib/browser/chunk-FBCGT5YY.mjs.map +0 -7
  298. package/dist/lib/browser/chunk-GVTXQCIW.mjs.map +0 -7
  299. package/dist/lib/browser/chunk-S6NY637J.mjs.map +0 -7
  300. package/dist/lib/browser/chunk-VLBRSGJ2.mjs +0 -94
  301. package/dist/lib/browser/chunk-VLBRSGJ2.mjs.map +0 -7
  302. package/dist/lib/browser/chunk-WBSEOLEM.mjs.map +0 -7
  303. package/dist/lib/browser/chunk-XXIPJLJF.mjs +0 -19
  304. package/dist/lib/browser/chunk-XXIPJLJF.mjs.map +0 -7
  305. package/dist/lib/browser/identity-created-23XJJV2N.mjs.map +0 -7
  306. package/dist/lib/browser/intent-resolver-WK5WYFH3.mjs.map +0 -7
  307. package/dist/lib/browser/react-root-7S6FIC5G.mjs +0 -29
  308. package/dist/lib/browser/react-root-7S6FIC5G.mjs.map +0 -7
  309. package/dist/lib/browser/react-surface-6C3YJNDK.mjs.map +0 -7
  310. package/dist/lib/browser/schema-defs-K3B3OAH4.mjs.map +0 -7
  311. package/dist/lib/browser/schema-tools-BNP4JTD7.mjs +0 -124
  312. package/dist/lib/browser/schema-tools-BNP4JTD7.mjs.map +0 -7
  313. package/dist/lib/browser/spaces-ready-K7NSNBHM.mjs.map +0 -7
  314. package/dist/lib/browser/state-522XTUR4.mjs.map +0 -7
  315. package/dist/lib/node-esm/app-graph-builder-TO72W6MI.mjs +0 -364
  316. package/dist/lib/node-esm/app-graph-builder-TO72W6MI.mjs.map +0 -7
  317. package/dist/lib/node-esm/app-graph-serializer-LA3IZDXJ.mjs.map +0 -7
  318. package/dist/lib/node-esm/chunk-2THX6G4C.mjs.map +0 -7
  319. package/dist/lib/node-esm/chunk-72QMMRKC.mjs +0 -19
  320. package/dist/lib/node-esm/chunk-72QMMRKC.mjs.map +0 -7
  321. package/dist/lib/node-esm/chunk-AT7LGFER.mjs +0 -20
  322. package/dist/lib/node-esm/chunk-AT7LGFER.mjs.map +0 -7
  323. package/dist/lib/node-esm/chunk-HJJHLWKY.mjs.map +0 -7
  324. package/dist/lib/node-esm/chunk-HWNG4MEU.mjs +0 -15
  325. package/dist/lib/node-esm/chunk-HWNG4MEU.mjs.map +0 -7
  326. package/dist/lib/node-esm/chunk-OUBADVJE.mjs.map +0 -7
  327. package/dist/lib/node-esm/chunk-SSLBYZEY.mjs +0 -96
  328. package/dist/lib/node-esm/chunk-SSLBYZEY.mjs.map +0 -7
  329. package/dist/lib/node-esm/chunk-SXD6T2N4.mjs.map +0 -7
  330. package/dist/lib/node-esm/identity-created-IJQO6GCR.mjs.map +0 -7
  331. package/dist/lib/node-esm/intent-resolver-HSR27ME4.mjs.map +0 -7
  332. package/dist/lib/node-esm/react-root-HUK3ANLV.mjs.map +0 -7
  333. package/dist/lib/node-esm/react-surface-AGAWX7DD.mjs.map +0 -7
  334. package/dist/lib/node-esm/schema-defs-4MCDG4DV.mjs.map +0 -7
  335. package/dist/lib/node-esm/schema-tools-KWW5PTML.mjs +0 -126
  336. package/dist/lib/node-esm/schema-tools-KWW5PTML.mjs.map +0 -7
  337. package/dist/lib/node-esm/spaces-ready-UM2P3DCR.mjs.map +0 -7
  338. package/dist/lib/node-esm/state-C4IOXPZP.mjs.map +0 -7
  339. package/dist/types/src/capabilities/schema-tool.test.d.ts +0 -2
  340. package/dist/types/src/capabilities/schema-tool.test.d.ts.map +0 -1
  341. package/dist/types/src/capabilities/schema-tools.d.ts +0 -13
  342. package/dist/types/src/capabilities/schema-tools.d.ts.map +0 -1
  343. package/dist/types/src/components/CollectionMain.d.ts +0 -6
  344. package/dist/types/src/components/CollectionMain.d.ts.map +0 -1
  345. package/dist/types/src/components/JoinDialog.d.ts.map +0 -1
  346. package/dist/types/src/components/MembersContainer.d.ts.map +0 -1
  347. package/dist/types/src/components/MembersContainer.stories.d.ts +0 -8
  348. package/dist/types/src/components/MembersContainer.stories.d.ts.map +0 -1
  349. package/dist/types/src/components/PersistenceStatus.d.ts +0 -6
  350. package/dist/types/src/components/PersistenceStatus.d.ts.map +0 -1
  351. package/dist/types/src/components/PopoverRenameObject.d.ts +0 -7
  352. package/dist/types/src/components/PopoverRenameObject.d.ts.map +0 -1
  353. package/dist/types/src/components/PopoverRenameSpace.d.ts +0 -7
  354. package/dist/types/src/components/PopoverRenameSpace.d.ts.map +0 -1
  355. package/dist/types/src/components/SpacePresence.d.ts.map +0 -1
  356. package/dist/types/src/components/SpacePresence.stories.d.ts +0 -9
  357. package/dist/types/src/components/SpacePresence.stories.d.ts.map +0 -1
  358. package/src/capabilities/schema-tool.test.ts +0 -44
  359. package/src/capabilities/schema-tools.ts +0 -125
  360. package/src/components/MembersContainer.stories.tsx +0 -30
  361. package/src/components/PersistenceStatus.tsx +0 -84
@@ -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,23 +2,34 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { defineCapability, type Label } from '@dxos/app-framework';
5
+ import type * as Schema from 'effect/Schema';
6
+
7
+ import { type AnyIntentChain, type Label, defineCapability } from '@dxos/app-framework';
6
8
  import { type Space } from '@dxos/react-client/echo';
7
- import { type DataType } from '@dxos/schema';
8
- import { type Position, type DeepReadonly, type MaybePromise } from '@dxos/util';
9
+ import { type Collection } from '@dxos/schema';
10
+ import { type DeepReadonly, type Position } from '@dxos/util';
9
11
 
10
- import { SPACE_PLUGIN } from '../meta';
12
+ import { meta } from '../meta';
11
13
  import { type ObjectForm, type PluginState } from '../types';
12
14
 
13
15
  export namespace SpaceCapabilities {
14
- export const State = defineCapability<DeepReadonly<PluginState>>(`${SPACE_PLUGIN}/capability/state`);
15
- 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`);
16
18
 
17
19
  export type SettingsSection = { id: string; label: Label; position?: Position };
18
- export const SettingsSection = defineCapability<SettingsSection>(`${SPACE_PLUGIN}/capability/settings-section`);
20
+ export const SettingsSection = defineCapability<SettingsSection>(`${meta.id}/capability/settings-section`);
21
+
22
+ export type onCreateSpace = (params: { space: Space; rootCollection: Collection.Collection }) => AnyIntentChain;
23
+ export const onCreateSpace = defineCapability<onCreateSpace>(`${meta.id}/capability/on-space-created`);
19
24
 
20
- export type OnSpaceCreated = (params: { space: Space; rootCollection: DataType.Collection }) => MaybePromise<void>;
21
- export const OnSpaceCreated = defineCapability<OnSpaceCreated>(`${SPACE_PLUGIN}/capability/on-space-created`);
25
+ export type OnSchemaAdded = (params: {
26
+ space: Space;
27
+ schema: Schema.Schema.AnyNoContext;
28
+ // TODO(wittjosiah): This is leaky.
29
+ show?: boolean;
30
+ }) => AnyIntentChain;
31
+ export const OnSchemaAdded = defineCapability<OnSchemaAdded>(`${meta.id}/capability/on-schema-added`);
22
32
 
23
- export const ObjectForm = defineCapability<ObjectForm<any>>(`${SPACE_PLUGIN}/capability/object-form`);
33
+ // TODO(burdon): Should this be view? Forms are UI concepts? (associated with a View/schema).
34
+ export const ObjectForm = defineCapability<ObjectForm<any>>(`${meta.id}/capability/object-form`);
24
35
  }
@@ -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
  }
@@ -11,7 +11,6 @@ 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
13
  export const SchemaDefs = lazy(() => import('./schema-defs'));
14
- export const SchemaTools = lazy(() => import('./schema-tools'));
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,7 +2,7 @@
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,
@@ -12,31 +12,36 @@ import {
12
12
  createIntent,
13
13
  createResolver,
14
14
  } from '@dxos/app-framework';
15
- import { Obj, Ref, Relation, type Type } from '@dxos/echo';
15
+ import { Filter, Obj, Query, Ref, Relation, Type } from '@dxos/echo';
16
+ import { Serializer } from '@dxos/echo-db';
17
+ import { DatabaseService } from '@dxos/functions';
16
18
  import { invariant } from '@dxos/invariant';
17
19
  import { Migrations } from '@dxos/migrations';
18
20
  import { ClientCapabilities } from '@dxos/plugin-client';
19
21
  import { ObservabilityAction } from '@dxos/plugin-observability/types';
20
22
  import { EdgeReplicationSetting } from '@dxos/protocols/proto/dxos/echo/metadata';
21
- import { isSpace, getSpace, SpaceState, fullyQualifiedId } from '@dxos/react-client/echo';
23
+ import { SpaceState, getSpace, isSpace } from '@dxos/react-client/echo';
22
24
  import { Invitation, InvitationEncoder } from '@dxos/react-client/invitations';
23
25
  import { ATTENDABLE_PATH_SEPARATOR } from '@dxos/react-ui-attention';
24
- import { DataType } from '@dxos/schema';
26
+ import { iconValues } from '@dxos/react-ui-pickers';
27
+ import { hues } from '@dxos/react-ui-theme';
28
+ import { Collection, ProjectionModel, StoredSchema, getTypenameFromQuery } from '@dxos/schema';
25
29
 
26
- import { SpaceCapabilities } from './capabilities';
27
30
  import {
28
31
  CREATE_OBJECT_DIALOG,
29
32
  CREATE_SPACE_DIALOG,
30
- JOIN_DIALOG,
31
- POPOVER_RENAME_OBJECT,
32
- POPOVER_RENAME_SPACE,
33
33
  type CreateObjectDialogProps,
34
+ JOIN_DIALOG,
34
35
  type JoinDialogProps,
36
+ OBJECT_RENAME_POPOVER,
37
+ SPACE_RENAME_POPOVER,
35
38
  } from '../components';
36
39
  import { SpaceEvents } from '../events';
37
- import { SPACE_PLUGIN } from '../meta';
40
+ import { meta } from '../meta';
38
41
  import { CollectionAction, SpaceAction } from '../types';
39
- import { cloneObject, COMPOSER_SPACE_LOCK, getNestedObjects } from '../util';
42
+ import { COMPOSER_SPACE_LOCK, cloneObject, getNestedObjects } from '../util';
43
+
44
+ import { SpaceCapabilities } from './capabilities';
40
45
 
41
46
  // TODO(wittjosiah): Remove.
42
47
  const SPACE_MAX_OBJECTS = 500;
@@ -68,24 +73,40 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
68
73
  }),
69
74
  createResolver({
70
75
  intent: SpaceAction.Create,
71
- resolve: async ({ name, hue, icon, edgeReplication }) => {
76
+ resolve: async ({ name, hue: hue_, icon: icon_, edgeReplication }) => {
72
77
  const client = context.getCapability(ClientCapabilities.Client);
78
+ const hue = hue_ ?? hues[Math.floor(Math.random() * hues.length)];
79
+ const icon = icon_ ?? iconValues[Math.floor(Math.random() * iconValues.length)];
73
80
  const space = await client.spaces.create({ name, hue, icon });
74
81
  if (edgeReplication) {
75
82
  await space.internal.setEdgeReplicationPreference(EdgeReplicationSetting.ENABLED);
76
83
  }
77
84
  await space.waitUntilReady();
78
- const collection = Obj.make(DataType.Collection, { objects: [] });
79
- space.properties[DataType.Collection.typename] = Ref.make(collection);
80
85
 
86
+ // Create root collection.
87
+ const collection = Obj.make(Collection.Collection, { objects: [] });
88
+ space.properties[Collection.Collection.typename] = Ref.make(collection);
89
+
90
+ // Set current migration version.
81
91
  if (Migrations.versionProperty) {
82
92
  space.properties[Migrations.versionProperty] = Migrations.targetVersion;
83
93
  }
84
94
 
95
+ // Create records smart collection.
96
+ collection.objects.push(
97
+ Ref.make(
98
+ Obj.make(Collection.QueryCollection, {
99
+ // NOTE: This is specifically Filter.typename due to current limitations in query collection parsing.
100
+ query: Query.select(Filter.typename(StoredSchema.typename)).ast,
101
+ }),
102
+ ),
103
+ );
104
+
105
+ // Allow other plugins to add default content.
85
106
  await context.activatePromise(SpaceEvents.SpaceCreated);
86
- const onSpaceCreatedCallbacks = context.getCapabilities(SpaceCapabilities.OnSpaceCreated);
87
- await Promise.all(
88
- onSpaceCreatedCallbacks.map((onSpaceCreated) => onSpaceCreated({ space, rootCollection: collection })),
107
+ const onCreateSpaceCallbacks = context.getCapabilities(SpaceCapabilities.onCreateSpace);
108
+ const spaceCreatedIntents = onCreateSpaceCallbacks.map((onCreateSpace) =>
109
+ onCreateSpace({ space, rootCollection: collection }),
89
110
  );
90
111
 
91
112
  return {
@@ -95,6 +116,7 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
95
116
  space,
96
117
  },
97
118
  intents: [
119
+ ...spaceCreatedIntents,
98
120
  ...(observability
99
121
  ? [
100
122
  createIntent(ObservabilityAction.SendEvent, {
@@ -242,7 +264,7 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
242
264
  intents: [
243
265
  createIntent(LayoutAction.UpdatePopover, {
244
266
  part: 'popover',
245
- subject: POPOVER_RENAME_SPACE,
267
+ subject: SPACE_RENAME_POPOVER,
246
268
  options: {
247
269
  anchorId: `dxos.org/ui/${caller}/${space.id}`,
248
270
  props: space,
@@ -309,9 +331,124 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
309
331
  };
310
332
  },
311
333
  }),
334
+ createResolver({
335
+ intent: SpaceAction.Snapshot,
336
+ resolve: async ({ space, query }) => {
337
+ const backup = await new Serializer().export(space.db, query && Query.fromAst(query));
338
+ return {
339
+ data: {
340
+ snapshot: new Blob([JSON.stringify(backup, null, 2)], { type: 'application/json' }),
341
+ },
342
+ };
343
+ },
344
+ }),
345
+ createResolver({
346
+ intent: SpaceAction.UseStaticSchema,
347
+ resolve: async ({ space, typename, show }) => {
348
+ const client = context.getCapability(ClientCapabilities.Client);
349
+ const schema = client.graph.schemaRegistry.schemas.find((schema) => Type.getTypename(schema) === typename);
350
+ invariant(schema, `Schema not found: ${typename}`);
351
+
352
+ if (!space.properties.staticRecords) {
353
+ space.properties.staticRecords = [];
354
+ }
355
+
356
+ if (!space.properties.staticRecords.includes(typename)) {
357
+ space.properties.staticRecords.push(typename);
358
+ }
359
+
360
+ await context.activatePromise(SpaceEvents.SchemaAdded);
361
+ const onSchemaAdded = context.getCapabilities(SpaceCapabilities.OnSchemaAdded);
362
+ const schemaAddedIntents = onSchemaAdded.map((onSchemaAdded) => onSchemaAdded({ space, schema, show }));
363
+
364
+ return {
365
+ data: {},
366
+ intents: [
367
+ ...schemaAddedIntents,
368
+ ...(observability
369
+ ? [
370
+ createIntent(ObservabilityAction.SendEvent, {
371
+ name: 'space.schema.use',
372
+ properties: {
373
+ spaceId: space.id,
374
+ typename: Type.getTypename(schema),
375
+ },
376
+ }),
377
+ ]
378
+ : []),
379
+ ],
380
+ };
381
+ },
382
+ }),
383
+ createResolver({
384
+ intent: SpaceAction.AddSchema,
385
+ resolve: async ({ space, name, typename, version, schema: schemaInput, show }) => {
386
+ const [schema] = await space.db.schemaRegistry.register([schemaInput]);
387
+ if (name) {
388
+ schema.storedSchema.name = name;
389
+ }
390
+ if (typename) {
391
+ schema.storedSchema.typename = typename;
392
+ }
393
+ if (version) {
394
+ schema.storedSchema.version = version;
395
+ }
396
+
397
+ await context.activatePromise(SpaceEvents.SchemaAdded);
398
+ const onSchemaAdded = context.getCapabilities(SpaceCapabilities.OnSchemaAdded);
399
+ const schemaAddedIntents = onSchemaAdded.map((onSchemaAdded) => onSchemaAdded({ space, schema, show }));
400
+
401
+ return {
402
+ data: {
403
+ id: schema.id,
404
+ object: schema.storedSchema,
405
+ schema,
406
+ },
407
+ intents: [
408
+ ...schemaAddedIntents,
409
+ ...(observability
410
+ ? [
411
+ createIntent(ObservabilityAction.SendEvent, {
412
+ name: 'space.schema.add',
413
+ properties: {
414
+ spaceId: space.id,
415
+ objectId: schema.id,
416
+ typename: schema.typename,
417
+ },
418
+ }),
419
+ ]
420
+ : []),
421
+ ],
422
+ };
423
+ },
424
+ }),
425
+ createResolver({
426
+ intent: SpaceAction.DeleteField,
427
+ resolve: async ({ view, fieldId, deletionData }, undo) => {
428
+ const space = getSpace(view);
429
+ invariant(space);
430
+ const typename = getTypenameFromQuery(view.query.ast);
431
+ invariant(typename);
432
+ const schema = await space.db.schemaRegistry.query({ typename }).firstOrUndefined();
433
+ invariant(schema);
434
+ const projection = new ProjectionModel(schema.jsonSchema, view.projection);
435
+ if (!undo) {
436
+ const { deleted, index } = projection.deleteFieldProjection(fieldId);
437
+ return {
438
+ undoable: {
439
+ message: ['field deleted label', { ns: meta.id }],
440
+ data: { deletionData: { ...deleted, index } },
441
+ },
442
+ };
443
+ } else if (undo && deletionData) {
444
+ const { field, props, index } = deletionData;
445
+ projection.setFieldProjection({ field, props }, index);
446
+ }
447
+ },
448
+ }),
312
449
  createResolver({
313
450
  intent: SpaceAction.OpenCreateObject,
314
- resolve: ({ target, typename, navigable = true }) => {
451
+ resolve: ({ target, views, typename, initialFormValues, navigable = true, onCreateObject }) => {
315
452
  const state = context.getCapability(SpaceCapabilities.State);
316
453
 
317
454
  return {
@@ -323,11 +460,14 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
323
460
  blockAlign: 'start',
324
461
  props: {
325
462
  target,
463
+ views,
326
464
  typename,
465
+ initialFormValues,
466
+ onCreateObject,
327
467
  shouldNavigate: navigable
328
468
  ? (object: Obj.Any) => {
329
- const isCollection = Obj.instanceOf(DataType.Collection, object);
330
- const isQueryCollection = Obj.instanceOf(DataType.QueryCollection, object);
469
+ const isCollection = Obj.instanceOf(Collection.Collection, object);
470
+ const isQueryCollection = Obj.instanceOf(Collection.QueryCollection, object);
331
471
  return (!isCollection && !isQueryCollection) || state.navigableCollections;
332
472
  }
333
473
  : () => false,
@@ -351,13 +491,13 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
351
491
  createIntent(LayoutAction.AddToast, {
352
492
  part: 'toast',
353
493
  subject: {
354
- id: `${SPACE_PLUGIN}/space-limit`,
355
- title: ['space limit label', { ns: SPACE_PLUGIN }],
356
- description: ['space limit description', { ns: SPACE_PLUGIN }],
494
+ id: `${meta.id}/space-limit`,
495
+ title: ['space limit label', { ns: meta.id }],
496
+ description: ['space limit description', { ns: meta.id }],
357
497
  duration: 5_000,
358
498
  icon: 'ph--warning--regular',
359
- actionLabel: ['remove deleted objects label', { ns: SPACE_PLUGIN }],
360
- actionAlt: ['remove deleted objects alt', { ns: SPACE_PLUGIN }],
499
+ actionLabel: ['remove deleted objects label', { ns: meta.id }],
500
+ actionAlt: ['remove deleted objects alt', { ns: meta.id }],
361
501
  closeLabel: ['close label', { ns: 'os' }],
362
502
  onAction: () => space.db.coreDatabase.unlinkDeletedObjects(),
363
503
  },
@@ -376,25 +516,18 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
376
516
  };
377
517
  }
378
518
 
379
- if (Obj.instanceOf(DataType.Collection, target)) {
380
- target.objects.push(Ref.make(object));
381
- } else if (isSpace(target) && hidden) {
382
- space.db.add(object);
383
- } else if (isSpace(target)) {
384
- const collection = space.properties[DataType.Collection.typename]?.target;
385
- if (Obj.instanceOf(DataType.Collection, collection)) {
386
- collection.objects.push(Ref.make(object));
387
- } else {
388
- // TODO(wittjosiah): Can't add non-echo objects by including in a collection because of types.
389
- const collection = Obj.make(DataType.Collection, { objects: [Ref.make(object)] });
390
- space.properties[DataType.Collection.typename] = Ref.make(collection);
391
- }
392
- }
519
+ await Effect.gen(function* () {
520
+ yield* Collection.add({
521
+ object,
522
+ target: isSpace(target) ? undefined : target,
523
+ hidden,
524
+ });
525
+ }).pipe(Effect.provide(DatabaseService.layer(space.db)), Effect.runPromise);
393
526
 
394
527
  return {
395
528
  data: {
396
- id: fullyQualifiedId(object),
397
- subject: [fullyQualifiedId(object)],
529
+ id: Obj.getDXN(object).toString(),
530
+ subject: [Obj.getDXN(object).toString()],
398
531
  object,
399
532
  },
400
533
  intents: [
@@ -443,26 +576,26 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
443
576
  const openObjectIds = new Set<string>(layout.active);
444
577
 
445
578
  if (!undo) {
446
- const parentCollection: DataType.Collection =
447
- target ?? space.properties[DataType.Collection.typename]?.target;
579
+ const parentCollection: Collection.Collection =
580
+ target ?? space.properties[Collection.Collection.typename]?.target;
448
581
  const nestedObjectsList = await Promise.all(objects.map((obj) => getNestedObjects(obj, resolve)));
449
582
 
450
583
  const deletionData = {
451
584
  objects,
452
585
  parentCollection,
453
586
  indices: objects.map((obj) =>
454
- Obj.instanceOf(DataType.Collection, parentCollection)
587
+ Obj.instanceOf(Collection.Collection, parentCollection)
455
588
  ? parentCollection.objects.findIndex((object) => object.target === obj)
456
589
  : -1,
457
590
  ),
458
591
  nestedObjectsList,
459
592
  wasActive: objects
460
593
  .flatMap((obj, i) => [obj, ...nestedObjectsList[i]])
461
- .map((obj) => fullyQualifiedId(obj))
594
+ .map((obj) => Obj.getDXN(obj).toString())
462
595
  .filter((id) => openObjectIds.has(id)),
463
596
  } satisfies SpaceAction.DeletionData;
464
597
 
465
- if (Obj.instanceOf(DataType.Collection, deletionData.parentCollection)) {
598
+ if (Obj.instanceOf(Collection.Collection, deletionData.parentCollection)) {
466
599
  [...deletionData.indices]
467
600
  .sort((a, b) => b - a)
468
601
  .forEach((index: number) => {
@@ -477,7 +610,7 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
477
610
  });
478
611
  objects.forEach((obj) => space.db.remove(obj));
479
612
 
480
- const undoMessageKey = objects.some((obj) => Obj.instanceOf(DataType.Collection, obj))
613
+ const undoMessageKey = objects.some((obj) => Obj.instanceOf(Collection.Collection, obj))
481
614
  ? 'collection deleted label'
482
615
  : objects.length > 1
483
616
  ? 'objects deleted label'
@@ -486,7 +619,7 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
486
619
  return {
487
620
  undoable: {
488
621
  // TODO(ZaymonFC): Pluralize if more than one object.
489
- message: [undoMessageKey, { ns: SPACE_PLUGIN }],
622
+ message: [undoMessageKey, { ns: meta.id }],
490
623
  data: { deletionData },
491
624
  },
492
625
  intents:
@@ -504,7 +637,7 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
504
637
  if (
505
638
  deletionData?.objects?.length &&
506
639
  deletionData.objects.every(Obj.isObject) &&
507
- Obj.instanceOf(DataType.Collection, deletionData.parentCollection)
640
+ Obj.instanceOf(Collection.Collection, deletionData.parentCollection)
508
641
  ) {
509
642
  // Restore the object to the space.
510
643
  const restoredObjects = deletionData.objects.map((obj: Type.Expando) => space.db.add(obj));
@@ -541,9 +674,9 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
541
674
  intents: [
542
675
  createIntent(LayoutAction.UpdatePopover, {
543
676
  part: 'popover',
544
- subject: POPOVER_RENAME_OBJECT,
677
+ subject: OBJECT_RENAME_POPOVER,
545
678
  options: {
546
- anchorId: `dxos.org/ui/${caller}/${fullyQualifiedId(object)}`,
679
+ anchorId: `dxos.org/ui/${caller}/${Obj.getDXN(object).toString()}`,
547
680
  props: object,
548
681
  },
549
682
  }),
@@ -555,7 +688,6 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
555
688
  resolve: async ({ object, target }) => {
556
689
  const space = isSpace(target) ? target : getSpace(target);
557
690
  invariant(space, 'Space not found.');
558
-
559
691
  const newObject = await cloneObject(object, resolve, space);
560
692
  return {
561
693
  intents: [createIntent(SpaceAction.AddObject, { object: newObject, target })],
@@ -572,13 +704,18 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
572
704
  createResolver({
573
705
  intent: CollectionAction.Create,
574
706
  resolve: async ({ name }) => ({
575
- data: { object: Obj.make(DataType.Collection, { name, objects: [] }) },
707
+ data: { object: Obj.make(Collection.Collection, { name, objects: [] }) },
576
708
  }),
577
709
  }),
578
710
  createResolver({
579
711
  intent: CollectionAction.CreateQueryCollection,
580
712
  resolve: async ({ name, typename }) => ({
581
- data: { object: Obj.make(DataType.QueryCollection, { name, query: { typename } }) },
713
+ data: {
714
+ object: Obj.make(Collection.QueryCollection, {
715
+ name,
716
+ query: Query.select(Filter.typename(typename)).ast,
717
+ }),
718
+ },
582
719
  }),
583
720
  }),
584
721
  ]);
@@ -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;