@dxos/plugin-space 0.10.0 → 0.11.0

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 (646) hide show
  1. package/PLUGIN.mdl +11 -0
  2. package/dist/lib/SpacePlugin.mjs +2 -0
  3. package/dist/lib/SpacePlugin.node.mjs +628 -0
  4. package/dist/lib/SpacePlugin.node.mjs.map +1 -0
  5. package/dist/lib/SpacePlugin.workerd.mjs +26 -0
  6. package/dist/lib/SpacePlugin.workerd.mjs.map +1 -0
  7. package/dist/lib/capabilities/node.mjs +10 -0
  8. package/dist/lib/capabilities/node.mjs.map +1 -0
  9. package/dist/lib/capabilities.mjs +24 -0
  10. package/dist/lib/capabilities.mjs.map +1 -0
  11. package/dist/lib/chunk-CollectionArticle.mjs +90 -0
  12. package/dist/lib/chunk-CollectionArticle.mjs.map +1 -0
  13. package/dist/lib/chunk-CollectionSection.mjs +21 -0
  14. package/dist/lib/chunk-CollectionSection.mjs.map +1 -0
  15. package/dist/lib/chunk-CreateObjectDialog.mjs +178 -0
  16. package/dist/lib/chunk-CreateObjectDialog.mjs.map +1 -0
  17. package/dist/lib/chunk-CreateSpaceDialog.mjs +68 -0
  18. package/dist/lib/chunk-CreateSpaceDialog.mjs.map +1 -0
  19. package/dist/lib/chunk-DefaultProperties.mjs +59 -0
  20. package/dist/lib/chunk-DefaultProperties.mjs.map +1 -0
  21. package/dist/lib/chunk-ImportSpaceDialog.mjs +58 -0
  22. package/dist/lib/chunk-ImportSpaceDialog.mjs.map +1 -0
  23. package/dist/lib/chunk-InlineSyncStatus.mjs +37 -0
  24. package/dist/lib/chunk-InlineSyncStatus.mjs.map +1 -0
  25. package/dist/lib/chunk-JoinDialog.mjs +65 -0
  26. package/dist/lib/chunk-JoinDialog.mjs.map +1 -0
  27. package/dist/lib/chunk-MembersContainer.mjs +263 -0
  28. package/dist/lib/chunk-MembersContainer.mjs.map +1 -0
  29. package/dist/lib/chunk-MergePreview.mjs +91 -0
  30. package/dist/lib/chunk-MergePreview.mjs.map +1 -0
  31. package/dist/lib/chunk-ObjectCardStack.mjs +68 -0
  32. package/dist/lib/chunk-ObjectCardStack.mjs.map +1 -0
  33. package/dist/lib/chunk-RecordArticle.mjs +106 -0
  34. package/dist/lib/chunk-RecordArticle.mjs.map +1 -0
  35. package/dist/lib/chunk-RelatedArticle.mjs +71 -0
  36. package/dist/lib/chunk-RelatedArticle.mjs.map +1 -0
  37. package/dist/lib/chunk-RenamePopover.mjs +94 -0
  38. package/dist/lib/chunk-RenamePopover.mjs.map +1 -0
  39. package/dist/lib/chunk-SchemaContainer.mjs +53 -0
  40. package/dist/lib/chunk-SchemaContainer.mjs.map +1 -0
  41. package/dist/lib/chunk-SmallPresenceLive.mjs +2 -0
  42. package/dist/lib/chunk-SpaceHomeArticle.mjs +82 -0
  43. package/dist/lib/chunk-SpaceHomeArticle.mjs.map +1 -0
  44. package/dist/lib/chunk-SpaceHomeDashboard.mjs +96 -0
  45. package/dist/lib/chunk-SpaceHomeDashboard.mjs.map +1 -0
  46. package/dist/lib/chunk-SpaceHomeRecent.mjs +79 -0
  47. package/dist/lib/chunk-SpaceHomeRecent.mjs.map +1 -0
  48. package/dist/lib/chunk-SpacePlugin.mjs +97 -0
  49. package/dist/lib/chunk-SpacePlugin.mjs.map +1 -0
  50. package/dist/lib/chunk-SpacePresence.mjs +155 -0
  51. package/dist/lib/chunk-SpacePresence.mjs.map +1 -0
  52. package/dist/lib/chunk-SpaceSettings.mjs +63 -0
  53. package/dist/lib/chunk-SpaceSettings.mjs.map +1 -0
  54. package/dist/lib/chunk-SpaceSettingsContainer.mjs +278 -0
  55. package/dist/lib/chunk-SpaceSettingsContainer.mjs.map +1 -0
  56. package/dist/lib/chunk-SyncStatus.mjs +166 -0
  57. package/dist/lib/chunk-SyncStatus.mjs.map +1 -0
  58. package/dist/lib/chunk-TypeArticle.mjs +469 -0
  59. package/dist/lib/chunk-TypeArticle.mjs.map +1 -0
  60. package/dist/lib/chunk-ViewEditor.mjs +78 -0
  61. package/dist/lib/chunk-ViewEditor.mjs.map +1 -0
  62. package/dist/lib/chunk-add-object.mjs +74 -0
  63. package/dist/lib/chunk-add-object.mjs.map +1 -0
  64. package/dist/lib/chunk-add-relation.mjs +16 -0
  65. package/dist/lib/chunk-add-relation.mjs.map +1 -0
  66. package/dist/lib/chunk-add-type.mjs +41 -0
  67. package/dist/lib/chunk-add-type.mjs.map +1 -0
  68. package/dist/lib/chunk-app-graph-builder.mjs +1056 -0
  69. package/dist/lib/chunk-app-graph-builder.mjs.map +1 -0
  70. package/dist/lib/chunk-close.mjs +11 -0
  71. package/dist/lib/chunk-close.mjs.map +1 -0
  72. package/dist/lib/chunk-collection-path.mjs +65 -0
  73. package/dist/lib/chunk-collection-path.mjs.map +1 -0
  74. package/dist/lib/chunk-create-object.mjs +80 -0
  75. package/dist/lib/chunk-create-object.mjs.map +1 -0
  76. package/dist/lib/chunk-create.mjs +62 -0
  77. package/dist/lib/chunk-create.mjs.map +1 -0
  78. package/dist/lib/chunk-definitions.mjs +466 -0
  79. package/dist/lib/chunk-definitions.mjs.map +1 -0
  80. package/dist/lib/chunk-delete-field.mjs +52 -0
  81. package/dist/lib/chunk-delete-field.mjs.map +1 -0
  82. package/dist/lib/chunk-delete.mjs +11 -0
  83. package/dist/lib/chunk-delete.mjs.map +1 -0
  84. package/dist/lib/chunk-duplicate-object.mjs +11 -0
  85. package/dist/lib/chunk-duplicate-object.mjs.map +1 -0
  86. package/dist/lib/chunk-errors.mjs +10 -0
  87. package/dist/lib/chunk-errors.mjs.map +1 -0
  88. package/dist/lib/chunk-export-space.mjs +24 -0
  89. package/dist/lib/chunk-export-space.mjs.map +1 -0
  90. package/dist/lib/chunk-find-duplicates.mjs +19 -0
  91. package/dist/lib/chunk-find-duplicates.mjs.map +1 -0
  92. package/dist/lib/chunk-get-share-link.mjs +29 -0
  93. package/dist/lib/chunk-get-share-link.mjs.map +1 -0
  94. package/dist/lib/chunk-helpers.mjs +14 -0
  95. package/dist/lib/chunk-helpers.mjs.map +1 -0
  96. package/dist/lib/chunk-identity-created.mjs +26 -0
  97. package/dist/lib/chunk-identity-created.mjs.map +1 -0
  98. package/dist/lib/chunk-import-space.mjs +16 -0
  99. package/dist/lib/chunk-import-space.mjs.map +1 -0
  100. package/dist/lib/chunk-join.mjs +35 -0
  101. package/dist/lib/chunk-join.mjs.map +1 -0
  102. package/dist/lib/chunk-merge-duplicates.mjs +62 -0
  103. package/dist/lib/chunk-merge-duplicates.mjs.map +1 -0
  104. package/dist/lib/{neutral/chunk-5ZZS3KMK.mjs → chunk-meta.mjs} +15 -24
  105. package/dist/lib/chunk-meta.mjs.map +1 -0
  106. package/dist/lib/chunk-migrate.mjs +45 -0
  107. package/dist/lib/chunk-migrate.mjs.map +1 -0
  108. package/dist/lib/chunk-navigation-handler.mjs +63 -0
  109. package/dist/lib/chunk-navigation-handler.mjs.map +1 -0
  110. package/dist/lib/chunk-navigation-target-resolver.mjs +79 -0
  111. package/dist/lib/chunk-navigation-target-resolver.mjs.map +1 -0
  112. package/dist/lib/chunk-open-create-object.mjs +32 -0
  113. package/dist/lib/chunk-open-create-object.mjs.map +1 -0
  114. package/dist/lib/chunk-open-create-space.mjs +16 -0
  115. package/dist/lib/chunk-open-create-space.mjs.map +1 -0
  116. package/dist/lib/chunk-open-import-space.mjs +16 -0
  117. package/dist/lib/chunk-open-import-space.mjs.map +1 -0
  118. package/dist/lib/chunk-open-members.mjs +15 -0
  119. package/dist/lib/chunk-open-members.mjs.map +1 -0
  120. package/dist/lib/chunk-open-settings.mjs +15 -0
  121. package/dist/lib/chunk-open-settings.mjs.map +1 -0
  122. package/dist/lib/chunk-open.mjs +11 -0
  123. package/dist/lib/chunk-open.mjs.map +1 -0
  124. package/dist/lib/chunk-operation-handler.mjs +13 -0
  125. package/dist/lib/chunk-operation-handler.mjs.map +1 -0
  126. package/dist/lib/chunk-react-root.mjs +20 -0
  127. package/dist/lib/chunk-react-root.mjs.map +1 -0
  128. package/dist/lib/chunk-react-surface.mjs +384 -0
  129. package/dist/lib/chunk-react-surface.mjs.map +1 -0
  130. package/dist/lib/chunk-remove-objects.mjs +83 -0
  131. package/dist/lib/chunk-remove-objects.mjs.map +1 -0
  132. package/dist/lib/chunk-rename-object.mjs +18 -0
  133. package/dist/lib/chunk-rename-object.mjs.map +1 -0
  134. package/dist/lib/chunk-rename.mjs +18 -0
  135. package/dist/lib/chunk-rename.mjs.map +1 -0
  136. package/dist/lib/chunk-repair.mjs +28 -0
  137. package/dist/lib/chunk-repair.mjs.map +1 -0
  138. package/dist/lib/chunk-restore-field.mjs +50 -0
  139. package/dist/lib/chunk-restore-field.mjs.map +1 -0
  140. package/dist/lib/chunk-restore-objects.mjs +33 -0
  141. package/dist/lib/chunk-restore-objects.mjs.map +1 -0
  142. package/dist/lib/chunk-settings.mjs +23 -0
  143. package/dist/lib/chunk-settings.mjs.map +1 -0
  144. package/dist/lib/chunk-share.mjs +23 -0
  145. package/dist/lib/chunk-share.mjs.map +1 -0
  146. package/dist/lib/chunk-snapshot.mjs +24 -0
  147. package/dist/lib/chunk-snapshot.mjs.map +1 -0
  148. package/dist/lib/chunk-spaces-ready.mjs +242 -0
  149. package/dist/lib/chunk-spaces-ready.mjs.map +1 -0
  150. package/dist/lib/chunk-state.mjs +48 -0
  151. package/dist/lib/chunk-state.mjs.map +1 -0
  152. package/dist/lib/chunk-types.mjs +56 -0
  153. package/dist/lib/chunk-types.mjs.map +1 -0
  154. package/dist/lib/chunk-undo-mappings.mjs +40 -0
  155. package/dist/lib/chunk-undo-mappings.mjs.map +1 -0
  156. package/dist/lib/chunk-util.mjs +34 -0
  157. package/dist/lib/chunk-util.mjs.map +1 -0
  158. package/dist/lib/chunk-wait-for-object.mjs +16 -0
  159. package/dist/lib/chunk-wait-for-object.mjs.map +1 -0
  160. package/dist/lib/components.mjs +329 -0
  161. package/dist/lib/components.mjs.map +1 -0
  162. package/dist/lib/{neutral/chunk-C2ULK22J.mjs → constants.mjs} +5 -10
  163. package/dist/lib/constants.mjs.map +1 -0
  164. package/dist/lib/containers.mjs +31 -0
  165. package/dist/lib/containers.mjs.map +1 -0
  166. package/dist/lib/hooks.mjs +185 -0
  167. package/dist/lib/hooks.mjs.map +1 -0
  168. package/dist/lib/index.mjs +7 -0
  169. package/dist/lib/meta.mjs +2 -0
  170. package/dist/lib/operations.mjs +8 -0
  171. package/dist/lib/operations.mjs.map +1 -0
  172. package/dist/lib/plugin.mjs +9 -0
  173. package/dist/lib/plugin.mjs.map +1 -0
  174. package/dist/lib/testing.mjs +2 -0
  175. package/dist/lib/translations.mjs +350 -0
  176. package/dist/lib/translations.mjs.map +1 -0
  177. package/dist/lib/types.mjs +60 -0
  178. package/dist/lib/types.mjs.map +1 -0
  179. package/dist/types/src/SpacePlugin.workerd.d.ts.map +1 -1
  180. package/dist/types/src/capabilities/SpaceFormFields.d.ts +10 -0
  181. package/dist/types/src/capabilities/SpaceFormFields.d.ts.map +1 -0
  182. package/dist/types/src/capabilities/SpaceSurfaces.d.ts +50 -0
  183. package/dist/types/src/capabilities/SpaceSurfaces.d.ts.map +1 -0
  184. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +1 -1
  185. package/dist/types/src/capabilities/app-graph-builder/extensions/collections.d.ts +6 -1
  186. package/dist/types/src/capabilities/app-graph-builder/extensions/collections.d.ts.map +1 -1
  187. package/dist/types/src/capabilities/app-graph-builder/extensions/companions.d.ts +1 -1
  188. package/dist/types/src/capabilities/app-graph-builder/extensions/companions.d.ts.map +1 -1
  189. package/dist/types/src/capabilities/app-graph-builder/extensions/database.d.ts +8 -8
  190. package/dist/types/src/capabilities/app-graph-builder/extensions/database.d.ts.map +1 -1
  191. package/dist/types/src/capabilities/app-graph-builder/extensions/settings.d.ts +1 -0
  192. package/dist/types/src/capabilities/app-graph-builder/extensions/settings.d.ts.map +1 -1
  193. package/dist/types/src/capabilities/app-graph-builder/extensions/shared.d.ts +3 -2
  194. package/dist/types/src/capabilities/app-graph-builder/extensions/shared.d.ts.map +1 -1
  195. package/dist/types/src/capabilities/app-graph-builder/extensions/spaces.d.ts +5 -0
  196. package/dist/types/src/capabilities/app-graph-builder/extensions/spaces.d.ts.map +1 -1
  197. package/dist/types/src/capabilities/create-object.d.ts +1 -1
  198. package/dist/types/src/capabilities/identity-created.d.ts +1 -1
  199. package/dist/types/src/capabilities/index.d.ts +1 -1
  200. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  201. package/dist/types/src/capabilities/navigation-handler/navigation-handler.d.ts +3 -1
  202. package/dist/types/src/capabilities/navigation-handler/navigation-handler.d.ts.map +1 -1
  203. package/dist/types/src/capabilities/navigation-target-resolver.d.ts +5 -0
  204. package/dist/types/src/capabilities/navigation-target-resolver.d.ts.map +1 -0
  205. package/dist/types/src/capabilities/operation-handler.d.ts +1 -1
  206. package/dist/types/src/capabilities/react-root.d.ts +1 -1
  207. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  208. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  209. package/dist/types/src/capabilities/repair.d.ts +1 -1
  210. package/dist/types/src/capabilities/settings.d.ts +1 -1
  211. package/dist/types/src/capabilities/spaces-ready.d.ts +1 -1
  212. package/dist/types/src/capabilities/state.d.ts +1 -1
  213. package/dist/types/src/capabilities/try-get-view.d.ts +7 -0
  214. package/dist/types/src/capabilities/try-get-view.d.ts.map +1 -0
  215. package/dist/types/src/capabilities/undo-mappings.d.ts +1 -1
  216. package/dist/types/src/collection-path.d.ts +28 -0
  217. package/dist/types/src/collection-path.d.ts.map +1 -0
  218. package/dist/types/src/collection-path.test.d.ts +2 -0
  219. package/dist/types/src/collection-path.test.d.ts.map +1 -0
  220. package/dist/types/src/commands/space/export/export.d.ts +23 -0
  221. package/dist/types/src/commands/space/export/export.d.ts.map +1 -0
  222. package/dist/types/src/commands/space/export/export.test.d.ts +2 -0
  223. package/dist/types/src/commands/space/export/export.test.d.ts.map +1 -0
  224. package/dist/types/src/commands/space/export/index.d.ts +2 -0
  225. package/dist/types/src/commands/space/export/index.d.ts.map +1 -0
  226. package/dist/types/src/commands/space/import/import.d.ts +17 -0
  227. package/dist/types/src/commands/space/import/import.d.ts.map +1 -0
  228. package/dist/types/src/commands/space/import/import.test.d.ts +2 -0
  229. package/dist/types/src/commands/space/import/import.test.d.ts.map +1 -0
  230. package/dist/types/src/commands/space/import/index.d.ts +2 -0
  231. package/dist/types/src/commands/space/import/index.d.ts.map +1 -0
  232. package/dist/types/src/commands/space/index.d.ts +8 -1
  233. package/dist/types/src/commands/space/index.d.ts.map +1 -1
  234. package/dist/types/src/components/AwaitingObject/AwaitingObject.d.ts.map +1 -1
  235. package/dist/types/src/components/SyncStatus/status.d.ts +7 -4
  236. package/dist/types/src/components/SyncStatus/status.d.ts.map +1 -1
  237. package/dist/types/src/components/SyncStatus/status.test.d.ts +2 -0
  238. package/dist/types/src/components/SyncStatus/status.test.d.ts.map +1 -0
  239. package/dist/types/src/containers/CollectionArticle/CollectionArticle.d.ts +4 -4
  240. package/dist/types/src/containers/CollectionArticle/CollectionArticle.d.ts.map +1 -1
  241. package/dist/types/src/containers/CollectionSection/CollectionSection.d.ts +4 -1
  242. package/dist/types/src/containers/CollectionSection/CollectionSection.d.ts.map +1 -1
  243. package/dist/types/src/containers/CreateObjectDialog/CreateObjectDialog.d.ts +4 -1
  244. package/dist/types/src/containers/CreateObjectDialog/CreateObjectDialog.d.ts.map +1 -1
  245. package/dist/types/src/containers/CreateObjectDialog/CreateObjectDialog.stories.d.ts +420 -9
  246. package/dist/types/src/containers/CreateObjectDialog/CreateObjectDialog.stories.d.ts.map +1 -1
  247. package/dist/types/src/containers/CreateSpaceDialog/CreateSpaceDialog.d.ts +4 -1
  248. package/dist/types/src/containers/CreateSpaceDialog/CreateSpaceDialog.d.ts.map +1 -1
  249. package/dist/types/src/containers/CreateSpaceDialog/CreateSpaceDialog.stories.d.ts +423 -10
  250. package/dist/types/src/containers/CreateSpaceDialog/CreateSpaceDialog.stories.d.ts.map +1 -1
  251. package/dist/types/src/containers/ImportSpaceDialog/ImportSpaceDialog.d.ts +4 -1
  252. package/dist/types/src/containers/ImportSpaceDialog/ImportSpaceDialog.d.ts.map +1 -1
  253. package/dist/types/src/containers/InlineSyncStatus/InlineSyncStatus.d.ts +5 -2
  254. package/dist/types/src/containers/InlineSyncStatus/InlineSyncStatus.d.ts.map +1 -1
  255. package/dist/types/src/containers/JoinDialog/JoinDialog.d.ts +4 -1
  256. package/dist/types/src/containers/JoinDialog/JoinDialog.d.ts.map +1 -1
  257. package/dist/types/src/containers/JoinDialog/JoinDialog.stories.d.ts +423 -10
  258. package/dist/types/src/containers/JoinDialog/JoinDialog.stories.d.ts.map +1 -1
  259. package/dist/types/src/containers/MembersContainer/MembersContainer.d.ts +4 -1
  260. package/dist/types/src/containers/MembersContainer/MembersContainer.d.ts.map +1 -1
  261. package/dist/types/src/containers/MergePreview/MergePreview.d.ts +16 -0
  262. package/dist/types/src/containers/MergePreview/MergePreview.d.ts.map +1 -0
  263. package/dist/types/src/containers/MergePreview/index.d.ts +2 -0
  264. package/dist/types/src/containers/MergePreview/index.d.ts.map +1 -0
  265. package/dist/types/src/containers/ObjectCardStack/ObjectCardStack.d.ts +3 -2
  266. package/dist/types/src/containers/ObjectCardStack/ObjectCardStack.d.ts.map +1 -1
  267. package/dist/types/src/containers/RecordArticle/RecordArticle.d.ts +4 -1
  268. package/dist/types/src/containers/RecordArticle/RecordArticle.d.ts.map +1 -1
  269. package/dist/types/src/containers/RecordArticle/RecordArticle.stories.d.ts.map +1 -1
  270. package/dist/types/src/containers/RelatedArticle/RelatedArticle.d.ts +4 -1
  271. package/dist/types/src/containers/RelatedArticle/RelatedArticle.d.ts.map +1 -1
  272. package/dist/types/src/containers/RenamePopover/RenamePopover.d.ts +4 -4
  273. package/dist/types/src/containers/RenamePopover/RenamePopover.d.ts.map +1 -1
  274. package/dist/types/src/containers/SchemaContainer/SchemaContainer.d.ts +4 -7
  275. package/dist/types/src/containers/SchemaContainer/SchemaContainer.d.ts.map +1 -1
  276. package/dist/types/src/containers/SchemaContainer/use-query-space-types.d.ts +7 -0
  277. package/dist/types/src/containers/SchemaContainer/use-query-space-types.d.ts.map +1 -0
  278. package/dist/types/src/containers/SpaceHomeArticle/SpaceHomeArticle.d.ts +4 -11
  279. package/dist/types/src/containers/SpaceHomeArticle/SpaceHomeArticle.d.ts.map +1 -1
  280. package/dist/types/src/containers/SpaceHomeArticle/SpaceHomeArticle.stories.d.ts +14 -0
  281. package/dist/types/src/containers/SpaceHomeArticle/SpaceHomeArticle.stories.d.ts.map +1 -0
  282. package/dist/types/src/containers/SpaceHomeDashboard/SpaceHomeDashboard.d.ts +15 -0
  283. package/dist/types/src/containers/SpaceHomeDashboard/SpaceHomeDashboard.d.ts.map +1 -0
  284. package/dist/types/src/containers/SpaceHomeDashboard/SpaceHomeDashboard.stories.d.ts +20 -0
  285. package/dist/types/src/containers/SpaceHomeDashboard/SpaceHomeDashboard.stories.d.ts.map +1 -0
  286. package/dist/types/src/containers/SpaceHomeDashboard/index.d.ts +2 -0
  287. package/dist/types/src/containers/SpaceHomeDashboard/index.d.ts.map +1 -0
  288. package/dist/types/src/containers/SpaceHomeRecent/SpaceHomeRecent.d.ts +5 -8
  289. package/dist/types/src/containers/SpaceHomeRecent/SpaceHomeRecent.d.ts.map +1 -1
  290. package/dist/types/src/containers/SpacePresence/SpacePresence.d.ts +7 -4
  291. package/dist/types/src/containers/SpacePresence/SpacePresence.d.ts.map +1 -1
  292. package/dist/types/src/containers/SpacePresence/SpacePresence.stories.d.ts +419 -9
  293. package/dist/types/src/containers/SpacePresence/SpacePresence.stories.d.ts.map +1 -1
  294. package/dist/types/src/containers/SpaceSettings/SpaceSettings.d.ts +4 -1
  295. package/dist/types/src/containers/SpaceSettings/SpaceSettings.d.ts.map +1 -1
  296. package/dist/types/src/containers/SpaceSettings/SpaceSettings.stories.d.ts +423 -10
  297. package/dist/types/src/containers/SpaceSettings/SpaceSettings.stories.d.ts.map +1 -1
  298. package/dist/types/src/containers/SpaceSettingsContainer/SpaceSettingsContainer.stories.d.ts +419 -9
  299. package/dist/types/src/containers/SpaceSettingsContainer/SpaceSettingsContainer.stories.d.ts.map +1 -1
  300. package/dist/types/src/containers/SyncStatus/SyncStatus.d.ts +7 -2
  301. package/dist/types/src/containers/SyncStatus/SyncStatus.d.ts.map +1 -1
  302. package/dist/types/src/containers/SyncStatus/SyncStatus.stories.d.ts +434 -11
  303. package/dist/types/src/containers/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
  304. package/dist/types/src/containers/TypeArticle/TypeArticle.d.ts +14 -0
  305. package/dist/types/src/containers/TypeArticle/TypeArticle.d.ts.map +1 -0
  306. package/dist/types/src/containers/TypeArticle/TypeArticle.stories.d.ts +45 -0
  307. package/dist/types/src/containers/TypeArticle/TypeArticle.stories.d.ts.map +1 -0
  308. package/dist/types/src/containers/TypeArticle/duplicatesGroup.d.ts +19 -0
  309. package/dist/types/src/containers/TypeArticle/duplicatesGroup.d.ts.map +1 -0
  310. package/dist/types/src/containers/TypeArticle/index.d.ts +2 -0
  311. package/dist/types/src/containers/TypeArticle/index.d.ts.map +1 -0
  312. package/dist/types/src/containers/TypeArticle/useDuplicates.d.ts +34 -0
  313. package/dist/types/src/containers/TypeArticle/useDuplicates.d.ts.map +1 -0
  314. package/dist/types/src/containers/ViewEditor/ViewEditor.d.ts +4 -1
  315. package/dist/types/src/containers/ViewEditor/ViewEditor.d.ts.map +1 -1
  316. package/dist/types/src/containers/index.d.ts +3 -2
  317. package/dist/types/src/containers/index.d.ts.map +1 -1
  318. package/dist/types/src/errors.d.ts +30 -0
  319. package/dist/types/src/errors.d.ts.map +1 -1
  320. package/dist/types/src/hooks/index.d.ts +2 -0
  321. package/dist/types/src/hooks/index.d.ts.map +1 -1
  322. package/dist/types/src/hooks/useEdgeStatus.d.ts +6 -0
  323. package/dist/types/src/hooks/useEdgeStatus.d.ts.map +1 -0
  324. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts.map +1 -1
  325. package/dist/types/src/hooks/useStalled.d.ts +13 -0
  326. package/dist/types/src/hooks/useStalled.d.ts.map +1 -0
  327. package/dist/types/src/operations/create.d.ts.map +1 -1
  328. package/dist/types/src/operations/definitions.d.ts +29 -1
  329. package/dist/types/src/operations/definitions.d.ts.map +1 -1
  330. package/dist/types/src/operations/find-duplicates.d.ts +5 -0
  331. package/dist/types/src/operations/find-duplicates.d.ts.map +1 -0
  332. package/dist/types/src/operations/helpers.d.ts +3 -0
  333. package/dist/types/src/operations/helpers.d.ts.map +1 -1
  334. package/dist/types/src/operations/index.d.ts.map +1 -1
  335. package/dist/types/src/operations/join.d.ts.map +1 -1
  336. package/dist/types/src/operations/merge-duplicates.d.ts +5 -0
  337. package/dist/types/src/operations/merge-duplicates.d.ts.map +1 -0
  338. package/dist/types/src/operations/open-settings.d.ts.map +1 -1
  339. package/dist/types/src/operations/remove-objects.d.ts.map +1 -1
  340. package/dist/types/src/translations.d.ts +419 -9
  341. package/dist/types/src/translations.d.ts.map +1 -1
  342. package/dist/types/src/type-section-path.d.ts +22 -0
  343. package/dist/types/src/type-section-path.d.ts.map +1 -0
  344. package/dist/types/src/type-section-path.test.d.ts +2 -0
  345. package/dist/types/src/type-section-path.test.d.ts.map +1 -0
  346. package/dist/types/src/types/capabilities.d.ts +22 -2
  347. package/dist/types/src/types/capabilities.d.ts.map +1 -1
  348. package/dist/types/src/types/surface.d.ts +4 -4
  349. package/dist/types/src/types/surface.d.ts.map +1 -1
  350. package/dist/types/src/types/types.d.ts +6 -0
  351. package/dist/types/src/types/types.d.ts.map +1 -1
  352. package/dist/types/tsconfig.tsbuildinfo +1 -1
  353. package/package.json +87 -72
  354. package/src/SpacePlugin.ts +6 -6
  355. package/src/SpacePlugin.workerd.ts +3 -1
  356. package/src/capabilities/SpaceFormFields.tsx +72 -0
  357. package/src/capabilities/SpaceSurfaces.tsx +219 -0
  358. package/src/capabilities/app-graph-builder/extensions/collections.ts +74 -21
  359. package/src/capabilities/app-graph-builder/extensions/companions.ts +10 -5
  360. package/src/capabilities/app-graph-builder/extensions/database.ts +64 -57
  361. package/src/capabilities/app-graph-builder/extensions/settings.ts +23 -13
  362. package/src/capabilities/app-graph-builder/extensions/shared.ts +3 -2
  363. package/src/capabilities/app-graph-builder/extensions/spaces.ts +6 -7
  364. package/src/capabilities/create-object.ts +1 -14
  365. package/src/capabilities/index.ts +4 -1
  366. package/src/capabilities/navigation-handler/navigation-handler.ts +27 -7
  367. package/src/capabilities/navigation-target-resolver.ts +77 -0
  368. package/src/capabilities/react-surface.ts +274 -0
  369. package/src/capabilities/spaces-ready.ts +31 -18
  370. package/src/capabilities/state.ts +3 -1
  371. package/src/capabilities/try-get-view.ts +24 -0
  372. package/src/collection-path.test.ts +161 -0
  373. package/src/collection-path.ts +97 -0
  374. package/src/commands/space/export/export.test.ts +68 -0
  375. package/src/commands/space/export/export.ts +118 -0
  376. package/src/commands/space/export/index.ts +5 -0
  377. package/src/commands/space/import/import.test.ts +80 -0
  378. package/src/commands/space/import/import.ts +65 -0
  379. package/src/commands/space/import/index.ts +5 -0
  380. package/src/commands/space/index.ts +16 -1
  381. package/src/components/AwaitingObject/AwaitingObject.tsx +10 -4
  382. package/src/components/CreateObjectPanel/CreateObjectPanel.tsx +16 -18
  383. package/src/components/SyncStatus/status.test.ts +49 -0
  384. package/src/components/SyncStatus/status.ts +25 -12
  385. package/src/containers/CollectionArticle/CollectionArticle.tsx +5 -3
  386. package/src/containers/CollectionSection/CollectionSection.tsx +2 -0
  387. package/src/containers/CreateObjectDialog/CreateObjectDialog.stories.tsx +18 -4
  388. package/src/containers/CreateObjectDialog/CreateObjectDialog.tsx +13 -17
  389. package/src/containers/CreateSpaceDialog/CreateSpaceDialog.tsx +28 -19
  390. package/src/containers/DefaultProperties/DefaultProperties.tsx +4 -2
  391. package/src/containers/ImportSpaceDialog/ImportSpaceDialog.tsx +4 -2
  392. package/src/containers/InlineSyncStatus/InlineSyncStatus.tsx +7 -17
  393. package/src/containers/JoinDialog/JoinDialog.tsx +5 -3
  394. package/src/containers/MembersContainer/MembersContainer.tsx +2 -0
  395. package/src/containers/MergePreview/MergePreview.tsx +90 -0
  396. package/src/containers/MergePreview/index.ts +5 -0
  397. package/src/containers/ObjectCardStack/ObjectCardStack.tsx +46 -43
  398. package/src/containers/RecordArticle/RecordArticle.stories.tsx +2 -1
  399. package/src/containers/RecordArticle/RecordArticle.tsx +8 -4
  400. package/src/containers/RelatedArticle/RelatedArticle.tsx +7 -3
  401. package/src/containers/RenamePopover/RenamePopover.tsx +2 -0
  402. package/src/containers/SchemaContainer/SchemaContainer.tsx +4 -17
  403. package/src/containers/SchemaContainer/use-query-space-types.ts +28 -0
  404. package/src/containers/SpaceHomeArticle/SpaceHomeArticle.stories.tsx +116 -0
  405. package/src/containers/SpaceHomeArticle/SpaceHomeArticle.tsx +6 -5
  406. package/src/containers/SpaceHomeDashboard/SpaceHomeDashboard.stories.tsx +99 -0
  407. package/src/containers/SpaceHomeDashboard/SpaceHomeDashboard.tsx +109 -0
  408. package/src/containers/SpaceHomeDashboard/index.ts +5 -0
  409. package/src/containers/SpaceHomeRecent/SpaceHomeRecent.tsx +17 -15
  410. package/src/containers/SpacePresence/SpacePresence.stories.tsx +4 -4
  411. package/src/containers/SpacePresence/SpacePresence.tsx +37 -36
  412. package/src/containers/SpaceSettings/SpaceSettings.tsx +3 -1
  413. package/src/containers/SpaceSettingsContainer/SpaceSettingsContainer.tsx +7 -2
  414. package/src/containers/SyncStatus/SyncStatus.stories.tsx +80 -1
  415. package/src/containers/SyncStatus/SyncStatus.tsx +36 -46
  416. package/src/containers/TypeArticle/TypeArticle.stories.tsx +249 -0
  417. package/src/containers/TypeArticle/TypeArticle.tsx +362 -0
  418. package/src/containers/TypeArticle/duplicatesGroup.tsx +150 -0
  419. package/src/containers/TypeArticle/index.ts +5 -0
  420. package/src/containers/TypeArticle/useDuplicates.ts +119 -0
  421. package/src/containers/ViewEditor/ViewEditor.tsx +3 -1
  422. package/src/containers/index.ts +3 -2
  423. package/src/errors.ts +6 -0
  424. package/src/hooks/index.ts +2 -0
  425. package/src/hooks/useEdgeStatus.ts +40 -0
  426. package/src/hooks/useInputSurfaceLookup.tsx +5 -4
  427. package/src/hooks/useRelatedObjects.ts +1 -1
  428. package/src/hooks/useStalled.ts +39 -0
  429. package/src/operations/add-object.ts +7 -7
  430. package/src/operations/create.ts +11 -3
  431. package/src/operations/definitions.ts +54 -1
  432. package/src/operations/find-duplicates.ts +33 -0
  433. package/src/operations/get-share-link.ts +1 -1
  434. package/src/operations/helpers.ts +11 -0
  435. package/src/operations/index.ts +2 -0
  436. package/src/operations/join.ts +6 -5
  437. package/src/operations/merge-duplicates.ts +51 -0
  438. package/src/operations/open-members.ts +3 -3
  439. package/src/operations/open-settings.ts +5 -3
  440. package/src/operations/remove-objects.ts +42 -3
  441. package/src/translations.ts +52 -11
  442. package/src/type-section-path.test.ts +48 -0
  443. package/src/type-section-path.ts +39 -0
  444. package/src/types/capabilities.ts +26 -2
  445. package/src/types/surface.ts +4 -8
  446. package/src/types/types.ts +7 -0
  447. package/dist/lib/neutral/CollectionArticle-BMH7SZ7Q.mjs +0 -93
  448. package/dist/lib/neutral/CollectionArticle-BMH7SZ7Q.mjs.map +0 -7
  449. package/dist/lib/neutral/CollectionSection-BLYTGOKH.mjs +0 -19
  450. package/dist/lib/neutral/CollectionSection-BLYTGOKH.mjs.map +0 -7
  451. package/dist/lib/neutral/CreateObjectDialog-5454N3FJ.mjs +0 -221
  452. package/dist/lib/neutral/CreateObjectDialog-5454N3FJ.mjs.map +0 -7
  453. package/dist/lib/neutral/CreateSpaceDialog-WWNUTLVK.mjs +0 -61
  454. package/dist/lib/neutral/CreateSpaceDialog-WWNUTLVK.mjs.map +0 -7
  455. package/dist/lib/neutral/DefaultProperties-5SAWQC6I.mjs +0 -58
  456. package/dist/lib/neutral/DefaultProperties-5SAWQC6I.mjs.map +0 -7
  457. package/dist/lib/neutral/ImportSpaceDialog-CSSRTFAO.mjs +0 -64
  458. package/dist/lib/neutral/ImportSpaceDialog-CSSRTFAO.mjs.map +0 -7
  459. package/dist/lib/neutral/InlineSyncStatus-UOUTAPCU.mjs +0 -49
  460. package/dist/lib/neutral/InlineSyncStatus-UOUTAPCU.mjs.map +0 -7
  461. package/dist/lib/neutral/JoinDialog-ATNUCNL2.mjs +0 -97
  462. package/dist/lib/neutral/JoinDialog-ATNUCNL2.mjs.map +0 -7
  463. package/dist/lib/neutral/MembersContainer-C4ZTP6ZW.mjs +0 -231
  464. package/dist/lib/neutral/MembersContainer-C4ZTP6ZW.mjs.map +0 -7
  465. package/dist/lib/neutral/MenuFooter-FWE5LFM4.mjs +0 -33
  466. package/dist/lib/neutral/MenuFooter-FWE5LFM4.mjs.map +0 -7
  467. package/dist/lib/neutral/ObjectCardStack-DHVDRNRK.mjs +0 -55
  468. package/dist/lib/neutral/ObjectCardStack-DHVDRNRK.mjs.map +0 -7
  469. package/dist/lib/neutral/RecordArticle-JSORXRAA.mjs +0 -102
  470. package/dist/lib/neutral/RecordArticle-JSORXRAA.mjs.map +0 -7
  471. package/dist/lib/neutral/RelatedArticle-Z777WVDW.mjs +0 -69
  472. package/dist/lib/neutral/RelatedArticle-Z777WVDW.mjs.map +0 -7
  473. package/dist/lib/neutral/RenamePopover-AZT2KPOF.mjs +0 -104
  474. package/dist/lib/neutral/RenamePopover-AZT2KPOF.mjs.map +0 -7
  475. package/dist/lib/neutral/SchemaContainer-4GJKQBXM.mjs +0 -53
  476. package/dist/lib/neutral/SchemaContainer-4GJKQBXM.mjs.map +0 -7
  477. package/dist/lib/neutral/SmallPresenceLive-FW3AMEY5.mjs +0 -8
  478. package/dist/lib/neutral/SmallPresenceLive-FW3AMEY5.mjs.map +0 -7
  479. package/dist/lib/neutral/SpaceHomeArticle-Y47TLZ72.mjs +0 -78
  480. package/dist/lib/neutral/SpaceHomeArticle-Y47TLZ72.mjs.map +0 -7
  481. package/dist/lib/neutral/SpaceHomeRecent-S57AO3EV.mjs +0 -89
  482. package/dist/lib/neutral/SpaceHomeRecent-S57AO3EV.mjs.map +0 -7
  483. package/dist/lib/neutral/SpacePlugin.mjs +0 -10
  484. package/dist/lib/neutral/SpacePlugin.mjs.map +0 -7
  485. package/dist/lib/neutral/SpacePlugin.node.mjs +0 -838
  486. package/dist/lib/neutral/SpacePlugin.node.mjs.map +0 -7
  487. package/dist/lib/neutral/SpacePlugin.workerd.mjs +0 -34
  488. package/dist/lib/neutral/SpacePlugin.workerd.mjs.map +0 -7
  489. package/dist/lib/neutral/SpacePresence-T37WH43Y.mjs +0 -11
  490. package/dist/lib/neutral/SpacePresence-T37WH43Y.mjs.map +0 -7
  491. package/dist/lib/neutral/SpaceSettings-6CZF7GEO.mjs +0 -60
  492. package/dist/lib/neutral/SpaceSettings-6CZF7GEO.mjs.map +0 -7
  493. package/dist/lib/neutral/SpaceSettingsContainer-72CJWELM.mjs +0 -279
  494. package/dist/lib/neutral/SpaceSettingsContainer-72CJWELM.mjs.map +0 -7
  495. package/dist/lib/neutral/SyncStatus-J7CHLO5O.mjs +0 -147
  496. package/dist/lib/neutral/SyncStatus-J7CHLO5O.mjs.map +0 -7
  497. package/dist/lib/neutral/TypeCollectionArticle-W76ADS2G.mjs +0 -143
  498. package/dist/lib/neutral/TypeCollectionArticle-W76ADS2G.mjs.map +0 -7
  499. package/dist/lib/neutral/ViewEditor-QXRUOKXR.mjs +0 -101
  500. package/dist/lib/neutral/ViewEditor-QXRUOKXR.mjs.map +0 -7
  501. package/dist/lib/neutral/add-object-H2N4AOQJ.mjs +0 -77
  502. package/dist/lib/neutral/add-object-H2N4AOQJ.mjs.map +0 -7
  503. package/dist/lib/neutral/add-relation-BGTLART5.mjs +0 -26
  504. package/dist/lib/neutral/add-relation-BGTLART5.mjs.map +0 -7
  505. package/dist/lib/neutral/add-type-JIDLRANR.mjs +0 -57
  506. package/dist/lib/neutral/add-type-JIDLRANR.mjs.map +0 -7
  507. package/dist/lib/neutral/app-graph-builder-7H2KOD4B.mjs +0 -1332
  508. package/dist/lib/neutral/app-graph-builder-7H2KOD4B.mjs.map +0 -7
  509. package/dist/lib/neutral/capabilities/index.mjs +0 -46
  510. package/dist/lib/neutral/capabilities/index.mjs.map +0 -7
  511. package/dist/lib/neutral/capabilities/node.mjs +0 -15
  512. package/dist/lib/neutral/capabilities/node.mjs.map +0 -7
  513. package/dist/lib/neutral/chunk-52ASDNRA.mjs +0 -41
  514. package/dist/lib/neutral/chunk-52ASDNRA.mjs.map +0 -7
  515. package/dist/lib/neutral/chunk-5ZZS3KMK.mjs.map +0 -7
  516. package/dist/lib/neutral/chunk-C2ULK22J.mjs.map +0 -7
  517. package/dist/lib/neutral/chunk-F5KLUP2P.mjs +0 -115
  518. package/dist/lib/neutral/chunk-F5KLUP2P.mjs.map +0 -7
  519. package/dist/lib/neutral/chunk-G2KHP7FX.mjs +0 -8
  520. package/dist/lib/neutral/chunk-G2KHP7FX.mjs.map +0 -7
  521. package/dist/lib/neutral/chunk-J5LGTIGS.mjs +0 -10
  522. package/dist/lib/neutral/chunk-J5LGTIGS.mjs.map +0 -7
  523. package/dist/lib/neutral/chunk-LMUG6PEJ.mjs +0 -572
  524. package/dist/lib/neutral/chunk-LMUG6PEJ.mjs.map +0 -7
  525. package/dist/lib/neutral/chunk-RAAHDTVF.mjs +0 -167
  526. package/dist/lib/neutral/chunk-RAAHDTVF.mjs.map +0 -7
  527. package/dist/lib/neutral/chunk-SPWAMXNR.mjs +0 -131
  528. package/dist/lib/neutral/chunk-SPWAMXNR.mjs.map +0 -7
  529. package/dist/lib/neutral/chunk-U5WTDOMV.mjs +0 -8
  530. package/dist/lib/neutral/chunk-U5WTDOMV.mjs.map +0 -7
  531. package/dist/lib/neutral/chunk-V7JALUM3.mjs +0 -9
  532. package/dist/lib/neutral/chunk-V7JALUM3.mjs.map +0 -7
  533. package/dist/lib/neutral/close-5WEQZRNK.mjs +0 -17
  534. package/dist/lib/neutral/close-5WEQZRNK.mjs.map +0 -7
  535. package/dist/lib/neutral/components/index.mjs +0 -401
  536. package/dist/lib/neutral/components/index.mjs.map +0 -7
  537. package/dist/lib/neutral/constants.mjs +0 -16
  538. package/dist/lib/neutral/constants.mjs.map +0 -7
  539. package/dist/lib/neutral/containers/index.mjs +0 -55
  540. package/dist/lib/neutral/containers/index.mjs.map +0 -7
  541. package/dist/lib/neutral/create-QZ47FHQU.mjs +0 -75
  542. package/dist/lib/neutral/create-QZ47FHQU.mjs.map +0 -7
  543. package/dist/lib/neutral/create-object-ZU6FZW5X.mjs +0 -96
  544. package/dist/lib/neutral/create-object-ZU6FZW5X.mjs.map +0 -7
  545. package/dist/lib/neutral/delete-SPCU2VFM.mjs +0 -17
  546. package/dist/lib/neutral/delete-SPCU2VFM.mjs.map +0 -7
  547. package/dist/lib/neutral/delete-field-TAKJVEAD.mjs +0 -42
  548. package/dist/lib/neutral/delete-field-TAKJVEAD.mjs.map +0 -7
  549. package/dist/lib/neutral/duplicate-object-BUPZOO6S.mjs +0 -17
  550. package/dist/lib/neutral/duplicate-object-BUPZOO6S.mjs.map +0 -7
  551. package/dist/lib/neutral/export-space-S5SCAL4M.mjs +0 -34
  552. package/dist/lib/neutral/export-space-S5SCAL4M.mjs.map +0 -7
  553. package/dist/lib/neutral/get-share-link-CLM5IQRL.mjs +0 -41
  554. package/dist/lib/neutral/get-share-link-CLM5IQRL.mjs.map +0 -7
  555. package/dist/lib/neutral/hooks/index.mjs +0 -133
  556. package/dist/lib/neutral/hooks/index.mjs.map +0 -7
  557. package/dist/lib/neutral/identity-created-BEYMLBK4.mjs +0 -32
  558. package/dist/lib/neutral/identity-created-BEYMLBK4.mjs.map +0 -7
  559. package/dist/lib/neutral/import-space-LJQK3KT7.mjs +0 -28
  560. package/dist/lib/neutral/import-space-LJQK3KT7.mjs.map +0 -7
  561. package/dist/lib/neutral/index.mjs +0 -62
  562. package/dist/lib/neutral/index.mjs.map +0 -7
  563. package/dist/lib/neutral/join-FSODYIOC.mjs +0 -54
  564. package/dist/lib/neutral/join-FSODYIOC.mjs.map +0 -7
  565. package/dist/lib/neutral/meta.json +0 -1
  566. package/dist/lib/neutral/meta.mjs +0 -8
  567. package/dist/lib/neutral/meta.mjs.map +0 -7
  568. package/dist/lib/neutral/migrate-WHM6LU7L.mjs +0 -52
  569. package/dist/lib/neutral/migrate-WHM6LU7L.mjs.map +0 -7
  570. package/dist/lib/neutral/navigation-handler-ZF7MV2HL.mjs +0 -44
  571. package/dist/lib/neutral/navigation-handler-ZF7MV2HL.mjs.map +0 -7
  572. package/dist/lib/neutral/navigation-resolver-KBESOSWU.mjs +0 -82
  573. package/dist/lib/neutral/navigation-resolver-KBESOSWU.mjs.map +0 -7
  574. package/dist/lib/neutral/open-JCXTL3SK.mjs +0 -17
  575. package/dist/lib/neutral/open-JCXTL3SK.mjs.map +0 -7
  576. package/dist/lib/neutral/open-create-object-WAIAU7TA.mjs +0 -42
  577. package/dist/lib/neutral/open-create-object-WAIAU7TA.mjs.map +0 -7
  578. package/dist/lib/neutral/open-create-space-VU47FWPZ.mjs +0 -24
  579. package/dist/lib/neutral/open-create-space-VU47FWPZ.mjs.map +0 -7
  580. package/dist/lib/neutral/open-import-space-GUHIEWYB.mjs +0 -24
  581. package/dist/lib/neutral/open-import-space-GUHIEWYB.mjs.map +0 -7
  582. package/dist/lib/neutral/open-members-MLLBHKUU.mjs +0 -23
  583. package/dist/lib/neutral/open-members-MLLBHKUU.mjs.map +0 -7
  584. package/dist/lib/neutral/open-settings-DTPZF4U4.mjs +0 -23
  585. package/dist/lib/neutral/open-settings-DTPZF4U4.mjs.map +0 -7
  586. package/dist/lib/neutral/operation-handler-YPIRQOH2.mjs +0 -13
  587. package/dist/lib/neutral/operation-handler-YPIRQOH2.mjs.map +0 -7
  588. package/dist/lib/neutral/operations/index.mjs +0 -13
  589. package/dist/lib/neutral/operations/index.mjs.map +0 -7
  590. package/dist/lib/neutral/plugin.mjs +0 -18
  591. package/dist/lib/neutral/plugin.mjs.map +0 -7
  592. package/dist/lib/neutral/react-root-YLYRCSAZ.mjs +0 -23
  593. package/dist/lib/neutral/react-root-YLYRCSAZ.mjs.map +0 -7
  594. package/dist/lib/neutral/react-surface-LRA7GIFN.mjs +0 -367
  595. package/dist/lib/neutral/react-surface-LRA7GIFN.mjs.map +0 -7
  596. package/dist/lib/neutral/remove-objects-WEO66EDS.mjs +0 -55
  597. package/dist/lib/neutral/remove-objects-WEO66EDS.mjs.map +0 -7
  598. package/dist/lib/neutral/rename-Q6UNCBIM.mjs +0 -26
  599. package/dist/lib/neutral/rename-Q6UNCBIM.mjs.map +0 -7
  600. package/dist/lib/neutral/rename-object-2UCEGU7U.mjs +0 -26
  601. package/dist/lib/neutral/rename-object-2UCEGU7U.mjs.map +0 -7
  602. package/dist/lib/neutral/repair-HMH476U3.mjs +0 -32
  603. package/dist/lib/neutral/repair-HMH476U3.mjs.map +0 -7
  604. package/dist/lib/neutral/restore-field-6CQAFOXY.mjs +0 -40
  605. package/dist/lib/neutral/restore-field-6CQAFOXY.mjs.map +0 -7
  606. package/dist/lib/neutral/restore-objects-3VINLP7C.mjs +0 -39
  607. package/dist/lib/neutral/restore-objects-3VINLP7C.mjs.map +0 -7
  608. package/dist/lib/neutral/settings-5IBSYBVU.mjs +0 -28
  609. package/dist/lib/neutral/settings-5IBSYBVU.mjs.map +0 -7
  610. package/dist/lib/neutral/share-A4WPILNF.mjs +0 -31
  611. package/dist/lib/neutral/share-A4WPILNF.mjs.map +0 -7
  612. package/dist/lib/neutral/snapshot-HBYMAPA7.mjs +0 -30
  613. package/dist/lib/neutral/snapshot-HBYMAPA7.mjs.map +0 -7
  614. package/dist/lib/neutral/spaces-ready-GWMSU72V.mjs +0 -281
  615. package/dist/lib/neutral/spaces-ready-GWMSU72V.mjs.map +0 -7
  616. package/dist/lib/neutral/state-KMH2NUAL.mjs +0 -55
  617. package/dist/lib/neutral/state-KMH2NUAL.mjs.map +0 -7
  618. package/dist/lib/neutral/testing.mjs +0 -8
  619. package/dist/lib/neutral/testing.mjs.map +0 -7
  620. package/dist/lib/neutral/translations.mjs +0 -315
  621. package/dist/lib/neutral/translations.mjs.map +0 -7
  622. package/dist/lib/neutral/types/index.mjs +0 -40
  623. package/dist/lib/neutral/types/index.mjs.map +0 -7
  624. package/dist/lib/neutral/undo-mappings-P43EAUGI.mjs +0 -68
  625. package/dist/lib/neutral/undo-mappings-P43EAUGI.mjs.map +0 -7
  626. package/dist/lib/neutral/wait-for-object-U6P2NNWY.mjs +0 -23
  627. package/dist/lib/neutral/wait-for-object-U6P2NNWY.mjs.map +0 -7
  628. package/dist/types/src/capabilities/navigation-resolver.d.ts +0 -5
  629. package/dist/types/src/capabilities/navigation-resolver.d.ts.map +0 -1
  630. package/dist/types/src/containers/MenuFooter/MenuFooter.d.ts +0 -6
  631. package/dist/types/src/containers/MenuFooter/MenuFooter.d.ts.map +0 -1
  632. package/dist/types/src/containers/MenuFooter/index.d.ts +0 -2
  633. package/dist/types/src/containers/MenuFooter/index.d.ts.map +0 -1
  634. package/dist/types/src/containers/TypeCollectionArticle/TypeCollectionArticle.d.ts +0 -16
  635. package/dist/types/src/containers/TypeCollectionArticle/TypeCollectionArticle.d.ts.map +0 -1
  636. package/dist/types/src/containers/TypeCollectionArticle/TypeCollectionArticle.stories.d.ts +0 -21
  637. package/dist/types/src/containers/TypeCollectionArticle/TypeCollectionArticle.stories.d.ts.map +0 -1
  638. package/dist/types/src/containers/TypeCollectionArticle/index.d.ts +0 -2
  639. package/dist/types/src/containers/TypeCollectionArticle/index.d.ts.map +0 -1
  640. package/src/capabilities/navigation-resolver.ts +0 -94
  641. package/src/capabilities/react-surface.tsx +0 -395
  642. package/src/containers/MenuFooter/MenuFooter.tsx +0 -33
  643. package/src/containers/MenuFooter/index.ts +0 -5
  644. package/src/containers/TypeCollectionArticle/TypeCollectionArticle.stories.tsx +0 -116
  645. package/src/containers/TypeCollectionArticle/TypeCollectionArticle.tsx +0 -162
  646. package/src/containers/TypeCollectionArticle/index.ts +0 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpacePlugin.node.mjs","names":[],"sources":["../../src/commands/database/util.ts","../../src/commands/database/add.ts","../../src/commands/database/query/query.ts","../../src/commands/database/remove.ts","../../src/commands/database/stats.ts","../../src/commands/database/index.ts","../../src/commands/queue/util.ts","../../src/commands/queue/query.ts","../../src/commands/queue/index.ts","../../src/commands/space/close/close.ts","../../src/commands/space/create/create.ts","../../src/commands/space/export/export.ts","../../src/commands/space/import/import.ts","../../src/commands/space/info/info.ts","../../src/commands/space/join/util.ts","../../src/commands/space/join/join.ts","../../src/commands/space/list/list.ts","../../src/commands/space/members/util.ts","../../src/commands/space/members/members.ts","../../src/commands/space/open/open.ts","../../src/commands/space/schema/list/util.ts","../../src/commands/space/schema/list/list.ts","../../src/commands/space/schema/index.ts","../../src/commands/space/share/share.ts","../../src/commands/space/sync/sync.ts","../../src/commands/space/index.ts","../../src/SpacePlugin.node.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport { FormBuilder } from '@dxos/cli-util';\nimport { Entity } from '@dxos/echo';\n\n/**\n * Pretty prints an object with ANSI colors.\n */\nexport const printObject = (obj: Entity.Unknown) => {\n const typename = Entity.getTypename(obj) ?? '<unknown>';\n\n // TODO(wittjosiah): Obj.getType and thus Obj.getLabel are coming back undefined for some reason.\n return FormBuilder.make({ title: Entity.getLabel(obj) ?? typename }).pipe(\n FormBuilder.set('id', obj.id),\n FormBuilder.set('typename', typename),\n FormBuilder.build,\n );\n};\n\n/**\n * Pretty prints object stats with ANSI colors.\n */\nexport const printStats = (typename: string, count: number) =>\n FormBuilder.make({ title: typename }).pipe(FormBuilder.set('count', count), FormBuilder.build);\n\n/**\n * Pretty prints object removal result with ANSI colors.\n */\nexport const printObjectRemoved = (count: number) =>\n FormBuilder.make({ title: 'Objects removed' }).pipe(FormBuilder.set('count', count), FormBuilder.build);\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Command from '@effect/cli/Command';\nimport * as Options from '@effect/cli/Options';\nimport * as Prompt from '@effect/cli/Prompt';\nimport type * as Terminal from '@effect/platform/Terminal';\nimport * as Console from 'effect/Console';\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\n\nimport { type Capability, Plugin } from '@dxos/app-framework';\nimport { AppActivationEvents, AppAnnotation } from '@dxos/app-toolkit';\nimport { CommandConfig, Common, type SpaceNotFoundError, flushAndSync, print, spaceLayer } from '@dxos/cli-util';\nimport { type ClientService } from '@dxos/client';\nimport { SpaceProperties } from '@dxos/client/echo';\nimport type { Operation } from '@dxos/compute';\nimport { Annotation, Collection, Database, type Err, Filter, Obj, Query, Scope, Type } from '@dxos/echo';\nimport { HiddenAnnotation, getTypeAnnotation } from '@dxos/echo/Annotation';\nimport { Kind as EntityKind } from '@dxos/echo/Entity';\nimport { type SpaceId } from '@dxos/keys';\n\nimport { SpaceCapabilities } from '#types';\n\nimport { printObject } from './util';\n\n// NOTE: Explicit annotation required: d.ts emit cannot portably name the inferred @dxos/compute types (TS2883).\nexport const add: Command.Command<\n 'add',\n ClientService | CommandConfig | Operation.Service | Plugin.Service | Capability.Service | Terminal.Terminal,\n Err.EntityNotFoundError | Error | SpaceNotFoundError,\n { readonly spaceId: Option.Option<SpaceId>; readonly typename: Option.Option<string> }\n> = Command.make(\n 'add',\n {\n spaceId: Common.spaceId.pipe(Options.optional),\n typename: Options.text('typename').pipe(Options.withDescription('The typename to create.'), Options.optional),\n },\n ({ typename }) =>\n Effect.gen(function* () {\n const { json } = yield* CommandConfig;\n const manager = yield* Plugin.Service;\n const { db } = yield* Database.Service;\n\n yield* manager.activate(AppActivationEvents.SetupSchema);\n\n const resolve = (typename: string) => {\n const entry = manager.capabilities\n .getAll(SpaceCapabilities.CreateObjectEntry)\n .find(({ id }) => id === typename);\n return entry ?? undefined;\n };\n\n const [properties] = yield* Database.query(Filter.type(SpaceProperties)).run;\n const rootCollectionRef = Annotation.get(properties, AppAnnotation.RootCollectionAnnotation).pipe(\n Option.getOrUndefined,\n );\n const collection = rootCollectionRef ? yield* Database.load<Collection.Collection>(rootCollectionRef) : undefined;\n\n const selectedTypename = yield* Option.match(typename, {\n onNone: () => selectTypename(resolve),\n onSome: (t) => Effect.succeed(t),\n });\n const metadata = resolve(selectedTypename);\n if (!metadata) {\n return yield* Effect.fail(new Error(`Unknown typename: ${selectedTypename}`));\n }\n\n const result = yield* metadata.createObject({}, { db, target: collection ?? db });\n const object = result.object;\n if (!Obj.isObject(object)) {\n return yield* Effect.fail(new Error(`Invalid object: ${object}`));\n }\n\n if (json) {\n yield* Console.log(JSON.stringify(object, null, 2));\n } else {\n yield* Console.log(print(printObject(object)));\n }\n\n yield* flushAndSync({ indexes: true });\n }),\n).pipe(\n Command.withDescription('Add an object to a space.'),\n Command.provide(({ spaceId }) => spaceLayer(spaceId, true)),\n);\n\n/**\n * Prompts for typename selection if not provided.\n */\nconst selectTypename = Effect.fn(function* (\n resolve: (typename: string) => SpaceCapabilities.CreateObjectEntry | undefined,\n) {\n const { db } = yield* Database.Service;\n const allTypes = yield* Database.query(Query.select(Filter.type(Type.Type)).from(Scope.space(), Scope.registry()))\n .run;\n const types = allTypes\n .filter((schema) => !HiddenAnnotation.get(Type.getSchema(schema)).pipe(Option.getOrElse(() => false)))\n .filter((schema) => getTypeAnnotation(Type.getSchema(schema))?.kind !== EntityKind.Relation)\n .filter((schema) => !!resolve(Type.getTypename(schema)));\n\n const choices = types.map((schema) => ({\n // TODO(wittjosiah): Translations.\n title: Type.getTypename(schema),\n value: Type.getTypename(schema),\n description: Type.getTypename(schema),\n }));\n\n const selected = yield* Prompt.select({\n message: 'Select a type:',\n choices,\n });\n\n return selected;\n});\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Command from '@effect/cli/Command';\nimport * as Options from '@effect/cli/Options';\nimport * as Console from 'effect/Console';\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\n\nimport { CommandConfig, Common, printList, spaceLayer } from '@dxos/cli-util';\nimport { Database, Filter } from '@dxos/echo';\nimport { DXN } from '@dxos/keys';\n\nimport { printObject } from '../util';\n\nexport const handler = ({ typename }: { typename: Option.Option<string> }) =>\n Effect.gen(function* () {\n const { json } = yield* CommandConfig;\n const filter = Option.match(typename, {\n onNone: () => Filter.everything(),\n onSome: (typename) => Filter.type(DXN.make(typename)),\n });\n const objects = yield* Database.query(filter).run;\n\n if (json) {\n yield* Console.log(JSON.stringify(objects, null, 2));\n } else {\n // TODO(wittjosiah): Interactive table of results.\n const formatted = objects.map(printObject);\n yield* Console.log(printList(formatted));\n }\n });\n\nexport const query = Command.make(\n 'query',\n {\n spaceId: Common.spaceId.pipe(Options.optional),\n typename: Options.text('typename').pipe(Options.optional, Options.withDescription('The typename to query.')),\n },\n handler,\n).pipe(\n Command.withDescription('Query objects.'),\n Command.provide(({ spaceId }) => spaceLayer(spaceId, true)),\n);\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Command from '@effect/cli/Command';\nimport * as Options from '@effect/cli/Options';\nimport * as Console from 'effect/Console';\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\n\nimport { CommandConfig, Common, print, spaceLayer } from '@dxos/cli-util';\nimport { Database, Filter, Query } from '@dxos/echo';\nimport { DXN } from '@dxos/keys';\n\nimport { printObjectRemoved } from './util';\n\nexport const remove = Command.make(\n 'remove',\n {\n spaceId: Common.spaceId.pipe(Options.optional),\n typename: Options.text('typename').pipe(Options.withDescription('The typename to query.'), Options.optional),\n id: Options.text('id').pipe(Options.withDescription('The object ID.'), Options.optional),\n },\n ({ typename, id }) =>\n Effect.gen(function* () {\n const { json } = yield* CommandConfig;\n if (Option.isSome(id) && Option.isSome(typename)) {\n throw new Error('Cannot specify both typename and id');\n }\n let query: Query.Any;\n if (Option.isSome(id)) {\n query = Query.select(Filter.id(id.value));\n } else if (Option.isSome(typename)) {\n query = Query.select(Filter.type(DXN.make(typename.value)));\n } else {\n throw new Error('Must specify typename or id');\n }\n const objects = yield* Database.query(query).run;\n for (const object of objects) {\n yield* Database.remove(object);\n }\n\n if (json) {\n yield* Console.log(JSON.stringify({ removed: objects.length }, null, 2));\n } else {\n yield* Console.log(print(printObjectRemoved(objects.length)));\n }\n }),\n).pipe(\n Command.withDescription('Remove an object from a space.'),\n Command.provide(({ spaceId }) => spaceLayer(spaceId, true)),\n);\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Command from '@effect/cli/Command';\nimport * as Options from '@effect/cli/Options';\nimport * as Array from 'effect/Array';\nimport * as Console from 'effect/Console';\nimport * as Effect from 'effect/Effect';\nimport * as Function from 'effect/Function';\nimport * as Record from 'effect/Record';\n\nimport { CommandConfig, Common, printList, spaceLayer } from '@dxos/cli-util';\nimport { Database, Filter, Obj, Query } from '@dxos/echo';\n\nimport { printStats } from './util';\n\nexport const stats = Command.make(\n 'stats',\n {\n spaceId: Common.spaceId.pipe(Options.optional),\n },\n () =>\n Effect.gen(function* () {\n const { json } = yield* CommandConfig;\n const objects = yield* Database.query(Query.select(Filter.everything())).run;\n const stats = Function.pipe(\n objects,\n Array.groupBy((obj) => Obj.getTypename(obj) ?? '<empty>'),\n Record.map((objs) => objs.length),\n );\n\n if (json) {\n yield* Console.log(JSON.stringify(stats, null, 2));\n } else {\n const formatted = Record.toEntries(stats).map(([typename, count]) => printStats(typename, count));\n yield* Console.log(printList(formatted));\n }\n }),\n).pipe(\n Command.withDescription('Query objects.'),\n Command.provide(({ spaceId }) => spaceLayer(spaceId, true)),\n);\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Command from '@effect/cli/Command';\n\nimport { add } from './add';\nimport { query } from './query';\nimport { remove } from './remove';\nimport { stats } from './stats';\n\n// TODO(wittjosiah): Alias to `db`.\nexport const database: Command.Command<any, any, any, any> = Command.make('database').pipe(\n Command.withDescription('Database access.'),\n Command.withSubcommands([add, query, remove, stats]),\n);\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport { FormBuilder } from '@dxos/cli-util';\nimport { Entity } from '@dxos/echo';\n\n/**\n * Pretty prints a queue object with ANSI colors.\n */\nexport const printQueueObject = (obj: Entity.Any) => {\n const typename = Entity.getTypename(obj) ?? '<unknown>';\n\n return FormBuilder.make({ title: typename }).pipe(\n FormBuilder.set('id', obj.id),\n FormBuilder.set('typename', typename),\n FormBuilder.build,\n );\n};\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Command from '@effect/cli/Command';\nimport * as Options from '@effect/cli/Options';\nimport * as Console from 'effect/Console';\nimport * as Effect from 'effect/Effect';\n\nimport { CommandConfig, printList } from '@dxos/cli-util';\nimport { ClientService } from '@dxos/client';\nimport { Entity, Filter, Query, Scope } from '@dxos/echo';\nimport { EID } from '@dxos/keys';\n\nimport { printQueueObject } from './util';\n\nexport const query = Command.make(\n 'query',\n {\n dxn: Options.text('dxn').pipe(Options.withDescription('DXN of the queue.')),\n },\n Effect.fnUntraced(function* ({ dxn }) {\n const { json } = yield* CommandConfig;\n const client = yield* ClientService;\n const echoUri = EID.tryParse(dxn);\n if (!echoUri) {\n yield* Console.error(`Not a valid feed identifier: ${dxn}`);\n return;\n }\n const spaceId = EID.getSpaceId(echoUri);\n if (!spaceId) {\n yield* Console.error(`Could not determine space from: ${dxn}`);\n return;\n }\n const space = client.spaces.get(spaceId);\n if (!space) {\n yield* Console.error(`Space not found: ${spaceId}`);\n return;\n }\n const objects = yield* Effect.promise(() =>\n space.db.query(Query.select(Filter.everything()).from(Scope.feed(echoUri))).run(),\n );\n\n if (json) {\n yield* Console.log(JSON.stringify(objects, null, 2));\n } else {\n // TODO(wittjosiah): Interactive table of results.\n const formatted = (objects as Entity.Any[]).map(printQueueObject);\n yield* Console.log(printList(formatted));\n }\n }),\n).pipe(Command.withDescription('Query objects in a queue.'));\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Command from '@effect/cli/Command';\n\nimport { query } from './query';\n\nexport const queue = Command.make('queue').pipe(\n Command.withDescription('Manage queues.'),\n Command.withSubcommands([query]),\n);\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Command from '@effect/cli/Command';\nimport * as Options from '@effect/cli/Options';\nimport * as Console from 'effect/Console';\nimport * as Effect from 'effect/Effect';\n\nimport { CommandConfig, Common, getSpace, waitForSync } from '@dxos/cli-util';\nimport { ClientService } from '@dxos/client';\nimport { type Key } from '@dxos/echo';\n\nexport const handler = ({ spaceId }: { spaceId: Key.SpaceId }) =>\n Effect.gen(function* () {\n const { json } = yield* CommandConfig;\n const client = yield* ClientService;\n\n const space = yield* getSpace(spaceId);\n\n // Flush and sync before closing\n yield* Effect.tryPromise(() => space.db.flush());\n yield* waitForSync(space);\n\n yield* Effect.tryPromise(() => space.close());\n\n if (json) {\n yield* Console.log(JSON.stringify({ success: true, spaceId }, null, 2));\n } else {\n yield* Console.log(`Space ${spaceId} closed successfully.`);\n }\n });\n\nexport const close = Command.make(\n 'close',\n {\n spaceId: Common.spaceId.pipe(Options.withDescription('Space ID to close.')),\n },\n handler,\n).pipe(Command.withDescription('Close a space.'));\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Command from '@effect/cli/Command';\nimport * as Options from '@effect/cli/Options';\nimport * as Console from 'effect/Console';\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\n\nimport { CommandConfig } from '@dxos/cli-util';\nimport { print, waitForSync } from '@dxos/cli-util';\nimport { FormBuilder } from '@dxos/cli-util';\nimport { ClientService } from '@dxos/client';\nimport { Obj } from '@dxos/echo';\n\nexport const handler = Effect.fn(function* ({ name }: { name: Option.Option<string> }) {\n const { json } = yield* CommandConfig;\n const client = yield* ClientService;\n\n const space = yield* Effect.tryPromise(() => client.spaces.create());\n yield* Effect.tryPromise(() => space.waitUntilReady());\n\n if (Option.isSome(name)) {\n Obj.update(space.properties, (obj) => {\n obj.name = Option.getOrUndefined(name);\n });\n }\n\n // Output first, then flush and sync\n if (json) {\n yield* Console.log(\n JSON.stringify(\n {\n key: space.key.toHex(),\n ...(space.properties.name ? { name: space.properties.name } : {}),\n },\n null,\n 2,\n ),\n );\n } else {\n const builder = FormBuilder.make({ title: 'Created Space' }).pipe(\n FormBuilder.set('key', space.key.truncate()),\n FormBuilder.set('name', space.properties.name ?? '<none>'),\n );\n yield* Console.log(print(FormBuilder.build(builder)));\n }\n\n // Flush and sync before completion\n yield* Effect.tryPromise(() => space.db.flush());\n yield* waitForSync(space);\n});\n\nexport const create = Command.make(\n 'create',\n {\n name: Options.text('name').pipe(Options.withDescription('The name of the space.'), Options.optional),\n },\n handler,\n).pipe(Command.withDescription('Create a new space.'));\n","//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Command from '@effect/cli/Command';\nimport * as Options from '@effect/cli/Options';\nimport * as FileSystem from '@effect/platform/FileSystem';\nimport * as Path from '@effect/platform/Path';\nimport * as Console from 'effect/Console';\nimport * as Duration from 'effect/Duration';\nimport * as Effect from 'effect/Effect';\nimport * as Match from 'effect/Match';\nimport * as Option from 'effect/Option';\n\nimport {\n CommandConfig,\n Common,\n FormBuilder,\n formatBytes,\n getSpace,\n print,\n spaceIdWithDefault,\n withTimeout,\n} from '@dxos/cli-util';\nimport { type Key } from '@dxos/echo';\nimport { SpaceArchive } from '@dxos/protocols/proto/dxos/client/services';\n\nimport { SpaceNotReadyError } from '../../../errors';\n\nconst SPACE_READY_TIMEOUT = Duration.seconds(30);\n\n// TODO(wittjosiah): Upstream as SpaceArchive.Formats/SpaceArchive.Format, replacing the proto enum.\nexport const Formats = ['binary', 'json'] as const;\n\nexport type Format = (typeof Formats)[number];\n\nexport type ExportArgs = {\n spaceId: Option.Option<Key.SpaceId>;\n output: Option.Option<string>;\n format: Format;\n};\n\n/** Exports a space in the given archive format and writes it to disk. */\nexport const handler = Effect.fn(function* ({ spaceId, output, format }: ExportArgs) {\n const { json } = yield* CommandConfig;\n const fs = yield* FileSystem.FileSystem;\n const path = yield* Path.Path;\n\n const resolvedSpaceId = yield* spaceIdWithDefault(spaceId);\n const space = yield* getSpace(resolvedSpaceId);\n\n // Export reads the epoch root, and a closed space never becomes ready — so cap the wait.\n yield* Effect.tryPromise(() => space.waitUntilReady()).pipe(\n Effect.timeoutFail({\n duration: SPACE_READY_TIMEOUT,\n onTimeout: () => new SpaceNotReadyError({ context: { spaceId: resolvedSpaceId } }),\n }),\n );\n\n const archive = yield* Effect.tryPromise(() =>\n space.internal.export({\n format: Match.value(format).pipe(\n Match.when('binary', () => SpaceArchive.Format.BINARY),\n Match.when('json', () => SpaceArchive.Format.JSON),\n Match.exhaustive,\n ),\n }),\n );\n const outputPath = yield* resolveOutputPath(output, archive.filename);\n yield* fs.makeDirectory(path.dirname(outputPath), { recursive: true });\n yield* fs.writeFile(outputPath, archive.contents);\n\n if (json) {\n yield* Console.log(\n JSON.stringify({ spaceId: resolvedSpaceId, format, path: outputPath, size: archive.contents.length }, null, 2),\n );\n } else {\n const builder = FormBuilder.make({ title: 'Exported Space' }).pipe(\n FormBuilder.set('spaceId', resolvedSpaceId),\n FormBuilder.set('format', format),\n FormBuilder.set('path', outputPath),\n FormBuilder.set('size', formatBytes(archive.contents.length)),\n );\n yield* Console.log(print(FormBuilder.build(builder)));\n }\n});\n\nexport const exportSpace = Command.make(\n 'export',\n {\n spaceId: Common.spaceId.pipe(Options.optional),\n format: Options.choice('format', Formats).pipe(\n Options.withDescription(\n 'Archive format: binary is a direct dump of the underlying storage and includes document history; json contains current object state only.',\n ),\n Options.withDefault('binary' as const),\n ),\n output: Options.text('output').pipe(\n Options.withAlias('o'),\n Options.withDescription('Output file, or a directory to write the generated filename into.'),\n Options.optional,\n ),\n },\n (args) => handler(args).pipe(withTimeout),\n).pipe(Command.withDescription('Export a space archive to disk.'));\n\nconst resolveOutputPath = Effect.fn(function* (output: Option.Option<string>, filename: string) {\n const fs = yield* FileSystem.FileSystem;\n const path = yield* Path.Path;\n if (Option.isNone(output)) {\n return path.resolve(filename);\n }\n\n // An existing directory target keeps the generated space-scoped, timestamped filename.\n const info = yield* fs.stat(output.value).pipe(Effect.option);\n const isDirectory = Option.isSome(info) && info.value.type === 'Directory';\n return path.resolve(isDirectory ? path.join(output.value, filename) : output.value);\n});\n","//\n// Copyright 2026 DXOS.org\n//\n\nimport * as Args from '@effect/cli/Args';\nimport * as Command from '@effect/cli/Command';\nimport * as Options from '@effect/cli/Options';\nimport * as FileSystem from '@effect/platform/FileSystem';\nimport * as Path from '@effect/platform/Path';\nimport * as Console from 'effect/Console';\nimport * as Effect from 'effect/Effect';\n\nimport { CommandConfig, FormBuilder, formatBytes, print, withTimeout } from '@dxos/cli-util';\nimport { ClientService } from '@dxos/client';\nimport { type SpaceArchive } from '@dxos/protocols/proto/dxos/client/services';\n\nexport type ImportArgs = {\n file: string;\n tags: ReadonlyArray<string>;\n};\n\n/** Reads an archive of either format from disk and creates a new space from it. */\nexport const handler = Effect.fn(function* ({ file, tags }: ImportArgs) {\n const { json } = yield* CommandConfig;\n const client = yield* ClientService;\n const fs = yield* FileSystem.FileSystem;\n const path = yield* Path.Path;\n\n const contents = yield* fs.readFile(file);\n // Format is left unset so the host detects it from the extension, falling back to sniffing contents.\n const archive: SpaceArchive = { filename: path.basename(file), contents };\n const space = yield* Effect.tryPromise(() =>\n client.spaces.import(archive, tags.length > 0 ? { tags: [...tags] } : undefined),\n );\n\n if (json) {\n yield* Console.log(\n JSON.stringify(\n { spaceId: space.id, name: space.properties.name, tags: space.tags, size: contents.length },\n null,\n 2,\n ),\n );\n } else {\n const builder = FormBuilder.make({ title: 'Imported Space' }).pipe(\n FormBuilder.set('spaceId', space.id),\n FormBuilder.set('name', space.properties.name ?? '<none>'),\n FormBuilder.set('tags', space.tags.length > 0 ? space.tags.join(', ') : '<none>'),\n FormBuilder.set('size', formatBytes(contents.length)),\n );\n yield* Console.log(print(FormBuilder.build(builder)));\n }\n});\n\nexport const importSpace = Command.make(\n 'import',\n {\n file: Args.file({ name: 'file' }).pipe(Args.withDescription('Archive to import, in either binary or json format.')),\n tags: Options.text('tag').pipe(\n Options.withDescription('Immutable tag to set on the new space. Repeat to set several.'),\n Options.repeated,\n ),\n },\n (args) => handler(args).pipe(withTimeout),\n).pipe(Command.withDescription('Import a space archive as a new space.'));\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Command from '@effect/cli/Command';\nimport * as Options from '@effect/cli/Options';\nimport * as Console from 'effect/Console';\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\n\nimport { CommandConfig, Common, formatSpace, getSpace, print, printSpace, spaceIdWithDefault } from '@dxos/cli-util';\nimport { ClientService } from '@dxos/client';\nimport { type Key } from '@dxos/echo';\n\nexport const handler = Effect.fn(function* ({\n spaceId,\n wait,\n}: {\n spaceId: Option.Option<string>;\n wait: Option.Option<number>;\n}) {\n const { json } = yield* CommandConfig;\n const client = yield* ClientService;\n\n const resolvedSpaceId = yield* spaceIdWithDefault(spaceId as Option.Option<Key.SpaceId>);\n const space = yield* getSpace(resolvedSpaceId);\n\n const waitSeconds = Option.getOrElse(wait, () => 0);\n const formatted = yield* formatSpace(space, { waitSeconds });\n\n if (json) {\n yield* Console.log(JSON.stringify(formatted, null, 2));\n } else {\n yield* Console.log(print(printSpace(formatted)));\n }\n});\n\nexport const info = Command.make(\n 'info',\n {\n spaceId: Common.spaceId.pipe(Options.optional),\n wait: Options.integer('wait').pipe(\n Options.withDescription(\n 'Wait up to this many seconds for the space to reach SPACE_READY. Default 0 — read whatever state is available immediately.',\n ),\n Options.optional,\n ),\n },\n handler,\n).pipe(Command.withDescription('Show space info.'));\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Queue from 'effect/Queue';\n\nimport { type AuthenticatingInvitationObservable, Invitation } from '@dxos/client/invitations';\nimport { EffectEx } from '@dxos/effect';\nimport { invariant } from '@dxos/invariant';\nimport { AlreadyJoinedError } from '@dxos/protocols';\n\ntype AcceptInvitationProps = {\n observable: AuthenticatingInvitationObservable;\n callbacks?: {\n onConnecting?: (invitation: Invitation) => Effect.Effect<void>;\n onReadyForAuth?: (invitation: Invitation) => Effect.Effect<string | void, never, never>;\n onSuccess?: (invitation: Invitation) => Effect.Effect<void>;\n };\n};\n\n/**\n * Accept an invitation and handle authentication flow.\n * Ported from cli-base to Effect-based approach.\n */\nexport const acceptInvitation = ({ observable, callbacks }: AcceptInvitationProps): Effect.Effect<Invitation, Error> =>\n Effect.gen(function* () {\n const doneQueue = yield* Queue.unbounded<Invitation>();\n\n const runCallback = (effect: Effect.Effect<void> | undefined) => {\n if (effect) {\n EffectEx.runAndForwardErrors(effect).catch(() => {\n // Ignore callback errors\n });\n }\n };\n\n const subscription = observable.subscribe(\n (invitation) => {\n switch (invitation.state) {\n case Invitation.State.CONNECTING: {\n runCallback(callbacks?.onConnecting?.(invitation));\n break;\n }\n\n case Invitation.State.READY_FOR_AUTHENTICATION: {\n if (invitation.authMethod === Invitation.AuthMethod.SHARED_SECRET) {\n const callbackEffect = callbacks?.onReadyForAuth?.(invitation) ?? Effect.succeed(undefined);\n Effect.gen(function* () {\n const callbackResult = yield* callbackEffect;\n const code = invitation.authCode ?? callbackResult;\n invariant(code, 'No code provided');\n yield* Effect.tryPromise(() => observable.authenticate(code));\n })\n .pipe(EffectEx.runAndForwardErrors)\n .catch(() => {\n // Error handling\n });\n }\n break;\n }\n\n case Invitation.State.SUCCESS: {\n runCallback(callbacks?.onSuccess?.(invitation));\n EffectEx.runAndForwardErrors(Queue.offer(doneQueue, invitation)).catch(() => {});\n break;\n }\n }\n },\n (err) => {\n if (err instanceof AlreadyJoinedError) {\n EffectEx.runAndForwardErrors(Queue.offer(doneQueue, observable.get())).catch(() => {});\n return;\n }\n throw err;\n },\n );\n\n const invitation = yield* Queue.take(doneQueue);\n subscription.unsubscribe();\n return invitation;\n });\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Args from '@effect/cli/Args';\nimport * as Command from '@effect/cli/Command';\nimport * as Options from '@effect/cli/Options';\nimport * as Prompt from '@effect/cli/Prompt';\nimport * as Console from 'effect/Console';\nimport * as Duration from 'effect/Duration';\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\n\nimport { CommandConfig } from '@dxos/cli-util';\nimport { print, waitForSync } from '@dxos/cli-util';\nimport { FormBuilder } from '@dxos/cli-util';\nimport { ClientService } from '@dxos/client';\n\nimport { acceptInvitation } from './util';\n\nexport const handler = Effect.fn(function* ({\n invitationCode,\n authCode,\n}: {\n invitationCode: string;\n authCode: Option.Option<string>;\n}) {\n const { json } = yield* CommandConfig;\n const client = yield* ClientService;\n\n let encoded = invitationCode;\n if (encoded.startsWith('http') || encoded.startsWith('socket')) {\n const searchProps = new URL(encoded).searchParams;\n encoded = searchProps.get('spaceInvitationCode') ?? encoded;\n }\n\n const invitation = yield* acceptInvitation({\n observable: client.spaces.join(encoded),\n callbacks: {\n onReadyForAuth: (invitation) => {\n if (Option.isSome(authCode)) {\n return Effect.succeed(Option.getOrUndefined(authCode) ?? undefined) as Effect.Effect<\n string | void,\n never,\n never\n >;\n }\n return Prompt.text({ message: 'Enter the authentication code' })\n .pipe(Prompt.run)\n .pipe(Effect.mapError(() => undefined as never))\n .pipe(Effect.catchAll(() => Effect.succeed(undefined))) as Effect.Effect<string | void, never, never>;\n },\n },\n });\n\n // Wait for space to be available with retry logic\n const spaceKey = invitation.spaceKey;\n if (!spaceKey) {\n if (json) {\n yield* Console.log(JSON.stringify({ error: 'No space key in invitation' }, null, 2));\n } else {\n yield* Console.log('No space key in invitation.');\n }\n return;\n }\n\n let space = client.spaces.get(spaceKey);\n if (!space) {\n // Retry up to 5 times with increasing delays\n const maxRetries = 5;\n const retryDelays = [0.5, 1, 1.5, 2, 2.5].map((s) => Duration.seconds(s));\n for (let i = 0; i < maxRetries; i++) {\n yield* Effect.sleep(retryDelays[i]);\n space = client.spaces.get(spaceKey);\n if (space) {\n break;\n }\n }\n }\n\n if (!space) {\n if (json) {\n yield* Console.log(JSON.stringify({ error: 'Space not found after joining' }, null, 2));\n } else {\n yield* Console.log('Space not found after joining.');\n }\n return;\n }\n\n // Flush and sync after joining\n yield* Effect.tryPromise(() => space.db.flush());\n yield* waitForSync(space);\n\n if (json) {\n yield* Console.log(\n JSON.stringify(\n {\n spaceId: space.id,\n state: space.state.get(),\n },\n null,\n 2,\n ),\n );\n } else {\n const builder = FormBuilder.make({ title: 'Joined Space' }).pipe(\n FormBuilder.set('spaceId', space.id),\n FormBuilder.set('key', space.key.truncate()),\n FormBuilder.set('name', space.properties.name ?? '<none>'),\n );\n yield* Console.log(print(FormBuilder.build(builder)));\n }\n});\n\nexport const join = Command.make(\n 'join',\n {\n invitationCode: Args.text({ name: 'invitationCode' }).pipe(Args.withDescription('The invitation code.')),\n authCode: Options.text('authCode').pipe(Options.withDescription('The authentication code.'), Options.optional),\n },\n handler,\n).pipe(Command.withDescription('Join a space via invitation.'));\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Command from '@effect/cli/Command';\nimport * as Options from '@effect/cli/Options';\nimport * as Console from 'effect/Console';\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\n\nimport { CommandConfig, formatSpace, printSpace } from '@dxos/cli-util';\nimport { printList } from '@dxos/cli-util';\nimport { ClientService } from '@dxos/client';\n\n// TODO(burdon): Move handler inline and test separate functions.\nexport const handler = Effect.fn(function* ({ wait }: { wait: Option.Option<number> }) {\n const { json } = yield* CommandConfig;\n const client = yield* ClientService;\n const spaces = client.spaces.get();\n const waitSeconds = Option.getOrElse(wait, () => 0);\n const formattedSpaces = yield* Effect.all(spaces.map((space) => formatSpace(space, { waitSeconds })));\n\n if (json) {\n yield* Console.log(JSON.stringify(formattedSpaces, null, 2));\n } else {\n const formatted = formattedSpaces.map(printSpace);\n yield* Console.log(printList(formatted));\n }\n});\n\nexport const list = Command.make(\n 'list',\n {\n wait: Options.integer('wait').pipe(\n Options.withDescription(\n 'Wait up to this many seconds for each space to reach SPACE_READY before reading. Default 0 — print whatever state is available immediately so a stuck space cannot hang the command.',\n ),\n Options.optional,\n ),\n },\n handler,\n).pipe(Command.withDescription('List all spaces available on this device.'));\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport { FormBuilder } from '@dxos/cli-util';\nimport { SpaceMember } from '@dxos/client/echo';\n\nconst maybeTruncateKey = (key: { toHex(): string; truncate(): string }, truncate = false) =>\n truncate ? key.truncate() : key.toHex();\n\nexport const mapMembers = (members: SpaceMember[], truncateKeys = false) => {\n return members.map((member) => ({\n key: maybeTruncateKey(member.identity.identityKey, truncateKeys),\n name: member.identity.profile?.displayName,\n presence: member.presence === SpaceMember.PresenceState.ONLINE ? 'Online' : 'Offline',\n }));\n};\n\nexport const printMember = (member: SpaceMember) =>\n FormBuilder.make({ title: member.identity.profile?.displayName ?? member.identity.identityKey.truncate() }).pipe(\n FormBuilder.set('identityKey', member.identity.identityKey.truncate()),\n FormBuilder.set('displayName', member.identity.profile?.displayName ?? '<none>'),\n FormBuilder.set('presence', member.presence === SpaceMember.PresenceState.ONLINE ? 'Online' : 'Offline'),\n FormBuilder.build,\n );\n\nexport const printMembers = (members: SpaceMember[]) => {\n return members.map(printMember);\n};\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Command from '@effect/cli/Command';\nimport * as Options from '@effect/cli/Options';\nimport * as Console from 'effect/Console';\nimport * as Effect from 'effect/Effect';\nimport type * as Option from 'effect/Option';\n\nimport { CommandConfig, Common, getSpace, printList, spaceIdWithDefault } from '@dxos/cli-util';\nimport { ClientService } from '@dxos/client';\nimport { type Key } from '@dxos/echo';\n\nimport { mapMembers, printMembers } from './util';\n\nexport const handler = Effect.fn(function* ({ spaceId }: { spaceId: Option.Option<string> }) {\n const { json } = yield* CommandConfig;\n const client = yield* ClientService;\n\n const resolvedSpaceId = yield* spaceIdWithDefault(spaceId as Option.Option<Key.SpaceId>);\n const space = yield* getSpace(resolvedSpaceId);\n\n const members = space.members.get();\n\n if (json) {\n yield* Console.log(JSON.stringify(mapMembers(members), null, 2));\n } else {\n const formatted = printMembers(members);\n yield* Console.log(printList(formatted));\n }\n});\n\nexport const members = Command.make(\n 'members',\n {\n spaceId: Common.spaceId.pipe(Options.optional),\n },\n handler,\n).pipe(Command.withDescription('List space members.'));\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Command from '@effect/cli/Command';\nimport * as Options from '@effect/cli/Options';\nimport * as Console from 'effect/Console';\nimport * as Effect from 'effect/Effect';\n\nimport { CommandConfig, Common, getSpace, waitForSync } from '@dxos/cli-util';\nimport { ClientService } from '@dxos/client';\nimport { type Key } from '@dxos/echo';\n\nexport const handler = ({ spaceId }: { spaceId: Key.SpaceId }) =>\n Effect.gen(function* () {\n const { json } = yield* CommandConfig;\n const client = yield* ClientService;\n\n const space = yield* getSpace(spaceId);\n yield* Effect.tryPromise(() => space.open());\n\n // Flush and sync after opening\n yield* Effect.tryPromise(() => space.db.flush());\n yield* waitForSync(space);\n\n if (json) {\n yield* Console.log(JSON.stringify({ success: true, spaceId }, null, 2));\n } else {\n yield* Console.log(`Space ${spaceId} opened successfully.`);\n }\n });\n\nexport const open = Command.make(\n 'open',\n {\n spaceId: Common.spaceId.pipe(Options.withDescription('Space ID to open.')),\n },\n handler,\n).pipe(Command.withDescription('Open a space.'));\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport { FormBuilder } from '@dxos/cli-util';\n\ntype SchemaEntry = {\n id?: string;\n typename: string;\n version: string;\n};\n\nexport const mapSchemas = (schemas: SchemaEntry[]) => {\n return schemas.map((schema) => ({\n id: schema.id,\n typename: schema.typename,\n version: schema.version,\n }));\n};\n\nexport const printSchema = (schema: SchemaEntry) =>\n FormBuilder.make({ title: schema.typename }).pipe(\n FormBuilder.set('id', schema.id ?? '<none>'),\n FormBuilder.set('typename', schema.typename),\n FormBuilder.set('version', schema.version),\n FormBuilder.build,\n );\n\nexport const printSchemas = (schemas: SchemaEntry[]) => {\n return schemas.map(printSchema);\n};\n\nexport const createTypenameFilter = (typenameFilter?: string) => {\n if (!typenameFilter) {\n return () => true;\n }\n\n return (schema: SchemaEntry) => schema.typename.toLowerCase().includes(typenameFilter.toLowerCase());\n};\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Command from '@effect/cli/Command';\nimport * as Options from '@effect/cli/Options';\nimport * as Console from 'effect/Console';\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\n\nimport { CommandConfig, Common, getSpace, printList, spaceIdWithDefault } from '@dxos/cli-util';\nimport { type Key, Type } from '@dxos/echo';\nimport { getTypeAnnotation } from '@dxos/echo/Annotation';\n\nimport { createTypenameFilter, mapSchemas, printSchemas } from './util';\n\nexport const handler = Effect.fn(function* ({\n spaceId,\n typename,\n}: {\n spaceId: Option.Option<string>;\n typename: Option.Option<string>;\n}) {\n const { json } = yield* CommandConfig;\n\n const resolvedSpaceId = yield* spaceIdWithDefault(spaceId as Option.Option<Key.SpaceId>);\n const space = yield* getSpace(resolvedSpaceId);\n\n const types = space.db.graph.registry.list().filter(Type.isType);\n\n const schemas = types\n .map((schema) => {\n const schemaAnnotation = getTypeAnnotation(Type.getSchema(schema));\n return {\n id: Type.getURI(schema).toString(),\n typename: schemaAnnotation?.typename ?? Type.getTypename(schema) ?? '',\n version: schemaAnnotation?.version ?? Type.getVersion(schema) ?? '',\n };\n })\n .filter(createTypenameFilter(Option.getOrUndefined(typename)));\n\n if (json) {\n yield* Console.log(JSON.stringify(mapSchemas(schemas), null, 2));\n } else {\n const formatted = printSchemas(schemas);\n yield* Console.log(printList(formatted));\n }\n});\n\nexport const list = Command.make(\n 'list',\n {\n spaceId: Common.spaceId.pipe(Options.optional),\n typename: Options.text('typename').pipe(Options.withDescription('Filter schemas by typename.'), Options.optional),\n },\n handler,\n).pipe(Command.withDescription('List space schemas.'));\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Command from '@effect/cli/Command';\n\nimport { list } from './list';\n\nexport const schema = Command.make('schema').pipe(\n Command.withDescription('Manage space schemas.'),\n Command.withSubcommands([list]),\n);\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Command from '@effect/cli/Command';\nimport * as Options from '@effect/cli/Options';\nimport * as Console from 'effect/Console';\nimport * as Effect from 'effect/Effect';\nimport type * as Option from 'effect/Option';\n\nimport {\n CommandConfig,\n Common,\n copyToClipboard,\n getSpace,\n openBrowser,\n print,\n spaceIdWithDefault,\n} from '@dxos/cli-util';\nimport { FormBuilder } from '@dxos/cli-util';\nimport { ClientService } from '@dxos/client';\nimport { Invitation, InvitationEncoder, hostInvitation } from '@dxos/client/invitations';\nimport { type Key } from '@dxos/echo';\n\nexport const handler = Effect.fn(function* ({\n spaceId,\n multiple,\n open,\n host,\n}: {\n spaceId: Option.Option<string>;\n multiple: boolean;\n open: boolean;\n host: string;\n}) {\n const { json } = yield* CommandConfig;\n const client = yield* ClientService;\n\n const resolvedSpaceId = yield* spaceIdWithDefault(spaceId as Option.Option<Key.SpaceId>);\n const space = yield* getSpace(resolvedSpaceId);\n\n // Always use persistent and delegated (auth required) due to P2P limitations\n const observable = space.share({\n authMethod: Invitation.AuthMethod.SHARED_SECRET,\n persistent: true,\n multiUse: multiple,\n });\n\n const invitation = yield* hostInvitation({\n observable,\n callbacks: {\n onConnecting: (invitation) =>\n Effect.gen(function* () {\n const invitationCode = InvitationEncoder.encode(invitation);\n const authCode = invitation.authCode!;\n\n // Copy auth code to clipboard\n yield* copyToClipboard(authCode).pipe(Effect.catchAll(() => Effect.void));\n\n if (!json) {\n yield* Console.log(`\\nSecret: ${authCode} (copied to clipboard)\\n`);\n }\n\n if (open) {\n const url = new URL(host);\n url.searchParams.append('spaceInvitationCode', invitationCode);\n yield* openBrowser(url.toString()).pipe(Effect.catchAll(() => Effect.void));\n } else if (!json) {\n yield* Console.log(`\\nInvitation: ${invitationCode}\\n`);\n }\n }),\n },\n waitForSuccess: true,\n });\n\n if (json) {\n yield* Console.log(\n JSON.stringify(\n {\n invitationCode: InvitationEncoder.encode(invitation),\n authCode: invitation.authCode,\n state: Invitation.State[invitation.state],\n },\n null,\n 2,\n ),\n );\n } else {\n const builder = FormBuilder.make({ title: 'Space Invitation' }).pipe(\n FormBuilder.set('invitationCode', InvitationEncoder.encode(invitation)),\n FormBuilder.set('authCode', invitation.authCode ?? '<none>'),\n FormBuilder.set('state', Invitation.State[invitation.state]),\n );\n yield* Console.log(print(FormBuilder.build(builder)));\n }\n});\n\nexport const share = Command.make(\n 'share',\n {\n spaceId: Common.spaceId.pipe(Options.optional),\n multiple: Options.boolean('multiple', { ifPresent: true }).pipe(\n Options.withDescription('Create a multi-use invitation.'),\n ),\n open: Options.boolean('open', { ifPresent: true }).pipe(Options.withDescription('Open browser with invitation.')),\n host: Options.text('host').pipe(\n Options.withDescription('Application Host URL.'),\n Options.withDefault('https://composer.space'),\n ),\n },\n handler,\n).pipe(Command.withDescription('Create space invitation.'));\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Command from '@effect/cli/Command';\nimport * as Options from '@effect/cli/Options';\nimport * as Duration from 'effect/Duration';\nimport * as Effect from 'effect/Effect';\nimport * as Schedule from 'effect/Schedule';\n\nimport { Common, getSpace, spaceIdWithDefault, waitForSync, withTimeout } from '@dxos/cli-util';\n\nexport const sync = Command.make(\n 'sync',\n {\n spaceId: Common.spaceId.pipe(Options.optional),\n spaceTimeout: Options.integer('spaceTimeout').pipe(\n Options.withDescription('The timeout to wait for the space to be available in milliseconds.'),\n Options.withDefault(5000),\n ),\n },\n ({ spaceId, spaceTimeout }) =>\n Effect.gen(function* () {\n // If space is not available locally, wait for it to sync.\n const resolvedSpaceId = yield* spaceIdWithDefault(spaceId);\n const space = yield* getSpace(resolvedSpaceId).pipe(\n Effect.retry(Schedule.fixed('100 millis')),\n Effect.timeout(Duration.millis(spaceTimeout)),\n );\n\n yield* waitForSync(space);\n }).pipe(withTimeout),\n).pipe(Command.withDescription('Wait for a space to be fully synchronized with EDGE.'));\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Command from '@effect/cli/Command';\n\nimport { close } from './close';\nimport { create } from './create';\nimport { exportSpace } from './export';\nimport { importSpace } from './import';\nimport { info } from './info';\nimport { join } from './join';\nimport { list } from './list';\nimport { members } from './members';\nimport { open } from './open';\nimport { schema } from './schema';\nimport { share } from './share';\nimport { sync } from './sync';\n\nexport const space = Command.make('space').pipe(\n Command.withDescription('Manage ECHO spaces.'),\n Command.withSubcommands([\n close,\n create,\n exportSpace,\n importSpace,\n info,\n join,\n list,\n members,\n open,\n schema,\n share,\n sync,\n ]),\n);\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport { ActivationEvents, Capability, Plugin } from '@dxos/app-framework';\nimport { AppPlugin } from '@dxos/app-toolkit';\nimport { Tag } from '@dxos/echo';\nimport { ClientEvents } from '@dxos/plugin-client';\nimport { DataTypes } from '@dxos/schema';\nimport {\n AnchoredTo,\n Employer,\n Event,\n HasConnection,\n HasRelationship,\n HasSubject,\n Organization,\n Person,\n Pipeline,\n Task,\n} from '@dxos/types';\n\nimport { CreateObject, IdentityCreated, OperationHandler, UndoMappings } from '#capabilities';\nimport { meta } from '#meta';\nimport { SpaceEvents, type SpacePluginOptions } from '#types';\n\nimport { database, queue, space } from './commands';\n\nexport const SpacePlugin = Plugin.define<SpacePluginOptions>(meta).pipe(\n // TODO(wittjosiah): Could some of these commands make use of operations?\n AppPlugin.addCommandModule({\n commands: [database, queue, space],\n }),\n AppPlugin.addCreateObjectModule({ activate: CreateObject }),\n AppPlugin.addOperationHandlerModule({ activate: OperationHandler }),\n AppPlugin.addSchemaModule({\n schema: [\n ...DataTypes,\n AnchoredTo.AnchoredTo,\n Employer.Employer,\n Event.Event,\n HasConnection.HasConnection,\n HasRelationship.HasRelationship,\n HasSubject.HasSubject,\n Organization.Organization,\n Person.Person,\n Pipeline.Pipeline,\n Tag.Tag,\n Task.Task,\n ],\n }),\n Plugin.addModule(\n ({\n shareableLinkOrigin = 'http://localhost:5173',\n invitationPath = '/',\n invitationProp = 'spaceInvitationCode',\n }) => {\n const createInvitationUrl = (invitationCode: string) => {\n const baseUrl = new URL(invitationPath || '/', shareableLinkOrigin);\n baseUrl.searchParams.set(invitationProp, invitationCode);\n return baseUrl.toString();\n };\n\n return {\n id: Capability.getModuleTag(UndoMappings),\n activatesOn: ActivationEvents.SetupProcessManager,\n activate: () => UndoMappings({ createInvitationUrl, observability: false }),\n };\n },\n ),\n Plugin.addModule({\n activatesOn: ClientEvents.IdentityCreated,\n firesAfterActivation: [SpaceEvents.PersonalSpaceReady],\n activate: IdentityCreated,\n }),\n Plugin.make,\n);\n\nexport default SpacePlugin;\n"],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { t as operation_handler_default } from "./chunk-operation-handler.mjs";
2
+ import { Plugin } from "@dxos/app-framework";
3
+ import { meta } from "#meta";
4
+ import { AppPlugin } from "@dxos/app-toolkit";
5
+ import { Tag } from "@dxos/echo";
6
+ import { DataTypes } from "@dxos/schema";
7
+ import { AnchoredTo, Employer, Event, HasConnection, HasRelationship, HasSubject, Organization, Person, Pipeline, Task } from "@dxos/types";
8
+ //#region src/SpacePlugin.workerd.ts
9
+ var SpacePlugin = Plugin.define(meta).pipe(AppPlugin.addOperationHandlerModule({ activate: operation_handler_default }), AppPlugin.addSchemaModule({ schema: [
10
+ ...DataTypes,
11
+ AnchoredTo.AnchoredTo,
12
+ Employer.Employer,
13
+ Event.Event,
14
+ HasConnection.HasConnection,
15
+ HasRelationship.HasRelationship,
16
+ HasSubject.HasSubject,
17
+ Organization.Organization,
18
+ Person.Person,
19
+ Pipeline.Pipeline,
20
+ Tag.Tag,
21
+ Task.Task
22
+ ] }), Plugin.make);
23
+ //#endregion
24
+ export { SpacePlugin, SpacePlugin as default };
25
+
26
+ //# sourceMappingURL=SpacePlugin.workerd.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpacePlugin.workerd.mjs","names":[],"sources":["../../src/SpacePlugin.workerd.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Plugin } from '@dxos/app-framework';\nimport { AppPlugin } from '@dxos/app-toolkit';\nimport { Tag } from '@dxos/echo';\nimport { DataTypes } from '@dxos/schema';\nimport {\n AnchoredTo,\n Employer,\n Event,\n HasConnection,\n HasRelationship,\n HasSubject,\n Organization,\n Person,\n Pipeline,\n Task,\n} from '@dxos/types';\n\nimport { meta } from '#meta';\n\n// Direct module import: the `#capabilities` barrel pulls the React surface into worker bundles.\nimport OperationHandler from './capabilities/operation-handler';\n\nexport const SpacePlugin = Plugin.define(meta).pipe(\n AppPlugin.addOperationHandlerModule({ activate: OperationHandler }),\n AppPlugin.addSchemaModule({\n schema: [\n ...DataTypes,\n AnchoredTo.AnchoredTo,\n Employer.Employer,\n Event.Event,\n HasConnection.HasConnection,\n HasRelationship.HasRelationship,\n HasSubject.HasSubject,\n Organization.Organization,\n Person.Person,\n Pipeline.Pipeline,\n Tag.Tag,\n Task.Task,\n ],\n }),\n Plugin.make,\n);\n\nexport default SpacePlugin;\n"],"mappings":";;;;;;;;AA0BA,IAAa,cAAc,OAAO,OAAO,IAAI,CAAC,CAAC,KAC7C,UAAU,0BAA0B,EAAE,UAAU,0BAAiB,CAAC,GAClE,UAAU,gBAAgB,EACxB,QAAQ;CACN,GAAG;CACH,WAAW;CACX,SAAS;CACT,MAAM;CACN,cAAc;CACd,gBAAgB;CAChB,WAAW;CACX,aAAa;CACb,OAAO;CACP,SAAS;CACT,IAAI;CACJ,KAAK;AACP,EACF,CAAC,GACD,OAAO,IACT"}
@@ -0,0 +1,10 @@
1
+ import { Capability } from "@dxos/app-framework";
2
+ //#region src/capabilities/node.ts
3
+ var CreateObject = Capability.lazy("CreateObject", () => import("../chunk-create-object.mjs"));
4
+ var IdentityCreated = Capability.lazy("IdentityCreated", () => import("../chunk-identity-created.mjs"));
5
+ var OperationHandler = Capability.lazy("OperationHandler", () => import("../chunk-operation-handler.mjs").then((n) => n.n));
6
+ var UndoMappings = Capability.lazy("UndoMappings", () => import("../chunk-undo-mappings.mjs"));
7
+ //#endregion
8
+ export { CreateObject, IdentityCreated, OperationHandler, UndoMappings };
9
+
10
+ //# sourceMappingURL=node.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.mjs","names":[],"sources":["../../../src/capabilities/node.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\nimport { OperationHandlerSet } from '@dxos/compute';\n\nexport const CreateObject = Capability.lazy('CreateObject', () => import('./create-object'));\nexport const IdentityCreated = Capability.lazy('IdentityCreated', () => import('./identity-created'));\nexport const OperationHandler = Capability.lazy<OperationHandlerSet.OperationHandlerSet>(\n 'OperationHandler',\n () => import('./operation-handler'),\n);\nexport const UndoMappings = Capability.lazy('UndoMappings', () => import('./undo-mappings'));\n"],"mappings":";;AAOA,IAAa,eAAe,WAAW,KAAK,sBAAsB,OAAO,6BAAkB;AAC3F,IAAa,kBAAkB,WAAW,KAAK,yBAAyB,OAAO,gCAAqB;AACpG,IAAa,mBAAmB,WAAW,KACzC,0BACM,OAAO,iCACf,CAAA,MAAA,MAAA,EAAA,CAAA,CAAA;AACA,IAAa,eAAe,WAAW,KAAK,sBAAsB,OAAO,6BAAkB"}
@@ -0,0 +1,24 @@
1
+ import { r as makeCreateObjectEntryForDatabaseType } from "./chunk-util.mjs";
2
+ import { Capability } from "@dxos/app-framework";
3
+ //#region src/capabilities/app-graph-builder/index.ts
4
+ var AppGraphBuilder = Capability.lazy("AppGraphBuilder", () => import("./chunk-app-graph-builder.mjs"));
5
+ //#endregion
6
+ //#region src/capabilities/navigation-handler/index.ts
7
+ var NavigationHandler = Capability.lazy("NavigationHandler", () => import("./chunk-navigation-handler.mjs"));
8
+ //#endregion
9
+ //#region src/capabilities/index.ts
10
+ var CreateObject = Capability.lazy("CreateObject", () => import("./chunk-create-object.mjs"));
11
+ var IdentityCreated = Capability.lazy("IdentityCreated", () => import("./chunk-identity-created.mjs"));
12
+ var NavigationTargetResolver = Capability.lazy("NavigationTargetResolver", () => import("./chunk-navigation-target-resolver.mjs"));
13
+ var OperationHandler = Capability.lazy("OperationHandler", () => import("./chunk-operation-handler.mjs").then((n) => n.n));
14
+ var ReactRoot = Capability.lazy("ReactRoot", () => import("./chunk-react-root.mjs"));
15
+ var ReactSurface = Capability.lazy("ReactSurface", () => import("./chunk-react-surface.mjs"));
16
+ var Repair = Capability.lazy("Repair", () => import("./chunk-repair.mjs"));
17
+ var SpaceSettings = Capability.lazy("SpaceSettings", () => import("./chunk-settings.mjs"));
18
+ var SpacesReady = Capability.lazy("SpacesReady", () => import("./chunk-spaces-ready.mjs"));
19
+ var SpaceState = Capability.lazy("SpaceState", () => import("./chunk-state.mjs"));
20
+ var UndoMappings = Capability.lazy("UndoMappings", () => import("./chunk-undo-mappings.mjs"));
21
+ //#endregion
22
+ export { AppGraphBuilder, CreateObject, IdentityCreated, NavigationHandler, NavigationTargetResolver, OperationHandler, ReactRoot, ReactSurface, Repair, SpaceSettings, SpaceState, SpacesReady, UndoMappings, makeCreateObjectEntryForDatabaseType };
23
+
24
+ //# sourceMappingURL=capabilities.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.mjs","names":[],"sources":["../../src/capabilities/app-graph-builder/index.ts","../../src/capabilities/navigation-handler/index.ts","../../src/capabilities/index.ts"],"sourcesContent":["//\n// Copyright 2026 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\n\nexport const AppGraphBuilder = Capability.lazy('AppGraphBuilder', () => import('./app-graph-builder'));\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\n\nexport type { NavigationHandlerOptions } from './navigation-handler';\n\nexport const NavigationHandler = Capability.lazy('NavigationHandler', () => import('./navigation-handler'));\n","//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\nimport { OperationHandlerSet } from '@dxos/compute';\n\nexport * from './app-graph-builder';\nexport { makeCreateObjectEntryForDatabaseType } from '../util';\n\nexport const CreateObject = Capability.lazy('CreateObject', () => import('./create-object'));\nexport const IdentityCreated = Capability.lazy('IdentityCreated', () => import('./identity-created'));\nexport { NavigationHandler } from './navigation-handler';\nexport type { NavigationHandlerOptions } from './navigation-handler';\nexport const NavigationTargetResolver = Capability.lazy(\n 'NavigationTargetResolver',\n () => import('./navigation-target-resolver'),\n);\nexport const OperationHandler = Capability.lazy<OperationHandlerSet.OperationHandlerSet>(\n 'OperationHandler',\n () => import('./operation-handler'),\n);\nexport const ReactRoot = Capability.lazy('ReactRoot', () => import('./react-root'));\nexport const ReactSurface = Capability.lazy('ReactSurface', () => import('./react-surface'));\nexport const Repair = Capability.lazy('Repair', () => import('./repair'));\nexport const SpaceSettings = Capability.lazy('SpaceSettings', () => import('./settings'));\nexport const SpacesReady = Capability.lazy('SpacesReady', () => import('./spaces-ready'));\nexport const SpaceState = Capability.lazy('SpaceState', () => import('./state'));\nexport const UndoMappings = Capability.lazy('UndoMappings', () => import('./undo-mappings'));\n"],"mappings":";;;AAMA,IAAa,kBAAkB,WAAW,KAAK,yBAAyB,OAAO,gCAAsB;;;ACErG,IAAa,oBAAoB,WAAW,KAAK,2BAA2B,OAAO,iCAAuB;;;ACE1G,IAAa,eAAe,WAAW,KAAK,sBAAsB,OAAO,4BAAkB;AAC3F,IAAa,kBAAkB,WAAW,KAAK,yBAAyB,OAAO,+BAAqB;AAGpG,IAAa,2BAA2B,WAAW,KACjD,kCACM,OAAO,yCACf;AACA,IAAa,mBAAmB,WAAW,KACzC,0BACM,OAAO,gCACf,CAAA,MAAA,MAAA,EAAA,CAAA,CAAA;AACA,IAAa,YAAY,WAAW,KAAK,mBAAmB,OAAO,yBAAe;AAClF,IAAa,eAAe,WAAW,KAAK,sBAAsB,OAAO,4BAAkB;AAC3F,IAAa,SAAS,WAAW,KAAK,gBAAgB,OAAO,qBAAW;AACxE,IAAa,gBAAgB,WAAW,KAAK,uBAAuB,OAAO,uBAAa;AACxF,IAAa,cAAc,WAAW,KAAK,qBAAqB,OAAO,2BAAiB;AACxF,IAAa,aAAa,WAAW,KAAK,oBAAoB,OAAO,oBAAU;AAC/E,IAAa,eAAe,WAAW,KAAK,sBAAsB,OAAO,4BAAkB"}
@@ -0,0 +1,90 @@
1
+ import { meta } from "#meta";
2
+ import { GraphPath, LayoutOperation } from "@dxos/app-toolkit";
3
+ import { Obj } from "@dxos/echo";
4
+ import { useCallback, useMemo } from "react";
5
+ import { useOperationInvoker } from "@dxos/app-framework/ui";
6
+ import { Card, Icon, ScrollArea, toLocalizedString, useTranslation } from "@dxos/react-ui";
7
+ import { getStyles } from "@dxos/ui-theme";
8
+ import { jsx, jsxs } from "react/jsx-runtime";
9
+ import { SearchPanel, useSearchListResults } from "@dxos/react-ui-search";
10
+ import { Mosaic } from "@dxos/react-ui-mosaic";
11
+ //#region src/containers/CollectionArticle/CollectionArticle.tsx
12
+ /**
13
+ * Article view for collections.
14
+ */
15
+ var CollectionArticle = ({ subject, attendableId }) => {
16
+ const { t } = useTranslation(meta.profile.key);
17
+ const { items, handleSearch } = useCollectionItems(subject, attendableId);
18
+ return /* @__PURE__ */ jsx(SearchPanel, {
19
+ onSearch: handleSearch,
20
+ children: /* @__PURE__ */ jsx(Mosaic.Container, {
21
+ asChild: true,
22
+ children: /* @__PURE__ */ jsx(ScrollArea.Root, {
23
+ centered: true,
24
+ padding: true,
25
+ thin: true,
26
+ children: /* @__PURE__ */ jsx(ScrollArea.Viewport, { children: /* @__PURE__ */ jsx(Mosaic.Stack, {
27
+ classNames: "gap-1",
28
+ draggable: false,
29
+ items,
30
+ getId: (item) => item.id,
31
+ Tile: ObjectTile
32
+ }) })
33
+ })
34
+ })
35
+ });
36
+ };
37
+ var ObjectTile = ({ data: item }) => {
38
+ const { t } = useTranslation(meta.profile.key);
39
+ const { invokePromise } = useOperationInvoker();
40
+ const typename = Obj.getTypename(item.object) ?? "";
41
+ const label = Obj.getLabel(item.object) ?? toLocalizedString(["object-name.placeholder", {
42
+ ns: typename,
43
+ defaultValue: item.id
44
+ }], t);
45
+ const styles = item.iconHue ? getStyles(item.iconHue) : void 0;
46
+ const handleClick = useCallback(() => void invokePromise(LayoutOperation.Open, { subject: [item.targetPath] }), [invokePromise, item.targetPath]);
47
+ return /* @__PURE__ */ jsx(Card.Root, {
48
+ fullWidth: true,
49
+ role: "button",
50
+ classNames: "cursor-pointer",
51
+ onClick: handleClick,
52
+ children: /* @__PURE__ */ jsxs(Card.Header, { children: [
53
+ /* @__PURE__ */ jsx(Card.Block, { children: /* @__PURE__ */ jsx(Icon, {
54
+ icon: item.icon,
55
+ classNames: styles?.fg
56
+ }) }),
57
+ /* @__PURE__ */ jsx(Card.Title, { children: label }),
58
+ /* @__PURE__ */ jsx(Card.Menu, {})
59
+ ] })
60
+ });
61
+ };
62
+ /**
63
+ * Combined hook to get collection items with search/filter support.
64
+ */
65
+ var useCollectionItems = (collection, attendableId) => {
66
+ const objects = useMemo(() => (collection.objects ?? []).map((ref) => ref.target).filter((obj) => Obj.isObject(obj)), [collection.objects]);
67
+ const { results, handleSearch } = useSearchListResults({
68
+ items: useMemo(() => objects.map((obj) => {
69
+ const iconAnnotation = Obj.getIcon(obj);
70
+ const targetPath = attendableId ? GraphPath.getCollectionObjectPath(attendableId, obj.id) : GraphPath.getObjectPathFromObject(obj);
71
+ return {
72
+ id: Obj.getURI(obj),
73
+ object: obj,
74
+ targetPath,
75
+ icon: iconAnnotation?.icon ?? "ph--circle-dashed--regular",
76
+ iconHue: iconAnnotation?.hue
77
+ };
78
+ }), [objects, attendableId]),
79
+ extract: (item) => Obj.getLabel(item.object) ?? item.id
80
+ });
81
+ return {
82
+ items: results,
83
+ handleSearch
84
+ };
85
+ };
86
+ CollectionArticle.displayName = "CollectionArticle";
87
+ //#endregion
88
+ export { CollectionArticle as default };
89
+
90
+ //# sourceMappingURL=chunk-CollectionArticle.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-CollectionArticle.mjs","names":[],"sources":["../../src/containers/CollectionArticle/CollectionArticle.tsx"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback, useMemo } from 'react';\n\nimport { useOperationInvoker } from '@dxos/app-framework/ui';\nimport { GraphPath, LayoutOperation } from '@dxos/app-toolkit';\nimport { type AppSurface } from '@dxos/app-toolkit/ui';\nimport { type Collection, Obj } from '@dxos/echo';\nimport { ScrollArea, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { Card, Icon } from '@dxos/react-ui';\nimport { Mosaic, type MosaicStackTileComponent } from '@dxos/react-ui-mosaic';\nimport { SearchPanel, useSearchListResults } from '@dxos/react-ui-search';\nimport { getStyles } from '@dxos/ui-theme';\n\nimport { meta } from '#meta';\n\n/**\n * Article view for collections.\n */\nexport const CollectionArticle = ({ subject, attendableId }: AppSurface.ObjectArticleProps<Collection.Collection>) => {\n const { t } = useTranslation(meta.profile.key);\n const { items, handleSearch } = useCollectionItems(subject, attendableId);\n\n return (\n <SearchPanel onSearch={handleSearch}>\n <Mosaic.Container asChild>\n <ScrollArea.Root centered padding thin>\n <ScrollArea.Viewport>\n <Mosaic.Stack\n classNames='gap-1'\n draggable={false}\n items={items}\n getId={(item) => item.id}\n Tile={ObjectTile}\n />\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n </Mosaic.Container>\n </SearchPanel>\n );\n};\n\ntype ObjectItem = {\n id: string;\n object: Obj.Unknown;\n targetPath: string;\n icon: string;\n iconHue?: string;\n};\n\nconst ObjectTile: MosaicStackTileComponent<ObjectItem> = ({ data: item }) => {\n const { t } = useTranslation(meta.profile.key);\n const { invokePromise } = useOperationInvoker();\n\n const typename = Obj.getTypename(item.object) ?? '';\n const label =\n Obj.getLabel(item.object) ??\n toLocalizedString(['object-name.placeholder', { ns: typename, defaultValue: item.id }], t);\n const styles = item.iconHue ? getStyles(item.iconHue) : undefined;\n\n const handleClick = useCallback(\n () => void invokePromise(LayoutOperation.Open, { subject: [item.targetPath] }),\n [invokePromise, item.targetPath],\n );\n\n return (\n <Card.Root fullWidth role='button' classNames='cursor-pointer' onClick={handleClick}>\n <Card.Header>\n <Card.Block>\n <Icon icon={item.icon} classNames={styles?.fg} />\n </Card.Block>\n <Card.Title>{label}</Card.Title>\n <Card.Menu />\n </Card.Header>\n </Card.Root>\n );\n};\n\n/**\n * Combined hook to get collection items with search/filter support.\n */\nconst useCollectionItems = (collection: Collection.Collection, attendableId?: string) => {\n const objects = useMemo(\n () => (collection.objects ?? []).map((ref) => ref.target).filter((obj): obj is Obj.Unknown => Obj.isObject(obj)),\n [collection.objects],\n );\n\n const items = useMemo(\n () =>\n objects.map((obj) => {\n const iconAnnotation = Obj.getIcon(obj);\n const targetPath = attendableId\n ? GraphPath.getCollectionObjectPath(attendableId, obj.id)\n : GraphPath.getObjectPathFromObject(obj);\n\n return {\n id: Obj.getURI(obj),\n object: obj,\n targetPath,\n icon: iconAnnotation?.icon ?? 'ph--circle-dashed--regular',\n iconHue: iconAnnotation?.hue,\n } satisfies ObjectItem;\n }),\n [objects, attendableId],\n );\n\n const { results, handleSearch } = useSearchListResults({\n items,\n extract: (item) => Obj.getLabel(item.object) ?? item.id,\n });\n\n return { items: results, handleSearch };\n};\n\nCollectionArticle.displayName = 'CollectionArticle';\n"],"mappings":";;;;;;;;;;;;;;AAqBA,IAAa,qBAAqB,EAAE,SAAS,mBAAyE;CACpH,MAAM,EAAE,MAAM,eAAe,KAAK,QAAQ,GAAG;CAC7C,MAAM,EAAE,OAAO,iBAAiB,mBAAmB,SAAS,YAAY;CAExE,OACE,oBAAC,aAAD;EAAa,UAAU;YACrB,oBAAC,OAAO,WAAR;GAAkB,SAAA;aAChB,oBAAC,WAAW,MAAZ;IAAiB,UAAA;IAAS,SAAA;IAAQ,MAAA;cAChC,oBAAC,WAAW,UAAZ,EAAA,UACE,oBAAC,OAAO,OAAR;KACE,YAAW;KACX,WAAW;KACJ;KACP,QAAQ,SAAS,KAAK;KACtB,MAAM;IACP,CAAA,EACkB,CAAA;GACN,CAAA;EACD,CAAA;CACP,CAAA;AAEjB;AAUA,IAAM,cAAoD,EAAE,MAAM,WAAW;CAC3E,MAAM,EAAE,MAAM,eAAe,KAAK,QAAQ,GAAG;CAC7C,MAAM,EAAE,kBAAkB,oBAAoB;CAE9C,MAAM,WAAW,IAAI,YAAY,KAAK,MAAM,KAAK;CACjD,MAAM,QACJ,IAAI,SAAS,KAAK,MAAM,KACxB,kBAAkB,CAAC,2BAA2B;EAAE,IAAI;EAAU,cAAc,KAAK;CAAG,CAAC,GAAG,CAAC;CAC3F,MAAM,SAAS,KAAK,UAAU,UAAU,KAAK,OAAO,IAAI,KAAA;CAExD,MAAM,cAAc,kBACZ,KAAK,cAAc,gBAAgB,MAAM,EAAE,SAAS,CAAC,KAAK,UAAU,EAAE,CAAC,GAC7E,CAAC,eAAe,KAAK,UAAU,CACjC;CAEA,OACE,oBAAC,KAAK,MAAN;EAAW,WAAA;EAAU,MAAK;EAAS,YAAW;EAAiB,SAAS;YACtE,qBAAC,KAAK,QAAN,EAAA,UAAA;GACE,oBAAC,KAAK,OAAN,EAAA,UACE,oBAAC,MAAD;IAAM,MAAM,KAAK;IAAM,YAAY,QAAQ;GAAK,CAAA,EACtC,CAAA;GACZ,oBAAC,KAAK,OAAN,EAAA,UAAa,MAAkB,CAAA;GAC/B,oBAAC,KAAK,MAAN,CAAY,CAAA;EACD,EAAA,CAAA;CACJ,CAAA;AAEf;;;;AAKA,IAAM,sBAAsB,YAAmC,iBAA0B;CACvF,MAAM,UAAU,eACP,WAAW,WAAW,CAAC,EAAA,CAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,CAAC,QAAQ,QAA4B,IAAI,SAAS,GAAG,CAAC,GAC/G,CAAC,WAAW,OAAO,CACrB;CAqBA,MAAM,EAAE,SAAS,iBAAiB,qBAAqB;EACrD,OApBY,cAEV,QAAQ,KAAK,QAAQ;GACnB,MAAM,iBAAiB,IAAI,QAAQ,GAAG;GACtC,MAAM,aAAa,eACf,UAAU,wBAAwB,cAAc,IAAI,EAAE,IACtD,UAAU,wBAAwB,GAAG;GAEzC,OAAO;IACL,IAAI,IAAI,OAAO,GAAG;IAClB,QAAQ;IACR;IACA,MAAM,gBAAgB,QAAQ;IAC9B,SAAS,gBAAgB;GAC3B;EACF,CAAC,GACH,CAAC,SAAS,YAAY,CAItB;EACA,UAAU,SAAS,IAAI,SAAS,KAAK,MAAM,KAAK,KAAK;CACvD,CAAC;CAED,OAAO;EAAE,OAAO;EAAS;CAAa;AACxC;AAEA,kBAAkB,cAAc"}
@@ -0,0 +1,21 @@
1
+ import { meta } from "#meta";
2
+ import "react";
3
+ import { useTranslation } from "@dxos/react-ui";
4
+ import { jsx } from "react/jsx-runtime";
5
+ //#region src/containers/CollectionSection/CollectionSection.tsx
6
+ var CollectionSection = ({ role, subject }) => {
7
+ const { t } = useTranslation(meta.profile.key);
8
+ return /* @__PURE__ */ jsx("div", {
9
+ role,
10
+ className: "min-h-[3.5rem] grid grid-rows-subgrid grid-cols-subgrid items-center",
11
+ children: /* @__PURE__ */ jsx("span", {
12
+ className: "truncate",
13
+ children: subject.name ?? t("unnamed-collection.label")
14
+ })
15
+ });
16
+ };
17
+ CollectionSection.displayName = "CollectionSection";
18
+ //#endregion
19
+ export { CollectionSection as default };
20
+
21
+ //# sourceMappingURL=chunk-CollectionSection.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-CollectionSection.mjs","names":[],"sources":["../../src/containers/CollectionSection/CollectionSection.tsx"],"sourcesContent":["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type AppSurface } from '@dxos/app-toolkit/ui';\nimport { type Collection } from '@dxos/echo';\nimport { useTranslation } from '@dxos/react-ui';\n\nimport { meta } from '#meta';\n\nexport type CollectionSectionProps = AppSurface.ObjectSectionProps<Collection.Collection>;\n\nexport const CollectionSection = ({ role, subject }: CollectionSectionProps) => {\n const { t } = useTranslation(meta.profile.key);\n\n // TODO(wittjosiah): Better placeholder.\n return (\n <div role={role} className='min-h-[3.5rem] grid grid-rows-subgrid grid-cols-subgrid items-center'>\n <span className='truncate'>{subject.name ?? t('unnamed-collection.label')}</span>\n </div>\n );\n};\n\nCollectionSection.displayName = 'CollectionSection';\n"],"mappings":";;;;;AAcA,IAAa,qBAAqB,EAAE,MAAM,cAAsC;CAC9E,MAAM,EAAE,MAAM,eAAe,KAAK,QAAQ,GAAG;CAG7C,OACE,oBAAC,OAAD;EAAW;EAAM,WAAU;YACzB,oBAAC,QAAD;GAAM,WAAU;aAAY,QAAQ,QAAQ,EAAE,0BAA0B;EAAQ,CAAA;CAC7E,CAAA;AAET;AAEA,kBAAkB,cAAc"}
@@ -0,0 +1,178 @@
1
+ import { n as getSpaceDisplayName } from "./chunk-util.mjs";
2
+ import { Capability } from "@dxos/app-framework";
3
+ import { meta } from "#meta";
4
+ import { AppSpace, LayoutOperation, TypeOptions } from "@dxos/app-toolkit";
5
+ import * as Effect from "effect/Effect";
6
+ import { Operation } from "@dxos/compute";
7
+ import { Annotation, Collection, Database, Obj, Type } from "@dxos/echo";
8
+ import { CollectionItemAnnotation, ViewAnnotation } from "@dxos/schema";
9
+ import { makeCreateObjectEntryForDatabaseType } from "#capabilities";
10
+ import { SpaceCapabilities } from "#types";
11
+ import * as Option from "effect/Option";
12
+ import { EffectEx } from "@dxos/effect";
13
+ import { invariant } from "@dxos/invariant";
14
+ import { useCallback, useMemo, useRef, useState } from "react";
15
+ import { useOperationInvoker, usePluginManager } from "@dxos/app-framework/ui";
16
+ import { PluginRegistryButton } from "@dxos/app-toolkit/ui";
17
+ import { useQuery } from "@dxos/echo-react";
18
+ import { useClient } from "@dxos/react-client";
19
+ import { useSpaces } from "@dxos/react-client/echo";
20
+ import { Dialog, toLocalizedString, useTranslation } from "@dxos/react-ui";
21
+ import { jsx, jsxs } from "react/jsx-runtime";
22
+ import { CreateObjectPanel } from "#components";
23
+ import { useAtomValue } from "@effect-atom/atom-react";
24
+ //#region src/containers/CreateObjectDialog/CreateObjectDialog.tsx
25
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-space/src/containers/CreateObjectDialog/CreateObjectDialog.tsx";
26
+ `${meta.profile.key}`;
27
+ var CreateObjectDialog = ({ target: initialTarget, typename: initialTypename, views, initialFormValues, onCreateObject, shouldNavigate: _shouldNavigate, targetNodeId }) => {
28
+ const { t } = useTranslation(meta.profile.key);
29
+ const manager = usePluginManager();
30
+ const operationInvoker = useOperationInvoker();
31
+ const { invoke } = operationInvoker;
32
+ const [target, setTarget] = useState(initialTarget);
33
+ const [typename, setTypename] = useState(initialTypename);
34
+ const client = useClient();
35
+ const spaces = useSpaces();
36
+ const closeRef = useRef(null);
37
+ const db = Database.isDatabase(target) ? target : target && Obj.getDatabase(target);
38
+ const allTypes = useQuery(db, TypeOptions.allTypesQuery);
39
+ const space = useMemo(() => spaces.find((s) => s.db === db), [spaces, db]);
40
+ const spaceLabel = useMemo(() => space && toLocalizedString(getSpaceDisplayName(space, { personal: space.id === AppSpace.getPersonalSpace(client)?.id }), t), [
41
+ space,
42
+ client,
43
+ t
44
+ ]);
45
+ const typeByTypename = useMemo(() => {
46
+ const map = /* @__PURE__ */ new Map();
47
+ for (const type of allTypes) map.set(Type.getTypename(type), type);
48
+ return map;
49
+ }, [allTypes]);
50
+ const entriesByModule = useAtomValue(manager.capabilities.atomByModule(SpaceCapabilities.CreateObjectEntry));
51
+ const { capabilityEntries, pluginNameByEntryId } = useMemo(() => {
52
+ const entries = [];
53
+ const pluginByEntryId = /* @__PURE__ */ new Map();
54
+ const plugins = manager.getPlugins();
55
+ for (const [moduleId, contributions] of Object.entries(entriesByModule)) {
56
+ const owningPlugin = plugins.find((plugin) => plugin.modules.some((module) => module.id === moduleId));
57
+ for (const entry of contributions) {
58
+ entries.push(entry);
59
+ if (owningPlugin) pluginByEntryId.set(entry.id, owningPlugin.meta.profile.name);
60
+ }
61
+ }
62
+ return {
63
+ capabilityEntries: entries,
64
+ pluginNameByEntryId: pluginByEntryId
65
+ };
66
+ }, [entriesByModule, manager]);
67
+ const createObjectEntries = useMemo(() => {
68
+ const registeredIds = new Set(capabilityEntries.map((e) => e.id));
69
+ const dbEntries = allTypes.filter((type) => Type.isObject(type) && Type.getDatabase(type) != null).filter((type) => !registeredIds.has(Type.getTypename(type))).map((type) => makeCreateObjectEntryForDatabaseType(type));
70
+ return [...capabilityEntries, ...dbEntries];
71
+ }, [capabilityEntries, allTypes]);
72
+ const resolve = useCallback((id) => createObjectEntries.find((entry) => entry.id === id), [createObjectEntries]);
73
+ const showTypeSelector = !(typename && resolve(typename));
74
+ const viewTypenames = useMemo(() => {
75
+ const set = /* @__PURE__ */ new Set();
76
+ for (const [name, type] of typeByTypename) if (ViewAnnotation.has(type)) set.add(name);
77
+ return set;
78
+ }, [typeByTypename]);
79
+ const collectionItemTypenames = useMemo(() => {
80
+ const set = /* @__PURE__ */ new Set();
81
+ const collectionTypename = Type.getTypename(Collection.Collection);
82
+ for (const [name, type] of typeByTypename) if (name === collectionTypename || CollectionItemAnnotation.get(Type.getSchema(type)).pipe(Option.getOrElse(() => false))) set.add(name);
83
+ return set;
84
+ }, [typeByTypename]);
85
+ const collectionTarget = Collection.isCollection(target);
86
+ const options = useMemo(() => createObjectEntries.filter((entry) => views === true ? viewTypenames.has(entry.id) : collectionTarget ? collectionItemTypenames.has(entry.id) : true).map((entry) => {
87
+ const type = typeByTypename.get(entry.id);
88
+ const schema = type && Type.getSchema(type);
89
+ const iconAnnotation = schema ? Annotation.IconAnnotation.get(schema).pipe(Option.getOrUndefined) : void 0;
90
+ const isDatabase = type ? Type.getDatabase(type) != null : false;
91
+ return {
92
+ id: entry.id,
93
+ label: (isDatabase && type ? Type.getLabel(type) : void 0) ?? t("typename.label", {
94
+ ns: entry.id,
95
+ defaultValue: entry.id
96
+ }),
97
+ icon: iconAnnotation?.icon,
98
+ iconHue: iconAnnotation?.hue,
99
+ plugin: pluginNameByEntryId.get(entry.id),
100
+ description: isDatabase ? spaceLabel : void 0
101
+ };
102
+ }), [
103
+ createObjectEntries,
104
+ views,
105
+ viewTypenames,
106
+ collectionTarget,
107
+ collectionItemTypenames,
108
+ typeByTypename,
109
+ t,
110
+ pluginNameByEntryId,
111
+ spaceLabel
112
+ ]);
113
+ const handleCreateObject = useCallback(({ metadata, data = {} }) => Effect.gen(function* () {
114
+ if (!target) return;
115
+ closeRef.current?.click();
116
+ const db = Database.isDatabase(target) ? target : target && Obj.getDatabase(target);
117
+ invariant(db, "Missing database", {
118
+ "~LogMeta": "~LogMeta",
119
+ F: __dxlog_file,
120
+ L: 199,
121
+ S: this,
122
+ A: ["db", "'Missing database'"]
123
+ });
124
+ const result = yield* metadata.createObject(data, {
125
+ db,
126
+ target,
127
+ targetNodeId
128
+ });
129
+ const shouldNavigate = _shouldNavigate ?? (() => true);
130
+ if (result.subject.length > 0 && shouldNavigate(result.object)) {
131
+ yield* invoke(LayoutOperation.Open, {
132
+ subject: [...result.subject],
133
+ navigation: "immediate"
134
+ });
135
+ yield* invoke(LayoutOperation.Expose, { subject: result.subject[0] });
136
+ }
137
+ onCreateObject?.(result.object);
138
+ }).pipe(Effect.provideService(Capability.Service, manager.capabilities), Effect.provideService(Operation.Service, operationInvoker), EffectEx.runAndForwardErrors), [
139
+ target,
140
+ _shouldNavigate,
141
+ onCreateObject,
142
+ manager.capabilities,
143
+ invoke
144
+ ]);
145
+ return /* @__PURE__ */ jsxs(Dialog.Content, { children: [
146
+ /* @__PURE__ */ jsxs(Dialog.Header, { children: [/* @__PURE__ */ jsx(Dialog.Title, { children: t("create-object-dialog.title", { object: t("typename.label", {
147
+ ns: typename,
148
+ defaultValue: views ? "View" : "Object"
149
+ }) }) }), /* @__PURE__ */ jsx(Dialog.Close, {
150
+ asChild: true,
151
+ children: /* @__PURE__ */ jsx(Dialog.ActionIconButton, {
152
+ action: "close",
153
+ ref: closeRef
154
+ })
155
+ })] }),
156
+ /* @__PURE__ */ jsx(Dialog.Body, { children: /* @__PURE__ */ jsx(CreateObjectPanel, {
157
+ options,
158
+ spaces,
159
+ target,
160
+ typename,
161
+ initialFormValues,
162
+ defaultSpaceId: AppSpace.getPersonalSpace(client)?.id ?? client.spaces.get()[0]?.id,
163
+ resolve,
164
+ onCreateObject: handleCreateObject,
165
+ onTargetChange: setTarget,
166
+ onTypenameChange: setTypename
167
+ }) }),
168
+ showTypeSelector && /* @__PURE__ */ jsx(Dialog.ActionBar, { children: /* @__PURE__ */ jsx(Dialog.Close, {
169
+ asChild: true,
170
+ children: /* @__PURE__ */ jsx(PluginRegistryButton, {})
171
+ }) })
172
+ ] });
173
+ };
174
+ CreateObjectDialog.displayName = "CreateObjectDialog";
175
+ //#endregion
176
+ export { CreateObjectDialog, CreateObjectDialog as default };
177
+
178
+ //# sourceMappingURL=chunk-CreateObjectDialog.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-CreateObjectDialog.mjs","names":[],"sources":["../../src/containers/CreateObjectDialog/CreateObjectDialog.tsx"],"sourcesContent":["//\n// Copyright 2024 DXOS.org\n//\n\nimport { useAtomValue } from '@effect-atom/atom-react';\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\nimport React, { useCallback, useMemo, useRef, useState } from 'react';\n\nimport { Capability } from '@dxos/app-framework';\nimport { useOperationInvoker, usePluginManager } from '@dxos/app-framework/ui';\nimport { AppSpace, LayoutOperation, TypeOptions } from '@dxos/app-toolkit';\nimport { PluginRegistryButton } from '@dxos/app-toolkit/ui';\nimport { Operation } from '@dxos/compute';\nimport { Annotation, Collection, Database, Obj, Type } from '@dxos/echo';\nimport { useQuery } from '@dxos/echo-react';\nimport { EffectEx } from '@dxos/effect';\nimport { invariant } from '@dxos/invariant';\nimport { useClient } from '@dxos/react-client';\nimport { useSpaces } from '@dxos/react-client/echo';\nimport { Dialog, toLocalizedString, useTranslation } from '@dxos/react-ui';\nimport { CollectionItemAnnotation, ViewAnnotation } from '@dxos/schema';\n\nimport { makeCreateObjectEntryForDatabaseType } from '#capabilities';\nimport { type CreateObjectOption, CreateObjectPanel, type CreateObjectPanelProps } from '#components';\nimport { meta } from '#meta';\nimport { SpaceCapabilities } from '#types';\n\nimport { getSpaceDisplayName } from '../../util';\n\nexport const CREATE_OBJECT_DIALOG = `${meta.profile.key}.CreateObjectDialog`;\n\nexport type CreateObjectDialogProps = Pick<CreateObjectPanelProps, 'target' | 'typename' | 'initialFormValues'> & {\n views?: boolean;\n onCreateObject?: (object: Obj.Unknown) => void;\n shouldNavigate?: (object: Obj.Unknown) => boolean;\n targetNodeId?: string;\n};\n\nexport const CreateObjectDialog = ({\n target: initialTarget,\n typename: initialTypename,\n views,\n initialFormValues,\n onCreateObject,\n shouldNavigate: _shouldNavigate,\n targetNodeId,\n}: CreateObjectDialogProps) => {\n const { t } = useTranslation(meta.profile.key);\n const manager = usePluginManager();\n const operationInvoker = useOperationInvoker();\n const { invoke } = operationInvoker;\n const [target, setTarget] = useState<Database.Database | Collection.Collection | undefined>(initialTarget);\n const [typename, setTypename] = useState<string | undefined>(initialTypename);\n const client = useClient();\n const spaces = useSpaces();\n const closeRef = useRef<HTMLButtonElement | null>(null);\n\n const db = Database.isDatabase(target) ? target : target && Obj.getDatabase(target);\n const allTypes = useQuery(db, TypeOptions.allTypesQuery);\n const space = useMemo(() => spaces.find((s) => s.db === db), [spaces, db]);\n const spaceLabel = useMemo(\n () =>\n space &&\n toLocalizedString(\n getSpaceDisplayName(space, { personal: space.id === AppSpace.getPersonalSpace(client)?.id }),\n t,\n ),\n [space, client, t],\n );\n\n // Index all types by typename for label/icon lookups.\n const typeByTypename = useMemo(() => {\n const map = new Map<string, Type.AnyEntity>();\n for (const type of allTypes) {\n map.set(Type.getTypename(type), type);\n }\n return map;\n }, [allTypes]);\n\n const entriesByModule = useAtomValue(manager.capabilities.atomByModule(SpaceCapabilities.CreateObjectEntry));\n\n const { capabilityEntries, pluginNameByEntryId } = useMemo(() => {\n const entries: SpaceCapabilities.CreateObjectEntry[] = [];\n const pluginByEntryId = new Map<string, string>();\n const plugins = manager.getPlugins();\n for (const [moduleId, contributions] of Object.entries(entriesByModule)) {\n const owningPlugin = plugins.find((plugin) => plugin.modules.some((module) => module.id === moduleId));\n for (const entry of contributions) {\n entries.push(entry);\n if (owningPlugin) {\n pluginByEntryId.set(entry.id, owningPlugin.meta.profile.name);\n }\n }\n }\n return { capabilityEntries: entries, pluginNameByEntryId: pluginByEntryId };\n }, [entriesByModule, manager]);\n\n // Synthesize entries for database-persisted object schemas that have no registered capability.\n const createObjectEntries = useMemo(() => {\n const registeredIds = new Set(capabilityEntries.map((e) => e.id));\n // allTypesQuery returns meta-schema entities which may be any entity kind at runtime,\n // but the query's TypeScript type is conservatively AnyType[]; widen to enable kind narrowing below.\n const dbEntries = (allTypes as Type.AnyEntity[])\n .filter((type): type is Type.AnyObj => Type.isObject(type) && Type.getDatabase(type) != null)\n .filter((type) => !registeredIds.has(Type.getTypename(type)))\n .map((type) => makeCreateObjectEntryForDatabaseType(type));\n return [...capabilityEntries, ...dbEntries];\n }, [capabilityEntries, allTypes]);\n\n const resolve = useCallback<NonNullable<CreateObjectPanelProps['resolve']>>(\n (id) => createObjectEntries.find((entry) => entry.id === id),\n [createObjectEntries],\n );\n\n // The type selector is shown while no type has been resolved; the registry button is only relevant then.\n const showTypeSelector = !(typename && resolve(typename));\n\n const viewTypenames = useMemo(() => {\n const set = new Set<string>();\n for (const [name, type] of typeByTypename) {\n if (ViewAnnotation.has(type)) {\n set.add(name);\n }\n }\n return set;\n }, [typeByTypename]);\n\n // Types eligible to live inside a collection: collections themselves, plus types carrying\n // CollectionItemAnnotation. Used to filter the create dialog when targeting a collection.\n const collectionItemTypenames = useMemo(() => {\n const set = new Set<string>();\n const collectionTypename = Type.getTypename(Collection.Collection);\n for (const [name, type] of typeByTypename) {\n if (\n name === collectionTypename ||\n CollectionItemAnnotation.get(Type.getSchema(type)).pipe(Option.getOrElse(() => false))\n ) {\n set.add(name);\n }\n }\n return set;\n }, [typeByTypename]);\n\n // When creating into a collection, offer only collection-eligible types (mirrors the `views` filter).\n const collectionTarget = Collection.isCollection(target);\n\n const options = useMemo<CreateObjectOption[]>(\n () =>\n createObjectEntries\n .filter((entry) =>\n views === true\n ? viewTypenames.has(entry.id)\n : collectionTarget\n ? collectionItemTypenames.has(entry.id)\n : true,\n )\n .map((entry) => {\n const type = typeByTypename.get(entry.id);\n const schema = type && Type.getSchema(type);\n const iconAnnotation = schema ? Annotation.IconAnnotation.get(schema).pipe(Option.getOrUndefined) : undefined;\n const isDatabase = type ? Type.getDatabase(type) != null : false;\n return {\n id: entry.id,\n label:\n (isDatabase && type ? Type.getLabel(type) : undefined) ??\n t('typename.label', { ns: entry.id, defaultValue: entry.id }),\n icon: iconAnnotation?.icon,\n iconHue: iconAnnotation?.hue,\n plugin: pluginNameByEntryId.get(entry.id),\n description: isDatabase ? spaceLabel : undefined,\n };\n }),\n [\n createObjectEntries,\n views,\n viewTypenames,\n collectionTarget,\n collectionItemTypenames,\n typeByTypename,\n t,\n pluginNameByEntryId,\n spaceLabel,\n ],\n );\n\n const handleCreateObject = useCallback<NonNullable<CreateObjectPanelProps['onCreateObject']>>(\n ({ metadata, data = {} }) =>\n Effect.gen(function* () {\n if (!target) {\n // TODO(wittjosiah): UI feedback.\n return;\n }\n\n // NOTE: Must close before navigating or attention won't follow object.\n closeRef.current?.click();\n\n const db = Database.isDatabase(target) ? target : target && Obj.getDatabase(target);\n invariant(db, 'Missing database');\n const result = yield* metadata.createObject(data, { db, target, targetNodeId });\n const shouldNavigate = _shouldNavigate ?? (() => true);\n if (result.subject.length > 0 && shouldNavigate(result.object)) {\n yield* invoke(LayoutOperation.Open, {\n subject: [...result.subject],\n navigation: 'immediate',\n });\n yield* invoke(LayoutOperation.Expose, {\n subject: result.subject[0],\n });\n }\n\n onCreateObject?.(result.object);\n }).pipe(\n Effect.provideService(Capability.Service, manager.capabilities),\n Effect.provideService(Operation.Service, operationInvoker),\n EffectEx.runAndForwardErrors,\n ),\n [target, _shouldNavigate, onCreateObject, manager.capabilities, invoke],\n );\n\n return (\n <Dialog.Content>\n <Dialog.Header>\n <Dialog.Title>\n {t('create-object-dialog.title', {\n object: t('typename.label', { ns: typename, defaultValue: views ? 'View' : 'Object' }),\n })}\n </Dialog.Title>\n <Dialog.Close asChild>\n <Dialog.ActionIconButton action='close' ref={closeRef} />\n </Dialog.Close>\n </Dialog.Header>\n <Dialog.Body>\n <CreateObjectPanel\n options={options}\n spaces={spaces}\n target={target}\n typename={typename}\n initialFormValues={initialFormValues}\n defaultSpaceId={AppSpace.getPersonalSpace(client)?.id ?? client.spaces.get()[0]?.id}\n resolve={resolve}\n onCreateObject={handleCreateObject}\n onTargetChange={setTarget}\n onTypenameChange={setTypename}\n />\n </Dialog.Body>\n {showTypeSelector && (\n <Dialog.ActionBar>\n <Dialog.Close asChild>\n <PluginRegistryButton />\n </Dialog.Close>\n </Dialog.ActionBar>\n )}\n </Dialog.Content>\n );\n};\n\nCreateObjectDialog.displayName = 'CreateObjectDialog';\n"],"mappings":"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"}