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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (389) hide show
  1. package/dist/lib/browser/{CollectionMain-D2B75XBS.mjs → CollectionArticle-WTHWY4YS.mjs} +10 -10
  2. package/dist/lib/browser/CollectionArticle-WTHWY4YS.mjs.map +7 -0
  3. package/dist/lib/browser/ObjectCardStack-TE7AWPMH.mjs +144 -0
  4. package/dist/lib/browser/ObjectCardStack-TE7AWPMH.mjs.map +7 -0
  5. package/dist/lib/browser/ObjectDetails-666IBRHE.mjs +144 -0
  6. package/dist/lib/browser/ObjectDetails-666IBRHE.mjs.map +7 -0
  7. package/dist/lib/browser/RecordArticle-2PFEBPXY.mjs +116 -0
  8. package/dist/lib/browser/RecordArticle-2PFEBPXY.mjs.map +7 -0
  9. package/dist/lib/browser/app-graph-builder-USKWFIDK.mjs +551 -0
  10. package/dist/lib/browser/app-graph-builder-USKWFIDK.mjs.map +7 -0
  11. package/dist/lib/browser/{app-graph-serializer-H6AW7KGS.mjs → app-graph-serializer-SXIQ425K.mjs} +19 -19
  12. package/dist/lib/browser/app-graph-serializer-SXIQ425K.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-VLBRSGJ2.mjs → chunk-5CSSKOWR.mjs} +42 -16
  14. package/dist/lib/browser/chunk-5CSSKOWR.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-C6DAPIFF.mjs +20 -0
  16. package/dist/lib/browser/chunk-C6DAPIFF.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-E4BEMEZ3.mjs +399 -0
  18. package/dist/lib/browser/chunk-E4BEMEZ3.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-XUYKJUU7.mjs → chunk-IJCMB5B5.mjs} +269 -145
  20. package/dist/lib/browser/chunk-IJCMB5B5.mjs.map +7 -0
  21. package/dist/lib/browser/{chunk-QACNNDOT.mjs → chunk-POFUXISV.mjs} +69 -62
  22. package/dist/lib/browser/chunk-POFUXISV.mjs.map +7 -0
  23. package/dist/lib/browser/chunk-VZBIIYFM.mjs +16 -0
  24. package/dist/lib/browser/chunk-VZBIIYFM.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-WJXU4GKV.mjs +19 -0
  26. package/dist/lib/browser/chunk-WJXU4GKV.mjs.map +7 -0
  27. package/dist/lib/browser/{chunk-V7MJSSBQ.mjs → chunk-XKQCDLXX.mjs} +734 -615
  28. package/dist/lib/browser/chunk-XKQCDLXX.mjs.map +7 -0
  29. package/dist/lib/browser/{identity-created-23XJJV2N.mjs → identity-created-NAXTPQXE.mjs} +6 -6
  30. package/dist/lib/browser/identity-created-NAXTPQXE.mjs.map +7 -0
  31. package/dist/lib/browser/index.mjs +92 -139
  32. package/dist/lib/browser/index.mjs.map +3 -3
  33. package/dist/lib/browser/{intent-resolver-TIXVDYN7.mjs → intent-resolver-QEIM7NQT.mjs} +118 -109
  34. package/dist/lib/browser/intent-resolver-QEIM7NQT.mjs.map +7 -0
  35. package/dist/lib/browser/meta.json +1 -1
  36. package/dist/lib/browser/react-root-T6ZETLD2.mjs +30 -0
  37. package/dist/lib/browser/react-root-T6ZETLD2.mjs.map +7 -0
  38. package/dist/lib/browser/{react-surface-TPNLWJJH.mjs → react-surface-MLN5BZ2G.mjs} +120 -120
  39. package/dist/lib/browser/react-surface-MLN5BZ2G.mjs.map +7 -0
  40. package/dist/lib/browser/repair-CNLE35NF.mjs +44 -0
  41. package/dist/lib/browser/repair-CNLE35NF.mjs.map +7 -0
  42. package/dist/lib/browser/{settings-4IMP5RYT.mjs → settings-EGTCHS7U.mjs} +5 -5
  43. package/dist/lib/browser/{settings-4IMP5RYT.mjs.map → settings-EGTCHS7U.mjs.map} +1 -1
  44. package/dist/lib/browser/{spaces-ready-TOPG6IV4.mjs → spaces-ready-YS4BBZXW.mjs} +29 -20
  45. package/dist/lib/browser/spaces-ready-YS4BBZXW.mjs.map +7 -0
  46. package/dist/lib/browser/{state-QYZAB45H.mjs → state-C7N6EDDZ.mjs} +7 -7
  47. package/dist/lib/browser/state-C7N6EDDZ.mjs.map +7 -0
  48. package/dist/lib/browser/types/index.mjs +10 -4
  49. package/dist/lib/node-esm/{CollectionMain-ZJIFCWKZ.mjs → CollectionArticle-KHXYT3SH.mjs} +10 -10
  50. package/dist/lib/node-esm/CollectionArticle-KHXYT3SH.mjs.map +7 -0
  51. package/dist/lib/node-esm/ObjectCardStack-AAKMAQ6T.mjs +145 -0
  52. package/dist/lib/node-esm/ObjectCardStack-AAKMAQ6T.mjs.map +7 -0
  53. package/dist/lib/node-esm/ObjectDetails-TZ5YKXGN.mjs +145 -0
  54. package/dist/lib/node-esm/ObjectDetails-TZ5YKXGN.mjs.map +7 -0
  55. package/dist/lib/node-esm/RecordArticle-SSJ7PULS.mjs +117 -0
  56. package/dist/lib/node-esm/RecordArticle-SSJ7PULS.mjs.map +7 -0
  57. package/dist/lib/node-esm/app-graph-builder-QRQ5EQLB.mjs +552 -0
  58. package/dist/lib/node-esm/app-graph-builder-QRQ5EQLB.mjs.map +7 -0
  59. package/dist/lib/node-esm/{app-graph-serializer-2ICUGQQT.mjs → app-graph-serializer-P2X4W7LI.mjs} +19 -19
  60. package/dist/lib/node-esm/app-graph-serializer-P2X4W7LI.mjs.map +7 -0
  61. package/dist/lib/node-esm/{chunk-4AOMYKDE.mjs → chunk-3D4NGZPW.mjs} +269 -145
  62. package/dist/lib/node-esm/chunk-3D4NGZPW.mjs.map +7 -0
  63. package/dist/lib/node-esm/{chunk-P442DOQ3.mjs → chunk-AX3UGL5D.mjs} +69 -62
  64. package/dist/lib/node-esm/chunk-AX3UGL5D.mjs.map +7 -0
  65. package/dist/lib/node-esm/chunk-BDEFTL6K.mjs +18 -0
  66. package/dist/lib/node-esm/chunk-BDEFTL6K.mjs.map +7 -0
  67. package/dist/lib/node-esm/chunk-H4JILUJK.mjs +20 -0
  68. package/dist/lib/node-esm/chunk-H4JILUJK.mjs.map +7 -0
  69. package/dist/lib/node-esm/chunk-QQQE2ZCX.mjs +400 -0
  70. package/dist/lib/node-esm/chunk-QQQE2ZCX.mjs.map +7 -0
  71. package/dist/lib/node-esm/{chunk-SSLBYZEY.mjs → chunk-UMZ7G6G4.mjs} +41 -16
  72. package/dist/lib/node-esm/chunk-UMZ7G6G4.mjs.map +7 -0
  73. package/dist/lib/node-esm/chunk-WWGV5FJM.mjs +21 -0
  74. package/dist/lib/node-esm/chunk-WWGV5FJM.mjs.map +7 -0
  75. package/dist/lib/node-esm/{chunk-6X5DLJM5.mjs → chunk-XD532BVR.mjs} +734 -615
  76. package/dist/lib/node-esm/chunk-XD532BVR.mjs.map +7 -0
  77. package/dist/lib/node-esm/{identity-created-IJQO6GCR.mjs → identity-created-OXLKCJE3.mjs} +6 -6
  78. package/dist/lib/node-esm/identity-created-OXLKCJE3.mjs.map +7 -0
  79. package/dist/lib/node-esm/index.mjs +92 -139
  80. package/dist/lib/node-esm/index.mjs.map +3 -3
  81. package/dist/lib/node-esm/{intent-resolver-MHGHRGDT.mjs → intent-resolver-ZWCBVABN.mjs} +118 -109
  82. package/dist/lib/node-esm/intent-resolver-ZWCBVABN.mjs.map +7 -0
  83. package/dist/lib/node-esm/meta.json +1 -1
  84. package/dist/lib/node-esm/{react-root-KW3TGJGY.mjs → react-root-SKB4UJ4K.mjs} +13 -12
  85. package/dist/lib/node-esm/react-root-SKB4UJ4K.mjs.map +7 -0
  86. package/dist/lib/node-esm/{react-surface-UUIUUD6P.mjs → react-surface-BVZGNSBB.mjs} +120 -120
  87. package/dist/lib/node-esm/react-surface-BVZGNSBB.mjs.map +7 -0
  88. package/dist/lib/node-esm/repair-EHZS6MFY.mjs +45 -0
  89. package/dist/lib/node-esm/repair-EHZS6MFY.mjs.map +7 -0
  90. package/dist/lib/node-esm/{settings-SAOBPND3.mjs → settings-N3F6JCIR.mjs} +5 -5
  91. package/dist/lib/node-esm/{settings-SAOBPND3.mjs.map → settings-N3F6JCIR.mjs.map} +1 -1
  92. package/dist/lib/node-esm/{spaces-ready-HIUKNDZK.mjs → spaces-ready-U2K5P4LB.mjs} +29 -20
  93. package/dist/lib/node-esm/spaces-ready-U2K5P4LB.mjs.map +7 -0
  94. package/dist/lib/node-esm/{state-ZVEHQ4BJ.mjs → state-45TXZQJ6.mjs} +7 -7
  95. package/dist/lib/node-esm/state-45TXZQJ6.mjs.map +7 -0
  96. package/dist/lib/node-esm/types/index.mjs +10 -4
  97. package/dist/types/src/SpacePlugin.d.ts +1 -1
  98. package/dist/types/src/SpacePlugin.d.ts.map +1 -1
  99. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
  100. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  101. package/dist/types/src/capabilities/app-graph-serializer.d.ts +1 -1
  102. package/dist/types/src/capabilities/capabilities.d.ts +14 -8
  103. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  104. package/dist/types/src/capabilities/identity-created.d.ts +1 -1
  105. package/dist/types/src/capabilities/identity-created.d.ts.map +1 -1
  106. package/dist/types/src/capabilities/index.d.ts +11 -12
  107. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  108. package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
  109. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  110. package/dist/types/src/capabilities/react-root.d.ts +2 -2
  111. package/dist/types/src/capabilities/react-root.d.ts.map +1 -1
  112. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  113. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  114. package/dist/types/src/capabilities/repair.d.ts +4 -0
  115. package/dist/types/src/capabilities/repair.d.ts.map +1 -0
  116. package/dist/types/src/capabilities/settings.d.ts +1 -1
  117. package/dist/types/src/capabilities/spaces-ready.d.ts +1 -1
  118. package/dist/types/src/capabilities/spaces-ready.d.ts.map +1 -1
  119. package/dist/types/src/capabilities/state.d.ts +1 -1
  120. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  121. package/dist/types/src/components/AwaitingObject.d.ts.map +1 -1
  122. package/dist/types/src/components/CollectionArticle.d.ts +6 -0
  123. package/dist/types/src/components/CollectionArticle.d.ts.map +1 -0
  124. package/dist/types/src/components/CollectionSection.d.ts +3 -4
  125. package/dist/types/src/components/CollectionSection.d.ts.map +1 -1
  126. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts +3 -3
  127. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
  128. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts +1588 -4
  129. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts.map +1 -1
  130. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +18 -9
  131. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
  132. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts +1 -1
  133. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts.map +1 -1
  134. package/dist/types/src/components/{JoinDialog.d.ts → JoinDialog/JoinDialog.d.ts} +1 -1
  135. package/dist/types/src/components/JoinDialog/JoinDialog.d.ts.map +1 -0
  136. package/dist/types/src/components/JoinDialog/index.d.ts +2 -0
  137. package/dist/types/src/components/JoinDialog/index.d.ts.map +1 -0
  138. package/dist/types/src/components/{MembersContainer.d.ts → MembersContainer/MembersContainer.d.ts} +3 -2
  139. package/dist/types/src/components/MembersContainer/MembersContainer.d.ts.map +1 -0
  140. package/dist/types/src/components/MembersContainer/MembersContainer.stories.d.ts +1591 -0
  141. package/dist/types/src/components/MembersContainer/MembersContainer.stories.d.ts.map +1 -0
  142. package/dist/types/src/components/MembersContainer/index.d.ts +2 -0
  143. package/dist/types/src/components/MembersContainer/index.d.ts.map +1 -0
  144. package/dist/types/src/components/ObjectCardStack/ObjectCardStack.d.ts +8 -0
  145. package/dist/types/src/components/ObjectCardStack/ObjectCardStack.d.ts.map +1 -0
  146. package/dist/types/src/components/ObjectCardStack/ObjectForm.d.ts +9 -0
  147. package/dist/types/src/components/ObjectCardStack/ObjectForm.d.ts.map +1 -0
  148. package/dist/types/src/components/ObjectCardStack/index.d.ts +3 -0
  149. package/dist/types/src/components/ObjectCardStack/index.d.ts.map +1 -0
  150. package/dist/types/src/components/{ObjectSettings → ObjectDetails}/BaseObjectSettings.d.ts +2 -2
  151. package/dist/types/src/components/ObjectDetails/BaseObjectSettings.d.ts.map +1 -0
  152. package/dist/types/src/components/ObjectDetails/BaseObjectSettings.stories.d.ts +1424 -0
  153. package/dist/types/src/components/ObjectDetails/BaseObjectSettings.stories.d.ts.map +1 -0
  154. package/dist/types/src/components/ObjectDetails/ForeignKeys.d.ts +8 -0
  155. package/dist/types/src/components/ObjectDetails/ForeignKeys.d.ts.map +1 -0
  156. package/dist/types/src/components/ObjectDetails/ObjectDetails.d.ts +8 -0
  157. package/dist/types/src/components/ObjectDetails/ObjectDetails.d.ts.map +1 -0
  158. package/dist/types/src/components/ObjectDetails/index.d.ts +3 -0
  159. package/dist/types/src/components/ObjectDetails/index.d.ts.map +1 -0
  160. package/dist/types/src/components/ObjectRenamePopover/ObjectRenamePopover.d.ts +7 -0
  161. package/dist/types/src/components/ObjectRenamePopover/ObjectRenamePopover.d.ts.map +1 -0
  162. package/dist/types/src/components/ObjectRenamePopover/index.d.ts +2 -0
  163. package/dist/types/src/components/ObjectRenamePopover/index.d.ts.map +1 -0
  164. package/dist/types/src/components/RecordArticle.d.ts +5 -0
  165. package/dist/types/src/components/RecordArticle.d.ts.map +1 -0
  166. package/dist/types/src/components/RecordArticle.stories.d.ts +1591 -0
  167. package/dist/types/src/components/RecordArticle.stories.d.ts.map +1 -0
  168. package/dist/types/src/components/SchemaContainer.d.ts +2 -2
  169. package/dist/types/src/components/SchemaContainer.d.ts.map +1 -1
  170. package/dist/types/src/components/SpacePluginSettings.d.ts.map +1 -1
  171. package/dist/types/src/components/{SpacePresence.d.ts → SpacePresence/SpacePresence.d.ts} +6 -5
  172. package/dist/types/src/components/SpacePresence/SpacePresence.d.ts.map +1 -0
  173. package/dist/types/src/components/SpacePresence/SpacePresence.stories.d.ts +1421 -0
  174. package/dist/types/src/components/SpacePresence/SpacePresence.stories.d.ts.map +1 -0
  175. package/dist/types/src/components/SpacePresence/index.d.ts +2 -0
  176. package/dist/types/src/components/SpacePresence/index.d.ts.map +1 -0
  177. package/dist/types/src/components/SpaceRenamePopover/SpaceRenamePopover.d.ts +7 -0
  178. package/dist/types/src/components/SpaceRenamePopover/SpaceRenamePopover.d.ts.map +1 -0
  179. package/dist/types/src/components/SpaceRenamePopover/index.d.ts +2 -0
  180. package/dist/types/src/components/SpaceRenamePopover/index.d.ts.map +1 -0
  181. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts +1 -1
  182. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
  183. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts +1421 -4
  184. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts.map +1 -1
  185. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
  186. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts +1422 -5
  187. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
  188. package/dist/types/src/components/ViewEditor.d.ts +3 -4
  189. package/dist/types/src/components/ViewEditor.d.ts.map +1 -1
  190. package/dist/types/src/components/index.d.ts +10 -12
  191. package/dist/types/src/components/index.d.ts.map +1 -1
  192. package/dist/types/src/events.d.ts.map +1 -1
  193. package/dist/types/src/helpers/index.d.ts +2 -0
  194. package/dist/types/src/helpers/index.d.ts.map +1 -0
  195. package/dist/types/src/helpers/query.d.ts +7 -0
  196. package/dist/types/src/helpers/query.d.ts.map +1 -0
  197. package/dist/types/src/helpers/query.test.d.ts +2 -0
  198. package/dist/types/src/helpers/query.test.d.ts.map +1 -0
  199. package/dist/types/src/hooks/index.d.ts +1 -0
  200. package/dist/types/src/hooks/index.d.ts.map +1 -1
  201. package/dist/types/src/hooks/useActiveSpace.d.ts.map +1 -1
  202. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts +2 -8
  203. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts.map +1 -1
  204. package/dist/types/src/hooks/usePath.d.ts +1 -1
  205. package/dist/types/src/hooks/usePath.d.ts.map +1 -1
  206. package/dist/types/src/hooks/useTypeOptions.d.ts +10 -0
  207. package/dist/types/src/hooks/useTypeOptions.d.ts.map +1 -0
  208. package/dist/types/src/index.d.ts +1 -0
  209. package/dist/types/src/index.d.ts.map +1 -1
  210. package/dist/types/src/meta.d.ts +0 -1
  211. package/dist/types/src/meta.d.ts.map +1 -1
  212. package/dist/types/src/translations.d.ts +1261 -67
  213. package/dist/types/src/translations.d.ts.map +1 -1
  214. package/dist/types/src/types/form.d.ts +22 -0
  215. package/dist/types/src/types/form.d.ts.map +1 -0
  216. package/dist/types/src/types/index.d.ts +1 -0
  217. package/dist/types/src/types/index.d.ts.map +1 -1
  218. package/dist/types/src/types/types.d.ts +96 -157
  219. package/dist/types/src/types/types.d.ts.map +1 -1
  220. package/dist/types/src/util.d.ts +25 -36
  221. package/dist/types/src/util.d.ts.map +1 -1
  222. package/dist/types/tsconfig.tsbuildinfo +1 -1
  223. package/package.json +70 -59
  224. package/src/SpacePlugin.ts +182 -222
  225. package/src/capabilities/app-graph-builder.ts +271 -246
  226. package/src/capabilities/app-graph-serializer.ts +12 -12
  227. package/src/capabilities/capabilities.ts +28 -17
  228. package/src/capabilities/identity-created.ts +3 -3
  229. package/src/capabilities/index.ts +1 -2
  230. package/src/capabilities/intent-resolver.ts +92 -81
  231. package/src/capabilities/react-root.tsx +6 -4
  232. package/src/capabilities/react-surface.tsx +127 -155
  233. package/src/capabilities/repair.ts +57 -0
  234. package/src/capabilities/spaces-ready.ts +38 -17
  235. package/src/capabilities/state.ts +5 -4
  236. package/src/components/AwaitingObject.tsx +12 -14
  237. package/src/components/{CollectionMain.tsx → CollectionArticle.tsx} +7 -6
  238. package/src/components/CollectionSection.tsx +8 -6
  239. package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +17 -16
  240. package/src/components/CreateDialog/CreateObjectDialog.tsx +74 -46
  241. package/src/components/CreateDialog/CreateObjectPanel.tsx +65 -43
  242. package/src/components/CreateDialog/CreateSpaceDialog.tsx +45 -22
  243. package/src/components/{JoinDialog.tsx → JoinDialog/JoinDialog.tsx} +26 -10
  244. package/src/components/JoinDialog/index.ts +5 -0
  245. package/src/components/MembersContainer/MembersContainer.stories.tsx +56 -0
  246. package/src/components/{MembersContainer.tsx → MembersContainer/MembersContainer.tsx} +22 -21
  247. package/src/components/MembersContainer/index.ts +5 -0
  248. package/src/components/MenuFooter.tsx +2 -2
  249. package/src/components/ObjectCardStack/ObjectCardStack.tsx +64 -0
  250. package/src/components/ObjectCardStack/ObjectForm.tsx +90 -0
  251. package/src/components/ObjectCardStack/index.ts +7 -0
  252. package/src/components/ObjectDetails/BaseObjectSettings.stories.tsx +63 -0
  253. package/src/components/ObjectDetails/BaseObjectSettings.tsx +118 -0
  254. package/src/components/{ObjectSettings → ObjectDetails}/ForeignKeys.tsx +8 -8
  255. package/src/components/ObjectDetails/ObjectDetails.tsx +35 -0
  256. package/src/components/ObjectDetails/index.ts +7 -0
  257. package/src/components/{PopoverRenameObject.tsx → ObjectRenamePopover/ObjectRenamePopover.tsx} +10 -16
  258. package/src/components/ObjectRenamePopover/index.ts +5 -0
  259. package/src/components/RecordArticle.stories.tsx +115 -0
  260. package/src/components/RecordArticle.tsx +114 -0
  261. package/src/components/SchemaContainer.tsx +26 -29
  262. package/src/components/SpacePluginSettings.tsx +16 -11
  263. package/src/components/{SpacePresence.stories.tsx → SpacePresence/SpacePresence.stories.tsx} +24 -23
  264. package/src/components/{SpacePresence.tsx → SpacePresence/SpacePresence.tsx} +22 -17
  265. package/src/components/SpacePresence/index.ts +5 -0
  266. package/src/components/{PopoverRenameSpace.tsx → SpaceRenamePopover/SpaceRenamePopover.tsx} +7 -6
  267. package/src/components/SpaceRenamePopover/index.ts +5 -0
  268. package/src/components/SpaceSettings/SpaceSettingsContainer.stories.tsx +17 -9
  269. package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +190 -155
  270. package/src/components/SyncStatus/InlineSyncStatus.tsx +8 -8
  271. package/src/components/SyncStatus/SyncStatus.stories.tsx +9 -9
  272. package/src/components/SyncStatus/SyncStatus.tsx +109 -12
  273. package/src/components/ViewEditor.tsx +56 -23
  274. package/src/components/index.ts +7 -7
  275. package/src/events.ts +7 -7
  276. package/src/helpers/index.ts +5 -0
  277. package/src/helpers/query.test.ts +24 -0
  278. package/src/helpers/query.ts +152 -0
  279. package/src/hooks/index.ts +1 -0
  280. package/src/hooks/useActiveSpace.ts +3 -2
  281. package/src/hooks/useInputSurfaceLookup.tsx +9 -13
  282. package/src/hooks/usePath.ts +1 -1
  283. package/src/hooks/useTypeOptions.ts +25 -0
  284. package/src/index.ts +1 -0
  285. package/src/meta.ts +6 -3
  286. package/src/translations.ts +68 -58
  287. package/src/types/form.ts +69 -0
  288. package/src/types/index.ts +1 -0
  289. package/src/types/types.ts +51 -52
  290. package/src/util.tsx +269 -147
  291. package/dist/lib/browser/CollectionMain-D2B75XBS.mjs.map +0 -7
  292. package/dist/lib/browser/ObjectDetailsPanel-YPTDQKMG.mjs +0 -88
  293. package/dist/lib/browser/ObjectDetailsPanel-YPTDQKMG.mjs.map +0 -7
  294. package/dist/lib/browser/app-graph-builder-7CZZJS3S.mjs +0 -479
  295. package/dist/lib/browser/app-graph-builder-7CZZJS3S.mjs.map +0 -7
  296. package/dist/lib/browser/app-graph-serializer-H6AW7KGS.mjs.map +0 -7
  297. package/dist/lib/browser/chunk-CEFHNVU7.mjs +0 -20
  298. package/dist/lib/browser/chunk-CEFHNVU7.mjs.map +0 -7
  299. package/dist/lib/browser/chunk-FBCGT5YY.mjs +0 -13
  300. package/dist/lib/browser/chunk-FBCGT5YY.mjs.map +0 -7
  301. package/dist/lib/browser/chunk-JS3MMC42.mjs +0 -19
  302. package/dist/lib/browser/chunk-JS3MMC42.mjs.map +0 -7
  303. package/dist/lib/browser/chunk-QACNNDOT.mjs.map +0 -7
  304. package/dist/lib/browser/chunk-SGTQ52SU.mjs +0 -338
  305. package/dist/lib/browser/chunk-SGTQ52SU.mjs.map +0 -7
  306. package/dist/lib/browser/chunk-V7MJSSBQ.mjs.map +0 -7
  307. package/dist/lib/browser/chunk-VLBRSGJ2.mjs.map +0 -7
  308. package/dist/lib/browser/chunk-XUYKJUU7.mjs.map +0 -7
  309. package/dist/lib/browser/identity-created-23XJJV2N.mjs.map +0 -7
  310. package/dist/lib/browser/intent-resolver-TIXVDYN7.mjs.map +0 -7
  311. package/dist/lib/browser/react-root-N2J7TDRX.mjs +0 -29
  312. package/dist/lib/browser/react-root-N2J7TDRX.mjs.map +0 -7
  313. package/dist/lib/browser/react-surface-TPNLWJJH.mjs.map +0 -7
  314. package/dist/lib/browser/schema-defs-Z6FC4AHC.mjs +0 -26
  315. package/dist/lib/browser/schema-defs-Z6FC4AHC.mjs.map +0 -7
  316. package/dist/lib/browser/schema-tools-BNP4JTD7.mjs +0 -124
  317. package/dist/lib/browser/schema-tools-BNP4JTD7.mjs.map +0 -7
  318. package/dist/lib/browser/spaces-ready-TOPG6IV4.mjs.map +0 -7
  319. package/dist/lib/browser/state-QYZAB45H.mjs.map +0 -7
  320. package/dist/lib/node-esm/CollectionMain-ZJIFCWKZ.mjs.map +0 -7
  321. package/dist/lib/node-esm/ObjectDetailsPanel-QKZEDSZK.mjs +0 -89
  322. package/dist/lib/node-esm/ObjectDetailsPanel-QKZEDSZK.mjs.map +0 -7
  323. package/dist/lib/node-esm/app-graph-builder-KGIGWC72.mjs +0 -480
  324. package/dist/lib/node-esm/app-graph-builder-KGIGWC72.mjs.map +0 -7
  325. package/dist/lib/node-esm/app-graph-serializer-2ICUGQQT.mjs.map +0 -7
  326. package/dist/lib/node-esm/chunk-4AOMYKDE.mjs.map +0 -7
  327. package/dist/lib/node-esm/chunk-5HHYE264.mjs +0 -20
  328. package/dist/lib/node-esm/chunk-5HHYE264.mjs.map +0 -7
  329. package/dist/lib/node-esm/chunk-5T3ZH23B.mjs +0 -21
  330. package/dist/lib/node-esm/chunk-5T3ZH23B.mjs.map +0 -7
  331. package/dist/lib/node-esm/chunk-6X5DLJM5.mjs.map +0 -7
  332. package/dist/lib/node-esm/chunk-HWNG4MEU.mjs +0 -15
  333. package/dist/lib/node-esm/chunk-HWNG4MEU.mjs.map +0 -7
  334. package/dist/lib/node-esm/chunk-JH6F4C3I.mjs +0 -339
  335. package/dist/lib/node-esm/chunk-JH6F4C3I.mjs.map +0 -7
  336. package/dist/lib/node-esm/chunk-P442DOQ3.mjs.map +0 -7
  337. package/dist/lib/node-esm/chunk-SSLBYZEY.mjs.map +0 -7
  338. package/dist/lib/node-esm/identity-created-IJQO6GCR.mjs.map +0 -7
  339. package/dist/lib/node-esm/intent-resolver-MHGHRGDT.mjs.map +0 -7
  340. package/dist/lib/node-esm/react-root-KW3TGJGY.mjs.map +0 -7
  341. package/dist/lib/node-esm/react-surface-UUIUUD6P.mjs.map +0 -7
  342. package/dist/lib/node-esm/schema-defs-WHJM7UZE.mjs +0 -27
  343. package/dist/lib/node-esm/schema-defs-WHJM7UZE.mjs.map +0 -7
  344. package/dist/lib/node-esm/schema-tools-KWW5PTML.mjs +0 -126
  345. package/dist/lib/node-esm/schema-tools-KWW5PTML.mjs.map +0 -7
  346. package/dist/lib/node-esm/spaces-ready-HIUKNDZK.mjs.map +0 -7
  347. package/dist/lib/node-esm/state-ZVEHQ4BJ.mjs.map +0 -7
  348. package/dist/types/src/capabilities/schema-defs.d.ts +0 -4
  349. package/dist/types/src/capabilities/schema-defs.d.ts.map +0 -1
  350. package/dist/types/src/capabilities/schema-tool.test.d.ts +0 -2
  351. package/dist/types/src/capabilities/schema-tool.test.d.ts.map +0 -1
  352. package/dist/types/src/capabilities/schema-tools.d.ts +0 -13
  353. package/dist/types/src/capabilities/schema-tools.d.ts.map +0 -1
  354. package/dist/types/src/components/CollectionMain.d.ts +0 -7
  355. package/dist/types/src/components/CollectionMain.d.ts.map +0 -1
  356. package/dist/types/src/components/JoinDialog.d.ts.map +0 -1
  357. package/dist/types/src/components/MembersContainer.d.ts.map +0 -1
  358. package/dist/types/src/components/MembersContainer.stories.d.ts +0 -8
  359. package/dist/types/src/components/MembersContainer.stories.d.ts.map +0 -1
  360. package/dist/types/src/components/ObjectDetailsPanel.d.ts +0 -9
  361. package/dist/types/src/components/ObjectDetailsPanel.d.ts.map +0 -1
  362. package/dist/types/src/components/ObjectSettings/AdvancedObjectSettings.d.ts +0 -7
  363. package/dist/types/src/components/ObjectSettings/AdvancedObjectSettings.d.ts.map +0 -1
  364. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts.map +0 -1
  365. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts +0 -8
  366. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts.map +0 -1
  367. package/dist/types/src/components/ObjectSettings/ObjectSettingsContainer.d.ts +0 -8
  368. package/dist/types/src/components/ObjectSettings/ObjectSettingsContainer.d.ts.map +0 -1
  369. package/dist/types/src/components/ObjectSettings/index.d.ts +0 -2
  370. package/dist/types/src/components/ObjectSettings/index.d.ts.map +0 -1
  371. package/dist/types/src/components/PersistenceStatus.d.ts +0 -6
  372. package/dist/types/src/components/PersistenceStatus.d.ts.map +0 -1
  373. package/dist/types/src/components/PopoverRenameObject.d.ts +0 -7
  374. package/dist/types/src/components/PopoverRenameObject.d.ts.map +0 -1
  375. package/dist/types/src/components/PopoverRenameSpace.d.ts +0 -7
  376. package/dist/types/src/components/PopoverRenameSpace.d.ts.map +0 -1
  377. package/dist/types/src/components/SpacePresence.d.ts.map +0 -1
  378. package/dist/types/src/components/SpacePresence.stories.d.ts +0 -9
  379. package/dist/types/src/components/SpacePresence.stories.d.ts.map +0 -1
  380. package/src/capabilities/schema-defs.ts +0 -30
  381. package/src/capabilities/schema-tool.test.ts +0 -44
  382. package/src/capabilities/schema-tools.ts +0 -125
  383. package/src/components/MembersContainer.stories.tsx +0 -30
  384. package/src/components/ObjectDetailsPanel.tsx +0 -77
  385. package/src/components/ObjectSettings/AdvancedObjectSettings.tsx +0 -80
  386. package/src/components/ObjectSettings/BaseObjectSettings.tsx +0 -47
  387. package/src/components/ObjectSettings/ObjectSettingsContainer.tsx +0 -36
  388. package/src/components/ObjectSettings/index.ts +0 -5
  389. package/src/components/PersistenceStatus.tsx +0 -83
