@dxos/plugin-space 0.8.4-main.84f28bd → 0.8.4-main.9735255

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 (622) hide show
  1. package/dist/lib/browser/CollectionArticle-OQMUVFVV.mjs +125 -0
  2. package/dist/lib/browser/CollectionArticle-OQMUVFVV.mjs.map +7 -0
  3. package/dist/lib/browser/ObjectCardStack-TWHN6C2Y.mjs +148 -0
  4. package/dist/lib/browser/ObjectCardStack-TWHN6C2Y.mjs.map +7 -0
  5. package/dist/lib/browser/ObjectDetails-GEDIISKK.mjs +142 -0
  6. package/dist/lib/browser/ObjectDetails-GEDIISKK.mjs.map +7 -0
  7. package/dist/lib/browser/RecordArticle-W57QE7QV.mjs +107 -0
  8. package/dist/lib/browser/RecordArticle-W57QE7QV.mjs.map +7 -0
  9. package/dist/lib/browser/app-graph-builder-SJHTZXZF.mjs +523 -0
  10. package/dist/lib/browser/app-graph-builder-SJHTZXZF.mjs.map +7 -0
  11. package/dist/lib/browser/app-graph-serializer-7AT7QMSK.mjs +84 -0
  12. package/dist/lib/browser/app-graph-serializer-7AT7QMSK.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-4WZUGLQQ.mjs +117 -0
  14. package/dist/lib/browser/chunk-4WZUGLQQ.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-ASV6DYFH.mjs +19 -0
  16. package/dist/lib/browser/chunk-ASV6DYFH.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-AWVAX26X.mjs +13 -0
  18. package/dist/lib/browser/chunk-AWVAX26X.mjs.map +7 -0
  19. package/dist/lib/browser/chunk-CCRSHECL.mjs +714 -0
  20. package/dist/lib/browser/chunk-CCRSHECL.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-HSMQFM57.mjs +16 -0
  22. package/dist/lib/browser/chunk-HSMQFM57.mjs.map +7 -0
  23. package/dist/lib/browser/chunk-SUI34XSA.mjs +772 -0
  24. package/dist/lib/browser/chunk-SUI34XSA.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-TWUMNPG4.mjs +1898 -0
  26. package/dist/lib/browser/chunk-TWUMNPG4.mjs.map +7 -0
  27. package/dist/lib/browser/{chunk-6VLSHG4A.mjs → chunk-ZT2VPYRM.mjs} +105 -36
  28. package/dist/lib/browser/chunk-ZT2VPYRM.mjs.map +7 -0
  29. package/dist/lib/browser/cli/index.mjs +849 -0
  30. package/dist/lib/browser/cli/index.mjs.map +7 -0
  31. package/dist/lib/browser/identity-created-VCFYLSBB.mjs +23 -0
  32. package/dist/lib/browser/identity-created-VCFYLSBB.mjs.map +7 -0
  33. package/dist/lib/browser/index.mjs +243 -180
  34. package/dist/lib/browser/index.mjs.map +4 -4
  35. package/dist/lib/browser/meta.json +1 -1
  36. package/dist/lib/browser/operation-resolver-SIRQT36Z.mjs +827 -0
  37. package/dist/lib/browser/operation-resolver-SIRQT36Z.mjs.map +7 -0
  38. package/dist/lib/browser/react-root-3SPMM45V.mjs +30 -0
  39. package/dist/lib/browser/react-root-3SPMM45V.mjs.map +7 -0
  40. package/dist/lib/browser/react-surface-UUS7NDHS.mjs +382 -0
  41. package/dist/lib/browser/react-surface-UUS7NDHS.mjs.map +7 -0
  42. package/dist/lib/browser/repair-CJG26D52.mjs +50 -0
  43. package/dist/lib/browser/repair-CJG26D52.mjs.map +7 -0
  44. package/dist/lib/browser/settings-ZS2AQ73E.mjs +33 -0
  45. package/dist/lib/browser/settings-ZS2AQ73E.mjs.map +7 -0
  46. package/dist/lib/browser/spaces-ready-OQDGWUOS.mjs +242 -0
  47. package/dist/lib/browser/spaces-ready-OQDGWUOS.mjs.map +7 -0
  48. package/dist/lib/browser/state-7YZQB2KY.mjs +58 -0
  49. package/dist/lib/browser/state-7YZQB2KY.mjs.map +7 -0
  50. package/dist/lib/browser/types/index.mjs +18 -10
  51. package/dist/lib/node-esm/CollectionArticle-V5OOJVJJ.mjs +126 -0
  52. package/dist/lib/node-esm/CollectionArticle-V5OOJVJJ.mjs.map +7 -0
  53. package/dist/lib/node-esm/ObjectCardStack-C5ZXRKP7.mjs +149 -0
  54. package/dist/lib/node-esm/ObjectCardStack-C5ZXRKP7.mjs.map +7 -0
  55. package/dist/lib/node-esm/ObjectDetails-6ZLDRKCO.mjs +143 -0
  56. package/dist/lib/node-esm/ObjectDetails-6ZLDRKCO.mjs.map +7 -0
  57. package/dist/lib/node-esm/RecordArticle-SSV74Z46.mjs +108 -0
  58. package/dist/lib/node-esm/RecordArticle-SSV74Z46.mjs.map +7 -0
  59. package/dist/lib/node-esm/app-graph-builder-HZ3XXDFZ.mjs +524 -0
  60. package/dist/lib/node-esm/app-graph-builder-HZ3XXDFZ.mjs.map +7 -0
  61. package/dist/lib/node-esm/app-graph-serializer-WJ2TIQG6.mjs +85 -0
  62. package/dist/lib/node-esm/app-graph-serializer-WJ2TIQG6.mjs.map +7 -0
  63. package/dist/lib/node-esm/{chunk-SXD6T2N4.mjs → chunk-2SW6S2BB.mjs} +105 -36
  64. package/dist/lib/node-esm/chunk-2SW6S2BB.mjs.map +7 -0
  65. package/dist/lib/node-esm/chunk-7KMYUWSR.mjs +773 -0
  66. package/dist/lib/node-esm/chunk-7KMYUWSR.mjs.map +7 -0
  67. package/dist/lib/node-esm/chunk-CVXULIYC.mjs +20 -0
  68. package/dist/lib/node-esm/chunk-CVXULIYC.mjs.map +7 -0
  69. package/dist/lib/node-esm/chunk-FYSBFBSD.mjs +1899 -0
  70. package/dist/lib/node-esm/chunk-FYSBFBSD.mjs.map +7 -0
  71. package/dist/lib/node-esm/chunk-HREWB23G.mjs +15 -0
  72. package/dist/lib/node-esm/chunk-HREWB23G.mjs.map +7 -0
  73. package/dist/lib/node-esm/chunk-JOBIWCBC.mjs +118 -0
  74. package/dist/lib/node-esm/chunk-JOBIWCBC.mjs.map +7 -0
  75. package/dist/lib/node-esm/chunk-MPL6NHQX.mjs +715 -0
  76. package/dist/lib/node-esm/chunk-MPL6NHQX.mjs.map +7 -0
  77. package/dist/lib/node-esm/chunk-SL4BJSUG.mjs +18 -0
  78. package/dist/lib/node-esm/chunk-SL4BJSUG.mjs.map +7 -0
  79. package/dist/lib/node-esm/cli/index.mjs +850 -0
  80. package/dist/lib/node-esm/cli/index.mjs.map +7 -0
  81. package/dist/lib/node-esm/identity-created-2SJABVJD.mjs +25 -0
  82. package/dist/lib/node-esm/identity-created-2SJABVJD.mjs.map +7 -0
  83. package/dist/lib/node-esm/index.mjs +243 -180
  84. package/dist/lib/node-esm/index.mjs.map +4 -4
  85. package/dist/lib/node-esm/meta.json +1 -1
  86. package/dist/lib/node-esm/operation-resolver-ZE3XJL5J.mjs +828 -0
  87. package/dist/lib/node-esm/operation-resolver-ZE3XJL5J.mjs.map +7 -0
  88. package/dist/lib/node-esm/react-root-Y6JTGDTW.mjs +31 -0
  89. package/dist/lib/node-esm/react-root-Y6JTGDTW.mjs.map +7 -0
  90. package/dist/lib/node-esm/react-surface-SQ4SK3OK.mjs +383 -0
  91. package/dist/lib/node-esm/react-surface-SQ4SK3OK.mjs.map +7 -0
  92. package/dist/lib/node-esm/repair-G3ZW3VG3.mjs +51 -0
  93. package/dist/lib/node-esm/repair-G3ZW3VG3.mjs.map +7 -0
  94. package/dist/lib/node-esm/settings-PVI2VG56.mjs +34 -0
  95. package/dist/lib/node-esm/settings-PVI2VG56.mjs.map +7 -0
  96. package/dist/lib/node-esm/spaces-ready-R744OHQG.mjs +243 -0
  97. package/dist/lib/node-esm/spaces-ready-R744OHQG.mjs.map +7 -0
  98. package/dist/lib/node-esm/state-XE5YGPHM.mjs +59 -0
  99. package/dist/lib/node-esm/state-XE5YGPHM.mjs.map +7 -0
  100. package/dist/lib/node-esm/types/index.mjs +18 -10
  101. package/dist/types/src/SpacePlugin.d.ts +3 -15
  102. package/dist/types/src/SpacePlugin.d.ts.map +1 -1
  103. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +6 -0
  104. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -0
  105. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +3 -0
  106. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +1 -0
  107. package/dist/types/src/capabilities/app-graph-serializer/app-graph-serializer.d.ts +5 -0
  108. package/dist/types/src/capabilities/app-graph-serializer/app-graph-serializer.d.ts.map +1 -0
  109. package/dist/types/src/capabilities/app-graph-serializer/index.d.ts +3 -0
  110. package/dist/types/src/capabilities/app-graph-serializer/index.d.ts.map +1 -0
  111. package/dist/types/src/capabilities/identity-created/identity-created.d.ts +5 -0
  112. package/dist/types/src/capabilities/identity-created/identity-created.d.ts.map +1 -0
  113. package/dist/types/src/capabilities/identity-created/index.d.ts +3 -0
  114. package/dist/types/src/capabilities/identity-created/index.d.ts.map +1 -0
  115. package/dist/types/src/capabilities/index.d.ts +10 -21
  116. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  117. package/dist/types/src/capabilities/operation-resolver/index.d.ts +6 -0
  118. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -0
  119. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +9 -0
  120. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -0
  121. package/dist/types/src/capabilities/react-root/index.d.ts +6 -0
  122. package/dist/types/src/capabilities/react-root/index.d.ts.map +1 -0
  123. package/dist/types/src/capabilities/react-root/react-root.d.ts +9 -0
  124. package/dist/types/src/capabilities/react-root/react-root.d.ts.map +1 -0
  125. package/dist/types/src/capabilities/react-surface/index.d.ts +5 -0
  126. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -0
  127. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +8 -0
  128. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -0
  129. package/dist/types/src/capabilities/repair/index.d.ts +3 -0
  130. package/dist/types/src/capabilities/repair/index.d.ts.map +1 -0
  131. package/dist/types/src/capabilities/repair/repair.d.ts +6 -0
  132. package/dist/types/src/capabilities/repair/repair.d.ts.map +1 -0
  133. package/dist/types/src/capabilities/settings/index.d.ts +7 -0
  134. package/dist/types/src/capabilities/settings/index.d.ts.map +1 -0
  135. package/dist/types/src/capabilities/settings/settings.d.ts +9 -0
  136. package/dist/types/src/capabilities/settings/settings.d.ts.map +1 -0
  137. package/dist/types/src/capabilities/spaces-ready/index.d.ts +3 -0
  138. package/dist/types/src/capabilities/spaces-ready/index.d.ts.map +1 -0
  139. package/dist/types/src/capabilities/spaces-ready/spaces-ready.d.ts +5 -0
  140. package/dist/types/src/capabilities/spaces-ready/spaces-ready.d.ts.map +1 -0
  141. package/dist/types/src/capabilities/state/index.d.ts +13 -0
  142. package/dist/types/src/capabilities/state/index.d.ts.map +1 -0
  143. package/dist/types/src/capabilities/state/state.d.ts +17 -0
  144. package/dist/types/src/capabilities/state/state.d.ts.map +1 -0
  145. package/dist/types/src/cli/commands/database/add.d.ts +17 -0
  146. package/dist/types/src/cli/commands/database/add.d.ts.map +1 -0
  147. package/dist/types/src/cli/commands/database/index.d.ts +3 -0
  148. package/dist/types/src/cli/commands/database/index.d.ts.map +1 -0
  149. package/dist/types/src/cli/commands/database/query/index.d.ts +2 -0
  150. package/dist/types/src/cli/commands/database/query/index.d.ts.map +1 -0
  151. package/dist/types/src/cli/commands/database/query/query.d.ts +13 -0
  152. package/dist/types/src/cli/commands/database/query/query.d.ts.map +1 -0
  153. package/dist/types/src/cli/commands/database/query/query.test.d.ts +2 -0
  154. package/dist/types/src/cli/commands/database/query/query.test.d.ts.map +1 -0
  155. package/dist/types/src/cli/commands/database/remove.d.ts +9 -0
  156. package/dist/types/src/cli/commands/database/remove.d.ts.map +1 -0
  157. package/dist/types/src/cli/commands/database/stats.d.ts +6 -0
  158. package/dist/types/src/cli/commands/database/stats.d.ts.map +1 -0
  159. package/dist/types/src/cli/commands/database/util.d.ts +14 -0
  160. package/dist/types/src/cli/commands/database/util.d.ts.map +1 -0
  161. package/dist/types/src/cli/commands/index.d.ts +4 -0
  162. package/dist/types/src/cli/commands/index.d.ts.map +1 -0
  163. package/dist/types/src/cli/commands/queue/index.d.ts +7 -0
  164. package/dist/types/src/cli/commands/queue/index.d.ts.map +1 -0
  165. package/dist/types/src/cli/commands/queue/query.d.ts +8 -0
  166. package/dist/types/src/cli/commands/queue/query.d.ts.map +1 -0
  167. package/dist/types/src/cli/commands/queue/util.d.ts +6 -0
  168. package/dist/types/src/cli/commands/queue/util.d.ts.map +1 -0
  169. package/dist/types/src/cli/commands/space/close/close.d.ts +12 -0
  170. package/dist/types/src/cli/commands/space/close/close.d.ts.map +1 -0
  171. package/dist/types/src/cli/commands/space/close/index.d.ts +2 -0
  172. package/dist/types/src/cli/commands/space/close/index.d.ts.map +1 -0
  173. package/dist/types/src/cli/commands/space/create/create.d.ts +12 -0
  174. package/dist/types/src/cli/commands/space/create/create.d.ts.map +1 -0
  175. package/dist/types/src/cli/commands/space/create/create.test.d.ts +2 -0
  176. package/dist/types/src/cli/commands/space/create/create.test.d.ts.map +1 -0
  177. package/dist/types/src/cli/commands/space/create/index.d.ts +2 -0
  178. package/dist/types/src/cli/commands/space/create/index.d.ts.map +1 -0
  179. package/dist/types/src/cli/commands/space/index.d.ts +31 -0
  180. package/dist/types/src/cli/commands/space/index.d.ts.map +1 -0
  181. package/dist/types/src/cli/commands/space/info/index.d.ts +2 -0
  182. package/dist/types/src/cli/commands/space/info/index.d.ts.map +1 -0
  183. package/dist/types/src/cli/commands/space/info/info.d.ts +13 -0
  184. package/dist/types/src/cli/commands/space/info/info.d.ts.map +1 -0
  185. package/dist/types/src/cli/commands/space/info/info.test.d.ts +2 -0
  186. package/dist/types/src/cli/commands/space/info/info.test.d.ts.map +1 -0
  187. package/dist/types/src/cli/commands/space/join/index.d.ts +2 -0
  188. package/dist/types/src/cli/commands/space/join/index.d.ts.map +1 -0
  189. package/dist/types/src/cli/commands/space/join/join.d.ts +14 -0
  190. package/dist/types/src/cli/commands/space/join/join.d.ts.map +1 -0
  191. package/dist/types/src/cli/commands/space/join/util.d.ts +17 -0
  192. package/dist/types/src/cli/commands/space/join/util.d.ts.map +1 -0
  193. package/dist/types/src/cli/commands/space/list/index.d.ts +2 -0
  194. package/dist/types/src/cli/commands/space/list/index.d.ts.map +1 -0
  195. package/dist/types/src/cli/commands/space/list/list.d.ts +7 -0
  196. package/dist/types/src/cli/commands/space/list/list.d.ts.map +1 -0
  197. package/dist/types/src/cli/commands/space/list/list.test.d.ts +2 -0
  198. package/dist/types/src/cli/commands/space/list/list.test.d.ts.map +1 -0
  199. package/dist/types/src/cli/commands/space/members/index.d.ts +2 -0
  200. package/dist/types/src/cli/commands/space/members/index.d.ts.map +1 -0
  201. package/dist/types/src/cli/commands/space/members/members.d.ts +13 -0
  202. package/dist/types/src/cli/commands/space/members/members.d.ts.map +1 -0
  203. package/dist/types/src/cli/commands/space/members/members.test.d.ts +2 -0
  204. package/dist/types/src/cli/commands/space/members/members.test.d.ts.map +1 -0
  205. package/dist/types/src/cli/commands/space/members/util.d.ts +9 -0
  206. package/dist/types/src/cli/commands/space/members/util.d.ts.map +1 -0
  207. package/dist/types/src/cli/commands/space/open/index.d.ts +2 -0
  208. package/dist/types/src/cli/commands/space/open/index.d.ts.map +1 -0
  209. package/dist/types/src/cli/commands/space/open/open.d.ts +12 -0
  210. package/dist/types/src/cli/commands/space/open/open.d.ts.map +1 -0
  211. package/dist/types/src/cli/commands/space/schema/index.d.ts +8 -0
  212. package/dist/types/src/cli/commands/space/schema/index.d.ts.map +1 -0
  213. package/dist/types/src/cli/commands/space/schema/list/index.d.ts +2 -0
  214. package/dist/types/src/cli/commands/space/schema/list/index.d.ts.map +1 -0
  215. package/dist/types/src/cli/commands/space/schema/list/list.d.ts +15 -0
  216. package/dist/types/src/cli/commands/space/schema/list/list.d.ts.map +1 -0
  217. package/dist/types/src/cli/commands/space/schema/list/list.test.d.ts +2 -0
  218. package/dist/types/src/cli/commands/space/schema/list/list.test.d.ts.map +1 -0
  219. package/dist/types/src/cli/commands/space/schema/list/util.d.ts +15 -0
  220. package/dist/types/src/cli/commands/space/schema/list/util.d.ts.map +1 -0
  221. package/dist/types/src/cli/commands/space/share/index.d.ts +2 -0
  222. package/dist/types/src/cli/commands/space/share/index.d.ts.map +1 -0
  223. package/dist/types/src/cli/commands/space/share/share.d.ts +19 -0
  224. package/dist/types/src/cli/commands/space/share/share.d.ts.map +1 -0
  225. package/dist/types/src/cli/commands/space/sync/index.d.ts +2 -0
  226. package/dist/types/src/cli/commands/space/sync/index.d.ts.map +1 -0
  227. package/dist/types/src/cli/commands/space/sync/sync.d.ts +6 -0
  228. package/dist/types/src/cli/commands/space/sync/sync.d.ts.map +1 -0
  229. package/dist/types/src/cli/commands/space/sync/sync.test.d.ts +2 -0
  230. package/dist/types/src/cli/commands/space/sync/sync.test.d.ts.map +1 -0
  231. package/dist/types/src/cli/index.d.ts +2 -0
  232. package/dist/types/src/cli/index.d.ts.map +1 -0
  233. package/dist/types/src/cli/plugin.d.ts +4 -0
  234. package/dist/types/src/cli/plugin.d.ts.map +1 -0
  235. package/dist/types/src/components/AwaitingObject.d.ts.map +1 -1
  236. package/dist/types/src/components/CollectionArticle.d.ts +9 -0
  237. package/dist/types/src/components/CollectionArticle.d.ts.map +1 -0
  238. package/dist/types/src/components/CollectionSection.d.ts +3 -4
  239. package/dist/types/src/components/CollectionSection.d.ts.map +1 -1
  240. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts +6 -5
  241. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
  242. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts +1602 -8
  243. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts.map +1 -1
  244. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +20 -10
  245. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
  246. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts +1 -1
  247. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts.map +1 -1
  248. package/dist/types/src/components/{JoinDialog.d.ts → JoinDialog/JoinDialog.d.ts} +1 -1
  249. package/dist/types/src/components/JoinDialog/JoinDialog.d.ts.map +1 -0
  250. package/dist/types/src/components/JoinDialog/index.d.ts +2 -0
  251. package/dist/types/src/components/JoinDialog/index.d.ts.map +1 -0
  252. package/dist/types/src/components/{MembersContainer.d.ts → MembersContainer/MembersContainer.d.ts} +3 -2
  253. package/dist/types/src/components/MembersContainer/MembersContainer.d.ts.map +1 -0
  254. package/dist/types/src/components/MembersContainer/MembersContainer.stories.d.ts +1600 -0
  255. package/dist/types/src/components/MembersContainer/MembersContainer.stories.d.ts.map +1 -0
  256. package/dist/types/src/components/MembersContainer/index.d.ts +2 -0
  257. package/dist/types/src/components/MembersContainer/index.d.ts.map +1 -0
  258. package/dist/types/src/components/MenuFooter.d.ts +1 -1
  259. package/dist/types/src/components/MenuFooter.d.ts.map +1 -1
  260. package/dist/types/src/components/ObjectCardStack/ObjectCardStack.d.ts +8 -0
  261. package/dist/types/src/components/ObjectCardStack/ObjectCardStack.d.ts.map +1 -0
  262. package/dist/types/src/components/ObjectCardStack/ObjectForm.d.ts +9 -0
  263. package/dist/types/src/components/ObjectCardStack/ObjectForm.d.ts.map +1 -0
  264. package/dist/types/src/components/ObjectCardStack/index.d.ts +3 -0
  265. package/dist/types/src/components/ObjectCardStack/index.d.ts.map +1 -0
  266. package/dist/types/src/components/{ObjectSettings → ObjectDetails}/BaseObjectSettings.d.ts +3 -3
  267. package/dist/types/src/components/ObjectDetails/BaseObjectSettings.d.ts.map +1 -0
  268. package/dist/types/src/components/ObjectDetails/BaseObjectSettings.stories.d.ts +1433 -0
  269. package/dist/types/src/components/ObjectDetails/BaseObjectSettings.stories.d.ts.map +1 -0
  270. package/dist/types/src/components/ObjectDetails/ForeignKeys.d.ts +8 -0
  271. package/dist/types/src/components/ObjectDetails/ForeignKeys.d.ts.map +1 -0
  272. package/dist/types/src/components/ObjectDetails/ObjectDetails.d.ts +9 -0
  273. package/dist/types/src/components/ObjectDetails/ObjectDetails.d.ts.map +1 -0
  274. package/dist/types/src/components/ObjectDetails/index.d.ts +3 -0
  275. package/dist/types/src/components/ObjectDetails/index.d.ts.map +1 -0
  276. package/dist/types/src/components/ObjectRenamePopover/ObjectRenamePopover.d.ts +7 -0
  277. package/dist/types/src/components/ObjectRenamePopover/ObjectRenamePopover.d.ts.map +1 -0
  278. package/dist/types/src/components/ObjectRenamePopover/index.d.ts +2 -0
  279. package/dist/types/src/components/ObjectRenamePopover/index.d.ts.map +1 -0
  280. package/dist/types/src/components/RecordArticle.d.ts +5 -0
  281. package/dist/types/src/components/RecordArticle.d.ts.map +1 -0
  282. package/dist/types/src/components/RecordArticle.stories.d.ts +1600 -0
  283. package/dist/types/src/components/RecordArticle.stories.d.ts.map +1 -0
  284. package/dist/types/src/components/SchemaContainer.d.ts +2 -2
  285. package/dist/types/src/components/SchemaContainer.d.ts.map +1 -1
  286. package/dist/types/src/components/SpacePluginSettings.d.ts +4 -2
  287. package/dist/types/src/components/SpacePluginSettings.d.ts.map +1 -1
  288. package/dist/types/src/components/{SpacePresence.d.ts → SpacePresence/SpacePresence.d.ts} +7 -6
  289. package/dist/types/src/components/SpacePresence/SpacePresence.d.ts.map +1 -0
  290. package/dist/types/src/components/SpacePresence/SpacePresence.stories.d.ts +1430 -0
  291. package/dist/types/src/components/SpacePresence/SpacePresence.stories.d.ts.map +1 -0
  292. package/dist/types/src/components/SpacePresence/index.d.ts +2 -0
  293. package/dist/types/src/components/SpacePresence/index.d.ts.map +1 -0
  294. package/dist/types/src/components/SpaceRenamePopover/SpaceRenamePopover.d.ts +7 -0
  295. package/dist/types/src/components/SpaceRenamePopover/SpaceRenamePopover.d.ts.map +1 -0
  296. package/dist/types/src/components/SpaceRenamePopover/index.d.ts +2 -0
  297. package/dist/types/src/components/SpaceRenamePopover/index.d.ts.map +1 -0
  298. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts +1 -1
  299. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
  300. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts +1430 -4
  301. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts.map +1 -1
  302. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts +1 -1
  303. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
  304. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts +1431 -5
  305. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
  306. package/dist/types/src/components/SyncStatus/status.d.ts +5 -5
  307. package/dist/types/src/components/ViewEditor.d.ts +7 -0
  308. package/dist/types/src/components/ViewEditor.d.ts.map +1 -0
  309. package/dist/types/src/components/index.d.ts +16 -6
  310. package/dist/types/src/components/index.d.ts.map +1 -1
  311. package/dist/types/src/constants.d.ts +6 -0
  312. package/dist/types/src/constants.d.ts.map +1 -0
  313. package/dist/types/src/helpers/index.d.ts +2 -0
  314. package/dist/types/src/helpers/index.d.ts.map +1 -0
  315. package/dist/types/src/helpers/query.d.ts +7 -0
  316. package/dist/types/src/helpers/query.d.ts.map +1 -0
  317. package/dist/types/src/helpers/query.test.d.ts +2 -0
  318. package/dist/types/src/helpers/query.test.d.ts.map +1 -0
  319. package/dist/types/src/hooks/index.d.ts +1 -0
  320. package/dist/types/src/hooks/index.d.ts.map +1 -1
  321. package/dist/types/src/hooks/useActiveSpace.d.ts +2 -2
  322. package/dist/types/src/hooks/useActiveSpace.d.ts.map +1 -1
  323. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts +2 -8
  324. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts.map +1 -1
  325. package/dist/types/src/hooks/usePath.d.ts +3 -3
  326. package/dist/types/src/hooks/usePath.d.ts.map +1 -1
  327. package/dist/types/src/hooks/useTypeOptions.d.ts +10 -0
  328. package/dist/types/src/hooks/useTypeOptions.d.ts.map +1 -0
  329. package/dist/types/src/index.d.ts +2 -2
  330. package/dist/types/src/index.d.ts.map +1 -1
  331. package/dist/types/src/meta.d.ts +2 -3
  332. package/dist/types/src/meta.d.ts.map +1 -1
  333. package/dist/types/src/translations.d.ts +1300 -36
  334. package/dist/types/src/translations.d.ts.map +1 -1
  335. package/dist/types/src/types/capabilities.d.ts +71 -0
  336. package/dist/types/src/types/capabilities.d.ts.map +1 -0
  337. package/dist/types/src/types/events.d.ts +9 -0
  338. package/dist/types/src/types/events.d.ts.map +1 -0
  339. package/dist/types/src/types/form.d.ts +22 -0
  340. package/dist/types/src/types/form.d.ts.map +1 -0
  341. package/dist/types/src/types/index.d.ts +3 -0
  342. package/dist/types/src/types/index.d.ts.map +1 -1
  343. package/dist/types/src/types/types.d.ts +640 -338
  344. package/dist/types/src/types/types.d.ts.map +1 -1
  345. package/dist/types/src/util.d.ts +49 -31
  346. package/dist/types/src/util.d.ts.map +1 -1
  347. package/dist/types/tsconfig.tsbuildinfo +1 -1
  348. package/package.json +86 -64
  349. package/src/SpacePlugin.ts +174 -170
  350. package/src/capabilities/app-graph-builder/app-graph-builder.ts +617 -0
  351. package/src/capabilities/app-graph-builder/index.ts +7 -0
  352. package/src/capabilities/app-graph-serializer/app-graph-serializer.ts +82 -0
  353. package/src/capabilities/app-graph-serializer/index.ts +7 -0
  354. package/src/capabilities/identity-created/identity-created.ts +29 -0
  355. package/src/capabilities/identity-created/index.ts +7 -0
  356. package/src/capabilities/index.ts +10 -15
  357. package/src/capabilities/operation-resolver/index.ts +7 -0
  358. package/src/capabilities/operation-resolver/operation-resolver.ts +760 -0
  359. package/src/capabilities/react-root/index.ts +7 -0
  360. package/src/capabilities/react-root/react-root.tsx +25 -0
  361. package/src/capabilities/react-surface/index.ts +7 -0
  362. package/src/capabilities/react-surface/react-surface.tsx +375 -0
  363. package/src/capabilities/repair/index.ts +7 -0
  364. package/src/capabilities/repair/repair.ts +67 -0
  365. package/src/capabilities/settings/index.ts +7 -0
  366. package/src/capabilities/settings/settings.ts +32 -0
  367. package/src/capabilities/spaces-ready/index.ts +7 -0
  368. package/src/capabilities/spaces-ready/spaces-ready.ts +289 -0
  369. package/src/capabilities/state/index.ts +7 -0
  370. package/src/capabilities/state/state.ts +64 -0
  371. package/src/cli/commands/database/add.ts +116 -0
  372. package/src/cli/commands/database/index.ts +16 -0
  373. package/src/cli/commands/database/query/index.ts +5 -0
  374. package/src/cli/commands/database/query/query.test.ts +55 -0
  375. package/src/cli/commands/database/query/query.ts +44 -0
  376. package/src/cli/commands/database/remove.ts +51 -0
  377. package/src/cli/commands/database/stats.ts +44 -0
  378. package/src/cli/commands/database/util.ts +32 -0
  379. package/src/cli/commands/index.ts +7 -0
  380. package/src/cli/commands/queue/index.ts +12 -0
  381. package/src/cli/commands/queue/query.ts +45 -0
  382. package/src/cli/commands/queue/util.ts +19 -0
  383. package/src/cli/commands/space/close/close.ts +40 -0
  384. package/src/cli/commands/space/close/index.ts +5 -0
  385. package/src/cli/commands/space/create/create.test.ts +67 -0
  386. package/src/cli/commands/space/create/create.ts +61 -0
  387. package/src/cli/commands/space/create/index.ts +5 -0
  388. package/src/cli/commands/space/index.ts +21 -0
  389. package/src/cli/commands/space/info/index.ts +5 -0
  390. package/src/cli/commands/space/info/info.test.ts +47 -0
  391. package/src/cli/commands/space/info/info.ts +37 -0
  392. package/src/cli/commands/space/join/index.ts +5 -0
  393. package/src/cli/commands/space/join/join.ts +122 -0
  394. package/src/cli/commands/space/join/util.ts +82 -0
  395. package/src/cli/commands/space/list/index.ts +5 -0
  396. package/src/cli/commands/space/list/list.test.ts +36 -0
  397. package/src/cli/commands/space/list/list.ts +30 -0
  398. package/src/cli/commands/space/members/index.ts +5 -0
  399. package/src/cli/commands/space/members/members.test.ts +46 -0
  400. package/src/cli/commands/space/members/members.ts +40 -0
  401. package/src/cli/commands/space/members/util.ts +29 -0
  402. package/src/cli/commands/space/open/index.ts +5 -0
  403. package/src/cli/commands/space/open/open.ts +39 -0
  404. package/src/cli/commands/space/schema/index.ts +12 -0
  405. package/src/cli/commands/space/schema/list/index.ts +5 -0
  406. package/src/cli/commands/space/schema/list/list.test.ts +42 -0
  407. package/src/cli/commands/space/schema/list/list.ts +64 -0
  408. package/src/cli/commands/space/schema/list/util.ts +39 -0
  409. package/src/cli/commands/space/share/index.ts +5 -0
  410. package/src/cli/commands/space/share/share.ts +112 -0
  411. package/src/cli/commands/space/sync/index.ts +5 -0
  412. package/src/cli/commands/space/sync/sync.test.ts +12 -0
  413. package/src/cli/commands/space/sync/sync.ts +33 -0
  414. package/src/cli/index.ts +5 -0
  415. package/src/cli/plugin.ts +81 -0
  416. package/src/components/AwaitingObject.tsx +26 -27
  417. package/src/components/CollectionArticle.tsx +153 -0
  418. package/src/components/CollectionSection.tsx +8 -6
  419. package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +37 -30
  420. package/src/components/CreateDialog/CreateObjectDialog.tsx +95 -71
  421. package/src/components/CreateDialog/CreateObjectPanel.tsx +170 -97
  422. package/src/components/CreateDialog/CreateSpaceDialog.tsx +39 -33
  423. package/src/components/{JoinDialog.tsx → JoinDialog/JoinDialog.tsx} +28 -39
  424. package/src/components/JoinDialog/index.ts +5 -0
  425. package/src/components/MembersContainer/MembersContainer.stories.tsx +56 -0
  426. package/src/components/{MembersContainer.tsx → MembersContainer/MembersContainer.tsx} +56 -55
  427. package/src/components/MembersContainer/index.ts +5 -0
  428. package/src/components/MenuFooter.tsx +5 -6
  429. package/src/components/ObjectCardStack/ObjectCardStack.tsx +67 -0
  430. package/src/components/ObjectCardStack/ObjectForm.tsx +97 -0
  431. package/src/components/ObjectCardStack/index.ts +7 -0
  432. package/src/components/ObjectDetails/BaseObjectSettings.stories.tsx +63 -0
  433. package/src/components/ObjectDetails/BaseObjectSettings.tsx +122 -0
  434. package/src/components/{ObjectSettings → ObjectDetails}/ForeignKeys.tsx +8 -8
  435. package/src/components/ObjectDetails/ObjectDetails.tsx +32 -0
  436. package/src/components/ObjectDetails/index.ts +7 -0
  437. package/src/components/ObjectRenamePopover/ObjectRenamePopover.tsx +52 -0
  438. package/src/components/ObjectRenamePopover/index.ts +5 -0
  439. package/src/components/RecordArticle.stories.tsx +115 -0
  440. package/src/components/RecordArticle.tsx +122 -0
  441. package/src/components/SchemaContainer.tsx +28 -31
  442. package/src/components/SpacePluginSettings.tsx +25 -16
  443. package/src/components/{SpacePresence.stories.tsx → SpacePresence/SpacePresence.stories.tsx} +24 -23
  444. package/src/components/{SpacePresence.tsx → SpacePresence/SpacePresence.tsx} +27 -24
  445. package/src/components/SpacePresence/index.ts +5 -0
  446. package/src/components/{PopoverRenameSpace.tsx → SpaceRenamePopover/SpaceRenamePopover.tsx} +16 -16
  447. package/src/components/SpaceRenamePopover/index.ts +5 -0
  448. package/src/components/SpaceSettings/SpaceSettingsContainer.stories.tsx +19 -11
  449. package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +193 -157
  450. package/src/components/SyncStatus/InlineSyncStatus.tsx +8 -8
  451. package/src/components/SyncStatus/SyncStatus.stories.tsx +9 -9
  452. package/src/components/SyncStatus/SyncStatus.tsx +110 -13
  453. package/src/components/SyncStatus/save-tracker.ts +2 -2
  454. package/src/components/SyncStatus/status.ts +4 -4
  455. package/src/components/ViewEditor.tsx +101 -0
  456. package/src/components/index.ts +11 -6
  457. package/src/constants.ts +11 -0
  458. package/src/helpers/index.ts +5 -0
  459. package/src/helpers/query.test.ts +24 -0
  460. package/src/helpers/query.ts +153 -0
  461. package/src/hooks/index.ts +1 -0
  462. package/src/hooks/useActiveSpace.ts +7 -4
  463. package/src/hooks/useInputSurfaceLookup.tsx +9 -13
  464. package/src/hooks/usePath.ts +5 -5
  465. package/src/hooks/useTypeOptions.ts +25 -0
  466. package/src/index.ts +2 -2
  467. package/src/meta.ts +8 -5
  468. package/src/translations.ts +106 -32
  469. package/src/types/capabilities.ts +73 -0
  470. package/src/types/events.ts +15 -0
  471. package/src/types/form.ts +69 -0
  472. package/src/types/index.ts +3 -0
  473. package/src/types/types.ts +539 -206
  474. package/src/util.tsx +447 -241
  475. package/dist/lib/browser/app-graph-builder-PMDF6PJV.mjs +0 -363
  476. package/dist/lib/browser/app-graph-builder-PMDF6PJV.mjs.map +0 -7
  477. package/dist/lib/browser/app-graph-serializer-UKYMBX4O.mjs +0 -80
  478. package/dist/lib/browser/app-graph-serializer-UKYMBX4O.mjs.map +0 -7
  479. package/dist/lib/browser/chunk-6VLSHG4A.mjs.map +0 -7
  480. package/dist/lib/browser/chunk-C7KGJTAL.mjs +0 -18
  481. package/dist/lib/browser/chunk-C7KGJTAL.mjs.map +0 -7
  482. package/dist/lib/browser/chunk-FBCGT5YY.mjs +0 -13
  483. package/dist/lib/browser/chunk-FBCGT5YY.mjs.map +0 -7
  484. package/dist/lib/browser/chunk-GVTXQCIW.mjs +0 -1915
  485. package/dist/lib/browser/chunk-GVTXQCIW.mjs.map +0 -7
  486. package/dist/lib/browser/chunk-S6NY637J.mjs +0 -284
  487. package/dist/lib/browser/chunk-S6NY637J.mjs.map +0 -7
  488. package/dist/lib/browser/chunk-VLBRSGJ2.mjs +0 -94
  489. package/dist/lib/browser/chunk-VLBRSGJ2.mjs.map +0 -7
  490. package/dist/lib/browser/chunk-WBSEOLEM.mjs +0 -546
  491. package/dist/lib/browser/chunk-WBSEOLEM.mjs.map +0 -7
  492. package/dist/lib/browser/chunk-XXIPJLJF.mjs +0 -19
  493. package/dist/lib/browser/chunk-XXIPJLJF.mjs.map +0 -7
  494. package/dist/lib/browser/identity-created-23XJJV2N.mjs +0 -23
  495. package/dist/lib/browser/identity-created-23XJJV2N.mjs.map +0 -7
  496. package/dist/lib/browser/intent-resolver-WK5WYFH3.mjs +0 -610
  497. package/dist/lib/browser/intent-resolver-WK5WYFH3.mjs.map +0 -7
  498. package/dist/lib/browser/react-root-7S6FIC5G.mjs +0 -29
  499. package/dist/lib/browser/react-root-7S6FIC5G.mjs.map +0 -7
  500. package/dist/lib/browser/react-surface-6C3YJNDK.mjs +0 -353
  501. package/dist/lib/browser/react-surface-6C3YJNDK.mjs.map +0 -7
  502. package/dist/lib/browser/schema-defs-K3B3OAH4.mjs +0 -26
  503. package/dist/lib/browser/schema-defs-K3B3OAH4.mjs.map +0 -7
  504. package/dist/lib/browser/schema-tools-BNP4JTD7.mjs +0 -124
  505. package/dist/lib/browser/schema-tools-BNP4JTD7.mjs.map +0 -7
  506. package/dist/lib/browser/settings-XNWYRWNM.mjs +0 -24
  507. package/dist/lib/browser/settings-XNWYRWNM.mjs.map +0 -7
  508. package/dist/lib/browser/spaces-ready-K7NSNBHM.mjs +0 -199
  509. package/dist/lib/browser/spaces-ready-K7NSNBHM.mjs.map +0 -7
  510. package/dist/lib/browser/state-522XTUR4.mjs +0 -47
  511. package/dist/lib/browser/state-522XTUR4.mjs.map +0 -7
  512. package/dist/lib/node-esm/app-graph-builder-TO72W6MI.mjs +0 -364
  513. package/dist/lib/node-esm/app-graph-builder-TO72W6MI.mjs.map +0 -7
  514. package/dist/lib/node-esm/app-graph-serializer-LA3IZDXJ.mjs +0 -81
  515. package/dist/lib/node-esm/app-graph-serializer-LA3IZDXJ.mjs.map +0 -7
  516. package/dist/lib/node-esm/chunk-2THX6G4C.mjs +0 -285
  517. package/dist/lib/node-esm/chunk-2THX6G4C.mjs.map +0 -7
  518. package/dist/lib/node-esm/chunk-72QMMRKC.mjs +0 -19
  519. package/dist/lib/node-esm/chunk-72QMMRKC.mjs.map +0 -7
  520. package/dist/lib/node-esm/chunk-AT7LGFER.mjs +0 -20
  521. package/dist/lib/node-esm/chunk-AT7LGFER.mjs.map +0 -7
  522. package/dist/lib/node-esm/chunk-HJJHLWKY.mjs +0 -547
  523. package/dist/lib/node-esm/chunk-HJJHLWKY.mjs.map +0 -7
  524. package/dist/lib/node-esm/chunk-HWNG4MEU.mjs +0 -15
  525. package/dist/lib/node-esm/chunk-HWNG4MEU.mjs.map +0 -7
  526. package/dist/lib/node-esm/chunk-OUBADVJE.mjs +0 -1916
  527. package/dist/lib/node-esm/chunk-OUBADVJE.mjs.map +0 -7
  528. package/dist/lib/node-esm/chunk-SSLBYZEY.mjs +0 -96
  529. package/dist/lib/node-esm/chunk-SSLBYZEY.mjs.map +0 -7
  530. package/dist/lib/node-esm/chunk-SXD6T2N4.mjs.map +0 -7
  531. package/dist/lib/node-esm/identity-created-IJQO6GCR.mjs +0 -25
  532. package/dist/lib/node-esm/identity-created-IJQO6GCR.mjs.map +0 -7
  533. package/dist/lib/node-esm/intent-resolver-HSR27ME4.mjs +0 -611
  534. package/dist/lib/node-esm/intent-resolver-HSR27ME4.mjs.map +0 -7
  535. package/dist/lib/node-esm/react-root-HUK3ANLV.mjs +0 -30
  536. package/dist/lib/node-esm/react-root-HUK3ANLV.mjs.map +0 -7
  537. package/dist/lib/node-esm/react-surface-AGAWX7DD.mjs +0 -354
  538. package/dist/lib/node-esm/react-surface-AGAWX7DD.mjs.map +0 -7
  539. package/dist/lib/node-esm/schema-defs-4MCDG4DV.mjs +0 -27
  540. package/dist/lib/node-esm/schema-defs-4MCDG4DV.mjs.map +0 -7
  541. package/dist/lib/node-esm/schema-tools-KWW5PTML.mjs +0 -126
  542. package/dist/lib/node-esm/schema-tools-KWW5PTML.mjs.map +0 -7
  543. package/dist/lib/node-esm/settings-YGKHGFPH.mjs +0 -25
  544. package/dist/lib/node-esm/settings-YGKHGFPH.mjs.map +0 -7
  545. package/dist/lib/node-esm/spaces-ready-UM2P3DCR.mjs +0 -200
  546. package/dist/lib/node-esm/spaces-ready-UM2P3DCR.mjs.map +0 -7
  547. package/dist/lib/node-esm/state-C4IOXPZP.mjs +0 -48
  548. package/dist/lib/node-esm/state-C4IOXPZP.mjs.map +0 -7
  549. package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -4
  550. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
  551. package/dist/types/src/capabilities/app-graph-serializer.d.ts +0 -4
  552. package/dist/types/src/capabilities/app-graph-serializer.d.ts.map +0 -1
  553. package/dist/types/src/capabilities/capabilities.d.ts +0 -22
  554. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  555. package/dist/types/src/capabilities/identity-created.d.ts +0 -4
  556. package/dist/types/src/capabilities/identity-created.d.ts.map +0 -1
  557. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -9
  558. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  559. package/dist/types/src/capabilities/react-root.d.ts +0 -7
  560. package/dist/types/src/capabilities/react-root.d.ts.map +0 -1
  561. package/dist/types/src/capabilities/react-surface.d.ts +0 -7
  562. package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
  563. package/dist/types/src/capabilities/schema-defs.d.ts +0 -4
  564. package/dist/types/src/capabilities/schema-defs.d.ts.map +0 -1
  565. package/dist/types/src/capabilities/schema-tool.test.d.ts +0 -2
  566. package/dist/types/src/capabilities/schema-tool.test.d.ts.map +0 -1
  567. package/dist/types/src/capabilities/schema-tools.d.ts +0 -13
  568. package/dist/types/src/capabilities/schema-tools.d.ts.map +0 -1
  569. package/dist/types/src/capabilities/settings.d.ts +0 -4
  570. package/dist/types/src/capabilities/settings.d.ts.map +0 -1
  571. package/dist/types/src/capabilities/spaces-ready.d.ts +0 -4
  572. package/dist/types/src/capabilities/spaces-ready.d.ts.map +0 -1
  573. package/dist/types/src/capabilities/state.d.ts +0 -5
  574. package/dist/types/src/capabilities/state.d.ts.map +0 -1
  575. package/dist/types/src/components/CollectionMain.d.ts +0 -6
  576. package/dist/types/src/components/CollectionMain.d.ts.map +0 -1
  577. package/dist/types/src/components/JoinDialog.d.ts.map +0 -1
  578. package/dist/types/src/components/MembersContainer.d.ts.map +0 -1
  579. package/dist/types/src/components/MembersContainer.stories.d.ts +0 -8
  580. package/dist/types/src/components/MembersContainer.stories.d.ts.map +0 -1
  581. package/dist/types/src/components/ObjectSettings/AdvancedObjectSettings.d.ts +0 -7
  582. package/dist/types/src/components/ObjectSettings/AdvancedObjectSettings.d.ts.map +0 -1
  583. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts.map +0 -1
  584. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts +0 -8
  585. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts.map +0 -1
  586. package/dist/types/src/components/ObjectSettings/ObjectSettingsContainer.d.ts +0 -8
  587. package/dist/types/src/components/ObjectSettings/ObjectSettingsContainer.d.ts.map +0 -1
  588. package/dist/types/src/components/ObjectSettings/index.d.ts +0 -2
  589. package/dist/types/src/components/ObjectSettings/index.d.ts.map +0 -1
  590. package/dist/types/src/components/PersistenceStatus.d.ts +0 -6
  591. package/dist/types/src/components/PersistenceStatus.d.ts.map +0 -1
  592. package/dist/types/src/components/PopoverRenameObject.d.ts +0 -7
  593. package/dist/types/src/components/PopoverRenameObject.d.ts.map +0 -1
  594. package/dist/types/src/components/PopoverRenameSpace.d.ts +0 -7
  595. package/dist/types/src/components/PopoverRenameSpace.d.ts.map +0 -1
  596. package/dist/types/src/components/SpacePresence.d.ts.map +0 -1
  597. package/dist/types/src/components/SpacePresence.stories.d.ts +0 -9
  598. package/dist/types/src/components/SpacePresence.stories.d.ts.map +0 -1
  599. package/dist/types/src/events.d.ts +0 -7
  600. package/dist/types/src/events.d.ts.map +0 -1
  601. package/src/capabilities/app-graph-builder.ts +0 -539
  602. package/src/capabilities/app-graph-serializer.ts +0 -76
  603. package/src/capabilities/capabilities.ts +0 -24
  604. package/src/capabilities/identity-created.ts +0 -25
  605. package/src/capabilities/intent-resolver.ts +0 -585
  606. package/src/capabilities/react-root.tsx +0 -20
  607. package/src/capabilities/react-surface.tsx +0 -349
  608. package/src/capabilities/schema-defs.ts +0 -30
  609. package/src/capabilities/schema-tool.test.ts +0 -44
  610. package/src/capabilities/schema-tools.ts +0 -125
  611. package/src/capabilities/settings.ts +0 -21
  612. package/src/capabilities/spaces-ready.ts +0 -231
  613. package/src/capabilities/state.ts +0 -45
  614. package/src/components/CollectionMain.tsx +0 -30
  615. package/src/components/MembersContainer.stories.tsx +0 -30
  616. package/src/components/ObjectSettings/AdvancedObjectSettings.tsx +0 -80
  617. package/src/components/ObjectSettings/BaseObjectSettings.tsx +0 -47
  618. package/src/components/ObjectSettings/ObjectSettingsContainer.tsx +0 -36
  619. package/src/components/ObjectSettings/index.ts +0 -5
  620. package/src/components/PersistenceStatus.tsx +0 -84
  621. package/src/components/PopoverRenameObject.tsx +0 -62
  622. package/src/events.ts +0 -14
