@dxos/plugin-space 0.8.4-main.67995b8 → 0.8.4-main.72ec0f3

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 (363) hide show
  1. package/dist/lib/browser/{CollectionMain-D2B75XBS.mjs → CollectionArticle-WTHWY4YS.mjs} +10 -10
  2. package/dist/lib/browser/CollectionArticle-WTHWY4YS.mjs.map +7 -0
  3. package/dist/lib/browser/ObjectDetailsPanel-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-V3MP3CDK.mjs → app-graph-builder-VQAB3GCQ.mjs} +138 -90
  10. package/dist/lib/browser/app-graph-builder-VQAB3GCQ.mjs.map +7 -0
  11. package/dist/lib/browser/{app-graph-serializer-H6AW7KGS.mjs → app-graph-serializer-KSLKMEPP.mjs} +19 -19
  12. package/dist/lib/browser/app-graph-serializer-KSLKMEPP.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-XUYKJUU7.mjs → chunk-ERQMHU7L.mjs} +124 -63
  14. package/dist/lib/browser/chunk-ERQMHU7L.mjs.map +7 -0
  15. package/dist/lib/browser/{chunk-FBJEXW54.mjs → chunk-J2BUK5E6.mjs} +587 -513
  16. package/dist/lib/browser/chunk-J2BUK5E6.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-SGTQ52SU.mjs → chunk-M2Z6D4ZI.mjs} +32 -21
  20. package/dist/lib/browser/chunk-M2Z6D4ZI.mjs.map +7 -0
  21. package/dist/lib/browser/{chunk-QACNNDOT.mjs → chunk-OLBBSOVI.mjs} +30 -17
  22. package/dist/lib/browser/chunk-OLBBSOVI.mjs.map +7 -0
  23. package/dist/lib/browser/chunk-PU5IOFMG.mjs +167 -0
  24. package/dist/lib/browser/chunk-PU5IOFMG.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-VZBIIYFM.mjs +16 -0
  26. package/dist/lib/browser/chunk-VZBIIYFM.mjs.map +7 -0
  27. package/dist/lib/browser/chunk-WJXU4GKV.mjs +19 -0
  28. package/dist/lib/browser/chunk-WJXU4GKV.mjs.map +7 -0
  29. package/dist/lib/browser/{identity-created-23XJJV2N.mjs → identity-created-NAXTPQXE.mjs} +6 -6
  30. package/dist/lib/browser/identity-created-NAXTPQXE.mjs.map +7 -0
  31. package/dist/lib/browser/index.mjs +91 -91
  32. package/dist/lib/browser/index.mjs.map +3 -3
  33. package/dist/lib/browser/{intent-resolver-XHGD73WZ.mjs → intent-resolver-Q2XWHAVA.mjs} +87 -85
  34. package/dist/lib/browser/intent-resolver-Q2XWHAVA.mjs.map +7 -0
  35. package/dist/lib/browser/meta.json +1 -1
  36. package/dist/lib/browser/react-root-MM4HADPE.mjs +30 -0
  37. package/dist/lib/browser/react-root-MM4HADPE.mjs.map +7 -0
  38. package/dist/lib/browser/{react-surface-YWZZQF7H.mjs → react-surface-SGZC3Y4U.mjs} +81 -105
  39. package/dist/lib/browser/react-surface-SGZC3Y4U.mjs.map +7 -0
  40. package/dist/lib/browser/{schema-defs-Z6FC4AHC.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-4IMP5RYT.mjs → settings-WKLGKUHQ.mjs} +5 -5
  43. package/dist/lib/browser/{settings-4IMP5RYT.mjs.map → settings-WKLGKUHQ.mjs.map} +1 -1
  44. package/dist/lib/browser/{spaces-ready-TOPG6IV4.mjs → spaces-ready-C5QC2UFL.mjs} +21 -18
  45. package/dist/lib/browser/spaces-ready-C5QC2UFL.mjs.map +7 -0
  46. package/dist/lib/browser/{state-QYZAB45H.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/{CollectionMain-ZJIFCWKZ.mjs → CollectionArticle-KHXYT3SH.mjs} +10 -10
  50. package/dist/lib/node-esm/CollectionArticle-KHXYT3SH.mjs.map +7 -0
  51. package/dist/lib/node-esm/ObjectDetailsPanel-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-SG4VECBB.mjs → app-graph-builder-24JCLJPX.mjs} +138 -90
  58. package/dist/lib/node-esm/app-graph-builder-24JCLJPX.mjs.map +7 -0
  59. package/dist/lib/node-esm/{app-graph-serializer-2ICUGQQT.mjs → app-graph-serializer-R723K764.mjs} +19 -19
  60. package/dist/lib/node-esm/app-graph-serializer-R723K764.mjs.map +7 -0
  61. package/dist/lib/node-esm/{chunk-JH6F4C3I.mjs → chunk-2PN7QNGV.mjs} +32 -21
  62. package/dist/lib/node-esm/chunk-2PN7QNGV.mjs.map +7 -0
  63. package/dist/lib/node-esm/chunk-BDEFTL6K.mjs +18 -0
  64. package/dist/lib/node-esm/chunk-BDEFTL6K.mjs.map +7 -0
  65. package/dist/lib/node-esm/chunk-H4JILUJK.mjs +20 -0
  66. package/dist/lib/node-esm/chunk-H4JILUJK.mjs.map +7 -0
  67. package/dist/lib/node-esm/{chunk-2A3VBXBP.mjs → chunk-ITQFSFQ3.mjs} +587 -513
  68. package/dist/lib/node-esm/chunk-ITQFSFQ3.mjs.map +7 -0
  69. package/dist/lib/node-esm/chunk-TJPQDQNI.mjs +168 -0
  70. package/dist/lib/node-esm/chunk-TJPQDQNI.mjs.map +7 -0
  71. package/dist/lib/node-esm/{chunk-4AOMYKDE.mjs → chunk-VH2EBZEV.mjs} +124 -63
  72. package/dist/lib/node-esm/chunk-VH2EBZEV.mjs.map +7 -0
  73. package/dist/lib/node-esm/{chunk-P442DOQ3.mjs → chunk-WC4VBFMA.mjs} +30 -17
  74. package/dist/lib/node-esm/chunk-WC4VBFMA.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 +91 -91
  80. package/dist/lib/node-esm/index.mjs.map +3 -3
  81. package/dist/lib/node-esm/{intent-resolver-LEANKSKZ.mjs → intent-resolver-YK4ESSET.mjs} +87 -85
  82. package/dist/lib/node-esm/intent-resolver-YK4ESSET.mjs.map +7 -0
  83. package/dist/lib/node-esm/meta.json +1 -1
  84. package/dist/lib/node-esm/{react-root-5Y7LJRX6.mjs → react-root-5ANDLQMX.mjs} +13 -12
  85. package/dist/lib/node-esm/react-root-5ANDLQMX.mjs.map +7 -0
  86. package/dist/lib/node-esm/{react-surface-YQFNIKYT.mjs → react-surface-V7J2QB44.mjs} +81 -105
  87. package/dist/lib/node-esm/react-surface-V7J2QB44.mjs.map +7 -0
  88. package/dist/lib/node-esm/{schema-defs-WHJM7UZE.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-SAOBPND3.mjs → settings-RBB5633M.mjs} +5 -5
  91. package/dist/lib/node-esm/{settings-SAOBPND3.mjs.map → settings-RBB5633M.mjs.map} +1 -1
  92. package/dist/lib/node-esm/{spaces-ready-HIUKNDZK.mjs → spaces-ready-SJCXV6YH.mjs} +21 -18
  93. package/dist/lib/node-esm/spaces-ready-SJCXV6YH.mjs.map +7 -0
  94. package/dist/lib/node-esm/{state-ZVEHQ4BJ.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 +7 -6
  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 +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 +1694 -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 +1697 -0
  141. package/dist/types/src/components/MembersContainer/MembersContainer.stories.d.ts.map +1 -0
  142. package/dist/types/src/components/MembersContainer/index.d.ts +2 -0
  143. package/dist/types/src/components/MembersContainer/index.d.ts.map +1 -0
  144. package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts +9 -0
  145. package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts.map +1 -0
  146. package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts +10 -0
  147. package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts.map +1 -0
  148. package/dist/types/src/components/ObjectDetailsPanel/index.d.ts +3 -0
  149. package/dist/types/src/components/ObjectDetailsPanel/index.d.ts.map +1 -0
  150. package/dist/types/src/components/ObjectRenamePopover/ObjectRenamePopover.d.ts +7 -0
  151. package/dist/types/src/components/ObjectRenamePopover/ObjectRenamePopover.d.ts.map +1 -0
  152. package/dist/types/src/components/ObjectRenamePopover/index.d.ts +2 -0
  153. package/dist/types/src/components/ObjectRenamePopover/index.d.ts.map +1 -0
  154. package/dist/types/src/components/ObjectSettings/AdvancedObjectSettings.d.ts.map +1 -1
  155. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts +2 -2
  156. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts.map +1 -1
  157. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts +1530 -0
  158. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts.map +1 -0
  159. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts +1 -1
  160. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts.map +1 -1
  161. package/dist/types/src/components/ObjectSettings/ObjectSettingsContainer.d.ts.map +1 -1
  162. package/dist/types/src/components/ObjectSettings/index.d.ts +2 -1
  163. package/dist/types/src/components/ObjectSettings/index.d.ts.map +1 -1
  164. package/dist/types/src/components/RecordArticle.d.ts +5 -0
  165. package/dist/types/src/components/RecordArticle.d.ts.map +1 -0
  166. package/dist/types/src/components/RecordArticle.stories.d.ts +1697 -0
  167. package/dist/types/src/components/RecordArticle.stories.d.ts.map +1 -0
  168. package/dist/types/src/components/SchemaContainer.d.ts +1 -1
  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} +4 -3
  172. package/dist/types/src/components/SpacePresence/SpacePresence.d.ts.map +1 -0
  173. package/dist/types/src/components/SpacePresence/SpacePresence.stories.d.ts +1527 -0
  174. package/dist/types/src/components/SpacePresence/SpacePresence.stories.d.ts.map +1 -0
  175. package/dist/types/src/components/SpacePresence/index.d.ts +2 -0
  176. package/dist/types/src/components/SpacePresence/index.d.ts.map +1 -0
  177. package/dist/types/src/components/SpaceRenamePopover/SpaceRenamePopover.d.ts +7 -0
  178. package/dist/types/src/components/SpaceRenamePopover/SpaceRenamePopover.d.ts.map +1 -0
  179. package/dist/types/src/components/SpaceRenamePopover/index.d.ts +2 -0
  180. package/dist/types/src/components/SpaceRenamePopover/index.d.ts.map +1 -0
  181. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
  182. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts +1527 -4
  183. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts.map +1 -1
  184. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
  185. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts +1528 -5
  186. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
  187. package/dist/types/src/components/ViewEditor.d.ts +3 -4
  188. package/dist/types/src/components/ViewEditor.d.ts.map +1 -1
  189. package/dist/types/src/components/index.d.ts +10 -11
  190. package/dist/types/src/components/index.d.ts.map +1 -1
  191. package/dist/types/src/events.d.ts.map +1 -1
  192. package/dist/types/src/helpers/index.d.ts +2 -0
  193. package/dist/types/src/helpers/index.d.ts.map +1 -0
  194. package/dist/types/src/helpers/query.d.ts +8 -0
  195. package/dist/types/src/helpers/query.d.ts.map +1 -0
  196. package/dist/types/src/helpers/query.test.d.ts +2 -0
  197. package/dist/types/src/helpers/query.test.d.ts.map +1 -0
  198. package/dist/types/src/hooks/index.d.ts +1 -0
  199. package/dist/types/src/hooks/index.d.ts.map +1 -1
  200. package/dist/types/src/hooks/useActiveSpace.d.ts.map +1 -1
  201. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts +1 -1
  202. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts.map +1 -1
  203. package/dist/types/src/hooks/usePath.d.ts +1 -1
  204. package/dist/types/src/hooks/usePath.d.ts.map +1 -1
  205. package/dist/types/src/hooks/useTypeOptions.d.ts +10 -0
  206. package/dist/types/src/hooks/useTypeOptions.d.ts.map +1 -0
  207. package/dist/types/src/index.d.ts +1 -0
  208. package/dist/types/src/index.d.ts.map +1 -1
  209. package/dist/types/src/meta.d.ts +0 -1
  210. package/dist/types/src/meta.d.ts.map +1 -1
  211. package/dist/types/src/translations.d.ts +1326 -26
  212. package/dist/types/src/translations.d.ts.map +1 -1
  213. package/dist/types/src/types/types.d.ts +78 -96
  214. package/dist/types/src/types/types.d.ts.map +1 -1
  215. package/dist/types/src/util.d.ts +16 -11
  216. package/dist/types/src/util.d.ts.map +1 -1
  217. package/dist/types/tsconfig.tsbuildinfo +1 -1
  218. package/package.json +68 -63
  219. package/src/SpacePlugin.ts +230 -220
  220. package/src/capabilities/app-graph-builder.ts +214 -133
  221. package/src/capabilities/app-graph-serializer.ts +12 -12
  222. package/src/capabilities/capabilities.ts +19 -13
  223. package/src/capabilities/identity-created.ts +3 -3
  224. package/src/capabilities/index.ts +0 -1
  225. package/src/capabilities/intent-resolver.ts +81 -65
  226. package/src/capabilities/react-root.tsx +6 -4
  227. package/src/capabilities/react-surface.tsx +78 -145
  228. package/src/capabilities/schema-defs.ts +4 -3
  229. package/src/capabilities/spaces-ready.ts +16 -10
  230. package/src/capabilities/state.ts +5 -4
  231. package/src/components/AwaitingObject.tsx +12 -14
  232. package/src/components/{CollectionMain.tsx → CollectionArticle.tsx} +7 -6
  233. package/src/components/CollectionSection.tsx +8 -6
  234. package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +17 -16
  235. package/src/components/CreateDialog/CreateObjectDialog.tsx +51 -33
  236. package/src/components/CreateDialog/CreateObjectPanel.tsx +24 -13
  237. package/src/components/CreateDialog/CreateSpaceDialog.tsx +30 -11
  238. package/src/components/{JoinDialog.tsx → JoinDialog/JoinDialog.tsx} +26 -10
  239. package/src/components/JoinDialog/index.ts +5 -0
  240. package/src/components/MembersContainer/MembersContainer.stories.tsx +56 -0
  241. package/src/components/{MembersContainer.tsx → MembersContainer/MembersContainer.tsx} +22 -21
  242. package/src/components/MembersContainer/index.ts +5 -0
  243. package/src/components/MenuFooter.tsx +2 -2
  244. package/src/components/ObjectDetailsPanel/ObjectDetailsPanel.tsx +51 -0
  245. package/src/components/ObjectDetailsPanel/ObjectForm.tsx +72 -0
  246. package/src/components/ObjectDetailsPanel/index.ts +7 -0
  247. package/src/components/{PopoverRenameObject.tsx → ObjectRenamePopover/ObjectRenamePopover.tsx} +10 -16
  248. package/src/components/ObjectRenamePopover/index.ts +5 -0
  249. package/src/components/ObjectSettings/AdvancedObjectSettings.tsx +4 -3
  250. package/src/components/ObjectSettings/BaseObjectSettings.stories.tsx +63 -0
  251. package/src/components/ObjectSettings/BaseObjectSettings.tsx +90 -26
  252. package/src/components/ObjectSettings/ForeignKeys.tsx +4 -4
  253. package/src/components/ObjectSettings/ObjectSettingsContainer.tsx +4 -3
  254. package/src/components/ObjectSettings/index.ts +3 -1
  255. package/src/components/RecordArticle.stories.tsx +115 -0
  256. package/src/components/RecordArticle.tsx +114 -0
  257. package/src/components/SchemaContainer.tsx +25 -28
  258. package/src/components/SpacePluginSettings.tsx +16 -11
  259. package/src/components/{SpacePresence.stories.tsx → SpacePresence/SpacePresence.stories.tsx} +24 -23
  260. package/src/components/{SpacePresence.tsx → SpacePresence/SpacePresence.tsx} +22 -17
  261. package/src/components/SpacePresence/index.ts +5 -0
  262. package/src/components/{PopoverRenameSpace.tsx → SpaceRenamePopover/SpaceRenamePopover.tsx} +7 -6
  263. package/src/components/SpaceRenamePopover/index.ts +5 -0
  264. package/src/components/SpaceSettings/SpaceSettingsContainer.stories.tsx +17 -9
  265. package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +49 -28
  266. package/src/components/SyncStatus/InlineSyncStatus.tsx +8 -8
  267. package/src/components/SyncStatus/SyncStatus.stories.tsx +9 -9
  268. package/src/components/SyncStatus/SyncStatus.tsx +109 -12
  269. package/src/components/ViewEditor.tsx +51 -23
  270. package/src/components/index.ts +7 -7
  271. package/src/events.ts +7 -7
  272. package/src/helpers/index.ts +5 -0
  273. package/src/helpers/query.test.ts +24 -0
  274. package/src/helpers/query.ts +158 -0
  275. package/src/hooks/index.ts +1 -0
  276. package/src/hooks/useActiveSpace.ts +3 -2
  277. package/src/hooks/useInputSurfaceLookup.tsx +8 -3
  278. package/src/hooks/usePath.ts +1 -1
  279. package/src/hooks/useTypeOptions.ts +59 -0
  280. package/src/index.ts +1 -0
  281. package/src/meta.ts +6 -3
  282. package/src/translations.ts +29 -14
  283. package/src/types/types.ts +31 -22
  284. package/src/util.tsx +131 -66
  285. package/dist/lib/browser/CollectionMain-D2B75XBS.mjs.map +0 -7
  286. package/dist/lib/browser/ObjectDetailsPanel-YPTDQKMG.mjs +0 -88
  287. package/dist/lib/browser/ObjectDetailsPanel-YPTDQKMG.mjs.map +0 -7
  288. package/dist/lib/browser/app-graph-builder-V3MP3CDK.mjs.map +0 -7
  289. package/dist/lib/browser/app-graph-serializer-H6AW7KGS.mjs.map +0 -7
  290. package/dist/lib/browser/chunk-CEFHNVU7.mjs +0 -20
  291. package/dist/lib/browser/chunk-CEFHNVU7.mjs.map +0 -7
  292. package/dist/lib/browser/chunk-FBCGT5YY.mjs +0 -13
  293. package/dist/lib/browser/chunk-FBCGT5YY.mjs.map +0 -7
  294. package/dist/lib/browser/chunk-FBJEXW54.mjs.map +0 -7
  295. package/dist/lib/browser/chunk-JS3MMC42.mjs +0 -19
  296. package/dist/lib/browser/chunk-JS3MMC42.mjs.map +0 -7
  297. package/dist/lib/browser/chunk-QACNNDOT.mjs.map +0 -7
  298. package/dist/lib/browser/chunk-SGTQ52SU.mjs.map +0 -7
  299. package/dist/lib/browser/chunk-VLBRSGJ2.mjs +0 -94
  300. package/dist/lib/browser/chunk-VLBRSGJ2.mjs.map +0 -7
  301. package/dist/lib/browser/chunk-XUYKJUU7.mjs.map +0 -7
  302. package/dist/lib/browser/identity-created-23XJJV2N.mjs.map +0 -7
  303. package/dist/lib/browser/intent-resolver-XHGD73WZ.mjs.map +0 -7
  304. package/dist/lib/browser/react-root-CMWOGJG5.mjs +0 -29
  305. package/dist/lib/browser/react-root-CMWOGJG5.mjs.map +0 -7
  306. package/dist/lib/browser/react-surface-YWZZQF7H.mjs.map +0 -7
  307. package/dist/lib/browser/schema-defs-Z6FC4AHC.mjs.map +0 -7
  308. package/dist/lib/browser/schema-tools-BNP4JTD7.mjs +0 -124
  309. package/dist/lib/browser/schema-tools-BNP4JTD7.mjs.map +0 -7
  310. package/dist/lib/browser/spaces-ready-TOPG6IV4.mjs.map +0 -7
  311. package/dist/lib/browser/state-QYZAB45H.mjs.map +0 -7
  312. package/dist/lib/node-esm/CollectionMain-ZJIFCWKZ.mjs.map +0 -7
  313. package/dist/lib/node-esm/ObjectDetailsPanel-QKZEDSZK.mjs +0 -89
  314. package/dist/lib/node-esm/ObjectDetailsPanel-QKZEDSZK.mjs.map +0 -7
  315. package/dist/lib/node-esm/app-graph-builder-SG4VECBB.mjs.map +0 -7
  316. package/dist/lib/node-esm/app-graph-serializer-2ICUGQQT.mjs.map +0 -7
  317. package/dist/lib/node-esm/chunk-2A3VBXBP.mjs.map +0 -7
  318. package/dist/lib/node-esm/chunk-4AOMYKDE.mjs.map +0 -7
  319. package/dist/lib/node-esm/chunk-5HHYE264.mjs +0 -20
  320. package/dist/lib/node-esm/chunk-5HHYE264.mjs.map +0 -7
  321. package/dist/lib/node-esm/chunk-5T3ZH23B.mjs +0 -21
  322. package/dist/lib/node-esm/chunk-5T3ZH23B.mjs.map +0 -7
  323. package/dist/lib/node-esm/chunk-HWNG4MEU.mjs +0 -15
  324. package/dist/lib/node-esm/chunk-HWNG4MEU.mjs.map +0 -7
  325. package/dist/lib/node-esm/chunk-JH6F4C3I.mjs.map +0 -7
  326. package/dist/lib/node-esm/chunk-P442DOQ3.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/identity-created-IJQO6GCR.mjs.map +0 -7
  330. package/dist/lib/node-esm/intent-resolver-LEANKSKZ.mjs.map +0 -7
  331. package/dist/lib/node-esm/react-root-5Y7LJRX6.mjs.map +0 -7
  332. package/dist/lib/node-esm/react-surface-YQFNIKYT.mjs.map +0 -7
  333. package/dist/lib/node-esm/schema-defs-WHJM7UZE.mjs.map +0 -7
  334. package/dist/lib/node-esm/schema-tools-KWW5PTML.mjs +0 -126
  335. package/dist/lib/node-esm/schema-tools-KWW5PTML.mjs.map +0 -7
  336. package/dist/lib/node-esm/spaces-ready-HIUKNDZK.mjs.map +0 -7
  337. package/dist/lib/node-esm/state-ZVEHQ4BJ.mjs.map +0 -7
  338. package/dist/types/src/capabilities/schema-tool.test.d.ts +0 -2
  339. package/dist/types/src/capabilities/schema-tool.test.d.ts.map +0 -1
  340. package/dist/types/src/capabilities/schema-tools.d.ts +0 -13
  341. package/dist/types/src/capabilities/schema-tools.d.ts.map +0 -1
  342. package/dist/types/src/components/CollectionMain.d.ts +0 -7
  343. package/dist/types/src/components/CollectionMain.d.ts.map +0 -1
  344. package/dist/types/src/components/JoinDialog.d.ts.map +0 -1
  345. package/dist/types/src/components/MembersContainer.d.ts.map +0 -1
  346. package/dist/types/src/components/MembersContainer.stories.d.ts +0 -8
  347. package/dist/types/src/components/MembersContainer.stories.d.ts.map +0 -1
  348. package/dist/types/src/components/ObjectDetailsPanel.d.ts +0 -9
  349. package/dist/types/src/components/ObjectDetailsPanel.d.ts.map +0 -1
  350. package/dist/types/src/components/PersistenceStatus.d.ts +0 -6
  351. package/dist/types/src/components/PersistenceStatus.d.ts.map +0 -1
  352. package/dist/types/src/components/PopoverRenameObject.d.ts +0 -7
  353. package/dist/types/src/components/PopoverRenameObject.d.ts.map +0 -1
  354. package/dist/types/src/components/PopoverRenameSpace.d.ts +0 -7
  355. package/dist/types/src/components/PopoverRenameSpace.d.ts.map +0 -1
  356. package/dist/types/src/components/SpacePresence.d.ts.map +0 -1
  357. package/dist/types/src/components/SpacePresence.stories.d.ts +0 -9
  358. package/dist/types/src/components/SpacePresence.stories.d.ts.map +0 -1
  359. package/src/capabilities/schema-tool.test.ts +0 -44
  360. package/src/capabilities/schema-tools.ts +0 -125
  361. package/src/components/MembersContainer.stories.tsx +0 -30
  362. package/src/components/ObjectDetailsPanel.tsx +0 -77
  363. package/src/components/PersistenceStatus.tsx +0 -83
