@dxos/plugin-space 0.10.0 → 0.11.1

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 +7 -1
  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 +2 -7
  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":"chunk-spaces-ready.mjs","names":[],"sources":["../../src/capabilities/spaces-ready.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Fiber from 'effect/Fiber';\nimport * as Option from 'effect/Option';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { AppAnnotation, AppCapabilities, AppSpace, GraphPath, LayoutOperation } from '@dxos/app-toolkit';\nimport { SubscriptionList } from '@dxos/async';\nimport { Annotation, Collection, Filter, Obj, Type } from '@dxos/echo';\nimport { SPACE_ID_LENGTH, parseId } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { Migrations, MigrationVersionAnnotation } from '@dxos/migrations';\nimport { AttentionCapabilities } from '@dxos/plugin-attention';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { Graph } from '@dxos/plugin-graph';\nimport { EdgeReplicationSetting } from '@dxos/protocols/proto/dxos/echo/metadata';\nimport { PublicKey } from '@dxos/react-client';\nimport { type Space, SpaceState } from '@dxos/react-client/echo';\nimport { Expando } from '@dxos/schema';\nimport { ComplexMap, reduceGroupBy } from '@dxos/util';\n\nimport { SpaceOperation } from '#operations';\nimport { SpaceCapabilities } from '#types';\n\nimport { SHARED } from '../util';\n\nconst ACTIVE_NODE_BROADCAST_INTERVAL = 30_000;\nconst WAIT_FOR_OBJECT_TIMEOUT = 5_000;\n\nconst isEchoRef = (id: string) => id.startsWith('echo:/');\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const subscriptions = new SubscriptionList();\n const spaceSubscriptions = new SubscriptionList();\n\n const { invoke, invokePromise } = yield* Capability.get(Capabilities.OperationInvoker);\n const { graph } = yield* Capability.get(AppCapabilities.AppGraph);\n const registry = yield* Capability.get(Capabilities.AtomRegistry);\n const layoutAtom = yield* Capability.get(AppCapabilities.Layout);\n const attention = yield* Capability.get(AttentionCapabilities.Attention);\n const stateAtom = yield* Capability.get(SpaceCapabilities.State);\n const ephemeralAtom = yield* Capability.get(SpaceCapabilities.EphemeralState);\n const client = yield* Capability.get(ClientCapabilities.Client);\n const haloIdentity = yield* Capability.get(ClientCapabilities.IdentityService);\n\n //\n // Personal space initialization — deferred until found.\n //\n\n // Fiber for the one-shot personal-space init Effect; interrupted in cleanup\n // so it cannot access the db after client.destroy() closes the repo.\n let personalSpaceInitFiber: Fiber.RuntimeFiber<void, unknown> | undefined;\n let personalSpaceInitialized = false;\n\n const personalSpaceInitEffect = (personalSpace: Space, { fromCredential }: { fromCredential: boolean }) =>\n Effect.gen(function* () {\n yield* Effect.promise(() => personalSpace.waitUntilReady());\n\n if (fromCredential) {\n AppSpace.setPersonalSpace(personalSpace);\n }\n\n // Check if deck state indicates we should switch to default space.\n const layout = registry.get(layoutAtom);\n if (layout.workspace === 'default') {\n yield* invoke(LayoutOperation.SwitchWorkspace, { subject: GraphPath.getSpacePath(personalSpace.id) });\n }\n\n const queryResults = yield* Effect.promise(() =>\n personalSpace.db.query(Filter.type(Expando.Expando, { key: SHARED })).run(),\n );\n if (!queryResults[0]) {\n // TODO(wittjosiah): Cannot be a Folder because Spaces are not TypedObjects so can't be saved in the database.\n // Instead, we store order as an array of space ids.\n try {\n personalSpace.db.add(Obj.make(Expando.Expando, { key: SHARED, order: [] }));\n } catch (err) {\n // The space may have been destroyed (e.g. during test teardown) between the query and the add.\n log.warn('Failed to initialize spaces order, space may be closing', { err });\n }\n }\n });\n\n const startPersonalSpaceInit = (personalSpace: Space, opts: { fromCredential: boolean }) => {\n if (personalSpaceInitialized) {\n return;\n }\n // Set before forking so concurrent subscribe callbacks don't start a second initialization.\n personalSpaceInitialized = true;\n personalSpaceInitFiber = Effect.runFork(personalSpaceInitEffect(personalSpace, opts));\n };\n\n // Try to find the personal space now, or subscribe to find it later.\n // Initialization is non-blocking so subscriptions wire immediately.\n const resolved = AppSpace.resolvePersonalSpace(client);\n if (resolved) {\n startPersonalSpaceInit(resolved.space, resolved);\n } else {\n const personalSpaceSub = client.spaces.subscribe(() => {\n const resolved = AppSpace.resolvePersonalSpace(client);\n if (resolved) {\n startPersonalSpaceInit(resolved.space, resolved);\n }\n });\n subscriptions.add(() => personalSpaceSub.unsubscribe());\n }\n\n //\n // Space subscriptions — set up immediately, do not depend on personal space.\n //\n\n // Await missing objects - subscribe to layout atom changes.\n // NOTE: Use immediate: true to check initial state (URL handler may have already set active).\n let lastActiveCleanup: (() => void) | undefined;\n subscriptions.add(\n registry.subscribe(\n layoutAtom,\n (layout) => {\n // Clean up previous effect.\n lastActiveCleanup?.();\n lastActiveCleanup = undefined;\n\n // Determine the ID to check - either from active item or workspace.\n const id = layout.active.length === 1 ? layout.active[0] : layout.workspace;\n if (!id) {\n return;\n }\n\n const node = Graph.getNode(graph, id).pipe(Option.getOrNull);\n if (!node && (isEchoRef(id) || id.length === SPACE_ID_LENGTH)) {\n // Fire any `resolver` extension for the id first; the timeout below is the fallback when\n // nothing materializes it.\n void Graph.initialize(graph, id);\n const timeout = setTimeout(async () => {\n const node = Graph.getNode(graph, id).pipe(Option.getOrNull);\n if (!node) {\n await invokePromise(SpaceOperation.WaitForObject, { id });\n }\n }, WAIT_FOR_OBJECT_TIMEOUT);\n\n lastActiveCleanup = () => clearTimeout(timeout);\n }\n },\n { immediate: true },\n ),\n );\n // Also add cleanup for the last effect.\n subscriptions.add(() => lastActiveCleanup?.());\n\n // Cache space names.\n const spaceNamesSub = client.spaces.subscribe(async (spaces) => {\n // TODO(wittjosiah): Remove. This is a hack to be able to migrate the personal space properties.\n const personalSpaceForMigration = AppSpace.resolvePersonalSpace(client);\n if (\n personalSpaceForMigration?.space &&\n personalSpaceForMigration.space.state.get() === SpaceState.SPACE_REQUIRES_MIGRATION\n ) {\n await personalSpaceForMigration.space.internal.migrate();\n }\n\n spaces\n .filter((space) => space.state.get() === SpaceState.SPACE_READY)\n .forEach((space) => {\n if (Option.isNone(Annotation.get(space.properties, AppAnnotation.RootCollectionAnnotation))) {\n const legacyRef = (space.properties as any)[Type.getTypename(Collection.Collection)];\n if (legacyRef) {\n Obj.update(space.properties, (properties) => {\n Annotation.set(properties, AppAnnotation.RootCollectionAnnotation, legacyRef);\n });\n }\n }\n if (Migrations.namespace && Option.isNone(Annotation.get(space.properties, MigrationVersionAnnotation))) {\n const legacyVersion = (space.properties as any)[`${Migrations.namespace}.version`];\n if (typeof legacyVersion === 'string') {\n Obj.update(space.properties, (properties) => {\n Annotation.set(properties, MigrationVersionAnnotation, legacyVersion);\n });\n }\n }\n\n const updateSpaceName = () => {\n const name = space.properties.name;\n if (!name) {\n registry.update(stateAtom, (current) => {\n const { [space.id]: _, ...rest } = current.spaceNames;\n return { ...current, spaceNames: rest };\n });\n } else {\n registry.update(stateAtom, (current) => ({\n ...current,\n spaceNames: { ...current.spaceNames, [space.id]: name },\n }));\n }\n };\n updateSpaceName();\n subscriptions.add(Obj.subscribe(space.properties, updateSpaceName));\n });\n });\n subscriptions.add(() => spaceNamesSub.unsubscribe());\n\n // Broadcast active node to other peers in the space - subscribe to both layout and attention.\n let broadcastCleanup: (() => void) | undefined;\n const setupBroadcast = () => {\n broadcastCleanup?.();\n\n const layout = registry.get(layoutAtom);\n const current = attention.getCurrent();\n const active = layout.active;\n const inactive = layout.inactive;\n\n const send = () => {\n const spaces = client.spaces.get();\n const identity = Option.getOrUndefined(haloIdentity.getSnapshot());\n if (identity) {\n // Group parts by space for efficient messaging.\n const idsBySpace = reduceGroupBy(active, (id: string) => {\n try {\n const { spaceId } = parseId(id);\n return spaceId;\n } catch {\n return null;\n }\n });\n\n const removedBySpace = reduceGroupBy(inactive, (id: string) => {\n try {\n const { spaceId } = parseId(id);\n return spaceId;\n } catch {\n return null;\n }\n });\n\n // NOTE: Ensure all spaces are included so that we send the correct `removed` object arrays.\n for (const space of spaces) {\n if (!idsBySpace.has(space.id)) {\n idsBySpace.set(space.id, []);\n }\n }\n\n for (const [spaceId, added] of idsBySpace) {\n const removed = removedBySpace.get(spaceId) ?? [];\n const space = spaces.find((space) => space.id === spaceId);\n if (!space) {\n continue;\n }\n\n void space\n .postMessage('viewing', {\n identityKey: identity.identityKey,\n attended: current,\n added,\n removed,\n })\n // TODO(burdon): This seems defensive; why would this fail? Backoff interval.\n .catch((err) => {\n log.warn('Failed to broadcast active node for presence.', {\n err: err.message,\n });\n });\n }\n }\n };\n\n send();\n // Send at interval to allow peers to expire entries if they become disconnected.\n const interval = setInterval(() => send(), ACTIVE_NODE_BROADCAST_INTERVAL);\n broadcastCleanup = () => clearInterval(interval);\n };\n\n // Subscribe to layout changes for broadcast.\n subscriptions.add(registry.subscribe(layoutAtom, setupBroadcast));\n // Subscribe to attention.current changes.\n subscriptions.add(attention.subscribeCurrent(() => setupBroadcast()));\n // Initial setup.\n setupBroadcast();\n // Cleanup.\n subscriptions.add(() => broadcastCleanup?.());\n\n // Listen for active nodes from other peers in the space.\n const viewingSub = client.spaces.subscribe((spaces) => {\n spaceSubscriptions.clear();\n spaces.forEach((space) => {\n spaceSubscriptions.add(\n space.listen('viewing', (message) => {\n const { added, removed, attended } = message.payload;\n\n const identityKey = PublicKey.safeFrom(message.payload.identityKey);\n const currentIdentity = Option.getOrUndefined(haloIdentity.getSnapshot());\n if (\n identityKey &&\n currentIdentity?.identityKey !== identityKey.toHex() &&\n Array.isArray(added) &&\n Array.isArray(removed)\n ) {\n // TODO(wittjosiah): Stop using (Complex)Map inside reactive object.\n registry.update(ephemeralAtom, (ephemeral) => {\n added.forEach((id) => {\n if (typeof id === 'string') {\n if (!(id in ephemeral.viewersByObject)) {\n ephemeral.viewersByObject[id] = new ComplexMap(PublicKey.hash);\n }\n ephemeral.viewersByObject[id]!.set(identityKey, {\n lastSeen: Date.now(),\n currentlyAttended: new Set(attended).has(id),\n });\n if (!ephemeral.viewersByIdentity.has(identityKey)) {\n ephemeral.viewersByIdentity.set(identityKey, new Set());\n }\n ephemeral.viewersByIdentity.get(identityKey)!.add(id);\n }\n });\n\n removed.forEach((id) => {\n if (typeof id === 'string') {\n ephemeral.viewersByObject[id]?.delete(identityKey);\n ephemeral.viewersByIdentity.get(identityKey)?.delete(id);\n // It's okay for these to be empty sets/maps, reduces churn.\n }\n });\n\n return { ...ephemeral };\n });\n }\n }),\n );\n });\n });\n subscriptions.add(() => viewingSub.unsubscribe());\n\n // Enable edge replication for all spaces.\n // Per-space failures (e.g. a timeout waiting for the property to propagate) must not\n // block activation of the whole plugin, so each space is enabled independently.\n yield* Effect.tryPromise(() =>\n Promise.allSettled(\n client.spaces\n .get()\n .filter((space) => space.internal.data.edgeReplication !== EdgeReplicationSetting.ENABLED)\n .map((space) => space.internal.setEdgeReplicationPreference(EdgeReplicationSetting.ENABLED)),\n ),\n ).pipe(\n Effect.tap((results) =>\n Effect.sync(() => {\n results.forEach((result) => {\n if (result.status === 'rejected') {\n log.catch(result.reason);\n }\n });\n }),\n ),\n Effect.catchAll((err) => Effect.sync(() => log.catch(err))),\n );\n registry.update(stateAtom, (current) => ({ ...current, enabledEdgeReplication: true }));\n\n return Capability.contributes(Capabilities.Null, null, () =>\n Effect.gen(function* () {\n if (personalSpaceInitFiber) {\n yield* Fiber.interrupt(personalSpaceInitFiber);\n }\n spaceSubscriptions.clear();\n subscriptions.clear();\n }),\n );\n }),\n);\n"],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import { Capabilities, Capability } from "@dxos/app-framework";
