@dxos/plugin-space 0.8.4-main.dedc0f3 → 0.8.4-main.e8ec1fe

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 (337) 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-AFC6PNAB.mjs → app-graph-builder-DTM7BJ6D.mjs} +107 -96
  10. package/dist/lib/browser/app-graph-builder-DTM7BJ6D.mjs.map +7 -0
  11. package/dist/lib/browser/{app-graph-serializer-Q7QG4EKW.mjs → app-graph-serializer-TIKXF43P.mjs} +19 -19
  12. package/dist/lib/browser/app-graph-serializer-TIKXF43P.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-AFUOMLX6.mjs +167 -0
  14. package/dist/lib/browser/chunk-AFUOMLX6.mjs.map +7 -0
  15. package/dist/lib/browser/{chunk-6GRF7NEF.mjs → chunk-CKACGS7T.mjs} +553 -475
  16. package/dist/lib/browser/chunk-CKACGS7T.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-K5J7ZB5P.mjs +20 -0
  18. package/dist/lib/browser/chunk-K5J7ZB5P.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-S33AYKSS.mjs → chunk-KFUMADZF.mjs} +135 -62
  20. package/dist/lib/browser/chunk-KFUMADZF.mjs.map +7 -0
  21. package/dist/lib/browser/{chunk-WZYRDFW7.mjs → chunk-VGKOXAPE.mjs} +26 -13
  22. package/dist/lib/browser/chunk-VGKOXAPE.mjs.map +7 -0
  23. package/dist/lib/browser/chunk-VZBIIYFM.mjs +16 -0
  24. package/dist/lib/browser/chunk-VZBIIYFM.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-WJXU4GKV.mjs +19 -0
  26. package/dist/lib/browser/chunk-WJXU4GKV.mjs.map +7 -0
  27. package/dist/lib/browser/{chunk-URST7EEN.mjs → chunk-ZQMSGD5J.mjs} +35 -19
  28. package/dist/lib/browser/chunk-ZQMSGD5J.mjs.map +7 -0
  29. package/dist/lib/browser/{identity-created-T6ZNVE7S.mjs → identity-created-NAXTPQXE.mjs} +5 -5
  30. package/dist/lib/browser/identity-created-NAXTPQXE.mjs.map +7 -0
  31. package/dist/lib/browser/index.mjs +88 -70
  32. package/dist/lib/browser/index.mjs.map +3 -3
  33. package/dist/lib/browser/{intent-resolver-CO262Q44.mjs → intent-resolver-3FNTO3VW.mjs} +89 -76
  34. package/dist/lib/browser/intent-resolver-3FNTO3VW.mjs.map +7 -0
  35. package/dist/lib/browser/meta.json +1 -1
  36. package/dist/lib/browser/react-root-Q7VBWBES.mjs +30 -0
  37. package/dist/lib/browser/react-root-Q7VBWBES.mjs.map +7 -0
  38. package/dist/lib/browser/{react-surface-TPUOK2LC.mjs → react-surface-TTHS332A.mjs} +71 -105
  39. package/dist/lib/browser/react-surface-TTHS332A.mjs.map +7 -0
  40. package/dist/lib/browser/{schema-defs-YDPFZELA.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-ZYH2JWNI.mjs → settings-45PGPO2V.mjs} +5 -5
  43. package/dist/lib/browser/{settings-ZYH2JWNI.mjs.map → settings-45PGPO2V.mjs.map} +1 -1
  44. package/dist/lib/browser/{spaces-ready-3I5LISH4.mjs → spaces-ready-QCND4DVY.mjs} +15 -14
  45. package/dist/lib/browser/spaces-ready-QCND4DVY.mjs.map +7 -0
  46. package/dist/lib/browser/{state-2RGW7FQG.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-OW2EBYRI.mjs → app-graph-builder-FBJFWI4H.mjs} +107 -96
  58. package/dist/lib/node-esm/app-graph-builder-FBJFWI4H.mjs.map +7 -0
  59. package/dist/lib/node-esm/{app-graph-serializer-6PGC5WR5.mjs → app-graph-serializer-BESQZAYU.mjs} +19 -19
  60. package/dist/lib/node-esm/app-graph-serializer-BESQZAYU.mjs.map +7 -0
  61. package/dist/lib/node-esm/{chunk-RXDT5LA5.mjs → chunk-6VEONPNZ.mjs} +35 -19
  62. package/dist/lib/node-esm/chunk-6VEONPNZ.mjs.map +7 -0
  63. package/dist/lib/node-esm/chunk-6ZQGZBEP.mjs +168 -0
  64. package/dist/lib/node-esm/chunk-6ZQGZBEP.mjs.map +7 -0
  65. package/dist/lib/node-esm/chunk-BDEFTL6K.mjs +18 -0
  66. package/dist/lib/node-esm/chunk-BDEFTL6K.mjs.map +7 -0
  67. package/dist/lib/node-esm/chunk-H4JILUJK.mjs +20 -0
  68. package/dist/lib/node-esm/chunk-H4JILUJK.mjs.map +7 -0
  69. package/dist/lib/node-esm/{chunk-TEUN2E4F.mjs → chunk-OK2L7N2F.mjs} +135 -62
  70. package/dist/lib/node-esm/chunk-OK2L7N2F.mjs.map +7 -0
  71. package/dist/lib/node-esm/{chunk-LGNPMOXU.mjs → chunk-QBRPYAEL.mjs} +26 -13
  72. package/dist/lib/node-esm/chunk-QBRPYAEL.mjs.map +7 -0
  73. package/dist/lib/node-esm/{chunk-NMCD2PSG.mjs → chunk-XGAMJC5C.mjs} +553 -475
  74. package/dist/lib/node-esm/chunk-XGAMJC5C.mjs.map +7 -0
  75. package/dist/lib/node-esm/chunk-Z7BB6HC2.mjs +21 -0
  76. package/dist/lib/node-esm/chunk-Z7BB6HC2.mjs.map +7 -0
  77. package/dist/lib/node-esm/{identity-created-AL7NNCKH.mjs → identity-created-OXLKCJE3.mjs} +5 -5
  78. package/dist/lib/node-esm/identity-created-OXLKCJE3.mjs.map +7 -0
  79. package/dist/lib/node-esm/index.mjs +88 -70
  80. package/dist/lib/node-esm/index.mjs.map +3 -3
  81. package/dist/lib/node-esm/{intent-resolver-EXPK4B76.mjs → intent-resolver-6O5FSB7Z.mjs} +89 -76
  82. package/dist/lib/node-esm/intent-resolver-6O5FSB7Z.mjs.map +7 -0
  83. package/dist/lib/node-esm/meta.json +1 -1
  84. package/dist/lib/node-esm/{react-root-4OQ7MPGW.mjs → react-root-K66W3FMA.mjs} +13 -12
  85. package/dist/lib/node-esm/react-root-K66W3FMA.mjs.map +7 -0
  86. package/dist/lib/node-esm/{react-surface-WXEXIDB7.mjs → react-surface-Y7FTEIDF.mjs} +71 -105
  87. package/dist/lib/node-esm/react-surface-Y7FTEIDF.mjs.map +7 -0
  88. package/dist/lib/node-esm/{schema-defs-OYBCWKAS.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-2RYFMMTP.mjs → settings-6FO65BA6.mjs} +5 -5
  91. package/dist/lib/node-esm/{settings-2RYFMMTP.mjs.map → settings-6FO65BA6.mjs.map} +1 -1
  92. package/dist/lib/node-esm/{spaces-ready-JAP22P57.mjs → spaces-ready-P7CKVXBE.mjs} +15 -14
  93. package/dist/lib/node-esm/spaces-ready-P7CKVXBE.mjs.map +7 -0
  94. package/dist/lib/node-esm/{state-7VBVBGNS.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.map +1 -1
  100. package/dist/types/src/capabilities/capabilities.d.ts +6 -5
  101. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  102. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  103. package/dist/types/src/capabilities/react-root.d.ts.map +1 -1
  104. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  105. package/dist/types/src/capabilities/spaces-ready.d.ts.map +1 -1
  106. package/dist/types/src/components/AwaitingObject.d.ts.map +1 -1
  107. package/dist/types/src/components/CollectionArticle.d.ts +6 -0
  108. package/dist/types/src/components/CollectionArticle.d.ts.map +1 -0
  109. package/dist/types/src/components/CollectionSection.d.ts +3 -4
  110. package/dist/types/src/components/CollectionSection.d.ts.map +1 -1
  111. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts +1 -1
  112. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
  113. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts +120 -1
  114. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts.map +1 -1
  115. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +3 -3
  116. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
  117. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts +1 -1
  118. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts.map +1 -1
  119. package/dist/types/src/components/{JoinDialog.d.ts → JoinDialog/JoinDialog.d.ts} +1 -1
  120. package/dist/types/src/components/JoinDialog/JoinDialog.d.ts.map +1 -0
  121. package/dist/types/src/components/JoinDialog/index.d.ts +2 -0
  122. package/dist/types/src/components/JoinDialog/index.d.ts.map +1 -0
  123. package/dist/types/src/components/MembersContainer/MembersContainer.d.ts.map +1 -0
  124. package/dist/types/src/components/MembersContainer/MembersContainer.stories.d.ts +1707 -0
  125. package/dist/types/src/components/{MembersContainer.stories.d.ts.map → MembersContainer/MembersContainer.stories.d.ts.map} +1 -1
  126. package/dist/types/src/components/MembersContainer/index.d.ts +2 -0
  127. package/dist/types/src/components/MembersContainer/index.d.ts.map +1 -0
  128. package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts +9 -0
  129. package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts.map +1 -0
  130. package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts +10 -0
  131. package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts.map +1 -0
  132. package/dist/types/src/components/ObjectDetailsPanel/index.d.ts +3 -0
  133. package/dist/types/src/components/ObjectDetailsPanel/index.d.ts.map +1 -0
  134. package/dist/types/src/components/ObjectRenamePopover/ObjectRenamePopover.d.ts +7 -0
  135. package/dist/types/src/components/ObjectRenamePopover/ObjectRenamePopover.d.ts.map +1 -0
  136. package/dist/types/src/components/ObjectRenamePopover/index.d.ts +2 -0
  137. package/dist/types/src/components/ObjectRenamePopover/index.d.ts.map +1 -0
  138. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts +2 -2
  139. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts.map +1 -1
  140. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts +1540 -0
  141. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts.map +1 -0
  142. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts +1 -1
  143. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts.map +1 -1
  144. package/dist/types/src/components/ObjectSettings/index.d.ts +2 -1
  145. package/dist/types/src/components/ObjectSettings/index.d.ts.map +1 -1
  146. package/dist/types/src/components/RecordArticle.d.ts +5 -0
  147. package/dist/types/src/components/RecordArticle.d.ts.map +1 -0
  148. package/dist/types/src/components/{MembersContainer.stories.d.ts → RecordArticle.stories.d.ts} +121 -2
  149. package/dist/types/src/components/RecordArticle.stories.d.ts.map +1 -0
  150. package/dist/types/src/components/SchemaContainer.d.ts +1 -1
  151. package/dist/types/src/components/SchemaContainer.d.ts.map +1 -1
  152. package/dist/types/src/components/SpacePluginSettings.d.ts.map +1 -1
  153. package/dist/types/src/components/{SpacePresence.d.ts → SpacePresence/SpacePresence.d.ts} +4 -3
  154. package/dist/types/src/components/SpacePresence/SpacePresence.d.ts.map +1 -0
  155. package/dist/types/src/components/{SpacePresence.stories.d.ts → SpacePresence/SpacePresence.stories.d.ts} +122 -3
  156. package/dist/types/src/components/{SpacePresence.stories.d.ts.map → SpacePresence/SpacePresence.stories.d.ts.map} +1 -1
  157. package/dist/types/src/components/SpacePresence/index.d.ts +2 -0
  158. package/dist/types/src/components/SpacePresence/index.d.ts.map +1 -0
  159. package/dist/types/src/components/SpaceRenamePopover/SpaceRenamePopover.d.ts +7 -0
  160. package/dist/types/src/components/SpaceRenamePopover/SpaceRenamePopover.d.ts.map +1 -0
  161. package/dist/types/src/components/SpaceRenamePopover/index.d.ts +2 -0
  162. package/dist/types/src/components/SpaceRenamePopover/index.d.ts.map +1 -0
  163. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
  164. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts +120 -1
  165. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts.map +1 -1
  166. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
  167. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts +121 -2
  168. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
  169. package/dist/types/src/components/ViewEditor.d.ts +3 -4
  170. package/dist/types/src/components/ViewEditor.d.ts.map +1 -1
  171. package/dist/types/src/components/index.d.ts +10 -17
  172. package/dist/types/src/components/index.d.ts.map +1 -1
  173. package/dist/types/src/events.d.ts.map +1 -1
  174. package/dist/types/src/helpers/index.d.ts +2 -0
  175. package/dist/types/src/helpers/index.d.ts.map +1 -0
  176. package/dist/types/src/helpers/query.d.ts +8 -0
  177. package/dist/types/src/helpers/query.d.ts.map +1 -0
  178. package/dist/types/src/helpers/query.test.d.ts +2 -0
  179. package/dist/types/src/helpers/query.test.d.ts.map +1 -0
  180. package/dist/types/src/hooks/index.d.ts +1 -0
  181. package/dist/types/src/hooks/index.d.ts.map +1 -1
  182. package/dist/types/src/hooks/useActiveSpace.d.ts.map +1 -1
  183. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts +1 -1
  184. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts.map +1 -1
  185. package/dist/types/src/hooks/usePath.d.ts +1 -1
  186. package/dist/types/src/hooks/usePath.d.ts.map +1 -1
  187. package/dist/types/src/hooks/useTypeOptions.d.ts +10 -0
  188. package/dist/types/src/hooks/useTypeOptions.d.ts.map +1 -0
  189. package/dist/types/src/index.d.ts +1 -0
  190. package/dist/types/src/index.d.ts.map +1 -1
  191. package/dist/types/src/meta.d.ts +0 -1
  192. package/dist/types/src/meta.d.ts.map +1 -1
  193. package/dist/types/src/translations.d.ts +120 -0
  194. package/dist/types/src/translations.d.ts.map +1 -1
  195. package/dist/types/src/types/types.d.ts +70 -55
  196. package/dist/types/src/types/types.d.ts.map +1 -1
  197. package/dist/types/src/util.d.ts +10 -7
  198. package/dist/types/src/util.d.ts.map +1 -1
  199. package/dist/types/tsconfig.tsbuildinfo +1 -1
  200. package/package.json +65 -60
  201. package/src/SpacePlugin.ts +228 -200
  202. package/src/capabilities/app-graph-builder.ts +157 -121
  203. package/src/capabilities/app-graph-serializer.ts +12 -12
  204. package/src/capabilities/capabilities.ts +16 -11
  205. package/src/capabilities/identity-created.ts +2 -2
  206. package/src/capabilities/intent-resolver.ts +75 -59
  207. package/src/capabilities/react-root.tsx +4 -3
  208. package/src/capabilities/react-surface.tsx +65 -141
  209. package/src/capabilities/schema-defs.ts +1 -1
  210. package/src/capabilities/spaces-ready.ts +8 -5
  211. package/src/capabilities/state.ts +2 -2
  212. package/src/components/AwaitingObject.tsx +12 -14
  213. package/src/components/{CollectionMain.tsx → CollectionArticle.tsx} +7 -6
  214. package/src/components/CollectionSection.tsx +8 -6
  215. package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +11 -11
  216. package/src/components/CreateDialog/CreateObjectDialog.tsx +36 -28
  217. package/src/components/CreateDialog/CreateObjectPanel.tsx +8 -8
  218. package/src/components/CreateDialog/CreateSpaceDialog.tsx +30 -11
  219. package/src/components/{JoinDialog.tsx → JoinDialog/JoinDialog.tsx} +26 -10
  220. package/src/components/JoinDialog/index.ts +5 -0
  221. package/src/components/{MembersContainer.stories.tsx → MembersContainer/MembersContainer.stories.tsx} +7 -6
  222. package/src/components/{MembersContainer.tsx → MembersContainer/MembersContainer.tsx} +16 -14
  223. package/src/components/MembersContainer/index.ts +5 -0
  224. package/src/components/MenuFooter.tsx +2 -2
  225. package/src/components/ObjectDetailsPanel/ObjectDetailsPanel.tsx +51 -0
  226. package/src/components/ObjectDetailsPanel/ObjectForm.tsx +72 -0
  227. package/src/components/ObjectDetailsPanel/index.ts +7 -0
  228. package/src/components/{PopoverRenameObject.tsx → ObjectRenamePopover/ObjectRenamePopover.tsx} +6 -6
  229. package/src/components/ObjectRenamePopover/index.ts +5 -0
  230. package/src/components/ObjectSettings/AdvancedObjectSettings.tsx +3 -3
  231. package/src/components/ObjectSettings/BaseObjectSettings.stories.tsx +63 -0
  232. package/src/components/ObjectSettings/BaseObjectSettings.tsx +90 -26
  233. package/src/components/ObjectSettings/ForeignKeys.tsx +4 -4
  234. package/src/components/ObjectSettings/ObjectSettingsContainer.tsx +1 -1
  235. package/src/components/ObjectSettings/index.ts +3 -1
  236. package/src/components/RecordArticle.stories.tsx +115 -0
  237. package/src/components/RecordArticle.tsx +114 -0
  238. package/src/components/SchemaContainer.tsx +23 -26
  239. package/src/components/SpacePluginSettings.tsx +10 -4
  240. package/src/components/{SpacePresence.stories.tsx → SpacePresence/SpacePresence.stories.tsx} +23 -25
  241. package/src/components/{SpacePresence.tsx → SpacePresence/SpacePresence.tsx} +16 -11
  242. package/src/components/SpacePresence/index.ts +5 -0
  243. package/src/components/{PopoverRenameSpace.tsx → SpaceRenamePopover/SpaceRenamePopover.tsx} +7 -6
  244. package/src/components/SpaceRenamePopover/index.ts +5 -0
  245. package/src/components/SpaceSettings/SpaceSettingsContainer.stories.tsx +9 -4
  246. package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +44 -23
  247. package/src/components/SyncStatus/InlineSyncStatus.tsx +8 -8
  248. package/src/components/SyncStatus/SyncStatus.stories.tsx +4 -5
  249. package/src/components/SyncStatus/SyncStatus.tsx +107 -11
  250. package/src/components/ViewEditor.tsx +51 -18
  251. package/src/components/index.ts +7 -8
  252. package/src/events.ts +6 -6
  253. package/src/helpers/index.ts +5 -0
  254. package/src/helpers/query.test.ts +24 -0
  255. package/src/helpers/query.ts +158 -0
  256. package/src/hooks/index.ts +1 -0
  257. package/src/hooks/useActiveSpace.ts +2 -1
  258. package/src/hooks/useInputSurfaceLookup.tsx +8 -3
  259. package/src/hooks/usePath.ts +1 -1
  260. package/src/hooks/useTypeOptions.ts +59 -0
  261. package/src/index.ts +1 -0
  262. package/src/meta.ts +6 -3
  263. package/src/translations.ts +25 -10
  264. package/src/types/types.ts +33 -18
  265. package/src/util.tsx +141 -63
  266. package/dist/lib/browser/CollectionMain-D2B75XBS.mjs.map +0 -7
  267. package/dist/lib/browser/ObjectDetailsPanel-J7KGPJJK.mjs +0 -90
  268. package/dist/lib/browser/ObjectDetailsPanel-J7KGPJJK.mjs.map +0 -7
  269. package/dist/lib/browser/RecordMain-TEBGAVSL.mjs +0 -68
  270. package/dist/lib/browser/RecordMain-TEBGAVSL.mjs.map +0 -7
  271. package/dist/lib/browser/app-graph-builder-AFC6PNAB.mjs.map +0 -7
  272. package/dist/lib/browser/app-graph-serializer-Q7QG4EKW.mjs.map +0 -7
  273. package/dist/lib/browser/chunk-6GRF7NEF.mjs.map +0 -7
  274. package/dist/lib/browser/chunk-CBYL62HG.mjs +0 -19
  275. package/dist/lib/browser/chunk-CBYL62HG.mjs.map +0 -7
  276. package/dist/lib/browser/chunk-ELJDGQTO.mjs +0 -94
  277. package/dist/lib/browser/chunk-ELJDGQTO.mjs.map +0 -7
  278. package/dist/lib/browser/chunk-FBCGT5YY.mjs +0 -13
  279. package/dist/lib/browser/chunk-FBCGT5YY.mjs.map +0 -7
  280. package/dist/lib/browser/chunk-S33AYKSS.mjs.map +0 -7
  281. package/dist/lib/browser/chunk-TUQZO5P4.mjs +0 -20
  282. package/dist/lib/browser/chunk-TUQZO5P4.mjs.map +0 -7
  283. package/dist/lib/browser/chunk-URST7EEN.mjs.map +0 -7
  284. package/dist/lib/browser/chunk-WZYRDFW7.mjs.map +0 -7
  285. package/dist/lib/browser/identity-created-T6ZNVE7S.mjs.map +0 -7
  286. package/dist/lib/browser/intent-resolver-CO262Q44.mjs.map +0 -7
  287. package/dist/lib/browser/react-root-K4IVLFYZ.mjs +0 -29
  288. package/dist/lib/browser/react-root-K4IVLFYZ.mjs.map +0 -7
  289. package/dist/lib/browser/react-surface-TPUOK2LC.mjs.map +0 -7
  290. package/dist/lib/browser/schema-defs-YDPFZELA.mjs.map +0 -7
  291. package/dist/lib/browser/spaces-ready-3I5LISH4.mjs.map +0 -7
  292. package/dist/lib/browser/state-2RGW7FQG.mjs.map +0 -7
  293. package/dist/lib/node-esm/CollectionMain-ZJIFCWKZ.mjs.map +0 -7
  294. package/dist/lib/node-esm/ObjectDetailsPanel-7ADOXZ5W.mjs +0 -91
  295. package/dist/lib/node-esm/ObjectDetailsPanel-7ADOXZ5W.mjs.map +0 -7
  296. package/dist/lib/node-esm/RecordMain-WLYJMYER.mjs +0 -70
  297. package/dist/lib/node-esm/RecordMain-WLYJMYER.mjs.map +0 -7
  298. package/dist/lib/node-esm/app-graph-builder-OW2EBYRI.mjs.map +0 -7
  299. package/dist/lib/node-esm/app-graph-serializer-6PGC5WR5.mjs.map +0 -7
  300. package/dist/lib/node-esm/chunk-FJZNSJC4.mjs +0 -20
  301. package/dist/lib/node-esm/chunk-FJZNSJC4.mjs.map +0 -7
  302. package/dist/lib/node-esm/chunk-HC677WUJ.mjs +0 -21
  303. package/dist/lib/node-esm/chunk-HC677WUJ.mjs.map +0 -7
  304. package/dist/lib/node-esm/chunk-HWNG4MEU.mjs +0 -15
  305. package/dist/lib/node-esm/chunk-HWNG4MEU.mjs.map +0 -7
  306. package/dist/lib/node-esm/chunk-LGNPMOXU.mjs.map +0 -7
  307. package/dist/lib/node-esm/chunk-NMCD2PSG.mjs.map +0 -7
  308. package/dist/lib/node-esm/chunk-Q6AAQLQG.mjs +0 -96
  309. package/dist/lib/node-esm/chunk-Q6AAQLQG.mjs.map +0 -7
  310. package/dist/lib/node-esm/chunk-RXDT5LA5.mjs.map +0 -7
  311. package/dist/lib/node-esm/chunk-TEUN2E4F.mjs.map +0 -7
  312. package/dist/lib/node-esm/identity-created-AL7NNCKH.mjs.map +0 -7
  313. package/dist/lib/node-esm/intent-resolver-EXPK4B76.mjs.map +0 -7
  314. package/dist/lib/node-esm/react-root-4OQ7MPGW.mjs.map +0 -7
  315. package/dist/lib/node-esm/react-surface-WXEXIDB7.mjs.map +0 -7
  316. package/dist/lib/node-esm/schema-defs-OYBCWKAS.mjs.map +0 -7
  317. package/dist/lib/node-esm/spaces-ready-JAP22P57.mjs.map +0 -7
  318. package/dist/lib/node-esm/state-7VBVBGNS.mjs.map +0 -7
  319. package/dist/types/src/components/CollectionMain.d.ts +0 -7
  320. package/dist/types/src/components/CollectionMain.d.ts.map +0 -1
  321. package/dist/types/src/components/JoinDialog.d.ts.map +0 -1
  322. package/dist/types/src/components/MembersContainer.d.ts.map +0 -1
  323. package/dist/types/src/components/ObjectDetailsPanel.d.ts +0 -9
  324. package/dist/types/src/components/ObjectDetailsPanel.d.ts.map +0 -1
  325. package/dist/types/src/components/PersistenceStatus.d.ts +0 -6
  326. package/dist/types/src/components/PersistenceStatus.d.ts.map +0 -1
  327. package/dist/types/src/components/PopoverRenameObject.d.ts +0 -7
  328. package/dist/types/src/components/PopoverRenameObject.d.ts.map +0 -1
  329. package/dist/types/src/components/PopoverRenameSpace.d.ts +0 -7
  330. package/dist/types/src/components/PopoverRenameSpace.d.ts.map +0 -1
  331. package/dist/types/src/components/RecordMain.d.ts +0 -7
  332. package/dist/types/src/components/RecordMain.d.ts.map +0 -1
  333. package/dist/types/src/components/SpacePresence.d.ts.map +0 -1
  334. package/src/components/ObjectDetailsPanel.tsx +0 -79
  335. package/src/components/PersistenceStatus.tsx +0 -83
  336. package/src/components/RecordMain.tsx +0 -43
  337. /package/dist/types/src/components/{MembersContainer.d.ts → MembersContainer/MembersContainer.d.ts} +0 -0
@@ -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
- import { type Obj, Type } from '@dxos/echo';
9
- import { type BaseObject, EchoSchema, StoredSchema, type TypedObject } from '@dxos/echo-schema';
8
+ import { type Obj, QueryAST, Type } from '@dxos/echo';
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`, {
@@ -217,6 +217,16 @@ export namespace SpaceAction {
217
217
  output: Schema.Boolean,
218
218
  }) {}
219
219
 
220
+ export class Snapshot extends Schema.TaggedClass<Snapshot>()(`${SPACE_ACTION}/snapshot`, {
221
+ input: Schema.Struct({
222
+ space: SpaceSchema,
223
+ query: QueryAST.Query.pipe(Schema.optional),
224
+ }),
225
+ output: Schema.Struct({
226
+ snapshot: Schema.instanceOf(Blob),
227
+ }),
228
+ }) {}
229
+
220
230
  export const StoredSchemaForm = Schema.Struct({
221
231
  name: Schema.optional(Schema.String),
222
232
  typename: Schema.optional(
@@ -230,6 +240,8 @@ export namespace SpaceAction {
230
240
  input: Schema.Struct({
231
241
  space: SpaceSchema,
232
242
  typename: Schema.String,
243
+ // TODO(wittjosiah): This is leaky.
244
+ show: Schema.optional(Schema.Boolean),
233
245
  }),
234
246
  output: Schema.Struct({}),
235
247
  }) {}
@@ -243,6 +255,8 @@ export namespace SpaceAction {
243
255
  version: Schema.optional(Schema.String),
244
256
  // TODO(wittjosiah): Schema for schema?
245
257
  schema: Schema.Any,
258
+ // TODO(wittjosiah): This is leaky.
259
+ show: Schema.optional(Schema.Boolean),
246
260
  }),
247
261
  output: Schema.Struct({
248
262
  // TODO(wittjosiah): ObjectId.
@@ -254,7 +268,7 @@ export namespace SpaceAction {
254
268
 
255
269
  export class DeleteField extends Schema.TaggedClass<DeleteField>()(`${SPACE_ACTION}/delete-field`, {
256
270
  input: Schema.Struct({
257
- view: DataType.View,
271
+ view: View.View,
258
272
  fieldId: Schema.String,
259
273
  // TODO(wittjosiah): Separate fields for undo data?
260
274
  deletionData: Schema.optional(
@@ -272,7 +286,7 @@ export namespace SpaceAction {
272
286
 
273
287
  export class OpenCreateObject extends Schema.TaggedClass<OpenCreateObject>()(`${SPACE_ACTION}/open-create-object`, {
274
288
  input: Schema.Struct({
275
- target: Schema.Union(SpaceSchema, DataType.Collection),
289
+ target: Schema.Union(SpaceSchema, Collection.Collection),
276
290
  views: Schema.optional(Schema.Boolean),
277
291
  typename: Schema.optional(Schema.String),
278
292
  initialFormValues: Schema.optional(Schema.Any),
@@ -286,7 +300,7 @@ export namespace SpaceAction {
286
300
  export class AddObject extends Schema.TaggedClass<AddObject>()(`${SPACE_ACTION}/add-object`, {
287
301
  input: Schema.Struct({
288
302
  object: ReactiveObjectSchema,
289
- target: Schema.Union(SpaceSchema, DataType.Collection),
303
+ target: Schema.Union(SpaceSchema, Collection.Collection),
290
304
  hidden: Schema.optional(Schema.Boolean),
291
305
  }),
292
306
  output: Schema.Struct({
@@ -314,7 +328,7 @@ export namespace SpaceAction {
314
328
 
315
329
  export const DeletionData = Schema.Struct({
316
330
  objects: Schema.Array(EchoObjectSchema),
317
- parentCollection: DataType.Collection,
331
+ parentCollection: Collection.Collection,
318
332
  indices: Schema.Array(Schema.Number),
319
333
  nestedObjectsList: Schema.Array(Schema.Array(EchoObjectSchema)),
320
334
  wasActive: Schema.Array(Schema.String),
@@ -324,8 +338,9 @@ export namespace SpaceAction {
324
338
 
325
339
  export class RemoveObjects extends Schema.TaggedClass<RemoveObjects>()(`${SPACE_ACTION}/remove-objects`, {
326
340
  input: Schema.Struct({
327
- objects: Schema.Array(EchoObjectSchema),
328
- target: Schema.optional(DataType.Collection),
341
+ // TODO(wittjosiah): Should be Schema.Union(Type.Obj, Type.Relation).
342
+ objects: Schema.Array(ReactiveObjectSchema),
343
+ target: Schema.optional(Collection.Collection),
329
344
  deletionData: Schema.optional(DeletionData),
330
345
  }),
331
346
  output: Schema.Void,
@@ -342,7 +357,7 @@ export namespace SpaceAction {
342
357
  export class DuplicateObject extends Schema.TaggedClass<DuplicateObject>()(`${SPACE_ACTION}/duplicate-object`, {
343
358
  input: Schema.Struct({
344
359
  object: EchoObjectSchema,
345
- target: Schema.Union(SpaceSchema, DataType.Collection),
360
+ target: Schema.Union(SpaceSchema, Collection.Collection),
346
361
  }),
347
362
  output: Schema.Void,
348
363
  }) {}
@@ -361,7 +376,7 @@ export namespace CollectionAction {
361
376
  name: Schema.optional(Schema.String),
362
377
  }),
363
378
  output: Schema.Struct({
364
- object: DataType.Collection,
379
+ object: Collection.Collection,
365
380
  }),
366
381
  }) {}
367
382
 
@@ -378,7 +393,7 @@ export namespace CollectionAction {
378
393
  input: QueryCollectionForm,
379
394
  output: Schema.Struct({
380
395
  // TODO(wittjosiah): Remove cast.
381
- object: EchoObjectSchema, // DataType.QueryCollection,
396
+ object: EchoObjectSchema, // Collection.QueryCollection,
382
397
  }),
383
398
  },
384
399
  ) {}
package/src/util.tsx CHANGED
@@ -2,12 +2,12 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { Rx } from '@effect-rx/rx-react';
6
- import { pipe } from 'effect';
5
+ import { Atom } from '@effect-atom/atom-react';
6
+ import * as Function from 'effect/Function';
7
7
 
8
8
  import { LayoutAction, type PromiseIntentDispatcher, chain, createIntent } from '@dxos/app-framework';
9
- import { Obj, Ref, Type } from '@dxos/echo';
10
- import { type AnyEchoObject, EXPANDO_TYPENAME } from '@dxos/echo-schema';
9
+ import { Filter, Obj, Query, Ref, Type } from '@dxos/echo';
10
+ import { type AnyEchoObject, EXPANDO_TYPENAME } from '@dxos/echo/internal';
11
11
  import { invariant } from '@dxos/invariant';
12
12
  import { Migrations } from '@dxos/migrations';
13
13
  import {
@@ -20,24 +20,24 @@ import {
20
20
  type ReadableGraph,
21
21
  isGraphNode,
22
22
  } from '@dxos/plugin-graph';
23
- import { type QueryResult, type Space, SpaceState, fullyQualifiedId, getSpace, isSpace } from '@dxos/react-client/echo';
23
+ import { type QueryResult, type Space, SpaceState, getSpace, isSpace } from '@dxos/react-client/echo';
24
24
  import { ATTENDABLE_PATH_SEPARATOR } from '@dxos/react-ui-attention';
25
25
  import { type TreeData } from '@dxos/react-ui-list';
26
- import { DataType, typenameFromQuery } from '@dxos/schema';
26
+ import { Collection, StoredSchema, View, getTypenameFromQuery } from '@dxos/schema';
27
27
 
28
- import { SPACE_PLUGIN } from './meta';
28
+ import { meta } from './meta';
29
29
  import { type ObjectForm, SPACE_TYPE, SpaceAction } from './types';
30
30
 
31
- export const SPACES = `${SPACE_PLUGIN}-spaces`;
32
- export const COMPOSER_SPACE_LOCK = 'dxos.org/plugin/space/lock';
31
+ export const SPACES = `${meta.id}-spaces`;
32
+ export const COMPOSER_SPACE_LOCK = `${meta.id}/lock`;
33
33
  // TODO(wittjosiah): Remove.
34
34
  export const SHARED = 'shared-spaces';
35
35
 
36
36
  /**
37
- * Convert a query result to an Rx value of the objects.
37
+ * Convert a query result to an Atom value of the objects.
38
38
  */
39
- export const rxFromQuery = <T extends AnyEchoObject>(query: QueryResult<T>): Rx.Rx<T[]> => {
40
- return Rx.make((get) => {
39
+ export const atomFromQuery = <T extends AnyEchoObject>(query: QueryResult<T>): Atom.Atom<T[]> => {
40
+ return Atom.make((get) => {
41
41
  const unsubscribe = query.subscribe((result) => {
42
42
  get.setSelf(result.objects);
43
43
  });
@@ -57,8 +57,8 @@ export const getSpaceDisplayName = (
57
57
  : namesCache[space.id]
58
58
  ? namesCache[space.id]
59
59
  : personal
60
- ? ['personal space label', { ns: SPACE_PLUGIN }]
61
- : ['unnamed space label', { ns: SPACE_PLUGIN }];
60
+ ? ['personal space label', { ns: meta.id }]
61
+ : ['unnamed space label', { ns: meta.id }];
62
62
  };
63
63
 
64
64
  const getCollectionGraphNodePartials = ({
@@ -66,7 +66,7 @@ const getCollectionGraphNodePartials = ({
66
66
  space,
67
67
  resolve,
68
68
  }: {
69
- collection: DataType.Collection;
69
+ collection: Collection.Collection;
70
70
  space: Space;
71
71
  resolve: (typename: string) => Record<string, any>;
72
72
  }) => {
@@ -141,13 +141,15 @@ const getQueryCollectionNodePartials = ({
141
141
  space,
142
142
  resolve,
143
143
  }: {
144
- collection: DataType.QueryCollection;
144
+ collection: Collection.QueryCollection;
145
145
  space: Space;
146
146
  resolve: (typename: string) => Record<string, any>;
147
147
  }) => {
148
- const typename = typenameFromQuery(collection.query);
148
+ const typename = getTypenameFromQuery(collection.query);
149
+ const metadata = typename ? resolve(typename) : {};
149
150
  return {
150
- icon: typename && resolve(typename)?.icon,
151
+ icon: metadata.icon,
152
+ iconHue: metadata.iconHue,
151
153
  acceptPersistenceClass: new Set(['echo']),
152
154
  acceptPersistenceKey: new Set([space.id]),
153
155
  role: 'branch',
@@ -176,7 +178,7 @@ const getViewGraphNodePartials = ({
176
178
  view,
177
179
  resolve,
178
180
  }: {
179
- view: DataType.View;
181
+ view: View.View;
180
182
  resolve: (typename: string) => Record<string, any>;
181
183
  }) => {
182
184
  const presentation = view.presentation.target;
@@ -186,6 +188,7 @@ const getViewGraphNodePartials = ({
186
188
  return {
187
189
  label: view.name || ['object name placeholder', { ns: typename, default: 'New view' }],
188
190
  icon: metadata.icon,
191
+ iconHue: metadata.iconHue,
189
192
  canDrop: () => false,
190
193
  };
191
194
  };
@@ -214,9 +217,9 @@ export const constructSpaceNode = ({
214
217
  }) => {
215
218
  const hasPendingMigration = checkPendingMigration(space);
216
219
  const collection =
217
- space.state.get() === SpaceState.SPACE_READY && space.properties[DataType.Collection.typename]?.target;
220
+ space.state.get() === SpaceState.SPACE_READY && space.properties[Collection.Collection.typename]?.target;
218
221
  const partials =
219
- space.state.get() === SpaceState.SPACE_READY && Obj.instanceOf(DataType.Collection, collection)
222
+ space.state.get() === SpaceState.SPACE_READY && Obj.instanceOf(Collection.Collection, collection)
220
223
  ? getCollectionGraphNodePartials({ collection, space, resolve })
221
224
  : {};
222
225
 
@@ -234,6 +237,7 @@ export const constructSpaceNode = ({
234
237
  space.state.get() === SpaceState.SPACE_READY && space.properties.icon
235
238
  ? `ph--${space.properties.icon}--regular`
236
239
  : undefined,
240
+ iconHue: space.state.get() === SpaceState.SPACE_READY && space.properties.iconHue,
237
241
  disabled: !navigable || space.state.get() !== SpaceState.SPACE_READY || hasPendingMigration,
238
242
  testId: 'spacePlugin.space',
239
243
  canDrop: (source: TreeData) => {
@@ -244,40 +248,40 @@ export const constructSpaceNode = ({
244
248
  nodes: [
245
249
  {
246
250
  id: `settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`,
247
- type: `${SPACE_PLUGIN}/settings`,
251
+ type: `${meta.id}/settings`,
248
252
  data: null,
249
253
  properties: {
250
- label: ['settings panel label', { ns: SPACE_PLUGIN }],
254
+ label: ['settings panel label', { ns: meta.id }],
251
255
  icon: 'ph--faders--regular',
252
256
  disposition: 'alternate-tree',
253
257
  },
254
258
  nodes: [
255
259
  {
256
260
  id: `properties-settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`,
257
- type: `${SPACE_PLUGIN}/properties`,
258
- data: `${SPACE_PLUGIN}/properties`,
261
+ type: `${meta.id}/properties`,
262
+ data: `${meta.id}/properties`,
259
263
  properties: {
260
- label: ['space settings properties label', { ns: SPACE_PLUGIN }],
264
+ label: ['space settings properties label', { ns: meta.id }],
261
265
  icon: 'ph--sliders--regular',
262
266
  position: 'hoist',
263
267
  },
264
268
  },
265
269
  {
266
270
  id: `members-settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`,
267
- type: `${SPACE_PLUGIN}/members`,
268
- data: `${SPACE_PLUGIN}/members`,
271
+ type: `${meta.id}/members`,
272
+ data: `${meta.id}/members`,
269
273
  properties: {
270
- label: ['members panel label', { ns: SPACE_PLUGIN }],
274
+ label: ['members panel label', { ns: meta.id }],
271
275
  icon: 'ph--users--regular',
272
276
  position: 'hoist',
273
277
  },
274
278
  },
275
279
  {
276
280
  id: `schema-settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`,
277
- type: `${SPACE_PLUGIN}/schema`,
278
- data: `${SPACE_PLUGIN}/schema`,
281
+ type: `${meta.id}/schema`,
282
+ data: `${meta.id}/schema`,
279
283
  properties: {
280
- label: ['space settings schema label', { ns: SPACE_PLUGIN }],
284
+ label: ['space settings schema label', { ns: meta.id }],
281
285
  icon: 'ph--shapes--regular',
282
286
  },
283
287
  },
@@ -311,7 +315,7 @@ export const constructSpaceActions = ({
311
315
  await dispatch(createIntent(SpaceAction.Migrate, { space }));
312
316
  },
313
317
  properties: {
314
- label: ['migrate space label', { ns: SPACE_PLUGIN }],
318
+ label: ['migrate space label', { ns: meta.id }],
315
319
  icon: 'ph--database--regular',
316
320
  disposition: 'list-item-primary',
317
321
  disabled: migrating || Migrations.running(space),
@@ -328,7 +332,7 @@ export const constructSpaceActions = ({
328
332
  await dispatch(createIntent(SpaceAction.OpenCreateObject, { target: space }));
329
333
  },
330
334
  properties: {
331
- label: ['create object in space label', { ns: SPACE_PLUGIN }],
335
+ label: ['create object in space label', { ns: meta.id }],
332
336
  icon: 'ph--plus--regular',
333
337
  disposition: 'item',
334
338
  testId: 'spacePlugin.createObject',
@@ -341,7 +345,7 @@ export const constructSpaceActions = ({
341
345
  await dispatch(createIntent(SpaceAction.Rename, { space, caller: params?.caller }));
342
346
  },
343
347
  properties: {
344
- label: ['rename space label', { ns: SPACE_PLUGIN }],
348
+ label: ['rename space label', { ns: meta.id }],
345
349
  icon: 'ph--pencil-simple-line--regular',
346
350
  keyBinding: {
347
351
  macos: 'shift+F6',
@@ -358,12 +362,14 @@ export const constructSpaceActions = ({
358
362
  export const createStaticSchemaNode = ({ schema, space }: { schema: Type.Obj.Any; space: Space }) => {
359
363
  return {
360
364
  id: `${space.id}/${Type.getTypename(schema)}`,
361
- type: `${SPACE_PLUGIN}/static-schema`,
365
+ type: `${meta.id}/static-schema`,
362
366
  data: schema,
363
367
  properties: {
364
368
  label: ['typename label', { ns: Type.getTypename(schema), default: Type.getTypename(schema) }],
365
369
  icon: 'ph--database--regular',
370
+ iconHue: 'green',
366
371
  role: 'branch',
372
+ selectable: false,
367
373
  canDrop: () => false,
368
374
  space,
369
375
  },
@@ -397,7 +403,7 @@ export const createStaticSchemaActions = ({
397
403
  );
398
404
  },
399
405
  properties: {
400
- label: ['add view to schema label', { ns: Type.getTypename(DataType.StoredSchema) }],
406
+ label: ['add view to schema label', { ns: Type.getTypename(StoredSchema) }],
401
407
  icon: 'ph--plus--regular',
402
408
  disposition: 'list-item-primary',
403
409
  testId: 'spacePlugin.addViewToSchema',
@@ -410,7 +416,7 @@ export const createStaticSchemaActions = ({
410
416
  throw new Error('Not implemented');
411
417
  },
412
418
  properties: {
413
- label: ['rename object label', { ns: Type.getTypename(DataType.StoredSchema) }],
419
+ label: ['rename object label', { ns: Type.getTypename(StoredSchema) }],
414
420
  icon: 'ph--pencil-simple-line--regular',
415
421
  disabled: true,
416
422
  disposition: 'list-item',
@@ -429,13 +435,37 @@ export const createStaticSchemaActions = ({
429
435
  }
430
436
  },
431
437
  properties: {
432
- label: ['delete object label', { ns: Type.getTypename(DataType.StoredSchema) }],
438
+ label: ['delete object label', { ns: Type.getTypename(StoredSchema) }],
433
439
  icon: 'ph--trash--regular',
434
440
  disposition: 'list-item',
435
441
  disabled: !deletable,
436
442
  testId: 'spacePlugin.deleteObject',
437
443
  },
438
444
  },
445
+ {
446
+ id: getId(SpaceAction.Snapshot._tag),
447
+ type: ACTION_TYPE,
448
+ data: async () => {
449
+ const result = await dispatch(
450
+ createIntent(SpaceAction.Snapshot, {
451
+ space,
452
+ query: Query.select(Filter.type(schema)).ast,
453
+ }),
454
+ );
455
+ if (result.data?.snapshot) {
456
+ await downloadBlob(
457
+ result.data.snapshot,
458
+ // TODO(wittjosiah): Factor out file name construction.
459
+ `${new Date().toISOString()}-${space.id}-${Type.getTypename(schema)}.json`,
460
+ );
461
+ }
462
+ },
463
+ properties: {
464
+ label: ['snapshot by schema label', { ns: meta.id }],
465
+ icon: 'ph--camera--regular',
466
+ disposition: 'list-item',
467
+ },
468
+ },
439
469
  ];
440
470
 
441
471
  return actions;
@@ -462,13 +492,13 @@ export const createObjectNode = ({
462
492
  }
463
493
 
464
494
  const metadata = resolve(type);
465
- const partials = Obj.instanceOf(DataType.Collection, object)
495
+ const partials = Obj.instanceOf(Collection.Collection, object)
466
496
  ? getCollectionGraphNodePartials({ collection: object, space, resolve })
467
- : Obj.instanceOf(DataType.QueryCollection, object)
497
+ : Obj.instanceOf(Collection.QueryCollection, object)
468
498
  ? getQueryCollectionNodePartials({ collection: object, space, resolve })
469
- : Obj.instanceOf(DataType.StoredSchema, object)
499
+ : Obj.instanceOf(StoredSchema, object)
470
500
  ? getSchemaGraphNodePartials()
471
- : Obj.instanceOf(DataType.View, object)
501
+ : Obj.instanceOf(View.View, object)
472
502
  ? getViewGraphNodePartials({ view: object, resolve })
473
503
  : metadata.graphProps;
474
504
 
@@ -479,18 +509,26 @@ export const createObjectNode = ({
479
509
  // TODO(wittjosiah): Remove metadata labels.
480
510
  metadata.label?.(object) || ['object name placeholder', { ns: type, default: 'New item' }];
481
511
 
512
+ const selectable =
513
+ (!Obj.instanceOf(StoredSchema, object) &&
514
+ !Obj.instanceOf(Collection.QueryCollection, object) &&
515
+ !Obj.instanceOf(Collection.Collection, object)) ||
516
+ (navigable && Obj.instanceOf(Collection.Collection, object));
517
+
482
518
  return {
483
- id: fullyQualifiedId(object),
519
+ id: Obj.getDXN(object).toString(),
484
520
  type,
485
521
  cacheable: ['label', 'icon', 'role'],
486
522
  data: object,
487
523
  properties: {
488
524
  label,
489
525
  icon: metadata.icon ?? 'ph--placeholder--regular',
526
+ iconHue: metadata.iconHue,
490
527
  disposition,
491
528
  testId: 'spacePlugin.object',
492
529
  persistenceClass: 'echo',
493
530
  persistenceKey: space?.id,
531
+ selectable,
494
532
  canDrop: (source: TreeData) => {
495
533
  return droppable && isGraphNode(source.item) && Obj.isObject(source.item.data);
496
534
  },
@@ -519,15 +557,15 @@ export const constructObjectActions = ({
519
557
  const typename = Obj.getTypename(object);
520
558
  invariant(typename, 'Object has no typename');
521
559
 
522
- const getId = (id: string) => `${id}/${fullyQualifiedId(object)}`;
560
+ const getId = (id: string) => `${id}/${Obj.getDXN(object).toString()}`;
523
561
 
524
- const queryCollection = Obj.instanceOf(DataType.QueryCollection, object) ? object : undefined;
562
+ const queryCollection = Obj.instanceOf(Collection.QueryCollection, object) ? object : undefined;
525
563
  const matchingObjectForm = queryCollection
526
- ? objectForms.find((form) => Type.getTypename(form.objectSchema) === typenameFromQuery(queryCollection.query))
564
+ ? objectForms.find((form) => Type.getTypename(form.objectSchema) === getTypenameFromQuery(queryCollection.query))
527
565
  : undefined;
528
566
 
529
567
  const actions: NodeArg<ActionData>[] = [
530
- ...(Obj.instanceOf(DataType.Collection, object)
568
+ ...(Obj.instanceOf(Collection.Collection, object)
531
569
  ? [
532
570
  {
533
571
  id: getId(SpaceAction.OpenCreateObject._tag),
@@ -536,7 +574,7 @@ export const constructObjectActions = ({
536
574
  await dispatch(createIntent(SpaceAction.OpenCreateObject, { target: object }));
537
575
  },
538
576
  properties: {
539
- label: ['create object in collection label', { ns: SPACE_PLUGIN }],
577
+ label: ['create object in collection label', { ns: meta.id }],
540
578
  icon: 'ph--plus--regular',
541
579
  disposition: 'list-item-primary',
542
580
  testId: 'spacePlugin.createObject',
@@ -544,7 +582,7 @@ export const constructObjectActions = ({
544
582
  },
545
583
  ]
546
584
  : []),
547
- ...(Obj.instanceOf(DataType.StoredSchema, object)
585
+ ...(Obj.instanceOf(StoredSchema, object)
548
586
  ? [
549
587
  {
550
588
  id: getId(SpaceAction.AddObject._tag),
@@ -559,12 +597,36 @@ export const constructObjectActions = ({
559
597
  );
560
598
  },
561
599
  properties: {
562
- label: ['add view to schema label', { ns: Type.getTypename(DataType.StoredSchema) }],
600
+ label: ['add view to schema label', { ns: Type.getTypename(StoredSchema) }],
563
601
  icon: 'ph--plus--regular',
564
602
  disposition: 'list-item-primary',
565
603
  testId: 'spacePlugin.addViewToSchema',
566
604
  },
567
605
  },
606
+ {
607
+ id: getId(SpaceAction.Snapshot._tag),
608
+ type: ACTION_TYPE,
609
+ data: async () => {
610
+ const result = await dispatch(
611
+ createIntent(SpaceAction.Snapshot, {
612
+ space,
613
+ query: Query.select(Filter.type(Type.toEffectSchema(object.jsonSchema))).ast,
614
+ }),
615
+ );
616
+ if (result.data?.snapshot) {
617
+ await downloadBlob(
618
+ result.data.snapshot,
619
+ // TODO(wittjosiah): Factor out file name construction.
620
+ `${new Date().toISOString()}-${space.id}-${object.typename}.json`,
621
+ );
622
+ }
623
+ },
624
+ properties: {
625
+ label: ['snapshot by schema label', { ns: meta.id }],
626
+ icon: 'ph--camera--regular',
627
+ disposition: 'list-item',
628
+ },
629
+ },
568
630
  ]
569
631
  : []),
570
632
  ...(matchingObjectForm
@@ -577,12 +639,12 @@ export const constructObjectActions = ({
577
639
  await dispatch(
578
640
  createIntent(SpaceAction.OpenCreateObject, {
579
641
  target: space,
580
- typename: queryCollection ? typenameFromQuery(queryCollection.query) : undefined,
642
+ typename: queryCollection ? getTypenameFromQuery(queryCollection.query) : undefined,
581
643
  }),
582
644
  );
583
645
  } else {
584
646
  await dispatch(
585
- pipe(
647
+ Function.pipe(
586
648
  matchingObjectForm.getIntent({}, { space }),
587
649
  chain(SpaceAction.AddObject, { target: space, hidden: true }),
588
650
  chain(LayoutAction.Open, { part: 'main' }),
@@ -591,7 +653,7 @@ export const constructObjectActions = ({
591
653
  }
592
654
  },
593
655
  properties: {
594
- label: ['create object in smart collection label', { ns: SPACE_PLUGIN }],
656
+ label: ['create object in smart collection label', { ns: meta.id }],
595
657
  icon: 'ph--plus--regular',
596
658
  disposition: 'list-item-primary',
597
659
  testId: 'spacePlugin.createObject',
@@ -621,8 +683,8 @@ export const constructObjectActions = ({
621
683
  type: ACTION_TYPE,
622
684
  data: async () => {
623
685
  const collection = graph
624
- .getConnections(fullyQualifiedId(object), 'inbound')
625
- .find(({ data }) => Obj.instanceOf(DataType.Collection, data))?.data;
686
+ .getConnections(Obj.getDXN(object).toString(), 'inbound')
687
+ .find(({ data }) => Obj.instanceOf(Collection.Collection, data))?.data;
626
688
  await dispatch(createIntent(SpaceAction.RemoveObjects, { objects: [object], target: collection }));
627
689
  },
628
690
  properties: {
@@ -636,19 +698,19 @@ export const constructObjectActions = ({
636
698
  },
637
699
  },
638
700
  ...(navigable ||
639
- (!Obj.instanceOf(DataType.Collection, object) &&
640
- !Obj.instanceOf(DataType.QueryCollection, object) &&
641
- !Obj.instanceOf(DataType.StoredSchema, object))
701
+ (!Obj.instanceOf(Collection.Collection, object) &&
702
+ !Obj.instanceOf(Collection.QueryCollection, object) &&
703
+ !Obj.instanceOf(StoredSchema, object))
642
704
  ? [
643
705
  {
644
706
  id: getId('copy-link'),
645
707
  type: ACTION_TYPE,
646
708
  data: async () => {
647
- const url = `${window.location.origin}/${space.id}/${fullyQualifiedId(object)}`;
709
+ const url = `${window.location.origin}/${space.id}/${Obj.getDXN(object).toString()}`;
648
710
  await navigator.clipboard.writeText(url);
649
711
  },
650
712
  properties: {
651
- label: ['copy link label', { ns: SPACE_PLUGIN }],
713
+ label: ['copy link label', { ns: meta.id }],
652
714
  icon: 'ph--link--regular',
653
715
  disposition: 'list-item',
654
716
  testId: 'spacePlugin.copyLink',
@@ -661,10 +723,12 @@ export const constructObjectActions = ({
661
723
  id: getId(LayoutAction.Expose._tag),
662
724
  type: ACTION_TYPE,
663
725
  data: async () => {
664
- await dispatch(createIntent(LayoutAction.Expose, { part: 'navigation', subject: fullyQualifiedId(object) }));
726
+ await dispatch(
727
+ createIntent(LayoutAction.Expose, { part: 'navigation', subject: Obj.getDXN(object).toString() }),
728
+ );
665
729
  },
666
730
  properties: {
667
- label: ['expose object label', { ns: SPACE_PLUGIN }],
731
+ label: ['expose object label', { ns: meta.id }],
668
732
  icon: 'ph--eye--regular',
669
733
  disposition: 'heading-list-item',
670
734
  testId: 'spacePlugin.exposeObject',
@@ -675,6 +739,20 @@ export const constructObjectActions = ({
675
739
  return actions;
676
740
  };
677
741
 
742
+ // TODO(wittjosiah): Factor out.
743
+ const downloadBlob = async (blob: Blob, filename: string) => {
744
+ const url = URL.createObjectURL(blob);
745
+ const a = document.createElement('a');
746
+ a.href = url;
747
+ a.download = filename;
748
+
749
+ document.body.appendChild(a);
750
+ a.click();
751
+
752
+ document.body.removeChild(a);
753
+ URL.revokeObjectURL(url);
754
+ };
755
+
678
756
  /**
679
757
  * @deprecated This is a temporary solution.
680
758
  */
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/CollectionMain.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { useTranslation } from '@dxos/react-ui';\nimport { baseSurface, descriptionMessage, mx } from '@dxos/react-ui-theme';\nimport { type DataType } from '@dxos/schema';\n\nimport { SPACE_PLUGIN } from '../meta';\n\nexport const CollectionMain = ({ collection }: { collection: DataType.Collection }) => {\n const { t } = useTranslation(SPACE_PLUGIN);\n\n return (\n <div\n role='none'\n className={mx(baseSurface, 'min-bs-screen is-full flex items-center justify-center p-8')}\n data-testid='composer.firstRunMessage'\n >\n <p\n role='alert'\n className={mx(descriptionMessage, 'rounded-md p-8 font-normal text-lg max-is-[24rem] break-words')}\n >\n {collection.name ?? t('unnamed collection label')}\n </p>\n </div>\n );\n};\n\nexport default CollectionMain;\n"],
5
- "mappings": ";;;;;;AAIA,OAAOA,WAAW;AAElB,SAASC,sBAAsB;AAC/B,SAASC,aAAaC,oBAAoBC,UAAU;AAK7C,IAAMC,iBAAiB,CAAC,EAAEC,WAAU,MAAuC;;;AAChF,UAAM,EAAEC,EAAC,IAAKC,eAAeC,YAAAA;AAE7B,WACE,sBAAA,cAACC,OAAAA;MACCC,MAAK;MACLC,WAAWC,GAAGC,aAAa,4DAAA;MAC3BC,eAAY;OAEZ,sBAAA,cAACC,KAAAA;MACCL,MAAK;MACLC,WAAWC,GAAGI,oBAAoB,+DAAA;OAEjCX,WAAWY,QAAQX,EAAE,0BAAA,CAAA,CAAA;;;;AAI9B;AAEA,IAAA,yBAAeF;",
6
- "names": ["React", "useTranslation", "baseSurface", "descriptionMessage", "mx", "CollectionMain", "collection", "t", "useTranslation", "SPACE_PLUGIN", "div", "role", "className", "mx", "baseSurface", "data-testid", "p", "descriptionMessage", "name"]
7
- }