@@ -0,0 +1,158 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import * as Array from 'effect/Array';
6
+ import * as Effect from 'effect/Effect';
7
+ import * as EffectFunction from 'effect/Function';
8
+ import * as Match from 'effect/Match';
9
+ import * as Option from 'effect/Option';
10
+ import type * as Schema from 'effect/Schema';
11
+ import * as SchemaAST from 'effect/SchemaAST';
12
+
13
+ import { DXN, Filter, Query, type QueryAST } from '@dxos/echo';
14
+ import {
15
+ ReferenceAnnotationId,
16
+ type ReferenceAnnotationValue,
17
+ getTypeAnnotation,
18
+ unwrapOptional,
19
+ } from '@dxos/echo/internal';
20
+ import { log } from '@dxos/log';
21
+ import { type Client } from '@dxos/react-client';
22
+ import { type Space } from '@dxos/react-client/echo';
23
+ import { Person } from '@dxos/types';
24
+
25
+ // TODO(wittjosiah): Factor out and add tests.
26
+ // TODO(wittjosiah): Support arbitrary type imports.
27
+ export const evalQuery = (queryString: string): Query.Any => {
28
+ const globals = { Query, Filter, Person };
29
+ try {
30
+ // eslint-disable-next-line @typescript-eslint/no-implied-eval
31
+ return new Function(...Object.keys(globals), `return ${queryString}`)(...Object.values(globals));
32
+ } catch (err) {
33
+ log.catch(err);
34
+ return Query.select(Filter.nothing());
35
+ }
36
+ };
37
+
38
+ export const resolveSchemaWithClientAndSpace = (client: Client, space: Space, query: QueryAST.Query) => {
39
+ const resolve = Effect.fn(function* (dxn: string) {
40
+ const typename = DXN.parse(dxn).asTypeDXN()?.type;
41
+ if (!typename) {
42
+ return Option.none();
43
+ }
44
+
45
+ const staticSchema = client.graph.schemaRegistry.getSchema(typename);
46
+ if (staticSchema) {
47
+ return Option.some(staticSchema);
48
+ }
49
+
50
+ const query = space.db.schemaRegistry.query({ typename });
51
+ const schemas = yield* Effect.promise(() => query.run());
52
+ return Array.head(schemas).pipe(Option.map((schema) => schema.snapshot));
53
+ });
54
+
55
+ return resolveSchema(query, resolve).pipe(
56
+ Effect.map((schema) => Option.getOrUndefined(schema)),
57
+ Effect.runPromise,
58
+ );
59
+ };
60
+
61
+ const resolveSchema = (
62
+ query: QueryAST.Query,
63
+ resolve: (dxn: string) => Effect.Effect<Option.Option<Schema.Schema.AnyNoContext>>,
64
+ ): Effect.Effect<Option.Option<Schema.Schema.AnyNoContext>> => {
65
+ return Match.value(query).pipe(
66
+ Match.withReturnType<Effect.Effect<Option.Option<Schema.Schema.AnyNoContext>>>(),
67
+ // TODO(wittjosiah): Reconcile with filter match?
68
+ Match.when({ type: 'select' }, ({ filter }) =>
69
+ typenameFromFilter(filter).pipe(
70
+ Option.map((typename) => resolve(typename)),
71
+ Option.getOrElse(() => Effect.succeed(Option.none<Schema.Schema.AnyNoContext>())),
72
+ ),
73
+ ),
74
+ Match.when({ type: 'filter' }, ({ filter }) =>
75
+ typenameFromFilter(filter).pipe(
76
+ Option.map((typename) => resolve(typename)),
77
+ Option.getOrElse(() => Effect.succeed(Option.none<Schema.Schema.AnyNoContext>())),
78
+ ),
79
+ ),
80
+ Match.when({ type: 'reference-traversal' }, ({ anchor, property }) =>
81
+ resolveSchema(anchor, resolve).pipe(
82
+ Effect.map((base) =>
83
+ base.pipe(
84
+ Option.map((schema) => SchemaAST.getPropertySignatures(schema.ast)),
85
+ Option.flatMap((properties) => Array.findFirst(properties, (p) => p.name === property)),
86
+ Option.flatMap((property) =>
87
+ SchemaAST.getAnnotation<ReferenceAnnotationValue>(ReferenceAnnotationId)(unwrapOptional(property)),
88
+ ),
89
+ Option.map((annotation) => annotation.typename),
90
+ ),
91
+ ),
92
+ Effect.flatMap(
93
+ Option.match({
94
+ onNone: () => Effect.succeed(Option.none()),
95
+ onSome: (typename) => resolve(DXN.fromTypename(typename).toString()),
96
+ }),
97
+ ),
98
+ ),
99
+ ),
100
+ Match.when({ type: 'relation', filter: Match.defined }, ({ filter }) =>
101
+ typenameFromFilter(filter).pipe(
102
+ Option.map((typename) => resolve(typename)),
103
+ Option.getOrElse(() => Effect.succeed(Option.none<Schema.Schema.AnyNoContext>())),
104
+ ),
105
+ ),
106
+ Match.when({ type: 'relation-traversal' }, ({ anchor, direction }) =>
107
+ resolveSchema(anchor, resolve).pipe(
108
+ Effect.map((base) =>
109
+ base.pipe(
110
+ Option.map((schema) => getTypeAnnotation(schema)),
111
+ Option.flatMap((annotation) =>
112
+ Option.fromNullable(direction === 'source' ? annotation?.sourceSchema : annotation?.targetSchema),
113
+ ),
114
+ ),
115
+ ),
116
+ Effect.flatMap(
117
+ Option.match({
118
+ onNone: () => Effect.succeed(Option.none()),
119
+ onSome: (typename) => resolve(typename),
120
+ }),
121
+ ),
122
+ ),
123
+ ),
124
+ Match.when({ type: 'options' }, ({ query }) => resolveSchema(query, resolve)),
125
+ Match.orElse((_q) => {
126
+ // TODO(wittjosiah): Implement other cases.
127
+ return Effect.succeed(Option.none());
128
+ }),
129
+ );
130
+ };
131
+
132
+ const typenameFromFilter = (filter: QueryAST.Filter): Option.Option<string> =>
133
+ Match.value(filter).pipe(
134
+ Match.withReturnType<Option.Option<string>>(),
135
+ Match.when({ type: 'object' }, ({ typename }) => Option.fromNullable(typename)),
136
+ Match.when({ type: 'and' }, ({ filters }) =>
137
+ EffectFunction.pipe(filters, Array.map(typenameFromFilter), Array.findFirst(Option.isSome), Option.flatten),
138
+ ),
139
+ Match.when({ type: 'or' }, ({ filters }) =>
140
+ EffectFunction.pipe(filters, Array.map(typenameFromFilter), Array.findFirst(Option.isSome), Option.flatten),
141
+ ),
142
+ Match.orElse(() => Option.none()),
143
+ );
144
+
145
+ // TODO(wittjosiah): Currently assumes options is at the top-level of the ast.
146
+ export const getQueryTarget = (query: QueryAST.Query, space?: Space) => {
147
+ return Match.value(query).pipe(
148
+ Match.when({ type: 'options' }, ({ options }) => {
149
+ return Option.fromNullable(options.queues).pipe(
150
+ Option.flatMap((queues) => Array.head(queues)),
151
+ Option.flatMap((queueDxn) => Option.fromNullable(DXN.tryParse(queueDxn))),
152
+ Option.flatMap((queueDxn) => Option.fromNullable(space?.queues.get(queueDxn))),
153
+ Option.getOrElse(() => space),
154
+ );
155
+ }),
156
+ Match.orElse(() => space),
157
+ );
158
+ };
@@ -5,3 +5,4 @@
5
5
  export * from './useActiveSpace';
