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

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 (269) hide show
  1. package/dist/lib/browser/CollectionMain-AX7KKXWP.mjs +31 -0
  2. package/dist/lib/browser/CollectionMain-AX7KKXWP.mjs.map +7 -0
  3. package/dist/lib/browser/ObjectDetailsPanel-ETI5YBTH.mjs +90 -0
  4. package/dist/lib/browser/ObjectDetailsPanel-ETI5YBTH.mjs.map +7 -0
  5. package/dist/lib/browser/RecordMain-TEBGAVSL.mjs +68 -0
  6. package/dist/lib/browser/RecordMain-TEBGAVSL.mjs.map +7 -0
  7. package/dist/lib/browser/{app-graph-builder-PMDF6PJV.mjs → app-graph-builder-W7RVDAUA.mjs} +202 -48
  8. package/dist/lib/browser/app-graph-builder-W7RVDAUA.mjs.map +7 -0
  9. package/dist/lib/browser/{app-graph-serializer-UKYMBX4O.mjs → app-graph-serializer-VLHVTDX4.mjs} +14 -14
  10. package/dist/lib/browser/app-graph-serializer-VLHVTDX4.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-GVTXQCIW.mjs → chunk-2BFVC5K6.mjs} +431 -373
  12. package/dist/lib/browser/chunk-2BFVC5K6.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-E2I747A7.mjs +20 -0
  14. package/dist/lib/browser/chunk-E2I747A7.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-EIXZABXD.mjs +19 -0
  16. package/dist/lib/browser/chunk-EIXZABXD.mjs.map +7 -0
  17. package/dist/lib/browser/{chunk-VLBRSGJ2.mjs → chunk-ELJDGQTO.mjs} +3 -3
  18. package/dist/lib/browser/{chunk-VLBRSGJ2.mjs.map → chunk-ELJDGQTO.mjs.map} +3 -3
  19. package/dist/lib/browser/chunk-IRKDREHY.mjs +11 -0
  20. package/dist/lib/browser/chunk-IRKDREHY.mjs.map +7 -0
  21. package/dist/lib/browser/{chunk-S6NY637J.mjs → chunk-JCHSUOPF.mjs} +70 -10
  22. package/dist/lib/browser/chunk-JCHSUOPF.mjs.map +7 -0
  23. package/dist/lib/browser/{chunk-WBSEOLEM.mjs → chunk-PN27K4I7.mjs} +209 -54
  24. package/dist/lib/browser/chunk-PN27K4I7.mjs.map +7 -0
  25. package/dist/lib/browser/{chunk-6VLSHG4A.mjs → chunk-ZIZ2JLW6.mjs} +71 -9
  26. package/dist/lib/browser/chunk-ZIZ2JLW6.mjs.map +7 -0
  27. package/dist/lib/browser/{identity-created-23XJJV2N.mjs → identity-created-PW2BA46S.mjs} +4 -4
  28. package/dist/lib/browser/{identity-created-23XJJV2N.mjs.map → identity-created-PW2BA46S.mjs.map} +3 -3
  29. package/dist/lib/browser/index.mjs +95 -26
  30. package/dist/lib/browser/index.mjs.map +3 -3
  31. package/dist/lib/browser/{intent-resolver-WK5WYFH3.mjs → intent-resolver-HA7DPAUE.mjs} +185 -30
  32. package/dist/lib/browser/intent-resolver-HA7DPAUE.mjs.map +7 -0
  33. package/dist/lib/browser/meta.json +1 -1
  34. package/dist/lib/browser/{react-root-7S6FIC5G.mjs → react-root-YQUJU64P.mjs} +11 -11
  35. package/dist/lib/browser/react-root-YQUJU64P.mjs.map +7 -0
  36. package/dist/lib/browser/{react-surface-6C3YJNDK.mjs → react-surface-HTXYMRSW.mjs} +78 -46
  37. package/dist/lib/browser/react-surface-HTXYMRSW.mjs.map +7 -0
  38. package/dist/lib/browser/{schema-defs-K3B3OAH4.mjs → schema-defs-R56ZDBZ7.mjs} +5 -5
  39. package/dist/lib/browser/schema-defs-R56ZDBZ7.mjs.map +7 -0
  40. package/dist/lib/browser/{settings-XNWYRWNM.mjs → settings-5XPQMSPO.mjs} +5 -5
  41. package/dist/lib/browser/{settings-XNWYRWNM.mjs.map → settings-5XPQMSPO.mjs.map} +1 -1
  42. package/dist/lib/browser/{spaces-ready-K7NSNBHM.mjs → spaces-ready-YY77ANIF.mjs} +17 -15
  43. package/dist/lib/browser/spaces-ready-YY77ANIF.mjs.map +7 -0
  44. package/dist/lib/browser/{state-522XTUR4.mjs → state-Y4RVCG4A.mjs} +7 -7
  45. package/dist/lib/browser/state-Y4RVCG4A.mjs.map +7 -0
  46. package/dist/lib/browser/types/index.mjs +2 -2
  47. package/dist/lib/node-esm/CollectionMain-EU57SRYK.mjs +32 -0
  48. package/dist/lib/node-esm/CollectionMain-EU57SRYK.mjs.map +7 -0
  49. package/dist/lib/node-esm/ObjectDetailsPanel-TQ5GN4QJ.mjs +91 -0
  50. package/dist/lib/node-esm/ObjectDetailsPanel-TQ5GN4QJ.mjs.map +7 -0
  51. package/dist/lib/node-esm/RecordMain-WLYJMYER.mjs +70 -0
  52. package/dist/lib/node-esm/RecordMain-WLYJMYER.mjs.map +7 -0
  53. package/dist/lib/node-esm/{app-graph-builder-TO72W6MI.mjs → app-graph-builder-5ZJJUMQI.mjs} +202 -48
  54. package/dist/lib/node-esm/app-graph-builder-5ZJJUMQI.mjs.map +7 -0
  55. package/dist/lib/node-esm/{app-graph-serializer-LA3IZDXJ.mjs → app-graph-serializer-EZJSGJUT.mjs} +14 -14
  56. package/dist/lib/node-esm/app-graph-serializer-EZJSGJUT.mjs.map +7 -0
  57. package/dist/lib/node-esm/{chunk-SXD6T2N4.mjs → chunk-5XRYHWL7.mjs} +71 -9
  58. package/dist/lib/node-esm/chunk-5XRYHWL7.mjs.map +7 -0
  59. package/dist/lib/node-esm/{chunk-2THX6G4C.mjs → chunk-6WNZW6KT.mjs} +70 -10
  60. package/dist/lib/node-esm/chunk-6WNZW6KT.mjs.map +7 -0
  61. package/dist/lib/node-esm/{chunk-OUBADVJE.mjs → chunk-BLPXWPLB.mjs} +431 -373
  62. package/dist/lib/node-esm/chunk-BLPXWPLB.mjs.map +7 -0
  63. package/dist/lib/node-esm/chunk-IJVBBVCL.mjs +21 -0
  64. package/dist/lib/node-esm/chunk-IJVBBVCL.mjs.map +7 -0
  65. package/dist/lib/node-esm/{chunk-HWNG4MEU.mjs → chunk-MWNATOXL.mjs} +2 -4
  66. package/dist/lib/node-esm/chunk-MWNATOXL.mjs.map +7 -0
  67. package/dist/lib/node-esm/{chunk-SSLBYZEY.mjs → chunk-Q6AAQLQG.mjs} +3 -3
  68. package/dist/lib/node-esm/{chunk-SSLBYZEY.mjs.map → chunk-Q6AAQLQG.mjs.map} +3 -3
  69. package/dist/lib/node-esm/chunk-SVFKU7EW.mjs +20 -0
  70. package/dist/lib/node-esm/chunk-SVFKU7EW.mjs.map +7 -0
  71. package/dist/lib/node-esm/{chunk-HJJHLWKY.mjs → chunk-XDQXUZMK.mjs} +209 -54
  72. package/dist/lib/node-esm/chunk-XDQXUZMK.mjs.map +7 -0
  73. package/dist/lib/node-esm/{identity-created-IJQO6GCR.mjs → identity-created-MWTLGQRU.mjs} +4 -4
  74. package/dist/lib/node-esm/{identity-created-IJQO6GCR.mjs.map → identity-created-MWTLGQRU.mjs.map} +3 -3
  75. package/dist/lib/node-esm/index.mjs +95 -26
  76. package/dist/lib/node-esm/index.mjs.map +3 -3
  77. package/dist/lib/node-esm/{intent-resolver-HSR27ME4.mjs → intent-resolver-LQNHMPIX.mjs} +185 -30
  78. package/dist/lib/node-esm/intent-resolver-LQNHMPIX.mjs.map +7 -0
  79. package/dist/lib/node-esm/meta.json +1 -1
  80. package/dist/lib/node-esm/{react-root-HUK3ANLV.mjs → react-root-UTLJEIKE.mjs} +11 -11
  81. package/dist/lib/node-esm/react-root-UTLJEIKE.mjs.map +7 -0
  82. package/dist/lib/node-esm/{react-surface-AGAWX7DD.mjs → react-surface-LYDYON3U.mjs} +78 -46
  83. package/dist/lib/node-esm/react-surface-LYDYON3U.mjs.map +7 -0
  84. package/dist/lib/node-esm/{schema-defs-4MCDG4DV.mjs → schema-defs-7IMJPIWS.mjs} +5 -5
  85. package/dist/lib/node-esm/schema-defs-7IMJPIWS.mjs.map +7 -0
  86. package/dist/lib/node-esm/{settings-YGKHGFPH.mjs → settings-XBSK5KHH.mjs} +5 -5
  87. package/dist/lib/node-esm/{settings-YGKHGFPH.mjs.map → settings-XBSK5KHH.mjs.map} +1 -1
  88. package/dist/lib/node-esm/{spaces-ready-UM2P3DCR.mjs → spaces-ready-YX4IHT4P.mjs} +17 -15
  89. package/dist/lib/node-esm/spaces-ready-YX4IHT4P.mjs.map +7 -0
  90. package/dist/lib/node-esm/{state-C4IOXPZP.mjs → state-HOHAVPUO.mjs} +7 -7
  91. package/dist/lib/node-esm/state-HOHAVPUO.mjs.map +7 -0
  92. package/dist/lib/node-esm/types/index.mjs +2 -2
  93. package/dist/types/src/SpacePlugin.d.ts +1 -1
  94. package/dist/types/src/SpacePlugin.d.ts.map +1 -1
  95. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
  96. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  97. package/dist/types/src/capabilities/app-graph-serializer.d.ts +1 -1
  98. package/dist/types/src/capabilities/capabilities.d.ts +11 -5
  99. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  100. package/dist/types/src/capabilities/identity-created.d.ts +1 -1
  101. package/dist/types/src/capabilities/identity-created.d.ts.map +1 -1
  102. package/dist/types/src/capabilities/index.d.ts +11 -12
  103. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  104. package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
  105. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  106. package/dist/types/src/capabilities/react-root.d.ts +2 -2
  107. package/dist/types/src/capabilities/react-root.d.ts.map +1 -1
  108. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  109. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  110. package/dist/types/src/capabilities/schema-defs.d.ts +1 -1
  111. package/dist/types/src/capabilities/schema-defs.d.ts.map +1 -1
  112. package/dist/types/src/capabilities/settings.d.ts +1 -1
  113. package/dist/types/src/capabilities/spaces-ready.d.ts +1 -1
  114. package/dist/types/src/capabilities/spaces-ready.d.ts.map +1 -1
  115. package/dist/types/src/capabilities/state.d.ts +1 -1
  116. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  117. package/dist/types/src/components/AwaitingObject.d.ts.map +1 -1
  118. package/dist/types/src/components/CollectionMain.d.ts +1 -0
  119. package/dist/types/src/components/CollectionMain.d.ts.map +1 -1
  120. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts +5 -4
  121. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
  122. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts +1584 -4
  123. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts.map +1 -1
  124. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +5 -3
  125. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
  126. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts +1 -1
  127. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts.map +1 -1
  128. package/dist/types/src/components/JoinDialog.d.ts +1 -1
  129. package/dist/types/src/components/JoinDialog.d.ts.map +1 -1
  130. package/dist/types/src/components/MembersContainer.d.ts +3 -2
  131. package/dist/types/src/components/MembersContainer.d.ts.map +1 -1
  132. package/dist/types/src/components/MembersContainer.stories.d.ts +1584 -5
  133. package/dist/types/src/components/MembersContainer.stories.d.ts.map +1 -1
  134. package/dist/types/src/components/MenuFooter.d.ts.map +1 -1
  135. package/dist/types/src/components/ObjectDetailsPanel.d.ts +9 -0
  136. package/dist/types/src/components/ObjectDetailsPanel.d.ts.map +1 -0
  137. package/dist/types/src/components/ObjectSettings/AdvancedObjectSettings.d.ts.map +1 -1
  138. package/dist/types/src/components/ObjectSettings/ObjectSettingsContainer.d.ts.map +1 -1
  139. package/dist/types/src/components/PersistenceStatus.d.ts.map +1 -1
  140. package/dist/types/src/components/PopoverRenameObject.d.ts +2 -2
  141. package/dist/types/src/components/PopoverRenameObject.d.ts.map +1 -1
  142. package/dist/types/src/components/PopoverRenameSpace.d.ts +1 -1
  143. package/dist/types/src/components/PopoverRenameSpace.d.ts.map +1 -1
  144. package/dist/types/src/components/RecordMain.d.ts +7 -0
  145. package/dist/types/src/components/RecordMain.d.ts.map +1 -0
  146. package/dist/types/src/components/SpacePluginSettings.d.ts.map +1 -1
  147. package/dist/types/src/components/SpacePresence.d.ts.map +1 -1
  148. package/dist/types/src/components/SpacePresence.stories.d.ts +1412 -4
  149. package/dist/types/src/components/SpacePresence.stories.d.ts.map +1 -1
  150. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
  151. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts +1417 -4
  152. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts.map +1 -1
  153. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts +1 -1
  154. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
  155. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts +1418 -5
  156. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
  157. package/dist/types/src/components/SyncStatus/status.d.ts +5 -5
  158. package/dist/types/src/components/ViewEditor.d.ts +8 -0
  159. package/dist/types/src/components/ViewEditor.d.ts.map +1 -0
  160. package/dist/types/src/components/index.d.ts +14 -1
  161. package/dist/types/src/components/index.d.ts.map +1 -1
  162. package/dist/types/src/events.d.ts +1 -0
  163. package/dist/types/src/events.d.ts.map +1 -1
  164. package/dist/types/src/hooks/useActiveSpace.d.ts.map +1 -1
  165. package/dist/types/src/meta.d.ts +0 -1
  166. package/dist/types/src/meta.d.ts.map +1 -1
  167. package/dist/types/src/translations.d.ts +1262 -11
  168. package/dist/types/src/translations.d.ts.map +1 -1
  169. package/dist/types/src/types/types.d.ts +124 -64
  170. package/dist/types/src/types/types.d.ts.map +1 -1
  171. package/dist/types/src/util.d.ts +34 -7
  172. package/dist/types/src/util.d.ts.map +1 -1
  173. package/dist/types/tsconfig.tsbuildinfo +1 -1
  174. package/package.json +61 -60
  175. package/src/SpacePlugin.ts +205 -137
  176. package/src/capabilities/app-graph-builder.ts +249 -36
  177. package/src/capabilities/app-graph-serializer.ts +7 -7
  178. package/src/capabilities/capabilities.ts +15 -9
  179. package/src/capabilities/identity-created.ts +1 -1
  180. package/src/capabilities/index.ts +0 -1
  181. package/src/capabilities/intent-resolver.ts +140 -19
  182. package/src/capabilities/react-root.tsx +4 -3
  183. package/src/capabilities/react-surface.tsx +93 -42
  184. package/src/capabilities/schema-defs.ts +3 -2
  185. package/src/capabilities/spaces-ready.ts +10 -7
  186. package/src/capabilities/state.ts +5 -4
  187. package/src/components/AwaitingObject.tsx +7 -9
  188. package/src/components/CollectionMain.tsx +4 -2
  189. package/src/components/CollectionSection.tsx +2 -2
  190. package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +11 -10
  191. package/src/components/CreateDialog/CreateObjectDialog.tsx +50 -36
  192. package/src/components/CreateDialog/CreateObjectPanel.tsx +22 -11
  193. package/src/components/CreateDialog/CreateSpaceDialog.tsx +4 -4
  194. package/src/components/JoinDialog.tsx +7 -7
  195. package/src/components/MembersContainer.stories.tsx +36 -10
  196. package/src/components/MembersContainer.tsx +17 -16
  197. package/src/components/MenuFooter.tsx +4 -5
  198. package/src/components/ObjectDetailsPanel.tsx +79 -0
  199. package/src/components/ObjectSettings/AdvancedObjectSettings.tsx +3 -2
  200. package/src/components/ObjectSettings/ForeignKeys.tsx +2 -2
  201. package/src/components/ObjectSettings/ObjectSettingsContainer.tsx +3 -2
  202. package/src/components/PersistenceStatus.tsx +7 -8
  203. package/src/components/PopoverRenameObject.tsx +10 -16
  204. package/src/components/PopoverRenameSpace.tsx +4 -4
  205. package/src/components/RecordMain.tsx +43 -0
  206. package/src/components/SchemaContainer.tsx +4 -4
  207. package/src/components/SpacePluginSettings.tsx +8 -9
  208. package/src/components/SpacePresence.stories.tsx +23 -22
  209. package/src/components/SpacePresence.tsx +9 -9
  210. package/src/components/SpaceSettings/SpaceSettingsContainer.stories.tsx +17 -9
  211. package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +17 -17
  212. package/src/components/SyncStatus/InlineSyncStatus.tsx +2 -2
  213. package/src/components/SyncStatus/SyncStatus.stories.tsx +6 -7
  214. package/src/components/SyncStatus/SyncStatus.tsx +5 -4
  215. package/src/components/SyncStatus/status.ts +4 -4
  216. package/src/components/ViewEditor.tsx +59 -0
  217. package/src/components/index.ts +7 -1
  218. package/src/events.ts +7 -6
  219. package/src/hooks/useActiveSpace.ts +2 -2
  220. package/src/hooks/useInputSurfaceLookup.tsx +1 -1
  221. package/src/meta.ts +1 -3
  222. package/src/translations.ts +68 -5
  223. package/src/types/types.ts +70 -12
  224. package/src/util.tsx +199 -55
  225. package/dist/lib/browser/app-graph-builder-PMDF6PJV.mjs.map +0 -7
  226. package/dist/lib/browser/app-graph-serializer-UKYMBX4O.mjs.map +0 -7
  227. package/dist/lib/browser/chunk-6VLSHG4A.mjs.map +0 -7
  228. package/dist/lib/browser/chunk-C7KGJTAL.mjs +0 -18
  229. package/dist/lib/browser/chunk-C7KGJTAL.mjs.map +0 -7
  230. package/dist/lib/browser/chunk-FBCGT5YY.mjs +0 -13
  231. package/dist/lib/browser/chunk-FBCGT5YY.mjs.map +0 -7
  232. package/dist/lib/browser/chunk-GVTXQCIW.mjs.map +0 -7
  233. package/dist/lib/browser/chunk-S6NY637J.mjs.map +0 -7
  234. package/dist/lib/browser/chunk-WBSEOLEM.mjs.map +0 -7
  235. package/dist/lib/browser/chunk-XXIPJLJF.mjs +0 -19
  236. package/dist/lib/browser/chunk-XXIPJLJF.mjs.map +0 -7
  237. package/dist/lib/browser/intent-resolver-WK5WYFH3.mjs.map +0 -7
  238. package/dist/lib/browser/react-root-7S6FIC5G.mjs.map +0 -7
  239. package/dist/lib/browser/react-surface-6C3YJNDK.mjs.map +0 -7
  240. package/dist/lib/browser/schema-defs-K3B3OAH4.mjs.map +0 -7
  241. package/dist/lib/browser/schema-tools-BNP4JTD7.mjs +0 -124
  242. package/dist/lib/browser/schema-tools-BNP4JTD7.mjs.map +0 -7
  243. package/dist/lib/browser/spaces-ready-K7NSNBHM.mjs.map +0 -7
  244. package/dist/lib/browser/state-522XTUR4.mjs.map +0 -7
  245. package/dist/lib/node-esm/app-graph-builder-TO72W6MI.mjs.map +0 -7
  246. package/dist/lib/node-esm/app-graph-serializer-LA3IZDXJ.mjs.map +0 -7
  247. package/dist/lib/node-esm/chunk-2THX6G4C.mjs.map +0 -7
  248. package/dist/lib/node-esm/chunk-72QMMRKC.mjs +0 -19
  249. package/dist/lib/node-esm/chunk-72QMMRKC.mjs.map +0 -7
  250. package/dist/lib/node-esm/chunk-AT7LGFER.mjs +0 -20
  251. package/dist/lib/node-esm/chunk-AT7LGFER.mjs.map +0 -7
  252. package/dist/lib/node-esm/chunk-HJJHLWKY.mjs.map +0 -7
  253. package/dist/lib/node-esm/chunk-HWNG4MEU.mjs.map +0 -7
  254. package/dist/lib/node-esm/chunk-OUBADVJE.mjs.map +0 -7
  255. package/dist/lib/node-esm/chunk-SXD6T2N4.mjs.map +0 -7
  256. package/dist/lib/node-esm/intent-resolver-HSR27ME4.mjs.map +0 -7
  257. package/dist/lib/node-esm/react-root-HUK3ANLV.mjs.map +0 -7
  258. package/dist/lib/node-esm/react-surface-AGAWX7DD.mjs.map +0 -7
  259. package/dist/lib/node-esm/schema-defs-4MCDG4DV.mjs.map +0 -7
  260. package/dist/lib/node-esm/schema-tools-KWW5PTML.mjs +0 -126
  261. package/dist/lib/node-esm/schema-tools-KWW5PTML.mjs.map +0 -7
  262. package/dist/lib/node-esm/spaces-ready-UM2P3DCR.mjs.map +0 -7
  263. package/dist/lib/node-esm/state-C4IOXPZP.mjs.map +0 -7
  264. package/dist/types/src/capabilities/schema-tool.test.d.ts +0 -2
  265. package/dist/types/src/capabilities/schema-tool.test.d.ts.map +0 -1
  266. package/dist/types/src/capabilities/schema-tools.d.ts +0 -13
  267. package/dist/types/src/capabilities/schema-tools.d.ts.map +0 -1
  268. package/src/capabilities/schema-tool.test.ts +0 -44
  269. package/src/capabilities/schema-tools.ts +0 -125