@@ -0,0 +1,25 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { useMemo } from 'react';
6
+
7
+ import { type Space } from '@dxos/react-client/echo';
8
+ import { useTranslation } from '@dxos/react-ui';
9
+
10
+ import { type TypeInputOptions, getTypenames } from '../types';
11
+
12
+ export const useTypeOptions = ({ space, annotation }: { space?: Space; annotation: TypeInputOptions }) => {
13
+ const { t } = useTranslation();
14
+ const typenames = getTypenames({ annotation, space });
15
+ return useMemo(
16
+ () =>
17
+ typenames
18
+ .map((typename) => ({
19
+ value: typename,
20
+ label: t('typename label', { ns: typename, defaultValue: typename }),
21
+ }))
22
+ .toSorted((a, b) => a.label.localeCompare(b.label)),
23
+ [t, typenames],
24
+ );
25
+ };
package/src/index.ts CHANGED
@@ -6,6 +6,7 @@ export { SpaceCapabilities } from './capabilities';
6
6
  export { SpaceEvents } from './events';
7
7
 
8
8
  export * from './components';
9
+ export * from './helpers';
9
10
  export * from './hooks';
10
11
  export * from './meta';
11
12
  export * from './SpacePlugin';
package/src/meta.ts CHANGED
@@ -3,11 +3,14 @@
3
3
  //