6
6
  export * from './useInputSurfaceLookup';
7
7
  export * from './usePath';
8
+ export * from './useTypeOptions';
@@ -2,13 +2,14 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { Capabilities, useLayout, type PluginContext } from '@dxos/app-framework';
5
+ import { Capabilities, type PluginContext } from '@dxos/app-framework';
6
+ import { useLayout } from '@dxos/app-framework/react';
6
7
  import { ClientCapabilities } from '@dxos/plugin-client';
7
8
  import { parseId, useSpace } from '@dxos/react-client/echo';
8
9
 
9
10
  export const getActiveSpace = (context: PluginContext) => {
10
- const layout = context.getCapability(Capabilities.Layout);
11
11
  const client = context.getCapability(ClientCapabilities.Client);
12
+ const layout = context.getCapability(Capabilities.Layout);
12
13
  const { spaceId } = parseId(layout.workspace);
13
14
  return spaceId ? client.spaces.get(spaceId) : undefined;
14
15
  };
@@ -2,10 +2,10 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { type Schema } from 'effect';
5
+ import type * as Schema from 'effect/Schema';
6
6
  import React, { useCallback } from 'react';
7
7
 
8
- import { usePluginManager, isSurfaceAvailable, Surface } from '@dxos/app-framework';
8
+ import { Surface, isSurfaceAvailable, usePluginManager } from '@dxos/app-framework/react';
9
9
  import { type InputProps } from '@dxos/react-ui-form';