package/src/util.tsx CHANGED
@@ -5,38 +5,38 @@
5
5
  import { Rx } from '@effect-rx/rx-react';
6
6
  import { pipe } from 'effect';
7
7
 
8
- import { chain, createIntent, LayoutAction, type PromiseIntentDispatcher } from '@dxos/app-framework';
8
+ import { LayoutAction, type PromiseIntentDispatcher, chain, createIntent } from '@dxos/app-framework';
9
9
  import { Obj, Ref, Type } from '@dxos/echo';
10
- import { EXPANDO_TYPENAME } from '@dxos/echo-schema';
10
+ import { type AnyEchoObject, EXPANDO_TYPENAME } from '@dxos/echo-schema';
11
11
  import { invariant } from '@dxos/invariant';
12
12
  import { Migrations } from '@dxos/migrations';
13
13
  import {
14
14
  ACTION_GROUP_TYPE,
15
15
  ACTION_TYPE,
16
- type ReadableGraph,
17
16
  type ActionData,
18
17
  type InvokeParams,
19
18
  type Node,
20
19
  type NodeArg,
20
+ type ReadableGraph,
21
21
  isGraphNode,
22
22
  } from '@dxos/plugin-graph';
23
- import { fullyQualifiedId, getSpace, type QueryResult, SpaceState, type Space, isSpace } from '@dxos/react-client/echo';
23
+ import { type QueryResult, type Space, SpaceState, fullyQualifiedId, getSpace, isSpace } from '@dxos/react-client/echo';
24
24
  import { ATTENDABLE_PATH_SEPARATOR } from '@dxos/react-ui-attention';