4
4
 
5
5
  import { type PluginMeta } from '@dxos/app-framework';
6
-
7
- export const SPACE_PLUGIN = 'dxos.org/plugin/space';
6
+ import { trim } from '@dxos/util';
8
7
 
9
8
  export const meta: PluginMeta = {
10
- id: SPACE_PLUGIN,
9
+ id: 'dxos.org/plugin/space',
11
10
  name: 'Spaces',
11
+ description: trim`
12
+ Core workspace container system for organizing and sharing collaborative environments.
13
+ Create, manage, and share spaces with granular access control and invitation management.
14
+ `,
12
15
  icon: 'ph--planet--regular',
13
16
  };
@@ -2,9 +2,10 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { StoredSchema } from '@dxos/echo-schema';
5
+ import { Type } from '@dxos/echo';
6
6
  import { type Resource } from '@dxos/react-ui';
7
- import { DataType } from '@dxos/schema';
7
+ import { Collection } from '@dxos/schema';
8
+ import { Event, Message, Organization, Person, Project, Task } from '@dxos/types';
8
9
 
9
10
  import { meta } from './meta';
10
11
 
@@ -12,7 +13,7 @@ import { meta } from './meta';
12
13
  export const translations = [
13
14
  {
14
15
  'en-US': {
15
- [DataType.Collection.typename]: {
16
+ [Collection.Collection.typename]: {
16
17
  'typename label': 'Collection',
17
18
  'typename label_zero': 'Collections',
18
19
  'typename label_one': 'Collection',
@@ -20,63 +21,54 @@ export const translations = [
20
21
  'object name placeholder': 'New collection',
21
22
  'rename object label': 'Rename collection',
22
23
  'delete object label': 'Delete collection',
24
+ 'object deleted label': 'Collection deleted',
23
25
  },
24
- [DataType.QueryCollection.typename]: {
25
- 'typename label': 'Smart Collection',
26
- 'typename label_zero': 'Smart Collections',
27
- 'typename label_one': 'Smart Collection',
28
- 'typename label_other': 'Smart Collections',
29
- 'object name placeholder': 'New smart collection',
30
- 'rename object label': 'Rename smart collection',
31
- 'delete object label': 'Delete smart collection',
26
+ [Type.getTypename(Type.PersistentType)]: {
27
+ 'typename label': 'Type',
28
+ 'typename label_zero': 'Types',
29
+ 'typename label_one': 'Type',
30
+ 'typename label_other': 'Types',
31
+ 'object name placeholder': 'New type',
32
+ 'rename object label': 'Rename type',
33
+ 'delete object label': 'Delete type',
34
+ 'object deleted label': 'Type deleted',
32
35
  },
33
- [StoredSchema.typename]: {
34
- 'typename label': 'Record',
35
- 'typename label_zero': 'Records',
36
- 'typename label_one': 'Record',
37
- 'typename label_other': 'Records',
38
- 'object name placeholder': 'New record type',
39
- 'rename object label': 'Rename record type',
40
- 'delete object label': 'Delete record type',
41
- },
42
- [DataType.View.typename]: {
43
- 'typename label': 'View',
44
- 'typename label_zero': 'Views',
45
- 'typename label_one': 'View',
46
- 'typename label_other': 'Views',
47
- 'object name placeholder': 'New view',
48
- 'rename object label': 'Rename view',
49
- 'delete object label': 'Delete view',
50
- },
51
- [DataType.Event.typename]: {
36
+ [Event.Event.typename]: {
52
37
  'typename label': 'Event',
53
38
  'typename label_zero': 'Events',
54
39
  'typename label_one': 'Event',
55
40
  'typename label_other': 'Events',
56
41
  'object name placeholder': 'New event',
57
42
  },
58
- [DataType.Organization.typename]: {
43
+ [Message.Message.typename]: {
44
+ 'typename label': 'Message',
45
+ 'typename label_zero': 'Messages',
46
+ 'typename label_one': 'Message',
47
+ 'typename label_other': 'Messages',
48
+ 'object name placeholder': 'New message',
49
+ },
50
+ [Organization.Organization.typename]: {
59
51
  'typename label': 'Organization',
60
52
  'typename label_zero': 'Organizations',
61
53
  'typename label_one': 'Organization',
62
54
  'typename label_other': 'Organizations',
63
55
  'object name placeholder': 'New organization',
64
56
  },
65
- [DataType.Person.typename]: {
57
+ [Person.Person.typename]: {
66
58
  'typename label': 'Person',
67
59
  'typename label_zero': 'People',
68
60
  'typename label_one': 'Person',
69
61
  'typename label_other': 'People',
70
62
  'object name placeholder': 'New person',
71
63
  },
72
- [DataType.Project.typename]: {
64
+ [Project.Project.typename]: {
73
65
  'typename label': 'Project',
74
66
  'typename label_zero': 'Projects',
75
67
  'typename label_one': 'Project',
76
68
  'typename label_other': 'Projects',
77
69
  'object name placeholder': 'New project',
78
70
  },
79
- [DataType.Task.typename]: {
71
+ [Task.Task.typename]: {
80
72
  'typename label': 'Task',
81
73
  'typename label_zero': 'Tasks',
82
74
  'typename label_one': 'Task',
@@ -98,7 +90,7 @@ export const translations = [
98
90
  'rename space label': 'Rename space',
99
91
  'active space label': 'Active space:',
100
92
  'space name label': 'Space name',
101
- 'object name label': 'Item name',
93
+ 'object name label': 'Object name',
102
94
  'close space label': 'Close space',
103
95
  'open space label': 'Open space',
104
96
  'export data label': 'Export data',
@@ -116,32 +108,31 @@ export const translations = [
116
108
  'spaces label': 'Spaces',
117
109
  'space settings label': 'Spaces',
118
110
  'space settings description':
119
- 'Each space has its own settings you can configure, where you can adjust its properties, membership, integrations, and other items specific to that space.',
111
+ 'Each space has its own settings you can configure, where you can adjust its properties, membership, integrations, and other objects specific to that space.',
120
112
  'show hidden spaces label': 'Show archived spaces',
121
113
  'save files to directory label': 'Save files to disk',
122
114
  'select path label': 'Select path',
115
+ 'snapshot by schema label': 'Snapshot of objects',
123
116
  'rename collection label': 'Rename collection',
124
- 'rename object label': 'Rename item',
125
- 'duplicate object label': 'Duplicate item',
126
- 'delete collection label': 'Delete collection',
127
- 'delete object label': 'Delete item',
128
- 'collection deleted label': 'Collection deleted',
129
- 'object deleted label': 'Item deleted',
130
- 'objects deleted label': 'Items deleted',
131
- 'go to object label': 'Open item',
117
+ 'rename object label': 'Rename object',
118
+ 'duplicate object label': 'Duplicate object',
119
+ 'object deleted label': 'Object deleted',
120
+ 'objects deleted label': 'Objects deleted',
121
+ 'go to object label': 'Open object',
132
122
  'found object label': 'Ready.',
133
- 'found object description': 'The requested item is now available.',
123
+ 'found object description': 'The requested object is now available.',
134
124
  'waiting for object label': 'Loading…',
135
- 'waiting for object description': 'The requested item is still being synchronized.',
125
+ 'waiting for object description': 'The requested object is still being synchronized.',
136
126
  'object not found label': 'Nothing found.',
137
127
  'object not found description':
138
- 'The requested item has not been found yet. Ensure there are enough peers online in the space with an updated copy.',
139
- 'missing object message': 'Item not available.',
128
+ 'The requested object has not been found yet. Ensure there are enough peers online in the space with an updated copy.',
129
+ 'missing object message': 'Object not available.',
140
130
  'missing object description':
141
- 'The requested item has not been found yet. Ensure there are enough peers online in the space with an updated copy.',
131
+ 'The requested object has not been found yet. Ensure there are enough peers online in the space with an updated copy.',
142
132
  'create object in space label': 'Add to space',
143
133
  'create object in collection label': 'Add to collection',
144
- 'create object in smart collection label': 'Add to smart collection',
134
+ 'create object in system collection label': 'Add to system collection',
135
+ 'add view to schema label': 'Add view to type',
145
136
  'space members label': 'Space members',
146
137
  'active space members heading': 'Online ({{count}})',
147
138
  'inactive space members heading': 'Offline ({{count}})',
@@ -159,10 +150,10 @@ export const translations = [
159
150
  'location label': 'Located in',
160
151
  'space limit label': 'Space Limit Reached',
161
152
  'space limit description':
162
- 'This space has reached the maximum number of items for the beta. This limit includes deleted items currently, but those can be permanently removed with the cleanup action.',
153
+ 'This space has reached the maximum number of objects for the beta. This limit includes deleted objects currently, but those can be permanently removed with the cleanup action.',
163
154
  'space limit close label': 'Close',
164
155
  'remove deleted objects label': 'Cleanup',
165
- 'remove deleted objects alt': 'Permanently remove deleted items to free up space.',
156
+ 'remove deleted objects alt': 'Permanently remove deleted objects to free up space.',
166
157
  'copy link label': 'Copy link',
167
158
  'default on space create label': 'On space create',
168
159
  'sync status title': 'Sync status',
@@ -179,20 +170,22 @@ export const translations = [
179
170
  'remote synced label': 'Synced with peers',
180
171
  'syncing label': 'Space syncing',
181
172
  'show all label': 'Show all',
182
- 'no sync status label': 'No space with missing items.',
173
+ 'no sync status label': 'No space with missing objects.',
183
174
  'create space dialog title': 'Create Space',
184
175
  'create object dialog title': 'Create {{object}}',
185
176
  'space input placeholder': 'Select space',
186
- 'schema input placeholder': 'Select item type',
177
+ 'schema input placeholder': 'Select type',
187
178
  'creating object type label': 'Type',
188
179
  'creating in space label': 'Location',
189
180
  'creating in collection label': 'In Collection',
190
181
  'clear input label': 'Clear',
191
182
  'expose object label': 'Expose in navtree',
183
+ 'add tag label': 'Add tag',
192
184
  'advanced settings label': 'Advanced',
193
185
  'foreign keys': 'Foreign Keys',
194
186
  'add key': 'Add Key',
195
187
  'open space settings label': 'Open settings',
188
+ 'related objects label': 'Related Objects',
196
189
 
197
190
  'row details no selection label': 'No objects selected',
198
191
  'companion selected objects label': 'Selected',
@@ -214,10 +207,10 @@ export const translations = [
214
207
  'space settings properties label': 'General settings',
215
208
  'space properties settings verbose label': 'Manage space properties',
216
209
  'space properties settings description': 'You can configure how this space is displayed in the app here.',
217
- 'space settings schema label': 'Schema',
218
- 'schema verbose label': 'Manage schema',
219
- 'schema description': 'You can manage all of the schema stored within this space here.',
220
- 'no schemas found message': 'No schemas found',
210
+ 'space settings schema label': 'Types',
211
+ 'schema verbose label': 'Manage types',
212
+ 'schema description': 'You can manage all of the types stored within this space here.',
213
+ 'no schemas found message': 'No types found',
221
214
  'display name input placeholder': 'Space name',
222
215
  'display name description': 'Name of the space as it appears in the app.',
223
216
  'icon description': 'Icon used to represent the space in the app.',
@@ -228,6 +221,23 @@ export const translations = [
228
221
  'Archiving a space will remove it from the sidebar and stop replicating updates, but will not delete the data. You can unarchive it by enabling archived spaces in the app settings.',
229
222
  'archive space label': 'Archive',
230
223
  'unarchive space label': 'Unarchive',
224
+
225
+ 'space controls title': 'Space Controls',
226
+ 'space controls description': 'Advanced controls for this space.',
227
+ 'backup space title': 'Backup Space',
228
+ 'backup space description':
229
+ 'Download a backup of the space. Contains all data in the space in an unencrypted format.',
230
+ 'download backup label': 'Download backup',
231
+ 'repair space title': 'Repair Space',
232
+ 'repair space description': 'Run repair operations on the space.',
233
+ 'repair space label': 'Run repairs',
234
+
235
+ 'sync edge connected label': 'Edge connected',
236
+ 'sync edge disconnected label': 'Edge disconnected',
237
+ 'sync no connection label': 'No connection to edge service',
238
+ 'sync latency label': 'Latency',
239
+ 'sync upload label': 'Upload',
240
+ 'sync download label': 'Download',
231
241
  },
232
242
  },
233
243
  },
@@ -0,0 +1,69 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import * as Option from 'effect/Option';
6
+ import * as Schema from 'effect/Schema';
7
+
8
+ import { type Space } from '@dxos/client/echo';
9
+ import { Type } from '@dxos/echo';
10
+ import { EntityKind, SystemTypeAnnotation, createAnnotationHelper, getTypeAnnotation } from '@dxos/echo/internal';
11
+
12
+ export const TypeInputOptions = Schema.Struct({
13
+ location: Schema.Array(Schema.Literal('database', 'runtime')),
14
+ kind: Schema.Array(Schema.Literal('system', 'user')),
15
+ registered: Schema.Array(Schema.Literal('registered', 'unregistered')),
16
+ });
17
+
18
+ export type TypeInputOptions = Schema.Schema.Type<typeof TypeInputOptions>;
19
+
20
+ /**
21
+ * Used in forms to identify the field representing an object's type and determine which types are shown as options.
22
+ */
23
+ export const TypeInputOptionsAnnotationId = Symbol.for('@dxos/schema/annotation/TypeInputOptions');
24
+ export const TypeInputOptionsAnnotation = createAnnotationHelper<TypeInputOptions>(TypeInputOptionsAnnotationId);
25
+
26
+ // TODO(wittjosiah): This is too complicated and needs to be simplified.
27
+ export const getTypenames = ({ annotation, space }: { annotation: TypeInputOptions; space?: Space }) => {
28
+ const includeRuntime = annotation.location.includes('runtime');
29
+ const includeDatabase = annotation.location.includes('database');
30
+ const includeSystemType = annotation.kind.includes('system');
31
+ const includeUserType = annotation.kind.includes('user');
32
+ const includeRegistered = annotation.registered.includes('registered');
33
+ const includeUnregistered = annotation.registered.includes('unregistered');
34
+
35
+ const runtimeTypenames =
36
+ includeRuntime && space
37
+ ? space.db.schemaRegistry
38
+ .query({ location: ['runtime'] })
39
+ .runSync()
40
+ .filter((schema) => {
41
+ const relation = getTypeAnnotation(schema)?.kind === EntityKind.Relation;
42
+ if (relation) {
43
+ return includeSystemType;
44
+ }
45
+
46
+ const system = SystemTypeAnnotation.get(schema).pipe(Option.getOrElse(() => false));
47
+ if (system) {
48
+ return includeSystemType;
49
+ }
50
+
51
+ return includeUserType;
52
+ })
53
+ .filter((schema) => {
54
+ const registered = space?.properties.staticRecords?.includes(Type.getTypename(schema));
55
+ return registered ? includeRegistered : includeUnregistered;
56
+ })
57
+ .map((schema) => Type.getTypename(schema))
58
+ : [];
59
+
60
+ const databaseTypenames =
61
+ includeDatabase && includeRegistered && space
62
+ ? space.db.schemaRegistry
63
+ .query({ location: ['database'] })
64
+ .runSync()
65
+ .map((schema) => Type.getTypename(schema))
66
+ : [];
67
+
68
+ return Array.from(new Set<string>([...runtimeTypenames, ...databaseTypenames])).sort();
69
+ };
@@ -2,4 +2,5 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
+ export * from './form';
5
6
  export * from './types';
@@ -2,21 +2,23 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { Schema } from 'effect';
5
+ import * as Schema from 'effect/Schema';
6
6
 
7
7
  import { type AnyIntentChain } from '@dxos/app-framework';
8
- import { type Obj, Type } from '@dxos/echo';
9
- import { EchoSchema, StoredSchema, type TypedObject, type BaseObject } from '@dxos/echo-schema';
8
+ import { type Obj, QueryAST, Type } from '@dxos/echo';
10
9
  import { type PublicKey } from '@dxos/react-client';
11
10
  // TODO(wittjosiah): This pulls in full client.
12
11
  import { EchoObjectSchema, ReactiveObjectSchema, type Space, SpaceSchema } from '@dxos/react-client/echo';
13
12
  import { CancellableInvitationObservable, Invitation } from '@dxos/react-client/invitations';
14
- import { DataType, FieldSchema, TypenameAnnotationId } from '@dxos/schema';
13
+ import { Collection, FieldSchema, View } from '@dxos/schema';
15
14
  import { type ComplexMap } from '@dxos/util';
16
15
 
17
- import { SPACE_PLUGIN } from '../meta';
16
+ import { meta } from '../meta';
17
+
18
+ import { TypeInputOptionsAnnotation } from './form';
19
+
20
+ export const SPACE_DIRECTORY_HANDLE = `${meta.id}/directory`;
18
21
 
19
- export const SPACE_DIRECTORY_HANDLE = 'dxos.org/plugin/space/directory';
20
22
  export const SPACE_TYPE = 'dxos.org/type/Space';
21
23
 
22
24
  export type ObjectViewerProps = {
@@ -81,7 +83,7 @@ export type SpaceSettingsProps = Schema.Schema.Type<typeof SpaceSettingsSchema>;
81
83
 
82
84
  export type SerializerMap = Record<string, TypedObjectSerializer>;
83
85
 
84
- export interface TypedObjectSerializer<T extends Obj.Any = Type.Expando> {
86
+ export interface TypedObjectSerializer<T extends Obj.Any = Obj.Any> {
85
87
  serialize(params: { object: T }): Promise<string>;
86
88
 
87
89
  /**
@@ -92,29 +94,21 @@ export interface TypedObjectSerializer<T extends Obj.Any = Type.Expando> {
92
94
  deserialize(params: { content: string; space: Space; newId?: boolean }): Promise<T>;
93
95
  }
94
96
 
97
+ export type CreateObjectIntent = (props: any, options: { space: Space }) => AnyIntentChain;
98
+
95
99
  // TODO(burdon): Move to FormatEnum or SDK.
96
100
  export const IconAnnotationId = Symbol.for('@dxos/plugin-space/annotation/Icon');
97
101
  export const HueAnnotationId = Symbol.for('@dxos/plugin-space/annotation/Hue');
98
102
 
103
+ // TOOD(burdon): Use SpacePropertiesSchema.
99
104
  export const SpaceForm = Schema.Struct({
100
105
  name: Schema.optional(Schema.String.annotations({ title: 'Name' })),
101
106
  icon: Schema.optional(Schema.String.annotations({ title: 'Icon', [IconAnnotationId]: true })),
102
107
  hue: Schema.optional(Schema.String.annotations({ title: 'Color', [HueAnnotationId]: true })),
103
- // TODO(wittjosiah): Make optional with default value.
104
- edgeReplication: Schema.Boolean.annotations({ title: 'Enable EDGE Replication' }),
108
+ edgeReplication: Schema.optional(Schema.Boolean.annotations({ title: 'Enable EDGE Replication' })),
105
109
  });
106
110
 
107
- export type ObjectForm<T extends BaseObject = BaseObject> = {
108
- // TODO(dmaretskyi): Change to Schema.Schema.AnyNoContext
109
- objectSchema: TypedObject;
110
- formSchema?: Schema.Schema<T, any>;
111
- hidden?: boolean;
112
- getIntent: (props: T, options: { space: Space }) => AnyIntentChain;
113
- };
114
-
115
- export const defineObjectForm = <T extends BaseObject>(form: ObjectForm<T>) => form;
116
-
117
- export const SPACE_ACTION = `${SPACE_PLUGIN}/action`;
111
+ export const SPACE_ACTION = `${meta.id}/action`;
118
112
 
119
113
  export namespace SpaceAction {
120
114
  export class OpenCreateSpace extends Schema.TaggedClass<OpenCreateSpace>()(`${SPACE_ACTION}/open-create-space`, {
@@ -217,12 +211,26 @@ export namespace SpaceAction {
217
211
  output: Schema.Boolean,
218
212
  }) {}
219
213
 
214
+ export class Snapshot extends Schema.TaggedClass<Snapshot>()(`${SPACE_ACTION}/snapshot`, {
215
+ input: Schema.Struct({
216
+ space: SpaceSchema,
217
+ query: QueryAST.Query.pipe(Schema.optional),
218
+ }),
219
+ output: Schema.Struct({
220
+ snapshot: Schema.instanceOf(Blob),
221
+ }),
222
+ }) {}
223
+
220
224
  export const StoredSchemaForm = Schema.Struct({
221
225
  name: Schema.optional(Schema.String),
222
- typename: Schema.optional(
223
- Schema.String.annotations({
224
- [TypenameAnnotationId]: ['unused-static'],
226
+ typename: Schema.String.pipe(
227
+ Schema.annotations({ title: 'Select type (leave blank to create a new type)' }),
228
+ TypeInputOptionsAnnotation.set({
229
+ location: ['runtime'],
230
+ kind: ['user'],
231
+ registered: ['unregistered'],
225
232
  }),
233
+ Schema.optional,
226
234
  ),
227
235
  });
228
236
 
@@ -230,6 +238,8 @@ export namespace SpaceAction {
230
238
  input: Schema.Struct({
231
239
  space: SpaceSchema,
232
240
  typename: Schema.String,
241
+ // TODO(wittjosiah): This is leaky.
242
+ show: Schema.optional(Schema.Boolean),
233
243
  }),
234
244
  output: Schema.Struct({}),
235
245
  }) {}
@@ -238,20 +248,25 @@ export namespace SpaceAction {
238
248
  input: Schema.Struct({
239
249
  space: SpaceSchema,
240
250
  name: Schema.optional(Schema.String),
251
+ typename: Schema.optional(Schema.String),
252
+ // TODO(wittjosiah): Semantic version format.
253
+ version: Schema.optional(Schema.String),
241
254
  // TODO(wittjosiah): Schema for schema?
242
255
  schema: Schema.Any,
256
+ // TODO(wittjosiah): This is leaky.
257
+ show: Schema.optional(Schema.Boolean),
243
258
  }),
244
259
  output: Schema.Struct({
245
260
  // TODO(wittjosiah): ObjectId.
246
261
  id: Schema.String,
247
- object: StoredSchema,
248
- schema: Schema.instanceOf(EchoSchema),
262
+ object: Type.PersistentType,
263
+ schema: Schema.instanceOf(Type.RuntimeType),
249
264
  }),
250
265
  }) {}
251
266
 
252
267
  export class DeleteField extends Schema.TaggedClass<DeleteField>()(`${SPACE_ACTION}/delete-field`, {
253
268
  input: Schema.Struct({
254
- view: DataType.View,
269
+ view: View.View,
255
270
  fieldId: Schema.String,
256
271
  // TODO(wittjosiah): Separate fields for undo data?
257
272
  deletionData: Schema.optional(
@@ -269,8 +284,10 @@ export namespace SpaceAction {
269
284
 
270
285
  export class OpenCreateObject extends Schema.TaggedClass<OpenCreateObject>()(`${SPACE_ACTION}/open-create-object`, {
271
286
  input: Schema.Struct({
272
- target: Schema.Union(SpaceSchema, DataType.Collection),
287
+ target: Schema.Union(SpaceSchema, Collection.Collection),
288
+ views: Schema.optional(Schema.Boolean),
273
289
  typename: Schema.optional(Schema.String),
290
+ initialFormValues: Schema.optional(Schema.Any),
274
291
  navigable: Schema.optional(Schema.Boolean),
275
292
  // TODO(wittjosiah): This is a function, is there a better way to handle this?
276
293
  onCreateObject: Schema.optional(Schema.Any),
@@ -281,7 +298,7 @@ export namespace SpaceAction {
281
298
  export class AddObject extends Schema.TaggedClass<AddObject>()(`${SPACE_ACTION}/add-object`, {
282
299
  input: Schema.Struct({
283
300
  object: ReactiveObjectSchema,
284
- target: Schema.Union(SpaceSchema, DataType.Collection),
301
+ target: Schema.Union(SpaceSchema, Collection.Collection),
285
302
  hidden: Schema.optional(Schema.Boolean),
286
303
  }),
287
304
  output: Schema.Struct({
@@ -309,7 +326,7 @@ export namespace SpaceAction {
309
326
 
310
327
  export const DeletionData = Schema.Struct({
311
328
  objects: Schema.Array(EchoObjectSchema),
312
- parentCollection: DataType.Collection,
329
+ parentCollection: Collection.Collection,
313
330
  indices: Schema.Array(Schema.Number),
314
331
  nestedObjectsList: Schema.Array(Schema.Array(EchoObjectSchema)),
315
332
  wasActive: Schema.Array(Schema.String),
@@ -319,8 +336,9 @@ export namespace SpaceAction {
319
336
 
320
337
  export class RemoveObjects extends Schema.TaggedClass<RemoveObjects>()(`${SPACE_ACTION}/remove-objects`, {
321
338
  input: Schema.Struct({
322
- objects: Schema.Array(EchoObjectSchema),
323
- target: Schema.optional(DataType.Collection),
339
+ // TODO(wittjosiah): Should be Schema.Union(Type.Obj, Type.Relation).
340
+ objects: Schema.Array(ReactiveObjectSchema),
341
+ target: Schema.optional(Collection.Collection),
324
342
  deletionData: Schema.optional(DeletionData),
325
343
  }),
326
344
  output: Schema.Void,
@@ -337,7 +355,7 @@ export namespace SpaceAction {
337
355
  export class DuplicateObject extends Schema.TaggedClass<DuplicateObject>()(`${SPACE_ACTION}/duplicate-object`, {
338
356
  input: Schema.Struct({
339
357
  object: EchoObjectSchema,
340
- target: Schema.Union(SpaceSchema, DataType.Collection),
358
+ target: Schema.Union(SpaceSchema, Collection.Collection),
341
359
  }),
342
360
  output: Schema.Void,
343
361
  }) {}
@@ -356,26 +374,7 @@ export namespace CollectionAction {
356
374
  name: Schema.optional(Schema.String),
357
375
  }),
358
376
  output: Schema.Struct({
359
- object: DataType.Collection,
377
+ object: Collection.Collection,
360
378
  }),
361
379
  }) {}
362
-
363
- export const QueryCollectionForm = Schema.Struct({
364
- name: Schema.optional(Schema.String),
365
- typename: Schema.optional(
366
- Schema.String.annotations({
367
- [TypenameAnnotationId]: ['object-form'],
368
- }),
369
- ),
370
- });
371
-
372
- export class CreateQueryCollection extends Schema.TaggedClass<CreateQueryCollection>()(
373
- 'dxos.org/plugin/collection/action/create-query-collection',
374
- {
375
- input: QueryCollectionForm,
376
- output: Schema.Struct({
377
- object: DataType.QueryCollection,
378
- }),
379
- },
380
- ) {}
381
380
  }