package/src/util.tsx CHANGED
@@ -2,83 +2,57 @@
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 { type Instruction } from '@atlaskit/pragmatic-drag-and-drop-hitbox/tree-item';
6
+ import * as Effect from 'effect/Effect';
7
7
 
8
- import { chain, createIntent, LayoutAction, type PromiseIntentDispatcher } from '@dxos/app-framework';
9
- import { Obj, Ref, Type } from '@dxos/echo';
10
- import { EXPANDO_TYPENAME } from '@dxos/echo-schema';
8
+ import { type CapabilityManager, Common } from '@dxos/app-framework';
9
+ import { type Space, SpaceState, isSpace } from '@dxos/client/echo';
10
+ import { type Database, Filter, Obj, Query, Ref, Type } from '@dxos/echo';
11
11
  import { invariant } from '@dxos/invariant';
12
12
  import { Migrations } from '@dxos/migrations';
13
- import {
14
- ACTION_GROUP_TYPE,
15
- ACTION_TYPE,
16
- type ReadableGraph,
17
- type ActionData,
18
- type InvokeParams,
19
- type Node,
20
- type NodeArg,
21
- isGraphNode,
22
- } from '@dxos/plugin-graph';
23
- import { fullyQualifiedId, getSpace, type QueryResult, SpaceState, type Space, isSpace } from '@dxos/react-client/echo';
24
- import { ATTENDABLE_PATH_SEPARATOR } from '@dxos/react-ui-attention';
13
+ import { Operation } from '@dxos/operation';
14
+ import { Graph, Node } from '@dxos/plugin-graph';
15
+ import { ATTENDABLE_PATH_SEPARATOR } from '@dxos/react-ui-attention/types';
25
16
  import { type TreeData } from '@dxos/react-ui-list';