2
+ import { ComplexMap } from "@dxos/util";
3
+ import { meta } from "#meta";
4
+ import * as Effect from "effect/Effect";
5
+ import { SpaceCapabilities } from "#types";
6
+ import { PublicKey } from "@dxos/keys";
7
+ import { createKvsStore } from "@dxos/effect";
8
+ import { Atom } from "@effect-atom/atom";
9
+ //#region src/capabilities/state.ts
10
+ /** Default persisted state. */
11
+ var defaultSpaceState = {
12
+ spaceNames: {},
13
+ enabledEdgeReplication: false
14
+ };
15
+ var state_default = Capability.makeModule(Effect.fnUntraced(function* () {
16
+ const registry = yield* Capability.get(Capabilities.AtomRegistry);
17
+ const stateAtom = createKvsStore({
18
+ key: `${meta.profile.key}.state`,
19
+ schema: SpaceCapabilities.StateSchema,
20
+ defaultValue: () => ({ ...defaultSpaceState })
21
+ });
22
+ const ephemeralAtom = Atom.make({
23
+ awaiting: void 0,
24
+ sdkMigrationRunning: {},
25
+ navigableCollections: false,
26
+ viewersByObject: {},
27
+ viewersByIdentity: new ComplexMap(PublicKey.hash),
28
+ mergePreview: void 0,
29
+ lastMergeAt: void 0
30
+ }).pipe(Atom.keepAlive);
31
+ const manager = yield* Capability.get(Capabilities.PluginManager);
32
+ const updateNavigableCollections = () => {
33
+ const enabled = manager.getEnabled().includes("org.dxos.plugin.stack") || manager.getEnabled().includes("org.dxos.plugin.simpleLayout");
34
+ if (enabled !== registry.get(ephemeralAtom).navigableCollections) registry.update(ephemeralAtom, (c) => ({
35
+ ...c,
36
+ navigableCollections: enabled
37
+ }));
38
+ };
39
+ updateNavigableCollections();
40
+ const unsubscribe = registry.subscribe(manager.enabled, updateNavigableCollections);
41
+ return [Capability.contributes(SpaceCapabilities.State, stateAtom), Capability.contributes(SpaceCapabilities.EphemeralState, ephemeralAtom, () => Effect.sync(() => {
42
+ unsubscribe();
43
+ }))];
44
+ }));
45
+ //#endregion
46
+ export { state_default as default };
47
+
48
+ //# sourceMappingURL=chunk-state.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-state.mjs","names":[],"sources":["../../src/capabilities/state.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom } from '@effect-atom/atom';\nimport * as Effect from 'effect/Effect';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { createKvsStore } from '@dxos/effect';\nimport { PublicKey } from '@dxos/keys';\nimport { ComplexMap } from '@dxos/util';\n\nimport { meta } from '#meta';\nimport { SpaceCapabilities } from '#types';\n\n/** Default persisted state. */\nconst defaultSpaceState: SpaceCapabilities.SpaceState = {\n spaceNames: {},\n enabledEdgeReplication: false,\n};\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const registry = yield* Capability.get(Capabilities.AtomRegistry);\n\n // Persisted state using KVS store.\n const stateAtom = createKvsStore({\n key: `${meta.profile.key}.state`,\n schema: SpaceCapabilities.StateSchema,\n defaultValue: () => ({ ...defaultSpaceState }),\n });\n\n // Ephemeral state (not persisted, but kept alive to prevent GC resets).\n const ephemeralAtom = Atom.make<SpaceCapabilities.SpaceEphemeralState>({\n awaiting: undefined,\n sdkMigrationRunning: {},\n navigableCollections: false,\n viewersByObject: {},\n viewersByIdentity: new ComplexMap<PublicKey, Set<string>>(PublicKey.hash),\n mergePreview: undefined,\n lastMergeAt: undefined,\n }).pipe(Atom.keepAlive);\n\n const manager = yield* Capability.get(Capabilities.PluginManager);\n // Update navigableCollections based on plugin state.\n const updateNavigableCollections = () => {\n const enabled =\n manager.getEnabled().includes('org.dxos.plugin.stack') ||\n manager.getEnabled().includes('org.dxos.plugin.simpleLayout');\n const current = registry.get(ephemeralAtom);\n if (enabled !== current.navigableCollections) {\n registry.update(ephemeralAtom, (c) => ({ ...c, navigableCollections: enabled }));\n }\n };\n // Check initial state and subscribe to changes.\n updateNavigableCollections();\n const unsubscribe = registry.subscribe(manager.enabled, updateNavigableCollections);\n\n return [\n Capability.contributes(SpaceCapabilities.State, stateAtom),\n Capability.contributes(SpaceCapabilities.EphemeralState, ephemeralAtom, () =>\n Effect.sync(() => {\n unsubscribe();\n }),\n ),\n ];\n }),\n);\n"],"mappings":";;;;;;;;;;AAgBA,IAAM,oBAAkD;CACtD,YAAY,CAAC;CACb,wBAAwB;AAC1B;AAEA,IAAA,gBAAe,WAAW,WACxB,OAAO,WAAW,aAAa;CAC7B,MAAM,WAAW,OAAO,WAAW,IAAI,aAAa,YAAY;CAGhE,MAAM,YAAY,eAAe;EAC/B,KAAK,GAAG,KAAK,QAAQ,IAAI;EACzB,QAAQ,kBAAkB;EAC1B,qBAAqB,EAAE,GAAG,kBAAkB;CAC9C,CAAC;CAGD,MAAM,gBAAgB,KAAK,KAA4C;EACrE,UAAU,KAAA;EACV,qBAAqB,CAAC;EACtB,sBAAsB;EACtB,iBAAiB,CAAC;EAClB,mBAAmB,IAAI,WAAmC,UAAU,IAAI;EACxE,cAAc,KAAA;EACd,aAAa,KAAA;CACf,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS;CAEtB,MAAM,UAAU,OAAO,WAAW,IAAI,aAAa,aAAa;CAEhE,MAAM,mCAAmC;EACvC,MAAM,UACJ,QAAQ,WAAW,CAAC,CAAC,SAAS,uBAAuB,KACrD,QAAQ,WAAW,CAAC,CAAC,SAAS,8BAA8B;EAE9D,IAAI,YADY,SAAS,IAAI,aACb,CAAA,CAAQ,sBACtB,SAAS,OAAO,gBAAgB,OAAO;GAAE,GAAG;GAAG,sBAAsB;EAAQ,EAAE;CAEnF;CAEA,2BAA2B;CAC3B,MAAM,cAAc,SAAS,UAAU,QAAQ,SAAS,0BAA0B;CAElF,OAAO,CACL,WAAW,YAAY,kBAAkB,OAAO,SAAS,GACzD,WAAW,YAAY,kBAAkB,gBAAgB,qBACvD,OAAO,WAAW;EAChB,YAAY;CACd,CAAC,CACH,CACF;AACF,CAAC,CACH"}
@@ -0,0 +1,56 @@
1
+ import * as Schema from "effect/Schema";
2
+ import { meta } from "#meta";
3
+ import { AppNodeMatcher } from "@dxos/app-toolkit";
4
+ //#region \0rolldown/runtime.js
5
+ var __defProp = Object.defineProperty;
6
+ var __exportAll = (all, no_symbols) => {
7
+ let target = {};
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
13
+ return target;
14
+ };
15
+ //#endregion
16
+ //#region src/types/Settings.ts
17
+ var Settings_exports = /* @__PURE__ */ __exportAll({ Settings: () => Settings });
18
+ var Settings = Schema.mutable(Schema.Struct({ showHidden: Schema.optional(Schema.Boolean.annotations({
19
+ title: "Show hidden types",
20
+ description: "Include types annotated as hidden (e.g. Tag, View, Feed) in the database section."
21
+ })) }));
22
+ //#endregion
23
+ //#region src/types/types.ts
24
+ var SPACE_DIRECTORY_HANDLE = `${meta.profile.key}.directory`;
25
+ var SPACE_TYPE = "org.dxos.type.space";
26
+ /**
27
+ * Type tag and subject literal for the per-space virtual Home node. Used as both the
28
+ * graph node `type` and its `data` (subject) so a single constant identifies the node
29
+ * at the graph layer and at the article surface filter layer. The associated {@link Space}
30
+ * is on `properties.space`.
31
+ */
32
+ var SPACE_HOME_NODE_TYPE = "org.dxos.space.home";
33
+ /** Type for the per-space virtual "Settings" section. Single source of truth is `AppNodeMatcher.SETTINGS_SECTION_TYPE`. */
34
+ var SETTINGS_SECTION_TYPE = AppNodeMatcher.SETTINGS_SECTION_TYPE;
35
+ /** Node id (local segment) for the per-space virtual "Settings" section. */
36
+ var SETTINGS_SECTION_ID = "settings";
37
+ /** Key for the Expando that stores cross-space ordering (must stay stable for persisted data). */
38
+ var SHARED = "shared-spaces";
39
+ var IconAnnotationId = Symbol.for("@dxos/plugin-space/annotation/Icon");
40
+ var HueAnnotationId = Symbol.for("@dxos/plugin-space/annotation/Hue");
41
+ var SpaceForm = Schema.Struct({
42
+ name: Schema.optional(Schema.String.annotations({ title: "Name" })),
43
+ icon: Schema.optional(Schema.String.annotations({
44
+ title: "Icon",
45
+ [IconAnnotationId]: true
46
+ })),
47
+ hue: Schema.optional(Schema.String.annotations({
48
+ title: "Color",
49
+ [HueAnnotationId]: true
50
+ })),
51
+ edgeReplication: Schema.optional(Schema.Boolean.annotations({ title: "Enable EDGE Replication" }))
52
+ });
53
+ //#endregion
54
+ export { SHARED as a, SPACE_TYPE as c, __exportAll as d, SETTINGS_SECTION_TYPE as i, SpaceForm as l, IconAnnotationId as n, SPACE_DIRECTORY_HANDLE as o, SETTINGS_SECTION_ID as r, SPACE_HOME_NODE_TYPE as s, HueAnnotationId as t, Settings_exports as u };
55
+
56
+ //# sourceMappingURL=chunk-types.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-types.mjs","names":[],"sources":["../../src/types/Settings.ts","../../src/types/types.ts"],"sourcesContent":["//\n// Copyright 2023 DXOS.org\n//\n\n// @import-as-namespace\n\nimport * as Schema from 'effect/Schema';\n\nexport const Settings = Schema.mutable(\n Schema.Struct({\n showHidden: Schema.optional(\n Schema.Boolean.annotations({\n title: 'Show hidden types',\n description: 'Include types annotated as hidden (e.g. Tag, View, Feed) in the database section.',\n }),\n ),\n }),\n);\n\nexport interface Settings extends Schema.Schema.Type<typeof Settings> {}\n","//\n// Copyright 2023 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Schema from 'effect/Schema';\n\nimport { Capability } from '@dxos/app-framework';\nimport { AppNodeMatcher } from '@dxos/app-toolkit';\nimport { type PublicKey } from '@dxos/client';\nimport { Operation } from '@dxos/compute';\nimport { Collection, Database, Obj } from '@dxos/echo';\nimport { type ComplexMap } from '@dxos/util';\n\nimport { meta } from '#meta';\n\nexport * as Settings from './Settings';\n\nexport const SPACE_DIRECTORY_HANDLE = `${meta.profile.key}.directory`;\n\nexport const SPACE_TYPE = 'org.dxos.type.space';\n\n/**\n * Type tag and subject literal for the per-space virtual Home node. Used as both the\n * graph node `type` and its `data` (subject) so a single constant identifies the node\n * at the graph layer and at the article surface filter layer. The associated {@link Space}\n * is on `properties.space`.\n */\nexport const SPACE_HOME_NODE_TYPE = 'org.dxos.space.home';\n\n/** Type for the per-space virtual \"Settings\" section. Single source of truth is `AppNodeMatcher.SETTINGS_SECTION_TYPE`. */\nexport const SETTINGS_SECTION_TYPE = AppNodeMatcher.SETTINGS_SECTION_TYPE;\n\n/** Node id (local segment) for the per-space virtual \"Settings\" section. */\nexport const SETTINGS_SECTION_ID = 'settings';\n\n/** Key for the Expando that stores cross-space ordering (must stay stable for persisted data). */\nexport const SHARED = 'shared-spaces';\n\nexport type SpacePluginOptions = {\n /**\n * Origin used for shareable links (object copy-link and invitation base).\n * Defaults to window.location.origin.\n */\n shareableLinkOrigin?: string;\n\n /**\n * Path appended to shareableLinkOrigin to form the invitation base URL.\n * Defaults to '/'.\n */\n invitationPath?: string;\n\n /**\n * Query parameter name for the invitation code.\n */\n invitationProp?: string;\n\n /**\n * Whether the navigation handler consumes invitation codes from URL query params.\n * Disable when another plugin (e.g. plugin-onboarding) owns the invitation URL flow.\n * @default true\n */\n invitationUrlHandler?: boolean;\n\n /**\n * Whether to send observability events.\n */\n observability?: boolean;\n};\n\nexport type ObjectViewerProps = {\n lastSeen: number;\n currentlyAttended: boolean;\n};\n\nexport type ObjectId = string;\n\nexport type PluginState = {\n /**\n * Which objects are currently being viewed by which peers.\n */\n viewersByObject: Record<ObjectId, ComplexMap<PublicKey, ObjectViewerProps>>;\n\n /**\n * Which peers are currently viewing which objects.\n */\n viewersByIdentity: ComplexMap<PublicKey, Set<ObjectId>>;\n\n /**\n * Object that was linked to directly but not found and is being awaited.\n */\n awaiting: string | undefined;\n\n /**\n * Cached space names, used when spaces are closed or loading.\n */\n spaceNames: Record<string, string>;\n\n /**\n * Which spaces have an SDK migration running currently.\n */\n // TODO(wittjosiah): Factor out to sdk. Migration running should probably be a space state.\n sdkMigrationRunning: Record<string, boolean>;\n\n /**\n * Whether or not the user can navigate to collections in the graph.\n * Determined by whether or not there is an available plugin that can render a collection.\n */\n navigableCollections: boolean;\n\n /**\n * Tracks whether setting edge replication as default has been run on spaces.\n */\n // TODO(wittjosiah): Systematic way to handle migrations of state outside of spaces.\n enabledEdgeReplication: boolean;\n};\n\n// TODO(wittjosiah): Reconcile with graph export serializers.\n\nexport type SerializerMap = Record<string, TypedObjectSerializer>;\n\nexport interface TypedObjectSerializer<T extends Obj.Unknown = Obj.Unknown> {\n serialize(params: { object: T }): Promise<string>;\n\n /**\n * @param params.content\n * @param params.space Space to use for deserializing schema references.\n * @param params.newId Generate new ID for deserialized object.\n */\n deserialize(params: { content: string; db: Database.Database; newId?: boolean }): Promise<T>;\n}\n\n/**\n * Result of creating and adding an object.\n */\nexport type CreateObjectResult = {\n id: string;\n subject: readonly string[];\n object: Obj.Unknown;\n};\n\n/**\n * Factory function that creates an object and adds it to a target (database or collection).\n * Returns an Effect that resolves to the created object result with navigation subject.\n */\nexport type CreateObject = (\n props: any,\n options: {\n db: Database.Database;\n target: Database.Database | Collection.Collection;\n targetNodeId?: string;\n },\n) => Effect.Effect<CreateObjectResult, Error, Capability.Service | Operation.Service>;\n\n// TODO(burdon): Move to FormatEnum or SDK.\nexport const IconAnnotationId = Symbol.for('@dxos/plugin-space/annotation/Icon');\nexport const HueAnnotationId = Symbol.for('@dxos/plugin-space/annotation/Hue');\n\n// TOOD(burdon): Use SpacePropertiesSchema.\nexport const SpaceForm = Schema.Struct({\n name: Schema.optional(Schema.String.annotations({ title: 'Name' })),\n icon: Schema.optional(Schema.String.annotations({ title: 'Icon', [IconAnnotationId]: true })),\n hue: Schema.optional(Schema.String.annotations({ title: 'Color', [HueAnnotationId]: true })),\n edgeReplication: Schema.optional(Schema.Boolean.annotations({ title: 'Enable EDGE Replication' })),\n});\n"],"mappings":";;;;;;;;;;;;;;;;;AAQA,IAAa,WAAW,OAAO,QAC7B,OAAO,OAAO,EACZ,YAAY,OAAO,SACjB,OAAO,QAAQ,YAAY;CACzB,OAAO;CACP,aAAa;AACf,CAAC,CACH,EACF,CAAC,CACH;;;ACCA,IAAa,yBAAyB,GAAG,KAAK,QAAQ,IAAI;AAE1D,IAAa,aAAa;;;;;;;AAQ1B,IAAa,uBAAuB;;AAGpC,IAAa,wBAAwB,eAAe;;AAGpD,IAAa,sBAAsB;;AAGnC,IAAa,SAAS;AAsHtB,IAAa,mBAAmB,OAAO,IAAI,oCAAoC;AAC/E,IAAa,kBAAkB,OAAO,IAAI,mCAAmC;AAG7E,IAAa,YAAY,OAAO,OAAO;CACrC,MAAM,OAAO,SAAS,OAAO,OAAO,YAAY,EAAE,OAAO,OAAO,CAAC,CAAC;CAClE,MAAM,OAAO,SAAS,OAAO,OAAO,YAAY;EAAE,OAAO;GAAS,mBAAmB;CAAK,CAAC,CAAC;CAC5F,KAAK,OAAO,SAAS,OAAO,OAAO,YAAY;EAAE,OAAO;GAAU,kBAAkB;CAAK,CAAC,CAAC;CAC3F,iBAAiB,OAAO,SAAS,OAAO,QAAQ,YAAY,EAAE,OAAO,0BAA0B,CAAC,CAAC;AACnG,CAAC"}
@@ -0,0 +1,40 @@
1
+ import { t as SpaceOperationConfig } from "./chunk-helpers.mjs";
2
+ import { Capabilities, Capability, UndoMapping } from "@dxos/app-framework";
3
+ import { meta } from "#meta";
4
+ import * as Effect from "effect/Effect";
5
+ import { Entity } from "@dxos/echo";
6
+ import { SpaceOperation } from "#operations";
7
+ //#region src/capabilities/undo-mappings.ts
8
+ var undo_mappings_default = Capability.makeModule(Effect.fnUntraced(function* ({ createInvitationUrl, observability }) {
9
+ return [Capability.contributes(Capabilities.UndoMapping, [UndoMapping.make({
10
+ operation: SpaceOperation.DeleteField,
11
+ inverse: SpaceOperation.RestoreField,
12
+ deriveContext: (input, output) => ({
13
+ view: input.view,
14
+ field: output.field,
15
+ props: output.props,
16
+ index: output.index
17
+ }),
18
+ message: ["field-deleted.label", { ns: meta.profile.key }]
19
+ }), UndoMapping.make({
20
+ operation: SpaceOperation.RemoveObjects,
21
+ inverse: SpaceOperation.RestoreObjects,
22
+ deriveContext: (_input, output) => ({
23
+ objects: output.objects,
24
+ parentCollection: output.parentCollection,
25
+ indices: output.indices,
26
+ wasActive: output.wasActive
27
+ }),
28
+ message: (input, _output) => {
29
+ const ns = Entity.getTypename(input.objects[0]);
30
+ return ns && input.objects.length === 1 ? ["object-deleted.label", { ns: [ns, meta.profile.key] }] : ["objects-deleted.label", { ns: meta.profile.key }];
31
+ }
32
+ })]), Capability.contributes(SpaceOperationConfig, {
33
+ createInvitationUrl,
34
+ observability: observability ?? false
35
+ })];
36
+ }));
37
+ //#endregion
38
+ export { undo_mappings_default as default };
39
+
40
+ //# sourceMappingURL=chunk-undo-mappings.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-undo-mappings.mjs","names":[],"sources":["../../src/capabilities/undo-mappings.ts"],"sourcesContent":["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capabilities, Capability, UndoMapping } from '@dxos/app-framework';\nimport { Entity } from '@dxos/echo';\n\nimport { meta } from '#meta';\nimport { SpaceOperation } from '#operations';\n\nimport { SpaceOperationConfig } from '../operations/helpers';\n\ntype UndoMappingsOptions = {\n createInvitationUrl: (invitationCode: string) => string;\n observability?: boolean;\n};\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* ({ createInvitationUrl, observability }: UndoMappingsOptions) {\n return [\n Capability.contributes(Capabilities.UndoMapping, [\n UndoMapping.make({\n operation: SpaceOperation.DeleteField,\n inverse: SpaceOperation.RestoreField,\n deriveContext: (input, output) => ({\n view: input.view,\n field: output.field,\n props: output.props,\n index: output.index,\n }),\n message: ['field-deleted.label', { ns: meta.profile.key }],\n }),\n UndoMapping.make({\n operation: SpaceOperation.RemoveObjects,\n inverse: SpaceOperation.RestoreObjects,\n deriveContext: (_input, output) => ({\n objects: output.objects,\n parentCollection: output.parentCollection,\n indices: output.indices,\n wasActive: output.wasActive,\n }),\n message: (input, _output) => {\n const ns = Entity.getTypename(input.objects[0]);\n return ns && input.objects.length === 1\n ? ['object-deleted.label', { ns: [ns, meta.profile.key] }]\n : ['objects-deleted.label', { ns: meta.profile.key }];\n },\n }),\n ]),\n Capability.contributes(SpaceOperationConfig, {\n createInvitationUrl,\n observability: observability ?? false,\n }),\n ];\n }),\n);\n"],"mappings":";;;;;;;AAmBA,IAAA,wBAAe,WAAW,WACxB,OAAO,WAAW,WAAW,EAAE,qBAAqB,iBAAsC;CACxF,OAAO,CACL,WAAW,YAAY,aAAa,aAAa,CAC/C,YAAY,KAAK;EACf,WAAW,eAAe;EAC1B,SAAS,eAAe;EACxB,gBAAgB,OAAO,YAAY;GACjC,MAAM,MAAM;GACZ,OAAO,OAAO;GACd,OAAO,OAAO;GACd,OAAO,OAAO;EAChB;EACA,SAAS,CAAC,uBAAuB,EAAE,IAAI,KAAK,QAAQ,IAAI,CAAC;CAC3D,CAAC,GACD,YAAY,KAAK;EACf,WAAW,eAAe;EAC1B,SAAS,eAAe;EACxB,gBAAgB,QAAQ,YAAY;GAClC,SAAS,OAAO;GAChB,kBAAkB,OAAO;GACzB,SAAS,OAAO;GAChB,WAAW,OAAO;EACpB;EACA,UAAU,OAAO,YAAY;GAC3B,MAAM,KAAK,OAAO,YAAY,MAAM,QAAQ,EAAE;GAC9C,OAAO,MAAM,MAAM,QAAQ,WAAW,IAClC,CAAC,wBAAwB,EAAE,IAAI,CAAC,IAAI,KAAK,QAAQ,GAAG,EAAE,CAAC,IACvD,CAAC,yBAAyB,EAAE,IAAI,KAAK,QAAQ,IAAI,CAAC;EACxD;CACF,CAAC,CACH,CAAC,GACD,WAAW,YAAY,sBAAsB;EAC3C;EACA,eAAe,iBAAiB;CAClC,CAAC,CACH;AACF,CAAC,CACH"}
@@ -0,0 +1,34 @@
1
+ import "./types.mjs";
2
+ import { meta } from "#meta";
3
+ import * as Effect from "effect/Effect";
4
+ import { SpaceState } from "@dxos/client/echo";
5
+ import { Operation } from "@dxos/compute";
6
+ import { Obj, Type } from "@dxos/echo";
7
+ import { SpaceOperation } from "#operations";
8
+ //#region src/util.ts
9
+ var PERSONAL_SPACE_LABEL = ["personal-space.label", { ns: meta.profile.key }];
10
+ var UNNAMED_SPACE_LABEL = ["unnamed-space.label", { ns: meta.profile.key }];
11
+ var SPACES = `${meta.profile.key}-spaces`;
12
+ /**
13
+ * Creates a synthetic CreateObjectEntry for a database-persisted object schema that has no dedicated plugin capability.
14
+ * Sets inputSchema so the create dialog presents a form for the type's fields.
15
+ */
16
+ var makeCreateObjectEntryForDatabaseType = (type) => ({
17
+ id: Type.getTypename(type),
18
+ inputSchema: Type.getSchema(type),
19
+ createObject: (props, options) => Effect.gen(function* () {
20
+ const object = Obj.make(type, props);
21
+ return yield* Operation.invoke(SpaceOperation.AddObject, {
22
+ object,
23
+ target: options.target
24
+ });
25
+ })
26
+ });
27
+ /** Returns the display label for a space (name, namesCache entry, or fallback). */
28
+ var getSpaceDisplayName = (space, { personal, namesCache = {} } = {}) => {
29
+ return space.state.get() === SpaceState.SPACE_READY && (space.properties.name?.length ?? 0) > 0 ? space.properties.name : namesCache[space.id] ? namesCache[space.id] : personal ? PERSONAL_SPACE_LABEL : UNNAMED_SPACE_LABEL;
30
+ };
31
+ //#endregion
32
+ export { getSpaceDisplayName as n, makeCreateObjectEntryForDatabaseType as r, SPACES as t };
33
+
34
+ //# sourceMappingURL=chunk-util.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-util.mjs","names":[],"sources":["../../src/util.ts"],"sourcesContent":["//\n// Copyright 2023 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { type Space, SpaceState } from '@dxos/client/echo';\nimport { Operation } from '@dxos/compute';\nimport { Obj, Type } from '@dxos/echo';\nimport { type Label } from '@dxos/ui-types/translations';\n\nimport { meta } from '#meta';\nimport { SpaceOperation } from '#operations';\nimport { type SpaceCapabilities } from '#types';\n\n//\n// Constants\n//\n\nconst PERSONAL_SPACE_LABEL: Label = ['personal-space.label', { ns: meta.profile.key }];\nconst UNNAMED_SPACE_LABEL: Label = ['unnamed-space.label', { ns: meta.profile.key }];\n\nexport const SPACES = `${meta.profile.key}-spaces`;\nexport { SHARED } from './types';\n\n//\n// Helpers\n//\n\n/**\n * Creates a synthetic CreateObjectEntry for a database-persisted object schema that has no dedicated plugin capability.\n * Sets inputSchema so the create dialog presents a form for the type's fields.\n */\nexport const makeCreateObjectEntryForDatabaseType = (type: Type.AnyObj): SpaceCapabilities.CreateObjectEntry => ({\n id: Type.getTypename(type),\n inputSchema: Type.getSchema(type),\n createObject: (props, options) =>\n Effect.gen(function* () {\n const object = Obj.make(type, props);\n return yield* Operation.invoke(SpaceOperation.AddObject, {\n object,\n target: options.target,\n });\n }),\n});\n\n/** Returns the display label for a space (name, namesCache entry, or fallback). */\nexport const getSpaceDisplayName = (\n space: Space,\n { personal, namesCache = {} }: { personal?: boolean; namesCache?: Record<string, string> } = {},\n): Label => {\n return space.state.get() === SpaceState.SPACE_READY && (space.properties.name?.length ?? 0) > 0\n ? space.properties.name!\n : namesCache[space.id]\n ? namesCache[space.id]\n : personal\n ? PERSONAL_SPACE_LABEL\n : UNNAMED_SPACE_LABEL;\n};\n"],"mappings":";;;;;;;;AAmBA,IAAM,uBAA8B,CAAC,wBAAwB,EAAE,IAAI,KAAK,QAAQ,IAAI,CAAC;AACrF,IAAM,sBAA6B,CAAC,uBAAuB,EAAE,IAAI,KAAK,QAAQ,IAAI,CAAC;AAEnF,IAAa,SAAS,GAAG,KAAK,QAAQ,IAAI;;;;;AAW1C,IAAa,wCAAwC,UAA4D;CAC/G,IAAI,KAAK,YAAY,IAAI;CACzB,aAAa,KAAK,UAAU,IAAI;CAChC,eAAe,OAAO,YACpB,OAAO,IAAI,aAAa;EACtB,MAAM,SAAS,IAAI,KAAK,MAAM,KAAK;EACnC,OAAO,OAAO,UAAU,OAAO,eAAe,WAAW;GACvD;GACA,QAAQ,QAAQ;EAClB,CAAC;CACH,CAAC;AACL;;AAGA,IAAa,uBACX,OACA,EAAE,UAAU,aAAa,CAAC,MAAmE,CAAC,MACpF;CACV,OAAO,MAAM,MAAM,IAAI,MAAM,WAAW,gBAAgB,MAAM,WAAW,MAAM,UAAU,KAAK,IAC1F,MAAM,WAAW,OACjB,WAAW,MAAM,MACf,WAAW,MAAM,MACjB,WACE,uBACA;AACV"}
@@ -0,0 +1,16 @@
1
+ import { SpaceCapabilities } from "./types.mjs";
2
+ import { n as SpaceOperation } from "./chunk-definitions.mjs";
3
+ import { Capabilities } from "@dxos/app-framework";
4
+ import * as Effect from "effect/Effect";
5
+ import { Operation } from "@dxos/compute";
6
+ //#region src/operations/wait-for-object.ts
7
+ var handler = SpaceOperation.WaitForObject.pipe(Operation.withHandler(Effect.fnUntraced(function* (input) {
8
+ yield* Capabilities.updateAtomValue(SpaceCapabilities.EphemeralState, (current) => ({
9
+ ...current,
10
+ awaiting: input.id
11
+ }));
12
+ })));
13
+ //#endregion
14
+ export { handler as default };
15
+
16
+ //# sourceMappingURL=chunk-wait-for-object.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-wait-for-object.mjs","names":[],"sources":["../../src/operations/wait-for-object.ts"],"sourcesContent":["// Copyright 2025 DXOS.org\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capabilities } from '@dxos/app-framework';\nimport { Operation } from '@dxos/compute';\n\nimport { SpaceCapabilities } from '../types';\nimport { SpaceOperation } from './definitions';\n\nconst handler: Operation.WithHandler<typeof SpaceOperation.WaitForObject> = SpaceOperation.WaitForObject.pipe(\n Operation.withHandler(\n Effect.fnUntraced(function* (input) {\n yield* Capabilities.updateAtomValue(SpaceCapabilities.EphemeralState, (current) => ({\n ...current,\n awaiting: input.id,\n }));\n }),\n ),\n);\nexport default handler;\n"],"mappings":";;;;;;AAUA,IAAM,UAAsE,eAAe,cAAc,KACvG,UAAU,YACR,OAAO,WAAW,WAAW,OAAO;CAClC,OAAO,aAAa,gBAAgB,kBAAkB,iBAAiB,aAAa;EAClF,GAAG;EACH,UAAU,MAAM;CAClB,EAAE;AACJ,CAAC,CACH,CACF"}
@@ -0,0 +1,329 @@
1
+ import { n as getSpaceDisplayName } from "./chunk-util.mjs";
2
+ import { RENAME_POPOVER } from "./constants.mjs";
3
+ import { meta } from "#meta";
4
+ import { LayoutOperation } from "@dxos/app-toolkit";
5
+ import { Filter, Obj, Query } from "@dxos/echo";
6
+ import { SpaceOperation } from "#operations";
7
+ import { useCallback, useEffect, useMemo, useState } from "react";
8
+ import { useOperationInvoker } from "@dxos/app-framework/ui";
9
+ import { useLayout } from "@dxos/app-toolkit/ui";
10
+ import { useQuery } from "@dxos/echo-react";
11
+ import { useClient } from "@dxos/react-client";
12
+ import { useSpaces } from "@dxos/react-client/echo";
13
+ import { Button, Icon, IconButton, Toast, toLocalizedString, useDefaultValue, useTranslation } from "@dxos/react-ui";
14
+ import { getStyles, osTranslations } from "@dxos/ui-theme";
15
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
16
+ import { Form, omitId } from "@dxos/react-ui-form";
17
+ import { Listbox, Picker } from "@dxos/react-ui-list";
18
+ import { SearchList, useSearchListResults } from "@dxos/react-ui-search";
19
+ import { useInputSurfaceLookup } from "#hooks";
20
+ import { Context } from "@dxos/context";
21
+ //#region src/components/AwaitingObject/AwaitingObject.tsx
22
+ var WAIT_FOR_OBJECT_TIMEOUT = 180 * 1e3;
23
+ var TOAST_TIMEOUT = 240 * 1e3;
24
+ var AwaitingObject = ({ id }) => {
25
+ const { t } = useTranslation(meta.profile.key);
26
+ const { invokePromise } = useOperationInvoker();
27
+ const [open, setOpen] = useState(true);
28
+ const [waiting, setWaiting] = useState(true);
29
+ const [found, setFound] = useState(false);
30
+ const layout = useLayout();
31
+ const client = useClient();
32
+ const spaces = useSpaces();
33
+ const query = useMemo(() => Query.select(Filter.everything()).from(spaces.map((space) => space.db)), [spaces]);
34
+ const objects = useQuery(client.spaces, query);
35
+ useEffect(() => {
36
+ if (!id) return;
37
+ const timeout = setTimeout(() => setWaiting(false), WAIT_FOR_OBJECT_TIMEOUT);
38
+ return () => clearTimeout(timeout);
39
+ }, [id]);
40
+ useEffect(() => {
41
+ if (objects.findIndex((object) => Obj.getURI(object) === id) > -1) {
42
+ setFound(true);
43
+ if (layout.active.includes(id)) setOpen(false);
44
+ }
45
+ }, [
46
+ id,
47
+ objects,
48
+ layout
49
+ ]);
50
+ const handleClose = useCallback(async () => invokePromise(SpaceOperation.WaitForObject, { id: void 0 }), [invokePromise]);
51
+ const handleNavigate = useCallback(() => {
52
+ invokePromise(LayoutOperation.Open, { subject: [id] });
53
+ handleClose();
54
+ }, [
55
+ id,
56
+ handleClose,
57
+ invokePromise
58
+ ]);
59
+ return /* @__PURE__ */ jsxs(Toast.Root, {
60
+ open,
61
+ duration: TOAST_TIMEOUT,
62
+ onOpenChange: setOpen,
63
+ children: [
64
+ /* @__PURE__ */ jsx(Toast.Title, {
65
+ classNames: "flex items-center gap-2",
66
+ children: found ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(Icon, { icon: "ph--check-circle--regular" }), /* @__PURE__ */ jsx("span", { children: t("found-object.label") })] }) : waiting ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(Icon, {
67
+ icon: "ph--circle-notch--regular",
68
+ classNames: "animate-spin"
69
+ }), /* @__PURE__ */ jsx("span", { children: t("waiting-for-object.label") })] }) : /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(Icon, { icon: "ph--placeholder--regular" }), /* @__PURE__ */ jsx("span", { children: t("object-not-found.label") })] })
70
+ }),
71
+ /* @__PURE__ */ jsx(Toast.Description, { children: t(found ? "found-object.description" : waiting ? "waiting-for-object.description" : "object-not-found.description") }),
72
+ /* @__PURE__ */ jsx(Toast.Actions, { children: found ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(Toast.Action, {
73
+ altText: t("go-to-object.alt"),
74
+ asChild: true,
75
+ children: /* @__PURE__ */ jsx(Button, {
76
+ variant: "primary",
77
+ onClick: handleNavigate,
78
+ children: t("go-to-object.label")
79
+ })
80
+ }), /* @__PURE__ */ jsx(Toast.Close, {
81
+ asChild: true,
82
+ children: /* @__PURE__ */ jsx(Button, {
83
+ onClick: handleClose,
84
+ children: t("close.label", { ns: osTranslations })
85
+ })
86
+ })] }) : /* @__PURE__ */ jsx(Toast.Close, {
87
+ asChild: true,
88
+ children: /* @__PURE__ */ jsx(Button, {
89
+ onClick: handleClose,
90
+ children: t(waiting ? "close.label" : "confirm.label", { ns: osTranslations })
91
+ })
92
+ }) })
93
+ ]
94
+ });
95
+ };
96
+ //#endregion
97
+ //#region src/components/CreateObjectPanel/CreateObjectPanel.tsx
98
+ var CreateObjectPanel = ({ options, spaces, typename, target, initialFormValues: initialFormValuesProp, defaultSpaceId, resolve, onTargetChange, onTypenameChange, onCreateObject }) => {
99
+ const initialFormValues = useDefaultValue(initialFormValuesProp, () => ({}));
100
+ const metadata = typename && resolve?.(typename);
101
+ const sortedOptions = useMemo(() => [...options].sort((a, b) => a.label.localeCompare(b.label)), [options]);
102
+ const handleCreateObject = useCallback(async (props) => {
103
+ if (!metadata) return;
104
+ await onCreateObject?.({
105
+ metadata,
106
+ data: props
107
+ });
108
+ }, [onCreateObject, metadata]);
109
+ const handleSelectOption = useCallback(async (id) => {
110
+ const metadata = resolve?.(id);
111
+ if (metadata && !metadata.inputSchema && !metadata.customPanel) await onCreateObject?.({ metadata });
112
+ else onTypenameChange?.(id);
113
+ }, [resolve, onCreateObject]);
114
+ const inputSchema = useMemo(() => metadata && typeof metadata === "object" && metadata.inputSchema ? omitId(metadata.inputSchema) : void 0, [metadata]);
115
+ const inputSurfaceLookup = useInputSurfaceLookup({ target });
116
+ if (!metadata) return /* @__PURE__ */ jsx(SelectType, {
117
+ options: sortedOptions,
118
+ onChange: handleSelectOption
119
+ });
120
+ if (!target) return /* @__PURE__ */ jsx(SelectSpace, {
121
+ spaces,
122
+ defaultSpaceId,
123
+ onChange: onTargetChange
124
+ });
125
+ if (metadata.customPanel) {
126
+ const CustomPanel = metadata.customPanel;
127
+ return /* @__PURE__ */ jsx(CustomPanel, {
128
+ target,
129
+ initialFormValues,
130
+ onCreateObject: (data) => handleCreateObject(data)
131
+ });
132
+ }
133
+ if (metadata.inputSchema) return /* @__PURE__ */ jsx(Form.Root, {
134
+ autoFocus: true,
135
+ schema: inputSchema,
136
+ defaultValues: initialFormValues,
137
+ fieldProvider: inputSurfaceLookup,
138
+ db: Obj.isObject(target) ? Obj.getDatabase(target) : target,
139
+ onSave: handleCreateObject,
140
+ testId: "create-object-form",
141
+ children: /* @__PURE__ */ jsx(Form.Viewport, { children: /* @__PURE__ */ jsxs(Form.Content, { children: [/* @__PURE__ */ jsx(Form.FieldSet, {}), /* @__PURE__ */ jsx(Form.Submit, {})] }) })
142
+ });
143
+ return null;
144
+ };
145
+ CreateObjectPanel.displayName = "CreateObjectPanel";
146
+ var SelectType = ({ options, onChange }) => {
147
+ const { t } = useTranslation(meta.profile.key);
148
+ const { results, handleSearch } = useSearchListResults({
149
+ items: options,
150
+ extract: (option) => [
151
+ option.label,
152
+ option.plugin,
153
+ option.description
154
+ ].filter(Boolean).join(" ")
155
+ });
156
+ return /* @__PURE__ */ jsxs(SearchList.Root, {
157
+ onSearch: handleSearch,
158
+ children: [/* @__PURE__ */ jsx(SearchList.Input, {
159
+ classNames: "mb-form-gap",
160
+ autoFocus: true,
161
+ "data-testid": "create-object-form.schema-input",
162
+ placeholder: t("schema-input.placeholder")
163
+ }), /* @__PURE__ */ jsx(SearchList.Viewport, { children: results.map((option) => /* @__PURE__ */ jsxs(Picker.Item, {
164
+ value: option.id,
165
+ onSelect: () => onChange(option.id),
166
+ classNames: "flex gap-3 items-center px-2 py-2 rounded-xs",
167
+ children: [/* @__PURE__ */ jsx(Icon, {
168
+ icon: option.icon ?? "ph--circle-dashed--regular",
169
+ size: 8,
170
+ classNames: getIconHueStyles(option.iconHue)
171
+ }), /* @__PURE__ */ jsxs("div", {
172
+ className: "flex flex-col min-w-0 grow gap-0.5",
173
+ children: [/* @__PURE__ */ jsx("span", {
174
+ className: "truncate",
175
+ children: option.label
176
+ }), (option.plugin || option.description) && /* @__PURE__ */ jsx("span", {
177
+ className: "truncate text-description text-xs",
178
+ children: option.plugin ? t("plugin-subtitle.label", { plugin: option.plugin }) : option.description
179
+ })]
180
+ })]
181
+ }, option.id)) })]
182
+ });
183
+ };
184
+ var SelectSpace = ({ spaces, defaultSpaceId, onChange }) => {
185
+ const { t } = useTranslation(meta.profile.key);
186
+ const { results, handleSearch } = useSearchListResults({
187
+ items: useMemo(() => [...spaces].sort((a, b) => {
188
+ const labelA = toLocalizedString(getSpaceDisplayName(a, { personal: a.id === defaultSpaceId }), t);
189
+ const labelB = toLocalizedString(getSpaceDisplayName(b, { personal: b.id === defaultSpaceId }), t);
190
+ return labelA.localeCompare(labelB);
191
+ }), [
192
+ spaces,
193
+ defaultSpaceId,
194
+ t
195
+ ]),
196
+ extract: (space) => toLocalizedString(getSpaceDisplayName(space, { personal: space.id === defaultSpaceId }), t)
197
+ });
198
+ return /* @__PURE__ */ jsxs(SearchList.Root, {
199
+ onSearch: handleSearch,
200
+ children: [/* @__PURE__ */ jsx(SearchList.Input, {
201
+ classNames: "mb-form-gap",
202
+ autoFocus: true,
203
+ "data-testid": "create-object-form.space-input",
204
+ placeholder: t("space-input.placeholder")
205
+ }), /* @__PURE__ */ jsx(SearchList.Viewport, { children: results.map((space) => {
206
+ return /* @__PURE__ */ jsx(SearchList.Item, {
207
+ value: space.id,
208
+ label: toLocalizedString(getSpaceDisplayName(space, { personal: space.id === defaultSpaceId }), t),
209
+ onSelect: () => onChange?.(space.db)
210
+ }, space.id);
211
+ }) })]
212
+ });
213
+ };
214
+ var getIconHueStyles = (iconHue) => {
215
+ return (iconHue ? getStyles(iconHue) : void 0)?.text;
216
+ };
217
+ //#endregion
218
+ //#region src/components/ForeignKeys/ForeignKeys.tsx
219
+ var ForeignKeys = ({ keys, onDelete }) => {
220
+ return /* @__PURE__ */ jsx(Listbox.Root, { children: /* @__PURE__ */ jsx(Listbox.Content, {
221
+ classNames: "gap-2",
222
+ children: keys.map((key) => /* @__PURE__ */ jsx(KeyItem, {
223
+ forignKey: key,
224
+ onDelete
225
+ }, key.id))
226
+ }) });
227
+ };
228
+ var KeyItem = ({ forignKey, onDelete }) => {
229
+ const { t } = useTranslation(meta.profile.key);
230
+ const handleDelete = useCallback(() => {
231
+ onDelete?.(forignKey);
232
+ }, [forignKey, onDelete]);
233
+ return /* @__PURE__ */ jsxs(Listbox.Item, {
234
+ id: forignKey.id,
235
+ classNames: "px-2 gap-2",
236
+ children: [/* @__PURE__ */ jsxs("div", {
237
+ className: "flex flex-col grow truncate",
238
+ children: [/* @__PURE__ */ jsx("div", { children: forignKey.source }), /* @__PURE__ */ jsx("div", {
239
+ className: "text-description text-sm truncate",
240
+ children: forignKey.id
241
+ })]
242
+ }), /* @__PURE__ */ jsx(IconButton, {
243
+ iconOnly: true,
244
+ icon: "ph--x--regular",
245
+ variant: "ghost",
246
+ label: t("delete-key.button"),
247
+ onClick: handleDelete
248
+ })]
249
+ });
250
+ };
251
+ //#endregion
252
+ //#region src/components/SyncStatus/save-tracker.ts
253
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-space/src/components/SyncStatus/save-tracker.ts";
254
+ var createClientSaveTracker = (client, cb) => {
255
+ const CleanupFns = {};
256
+ const state = {};
257
+ const install = (spaces) => {
258
+ for (const space of spaces) {
259
+ if (state[space.id]) continue;
260
+ state[space.id] = "saved";
261
+ CleanupFns[space.id] = createSpaceSaveTracker(space, (s) => {
262
+ state[space.id] = s;
263
+ cb(Object.values(state).some((s) => s === "saving") ? "saving" : "saved");
264
+ });
265
+ }
266
+ };
267
+ client.spaces.subscribe((spaces) => {
268
+ install(spaces);
269
+ });
270
+ install(client.spaces.get());
271
+ return () => {
272
+ for (const unsubscribe of Object.values(CleanupFns)) unsubscribe();
273
+ };
274
+ };
275
+ var createSpaceSaveTracker = (space, cb) => {
276
+ const ctx = new Context(void 0, {
277
+ "~LogMeta": "~LogMeta",
278
+ F: __dxlog_file,
279
+ L: 41
280
+ });
281
+ space.waitUntilReady().then(() => {
282
+ if (ctx.disposed) return;
283
+ let hasUnsavedChanges = false;
284
+ let lastFlushPromise;
285
+ space.internal.db.saveStateChanged.on(ctx, ({ unsavedDocuments }) => {
286
+ hasUnsavedChanges = unsavedDocuments.length > 0;
287
+ });
288
+ space.internal.db.saveStateChanged.debounce(500).on(ctx, () => {
289
+ if (hasUnsavedChanges) {
290
+ lastFlushPromise = void 0;
291
+ cb("saving");
292
+ } else {
293
+ const flushPromise = space.db.flush();
294
+ lastFlushPromise = flushPromise;
295
+ flushPromise.then(() => {
296
+ if (lastFlushPromise === flushPromise) cb("saved");
297
+ });
298
+ }
299
+ });
300
+ });
301
+ return () => {
302
+ ctx.dispose();
303
+ };
304
+ };
305
+ //#endregion
306
+ //#region src/components/SyncStatus/status.ts
307
+ var getStatus = ({ offline, saved, stalled, needsToUpload, needsToDownload }) => {
308
+ if (!saved) return "saving-locally";
309
+ else if (offline) return needsToUpload || needsToDownload ? "disconnected" : "offline-persisted";
310
+ else if (stalled) return "stalled";
311
+ else if (needsToDownload) return "downloading";
312
+ else if (needsToUpload) return "uploading";
313
+ else return "remote-synced";
314
+ };
315
+ var getIcon = (status) => {
316
+ switch (status) {
317
+ case "saving-locally": return "ph--download--regular";
318
+ case "downloading": return "ph--cloud-arrow-down--regular";
319
+ case "uploading": return "ph--cloud-arrow-up--regular";
320
+ case "stalled": return "ph--cloud-warning--regular";
321
+ case "disconnected": return "ph--cloud-slash--regular";
322
+ case "offline-persisted": return "ph--check-circle--regular";
323
+ case "remote-synced": return "ph--cloud-check--regular";
324
+ }
325
+ };
326
+ //#endregion
327
+ export { AwaitingObject, CreateObjectPanel, ForeignKeys, RENAME_POPOVER, createClientSaveTracker, getIcon, getStatus };
328
+
329
+ //# sourceMappingURL=components.mjs.map