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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (331) hide show
  1. package/dist/lib/browser/{CollectionMain-AX7KKXWP.mjs → CollectionArticle-WTHWY4YS.mjs} +8 -8
  2. package/dist/lib/browser/CollectionArticle-WTHWY4YS.mjs.map +7 -0
  3. package/dist/lib/browser/ObjectDetailsPanel-ACGHWPDX.mjs +141 -0
  4. package/dist/lib/browser/ObjectDetailsPanel-ACGHWPDX.mjs.map +7 -0
  5. package/dist/lib/browser/ObjectSettings-U3IH7BMV.mjs +144 -0
  6. package/dist/lib/browser/ObjectSettings-U3IH7BMV.mjs.map +7 -0
  7. package/dist/lib/browser/RecordArticle-2PFEBPXY.mjs +116 -0
  8. package/dist/lib/browser/RecordArticle-2PFEBPXY.mjs.map +7 -0
  9. package/dist/lib/browser/{app-graph-builder-Y2LBZX2G.mjs → app-graph-builder-HABMCWAI.mjs} +170 -173
  10. package/dist/lib/browser/app-graph-builder-HABMCWAI.mjs.map +7 -0
  11. package/dist/lib/browser/{app-graph-serializer-425OVRTW.mjs → app-graph-serializer-G3VFEGTN.mjs} +10 -10
  12. package/dist/lib/browser/app-graph-serializer-G3VFEGTN.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-6A3NWBB6.mjs +392 -0
  14. package/dist/lib/browser/chunk-6A3NWBB6.mjs.map +7 -0
  15. package/dist/lib/browser/{chunk-PUF3B7XO.mjs → chunk-C6DAPIFF.mjs} +4 -4
  16. package/dist/lib/browser/chunk-C6DAPIFF.mjs.map +7 -0
  17. package/dist/lib/browser/{chunk-X6COEDOD.mjs → chunk-GJOZILGC.mjs} +182 -118
  18. package/dist/lib/browser/chunk-GJOZILGC.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-6KVKMOGQ.mjs → chunk-KCZ527AM.mjs} +607 -456
  20. package/dist/lib/browser/chunk-KCZ527AM.mjs.map +7 -0
  21. package/dist/lib/browser/{chunk-CVZAZRW4.mjs → chunk-P25R3AOK.mjs} +34 -4
  22. package/dist/lib/browser/chunk-P25R3AOK.mjs.map +7 -0
  23. package/dist/lib/browser/{chunk-YZJWWMNB.mjs → chunk-POFUXISV.mjs} +68 -62
  24. package/dist/lib/browser/chunk-POFUXISV.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-VZBIIYFM.mjs +16 -0
  26. package/dist/lib/browser/chunk-VZBIIYFM.mjs.map +7 -0
  27. package/dist/lib/browser/{chunk-EIXZABXD.mjs → chunk-WJXU4GKV.mjs} +2 -2
  28. package/dist/lib/browser/{identity-created-PW2BA46S.mjs → identity-created-NAXTPQXE.mjs} +3 -3
  29. package/dist/lib/browser/identity-created-NAXTPQXE.mjs.map +7 -0
  30. package/dist/lib/browser/index.mjs +83 -110
  31. package/dist/lib/browser/index.mjs.map +3 -3
  32. package/dist/lib/browser/{intent-resolver-2TBYHOBA.mjs → intent-resolver-RZEWNJ2K.mjs} +90 -82
  33. package/dist/lib/browser/intent-resolver-RZEWNJ2K.mjs.map +7 -0
  34. package/dist/lib/browser/meta.json +1 -1
  35. package/dist/lib/browser/{react-root-KMJXJ5VX.mjs → react-root-JCRD74GI.mjs} +9 -8
  36. package/dist/lib/browser/react-root-JCRD74GI.mjs.map +7 -0
  37. package/dist/lib/browser/{react-surface-YAJUAMER.mjs → react-surface-VOETEAG3.mjs} +64 -84
  38. package/dist/lib/browser/react-surface-VOETEAG3.mjs.map +7 -0
  39. package/dist/lib/browser/repair-CNLE35NF.mjs +44 -0
  40. package/dist/lib/browser/repair-CNLE35NF.mjs.map +7 -0
  41. package/dist/lib/browser/{settings-UYYJ225A.mjs → settings-TRLI52I5.mjs} +3 -3
  42. package/dist/lib/browser/{spaces-ready-YNZPWXA3.mjs → spaces-ready-OHGCWZHQ.mjs} +19 -12
  43. package/dist/lib/browser/spaces-ready-OHGCWZHQ.mjs.map +7 -0
  44. package/dist/lib/browser/{state-BPU73TYO.mjs → state-C7N6EDDZ.mjs} +3 -3
  45. package/dist/lib/browser/types/index.mjs +10 -4
  46. package/dist/lib/node-esm/{CollectionMain-EU57SRYK.mjs → CollectionArticle-KHXYT3SH.mjs} +8 -8
  47. package/dist/lib/node-esm/CollectionArticle-KHXYT3SH.mjs.map +7 -0
  48. package/dist/lib/node-esm/ObjectDetailsPanel-6OFTT3GG.mjs +142 -0
  49. package/dist/lib/node-esm/ObjectDetailsPanel-6OFTT3GG.mjs.map +7 -0
  50. package/dist/lib/node-esm/ObjectSettings-YXPJQMJ5.mjs +145 -0
  51. package/dist/lib/node-esm/ObjectSettings-YXPJQMJ5.mjs.map +7 -0
  52. package/dist/lib/node-esm/RecordArticle-SSJ7PULS.mjs +117 -0
  53. package/dist/lib/node-esm/RecordArticle-SSJ7PULS.mjs.map +7 -0
  54. package/dist/lib/node-esm/{app-graph-builder-DMNLDT7E.mjs → app-graph-builder-T6VJKIOA.mjs} +170 -173
  55. package/dist/lib/node-esm/app-graph-builder-T6VJKIOA.mjs.map +7 -0
  56. package/dist/lib/node-esm/{app-graph-serializer-ZEDSY77N.mjs → app-graph-serializer-2NLWWFUB.mjs} +10 -10
  57. package/dist/lib/node-esm/app-graph-serializer-2NLWWFUB.mjs.map +7 -0
  58. package/dist/lib/node-esm/{chunk-FLRC6XWU.mjs → chunk-7EV4SN47.mjs} +33 -4
  59. package/dist/lib/node-esm/chunk-7EV4SN47.mjs.map +7 -0
  60. package/dist/lib/node-esm/{chunk-7UIEPBQJ.mjs → chunk-AX3UGL5D.mjs} +68 -62
  61. package/dist/lib/node-esm/chunk-AX3UGL5D.mjs.map +7 -0
  62. package/dist/lib/node-esm/chunk-BDEFTL6K.mjs +18 -0
  63. package/dist/lib/node-esm/chunk-BDEFTL6K.mjs.map +7 -0
  64. package/dist/lib/node-esm/{chunk-SVFKU7EW.mjs → chunk-H4JILUJK.mjs} +2 -2
  65. package/dist/lib/node-esm/{chunk-ZFCCFELA.mjs → chunk-I6FZP42D.mjs} +182 -118
  66. package/dist/lib/node-esm/chunk-I6FZP42D.mjs.map +7 -0
  67. package/dist/lib/node-esm/{chunk-L26ZIGHA.mjs → chunk-JAMGJUFU.mjs} +607 -456
  68. package/dist/lib/node-esm/chunk-JAMGJUFU.mjs.map +7 -0
  69. package/dist/lib/node-esm/{chunk-36TAYXV7.mjs → chunk-WWGV5FJM.mjs} +4 -4
  70. package/dist/lib/node-esm/chunk-WWGV5FJM.mjs.map +7 -0
  71. package/dist/lib/node-esm/chunk-X34VDVMY.mjs +393 -0
  72. package/dist/lib/node-esm/chunk-X34VDVMY.mjs.map +7 -0
  73. package/dist/lib/node-esm/{identity-created-MWTLGQRU.mjs → identity-created-OXLKCJE3.mjs} +3 -3
  74. package/dist/lib/node-esm/identity-created-OXLKCJE3.mjs.map +7 -0
  75. package/dist/lib/node-esm/index.mjs +83 -110
  76. package/dist/lib/node-esm/index.mjs.map +3 -3
  77. package/dist/lib/node-esm/{intent-resolver-YOG27WOG.mjs → intent-resolver-4PHJWDXW.mjs} +90 -82
  78. package/dist/lib/node-esm/intent-resolver-4PHJWDXW.mjs.map +7 -0
  79. package/dist/lib/node-esm/meta.json +1 -1
  80. package/dist/lib/node-esm/{react-root-27QMJZD2.mjs → react-root-O5I5CDJ7.mjs} +9 -8
  81. package/dist/lib/node-esm/react-root-O5I5CDJ7.mjs.map +7 -0
  82. package/dist/lib/node-esm/{react-surface-RC73GAN5.mjs → react-surface-J3XDMU2D.mjs} +64 -84
  83. package/dist/lib/node-esm/react-surface-J3XDMU2D.mjs.map +7 -0
  84. package/dist/lib/node-esm/repair-EHZS6MFY.mjs +45 -0
  85. package/dist/lib/node-esm/repair-EHZS6MFY.mjs.map +7 -0
  86. package/dist/lib/node-esm/{settings-Q736OQRP.mjs → settings-MNQTKHL7.mjs} +3 -3
  87. package/dist/lib/node-esm/{spaces-ready-XZQD7Q65.mjs → spaces-ready-ZPU24DA2.mjs} +19 -12
  88. package/dist/lib/node-esm/spaces-ready-ZPU24DA2.mjs.map +7 -0
  89. package/dist/lib/node-esm/{state-BY75TM32.mjs → state-45TXZQJ6.mjs} +3 -3
  90. package/dist/lib/node-esm/types/index.mjs +10 -4
  91. package/dist/types/src/SpacePlugin.d.ts.map +1 -1
  92. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  93. package/dist/types/src/capabilities/capabilities.d.ts +12 -6
  94. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  95. package/dist/types/src/capabilities/index.d.ts +1 -1
  96. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  97. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  98. package/dist/types/src/capabilities/react-root.d.ts.map +1 -1
  99. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  100. package/dist/types/src/capabilities/repair.d.ts +4 -0
  101. package/dist/types/src/capabilities/repair.d.ts.map +1 -0
  102. package/dist/types/src/capabilities/spaces-ready.d.ts.map +1 -1
  103. package/dist/types/src/components/AwaitingObject.d.ts.map +1 -1
  104. package/dist/types/src/components/CollectionArticle.d.ts +6 -0
  105. package/dist/types/src/components/CollectionArticle.d.ts.map +1 -0
  106. package/dist/types/src/components/CollectionSection.d.ts +3 -4
  107. package/dist/types/src/components/CollectionSection.d.ts.map +1 -1
  108. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
  109. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts +218 -214
  110. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts.map +1 -1
  111. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +16 -9
  112. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
  113. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts.map +1 -1
  114. package/dist/types/src/components/JoinDialog/JoinDialog.d.ts.map +1 -0
  115. package/dist/types/src/components/JoinDialog/index.d.ts +2 -0
  116. package/dist/types/src/components/JoinDialog/index.d.ts.map +1 -0
  117. package/dist/types/src/components/MembersContainer/MembersContainer.d.ts.map +1 -0
  118. package/dist/types/src/components/MembersContainer/MembersContainer.stories.d.ts +1591 -0
  119. package/dist/types/src/components/{MembersContainer.stories.d.ts.map → MembersContainer/MembersContainer.stories.d.ts.map} +1 -1
  120. package/dist/types/src/components/MembersContainer/index.d.ts +2 -0
  121. package/dist/types/src/components/MembersContainer/index.d.ts.map +1 -0
  122. package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts +9 -0
  123. package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts.map +1 -0
  124. package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts +10 -0
  125. package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts.map +1 -0
  126. package/dist/types/src/components/ObjectDetailsPanel/index.d.ts +3 -0
  127. package/dist/types/src/components/ObjectDetailsPanel/index.d.ts.map +1 -0
  128. package/dist/types/src/components/ObjectRenamePopover/ObjectRenamePopover.d.ts +7 -0
  129. package/dist/types/src/components/ObjectRenamePopover/ObjectRenamePopover.d.ts.map +1 -0
  130. package/dist/types/src/components/ObjectRenamePopover/index.d.ts +2 -0
  131. package/dist/types/src/components/ObjectRenamePopover/index.d.ts.map +1 -0
  132. package/dist/types/src/components/ObjectSettings/AdvancedObjectSettings.d.ts.map +1 -1
  133. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts +2 -2
  134. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts.map +1 -1
  135. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts +1424 -0
  136. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts.map +1 -0
  137. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts +3 -3
  138. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts.map +1 -1
  139. package/dist/types/src/components/ObjectSettings/index.d.ts +2 -1
  140. package/dist/types/src/components/ObjectSettings/index.d.ts.map +1 -1
  141. package/dist/types/src/components/RecordArticle.d.ts +5 -0
  142. package/dist/types/src/components/RecordArticle.d.ts.map +1 -0
  143. package/dist/types/src/components/{MembersContainer.stories.d.ts → RecordArticle.stories.d.ts} +219 -215
  144. package/dist/types/src/components/RecordArticle.stories.d.ts.map +1 -0
  145. package/dist/types/src/components/SchemaContainer.d.ts +2 -2
  146. package/dist/types/src/components/SchemaContainer.d.ts.map +1 -1
  147. package/dist/types/src/components/SpacePluginSettings.d.ts.map +1 -1
  148. package/dist/types/src/components/{SpacePresence.d.ts → SpacePresence/SpacePresence.d.ts} +6 -5
  149. package/dist/types/src/components/SpacePresence/SpacePresence.d.ts.map +1 -0
  150. package/dist/types/src/components/{SpacePresence.stories.d.ts → SpacePresence/SpacePresence.stories.d.ts} +218 -214
  151. package/dist/types/src/components/{SpacePresence.stories.d.ts.map → SpacePresence/SpacePresence.stories.d.ts.map} +1 -1
  152. package/dist/types/src/components/SpacePresence/index.d.ts +2 -0
  153. package/dist/types/src/components/SpacePresence/index.d.ts.map +1 -0
  154. package/dist/types/src/components/SpaceRenamePopover/SpaceRenamePopover.d.ts +7 -0
  155. package/dist/types/src/components/SpaceRenamePopover/SpaceRenamePopover.d.ts.map +1 -0
  156. package/dist/types/src/components/SpaceRenamePopover/index.d.ts +2 -0
  157. package/dist/types/src/components/SpaceRenamePopover/index.d.ts.map +1 -0
  158. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
  159. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts +218 -214
  160. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts.map +1 -1
  161. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
  162. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts +219 -215
  163. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
  164. package/dist/types/src/components/ViewEditor.d.ts +3 -4
  165. package/dist/types/src/components/ViewEditor.d.ts.map +1 -1
  166. package/dist/types/src/components/index.d.ts +10 -17
  167. package/dist/types/src/components/index.d.ts.map +1 -1
  168. package/dist/types/src/helpers/index.d.ts +2 -0
  169. package/dist/types/src/helpers/index.d.ts.map +1 -0
  170. package/dist/types/src/helpers/query.d.ts +8 -0
  171. package/dist/types/src/helpers/query.d.ts.map +1 -0
  172. package/dist/types/src/helpers/query.test.d.ts +2 -0
  173. package/dist/types/src/helpers/query.test.d.ts.map +1 -0
  174. package/dist/types/src/hooks/index.d.ts +1 -0
  175. package/dist/types/src/hooks/index.d.ts.map +1 -1
  176. package/dist/types/src/hooks/useActiveSpace.d.ts.map +1 -1
  177. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts.map +1 -1
  178. package/dist/types/src/hooks/useTypeOptions.d.ts +10 -0
  179. package/dist/types/src/hooks/useTypeOptions.d.ts.map +1 -0
  180. package/dist/types/src/index.d.ts +1 -0
  181. package/dist/types/src/index.d.ts.map +1 -1
  182. package/dist/types/src/meta.d.ts.map +1 -1
  183. package/dist/types/src/translations.d.ts +218 -214
  184. package/dist/types/src/translations.d.ts.map +1 -1
  185. package/dist/types/src/types/form.d.ts +24 -0
  186. package/dist/types/src/types/form.d.ts.map +1 -0
  187. package/dist/types/src/types/index.d.ts +1 -0
  188. package/dist/types/src/types/index.d.ts.map +1 -1
  189. package/dist/types/src/types/types.d.ts +33 -74
  190. package/dist/types/src/types/types.d.ts.map +1 -1
  191. package/dist/types/src/util.d.ts +19 -33
  192. package/dist/types/src/util.d.ts.map +1 -1
  193. package/dist/types/tsconfig.tsbuildinfo +1 -1
  194. package/package.json +57 -48
  195. package/src/SpacePlugin.ts +64 -89
  196. package/src/capabilities/app-graph-builder.ts +165 -233
  197. package/src/capabilities/app-graph-serializer.ts +5 -5
  198. package/src/capabilities/capabilities.ts +18 -8
  199. package/src/capabilities/identity-created.ts +2 -2
  200. package/src/capabilities/index.ts +1 -1
  201. package/src/capabilities/intent-resolver.ts +66 -66
  202. package/src/capabilities/react-root.tsx +2 -1
  203. package/src/capabilities/react-surface.tsx +69 -119
  204. package/src/capabilities/repair.ts +57 -0
  205. package/src/capabilities/spaces-ready.ts +14 -5
  206. package/src/components/AwaitingObject.tsx +11 -13
  207. package/src/components/{CollectionMain.tsx → CollectionArticle.tsx} +5 -4
  208. package/src/components/CollectionSection.tsx +6 -4
  209. package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +6 -6
  210. package/src/components/CreateDialog/CreateObjectDialog.tsx +57 -40
  211. package/src/components/CreateDialog/CreateObjectPanel.tsx +33 -26
  212. package/src/components/CreateDialog/CreateSpaceDialog.tsx +25 -7
  213. package/src/components/{JoinDialog.tsx → JoinDialog/JoinDialog.tsx} +21 -5
  214. package/src/components/JoinDialog/index.ts +5 -0
  215. package/src/components/{MembersContainer.stories.tsx → MembersContainer/MembersContainer.stories.tsx} +1 -1
  216. package/src/components/{MembersContainer.tsx → MembersContainer/MembersContainer.tsx} +11 -9
  217. package/src/components/MembersContainer/index.ts +5 -0
  218. package/src/components/{ObjectDetailsPanel.tsx → ObjectDetailsPanel/ObjectDetailsPanel.tsx} +8 -36
  219. package/src/components/ObjectDetailsPanel/ObjectForm.tsx +72 -0
  220. package/src/components/ObjectDetailsPanel/index.ts +7 -0
  221. package/src/components/{PopoverRenameObject.tsx → ObjectRenamePopover/ObjectRenamePopover.tsx} +5 -5
  222. package/src/components/ObjectRenamePopover/index.ts +5 -0
  223. package/src/components/ObjectSettings/AdvancedObjectSettings.tsx +4 -5
  224. package/src/components/ObjectSettings/BaseObjectSettings.stories.tsx +63 -0
  225. package/src/components/ObjectSettings/BaseObjectSettings.tsx +90 -26
  226. package/src/components/ObjectSettings/ForeignKeys.tsx +6 -6
  227. package/src/components/ObjectSettings/ObjectSettingsContainer.tsx +1 -1
  228. package/src/components/ObjectSettings/index.ts +3 -1
  229. package/src/components/RecordArticle.stories.tsx +115 -0
  230. package/src/components/RecordArticle.tsx +114 -0
  231. package/src/components/SchemaContainer.tsx +21 -24
  232. package/src/components/SpacePluginSettings.tsx +8 -2
  233. package/src/components/{SpacePresence.stories.tsx → SpacePresence/SpacePresence.stories.tsx} +1 -1
  234. package/src/components/{SpacePresence.tsx → SpacePresence/SpacePresence.tsx} +14 -9
  235. package/src/components/SpacePresence/index.ts +5 -0
  236. package/src/components/{PopoverRenameSpace.tsx → SpaceRenamePopover/SpaceRenamePopover.tsx} +6 -5
  237. package/src/components/SpaceRenamePopover/index.ts +5 -0
  238. package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +52 -13
  239. package/src/components/SyncStatus/InlineSyncStatus.tsx +5 -5
  240. package/src/components/SyncStatus/SyncStatus.stories.tsx +3 -2
  241. package/src/components/SyncStatus/SyncStatus.tsx +105 -9
  242. package/src/components/ViewEditor.tsx +57 -18
  243. package/src/components/index.ts +7 -8
  244. package/src/helpers/index.ts +5 -0
  245. package/src/helpers/query.test.ts +24 -0
  246. package/src/helpers/query.ts +158 -0
  247. package/src/hooks/index.ts +1 -0
  248. package/src/hooks/useActiveSpace.ts +2 -1
  249. package/src/hooks/useInputSurfaceLookup.tsx +7 -2
  250. package/src/hooks/useTypeOptions.ts +27 -0
  251. package/src/index.ts +1 -0
  252. package/src/meta.ts +5 -0
  253. package/src/translations.ts +67 -58
  254. package/src/types/form.ts +75 -0
  255. package/src/types/index.ts +1 -0
  256. package/src/types/types.ts +39 -44
  257. package/src/util.tsx +187 -121
  258. package/dist/lib/browser/CollectionMain-AX7KKXWP.mjs.map +0 -7
  259. package/dist/lib/browser/ObjectDetailsPanel-SJ4XUXXX.mjs +0 -90
  260. package/dist/lib/browser/ObjectDetailsPanel-SJ4XUXXX.mjs.map +0 -7
  261. package/dist/lib/browser/RecordMain-FHPCS6GM.mjs +0 -68
  262. package/dist/lib/browser/RecordMain-FHPCS6GM.mjs.map +0 -7
  263. package/dist/lib/browser/app-graph-builder-Y2LBZX2G.mjs.map +0 -7
  264. package/dist/lib/browser/app-graph-serializer-425OVRTW.mjs.map +0 -7
  265. package/dist/lib/browser/chunk-6KVKMOGQ.mjs.map +0 -7
  266. package/dist/lib/browser/chunk-CVZAZRW4.mjs.map +0 -7
  267. package/dist/lib/browser/chunk-IRKDREHY.mjs +0 -11
  268. package/dist/lib/browser/chunk-IRKDREHY.mjs.map +0 -7
  269. package/dist/lib/browser/chunk-OYHC63NL.mjs +0 -344
  270. package/dist/lib/browser/chunk-OYHC63NL.mjs.map +0 -7
  271. package/dist/lib/browser/chunk-PUF3B7XO.mjs.map +0 -7
  272. package/dist/lib/browser/chunk-X6COEDOD.mjs.map +0 -7
  273. package/dist/lib/browser/chunk-YZJWWMNB.mjs.map +0 -7
  274. package/dist/lib/browser/identity-created-PW2BA46S.mjs.map +0 -7
  275. package/dist/lib/browser/intent-resolver-2TBYHOBA.mjs.map +0 -7
  276. package/dist/lib/browser/react-root-KMJXJ5VX.mjs.map +0 -7
  277. package/dist/lib/browser/react-surface-YAJUAMER.mjs.map +0 -7
  278. package/dist/lib/browser/schema-defs-2OCPV7JF.mjs +0 -26
  279. package/dist/lib/browser/schema-defs-2OCPV7JF.mjs.map +0 -7
  280. package/dist/lib/browser/spaces-ready-YNZPWXA3.mjs.map +0 -7
  281. package/dist/lib/node-esm/CollectionMain-EU57SRYK.mjs.map +0 -7
  282. package/dist/lib/node-esm/ObjectDetailsPanel-P7D727OV.mjs +0 -91
  283. package/dist/lib/node-esm/ObjectDetailsPanel-P7D727OV.mjs.map +0 -7
  284. package/dist/lib/node-esm/RecordMain-V73AEB6N.mjs +0 -70
  285. package/dist/lib/node-esm/RecordMain-V73AEB6N.mjs.map +0 -7
  286. package/dist/lib/node-esm/app-graph-builder-DMNLDT7E.mjs.map +0 -7
  287. package/dist/lib/node-esm/app-graph-serializer-ZEDSY77N.mjs.map +0 -7
  288. package/dist/lib/node-esm/chunk-36TAYXV7.mjs.map +0 -7
  289. package/dist/lib/node-esm/chunk-7UIEPBQJ.mjs.map +0 -7
  290. package/dist/lib/node-esm/chunk-ADEZJQE3.mjs +0 -345
  291. package/dist/lib/node-esm/chunk-ADEZJQE3.mjs.map +0 -7
  292. package/dist/lib/node-esm/chunk-FLRC6XWU.mjs.map +0 -7
  293. package/dist/lib/node-esm/chunk-L26ZIGHA.mjs.map +0 -7
  294. package/dist/lib/node-esm/chunk-MWNATOXL.mjs +0 -13
  295. package/dist/lib/node-esm/chunk-MWNATOXL.mjs.map +0 -7
  296. package/dist/lib/node-esm/chunk-ZFCCFELA.mjs.map +0 -7
  297. package/dist/lib/node-esm/identity-created-MWTLGQRU.mjs.map +0 -7
  298. package/dist/lib/node-esm/intent-resolver-YOG27WOG.mjs.map +0 -7
  299. package/dist/lib/node-esm/react-root-27QMJZD2.mjs.map +0 -7
  300. package/dist/lib/node-esm/react-surface-RC73GAN5.mjs.map +0 -7
  301. package/dist/lib/node-esm/schema-defs-X2Z7F2EV.mjs +0 -27
  302. package/dist/lib/node-esm/schema-defs-X2Z7F2EV.mjs.map +0 -7
  303. package/dist/lib/node-esm/spaces-ready-XZQD7Q65.mjs.map +0 -7
  304. package/dist/types/src/capabilities/schema-defs.d.ts +0 -4
  305. package/dist/types/src/capabilities/schema-defs.d.ts.map +0 -1
  306. package/dist/types/src/components/CollectionMain.d.ts +0 -7
  307. package/dist/types/src/components/CollectionMain.d.ts.map +0 -1
  308. package/dist/types/src/components/JoinDialog.d.ts.map +0 -1
  309. package/dist/types/src/components/MembersContainer.d.ts.map +0 -1
  310. package/dist/types/src/components/ObjectDetailsPanel.d.ts +0 -9
  311. package/dist/types/src/components/ObjectDetailsPanel.d.ts.map +0 -1
  312. package/dist/types/src/components/PersistenceStatus.d.ts +0 -6
  313. package/dist/types/src/components/PersistenceStatus.d.ts.map +0 -1
  314. package/dist/types/src/components/PopoverRenameObject.d.ts +0 -7
  315. package/dist/types/src/components/PopoverRenameObject.d.ts.map +0 -1
  316. package/dist/types/src/components/PopoverRenameSpace.d.ts +0 -7
  317. package/dist/types/src/components/PopoverRenameSpace.d.ts.map +0 -1
  318. package/dist/types/src/components/RecordMain.d.ts +0 -7
  319. package/dist/types/src/components/RecordMain.d.ts.map +0 -1
  320. package/dist/types/src/components/SpacePresence.d.ts.map +0 -1
  321. package/src/capabilities/schema-defs.ts +0 -31
  322. package/src/components/PersistenceStatus.tsx +0 -83
  323. package/src/components/RecordMain.tsx +0 -43
  324. /package/dist/lib/browser/{chunk-EIXZABXD.mjs.map → chunk-WJXU4GKV.mjs.map} +0 -0
  325. /package/dist/lib/browser/{settings-UYYJ225A.mjs.map → settings-TRLI52I5.mjs.map} +0 -0
  326. /package/dist/lib/browser/{state-BPU73TYO.mjs.map → state-C7N6EDDZ.mjs.map} +0 -0
  327. /package/dist/lib/node-esm/{chunk-SVFKU7EW.mjs.map → chunk-H4JILUJK.mjs.map} +0 -0
  328. /package/dist/lib/node-esm/{settings-Q736OQRP.mjs.map → settings-MNQTKHL7.mjs.map} +0 -0
  329. /package/dist/lib/node-esm/{state-BY75TM32.mjs.map → state-45TXZQJ6.mjs.map} +0 -0
  330. /package/dist/types/src/components/{JoinDialog.d.ts → JoinDialog/JoinDialog.d.ts} +0 -0
  331. /package/dist/types/src/components/{MembersContainer.d.ts → MembersContainer/MembersContainer.d.ts} +0 -0