26
- import { DataType } from '@dxos/schema';
17
+ import { Collection, Expando } from '@dxos/schema';
18
+ import { createFilename } from '@dxos/util';
27
19
 
28
- import { SPACE_PLUGIN } from './meta';
29
- import { SpaceAction, SPACE_TYPE, type ObjectForm } from './types';
20
+ import { meta } from './meta';
21
+ import { SPACE_TYPE, SpaceOperation } from './types';
30
22
 
31
- export const SPACES = `${SPACE_PLUGIN}-spaces`;
32
- export const COMPOSER_SPACE_LOCK = 'dxos.org/plugin/space/lock';
23
+ export const SPACES = `${meta.id}-spaces`;
24
+ export const COMPOSER_SPACE_LOCK = `${meta.id}/lock`;
33
25
  // TODO(wittjosiah): Remove.
34
26
  export const SHARED = 'shared-spaces';
35
27
 
36
- /**
37
- * Convert a query result to an Rx value of the objects.
38
- */
39
- export const rxFromQuery = <T extends Obj.Any>(query: QueryResult<T>): Rx.Rx<T[]> => {
40
- return Rx.make((get) => {
41
- const unsubscribe = query.subscribe((result) => {
42
- get.setSelf(result.objects);
43
- });
44
-
45
- get.addFinalizer(() => unsubscribe());
46
- return query.objects;
47
- });
48
- };
49
-
50
28
  // TODO(wittjosiah): Factor out? Expose via capability?