25
25
  import { type TreeData } from '@dxos/react-ui-list';
26
- import { DataType } from '@dxos/schema';
26
+ import { DataType, typenameFromQuery } from '@dxos/schema';
27
27
 
28
- import { SPACE_PLUGIN } from './meta';
29
- import { SpaceAction, SPACE_TYPE, type ObjectForm } from './types';
28
+ import { meta } from './meta';
29
+ import { type ObjectForm, SPACE_TYPE, SpaceAction } from './types';
30
30
 
31
- export const SPACES = `${SPACE_PLUGIN}-spaces`;
32
- export const COMPOSER_SPACE_LOCK = 'dxos.org/plugin/space/lock';
31
+ export const SPACES = `${meta.id}-spaces`;
32
+ export const COMPOSER_SPACE_LOCK = `${meta.id}/lock`;
33
33
  // TODO(wittjosiah): Remove.
34
34
  export const SHARED = 'shared-spaces';
35
35
 
36
36
  /**
37
37
  * Convert a query result to an Rx value of the objects.
38
38
  */
39
- export const rxFromQuery = <T extends Obj.Any>(query: QueryResult<T>): Rx.Rx<T[]> => {
39
+ export const rxFromQuery = <T extends AnyEchoObject>(query: QueryResult<T>): Rx.Rx<T[]> => {
40
40
  return Rx.make((get) => {
41
41
  const unsubscribe = query.subscribe((result) => {
42
42
  get.setSelf(result.objects);
@@ -57,8 +57,8 @@ export const getSpaceDisplayName = (
57
57
  : namesCache[space.id]
58
58
  ? namesCache[space.id]
59
59
  : personal
60
- ? ['personal space label', { ns: SPACE_PLUGIN }]
61
- : ['unnamed space label', { ns: SPACE_PLUGIN }];
60
+ ? ['personal space label', { ns: meta.id }]
61
+ : ['unnamed space label', { ns: meta.id }];
62
62
  };
63
63
 
64
64
  const getCollectionGraphNodePartials = ({
@@ -145,16 +145,15 @@ const getQueryCollectionNodePartials = ({
145
145
  space: Space;
146
146
  resolve: (typename: string) => Record<string, any>;
147
147
  }) => {
148
+ const typename = typenameFromQuery(collection.query);
148
149
  return {
149
- icon: collection.query.typename && resolve(collection.query.typename)?.icon,
150
+ icon: typename && resolve(typename)?.icon,
150
151
  acceptPersistenceClass: new Set(['echo']),
151
152
  acceptPersistenceKey: new Set([space.id]),
152
153
  role: 'branch',
153
154
  canDrop: (source: TreeData) => {
154
155
  return (
155
- isGraphNode(source.item) &&
156
- Obj.isObject(source.item.data) &&
157
- Obj.getTypename(source.item.data) === collection.query.typename
156
+ isGraphNode(source.item) && Obj.isObject(source.item.data) && Obj.getTypename(source.item.data) === typename
158
157
  );
159
158
  },
160
159
  onTransferStart: (child: Node<Obj.Any>, index?: number) => {
@@ -166,6 +165,31 @@ const getQueryCollectionNodePartials = ({
166
165
  };
167
166
  };
168
167
 
168
+ const getSchemaGraphNodePartials = () => {
169
+ return {
170
+ role: 'branch',
171
+ canDrop: () => false,
172
+ };
173
+ };
174
+
175
+ const getViewGraphNodePartials = ({
176
+ view,
177
+ resolve,
178
+ }: {
179
+ view: DataType.View;
180
+ resolve: (typename: string) => Record<string, any>;
181
+ }) => {
182
+ const presentation = view.presentation.target;
183
+ const typename = presentation ? Obj.getTypename(presentation) : undefined;
184
+ const metadata = typename ? resolve(typename) : {};
185
+
186
+ return {
187
+ label: view.name || ['object name placeholder', { ns: typename, default: 'New view' }],
188
+ icon: metadata.icon,
189
+ canDrop: () => false,
190
+ };
191
+ };
192
+
169
193
  const checkPendingMigration = (space: Space) => {
170
194
  return (
171
195
  space.state.get() === SpaceState.SPACE_REQUIRES_MIGRATION ||
@@ -220,40 +244,40 @@ export const constructSpaceNode = ({
220
244
  nodes: [
221
245
  {
222
246
  id: `settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`,
223
- type: `${SPACE_PLUGIN}/settings`,
247
+ type: `${meta.id}/settings`,
224
248
  data: null,
225
249
  properties: {
226
- label: ['settings panel label', { ns: SPACE_PLUGIN }],
250
+ label: ['settings panel label', { ns: meta.id }],
227
251
  icon: 'ph--faders--regular',
228
252
  disposition: 'alternate-tree',
229
253
  },
230
254
  nodes: [
231
255
  {
232
256
  id: `properties-settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`,
233
- type: `${SPACE_PLUGIN}/properties`,
234
- data: `${SPACE_PLUGIN}/properties`,
257
+ type: `${meta.id}/properties`,
258
+ data: `${meta.id}/properties`,
235
259
  properties: {
236
- label: ['space settings properties label', { ns: SPACE_PLUGIN }],
260
+ label: ['space settings properties label', { ns: meta.id }],
237
261
  icon: 'ph--sliders--regular',
238
262
  position: 'hoist',
239
263
  },
240
264
  },
241
265
  {
242
266
  id: `members-settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`,
243
- type: `${SPACE_PLUGIN}/members`,
244
- data: `${SPACE_PLUGIN}/members`,
267
+ type: `${meta.id}/members`,
268
+ data: `${meta.id}/members`,
245
269
  properties: {
246
- label: ['members panel label', { ns: SPACE_PLUGIN }],
270
+ label: ['members panel label', { ns: meta.id }],
247
271
  icon: 'ph--users--regular',
248
272
  position: 'hoist',
249
273
  },
250
274
  },
251
275
  {
252
276
  id: `schema-settings${ATTENDABLE_PATH_SEPARATOR}${space.id}`,
253
- type: `${SPACE_PLUGIN}/schema`,
254
- data: `${SPACE_PLUGIN}/schema`,
277
+ type: `${meta.id}/schema`,
278
+ data: `${meta.id}/schema`,
255
279
  properties: {
256
- label: ['space settings schema label', { ns: SPACE_PLUGIN }],
280
+ label: ['space settings schema label', { ns: meta.id }],
257
281
  icon: 'ph--shapes--regular',
258
282
  },
259
283
  },
@@ -287,7 +311,7 @@ export const constructSpaceActions = ({
287
311
  await dispatch(createIntent(SpaceAction.Migrate, { space }));
288
312
  },
289
313
  properties: {
290
- label: ['migrate space label', { ns: SPACE_PLUGIN }],
314
+ label: ['migrate space label', { ns: meta.id }],
291
315
  icon: 'ph--database--regular',
292
316
  disposition: 'list-item-primary',
293
317
  disabled: migrating || Migrations.running(space),
@@ -304,7 +328,7 @@ export const constructSpaceActions = ({
304
328
  await dispatch(createIntent(SpaceAction.OpenCreateObject, { target: space }));
305
329
  },
306
330
  properties: {
307
- label: ['create object in space label', { ns: SPACE_PLUGIN }],
331
+ label: ['create object in space label', { ns: meta.id }],
308
332
  icon: 'ph--plus--regular',
309
333
  disposition: 'item',
310
334
  testId: 'spacePlugin.createObject',
@@ -317,7 +341,7 @@ export const constructSpaceActions = ({
317
341
  await dispatch(createIntent(SpaceAction.Rename, { space, caller: params?.caller }));
318
342
  },
319
343
  properties: {
320
- label: ['rename space label', { ns: SPACE_PLUGIN }],
344
+ label: ['rename space label', { ns: meta.id }],
321
345
  icon: 'ph--pencil-simple-line--regular',
322
346
  keyBinding: {
323
347
  macos: 'shift+F6',
@@ -331,34 +355,129 @@ export const constructSpaceActions = ({
331
355
  return actions;
332
356
  };
333
357
 
358
+ export const createStaticSchemaNode = ({ schema, space }: { schema: Type.Obj.Any; space: Space }) => {
359
+ return {
360
+ id: `${space.id}/${Type.getTypename(schema)}`,
361
+ type: `${meta.id}/static-schema`,
362
+ data: schema,
363
+ properties: {
364
+ label: ['typename label', { ns: Type.getTypename(schema), default: Type.getTypename(schema) }],
365
+ icon: 'ph--database--regular',
366
+ role: 'branch',
367
+ canDrop: () => false,
368
+ space,
369
+ },
370
+ };
371
+ };
372
+
373
+ export const createStaticSchemaActions = ({
374
+ schema,
375
+ space,
376
+ dispatch,
377
+ deletable,
378
+ }: {
379
+ schema: Type.Obj.Any;
380
+ space: Space;
381
+ dispatch: PromiseIntentDispatcher;
382
+ deletable: boolean;
383
+ }) => {
384
+ const getId = (id: string) => `${space.id}/${Type.getTypename(schema)}/${id}`;
385
+
386
+ const actions: NodeArg<ActionData>[] = [
387
+ {
388
+ id: getId(SpaceAction.AddObject._tag),
389
+ type: ACTION_TYPE,
390
+ data: async () => {
391
+ await dispatch(
392
+ createIntent(SpaceAction.OpenCreateObject, {
393
+ target: space,
394
+ views: true,
395
+ initialFormValues: { typename: Type.getTypename(schema) },
396
+ }),
397
+ );
398
+ },
399
+ properties: {
400
+ label: ['add view to schema label', { ns: Type.getTypename(DataType.StoredSchema) }],
401
+ icon: 'ph--plus--regular',
402
+ disposition: 'list-item-primary',
403
+ testId: 'spacePlugin.addViewToSchema',
404
+ },
405
+ },
406
+ {
407
+ id: getId(SpaceAction.RenameObject._tag),
408
+ type: ACTION_TYPE,
409
+ data: async (params?: InvokeParams) => {
410
+ throw new Error('Not implemented');
411
+ },
412
+ properties: {
413
+ label: ['rename object label', { ns: Type.getTypename(DataType.StoredSchema) }],
414
+ icon: 'ph--pencil-simple-line--regular',
415
+ disabled: true,
416
+ disposition: 'list-item',
417
+ testId: 'spacePlugin.renameObject',
418
+ },
419
+ },
420
+ {
421
+ id: getId(SpaceAction.RemoveObjects._tag),
422
+ type: ACTION_TYPE,
423
+ data: async () => {
424
+ const index = space.properties.staticRecords.findIndex(
425
+ (typename: string) => typename === Type.getTypename(schema),
426
+ );
427
+ if (index > -1) {
428
+ space.properties.staticRecords.splice(index, 1);
429
+ }
430
+ },
431
+ properties: {
432
+ label: ['delete object label', { ns: Type.getTypename(DataType.StoredSchema) }],
433
+ icon: 'ph--trash--regular',
434
+ disposition: 'list-item',
435
+ disabled: !deletable,
436
+ testId: 'spacePlugin.deleteObject',
437
+ },
438
+ },
439
+ ];
440
+
441
+ return actions;
442
+ };
443
+
334
444
  export const createObjectNode = ({
335
445
  space,
336
446
  object,
447
+ disposition,
337
448
  droppable = true,
338
449
  navigable = false,
339
450
  resolve,
340
451
  }: {
341
452
  space: Space;
342
453
  object: Obj.Any;
454
+ disposition?: string;
343
455
  droppable?: boolean;
344
456
  navigable?: boolean;
345
457
  resolve: (typename: string) => Record<string, any>;
346
458
  }) => {
347
459
  const type = Obj.getTypename(object);
348
460
  if (!type) {
349
- return undefined;
461
+ return null;
350
462
  }
351
463
 
352
464
  const metadata = resolve(type);
353
- if (Object.keys(metadata).length === 0) {
354
- return undefined;
355
- }
356
-
357
465
  const partials = Obj.instanceOf(DataType.Collection, object)
358
466
  ? getCollectionGraphNodePartials({ collection: object, space, resolve })
359
467
  : Obj.instanceOf(DataType.QueryCollection, object)
360
468
  ? getQueryCollectionNodePartials({ collection: object, space, resolve })
361
- : metadata.graphProps;
469
+ : Obj.instanceOf(DataType.StoredSchema, object)
470
+ ? getSchemaGraphNodePartials()
471
+ : Obj.instanceOf(DataType.View, object)
472
+ ? getViewGraphNodePartials({ view: object, resolve })
473
+ : metadata.graphProps;
474
+
475
+ // TODO(wittjosiah): Obj.getLabel isn't triggering reactivity in some cases.
476
+ // e.g., create new collection with no name and rename it.
477
+ const label = (object as any).name ||
478
+ Obj.getLabel(object) ||
479
+ // TODO(wittjosiah): Remove metadata labels.
480
+ metadata.label?.(object) || ['object name placeholder', { ns: type, default: 'New item' }];
362
481
 
363
482
  return {
364
483
  id: fullyQualifiedId(object),
@@ -366,10 +485,9 @@ export const createObjectNode = ({
366
485
  cacheable: ['label', 'icon', 'role'],
367
486
  data: object,
368
487
  properties: {
369
- // TODO(burdon): Use annotation to get the name field.
370
- label: metadata.label?.(object) ||
371
- (object as any).name || ['object name placeholder', { ns: type, default: 'New object' }],
488
+ label,
372
489
  icon: metadata.icon ?? 'ph--placeholder--regular',
490
+ disposition,
373
491
  testId: 'spacePlugin.object',
374
492
  persistenceClass: 'echo',
375
493
  persistenceKey: space?.id,
@@ -386,21 +504,26 @@ export const constructObjectActions = ({
386
504
  graph,
387
505
  dispatch,
388
506
  objectForms,
507
+ deletable = true,
389
508
  navigable = false,
390
509
  }: {
391
510
  object: Obj.Any;
392
511
  graph: ReadableGraph;
393
512
  dispatch: PromiseIntentDispatcher;
394
513
  objectForms: ObjectForm<any>[];
514
+ deletable?: boolean;
395
515
  navigable?: boolean;
396
516
  }) => {
397
517
  const space = getSpace(object);
398
518
  invariant(space, 'Space not found');
519
+ const typename = Obj.getTypename(object);
520
+ invariant(typename, 'Object has no typename');
521
+
399
522
  const getId = (id: string) => `${id}/${fullyQualifiedId(object)}`;
400
523
 
401
524
  const queryCollection = Obj.instanceOf(DataType.QueryCollection, object) ? object : undefined;
402
525
  const matchingObjectForm = queryCollection
403
- ? objectForms.find((form) => Type.getTypename(form.objectSchema) === queryCollection.query.typename)
526
+ ? objectForms.find((form) => Type.getTypename(form.objectSchema) === typenameFromQuery(queryCollection.query))
404
527
  : undefined;
405
528
 
406
529
  const actions: NodeArg<ActionData>[] = [
@@ -413,7 +536,7 @@ export const constructObjectActions = ({
413
536
  await dispatch(createIntent(SpaceAction.OpenCreateObject, { target: object }));
414
537
  },
415
538
  properties: {
416
- label: ['create object in collection label', { ns: SPACE_PLUGIN }],
539
+ label: ['create object in collection label', { ns: meta.id }],
417
540
  icon: 'ph--plus--regular',
418
541
  disposition: 'list-item-primary',
419
542
  testId: 'spacePlugin.createObject',
@@ -421,6 +544,29 @@ export const constructObjectActions = ({
421
544
  },
422
545
  ]
423
546
  : []),
547
+ ...(Obj.instanceOf(DataType.StoredSchema, object)
548
+ ? [
549
+ {
550
+ id: getId(SpaceAction.AddObject._tag),
551
+ type: ACTION_TYPE,
552
+ data: async () => {
553
+ await dispatch(
554
+ createIntent(SpaceAction.OpenCreateObject, {
555
+ target: space,
556
+ views: true,
557
+ initialFormValues: { typename: object.typename },
558
+ }),
559
+ );
560
+ },
561
+ properties: {
562
+ label: ['add view to schema label', { ns: Type.getTypename(DataType.StoredSchema) }],
563
+ icon: 'ph--plus--regular',
564
+ disposition: 'list-item-primary',
565
+ testId: 'spacePlugin.addViewToSchema',
566
+ },
567
+ },
568
+ ]
569
+ : []),
424
570
  ...(matchingObjectForm
425
571
  ? [
426
572
  {
@@ -431,7 +577,7 @@ export const constructObjectActions = ({
431
577
  await dispatch(
432
578
  createIntent(SpaceAction.OpenCreateObject, {
433
579
  target: space,
434
- typename: queryCollection?.query.typename,
580
+ typename: queryCollection ? typenameFromQuery(queryCollection.query) : undefined,
435
581
  }),
436
582
  );
437
583
  } else {
@@ -445,7 +591,7 @@ export const constructObjectActions = ({
445
591
  }
446
592
  },
447
593
  properties: {
448
- label: ['create object in smart collection label', { ns: SPACE_PLUGIN }],
594
+ label: ['create object in smart collection label', { ns: meta.id }],
449
595
  icon: 'ph--plus--regular',
450
596
  disposition: 'list-item-primary',
451
597
  testId: 'spacePlugin.createObject',
@@ -460,10 +606,7 @@ export const constructObjectActions = ({
460
606
  await dispatch(createIntent(SpaceAction.RenameObject, { object, caller: params?.caller }));
461
607
  },
462
608
  properties: {
463
- label: [
464
- Obj.instanceOf(DataType.Collection, object) ? 'rename collection label' : 'rename object label',
465
- { ns: SPACE_PLUGIN },
466
- ],
609
+ label: ['rename object label', { ns: typename }],
467
610
  icon: 'ph--pencil-simple-line--regular',
468
611
  disposition: 'list-item',
469
612
  // TODO(wittjosiah): Not working.
@@ -483,18 +626,19 @@ export const constructObjectActions = ({
483
626
  await dispatch(createIntent(SpaceAction.RemoveObjects, { objects: [object], target: collection }));
484
627
  },
485
628
  properties: {
486
- label: [
487
- Obj.instanceOf(DataType.Collection, object) ? 'delete collection label' : 'delete object label',
488
- { ns: SPACE_PLUGIN },
489
- ],
629
+ label: ['delete object label', { ns: typename }],
490
630
  icon: 'ph--trash--regular',
491
631
  disposition: 'list-item',
632
+ disabled: !deletable,
492
633
  // TODO(wittjosiah): This is a browser shortcut.
493
634
  // keyBinding: object instanceof CollectionType ? undefined : 'shift+meta+Backspace',
494
635
  testId: 'spacePlugin.deleteObject',
495
636
  },
496
637
  },
497
- ...(navigable || (!Obj.instanceOf(DataType.Collection, object) && !Obj.instanceOf(DataType.QueryCollection, object))
638
+ ...(navigable ||
639
+ (!Obj.instanceOf(DataType.Collection, object) &&
640
+ !Obj.instanceOf(DataType.QueryCollection, object) &&
641
+ !Obj.instanceOf(DataType.StoredSchema, object))
498
642
  ? [
499
643
  {
500
644
  id: getId('copy-link'),
@@ -504,7 +648,7 @@ export const constructObjectActions = ({
504
648
  await navigator.clipboard.writeText(url);
505
649
  },
506
650
  properties: {
507
- label: ['copy link label', { ns: SPACE_PLUGIN }],
651
+ label: ['copy link label', { ns: meta.id }],
508
652
  icon: 'ph--link--regular',
509
653
  disposition: 'list-item',
510
654
  testId: 'spacePlugin.copyLink',
@@ -520,7 +664,7 @@ export const constructObjectActions = ({
520
664
  await dispatch(createIntent(LayoutAction.Expose, { part: 'navigation', subject: fullyQualifiedId(object) }));
521
665
  },
522
666
  properties: {
523
- label: ['expose object label', { ns: SPACE_PLUGIN }],
667
+ label: ['expose object label', { ns: meta.id }],
524
668
  icon: 'ph--eye--regular',
525
669
  disposition: 'heading-list-item',
526
670
  testId: 'spacePlugin.exposeObject',
@@ -564,7 +708,7 @@ export const cloneObject = async (
564
708
  newSpace: Space,
565
709
  ): Promise<Type.Expando> => {
566
710
  const schema = Obj.getSchema(object);
567
- const typename = schema ? Type.getTypename(schema) ?? EXPANDO_TYPENAME : EXPANDO_TYPENAME;
711
+ const typename = schema ? (Type.getTypename(schema) ?? EXPANDO_TYPENAME) : EXPANDO_TYPENAME;
568
712
  const metadata = resolve(typename);
569
713
  const serializer = metadata.serializer;
570
714
  invariant(serializer, `No serializer for type: ${typename}`);
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/app-graph-builder.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Rx } from '@effect-rx/rx-react';\nimport { Array, Option, pipe } from 'effect';\n\nimport { Capabilities, contributes, createIntent, type PluginContext } from '@dxos/app-framework';\nimport { getSpace, SpaceState, type Space, isSpace, type QueryResult } from '@dxos/client/echo';\nimport { Filter, Obj, Query, Type } from '@dxos/echo';\nimport { log } from '@dxos/log';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { PLANK_COMPANION_TYPE, ATTENDABLE_PATH_SEPARATOR } from '@dxos/plugin-deck/types';\nimport { createExtension, rxFromObservable, ROOT_ID, rxFromSignal } from '@dxos/plugin-graph';\nimport { DataType } from '@dxos/schema';\nimport { isNonNullable } from '@dxos/util';\n\nimport { SpaceCapabilities } from './capabilities';\nimport { getActiveSpace } from '../hooks';\nimport { SPACE_PLUGIN } from '../meta';\nimport { SPACE_TYPE, SpaceAction, type SpaceSettingsProps } from '../types';\nimport {\n constructObjectActions,\n constructSpaceActions,\n constructSpaceNode,\n createObjectNode,\n rxFromQuery,\n SHARED,\n SPACES,\n} from '../util';\n\nexport default (context: PluginContext) => {\n // TODO(wittjosiah): Make reactive.\n const resolve = (typename: string) =>\n context.getCapabilities(Capabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {};\n\n const spacesNode = {\n id: SPACES,\n type: SPACES,\n cacheable: ['label', 'role'],\n properties: {\n label: ['spaces label', { ns: SPACE_PLUGIN }],\n icon: 'ph--planet--regular',\n testId: 'spacePlugin.spaces',\n role: 'branch',\n disposition: 'collection',\n disabled: true,\n childrenPersistenceClass: 'echo',\n onRearrangeChildren: async (nextOrder: Space[]) => {\n const { graph } = context.getCapability(Capabilities.AppGraph);\n const client = context.getCapability(ClientCapabilities.Client);\n\n // NOTE: This is needed to ensure order is updated by next animation frame.\n // TODO(wittjosiah): Is there a better way to do this?\n // If not, graph should be passed as an argument to the extension.\n graph.sortEdges(\n SPACES,\n 'outbound',\n nextOrder.map(({ id }) => id),\n );\n\n const {\n objects: [spacesOrder],\n } = await client.spaces.default.db.query(Filter.type(Type.Expando, { key: SHARED })).run();\n if (spacesOrder) {\n spacesOrder.order = nextOrder.map(({ id }) => id);\n } else {\n log.warn('spaces order object not found');\n }\n },\n },\n };\n\n return contributes(Capabilities.AppGraphBuilder, [\n // Primary actions.\n createExtension({\n id: `${SPACE_PLUGIN}/primary-actions`,\n position: 'hoist',\n actions: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),\n Option.map(() => [\n {\n id: SpaceAction.OpenCreateSpace._tag,\n data: async () => {\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n await dispatch(createIntent(SpaceAction.OpenCreateSpace));\n },\n properties: {\n label: ['create space label', { ns: SPACE_PLUGIN }],\n icon: 'ph--plus--regular',\n testId: 'spacePlugin.createSpace',\n disposition: 'menu',\n },\n },\n {\n id: SpaceAction.Join._tag,\n data: async () => {\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n await dispatch(createIntent(SpaceAction.Join));\n },\n properties: {\n label: ['join space label', { ns: SPACE_PLUGIN }],\n icon: 'ph--sign-in--regular',\n testId: 'spacePlugin.joinSpace',\n disposition: 'menu',\n },\n },\n {\n id: SpaceAction.OpenMembers._tag,\n data: async () => {\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n const client = context.getCapability(ClientCapabilities.Client);\n const space = getActiveSpace(context) ?? client.spaces.default;\n await dispatch(createIntent(SpaceAction.OpenMembers, { space }));\n },\n properties: {\n label: ['share space label', { ns: SPACE_PLUGIN }],\n icon: 'ph--users--regular',\n testId: 'spacePlugin.shareSpace',\n keyBinding: {\n macos: 'meta+.',\n windows: 'alt+.',\n },\n },\n },\n {\n id: SpaceAction.OpenSettings._tag,\n data: async () => {\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n const client = context.getCapability(ClientCapabilities.Client);\n const space = getActiveSpace(context) ?? client.spaces.default;\n await dispatch(createIntent(SpaceAction.OpenSettings, { space }));\n },\n properties: {\n label: ['open current space settings label', { ns: SPACE_PLUGIN }],\n icon: 'ph--faders--regular',\n keyBinding: {\n macos: 'meta+shift+,',\n windows: 'ctrl+shift+,',\n },\n },\n },\n ]),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n\n // Create spaces group node.\n createExtension({\n id: `${SPACE_PLUGIN}/root`,\n position: 'hoist',\n connector: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),\n Option.map(() => [spacesNode]),\n Option.getOrElse(() => []),\n ),\n ),\n // resolver: ({ id }) => (id === SPACES ? spacesNode : undefined),\n }),\n\n // Create space nodes.\n createExtension({\n id: SPACES,\n connector: (node) => {\n let query: QueryResult<Type.Expando> | undefined;\n return Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => (node.id === SPACES ? Option.some(node) : Option.none())),\n Option.map(() => {\n const state = context.getCapability(SpaceCapabilities.State);\n const client = context.getCapability(ClientCapabilities.Client);\n const spacesRx = rxFromObservable(client.spaces);\n const isReadyRx = rxFromObservable(client.spaces.isReady);\n\n const spaces = get(spacesRx);\n const isReady = get(isReadyRx);\n\n if (!spaces || !isReady) {\n return [];\n }\n\n const settings = get(context.capabilities(Capabilities.SettingsStore))[0]?.getStore<SpaceSettingsProps>(\n SPACE_PLUGIN,\n )?.value;\n\n // TODO(wittjosiah): During client reset, accessing default space throws.\n try {\n if (!query) {\n query = client.spaces.default.db.query(Filter.type(Type.Expando, { key: SHARED }));\n }\n const [spacesOrder] = get(rxFromQuery(query));\n return get(\n rxFromSignal(() => {\n const order: string[] = spacesOrder?.order ?? [];\n const orderMap = new Map(order.map((id, index) => [id, index]));\n return [\n ...spaces\n .filter((space) => orderMap.has(space.id))\n .sort((a, b) => orderMap.get(a.id)! - orderMap.get(b.id)!),\n ...spaces.filter((space) => !orderMap.has(space.id)),\n ]\n .filter((space) =>\n settings?.showHidden ? true : space.state.get() !== SpaceState.SPACE_INACTIVE,\n )\n .map((space) =>\n constructSpaceNode({\n space,\n navigable: state.navigableCollections,\n personal: space === client.spaces.default,\n namesCache: state.spaceNames,\n resolve,\n }),\n );\n }),\n );\n } catch {\n return [];\n }\n }),\n Option.getOrElse(() => []),\n ),\n );\n },\n // resolver: ({ id }) => {\n // if (id.length !== SPACE_ID_LENGTH) {\n // return;\n // }\n\n // const client = context.requestCapability(ClientCapabilities.Client);\n // const spaces = toSignal(\n // (onChange) => client.spaces.subscribe(() => onChange()).unsubscribe,\n // () => client.spaces.get(),\n // );\n\n // const isReady = toSignal(\n // (onChange) => client.spaces.isReady.subscribe(() => onChange()).unsubscribe,\n // () => client.spaces.isReady.get(),\n // );\n\n // if (!spaces || !isReady) {\n // return;\n // }\n\n // const space = spaces.find((space) => space.id === id);\n // if (!space) {\n // return;\n // }\n\n // if (space.state.get() === SpaceState.SPACE_INACTIVE) {\n // return false;\n // } else if (space.state.get() !== SpaceState.SPACE_READY) {\n // return undefined;\n // } else {\n // const state = context.requestCapability(SpaceCapabilities.State);\n // return constructSpaceNode({\n // space,\n // navigable: state.navigableCollections,\n // personal: space === client.spaces.default,\n // namesCache: state.spaceNames,\n // resolve,\n // });\n // }\n // },\n }),\n\n // Create space actions.\n createExtension({\n id: `${SPACE_PLUGIN}/actions`,\n actions: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) =>\n node.type === SPACE_TYPE && isSpace(node.data) ? Option.some(node.data) : Option.none(),\n ),\n Option.flatMap((space) => {\n const [dispatcher] = get(context.capabilities(Capabilities.IntentDispatcher));\n const [client] = get(context.capabilities(ClientCapabilities.Client));\n const [state] = get(context.capabilities(SpaceCapabilities.State));\n\n if (!dispatcher || !client || !state) {\n return Option.none();\n } else {\n return Option.some({\n space,\n dispatch: dispatcher.dispatchPromise,\n personal: space === client.spaces.default,\n migrating: state.sdkMigrationRunning[space.id],\n });\n }\n }),\n Option.map((params) => constructSpaceActions(params)),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n\n // Create nodes for objects in the root collection of a space.\n createExtension({\n id: `${SPACE_PLUGIN}/root-collection`,\n connector: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) =>\n node.type === SPACE_TYPE && isSpace(node.data) ? Option.some(node.data) : Option.none(),\n ),\n Option.map((space) => {\n const state = context.getCapability(SpaceCapabilities.State);\n const spaceState = get(rxFromObservable(space.state));\n if (spaceState !== SpaceState.SPACE_READY) {\n return [];\n }\n\n const collection = get(\n rxFromSignal(\n () => space.properties[DataType.Collection.typename]?.target as DataType.Collection | undefined,\n ),\n );\n if (!collection) {\n return [];\n }\n\n return get(\n rxFromSignal(() =>\n pipe(\n collection.objects,\n Array.map((object) => object.target),\n Array.filter(isNonNullable),\n Array.map((object) =>\n createObjectNode({\n space,\n object,\n resolve,\n navigable: state.navigableCollections,\n }),\n ),\n Array.filter(isNonNullable),\n ),\n ),\n );\n }),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n\n // Create nodes for objects in a collection or by its fully qualified id.\n createExtension({\n id: `${SPACE_PLUGIN}/objects`,\n connector: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) =>\n Obj.instanceOf(DataType.Collection, node.data) ? Option.some(node.data) : Option.none(),\n ),\n Option.map((collection) => {\n const state = context.getCapability(SpaceCapabilities.State);\n const space = getSpace(collection);\n\n return get(\n rxFromSignal(() =>\n pipe(\n collection.objects,\n Array.map((object) => object.target),\n Array.filter(isNonNullable),\n Array.map(\n (object) =>\n space && createObjectNode({ object, space, resolve, navigable: state.navigableCollections }),\n ),\n Array.filter(isNonNullable),\n ),\n ),\n );\n }),\n Option.getOrElse(() => []),\n ),\n ),\n // resolver: ({ id }) => {\n // if (id.length !== FQ_ID_LENGTH) {\n // return;\n // }\n\n // const [spaceId, objectId] = id.split(':');\n // if (spaceId.length !== SPACE_ID_LENGTH && objectId.length !== OBJECT_ID_LENGTH) {\n // return;\n // }\n\n // const client = context.requestCapability(ClientCapabilities.Client);\n // const space = client.spaces.get().find((space) => space.id === spaceId);\n // if (!space) {\n // return;\n // }\n\n // const spaceState = toSignal(\n // (onChange) => space.state.subscribe(() => onChange()).unsubscribe,\n // () => space.state.get(),\n // space.id,\n // );\n // if (spaceState !== SpaceState.SPACE_READY) {\n // return;\n // }\n\n // const [object] = memoizeQuery(space, Query.select(Filter.ids(objectId)));\n // if (!object) {\n // return;\n // }\n\n // if (isDeleted(object)) {\n // return false;\n // } else {\n // const state = context.requestCapability(SpaceCapabilities.State);\n // return createObjectNode({ object, space, resolve, navigable: state.navigableCollections });\n // }\n // },\n }),\n\n // Create nodes for objects in a query collection.\n createExtension({\n id: `${SPACE_PLUGIN}/query-collection-objects`,\n connector: (node) => {\n let query: QueryResult<Type.Expando> | undefined;\n return Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) =>\n Obj.instanceOf(DataType.QueryCollection, node.data) ? Option.some(node.data) : Option.none(),\n ),\n Option.flatMap((collection) => {\n const space = getSpace(collection);\n return collection.query.typename && space\n ? Option.some({ typename: collection.query.typename, space })\n : Option.none();\n }),\n Option.map(({ typename, space }) => {\n const state = context.getCapability(SpaceCapabilities.State);\n if (!query) {\n query = space.db.query(\n Query.without(\n Query.select(Filter.typename(typename)),\n // TODO(wittjosiah): This query is broader than it should be.\n // It will return all objects in the collection, not just the ones of the given type.\n // However this works fine for now because this query is only used for exclusions.\n Query.select(Filter.typename(typename))\n .referencedBy(DataType.Collection, 'objects')\n .reference('objects'),\n ),\n );\n }\n return get(rxFromQuery(query))\n .map((object) =>\n get(\n rxFromSignal(() =>\n createObjectNode({\n object,\n space,\n resolve,\n droppable: false, // Cannot rearrange query collections.\n navigable: state.navigableCollections,\n }),\n ),\n ),\n )\n .filter(isNonNullable);\n }),\n Option.getOrElse(() => []),\n ),\n );\n },\n }),\n\n // Create collection actions and action groups.\n createExtension({\n id: `${SPACE_PLUGIN}/object-actions`,\n actions: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => (Obj.isObject(node.data) ? Option.some(node.data) : Option.none())),\n Option.flatMap((object) => {\n const [dispatcher] = get(context.capabilities(Capabilities.IntentDispatcher));\n const [appGraph] = get(context.capabilities(Capabilities.AppGraph));\n const [state] = get(context.capabilities(SpaceCapabilities.State));\n const objectForms = get(context.capabilities(SpaceCapabilities.ObjectForm));\n\n if (!dispatcher || !appGraph || !state) {\n return Option.none();\n } else {\n return Option.some({\n object,\n graph: appGraph.graph,\n dispatch: dispatcher.dispatchPromise,\n objectForms,\n navigable: get(rxFromSignal(() => state.navigableCollections)),\n });\n }\n }),\n Option.map((params) => constructObjectActions(params)),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n\n // Object settings plank companion.\n createExtension({\n id: `${SPACE_PLUGIN}/settings`,\n connector: (node) =>\n Rx.make((get) =>\n pipe(\n get(node),\n Option.flatMap((node) => (Obj.isObject(node.data) ? Option.some(node) : Option.none())),\n Option.map((node) => [\n {\n id: [node.id, 'settings'].join(ATTENDABLE_PATH_SEPARATOR),\n type: PLANK_COMPANION_TYPE,\n data: 'settings',\n properties: {\n label: ['object settings label', { ns: SPACE_PLUGIN }],\n icon: 'ph--sliders--regular',\n disposition: 'hidden',\n position: 'fallback',\n },\n },\n ]),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n ]);\n};\n"],
5
- "mappings": "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",
6
- "names": ["Rx", "Array", "Option", "pipe", "Capabilities", "contributes", "createIntent", "getSpace", "SpaceState", "isSpace", "Filter", "Obj", "Query", "Type", "log", "ClientCapabilities", "PLANK_COMPANION_TYPE", "ATTENDABLE_PATH_SEPARATOR", "createExtension", "rxFromObservable", "ROOT_ID", "rxFromSignal", "DataType", "isNonNullable", "context", "resolve", "typename", "getCapabilities", "Capabilities", "Metadata", "find", "id", "metadata", "spacesNode", "SPACES", "type", "cacheable", "properties", "label", "ns", "SPACE_PLUGIN", "icon", "testId", "role", "disposition", "disabled", "childrenPersistenceClass", "onRearrangeChildren", "nextOrder", "graph", "getCapability", "AppGraph", "client", "ClientCapabilities", "Client", "sortEdges", "map", "objects", "spacesOrder", "spaces", "default", "db", "query", "Filter", "Type", "Expando", "key", "SHARED", "run", "order", "log", "warn", "contributes", "AppGraphBuilder", "createExtension", "position", "actions", "node", "Rx", "make", "get", "pipe", "Option", "flatMap", "ROOT_ID", "some", "none", "SpaceAction", "OpenCreateSpace", "_tag", "data", "dispatchPromise", "dispatch", "IntentDispatcher", "createIntent", "Join", "OpenMembers", "space", "getActiveSpace", "keyBinding", "macos", "windows", "OpenSettings", "getOrElse", "connector", "state", "SpaceCapabilities", "State", "spacesRx", "rxFromObservable", "isReadyRx", "isReady", "settings", "capabilities", "SettingsStore", "getStore", "value", "rxFromQuery", "rxFromSignal", "orderMap", "Map", "index", "filter", "has", "sort", "a", "b", "showHidden", "SpaceState", "SPACE_INACTIVE", "constructSpaceNode", "navigable", "navigableCollections", "personal", "namesCache", "spaceNames", "SPACE_TYPE", "isSpace", "dispatcher", "migrating", "sdkMigrationRunning", "params", "constructSpaceActions", "spaceState", "SPACE_READY", "collection", "DataType", "Collection", "target", "Array", "object", "isNonNullable", "createObjectNode", "Obj", "instanceOf", "getSpace", "QueryCollection", "Query", "without", "select", "referencedBy", "reference", "droppable", "isObject", "appGraph", "objectForms", "ObjectForm", "constructObjectActions", "join", "ATTENDABLE_PATH_SEPARATOR", "PLANK_COMPANION_TYPE"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/app-graph-serializer.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, type PluginContext, contributes, createIntent } from '@dxos/app-framework';\nimport { isSpace } from '@dxos/client/echo';\nimport { Obj, Type } from '@dxos/echo';\nimport { DataType } from '@dxos/schema';\n\nimport { SPACE_PLUGIN } from '../meta';\nimport { translations } from '../translations';\nimport { SPACE_TYPE, SpaceAction } from '../types';\nimport { SPACES } from '../util';\n\nconst COLLECTION_TYPE = Type.getTypename(DataType.Collection);\n\n// https://stackoverflow.com/a/19016910\nconst DIRECTORY_TYPE = 'text/directory';\n\nexport default (context: PluginContext) =>\n contributes(Capabilities.AppGraphSerializer, [\n {\n inputType: SPACES,\n outputType: DIRECTORY_TYPE,\n serialize: (node) => ({\n name: translations[0]['en-US'][SPACE_PLUGIN]['spaces label'] ?? 'Spaces',\n data: translations[0]['en-US'][SPACE_PLUGIN]['spaces label'] ?? 'Spaces',\n type: DIRECTORY_TYPE,\n }),\n deserialize: () => {\n // No-op.\n },\n },\n {\n inputType: SPACE_TYPE,\n outputType: DIRECTORY_TYPE,\n serialize: (node) => ({\n name: node.data.properties.name ?? translations[0]['en-US'][SPACE_PLUGIN]['unnamed space label'],\n data: node.data.properties.name ?? translations[0]['en-US'][SPACE_PLUGIN]['unnamed space label'],\n type: DIRECTORY_TYPE,\n }),\n deserialize: async (data) => {\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n const result = await dispatch(createIntent(SpaceAction.Create, { name: data.name, edgeReplication: true }));\n return result.data?.space;\n },\n },\n {\n inputType: COLLECTION_TYPE,\n outputType: DIRECTORY_TYPE,\n serialize: (node) => ({\n name: node.data.name ?? translations[0]['en-US'][SPACE_PLUGIN]['object name placeholder'],\n data: node.data.name ?? translations[0]['en-US'][SPACE_PLUGIN]['object name placeholder'],\n type: DIRECTORY_TYPE,\n }),\n deserialize: async (data, ancestors) => {\n const space = ancestors.find(isSpace);\n const collection =\n ancestors.findLast((ancestor) => Obj.instanceOf(DataType.Collection, ancestor)) ??\n space?.properties[COLLECTION_TYPE]?.target;\n if (!space || !collection) {\n return;\n }\n\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n const result = await dispatch(\n createIntent(SpaceAction.AddObject, {\n target: collection,\n object: Obj.make(DataType.Collection, { name: data.name, objects: [] }),\n }),\n );\n\n return result.data?.object;\n },\n },\n ]);\n"],
5
- "mappings": ";;;;;;;;;;;;;;;AAIA,SAASA,cAAkCC,aAAaC,oBAAoB;AAC5E,SAASC,eAAe;AACxB,SAASC,KAAKC,YAAY;AAC1B,SAASC,gBAAgB;AAOzB,IAAMC,kBAAkBC,KAAKC,YAAYC,SAASC,UAAU;AAG5D,IAAMC,iBAAiB;AAEvB,IAAA,+BAAe,CAACC,YACdC,YAAYC,aAAaC,oBAAoB;EAC3C;IACEC,WAAWC;IACXC,YAAYP;IACZQ,WAAW,CAACC,UAAU;MACpBC,MAAMC,aAAa,CAAA,EAAG,OAAA,EAASC,YAAAA,EAAc,cAAA,KAAmB;MAChEC,MAAMF,aAAa,CAAA,EAAG,OAAA,EAASC,YAAAA,EAAc,cAAA,KAAmB;MAChEE,MAAMd;IACR;IACAe,aAAa,MAAA;IAEb;EACF;EACA;IACEV,WAAWW;IACXT,YAAYP;IACZQ,WAAW,CAACC,UAAU;MACpBC,MAAMD,KAAKI,KAAKI,WAAWP,QAAQC,aAAa,CAAA,EAAG,OAAA,EAASC,YAAAA,EAAc,qBAAA;MAC1EC,MAAMJ,KAAKI,KAAKI,WAAWP,QAAQC,aAAa,CAAA,EAAG,OAAA,EAASC,YAAAA,EAAc,qBAAA;MAC1EE,MAAMd;IACR;IACAe,aAAa,OAAOF,SAAAA;AAClB,YAAM,EAAEK,iBAAiBC,SAAQ,IAAKlB,QAAQmB,cAAcjB,aAAakB,gBAAgB;AACzF,YAAMC,SAAS,MAAMH,SAASI,aAAaC,YAAYC,QAAQ;QAAEf,MAAMG,KAAKH;QAAMgB,iBAAiB;MAAK,CAAA,CAAA;AACxG,aAAOJ,OAAOT,MAAMc;IACtB;EACF;EACA;IACEtB,WAAWV;IACXY,YAAYP;IACZQ,WAAW,CAACC,UAAU;MACpBC,MAAMD,KAAKI,KAAKH,QAAQC,aAAa,CAAA,EAAG,OAAA,EAASC,YAAAA,EAAc,yBAAA;MAC/DC,MAAMJ,KAAKI,KAAKH,QAAQC,aAAa,CAAA,EAAG,OAAA,EAASC,YAAAA,EAAc,yBAAA;MAC/DE,MAAMd;IACR;IACAe,aAAa,OAAOF,MAAMe,cAAAA;AACxB,YAAMD,QAAQC,UAAUC,KAAKC,OAAAA;AAC7B,YAAMC,aACJH,UAAUI,SAAS,CAACC,aAAaC,IAAIC,WAAWrC,SAASC,YAAYkC,QAAAA,CAAAA,KACrEN,OAAOV,WAAWtB,eAAAA,GAAkByC;AACtC,UAAI,CAACT,SAAS,CAACI,YAAY;AACzB;MACF;AAEA,YAAM,EAAEb,iBAAiBC,SAAQ,IAAKlB,QAAQmB,cAAcjB,aAAakB,gBAAgB;AACzF,YAAMC,SAAS,MAAMH,SACnBI,aAAaC,YAAYa,WAAW;QAClCD,QAAQL;QACRO,QAAQJ,IAAIK,KAAKzC,SAASC,YAAY;UAAEW,MAAMG,KAAKH;UAAM8B,SAAS,CAAA;QAAG,CAAA;MACvE,CAAA,CAAA;AAGF,aAAOlB,OAAOT,MAAMyB;IACtB;EACF;CACD;",
6
- "names": ["Capabilities", "contributes", "createIntent", "isSpace", "Obj", "Type", "DataType", "COLLECTION_TYPE", "Type", "getTypename", "DataType", "Collection", "DIRECTORY_TYPE", "context", "contributes", "Capabilities", "AppGraphSerializer", "inputType", "SPACES", "outputType", "serialize", "node", "name", "translations", "SPACE_PLUGIN", "data", "type", "deserialize", "SPACE_TYPE", "properties", "dispatchPromise", "dispatch", "getCapability", "IntentDispatcher", "result", "createIntent", "SpaceAction", "Create", "edgeReplication", "space", "ancestors", "find", "isSpace", "collection", "findLast", "ancestor", "Obj", "instanceOf", "target", "AddObject", "object", "make", "objects"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/translations.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Resource } from '@dxos/react-ui';\nimport { DataType } from '@dxos/schema';\n\nimport { meta } from './meta';\n\n// TODO(burdon): Change to single Resource?\nexport const translations = [\n {\n 'en-US': {\n [DataType.Collection.typename]: {\n 'typename label': 'Collection',\n 'typename label_zero': 'Collections',\n 'typename label_one': 'Collection',\n 'typename label_other': 'Collections',\n 'object name placeholder': 'New collection',\n },\n [DataType.QueryCollection.typename]: {\n 'typename label': 'Smart Collection',\n 'typename label_zero': 'Smart Collections',\n 'typename label_one': 'Smart Collection',\n 'typename label_other': 'Smart Collections',\n 'object name placeholder': 'New smart collection',\n },\n [meta.id]: {\n 'plugin name': 'Spaces',\n 'first run message': 'Nothing selected.',\n 'create space label': 'Create space',\n 'join space label': 'Join space',\n 'empty space message': 'No documents',\n 'empty tree message': 'No spaces',\n 'unnamed space label': 'New space',\n 'closed space label': 'Closed',\n 'loading space label': 'Loading space…',\n 'lock space label': 'Lock space',\n 'unlock space label': 'Unlock space',\n 'rename space label': 'Rename space',\n 'active space label': 'Active space:',\n 'space name label': 'Space name',\n 'object name label': 'Item name',\n 'close space label': 'Close space',\n 'open space label': 'Open space',\n 'export data label': 'Export data',\n 'import data label': 'Import data',\n 'migrate space label': 'Migrate space',\n 'share space label': 'Share current space',\n 'save space to disk label': 'Save to disk',\n 'load space from disk label': 'Load from disk',\n 'confirm restore title': 'Overwrite files in this space?',\n 'confirm restore body': 'Restoring from a backup will overwrite the contents of any documents that match.',\n 'upload file message': 'Drag file here or click to browse',\n 'object name placeholder': 'Object',\n 'object placeholder': 'Type a title here…',\n 'personal space label': 'Personal Space',\n 'spaces label': 'Spaces',\n 'space settings label': 'Spaces',\n 'space settings description':\n 'Each space has its own settings you can configure, where you can adjust its properties, membership, integrations, and other items specific to that space.',\n 'show hidden spaces label': 'Show archived spaces',\n 'save files to directory label': 'Save files to disk',\n 'select path label': 'Select path',\n 'rename collection label': 'Rename collection',\n 'rename object label': 'Rename item',\n 'duplicate object label': 'Duplicate item',\n 'delete collection label': 'Delete collection',\n 'delete object label': 'Delete item',\n 'collection deleted label': 'Collection deleted',\n 'object deleted label': 'Item deleted',\n 'objects deleted label': 'Items deleted',\n 'go to object label': 'Open item',\n 'found object label': 'Ready.',\n 'found object description': 'The requested item is now available.',\n 'waiting for object label': 'Loading…',\n 'waiting for object description': 'The requested item is still being synchronized.',\n 'object not found label': 'Nothing found.',\n 'object not found description':\n 'The requested item has not been found yet. Ensure there are enough peers online in the space with an updated copy.',\n 'missing object message': 'Item not available.',\n 'missing object description':\n 'The requested item has not been found yet. Ensure there are enough peers online in the space with an updated copy.',\n 'create object in space label': 'Add to space',\n 'create object in collection label': 'Add to collection',\n 'create object in smart collection label': 'Add to smart collection',\n 'space members label': 'Space members',\n 'active space members heading': 'Online ({{count}})',\n 'inactive space members heading': 'Offline ({{count}})',\n 'presence label_zero': 'No other viewers',\n 'presence label_one': '1 other viewer',\n 'presence label_other': '{{count}} other viewers',\n 'persisted locally label': 'Changes saved locally.',\n 'persisted locally message': 'All changes have been saved to disk on this device.',\n 'persistence pending label': 'Saving…',\n 'persistence error label': 'Error saving changes.',\n 'more actions label': 'More actions',\n 'invitations heading': 'Invitations',\n 'keyshortcuts label': 'Keyboard shortcuts',\n 'menu footer label': 'Details',\n 'location label': 'Located in',\n 'space limit label': 'Space Limit Reached',\n 'space limit description':\n 'This space has reached the maximum number of items for the beta. This limit includes deleted items currently, but those can be permanently removed with the cleanup action.',\n 'space limit close label': 'Close',\n 'remove deleted objects label': 'Cleanup',\n 'remove deleted objects alt': 'Permanently remove deleted items to free up space.',\n 'copy link label': 'Copy link',\n 'default on space create label': 'On space create',\n 'sync status title': 'Sync status',\n 'dismiss label': 'Dismiss',\n 'join success label': 'Successfully joined space',\n 'name label': 'Name',\n 'name placeholder': 'Name',\n 'object settings label': 'Details',\n 'edge replication label': 'Enable EDGE Replication',\n 'saving locally label': 'Writing to disk',\n 'downloading label': 'Replicating from peers',\n 'uploading label': 'Replicating to peers',\n 'offline persisted label': 'Saved to disk (offline)',\n 'remote synced label': 'Synced with peers',\n 'syncing label': 'Space syncing',\n 'show all label': 'Show all',\n 'no sync status label': 'No space with missing items.',\n 'create space dialog title': 'Create Space',\n 'create object dialog title': 'Create {{object}}',\n 'space input placeholder': 'Select space',\n 'schema input placeholder': 'Select item type',\n 'creating object type label': 'Type',\n 'creating in space label': 'Location',\n 'creating in collection label': 'In Collection',\n 'clear input label': 'Clear',\n 'expose object label': 'Expose in navtree',\n 'advanced settings label': 'Advanced',\n 'foreign keys': 'Foreign Keys',\n 'add key': 'Add Key',\n 'open space settings label': 'Open settings',\n\n 'members panel label': 'Members',\n 'members verbose label': 'Manage space members',\n 'members description': 'You can view the current status of space members here as well as invite new members.',\n 'members label': 'Members',\n 'invitations label': 'Invitations',\n 'space invitation description': 'Manage invitations to the space.',\n 'qr code description': 'Share this QR code, or copy the URL and share it with the person you want to invite.',\n 'locked space description': 'This space is locked, unlock it to invite new members.',\n 'space locked label': 'Lock space',\n 'space locked description': 'Locking a space prevents new members from being invited to the space.',\n\n 'settings panel label': 'Space Settings',\n 'open current space settings label': 'Open current space settings',\n 'space settings properties label': 'General settings',\n 'space properties settings verbose label': 'Manage space properties',\n 'space properties settings description': 'You can configure how this space is displayed in the app here.',\n 'space settings schema label': 'Schema',\n 'schema verbose label': 'Manage schema',\n 'schema description': 'You can manage all of the schema stored within this space here.',\n 'no schemas found message': 'No schemas found',\n 'display name input placeholder': 'Space name',\n 'display name description': 'Name of the space as it appears in the app.',\n 'icon description': 'Icon used to represent the space in the app.',\n 'hue description': 'Color used to represent the space in the app.',\n 'edge replication description':\n \"Only change this if you know what you're doing. Disabling this will prevent the space from replicating through Composer's EDGE services, and relies solely on peer-to-peer sync.\",\n 'archive space description':\n 'Archiving a space will remove it from the sidebar and stop replicating updates, but will not delete the data. You can unarchive it by enabling archived spaces in the app settings.',\n 'archive space label': 'Archive',\n 'unarchive space label': 'Unarchive',\n },\n },\n },\n] as const satisfies Resource[];\n"],
5
- "mappings": "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",
6
- "names": ["DataType", "translations", "DataType", "Collection", "typename", "QueryCollection", "meta", "id"]
7
- }
@@ -1,18 +0,0 @@
1
- import {
2
- SPACE_PLUGIN
3
- } from "./chunk-FBCGT5YY.mjs";
4
-
5
- // src/events.ts
6
- import { defineEvent, Events } from "@dxos/app-framework";
7
- (function(SpaceEvents2) {
8
- SpaceEvents2.StateReady = Events.createStateEvent(`${SPACE_PLUGIN}/event/state-ready`);
9
- SpaceEvents2.SetupSettingsPanel = defineEvent(`${SPACE_PLUGIN}/event/setup-settings-panel`);
10
- SpaceEvents2.DefaultSpaceReady = defineEvent(`${SPACE_PLUGIN}/event/default-space-ready`);
11
- SpaceEvents2.SpaceCreated = defineEvent(`${SPACE_PLUGIN}/event/space-created`);
12
- })(SpaceEvents || (SpaceEvents = {}));
13
- var SpaceEvents;
14
-
15
- export {
16
- SpaceEvents
17
- };
18
- //# sourceMappingURL=chunk-C7KGJTAL.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/events.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { defineEvent, Events } from '@dxos/app-framework';\n\nimport { SPACE_PLUGIN } from './meta';\n\nexport namespace SpaceEvents {\n export const StateReady = Events.createStateEvent(`${SPACE_PLUGIN}/event/state-ready`);\n export const SetupSettingsPanel = defineEvent(`${SPACE_PLUGIN}/event/setup-settings-panel`);\n export const DefaultSpaceReady = defineEvent(`${SPACE_PLUGIN}/event/default-space-ready`);\n export const SpaceCreated = defineEvent(`${SPACE_PLUGIN}/event/space-created`);\n}\n"],
5
- "mappings": ";;;;;AAIA,SAASA,aAAaC,cAAc;UAInBC,cAAAA;eACFC,aAAaC,OAAOC,iBAAiB,GAAGC,YAAAA,oBAAgC;eACxEC,qBAAqBC,YAAY,GAAGF,YAAAA,6BAAyC;eAC7EG,oBAAoBD,YAAY,GAAGF,YAAAA,4BAAwC;eAC3EI,eAAeF,YAAY,GAAGF,YAAAA,sBAAkC;AAC/E,GALiBJ,gBAAAA,cAAAA,CAAAA,EAAAA;;",
6
- "names": ["defineEvent", "Events", "SpaceEvents", "StateReady", "Events", "createStateEvent", "SPACE_PLUGIN", "SetupSettingsPanel", "defineEvent", "DefaultSpaceReady", "SpaceCreated"]
7
- }