package/src/util.tsx CHANGED
@@ -2,12 +2,14 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { Rx } from '@effect-rx/rx-react';
5
+ import { type Instruction } from '@atlaskit/pragmatic-drag-and-drop-hitbox/tree-item';
6
+ import { Atom } from '@effect-atom/atom-react';
6
7
  import * as Function from 'effect/Function';
8
+ import type * as Schema from 'effect/Schema';
7
9
 
8
10
  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/internal';
11
+ import { type Database, type Entity, Filter, Obj, Query, Ref, Type } from '@dxos/echo';
12
+ import { EXPANDO_TYPENAME } from '@dxos/echo/internal';
11
13
  import { invariant } from '@dxos/invariant';
12
14
  import { Migrations } from '@dxos/migrations';
13
15
  import {
@@ -20,13 +22,13 @@ import {
20
22
  type ReadableGraph,
21
23
  isGraphNode,
22
24
  } from '@dxos/plugin-graph';
23
- import { type QueryResult, type Space, SpaceState, fullyQualifiedId, getSpace, isSpace } from '@dxos/react-client/echo';
25
+ import { type Space, SpaceState, getSpace, isSpace } from '@dxos/react-client/echo';
24
26
  import { ATTENDABLE_PATH_SEPARATOR } from '@dxos/react-ui-attention';
25
27
  import { type TreeData } from '@dxos/react-ui-list';
26
- import { DataType, getTypenameFromQuery } from '@dxos/schema';
28
+ import { Collection } from '@dxos/schema';
27
29
 
28
30
  import { meta } from './meta';
29
- import { type ObjectForm, SPACE_TYPE, SpaceAction } from './types';
31
+ import { SPACE_TYPE, SpaceAction } from './types';
30
32
 
31
33
  export const SPACES = `${meta.id}-spaces`;
32
34
  export const COMPOSER_SPACE_LOCK = `${meta.id}/lock`;
@@ -34,10 +36,10 @@ export const COMPOSER_SPACE_LOCK = `${meta.id}/lock`;
34
36
  export const SHARED = 'shared-spaces';
35
37
 
36
38
  /**
37
- * Convert a query result to an Rx value of the objects.
39
+ * Convert a query result to an Atom value of the objects.
38
40
  */
39
- export const rxFromQuery = <T extends AnyEchoObject>(query: QueryResult<T>): Rx.Rx<T[]> => {
40
- return Rx.make((get) => {
41
+ export const atomFromQuery = <T extends Entity.Unknown>(query: Database.QueryResult<T>): Atom.Atom<T[]> => {
42
+ return Atom.make((get) => {
41
43
  const unsubscribe = query.subscribe((result) => {
42
44
  get.setSelf(result.objects);
43
45
  });
@@ -53,7 +55,7 @@ export const getSpaceDisplayName = (
53
55
  { personal, namesCache = {} }: { personal?: boolean; namesCache?: Record<string, string> } = {},
54
56
  ): string | [string, { ns: string }] => {
55
57
  return space.state.get() === SpaceState.SPACE_READY && (space.properties.name?.length ?? 0) > 0
56
- ? space.properties.name
58
+ ? space.properties.name!
57
59
  : namesCache[space.id]
58
60
  ? namesCache[space.id]
59
61
  : personal
@@ -66,7 +68,7 @@ const getCollectionGraphNodePartials = ({
66
68
  space,
67
69
  resolve,
68
70
  }: {
69
- collection: DataType.Collection;
71
+ collection: Collection.Collection;
70
72
  space: Space;
71
73
  resolve: (typename: string) => Record<string, any>;
72
74
  }) => {
@@ -136,32 +138,23 @@ const getCollectionGraphNodePartials = ({
136
138
  };
137
139
  };
138
140
 
139
- const getQueryCollectionNodePartials = ({
141
+ const getSystemCollectionNodePartials = ({
140
142
  collection,
141
143
  space,
142
144
  resolve,
143
145
  }: {
144
- collection: DataType.QueryCollection;
146
+ collection: Collection.Managed;
145
147
  space: Space;
146
148
  resolve: (typename: string) => Record<string, any>;
147
149
  }) => {
148
- const typename = getTypenameFromQuery(collection.query);
150
+ const metadata = resolve(collection.key);
149
151
  return {
150
- icon: typename && resolve(typename)?.icon,
152
+ label: ['typename label', { ns: collection.key, count: 2 }],
153
+ icon: metadata.icon,
154
+ iconHue: metadata.iconHue,
151
155
  acceptPersistenceClass: new Set(['echo']),
152
156
  acceptPersistenceKey: new Set([space.id]),
153
157
  role: 'branch',
154
- canDrop: (source: TreeData) => {
155
- return (
156
- isGraphNode(source.item) && Obj.isObject(source.item.data) && Obj.getTypename(source.item.data) === typename
157
- );
158
- },
159
- onTransferStart: (child: Node<Obj.Any>, index?: number) => {
160
- // No-op. Objects are moved into query collections by being removed from their original collection.
161
- },
162
- onTransferEnd: (child: Node<Obj.Any>, destination: Node) => {
163
- // No-op. Objects are moved out of query collections by being added to another collection.
164
- },
165
158
  };
166
159
  };
167
160
 
@@ -172,24 +165,6 @@ const getSchemaGraphNodePartials = () => {
172
165
  };
173
166
  };
174
167
 
175
- const getViewGraphNodePartials = ({
176
- view,
177
- resolve,
178
- }: {
179
- view: DataType.View;
180
- resolve: (typename: string) => Record<string, any>;
181
- }) => {
182
- const presentation = view.presentation.target;
183
- const typename = presentation ? Obj.getTypename(presentation) : undefined;
184
- const metadata = typename ? resolve(typename) : {};
185
-
186
- return {
187
- label: view.name || ['object name placeholder', { ns: typename, default: 'New view' }],
188
- icon: metadata.icon,
189
- canDrop: () => false,
190
- };
191
- };
192
-
193
168
  const checkPendingMigration = (space: Space) => {
194
169
  return (
195
170
  space.state.get() === SpaceState.SPACE_REQUIRES_MIGRATION ||
@@ -214,9 +189,9 @@ export const constructSpaceNode = ({
214
189
  }) => {
215
190
  const hasPendingMigration = checkPendingMigration(space);
216
191
  const collection =
217
- space.state.get() === SpaceState.SPACE_READY && space.properties[DataType.Collection.typename]?.target;
192
+ space.state.get() === SpaceState.SPACE_READY && space.properties[Collection.Collection.typename]?.target;
218
193
  const partials =
219
- space.state.get() === SpaceState.SPACE_READY && Obj.instanceOf(DataType.Collection, collection)
194
+ space.state.get() === SpaceState.SPACE_READY && Obj.instanceOf(Collection.Collection, collection)
220
195
  ? getCollectionGraphNodePartials({ collection, space, resolve })
221
196
  : {};
222
197
 
@@ -234,6 +209,7 @@ export const constructSpaceNode = ({
234
209
  space.state.get() === SpaceState.SPACE_READY && space.properties.icon
235
210
  ? `ph--${space.properties.icon}--regular`
236
211
  : undefined,
212
+ iconHue: space.state.get() === SpaceState.SPACE_READY && space.properties.iconHue,
237
213
  disabled: !navigable || space.state.get() !== SpaceState.SPACE_READY || hasPendingMigration,
238
214
  testId: 'spacePlugin.space',
239
215
  canDrop: (source: TreeData) => {
@@ -355,14 +331,21 @@ export const constructSpaceActions = ({
355
331
  return actions;
356
332
  };
357
333
 
358
- export const createStaticSchemaNode = ({ schema, space }: { schema: Type.Obj.Any; space: Space }) => {
334
+ export const createStaticSchemaNode = ({
335
+ schema,
336
+ space,
337
+ }: {
338
+ schema: Schema.Schema.AnyNoContext;
339
+ space: Space;
340
+ }): Node => {
359
341
  return {
360
342
  id: `${space.id}/${Type.getTypename(schema)}`,
361
343
  type: `${meta.id}/static-schema`,
362
344
  data: schema,
363
345
  properties: {
364
- label: ['typename label', { ns: Type.getTypename(schema), default: Type.getTypename(schema) }],
346
+ label: ['typename label', { ns: Type.getTypename(schema), count: 2, default: Type.getTypename(schema) }],
365
347
  icon: 'ph--database--regular',
348
+ iconHue: 'green',
366
349
  role: 'branch',
367
350
  selectable: false,
368
351
  canDrop: () => false,
@@ -398,7 +381,7 @@ export const createStaticSchemaActions = ({
398
381
  );
399
382
  },
400
383
  properties: {
401
- label: ['add view to schema label', { ns: Type.getTypename(DataType.StoredSchema) }],
384
+ label: ['add view to schema label', { ns: meta.id }],
402
385
  icon: 'ph--plus--regular',
403
386
  disposition: 'list-item-primary',
404
387
  testId: 'spacePlugin.addViewToSchema',
@@ -411,7 +394,7 @@ export const createStaticSchemaActions = ({
411
394
  throw new Error('Not implemented');
412
395
  },
413
396
  properties: {
414
- label: ['rename object label', { ns: Type.getTypename(DataType.StoredSchema) }],
397
+ label: ['rename object label', { ns: Type.getTypename(Type.PersistentType) }],
415
398
  icon: 'ph--pencil-simple-line--regular',
416
399
  disabled: true,
417
400
  disposition: 'list-item',
@@ -430,13 +413,37 @@ export const createStaticSchemaActions = ({
430
413
  }
431
414
  },
432
415
  properties: {
433
- label: ['delete object label', { ns: Type.getTypename(DataType.StoredSchema) }],
416
+ label: ['delete object label', { ns: Type.getTypename(Type.PersistentType) }],
434
417
  icon: 'ph--trash--regular',
435
418
  disposition: 'list-item',
436
419
  disabled: !deletable,
437
420
  testId: 'spacePlugin.deleteObject',
438
421
  },
439
422
  },
423
+ {
424
+ id: getId(SpaceAction.Snapshot._tag),
425
+ type: ACTION_TYPE,
426
+ data: async () => {
427
+ const result = await dispatch(
428
+ createIntent(SpaceAction.Snapshot, {
429
+ space,
430
+ query: Query.select(Filter.type(schema)).ast,
431
+ }),
432
+ );
433
+ if (result.data?.snapshot) {
434
+ await downloadBlob(
435
+ result.data.snapshot,
436
+ // TODO(wittjosiah): Factor out file name construction.
437
+ `${new Date().toISOString()}-${space.id}-${Type.getTypename(schema)}.json`,
438
+ );
439
+ }
440
+ },
441
+ properties: {
442
+ label: ['snapshot by schema label', { ns: meta.id }],
443
+ icon: 'ph--camera--regular',
444
+ disposition: 'list-item',
445
+ },
446
+ },
440
447
  ];
441
448
 
442
449
  return actions;
@@ -448,6 +455,7 @@ export const createObjectNode = ({
448
455
  disposition,
449
456
  droppable = true,
450
457
  navigable = false,
458
+ managedCollectionChild = false,
451
459
  resolve,
452
460
  }: {
453
461
  space: Space;
@@ -455,6 +463,7 @@ export const createObjectNode = ({
455
463
  disposition?: string;
456
464
  droppable?: boolean;
457
465
  navigable?: boolean;
466
+ managedCollectionChild?: boolean;
458
467
  resolve: (typename: string) => Record<string, any>;
459
468
  }) => {
460
469
  const type = Obj.getTypename(object);
@@ -463,15 +472,13 @@ export const createObjectNode = ({
463
472
  }
464
473
 
465
474
  const metadata = resolve(type);
466
- const partials = Obj.instanceOf(DataType.Collection, object)
475
+ const partials = Obj.instanceOf(Collection.Collection, object)
467
476
  ? getCollectionGraphNodePartials({ collection: object, space, resolve })
468
- : Obj.instanceOf(DataType.QueryCollection, object)
469
- ? getQueryCollectionNodePartials({ collection: object, space, resolve })
470
- : Obj.instanceOf(DataType.StoredSchema, object)
477
+ : Obj.instanceOf(Collection.Managed, object)
478
+ ? getSystemCollectionNodePartials({ collection: object, space, resolve })
479
+ : Obj.instanceOf(Type.PersistentType, object)
471
480
  ? getSchemaGraphNodePartials()
472
- : Obj.instanceOf(DataType.View, object)
473
- ? getViewGraphNodePartials({ view: object, resolve })
474
- : metadata.graphProps;
481
+ : metadata.graphProps;
475
482
 
476
483
  // TODO(wittjosiah): Obj.getLabel isn't triggering reactivity in some cases.
477
484
  // e.g., create new collection with no name and rename it.
@@ -481,24 +488,39 @@ export const createObjectNode = ({
481
488
  metadata.label?.(object) || ['object name placeholder', { ns: type, default: 'New item' }];
482
489
 
483
490
  const selectable =
484
- (!Obj.instanceOf(DataType.StoredSchema, object) &&
485
- !Obj.instanceOf(DataType.QueryCollection, object) &&
486
- !Obj.instanceOf(DataType.Collection, object)) ||
487
- (navigable && Obj.instanceOf(DataType.Collection, object));
491
+ (!Obj.instanceOf(Type.PersistentType, object) &&
492
+ !Obj.instanceOf(Collection.Managed, object) &&
493
+ !Obj.instanceOf(Collection.Collection, object)) ||
494
+ (navigable && Obj.instanceOf(Collection.Collection, object));
488
495
 
489
496
  return {
490
- id: fullyQualifiedId(object),
497
+ id: Obj.getDXN(object).toString(),
491
498
  type,
492
499
  cacheable: ['label', 'icon', 'role'],
493
500
  data: object,
494
501
  properties: {
495
502
  label,
496
503
  icon: metadata.icon ?? 'ph--placeholder--regular',
504
+ iconHue: metadata.iconHue,
497
505
  disposition,
498
506
  testId: 'spacePlugin.object',
499
507
  persistenceClass: 'echo',
500
508
  persistenceKey: space?.id,
501
509
  selectable,
510
+ managedCollectionChild,
511
+ blockInstruction: (source: TreeData, instruction: Instruction) => {
512
+ if (source.item.properties.managedCollectionChild) {
513
+ // TODO(wittjosiah): Support reordering system collections.
514
+ // return !(managedCollectionChild && source.item.type === type && instruction.type.startsWith('reorder'));
515
+ return true;
516
+ }
517
+
518
+ if (Obj.instanceOf(Collection.Managed, object)) {
519
+ return !instruction.type.startsWith('reorder');
520
+ }
521
+
522
+ return managedCollectionChild;
523
+ },
502
524
  canDrop: (source: TreeData) => {
503
525
  return droppable && isGraphNode(source.item) && Obj.isObject(source.item.data);
504
526
  },
@@ -511,14 +533,14 @@ export const constructObjectActions = ({
511
533
  object,
512
534
  graph,
513
535
  dispatch,
514
- objectForms,
536
+ resolve,
515
537
  deletable = true,
516
538
  navigable = false,
517
539
  }: {
518
540
  object: Obj.Any;
519
541
  graph: ReadableGraph;
520
542
  dispatch: PromiseIntentDispatcher;
521
- objectForms: ObjectForm<any>[];
543
+ resolve: (typename: string) => Record<string, any>;
522
544
  deletable?: boolean;
523
545
  navigable?: boolean;
524
546
  }) => {
@@ -527,15 +549,15 @@ export const constructObjectActions = ({
527
549
  const typename = Obj.getTypename(object);
528
550
  invariant(typename, 'Object has no typename');
529
551
 
530
- const getId = (id: string) => `${id}/${fullyQualifiedId(object)}`;
552
+ const getId = (id: string) => `${id}/${Obj.getDXN(object).toString()}`;
531
553
 
532
- const queryCollection = Obj.instanceOf(DataType.QueryCollection, object) ? object : undefined;
533
- const matchingObjectForm = queryCollection
534
- ? objectForms.find((form) => Type.getTypename(form.objectSchema) === getTypenameFromQuery(queryCollection.query))
535
- : undefined;
554
+ const managedCollection = Obj.instanceOf(Collection.Managed, object) ? object : undefined;
555
+ const metadata = managedCollection ? resolve(managedCollection.key) : {};
556
+ const createObjectIntent = metadata.createObjectIntent;
557
+ const inputSchema = metadata.inputSchema;
536
558
 
537
559
  const actions: NodeArg<ActionData>[] = [
538
- ...(Obj.instanceOf(DataType.Collection, object)
560
+ ...(Obj.instanceOf(Collection.Collection, object)
539
561
  ? [
540
562
  {
541
563
  id: getId(SpaceAction.OpenCreateObject._tag),
@@ -552,7 +574,7 @@ export const constructObjectActions = ({
552
574
  },
553
575
  ]
554
576
  : []),
555
- ...(Obj.instanceOf(DataType.StoredSchema, object)
577
+ ...(Obj.instanceOf(Type.PersistentType, object)
556
578
  ? [
557
579
  {
558
580
  id: getId(SpaceAction.AddObject._tag),
@@ -567,31 +589,55 @@ export const constructObjectActions = ({
567
589
  );
568
590
  },
569
591
  properties: {
570
- label: ['add view to schema label', { ns: Type.getTypename(DataType.StoredSchema) }],
592
+ label: ['add view to schema label', { ns: meta.id }],
571
593
  icon: 'ph--plus--regular',
572
594
  disposition: 'list-item-primary',
573
595
  testId: 'spacePlugin.addViewToSchema',
574
596
  },
575
597
  },
598
+ {
599
+ id: getId(SpaceAction.Snapshot._tag),
600
+ type: ACTION_TYPE,
601
+ data: async () => {
602
+ const result = await dispatch(
603
+ createIntent(SpaceAction.Snapshot, {
604
+ space,
605
+ query: Query.select(Filter.type(Type.toEffectSchema(object.jsonSchema))).ast,
606
+ }),
607
+ );
608
+ if (result.data?.snapshot) {
609
+ await downloadBlob(
610
+ result.data.snapshot,
611
+ // TODO(wittjosiah): Factor out file name construction.
612
+ `${new Date().toISOString()}-${space.id}-${object.typename}.json`,
613
+ );
614
+ }
615
+ },
616
+ properties: {
617
+ label: ['snapshot by schema label', { ns: meta.id }],
618
+ icon: 'ph--camera--regular',
619
+ disposition: 'list-item',
620
+ },
621
+ },
576
622
  ]
577
623
  : []),
578
- ...(matchingObjectForm
624
+ ...(createObjectIntent
579
625
  ? [
580
626
  {
581
627
  id: getId(SpaceAction.OpenCreateObject._tag),
582
628
  type: ACTION_TYPE,
583
629
  data: async () => {
584
- if (matchingObjectForm.formSchema) {
630
+ if (inputSchema) {
585
631
  await dispatch(
586
632
  createIntent(SpaceAction.OpenCreateObject, {
587
633
  target: space,
588
- typename: queryCollection ? getTypenameFromQuery(queryCollection.query) : undefined,
634
+ typename: managedCollection ? managedCollection.key : undefined,
589
635
  }),
590
636
  );
591
637
  } else {
592
638
  await dispatch(
593
639
  Function.pipe(
594
- matchingObjectForm.getIntent({}, { space }),
640
+ createObjectIntent({}, { space }),
595
641
  chain(SpaceAction.AddObject, { target: space, hidden: true }),
596
642
  chain(LayoutAction.Open, { part: 'main' }),
597
643
  ),
@@ -599,7 +645,7 @@ export const constructObjectActions = ({
599
645
  }
600
646
  },
601
647
  properties: {
602
- label: ['create object in smart collection label', { ns: meta.id }],
648
+ label: ['create object in system collection label', { ns: meta.id }],
603
649
  icon: 'ph--plus--regular',
604
650
  disposition: 'list-item-primary',
605
651
  testId: 'spacePlugin.createObject',
@@ -607,52 +653,56 @@ export const constructObjectActions = ({
607
653
  },
608
654
  ]
609
655
  : []),
610
- {
611
- id: getId(SpaceAction.RenameObject._tag),
612
- type: ACTION_TYPE,
613
- data: async (params?: InvokeParams) => {
614
- await dispatch(createIntent(SpaceAction.RenameObject, { object, caller: params?.caller }));
615
- },
616
- properties: {
617
- label: ['rename object label', { ns: typename }],
618
- icon: 'ph--pencil-simple-line--regular',
619
- disposition: 'list-item',
620
- // TODO(wittjosiah): Not working.
621
- // keyBinding: {
622
- // macos: 'shift+F6',
623
- // },
624
- testId: 'spacePlugin.renameObject',
625
- },
626
- },
627
- {
628
- id: getId(SpaceAction.RemoveObjects._tag),
629
- type: ACTION_TYPE,
630
- data: async () => {
631
- const collection = graph
632
- .getConnections(fullyQualifiedId(object), 'inbound')
633
- .find(({ data }) => Obj.instanceOf(DataType.Collection, data))?.data;
634
- await dispatch(createIntent(SpaceAction.RemoveObjects, { objects: [object], target: collection }));
635
- },
636
- properties: {
637
- label: ['delete object label', { ns: typename }],
638
- icon: 'ph--trash--regular',
639
- disposition: 'list-item',
640
- disabled: !deletable,
641
- // TODO(wittjosiah): This is a browser shortcut.
642
- // keyBinding: object instanceof CollectionType ? undefined : 'shift+meta+Backspace',
643
- testId: 'spacePlugin.deleteObject',
644
- },
645
- },
656
+ ...(managedCollection
657
+ ? []
658
+ : [
659
+ {
660
+ id: getId(SpaceAction.RenameObject._tag),
661
+ type: ACTION_TYPE,
662
+ data: async (params?: InvokeParams) => {
663
+ await dispatch(createIntent(SpaceAction.RenameObject, { object, caller: params?.caller }));
664
+ },
665
+ properties: {
666
+ label: ['rename object label', { ns: typename }],
667
+ icon: 'ph--pencil-simple-line--regular',
668
+ disposition: 'list-item',
669
+ // TODO(wittjosiah): Not working.
670
+ // keyBinding: {
671
+ // macos: 'shift+F6',
672
+ // },
673
+ testId: 'spacePlugin.renameObject',
674
+ },
675
+ },
676
+ {
677
+ id: getId(SpaceAction.RemoveObjects._tag),
678
+ type: ACTION_TYPE,
679
+ data: async () => {
680
+ const collection = graph
681
+ .getConnections(Obj.getDXN(object).toString(), 'inbound')
682
+ .find(({ data }) => Obj.instanceOf(Collection.Collection, data))?.data;
683
+ await dispatch(createIntent(SpaceAction.RemoveObjects, { objects: [object], target: collection }));
684
+ },
685
+ properties: {
686
+ label: ['delete object label', { ns: typename }],
687
+ icon: 'ph--trash--regular',
688
+ disposition: 'list-item',
689
+ disabled: !deletable,
690
+ // TODO(wittjosiah): This is a browser shortcut.
691
+ // keyBinding: object instanceof CollectionType ? undefined : 'shift+meta+Backspace',
692
+ testId: 'spacePlugin.deleteObject',
693
+ },
694
+ },
695
+ ]),
646
696
  ...(navigable ||
647
- (!Obj.instanceOf(DataType.Collection, object) &&
648
- !Obj.instanceOf(DataType.QueryCollection, object) &&
649
- !Obj.instanceOf(DataType.StoredSchema, object))
697
+ (!Obj.instanceOf(Collection.Collection, object) &&
698
+ !Obj.instanceOf(Collection.Managed, object) &&
699
+ !Obj.instanceOf(Type.PersistentType, object))
650
700
  ? [
651
701
  {
652
702
  id: getId('copy-link'),
653
703
  type: ACTION_TYPE,
654
704
  data: async () => {
655
- const url = `${window.location.origin}/${space.id}/${fullyQualifiedId(object)}`;
705
+ const url = `${window.location.origin}/${space.id}/${Obj.getDXN(object).toString()}`;
656
706
  await navigator.clipboard.writeText(url);
657
707
  },
658
708
  properties: {
@@ -669,7 +719,9 @@ export const constructObjectActions = ({
669
719
  id: getId(LayoutAction.Expose._tag),
670
720
  type: ACTION_TYPE,
671
721
  data: async () => {
672
- await dispatch(createIntent(LayoutAction.Expose, { part: 'navigation', subject: fullyQualifiedId(object) }));
722
+ await dispatch(
723
+ createIntent(LayoutAction.Expose, { part: 'navigation', subject: Obj.getDXN(object).toString() }),
724
+ );
673
725
  },
674
726
  properties: {
675
727
  label: ['expose object label', { ns: meta.id }],
@@ -683,6 +735,20 @@ export const constructObjectActions = ({
683
735
  return actions;
684
736
  };
685
737
 
738
+ // TODO(wittjosiah): Factor out.
739
+ const downloadBlob = async (blob: Blob, filename: string) => {
740
+ const url = URL.createObjectURL(blob);
741
+ const a = document.createElement('a');
742
+ a.href = url;
743
+ a.download = filename;
744
+
745
+ document.body.appendChild(a);
746
+ a.click();
747
+
748
+ document.body.removeChild(a);
749
+ URL.revokeObjectURL(url);
750
+ };
751
+
686
752
  /**
687
753
  * @deprecated This is a temporary solution.
688
754
  */
@@ -711,10 +777,10 @@ export const getNestedObjects = async (
711
777
  */
712
778
  // TODO(burdon): Remove.
713
779
  export const cloneObject = async (
714
- object: Type.Expando,
780
+ object: Obj.Any,
715
781
  resolve: (typename: string) => Record<string, any>,
716
782
  newSpace: Space,
717
- ): Promise<Type.Expando> => {
783
+ ): Promise<Obj.Any> => {
718
784
  const schema = Obj.getSchema(object);
719
785
  const typename = schema ? (Type.getTypename(schema) ?? EXPANDO_TYPENAME) : EXPANDO_TYPENAME;
720
786
  const metadata = resolve(typename);
@@ -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 { meta } from '../meta';\n\nexport const CollectionMain = ({ collection }: { collection: DataType.Collection }) => {\n const { t } = useTranslation(meta.id);\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,KAAKC,EAAE;AAEpC,WACE,sBAAA,cAACC,OAAAA;MACCC,MAAK;MACLC,WAAWC,GAAGC,aAAa,4DAAA;MAC3BC,eAAY;OAEZ,sBAAA,cAACC,KAAAA;MACCL,MAAK;MACLC,WAAWC,GAAGI,oBAAoB,+DAAA;OAEjCZ,WAAWa,QAAQZ,EAAE,0BAAA,CAAA,CAAA;;;;AAI9B;AAEA,IAAA,yBAAeF;",
6
- "names": ["React", "useTranslation", "baseSurface", "descriptionMessage", "mx", "CollectionMain", "collection", "t", "useTranslation", "meta", "id", "div", "role", "className", "mx", "baseSurface", "data-testid", "p", "descriptionMessage", "name"]
7
- }
@@ -1,90 +0,0 @@
1
- import {
2
- meta
3
- } from "./chunk-IRKDREHY.mjs";
4
-
5
- // src/components/ObjectDetailsPanel.tsx
6
- import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
7
- import React, { useCallback } from "react";
8
- import { setValue } from "@dxos/echo/internal";
9
- import { invariant } from "@dxos/invariant";
10
- import { useClient } from "@dxos/react-client";
11
- import { Filter, getSpace, useQuery, useSchema } from "@dxos/react-client/echo";
12
- import { Callout, useTranslation } from "@dxos/react-ui";
13
- import { useSelected } from "@dxos/react-ui-attention";
14
- import { Form, useRefQueryLookupHandler } from "@dxos/react-ui-form";
15
- import { getTypenameFromQuery } from "@dxos/schema";
16
- import { isNonNullable } from "@dxos/util";
17
- var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-space/src/components/ObjectDetailsPanel.tsx";
18
- var ObjectDetailsPanel = ({ objectId, view }) => {
19
- var _effect = _useSignals();
20
- try {
21
- const { t } = useTranslation(meta.id);
22
- const client = useClient();
23
- const space = getSpace(view);
24
- const typename = view.query ? getTypenameFromQuery(view.query.ast) : void 0;
25
- const schema = useSchema(client, space, typename);
26
- const queriedObjects = useQuery(space, schema ? Filter.type(schema) : Filter.nothing());
27
- const selectedRows = useSelected(objectId, "multi");
28
- const selectedObjects = selectedRows.map((id) => queriedObjects.find((obj) => obj.id === id)).filter(isNonNullable);
29
- const handleRefQueryLookup = useRefQueryLookupHandler({
30
- space
31
- });
32
- const handleSave = useCallback((values, { changed }) => {
33
- const id = values.id;
34
- invariant(typeof id === "string", void 0, {
35
- F: __dxlog_file,
36
- L: 38,
37
- S: void 0,
38
- A: [
39
- "typeof id === 'string'",
40
- ""
41
- ]
42
- });
43
- const object = queriedObjects.find((obj) => obj.id === id);
44
- invariant(object, void 0, {
45
- F: __dxlog_file,
46
- L: 40,
47
- S: void 0,
48
- A: [
49
- "object",
50
- ""
51
- ]
52
- });
53
- const changedPaths = Object.keys(changed).filter((path) => changed[path]);
54
- for (const path of changedPaths) {
55
- const value = values[path];
56
- setValue(object, path, value);
57
- }
58
- }, [
59
- queriedObjects
60
- ]);
61
- if (selectedObjects.length === 0) {
62
- return /* @__PURE__ */ React.createElement("div", {
63
- role: "none",
64
- className: "plb-cardSpacingBlock pli-cardSpacingInline"
65
- }, /* @__PURE__ */ React.createElement(Callout.Root, {
66
- classNames: "is-full"
67
- }, /* @__PURE__ */ React.createElement(Callout.Title, null, t("row details no selection label"))));
68
- }
69
- return /* @__PURE__ */ React.createElement("div", {
70
- role: "none",
71
- className: "bs-full is-full flex flex-col p-2 gap-1 overflow-y-auto"
72
- }, schema && selectedObjects.map((object) => /* @__PURE__ */ React.createElement("div", {
73
- key: object.id,
74
- className: "border border-separator rounded"
75
- }, /* @__PURE__ */ React.createElement(Form, {
76
- autoSave: true,
77
- schema,
78
- values: object,
79
- onSave: handleSave,
80
- onQueryRefOptions: handleRefQueryLookup
81
- }))));
82
- } finally {
83
- _effect.f();
84
- }
85
- };
86
- var ObjectDetailsPanel_default = ObjectDetailsPanel;
87
- export {
88
- ObjectDetailsPanel_default as default
89
- };
90
- //# sourceMappingURL=ObjectDetailsPanel-SJ4XUXXX.mjs.map