51
29
  export const getSpaceDisplayName = (
52
30
  space: Space,
53
31
  { personal, namesCache = {} }: { personal?: boolean; namesCache?: Record<string, string> } = {},
54
32
  ): string | [string, { ns: string }] => {
55
33
  return space.state.get() === SpaceState.SPACE_READY && (space.properties.name?.length ?? 0) > 0
56
- ? space.properties.name
34
+ ? space.properties.name!
57
35
  : namesCache[space.id]
58
36
  ? namesCache[space.id]
59
37
  : personal
60
- ? ['personal space label', { ns: SPACE_PLUGIN }]
61
- : ['unnamed space label', { ns: SPACE_PLUGIN }];
38
+ ? ['personal space label', { ns: meta.id }]
39
+ : ['unnamed space label', { ns: meta.id }];
62
40
  };
63
41
 
64
42
  const getCollectionGraphNodePartials = ({
65
43
  collection,
66
- space,
44
+ db,
67
45
  resolve,
68
46
  }: {
69
- collection: DataType.Collection;
70
- space: Space;
47
+ collection: Collection.Collection;
48
+ db: Database.Database;
71
49
  resolve: (typename: string) => Record<string, any>;
72
50
  }) => {
73
51
  return {
74
52
  acceptPersistenceClass: new Set(['echo']),
75
- acceptPersistenceKey: new Set([space.id]),
53
+ acceptPersistenceKey: new Set([db.spaceId]),
76
54
  role: 'branch',
77
- onRearrangeChildren: (nextOrder: unknown[]) => {
78
- // Change on disk.
79
- collection.objects = nextOrder.filter(Obj.isObject).map(Ref.make);
80
- },
81
- onTransferStart: (child: Node<Obj.Any>, index?: number) => {
55
+ onTransferStart: (child: Node.Node<Obj.Unknown>, index?: number) => {
82
56
  // TODO(wittjosiah): Support transfer between spaces.
83
57
  // const childSpace = getSpace(child.data);
84
58
  // if (space && childSpace && !childSpace.key.equals(space.key)) {
@@ -97,22 +71,26 @@ const getCollectionGraphNodePartials = ({
97
71
 
98
72
  // Add child to destination collection.
99
73
  // TODO(dmaretskyi): Compare by id.
100
- if (!collection.objects.find((object) => object.target === child.data)) {
101
- if (typeof index !== 'undefined') {
102
- collection.objects.splice(index, 0, Ref.make(child.data));
103
- } else {
104
- collection.objects.push(Ref.make(child.data));
74
+ Obj.change(collection, (c) => {
75
+ if (!c.objects.find((object) => object.target === child.data)) {
76
+ if (typeof index !== 'undefined') {
77
+ c.objects.splice(index, 0, Ref.make(child.data));
78
+ } else {
79
+ c.objects.push(Ref.make(child.data));
80
+ }
105
81
  }
106
- }
82
+ });
107
83
 
108
84
  // }
109
85
  },
110
- onTransferEnd: (child: Node<Obj.Any>, destination: Node) => {
86
+ onTransferEnd: (child: Node.Node<Obj.Unknown>, destination: Node.Node) => {
111
87
  // Remove child from origin collection.
112
- const index = collection.objects.findIndex((object) => object.target === child.data);
113
- if (index > -1) {
114
- collection.objects.splice(index, 1);
115
- }
88
+ Obj.change(collection, (c) => {
89
+ const index = c.objects.findIndex((object) => object.target === child.data);
90
+ if (index > -1) {
91
+ c.objects.splice(index, 1);
92
+ }
93
+ });
116
94
 
117
95
  // TODO(wittjosiah): Support transfer between spaces.
118
96
  // const childSpace = getSpace(child.data);
@@ -123,46 +101,45 @@ const getCollectionGraphNodePartials = ({
123
101
  // childSpace.db.remove(child.data);
124
102
  // }
125
103
  },
126
- onCopy: async (child: Node<Obj.Any>, index?: number) => {
104
+ onCopy: async (child: Node.Node<Obj.Unknown>, index?: number) => {
127
105
  // Create clone of child and add to destination space.
128
- const newObject = await cloneObject(child.data, resolve, space);
129
- space.db.add(newObject);
130
- if (typeof index !== 'undefined') {
131
- collection.objects.splice(index, 0, Ref.make(newObject));
132
- } else {
133
- collection.objects.push(Ref.make(newObject));
134
- }
106
+ const newObject = await cloneObject(child.data, resolve, db);
107
+ db.add(newObject);
108
+ Obj.change(collection, (c) => {
109
+ if (typeof index !== 'undefined') {
110
+ c.objects.splice(index, 0, Ref.make(newObject));
111
+ } else {
112
+ c.objects.push(Ref.make(newObject));
113
+ }
114
+ });
135
115
  },
136
116
  };
137
117
  };
138
118
 
139
- const getQueryCollectionNodePartials = ({
119
+ const getSystemCollectionNodePartials = ({
140
120
  collection,
141
- space,
121
+ db,
142
122
  resolve,
143
123
  }: {
144
- collection: DataType.QueryCollection;
145
- space: Space;
124
+ collection: Collection.Managed;
125
+ db: Database.Database;
146
126
  resolve: (typename: string) => Record<string, any>;
147
127
  }) => {
128
+ const metadata = resolve(collection.key);
148
129
  return {
149
- icon: collection.query.typename && resolve(collection.query.typename)?.icon,
130
+ label: ['typename label', { ns: collection.key, count: 2 }],
131
+ icon: metadata.icon,
132
+ iconHue: metadata.iconHue,
150
133
  acceptPersistenceClass: new Set(['echo']),
151
- acceptPersistenceKey: new Set([space.id]),
134
+ acceptPersistenceKey: new Set([db.spaceId]),
152
135
  role: 'branch',
153
- canDrop: (source: TreeData) => {
154
- return (
155
- isGraphNode(source.item) &&
156
- Obj.isObject(source.item.data) &&
157
- Obj.getTypename(source.item.data) === collection.query.typename
158
- );
159
- },
160
- onTransferStart: (child: Node<Obj.Any>, index?: number) => {
161
- // No-op. Objects are moved into query collections by being removed from their original collection.
162
- },
163
- onTransferEnd: (child: Node<Obj.Any>, destination: Node) => {
164
- // No-op. Objects are moved out of query collections by being added to another collection.
165
- },
136
+ };
137
+ };
138
+
139
+ const getSchemaGraphNodePartials = () => {
140
+ return {
141
+ role: 'branch',
142
+ canDrop: () => false,
166
143
  };
167
144
  };
168
145
 
@@ -181,21 +158,46 @@ export const constructSpaceNode = ({
181
158
  personal,
182
159
  namesCache,
183
160
  resolve,
161
+ graph,
162
+ spacesOrder,
184
163
  }: {
185
164
  space: Space;
186
165
  navigable?: boolean;
187
166
  personal?: boolean;
188
167
  namesCache?: Record<string, string>;
189
168
  resolve: (typename: string) => Record<string, any>;
169
+ /** Graph for sorting edges on rearrange. */
170
+ graph?: Graph.ExpandableGraph;
171
+ // TODO(wittjosiah): Should be Type.Expando but it doesn't work with the AtomQuery result type.
172
+ /** Spaces order object for persisting workspace order. */
173
+ spacesOrder?: Obj.Any;
190
174
  }) => {
191
175
  const hasPendingMigration = checkPendingMigration(space);
192
176
  const collection =
193
- space.state.get() === SpaceState.SPACE_READY && space.properties[DataType.Collection.typename]?.target;
177
+ space.state.get() === SpaceState.SPACE_READY && space.properties[Collection.Collection.typename]?.target;
194
178
  const partials =
195
- space.state.get() === SpaceState.SPACE_READY && Obj.instanceOf(DataType.Collection, collection)
196
- ? getCollectionGraphNodePartials({ collection, space, resolve })
179
+ space.state.get() === SpaceState.SPACE_READY && Obj.instanceOf(Collection.Collection, collection)
180
+ ? getCollectionGraphNodePartials({ collection, db: space.db, resolve })
197
181
  : {};
198
182
 
183
+ const onRearrange =
184
+ graph && spacesOrder
185
+ ? (nextOrder: Space[]) => {
186
+ // NOTE: This is needed to ensure order is updated by next animation frame.
187
+ Graph.sortEdges(
188
+ graph,
189
+ Node.RootId,
190
+ 'outbound',
191
+ nextOrder.map(({ id }) => id),
192
+ );
193
+
194
+ // Persist order to database.
195
+ Obj.change(spacesOrder, (mutableOrder: any) => {
196
+ mutableOrder.order = nextOrder.map(({ id }) => id);
197
+ });
198
+ }
199
+ : undefined;
200
+
199
201
  return {
200
202
  id: space.id,
201
203
  type: SPACE_TYPE,
@@ -210,8 +212,11 @@ export const constructSpaceNode = ({
210
212
  space.state.get() === SpaceState.SPACE_READY && space.properties.icon
211
213
  ? `ph--${space.properties.icon}--regular`
212
214
  : undefined,
215
+ iconHue: space.state.get() === SpaceState.SPACE_READY && space.properties.iconHue,
213
216
  disabled: !navigable || space.state.get() !== SpaceState.SPACE_READY || hasPendingMigration,
217
+ disposition: 'workspace',
214
218
  testId: 'spacePlugin.space',
219
+ onRearrange,
215
220
  canDrop: (source: TreeData) => {
216
221
  // TODO(wittjosiah): Find a way to only allow space as source for rearranging.
217
222
  return Obj.isObject(source.item.data) || isSpace(source.item.data);
@@ -220,41 +225,44 @@ export const constructSpaceNode = ({
220
225
  nodes: [
221
226
  {
222
227
  id: `settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`,
223
- type: `${SPACE_PLUGIN}/settings`,
228
+ type: `${meta.id}/settings`,
224
229
  data: null,
225
230
  properties: {
226
- label: ['settings panel label', { ns: SPACE_PLUGIN }],
231
+ label: ['settings panel label', { ns: meta.id }],
227
232
  icon: 'ph--faders--regular',
228
233
  disposition: 'alternate-tree',
229
234
  },
230
235
  nodes: [
231
236
  {
232
237
  id: `properties-settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`,
233
- type: `${SPACE_PLUGIN}/properties`,
234
- data: `${SPACE_PLUGIN}/properties`,
238
+ type: `${meta.id}/properties`,
239
+ data: `${meta.id}/properties`,
235
240
  properties: {
236
- label: ['space settings properties label', { ns: SPACE_PLUGIN }],
241
+ label: ['space settings properties label', { ns: meta.id }],
237
242
  icon: 'ph--sliders--regular',
238
243
  position: 'hoist',
244
+ testId: 'spacePlugin.general',
239
245
  },
240
246
  },
241
247
  {
242
248
  id: `members-settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`,
243
- type: `${SPACE_PLUGIN}/members`,
244
- data: `${SPACE_PLUGIN}/members`,
249
+ type: `${meta.id}/members`,
250
+ data: `${meta.id}/members`,
245
251
  properties: {
246
- label: ['members panel label', { ns: SPACE_PLUGIN }],
252
+ label: ['members panel label', { ns: meta.id }],
247
253
  icon: 'ph--users--regular',
248
254
  position: 'hoist',
255
+ testId: 'spacePlugin.members',
249
256
  },
250
257
  },
251
258
  {
252
259
  id: `schema-settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`,
253
- type: `${SPACE_PLUGIN}/schema`,
254
- data: `${SPACE_PLUGIN}/schema`,
260
+ type: `${meta.id}/schema`,
261
+ data: `${meta.id}/schema`,
255
262
  properties: {
256
- label: ['space settings schema label', { ns: SPACE_PLUGIN }],
263
+ label: ['space settings schema label', { ns: meta.id }],
257
264
  icon: 'ph--shapes--regular',
265
+ testId: 'spacePlugin.schema',
258
266
  },
259
267
  },
260
268
  ],
@@ -265,29 +273,25 @@ export const constructSpaceNode = ({
265
273
 
266
274
  export const constructSpaceActions = ({
267
275
  space,
268
- dispatch,
269
276
  personal,
270
277
  migrating,
271
278
  }: {
272
279
  space: Space;
273
- dispatch: PromiseIntentDispatcher;
274
280
  personal?: boolean;
275
281
  migrating?: boolean;
276
282
  }) => {
277
283
  const state = space.state.get();
278
284
  const hasPendingMigration = checkPendingMigration(space);
279
285
  const getId = (id: string) => `${id}/${space.id}`;
280
- const actions: NodeArg<ActionData>[] = [];
286
+ const actions: Node.NodeArg<Node.ActionData<Operation.Service>>[] = [];
281
287
 
282
288
  if (hasPendingMigration) {
283
289
  actions.push({
284
- id: getId(SpaceAction.Migrate._tag),
285
- type: ACTION_GROUP_TYPE,
286
- data: async () => {
287
- await dispatch(createIntent(SpaceAction.Migrate, { space }));
288
- },
290
+ id: getId(SpaceOperation.Migrate.meta.key),
291
+ type: Node.ActionGroupType,
292
+ data: () => Operation.invoke(SpaceOperation.Migrate, { space }),
289
293
  properties: {
290
- label: ['migrate space label', { ns: SPACE_PLUGIN }],
294
+ label: ['migrate space label', { ns: meta.id }],
291
295
  icon: 'ph--database--regular',
292
296
  disposition: 'list-item-primary',
293
297
  disabled: migrating || Migrations.running(space),
@@ -298,26 +302,22 @@ export const constructSpaceActions = ({
298
302
  if (state === SpaceState.SPACE_READY && !hasPendingMigration) {
299
303
  actions.push(
300
304
  {
301
- id: getId(SpaceAction.OpenCreateObject._tag),
302
- type: ACTION_TYPE,
303
- data: async () => {
304
- await dispatch(createIntent(SpaceAction.OpenCreateObject, { target: space }));
305
- },
305
+ id: getId(SpaceOperation.OpenCreateObject.meta.key),
306
+ type: Node.ActionType,
307
+ data: () => Operation.invoke(SpaceOperation.OpenCreateObject, { target: space.db }),
306
308
  properties: {
307
- label: ['create object in space label', { ns: SPACE_PLUGIN }],
309
+ label: ['create object in space label', { ns: meta.id }],
308
310
  icon: 'ph--plus--regular',
309
311
  disposition: 'item',
310
312
  testId: 'spacePlugin.createObject',
311
313
  },
312
314
  },
313
315
  {
314
- id: getId(SpaceAction.Rename._tag),
315
- type: ACTION_TYPE,
316
- data: async (params?: InvokeParams) => {
317
- await dispatch(createIntent(SpaceAction.Rename, { space, caller: params?.caller }));
318
- },
316
+ id: getId(SpaceOperation.Rename.meta.key),
317
+ type: Node.ActionType,
318
+ data: (params?: Node.InvokeProps) => Operation.invoke(SpaceOperation.Rename, { space, caller: params?.caller }),
319
319
  properties: {
320
- label: ['rename space label', { ns: SPACE_PLUGIN }],
320
+ label: ['rename space label', { ns: meta.id }],
321
321
  icon: 'ph--pencil-simple-line--regular',
322
322
  keyBinding: {
323
323
  macos: 'shift+F6',
@@ -331,50 +331,194 @@ export const constructSpaceActions = ({
331
331
  return actions;
332
332
  };
333
333
 
334
- export const createObjectNode = ({
334
+ export const createStaticSchemaNode = ({ schema, space }: { schema: Type.Entity.Any; space: Space }): Node.Node => {
335
+ return {
336
+ id: `${space.id}/${Type.getTypename(schema)}`,
337
+ type: `${meta.id}/static-schema`,
338
+ data: schema,
339
+ properties: {
340
+ label: ['typename label', { ns: Type.getTypename(schema), count: 2, default: Type.getTypename(schema) }],
341
+ icon: 'ph--database--regular',
342
+ iconHue: 'green',
343
+ role: 'branch',
344
+ selectable: false,
345
+ canDrop: () => false,
346
+ space,
347
+ },
348
+ };
349
+ };
350
+
351
+ export const createStaticSchemaActions = ({
352
+ schema,
335
353
  space,
354
+ deletable,
355
+ }: {
356
+ schema: Type.Obj.Any;
357
+ space: Space;
358
+ deletable: boolean;
359
+ }) => {
360
+ const getId = (id: string) => `${space.id}/${Type.getTypename(schema)}/${id}`;
361
+
362
+ const actions: Node.NodeArg<Node.ActionData<Operation.Service>>[] = [
363
+ {
364
+ id: getId(SpaceOperation.AddObject.meta.key),
365
+ type: Node.ActionType,
366
+ data: () =>
367
+ Operation.invoke(SpaceOperation.OpenCreateObject, {
368
+ target: space.db,
369
+ views: true,
370
+ initialFormValues: { typename: Type.getTypename(schema) },
371
+ }),
372
+ properties: {
373
+ label: ['add view to schema label', { ns: meta.id }],
374
+ icon: 'ph--plus--regular',
375
+ disposition: 'list-item-primary',
376
+ testId: 'spacePlugin.addViewToSchema',
377
+ },
378
+ },
379
+ {
380
+ id: getId(SpaceOperation.RenameObject.meta.key),
381
+ type: Node.ActionType,
382
+ data: () => Effect.fail(new Error('Not implemented')),
383
+ properties: {
384
+ label: ['rename object label', { ns: Type.getTypename(Type.PersistentType) }],
385
+ icon: 'ph--pencil-simple-line--regular',
386
+ disabled: true,
387
+ disposition: 'list-item',
388
+ testId: 'spacePlugin.renameObject',
389
+ },
390
+ },
391
+ {
392
+ id: getId(SpaceOperation.RemoveObjects.meta.key),
393
+ type: Node.ActionType,
394
+ data: () =>
395
+ Effect.sync(() => {
396
+ const index = space.properties.staticRecords.findIndex(
397
+ (typename: string) => typename === Type.getTypename(schema),
398
+ );
399
+ if (index > -1) {
400
+ Obj.change(space.properties, (p) => {
401
+ p.staticRecords.splice(index, 1);
402
+ });
403
+ }
404
+ }),
405
+ properties: {
406
+ label: ['delete object label', { ns: Type.getTypename(Type.PersistentType) }],
407
+ icon: 'ph--trash--regular',
408
+ disposition: 'list-item',
409
+ disabled: !deletable,
410
+ testId: 'spacePlugin.deleteObject',
411
+ },
412
+ },
413
+ {
414
+ id: getId(SpaceOperation.Snapshot.meta.key),
415
+ type: Node.ActionType,
416
+ data: Effect.fnUntraced(function* () {
417
+ const result = yield* Operation.invoke(SpaceOperation.Snapshot, {
418
+ db: space.db,
419
+ query: Query.select(Filter.type(schema)).ast,
420
+ });
421
+ if (result.snapshot) {
422
+ yield* Effect.tryPromise(() =>
423
+ downloadBlob(result.snapshot, createFilename({ parts: [space.id, Type.getTypename(schema)], ext: 'json' })),
424
+ );
425
+ }
426
+ }),
427
+ properties: {
428
+ label: ['snapshot by schema label', { ns: meta.id }],
429
+ icon: 'ph--camera--regular',
430
+ disposition: 'list-item',
431
+ },
432
+ },
433
+ ];
434
+
435
+ return actions;
436
+ };
437
+
438
+ export const createObjectNode = ({
439
+ db,
336
440
  object,
441
+ disposition,
337
442
  droppable = true,
338
443
  navigable = false,
444
+ managedCollectionChild = false,
339
445
  resolve,
446
+ parentCollection,
340
447
  }: {
341
- space: Space;
342
- object: Obj.Any;
448
+ db: Database.Database;
449
+ object: Obj.Unknown;
450
+ disposition?: string;
343
451
  droppable?: boolean;
344
452
  navigable?: boolean;
453
+ managedCollectionChild?: boolean;
345
454
  resolve: (typename: string) => Record<string, any>;
455
+ /** Parent collection for rearranging objects. */
456
+ parentCollection?: Collection.Collection;
346
457
  }) => {
347
458
  const type = Obj.getTypename(object);
348
459
  if (!type) {
349
- return undefined;
460
+ return null;
350
461
  }
351
462
 
352
463
  const metadata = resolve(type);
353
- if (Object.keys(metadata).length === 0) {
354
- return undefined;
355
- }
464
+ const partials = Obj.instanceOf(Collection.Collection, object)
465
+ ? getCollectionGraphNodePartials({ collection: object, db, resolve })
466
+ : Obj.instanceOf(Collection.Managed, object)
467
+ ? getSystemCollectionNodePartials({ collection: object, db, resolve })
468
+ : Obj.instanceOf(Type.PersistentType, object)
469
+ ? getSchemaGraphNodePartials()
470
+ : metadata.graphProps;
356
471
 
357
- const partials = Obj.instanceOf(DataType.Collection, object)
358
- ? getCollectionGraphNodePartials({ collection: object, space, resolve })
359
- : Obj.instanceOf(DataType.QueryCollection, object)
360
- ? getQueryCollectionNodePartials({ collection: object, space, resolve })
361
- : metadata.graphProps;
472
+ // TODO(wittjosiah): Obj.getLabel isn't triggering reactivity in some cases.
473
+ // e.g., create new collection with no name and rename it.
474
+ const label = (object as any).name ||
475
+ Obj.getLabel(object) ||
476
+ // TODO(wittjosiah): Remove metadata labels.
477
+ metadata.label?.(object) || ['object name placeholder', { ns: type, default: 'New item' }];
478
+
479
+ const selectable =
480
+ (!Obj.instanceOf(Type.PersistentType, object) &&
481
+ !Obj.instanceOf(Collection.Managed, object) &&
482
+ !Obj.instanceOf(Collection.Collection, object)) ||
483
+ (navigable && Obj.instanceOf(Collection.Collection, object));
362
484
 
363
485
  return {
364
- id: fullyQualifiedId(object),
486
+ id: Obj.getDXN(object).toString(),
365
487
  type,
366
488
  cacheable: ['label', 'icon', 'role'],
367
489
  data: object,
368
490
  properties: {
369
- // TODO(burdon): Use annotation to get the name field.
370
- label: metadata.label?.(object) ||
371
- (object as any).name || ['object name placeholder', { ns: type, default: 'New object' }],
491
+ label,
372
492
  icon: metadata.icon ?? 'ph--placeholder--regular',
493
+ iconHue: metadata.iconHue,
494
+ disposition,
373
495
  testId: 'spacePlugin.object',
374
496
  persistenceClass: 'echo',
375
- persistenceKey: space?.id,
497
+ persistenceKey: db.spaceId,
498
+ selectable,
499
+ managedCollectionChild,
500
+ onRearrange: parentCollection
501
+ ? (nextOrder: unknown[]) => {
502
+ Obj.change(parentCollection, (c) => {
503
+ c.objects = nextOrder.filter(Obj.isObject).map(Ref.make);
504
+ });
505
+ }
506
+ : undefined,
507
+ blockInstruction: (source: TreeData, instruction: Instruction) => {
508
+ if (source.item.properties.managedCollectionChild) {
509
+ // TODO(wittjosiah): Support reordering system collections.
510
+ // return !(managedCollectionChild && source.item.type === type && instruction.type.startsWith('reorder'));
511
+ return true;
512
+ }
513
+
514
+ if (Obj.instanceOf(Collection.Managed, object)) {
515
+ return !instruction.type.startsWith('reorder');
516
+ }
517
+
518
+ return managedCollectionChild;
519
+ },
376
520
  canDrop: (source: TreeData) => {
377
- return droppable && isGraphNode(source.item) && Obj.isObject(source.item.data);
521
+ return droppable && Node.isGraphNode(source.item) && Obj.isObject(source.item.data);
378
522
  },
379
523
  ...partials,
380
524
  },
@@ -384,36 +528,39 @@ export const createObjectNode = ({
384
528
  export const constructObjectActions = ({
385
529
  object,
386
530
  graph,
387
- dispatch,
388
- objectForms,
531
+ resolve,
532
+ capabilities,
533
+ deletable = true,
389
534
  navigable = false,
390
535
  }: {
391
- object: Obj.Any;
392
- graph: ReadableGraph;
393
- dispatch: PromiseIntentDispatcher;
394
- objectForms: ObjectForm<any>[];
536
+ object: Obj.Unknown;
537
+ graph: Graph.ReadableGraph;
538
+ resolve: (typename: string) => Record<string, any>;
539
+ capabilities: CapabilityManager.CapabilityManager;
540
+ deletable?: boolean;
395
541
  navigable?: boolean;
396
542
  }) => {
397
- const space = getSpace(object);
398
- invariant(space, 'Space not found');
399
- const getId = (id: string) => `${id}/${fullyQualifiedId(object)}`;
543
+ const db = Obj.getDatabase(object);
544
+ invariant(db, 'Database not found');
545
+ const typename = Obj.getTypename(object);
546
+ invariant(typename, 'Object has no typename');
400
547
 
401
- const queryCollection = Obj.instanceOf(DataType.QueryCollection, object) ? object : undefined;
402
- const matchingObjectForm = queryCollection
403
- ? objectForms.find((form) => Type.getTypename(form.objectSchema) === queryCollection.query.typename)
404
- : undefined;
548
+ const getId = (id: string) => `${id}/${Obj.getDXN(object).toString()}`;
405
549
 
406
- const actions: NodeArg<ActionData>[] = [
407
- ...(Obj.instanceOf(DataType.Collection, object)
550
+ const managedCollection = Obj.instanceOf(Collection.Managed, object) ? object : undefined;
551
+ const metadata = managedCollection ? resolve(managedCollection.key) : {};
552
+ const createObject = metadata.createObject;
553
+ const inputSchema = metadata.inputSchema;
554
+
555
+ const actions: Node.NodeArg<Node.ActionData<Operation.Service>>[] = [
556
+ ...(Obj.instanceOf(Collection.Collection, object)
408
557
  ? [
409
558
  {
410
- id: getId(SpaceAction.OpenCreateObject._tag),
411
- type: ACTION_TYPE,
412
- data: async () => {
413
- await dispatch(createIntent(SpaceAction.OpenCreateObject, { target: object }));
414
- },
559
+ id: getId(SpaceOperation.OpenCreateObject.meta.key),
560
+ type: Node.ActionType,
561
+ data: () => Operation.invoke(SpaceOperation.OpenCreateObject, { target: object }),
415
562
  properties: {
416
- label: ['create object in collection label', { ns: SPACE_PLUGIN }],
563
+ label: ['create object in collection label', { ns: meta.id }],
417
564
  icon: 'ph--plus--regular',
418
565
  disposition: 'list-item-primary',
419
566
  testId: 'spacePlugin.createObject',
@@ -421,31 +568,75 @@ export const constructObjectActions = ({
421
568
  },
422
569
  ]
423
570
  : []),
424
- ...(matchingObjectForm
571
+ ...(Obj.instanceOf(Type.PersistentType, object)
425
572
  ? [
426
573
  {
427
- id: getId(SpaceAction.OpenCreateObject._tag),
428
- type: ACTION_TYPE,
429
- data: async () => {
430
- if (matchingObjectForm.formSchema) {
431
- await dispatch(
432
- createIntent(SpaceAction.OpenCreateObject, {
433
- target: space,
434
- typename: queryCollection?.query.typename,
435
- }),
436
- );
437
- } else {
438
- await dispatch(
439
- pipe(
440
- matchingObjectForm.getIntent({}, { space }),
441
- chain(SpaceAction.AddObject, { target: space, hidden: true }),
442
- chain(LayoutAction.Open, { part: 'main' }),
443
- ),
574
+ id: getId(SpaceOperation.AddObject.meta.key),
575
+ type: Node.ActionType,
576
+ data: () =>
577
+ Operation.invoke(SpaceOperation.OpenCreateObject, {
578
+ target: db,
579
+ views: true,
580
+ initialFormValues: { typename: object.typename },
581
+ }),
582
+ properties: {
583
+ label: ['add view to schema label', { ns: meta.id }],
584
+ icon: 'ph--plus--regular',
585
+ disposition: 'list-item-primary',
586
+ testId: 'spacePlugin.addViewToSchema',
587
+ },
588
+ },
589
+ {
590
+ id: getId(SpaceOperation.Snapshot.meta.key),
591
+ type: Node.ActionType,
592
+ data: Effect.fnUntraced(function* () {
593
+ const result = yield* Operation.invoke(SpaceOperation.Snapshot, {
594
+ db,
595
+ query: Query.select(Filter.type(Type.toEffectSchema(object.jsonSchema))).ast,
596
+ });
597
+ if (result.snapshot) {
598
+ yield* Effect.promise(() =>
599
+ downloadBlob(result.snapshot, createFilename({ parts: [db.spaceId, object.typename], ext: 'json' })),
444
600
  );
445
601
  }
602
+ }),
603
+ properties: {
604
+ label: ['snapshot by schema label', { ns: meta.id }],
605
+ icon: 'ph--camera--regular',
606
+ disposition: 'list-item',
446
607
  },
608
+ },
609
+ ]
610
+ : []),
611
+ ...(createObject
612
+ ? [
613
+ {
614
+ id: getId(SpaceOperation.OpenCreateObject.meta.key),
615
+ type: Node.ActionType,
616
+ data: Effect.fnUntraced(function* () {
617
+ if (inputSchema) {
618
+ yield* Operation.invoke(SpaceOperation.OpenCreateObject, {
619
+ target: db,
620
+ typename: managedCollection ? managedCollection.key : undefined,
621
+ });
622
+ } else {
623
+ const createdObject = yield* createObject({}, { db, capabilities }) as Effect.Effect<
624
+ Obj.Unknown,
625
+ Error,
626
+ never
627
+ >;
628
+ const addResult = yield* Operation.invoke(SpaceOperation.AddObject, {
629
+ target: db,
630
+ hidden: true,
631
+ object: createdObject,
632
+ });
633
+ if (addResult.id) {
634
+ yield* Operation.invoke(Common.LayoutOperation.Open, { subject: [addResult.id] });
635
+ }
636
+ }
637
+ }),
447
638
  properties: {
448
- label: ['create object in smart collection label', { ns: SPACE_PLUGIN }],
639
+ label: ['create object in system collection label', { ns: meta.id }],
449
640
  icon: 'ph--plus--regular',
450
641
  disposition: 'list-item-primary',
451
642
  testId: 'spacePlugin.createObject',
@@ -453,58 +644,61 @@ export const constructObjectActions = ({
453
644
  },
454
645
  ]
455
646
  : []),
456
- {
457
- id: getId(SpaceAction.RenameObject._tag),
458
- type: ACTION_TYPE,
459
- data: async (params?: InvokeParams) => {
460
- await dispatch(createIntent(SpaceAction.RenameObject, { object, caller: params?.caller }));
461
- },
462
- properties: {
463
- label: [
464
- Obj.instanceOf(DataType.Collection, object) ? 'rename collection label' : 'rename object label',
465
- { ns: SPACE_PLUGIN },
466
- ],
467
- icon: 'ph--pencil-simple-line--regular',
468
- disposition: 'list-item',
469
- // TODO(wittjosiah): Not working.
470
- // keyBinding: {
471
- // macos: 'shift+F6',
472
- // },
473
- testId: 'spacePlugin.renameObject',
474
- },
475
- },
476
- {
477
- id: getId(SpaceAction.RemoveObjects._tag),
478
- type: ACTION_TYPE,
479
- data: async () => {
480
- const collection = graph
481
- .getConnections(fullyQualifiedId(object), 'inbound')
482
- .find(({ data }) => Obj.instanceOf(DataType.Collection, data))?.data;
483
- await dispatch(createIntent(SpaceAction.RemoveObjects, { objects: [object], target: collection }));
484
- },
485
- properties: {
486
- label: [
487
- Obj.instanceOf(DataType.Collection, object) ? 'delete collection label' : 'delete object label',
488
- { ns: SPACE_PLUGIN },
489
- ],
490
- icon: 'ph--trash--regular',
491
- disposition: 'list-item',
492
- // TODO(wittjosiah): This is a browser shortcut.
493
- // keyBinding: object instanceof CollectionType ? undefined : 'shift+meta+Backspace',
494
- testId: 'spacePlugin.deleteObject',
495
- },
496
- },
497
- ...(navigable || (!Obj.instanceOf(DataType.Collection, object) && !Obj.instanceOf(DataType.QueryCollection, object))
647
+ ...(managedCollection
648
+ ? []
649
+ : [
650
+ {
651
+ id: getId(SpaceOperation.RenameObject.meta.key),
652
+ type: Node.ActionType,
653
+ data: (params?: Node.InvokeProps) =>
654
+ Operation.invoke(SpaceOperation.RenameObject, { object, caller: params?.caller }),
655
+ properties: {
656
+ label: ['rename object label', { ns: typename }],
657
+ icon: 'ph--pencil-simple-line--regular',
658
+ disposition: 'list-item',
659
+ // TODO(wittjosiah): Not working.
660
+ // keyBinding: {
661
+ // macos: 'shift+F6',
662
+ // },
663
+ testId: 'spacePlugin.renameObject',
664
+ },
665
+ },
666
+ {
667
+ id: getId(SpaceOperation.RemoveObjects.meta.key),
668
+ type: Node.ActionType,
669
+ data: Effect.fnUntraced(function* () {
670
+ const collection = Graph.getConnections(graph, Obj.getDXN(object).toString(), 'inbound').find(
671
+ (node: Node.Node): node is Node.Node<Collection.Collection> =>
672
+ Obj.instanceOf(Collection.Collection, node.data),
673
+ )?.data;
674
+ yield* Operation.invoke(SpaceOperation.RemoveObjects, { objects: [object], target: collection });
675
+ }),
676
+ properties: {
677
+ label: ['delete object label', { ns: typename }],
678
+ icon: 'ph--trash--regular',
679
+ disposition: 'list-item',
680
+ disabled: !deletable,
681
+ // TODO(wittjosiah): This is a browser shortcut.
682
+ // keyBinding: object instanceof CollectionType ? undefined : 'shift+meta+Backspace',
683
+ testId: 'spacePlugin.deleteObject',
684
+ },
685
+ },
686
+ ]),
687
+ ...(navigable ||
688
+ (!Obj.instanceOf(Collection.Collection, object) &&
689
+ !Obj.instanceOf(Collection.Managed, object) &&
690
+ !Obj.instanceOf(Type.PersistentType, object))
498
691
  ? [
499
692
  {
500
693
  id: getId('copy-link'),
501
- type: ACTION_TYPE,
502
- data: async () => {
503
- const url = `${window.location.origin}/${space.id}/${fullyQualifiedId(object)}`;
504
- await navigator.clipboard.writeText(url);
505
- },
694
+ type: Node.ActionType,
695
+ data: () =>
696
+ Effect.promise(async () => {
697
+ const url = `${window.location.origin}/${db.spaceId}/${Obj.getDXN(object).toString()}`;
698
+ await navigator.clipboard.writeText(url);
699
+ }),
506
700
  properties: {
507
- label: ['copy link label', { ns: SPACE_PLUGIN }],
701
+ label: ['copy link label', { ns: meta.id }],
508
702
  icon: 'ph--link--regular',
509
703
  disposition: 'list-item',
510
704
  testId: 'spacePlugin.copyLink',
@@ -514,13 +708,11 @@ export const constructObjectActions = ({
514
708
  : []),
515
709
  // TODO(wittjosiah): Factor out and apply to all nodes.
516
710
  {
517
- id: getId(LayoutAction.Expose._tag),
518
- type: ACTION_TYPE,
519
- data: async () => {
520
- await dispatch(createIntent(LayoutAction.Expose, { part: 'navigation', subject: fullyQualifiedId(object) }));
521
- },
711
+ id: getId(Common.LayoutOperation.Expose.meta.key),
712
+ type: Node.ActionType,
713
+ data: () => Operation.invoke(Common.LayoutOperation.Expose, { subject: Obj.getDXN(object).toString() }),
522
714
  properties: {
523
- label: ['expose object label', { ns: SPACE_PLUGIN }],
715
+ label: ['expose object label', { ns: meta.id }],
524
716
  icon: 'ph--eye--regular',
525
717
  disposition: 'heading-list-item',
526
718
  testId: 'spacePlugin.exposeObject',
@@ -531,13 +723,27 @@ export const constructObjectActions = ({
531
723
  return actions;
532
724
  };
533
725
 
726
+ // TODO(wittjosiah): Factor out.
727
+ const downloadBlob = async (blob: Blob, filename: string) => {
728
+ const url = URL.createObjectURL(blob);
729
+ const a = document.createElement('a');
730
+ a.href = url;
731
+ a.download = filename;
732
+
733
+ document.body.appendChild(a);
734
+ a.click();
735
+
736
+ document.body.removeChild(a);
737
+ URL.revokeObjectURL(url);
738
+ };
739
+
534
740
  /**
535
741
  * @deprecated This is a temporary solution.
536
742
  */
537
743
  export const getNestedObjects = async (
538
- object: Obj.Any,
744
+ object: Obj.Unknown,
539
745
  resolve: (typename: string) => Record<string, any>,
540
- ): Promise<Obj.Any[]> => {
746
+ ): Promise<Obj.Unknown[]> => {
541
747
  const type = Obj.getTypename(object);
542
748
  if (!type) {
543
749
  return [];
@@ -549,7 +755,7 @@ export const getNestedObjects = async (
549
755
  return [];
550
756
  }
551
757
 
552
- const objects: Obj.Any[] = await loadReferences(object);
758
+ const objects: Obj.Unknown[] = await loadReferences(object);
553
759
  const nested = await Promise.all(objects.map((object) => getNestedObjects(object, resolve)));
554
760
  return [...objects, ...nested.flat()];
555
761
  };
@@ -559,15 +765,15 @@ export const getNestedObjects = async (
559
765
  */
560
766
  // TODO(burdon): Remove.
561
767
  export const cloneObject = async (
562
- object: Type.Expando,
768
+ object: Obj.Unknown,
563
769
  resolve: (typename: string) => Record<string, any>,
564
- newSpace: Space,
565
- ): Promise<Type.Expando> => {
770
+ newDb: Database.Database,
771
+ ): Promise<Obj.Unknown> => {
566
772
  const schema = Obj.getSchema(object);
567
- const typename = schema ? Type.getTypename(schema) ?? EXPANDO_TYPENAME : EXPANDO_TYPENAME;
773
+ const typename = schema ? (Type.getTypename(schema) ?? Expando.Expando.typename) : Expando.Expando.typename;
568
774
  const metadata = resolve(typename);
569
775
  const serializer = metadata.serializer;
570
776
  invariant(serializer, `No serializer for type: ${typename}`);
571
777
  const content = await serializer.serialize({ object });
572
- return serializer.deserialize({ content, space: newSpace, newId: true });
778
+ return serializer.deserialize({ content, db: newDb, newId: true });
573
779
  };