10
10
 
11
11
  // TODO(ZaymonFC): Move this if you find yourself needing it elsewhere.
@@ -20,7 +20,12 @@ export const useInputSurfaceLookup = (baseData?: Record<string, any>) => {
20
20
  return useCallback(
21
21
  ({ prop, schema, inputProps }: { prop: string; schema: Schema.Schema<any>; inputProps: InputProps }) => {
22
22
  const composedData = { prop, schema, ...baseData };
23
- if (!isSurfaceAvailable(pluginManager.context, { role: 'form-input', data: composedData })) {
23
+ if (
24
+ !isSurfaceAvailable(pluginManager.context, {
25
+ role: 'form-input',
26
+ data: composedData,
27
+ })
28
+ ) {
24
29
  return undefined;
25
30
  }
26
31
 
@@ -2,7 +2,7 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- import { Option } from 'effect';
5
+ import * as Option from 'effect/Option';
6
6
  import { useEffect, useState } from 'react';
7
7
 
8
8
  import { type ReadableGraph } from '@dxos/plugin-graph';
@@ -0,0 +1,59 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { useMemo } from 'react';
6
+
7
+ import { useCapabilities } from '@dxos/app-framework/react';
8
+ import { Type } from '@dxos/echo';
9
+ import { ClientCapabilities } from '@dxos/plugin-client';
10
+ import { useClient } from '@dxos/react-client';
11
+ import { type Space } from '@dxos/react-client/echo';
12
+ import { useTranslation } from '@dxos/react-ui';
13
+ import { Collection, type TypenameAnnotation, getTypenames } from '@dxos/schema';
14
+
15
+ import { SpaceCapabilities } from '../capabilities';
16
+
17
+ const OMIT = [Collection.Collection.typename, Type.getTypename(Collection.QueryCollection)];
18
+
19
+ export const useTypeOptions = ({ space, annotation }: { space?: Space; annotation: TypenameAnnotation[] }) => {
20
+ const { t } = useTranslation();
21
+ const client = useClient();
22
+
23
+ const schemaWhitelists = useCapabilities(ClientCapabilities.SchemaWhiteList);
24
+ const whitelistedTypenames = useMemo(
25
+ () => new Set(schemaWhitelists.flatMap((typeArray) => typeArray.map((type) => Type.getTypename(type)))),
26
+ [schemaWhitelists],
27
+ );
28
+
29
+ const objectForms = useCapabilities(SpaceCapabilities.ObjectForm);
30
+ const objectFormTypenames = useMemo(
31
+ () =>
32
+ new Set(
33
+ objectForms
34
+ .map((form) => Type.getTypename(form.objectSchema))
35
+ // TODO(wittjosiah): Remove.
36
+ .filter((typename) => !OMIT.includes(typename) && !typename.endsWith('View')),
37
+ ),
38
+ [objectForms],
39
+ );
40
+
41
+ const typenames = getTypenames({
42
+ annotation,
43
+ whitelistedTypenames,
44
+ objectFormTypenames,
45
+ space,
46
+ client,
47
+ });
48
+
49
+ return useMemo(
50
+ () =>
51
+ typenames
52
+ .map((typename) => ({
53
+ value: typename,
54
+ label: t('typename label', { ns: typename, defaultValue: typename }),
55
+ }))
56
+ .toSorted((a, b) => a.label.localeCompare(b.label)),
57
+ [t, typenames],
58
+ );
59
+ };
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,11 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { StoredSchema } from '@dxos/echo-schema';
5
+ import { Type } from '@dxos/echo';
6
+ import { StoredSchema } from '@dxos/echo/internal';
6
7
  import { type Resource } from '@dxos/react-ui';
7
- import { DataType } from '@dxos/schema';
8
+ import { Collection, View } from '@dxos/schema';
9
+ import { Event, Organization, Person, Project, Task } from '@dxos/types';
8
10
 
9
11
  import { meta } from './meta';
10
12
 
@@ -12,7 +14,7 @@ import { meta } from './meta';
12
14
  export const translations = [
13
15
  {
14
16
  'en-US': {
15
- [DataType.Collection.typename]: {
17
+ [Collection.Collection.typename]: {
16
18
  'typename label': 'Collection',
17
19
  'typename label_zero': 'Collections',
18
20
  'typename label_one': 'Collection',
@@ -21,7 +23,7 @@ export const translations = [
21
23
  'rename object label': 'Rename collection',
22
24
  'delete object label': 'Delete collection',
23
25
  },
24
- [DataType.QueryCollection.typename]: {
26
+ [Type.getTypename(Collection.QueryCollection)]: {
25
27
  'typename label': 'Smart Collection',
26
28
  'typename label_zero': 'Smart Collections',
27
29
  'typename label_one': 'Smart Collection',
@@ -39,7 +41,7 @@ export const translations = [
39
41
  'rename object label': 'Rename record type',
40
42
  'delete object label': 'Delete record type',
41
43
  },
42
- [DataType.View.typename]: {
44
+ [Type.getTypename(View.View)]: {
43
45
  'typename label': 'View',
44
46
  'typename label_zero': 'Views',
45
47
  'typename label_one': 'View',
@@ -48,35 +50,35 @@ export const translations = [
48
50
  'rename object label': 'Rename view',
49
51
  'delete object label': 'Delete view',
50
52
  },
51
- [DataType.Event.typename]: {
53
+ [Event.Event.typename]: {
52
54
  'typename label': 'Event',
53
55
  'typename label_zero': 'Events',
54
56
  'typename label_one': 'Event',
55
57
  'typename label_other': 'Events',
56
58
  'object name placeholder': 'New event',
57
59
  },
58
- [DataType.Organization.typename]: {
60
+ [Organization.Organization.typename]: {
59
61
  'typename label': 'Organization',
60
62
  'typename label_zero': 'Organizations',
61
63
  'typename label_one': 'Organization',
62
64
  'typename label_other': 'Organizations',
63
65
  'object name placeholder': 'New organization',
64
66
  },
65
- [DataType.Person.typename]: {
67
+ [Person.Person.typename]: {
66
68
  'typename label': 'Person',
67
69
  'typename label_zero': 'People',
68
70
  'typename label_one': 'Person',
69
71
  'typename label_other': 'People',
70
72
  'object name placeholder': 'New person',
71
73
  },
72
- [DataType.Project.typename]: {
74
+ [Project.Project.typename]: {
73
75
  'typename label': 'Project',
74
76
  'typename label_zero': 'Projects',
75
77
  'typename label_one': 'Project',
76
78
  'typename label_other': 'Projects',
77
79
  'object name placeholder': 'New project',
78
80
  },
79
- [DataType.Task.typename]: {
81
+ [Task.Task.typename]: {
80
82
  'typename label': 'Task',
81
83
  'typename label_zero': 'Tasks',
82
84
  'typename label_one': 'Task',
@@ -189,10 +191,12 @@ export const translations = [
189
191
  'creating in collection label': 'In Collection',
190
192
  'clear input label': 'Clear',
191
193
  'expose object label': 'Expose in navtree',
194
+ 'add tag label': 'Add tag',
192
195
  'advanced settings label': 'Advanced',
193
196
  'foreign keys': 'Foreign Keys',
194
197
  'add key': 'Add Key',
195
198
  'open space settings label': 'Open settings',
199
+ 'related objects label': 'Related Items',
196
200
 
197
201
  'row details no selection label': 'No objects selected',
198
202
  'companion selected objects label': 'Selected',
@@ -214,10 +218,10 @@ export const translations = [
214
218
  'space settings properties label': 'General settings',
215
219
  'space properties settings verbose label': 'Manage space properties',
216
220
  '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',
221
+ 'space settings schema label': 'Record types',
222
+ 'schema verbose label': 'Manage record types',
223
+ 'schema description': 'You can manage all of the record types stored within this space here.',
224
+ 'no schemas found message': 'No record types found',
221
225
  'display name input placeholder': 'Space name',
222
226
  'display name description': 'Name of the space as it appears in the app.',
223
227
  'icon description': 'Icon used to represent the space in the app.',
@@ -227,7 +231,18 @@ export const translations = [
227
231
  'archive space description':
228
232
  '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
233
  'archive space label': 'Archive',
234
+ 'backup space label': 'Backup',
235
+ 'backup space description':
236
+ 'Download a backup of the space. Contains all data in the space in an unencrypted format.',
237
+ 'download backup': 'Download backup',
230
238
  'unarchive space label': 'Unarchive',
239
+
240
+ 'sync edge connected label': 'Edge connected',
241
+ 'sync edge disconnected label': 'Edge disconnected',
242
+ 'sync no connection label': 'No connection to edge service',
243
+ 'sync latency label': 'Latency',
244
+ 'sync upload label': 'Upload',
245
+ 'sync download label': 'Download',
231
246
  },
232
247
  },
233
248
  },
@@ -2,21 +2,22 @@
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
8
  import { type Obj, Type } from '@dxos/echo';
9
- import { EchoSchema, StoredSchema, type TypedObject, type BaseObject } from '@dxos/echo-schema';
9
+ import { type BaseObject, EchoSchema, StoredSchema } from '@dxos/echo/internal';
10
10
  import { type PublicKey } from '@dxos/react-client';
11
11
  // TODO(wittjosiah): This pulls in full client.
12
12
  import { EchoObjectSchema, ReactiveObjectSchema, type Space, SpaceSchema } from '@dxos/react-client/echo';
13
13
  import { CancellableInvitationObservable, Invitation } from '@dxos/react-client/invitations';
14
- import { DataType, FieldSchema, TypenameAnnotationId } from '@dxos/schema';
14
+ import { Collection, FieldSchema, TypenameAnnotationId, View } from '@dxos/schema';
15
15
  import { type ComplexMap } from '@dxos/util';
16
16
 
17
- import { SPACE_PLUGIN } from '../meta';
17
+ import { meta } from '../meta';
18
+
19
+ export const SPACE_DIRECTORY_HANDLE = `${meta.id}/directory`;
18
20
 
19
- export const SPACE_DIRECTORY_HANDLE = 'dxos.org/plugin/space/directory';
20
21
  export const SPACE_TYPE = 'dxos.org/type/Space';
21
22
 
22
23
  export type ObjectViewerProps = {
@@ -105,8 +106,7 @@ export const SpaceForm = Schema.Struct({
105
106
  });
106
107
 
107
108
  export type ObjectForm<T extends BaseObject = BaseObject> = {
108
- // TODO(dmaretskyi): Change to Schema.Schema.AnyNoContext
109
- objectSchema: TypedObject;
109
+ objectSchema: Schema.Schema.AnyNoContext;
110
110
  formSchema?: Schema.Schema<T, any>;
111
111
  hidden?: boolean;
112
112
  getIntent: (props: T, options: { space: Space }) => AnyIntentChain;
@@ -114,7 +114,7 @@ export type ObjectForm<T extends BaseObject = BaseObject> = {
114
114
 
115
115
  export const defineObjectForm = <T extends BaseObject>(form: ObjectForm<T>) => form;
116
116
 
117
- export const SPACE_ACTION = `${SPACE_PLUGIN}/action`;
117
+ export const SPACE_ACTION = `${meta.id}/action`;
118
118
 
119
119
  export namespace SpaceAction {
120
120
  export class OpenCreateSpace extends Schema.TaggedClass<OpenCreateSpace>()(`${SPACE_ACTION}/open-create-space`, {
@@ -230,6 +230,8 @@ export namespace SpaceAction {
230
230
  input: Schema.Struct({
231
231
  space: SpaceSchema,
232
232
  typename: Schema.String,
233
+ // TODO(wittjosiah): This is leaky.
234
+ show: Schema.optional(Schema.Boolean),
233
235
  }),
234
236
  output: Schema.Struct({}),
235
237
  }) {}
@@ -238,8 +240,13 @@ export namespace SpaceAction {
238
240
  input: Schema.Struct({
239
241
  space: SpaceSchema,
240
242
  name: Schema.optional(Schema.String),
243
+ typename: Schema.optional(Schema.String),
244
+ // TODO(wittjosiah): Semantic version format.
245
+ version: Schema.optional(Schema.String),
241
246
  // TODO(wittjosiah): Schema for schema?
242
247
  schema: Schema.Any,
248
+ // TODO(wittjosiah): This is leaky.
249
+ show: Schema.optional(Schema.Boolean),
243
250
  }),
244
251
  output: Schema.Struct({
245
252
  // TODO(wittjosiah): ObjectId.
@@ -251,7 +258,7 @@ export namespace SpaceAction {
251
258
 
252
259
  export class DeleteField extends Schema.TaggedClass<DeleteField>()(`${SPACE_ACTION}/delete-field`, {
253
260
  input: Schema.Struct({
254
- view: DataType.View,
261
+ view: View.View,
255
262
  fieldId: Schema.String,
256
263
  // TODO(wittjosiah): Separate fields for undo data?
257
264
  deletionData: Schema.optional(
@@ -269,8 +276,10 @@ export namespace SpaceAction {
269
276
 
270
277
  export class OpenCreateObject extends Schema.TaggedClass<OpenCreateObject>()(`${SPACE_ACTION}/open-create-object`, {
271
278
  input: Schema.Struct({
272
- target: Schema.Union(SpaceSchema, DataType.Collection),
279
+ target: Schema.Union(SpaceSchema, Collection.Collection),
280
+ views: Schema.optional(Schema.Boolean),
273
281
  typename: Schema.optional(Schema.String),
282
+ initialFormValues: Schema.optional(Schema.Any),
274
283
  navigable: Schema.optional(Schema.Boolean),
275
284
  // TODO(wittjosiah): This is a function, is there a better way to handle this?
276
285
  onCreateObject: Schema.optional(Schema.Any),
@@ -281,7 +290,7 @@ export namespace SpaceAction {
281
290
  export class AddObject extends Schema.TaggedClass<AddObject>()(`${SPACE_ACTION}/add-object`, {
282
291
  input: Schema.Struct({
283
292
  object: ReactiveObjectSchema,
284
- target: Schema.Union(SpaceSchema, DataType.Collection),
293
+ target: Schema.Union(SpaceSchema, Collection.Collection),
285
294
  hidden: Schema.optional(Schema.Boolean),
286
295
  }),
287
296
  output: Schema.Struct({
@@ -309,7 +318,7 @@ export namespace SpaceAction {
309
318
 
310
319
  export const DeletionData = Schema.Struct({
311
320
  objects: Schema.Array(EchoObjectSchema),
312
- parentCollection: DataType.Collection,
321
+ parentCollection: Collection.Collection,
313
322
  indices: Schema.Array(Schema.Number),
314
323
  nestedObjectsList: Schema.Array(Schema.Array(EchoObjectSchema)),
315
324
  wasActive: Schema.Array(Schema.String),
@@ -319,8 +328,9 @@ export namespace SpaceAction {
319
328
 
320
329
  export class RemoveObjects extends Schema.TaggedClass<RemoveObjects>()(`${SPACE_ACTION}/remove-objects`, {
321
330
  input: Schema.Struct({
322
- objects: Schema.Array(EchoObjectSchema),
323
- target: Schema.optional(DataType.Collection),
331
+ // TODO(wittjosiah): Should be Schema.Union(Type.Obj, Type.Relation).
332
+ objects: Schema.Array(ReactiveObjectSchema),
333
+ target: Schema.optional(Collection.Collection),
324
334
  deletionData: Schema.optional(DeletionData),
325
335
  }),
326
336
  output: Schema.Void,
@@ -337,7 +347,7 @@ export namespace SpaceAction {
337
347
  export class DuplicateObject extends Schema.TaggedClass<DuplicateObject>()(`${SPACE_ACTION}/duplicate-object`, {
338
348
  input: Schema.Struct({
339
349
  object: EchoObjectSchema,
340
- target: Schema.Union(SpaceSchema, DataType.Collection),
350
+ target: Schema.Union(SpaceSchema, Collection.Collection),
341
351
  }),
342
352
  output: Schema.Void,
343
353
  }) {}
@@ -356,17 +366,15 @@ export namespace CollectionAction {
356
366
  name: Schema.optional(Schema.String),
357
367
  }),
358
368
  output: Schema.Struct({
359
- object: DataType.Collection,
369
+ object: Collection.Collection,
360
370
  }),
361
371
  }) {}
362
372
 
363
373
  export const QueryCollectionForm = Schema.Struct({
364
374
  name: Schema.optional(Schema.String),
365
- typename: Schema.optional(
366
- Schema.String.annotations({
367
- [TypenameAnnotationId]: ['object-form'],
368
- }),
369
- ),
375
+ typename: Schema.String.annotations({
376
+ [TypenameAnnotationId]: ['object-form'],
377
+ }),
370
378
  });
371
379
 
372
380
  export class CreateQueryCollection extends Schema.TaggedClass<CreateQueryCollection>()(
@@ -374,7 +382,8 @@ export namespace CollectionAction {
374
382
  {
375
383
  input: QueryCollectionForm,
376
384
  output: Schema.Struct({
377
- object: DataType.QueryCollection,
385
+ // TODO(wittjosiah): Remove cast.
386
+ object: EchoObjectSchema, // Collection.QueryCollection,
378
387
  }),
379
388
  },
380
389
  ) {}