@dxos/plugin-space 0.8.4-main.c1de068 → 0.8.4-main.c4373fc

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 (272) hide show
  1. package/dist/lib/browser/{CollectionMain-D2B75XBS.mjs → CollectionMain-AX7KKXWP.mjs} +4 -4
  2. package/dist/lib/browser/CollectionMain-AX7KKXWP.mjs.map +7 -0
  3. package/dist/lib/browser/{ObjectDetailsPanel-YPTDQKMG.mjs → ObjectDetailsPanel-SJ4XUXXX.mjs} +11 -9
  4. package/dist/lib/browser/ObjectDetailsPanel-SJ4XUXXX.mjs.map +7 -0
  5. package/dist/lib/browser/RecordMain-FHPCS6GM.mjs +68 -0
  6. package/dist/lib/browser/RecordMain-FHPCS6GM.mjs.map +7 -0
  7. package/dist/lib/browser/{app-graph-builder-7CZZJS3S.mjs → app-graph-builder-Y2LBZX2G.mjs} +102 -61
  8. package/dist/lib/browser/app-graph-builder-Y2LBZX2G.mjs.map +7 -0
  9. package/dist/lib/browser/{app-graph-serializer-H6AW7KGS.mjs → app-graph-serializer-425OVRTW.mjs} +14 -14
  10. package/dist/lib/browser/app-graph-serializer-425OVRTW.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-V7MJSSBQ.mjs → chunk-6KVKMOGQ.mjs} +148 -157
  12. package/dist/lib/browser/chunk-6KVKMOGQ.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-VLBRSGJ2.mjs → chunk-CVZAZRW4.mjs} +4 -4
  14. package/dist/lib/browser/chunk-CVZAZRW4.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-IRKDREHY.mjs +11 -0
  18. package/dist/lib/browser/chunk-IRKDREHY.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-SGTQ52SU.mjs → chunk-OYHC63NL.mjs} +16 -10
  20. package/dist/lib/browser/chunk-OYHC63NL.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-PUF3B7XO.mjs +20 -0
  22. package/dist/lib/browser/chunk-PUF3B7XO.mjs.map +7 -0
  23. package/dist/lib/browser/{chunk-XUYKJUU7.mjs → chunk-X6COEDOD.mjs} +99 -44
  24. package/dist/lib/browser/chunk-X6COEDOD.mjs.map +7 -0
  25. package/dist/lib/browser/{chunk-QACNNDOT.mjs → chunk-YZJWWMNB.mjs} +11 -10
  26. package/dist/lib/browser/chunk-YZJWWMNB.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 +20 -40
  30. package/dist/lib/browser/index.mjs.map +3 -3
  31. package/dist/lib/browser/{intent-resolver-TIXVDYN7.mjs → intent-resolver-2TBYHOBA.mjs} +47 -42
  32. package/dist/lib/browser/intent-resolver-2TBYHOBA.mjs.map +7 -0
  33. package/dist/lib/browser/meta.json +1 -1
  34. package/dist/lib/browser/{react-root-N2J7TDRX.mjs → react-root-KMJXJ5VX.mjs} +11 -11
  35. package/dist/lib/browser/react-root-KMJXJ5VX.mjs.map +7 -0
  36. package/dist/lib/browser/{react-surface-TPNLWJJH.mjs → react-surface-YAJUAMER.mjs} +53 -42
  37. package/dist/lib/browser/react-surface-YAJUAMER.mjs.map +7 -0
  38. package/dist/lib/browser/{schema-defs-Z6FC4AHC.mjs → schema-defs-2OCPV7JF.mjs} +5 -5
  39. package/dist/lib/browser/schema-defs-2OCPV7JF.mjs.map +7 -0
  40. package/dist/lib/browser/{settings-4IMP5RYT.mjs → settings-UYYJ225A.mjs} +5 -5
  41. package/dist/lib/browser/{settings-4IMP5RYT.mjs.map → settings-UYYJ225A.mjs.map} +1 -1
  42. package/dist/lib/browser/{spaces-ready-TOPG6IV4.mjs → spaces-ready-YNZPWXA3.mjs} +18 -16
  43. package/dist/lib/browser/spaces-ready-YNZPWXA3.mjs.map +7 -0
  44. package/dist/lib/browser/{state-QYZAB45H.mjs → state-BPU73TYO.mjs} +7 -7
  45. package/dist/lib/browser/state-BPU73TYO.mjs.map +7 -0
  46. package/dist/lib/browser/types/index.mjs +2 -2
  47. package/dist/lib/node-esm/{CollectionMain-ZJIFCWKZ.mjs → CollectionMain-EU57SRYK.mjs} +4 -4
  48. package/dist/lib/node-esm/CollectionMain-EU57SRYK.mjs.map +7 -0
  49. package/dist/lib/node-esm/{ObjectDetailsPanel-QKZEDSZK.mjs → ObjectDetailsPanel-P7D727OV.mjs} +11 -9
  50. package/dist/lib/node-esm/ObjectDetailsPanel-P7D727OV.mjs.map +7 -0
  51. package/dist/lib/node-esm/RecordMain-V73AEB6N.mjs +70 -0
  52. package/dist/lib/node-esm/RecordMain-V73AEB6N.mjs.map +7 -0
  53. package/dist/lib/node-esm/{app-graph-builder-KGIGWC72.mjs → app-graph-builder-DMNLDT7E.mjs} +102 -61
  54. package/dist/lib/node-esm/app-graph-builder-DMNLDT7E.mjs.map +7 -0
  55. package/dist/lib/node-esm/{app-graph-serializer-2ICUGQQT.mjs → app-graph-serializer-ZEDSY77N.mjs} +14 -14
  56. package/dist/lib/node-esm/app-graph-serializer-ZEDSY77N.mjs.map +7 -0
  57. package/dist/lib/node-esm/chunk-36TAYXV7.mjs +21 -0
  58. package/dist/lib/node-esm/chunk-36TAYXV7.mjs.map +7 -0
  59. package/dist/lib/node-esm/{chunk-P442DOQ3.mjs → chunk-7UIEPBQJ.mjs} +11 -10
  60. package/dist/lib/node-esm/chunk-7UIEPBQJ.mjs.map +7 -0
  61. package/dist/lib/node-esm/{chunk-JH6F4C3I.mjs → chunk-ADEZJQE3.mjs} +16 -10
  62. package/dist/lib/node-esm/chunk-ADEZJQE3.mjs.map +7 -0
  63. package/dist/lib/node-esm/{chunk-SSLBYZEY.mjs → chunk-FLRC6XWU.mjs} +4 -4
  64. package/dist/lib/node-esm/chunk-FLRC6XWU.mjs.map +7 -0
  65. package/dist/lib/node-esm/{chunk-6X5DLJM5.mjs → chunk-L26ZIGHA.mjs} +148 -157
  66. package/dist/lib/node-esm/chunk-L26ZIGHA.mjs.map +7 -0
  67. package/dist/lib/node-esm/{chunk-HWNG4MEU.mjs → chunk-MWNATOXL.mjs} +2 -4
  68. package/dist/lib/node-esm/chunk-MWNATOXL.mjs.map +7 -0
  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-4AOMYKDE.mjs → chunk-ZFCCFELA.mjs} +99 -44
  72. package/dist/lib/node-esm/chunk-ZFCCFELA.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 +20 -40
  76. package/dist/lib/node-esm/index.mjs.map +3 -3
  77. package/dist/lib/node-esm/{intent-resolver-MHGHRGDT.mjs → intent-resolver-YOG27WOG.mjs} +47 -42
  78. package/dist/lib/node-esm/intent-resolver-YOG27WOG.mjs.map +7 -0
  79. package/dist/lib/node-esm/meta.json +1 -1
  80. package/dist/lib/node-esm/{react-root-KW3TGJGY.mjs → react-root-27QMJZD2.mjs} +11 -11
  81. package/dist/lib/node-esm/react-root-27QMJZD2.mjs.map +7 -0
  82. package/dist/lib/node-esm/{react-surface-UUIUUD6P.mjs → react-surface-RC73GAN5.mjs} +53 -42
  83. package/dist/lib/node-esm/react-surface-RC73GAN5.mjs.map +7 -0
  84. package/dist/lib/node-esm/{schema-defs-WHJM7UZE.mjs → schema-defs-X2Z7F2EV.mjs} +5 -5
  85. package/dist/lib/node-esm/schema-defs-X2Z7F2EV.mjs.map +7 -0
  86. package/dist/lib/node-esm/{settings-SAOBPND3.mjs → settings-Q736OQRP.mjs} +5 -5
  87. package/dist/lib/node-esm/{settings-SAOBPND3.mjs.map → settings-Q736OQRP.mjs.map} +1 -1
  88. package/dist/lib/node-esm/{spaces-ready-HIUKNDZK.mjs → spaces-ready-XZQD7Q65.mjs} +18 -16
  89. package/dist/lib/node-esm/spaces-ready-XZQD7Q65.mjs.map +7 -0
  90. package/dist/lib/node-esm/{state-ZVEHQ4BJ.mjs → state-BY75TM32.mjs} +7 -7
  91. package/dist/lib/node-esm/state-BY75TM32.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 +4 -4
  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/CreateDialog/CreateObjectDialog.d.ts +3 -3
  118. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
  119. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts +1584 -4
  120. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts.map +1 -1
  121. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +5 -3
  122. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
  123. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts +1 -1
  124. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts.map +1 -1
  125. package/dist/types/src/components/JoinDialog.d.ts +1 -1
  126. package/dist/types/src/components/JoinDialog.d.ts.map +1 -1
  127. package/dist/types/src/components/MembersContainer.d.ts +3 -2
  128. package/dist/types/src/components/MembersContainer.d.ts.map +1 -1
  129. package/dist/types/src/components/MembersContainer.stories.d.ts +1584 -5
  130. package/dist/types/src/components/MembersContainer.stories.d.ts.map +1 -1
  131. package/dist/types/src/components/ObjectDetailsPanel.d.ts.map +1 -1
  132. package/dist/types/src/components/ObjectSettings/AdvancedObjectSettings.d.ts.map +1 -1
  133. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts +1 -1
  134. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts.map +1 -1
  135. package/dist/types/src/components/ObjectSettings/ObjectSettingsContainer.d.ts.map +1 -1
  136. package/dist/types/src/components/PopoverRenameObject.d.ts +2 -2
  137. package/dist/types/src/components/PopoverRenameObject.d.ts.map +1 -1
  138. package/dist/types/src/components/PopoverRenameSpace.d.ts +1 -1
  139. package/dist/types/src/components/PopoverRenameSpace.d.ts.map +1 -1
  140. package/dist/types/src/components/RecordMain.d.ts +7 -0
  141. package/dist/types/src/components/RecordMain.d.ts.map +1 -0
  142. package/dist/types/src/components/SpacePluginSettings.d.ts.map +1 -1
  143. package/dist/types/src/components/SpacePresence.d.ts.map +1 -1
  144. package/dist/types/src/components/SpacePresence.stories.d.ts +1412 -4
  145. package/dist/types/src/components/SpacePresence.stories.d.ts.map +1 -1
  146. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
  147. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts +1417 -4
  148. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts.map +1 -1
  149. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
  150. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts +1418 -5
  151. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
  152. package/dist/types/src/components/ViewEditor.d.ts +1 -1
  153. package/dist/types/src/components/ViewEditor.d.ts.map +1 -1
  154. package/dist/types/src/components/index.d.ts +8 -2
  155. package/dist/types/src/components/index.d.ts.map +1 -1
  156. package/dist/types/src/events.d.ts.map +1 -1
  157. package/dist/types/src/hooks/useActiveSpace.d.ts.map +1 -1
  158. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts +1 -1
  159. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts.map +1 -1
  160. package/dist/types/src/hooks/usePath.d.ts +1 -1
  161. package/dist/types/src/hooks/usePath.d.ts.map +1 -1
  162. package/dist/types/src/meta.d.ts +0 -1
  163. package/dist/types/src/meta.d.ts.map +1 -1
  164. package/dist/types/src/translations.d.ts +1216 -26
  165. package/dist/types/src/translations.d.ts.map +1 -1
  166. package/dist/types/src/types/types.d.ts +76 -96
  167. package/dist/types/src/types/types.d.ts.map +1 -1
  168. package/dist/types/src/util.d.ts +10 -7
  169. package/dist/types/src/util.d.ts.map +1 -1
  170. package/dist/types/tsconfig.tsbuildinfo +1 -1
  171. package/package.json +60 -58
  172. package/src/SpacePlugin.ts +204 -219
  173. package/src/capabilities/app-graph-builder.ts +127 -69
  174. package/src/capabilities/app-graph-serializer.ts +7 -7
  175. package/src/capabilities/capabilities.ts +12 -11
  176. package/src/capabilities/identity-created.ts +1 -1
  177. package/src/capabilities/index.ts +0 -1
  178. package/src/capabilities/intent-resolver.ts +37 -25
  179. package/src/capabilities/react-root.tsx +4 -3
  180. package/src/capabilities/react-surface.tsx +52 -38
  181. package/src/capabilities/schema-defs.ts +3 -2
  182. package/src/capabilities/spaces-ready.ts +11 -8
  183. package/src/capabilities/state.ts +5 -4
  184. package/src/components/AwaitingObject.tsx +3 -3
  185. package/src/components/CollectionMain.tsx +2 -2
  186. package/src/components/CollectionSection.tsx +2 -2
  187. package/src/components/CreateDialog/CreateObjectDialog.stories.tsx +11 -10
  188. package/src/components/CreateDialog/CreateObjectDialog.tsx +24 -13
  189. package/src/components/CreateDialog/CreateObjectPanel.tsx +22 -11
  190. package/src/components/CreateDialog/CreateSpaceDialog.tsx +6 -5
  191. package/src/components/JoinDialog.tsx +7 -7
  192. package/src/components/MembersContainer.stories.tsx +36 -10
  193. package/src/components/MembersContainer.tsx +13 -14
  194. package/src/components/MenuFooter.tsx +2 -2
  195. package/src/components/ObjectDetailsPanel.tsx +7 -5
  196. package/src/components/ObjectSettings/AdvancedObjectSettings.tsx +4 -3
  197. package/src/components/ObjectSettings/ForeignKeys.tsx +3 -3
  198. package/src/components/ObjectSettings/ObjectSettingsContainer.tsx +3 -2
  199. package/src/components/PersistenceStatus.tsx +2 -2
  200. package/src/components/PopoverRenameObject.tsx +9 -15
  201. package/src/components/PopoverRenameSpace.tsx +4 -4
  202. package/src/components/RecordMain.tsx +43 -0
  203. package/src/components/SchemaContainer.tsx +5 -5
  204. package/src/components/SpacePluginSettings.tsx +8 -9
  205. package/src/components/SpacePresence.stories.tsx +23 -22
  206. package/src/components/SpacePresence.tsx +10 -10
  207. package/src/components/SpaceSettings/SpaceSettingsContainer.stories.tsx +17 -9
  208. package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +19 -18
  209. package/src/components/SyncStatus/InlineSyncStatus.tsx +3 -3
  210. package/src/components/SyncStatus/SyncStatus.stories.tsx +6 -7
  211. package/src/components/SyncStatus/SyncStatus.tsx +4 -3
  212. package/src/components/ViewEditor.tsx +13 -18
  213. package/src/components/index.ts +1 -0
  214. package/src/events.ts +7 -7
  215. package/src/hooks/useActiveSpace.ts +2 -2
  216. package/src/hooks/useInputSurfaceLookup.tsx +2 -2
  217. package/src/hooks/usePath.ts +1 -1
  218. package/src/meta.ts +1 -3
  219. package/src/translations.ts +9 -8
  220. package/src/types/types.ts +17 -13
  221. package/src/util.tsx +97 -40
  222. package/dist/lib/browser/CollectionMain-D2B75XBS.mjs.map +0 -7
  223. package/dist/lib/browser/ObjectDetailsPanel-YPTDQKMG.mjs.map +0 -7
  224. package/dist/lib/browser/app-graph-builder-7CZZJS3S.mjs.map +0 -7
  225. package/dist/lib/browser/app-graph-serializer-H6AW7KGS.mjs.map +0 -7
  226. package/dist/lib/browser/chunk-CEFHNVU7.mjs +0 -20
  227. package/dist/lib/browser/chunk-CEFHNVU7.mjs.map +0 -7
  228. package/dist/lib/browser/chunk-FBCGT5YY.mjs +0 -13
  229. package/dist/lib/browser/chunk-FBCGT5YY.mjs.map +0 -7
  230. package/dist/lib/browser/chunk-JS3MMC42.mjs +0 -19
  231. package/dist/lib/browser/chunk-JS3MMC42.mjs.map +0 -7
  232. package/dist/lib/browser/chunk-QACNNDOT.mjs.map +0 -7
  233. package/dist/lib/browser/chunk-SGTQ52SU.mjs.map +0 -7
  234. package/dist/lib/browser/chunk-V7MJSSBQ.mjs.map +0 -7
  235. package/dist/lib/browser/chunk-VLBRSGJ2.mjs.map +0 -7
  236. package/dist/lib/browser/chunk-XUYKJUU7.mjs.map +0 -7
  237. package/dist/lib/browser/intent-resolver-TIXVDYN7.mjs.map +0 -7
  238. package/dist/lib/browser/react-root-N2J7TDRX.mjs.map +0 -7
  239. package/dist/lib/browser/react-surface-TPNLWJJH.mjs.map +0 -7
  240. package/dist/lib/browser/schema-defs-Z6FC4AHC.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-TOPG6IV4.mjs.map +0 -7
  244. package/dist/lib/browser/state-QYZAB45H.mjs.map +0 -7
  245. package/dist/lib/node-esm/CollectionMain-ZJIFCWKZ.mjs.map +0 -7
  246. package/dist/lib/node-esm/ObjectDetailsPanel-QKZEDSZK.mjs.map +0 -7
  247. package/dist/lib/node-esm/app-graph-builder-KGIGWC72.mjs.map +0 -7
  248. package/dist/lib/node-esm/app-graph-serializer-2ICUGQQT.mjs.map +0 -7
  249. package/dist/lib/node-esm/chunk-4AOMYKDE.mjs.map +0 -7
  250. package/dist/lib/node-esm/chunk-5HHYE264.mjs +0 -20
  251. package/dist/lib/node-esm/chunk-5HHYE264.mjs.map +0 -7
  252. package/dist/lib/node-esm/chunk-5T3ZH23B.mjs +0 -21
  253. package/dist/lib/node-esm/chunk-5T3ZH23B.mjs.map +0 -7
  254. package/dist/lib/node-esm/chunk-6X5DLJM5.mjs.map +0 -7
  255. package/dist/lib/node-esm/chunk-HWNG4MEU.mjs.map +0 -7
  256. package/dist/lib/node-esm/chunk-JH6F4C3I.mjs.map +0 -7
  257. package/dist/lib/node-esm/chunk-P442DOQ3.mjs.map +0 -7
  258. package/dist/lib/node-esm/chunk-SSLBYZEY.mjs.map +0 -7
  259. package/dist/lib/node-esm/intent-resolver-MHGHRGDT.mjs.map +0 -7
  260. package/dist/lib/node-esm/react-root-KW3TGJGY.mjs.map +0 -7
  261. package/dist/lib/node-esm/react-surface-UUIUUD6P.mjs.map +0 -7
  262. package/dist/lib/node-esm/schema-defs-WHJM7UZE.mjs.map +0 -7
  263. package/dist/lib/node-esm/schema-tools-KWW5PTML.mjs +0 -126
  264. package/dist/lib/node-esm/schema-tools-KWW5PTML.mjs.map +0 -7
  265. package/dist/lib/node-esm/spaces-ready-HIUKNDZK.mjs.map +0 -7
  266. package/dist/lib/node-esm/state-ZVEHQ4BJ.mjs.map +0 -7
  267. package/dist/types/src/capabilities/schema-tool.test.d.ts +0 -2
  268. package/dist/types/src/capabilities/schema-tool.test.d.ts.map +0 -1
  269. package/dist/types/src/capabilities/schema-tools.d.ts +0 -13
  270. package/dist/types/src/capabilities/schema-tools.d.ts.map +0 -1
  271. package/src/capabilities/schema-tool.test.ts +0 -44
  272. package/src/capabilities/schema-tools.ts +0 -125
@@ -1,10 +1,10 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  getActiveSpace
4
- } from "./chunk-SSLBYZEY.mjs";
4
+ } from "./chunk-FLRC6XWU.mjs";
5
5
  import {
6
6
  SpaceCapabilities
7
- } from "./chunk-5T3ZH23B.mjs";
7
+ } from "./chunk-36TAYXV7.mjs";
8
8
  import {
9
9
  SHARED,
10
10
  SPACES,
@@ -15,29 +15,32 @@ import {
15
15
  createStaticSchemaActions,
16
16
  createStaticSchemaNode,
17
17
  rxFromQuery
18
- } from "./chunk-4AOMYKDE.mjs";
18
+ } from "./chunk-ZFCCFELA.mjs";
19
19
  import {
20
20
  SPACE_TYPE,
21
21
  SpaceAction
22
- } from "./chunk-JH6F4C3I.mjs";
22
+ } from "./chunk-ADEZJQE3.mjs";
23
23
  import {
24
- SPACE_PLUGIN
25
- } from "./chunk-HWNG4MEU.mjs";
24
+ meta
25
+ } from "./chunk-MWNATOXL.mjs";
26
26
 
27
27
  // src/capabilities/app-graph-builder.ts
28
28
  import { Rx } from "@effect-rx/rx-react";
29
- import { Array, Option, pipe, Schema } from "effect";
29
+ import * as Array from "effect/Array";
30
+ import * as Function from "effect/Function";
31
+ import * as Option from "effect/Option";
32
+ import * as Schema from "effect/Schema";
30
33
  import { Capabilities, contributes, createIntent } from "@dxos/app-framework";
31
- import { getSpace, SpaceState, isSpace } from "@dxos/client/echo";
34
+ import { SpaceState, getSpace, isSpace, parseId } from "@dxos/client/echo";
32
35
  import { Filter, Obj, Query, Type } from "@dxos/echo";
33
36
  import { log } from "@dxos/log";
34
37
  import { ClientCapabilities } from "@dxos/plugin-client";
35
- import { PLANK_COMPANION_TYPE, ATTENDABLE_PATH_SEPARATOR } from "@dxos/plugin-deck/types";
36
- import { createExtension, rxFromObservable, ROOT_ID, rxFromSignal } from "@dxos/plugin-graph";
37
- import { DataType } from "@dxos/schema";
38
+ import { ATTENDABLE_PATH_SEPARATOR, PLANK_COMPANION_TYPE } from "@dxos/plugin-deck/types";
39
+ import { ROOT_ID, createExtension, rxFromObservable, rxFromSignal } from "@dxos/plugin-graph";
40
+ import { DataType, getTypenameFromQuery } from "@dxos/schema";
38
41
  import { isNonNullable } from "@dxos/util";
39
42
  var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-space/src/capabilities/app-graph-builder.ts";
40
- var app_graph_builder_default = (context) => {
43
+ var app_graph_builder_default = ((context) => {
41
44
  const resolve = (typename) => context.getCapabilities(Capabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {};
42
45
  const spacesNode = {
43
46
  id: SPACES,
@@ -50,7 +53,7 @@ var app_graph_builder_default = (context) => {
50
53
  label: [
51
54
  "spaces label",
52
55
  {
53
- ns: SPACE_PLUGIN
56
+ ns: meta.id
54
57
  }
55
58
  ],
56
59
  icon: "ph--planet--regular",
@@ -71,7 +74,7 @@ var app_graph_builder_default = (context) => {
71
74
  } else {
72
75
  log.warn("spaces order object not found", void 0, {
73
76
  F: __dxlog_file,
74
- L: 70,
77
+ L: 74,
75
78
  S: void 0,
76
79
  C: (f, a) => f(...a)
77
80
  });
@@ -82,9 +85,9 @@ var app_graph_builder_default = (context) => {
82
85
  return contributes(Capabilities.AppGraphBuilder, [
83
86
  // Primary actions.
84
87
  createExtension({
85
- id: `${SPACE_PLUGIN}/primary-actions`,
88
+ id: `${meta.id}/primary-actions`,
86
89
  position: "hoist",
87
- actions: (node) => Rx.make((get) => pipe(get(node), Option.flatMap((node2) => node2.id === ROOT_ID ? Option.some(node2) : Option.none()), Option.map(() => [
90
+ actions: (node) => Rx.make((get) => Function.pipe(get(node), Option.flatMap((node2) => node2.id === ROOT_ID ? Option.some(node2) : Option.none()), Option.map(() => [
88
91
  {
89
92
  id: SpaceAction.OpenCreateSpace._tag,
90
93
  data: async () => {
@@ -95,7 +98,7 @@ var app_graph_builder_default = (context) => {
95
98
  label: [
96
99
  "create space label",
97
100
  {
98
- ns: SPACE_PLUGIN
101
+ ns: meta.id
99
102
  }
100
103
  ],
101
104
  icon: "ph--plus--regular",
@@ -113,7 +116,7 @@ var app_graph_builder_default = (context) => {
113
116
  label: [
114
117
  "join space label",
115
118
  {
116
- ns: SPACE_PLUGIN
119
+ ns: meta.id
117
120
  }
118
121
  ],
119
122
  icon: "ph--sign-in--regular",
@@ -135,7 +138,7 @@ var app_graph_builder_default = (context) => {
135
138
  label: [
136
139
  "share space label",
137
140
  {
138
- ns: SPACE_PLUGIN
141
+ ns: meta.id
139
142
  }
140
143
  ],
141
144
  icon: "ph--users--regular",
@@ -160,7 +163,7 @@ var app_graph_builder_default = (context) => {
160
163
  label: [
161
164
  "open current space settings label",
162
165
  {
163
- ns: SPACE_PLUGIN
166
+ ns: meta.id
164
167
  }
165
168
  ],
166
169
  icon: "ph--faders--regular",
@@ -174,9 +177,9 @@ var app_graph_builder_default = (context) => {
174
177
  }),
175
178
  // Create spaces group node.
176
179
  createExtension({
177
- id: `${SPACE_PLUGIN}/root`,
180
+ id: `${meta.id}/root`,
178
181
  position: "hoist",
179
- connector: (node) => Rx.make((get) => pipe(get(node), Option.flatMap((node2) => node2.id === ROOT_ID ? Option.some(node2) : Option.none()), Option.map(() => [
182
+ connector: (node) => Rx.make((get) => Function.pipe(get(node), Option.flatMap((node2) => node2.id === ROOT_ID ? Option.some(node2) : Option.none()), Option.map(() => [
180
183
  spacesNode
181
184
  ]), Option.getOrElse(() => [])))
182
185
  }),
@@ -185,7 +188,7 @@ var app_graph_builder_default = (context) => {
185
188
  id: SPACES,
186
189
  connector: (node) => {
187
190
  let query;
188
- return Rx.make((get) => pipe(get(node), Option.flatMap((node2) => node2.id === SPACES ? Option.some(node2) : Option.none()), Option.map(() => {
191
+ return Rx.make((get) => Function.pipe(get(node), Option.flatMap((node2) => node2.id === SPACES ? Option.some(node2) : Option.none()), Option.map(() => {
189
192
  const state = context.getCapability(SpaceCapabilities.State);
190
193
  const client = context.getCapability(ClientCapabilities.Client);
191
194
  const spacesRx = rxFromObservable(client.spaces);
@@ -195,7 +198,7 @@ var app_graph_builder_default = (context) => {
195
198
  if (!spaces || !isReady) {
196
199
  return [];
197
200
  }
198
- const settings = get(context.capabilities(Capabilities.SettingsStore))[0]?.getStore(SPACE_PLUGIN)?.value;
201
+ const settings = get(context.capabilities(Capabilities.SettingsStore))[0]?.getStore(meta.id)?.value;
199
202
  try {
200
203
  if (!query) {
201
204
  query = client.spaces.default.db.query(Filter.type(Type.Expando, {
@@ -228,8 +231,8 @@ var app_graph_builder_default = (context) => {
228
231
  }),
229
232
  // Create space actions.
230
233
  createExtension({
231
- id: `${SPACE_PLUGIN}/actions`,
232
- actions: (node) => Rx.make((get) => pipe(get(node), Option.flatMap((node2) => node2.type === SPACE_TYPE && isSpace(node2.data) ? Option.some(node2.data) : Option.none()), Option.flatMap((space) => {
234
+ id: `${meta.id}/actions`,
235
+ actions: (node) => Rx.make((get) => Function.pipe(get(node), Option.flatMap((node2) => node2.type === SPACE_TYPE && isSpace(node2.data) ? Option.some(node2.data) : Option.none()), Option.flatMap((space) => {
233
236
  const [dispatcher] = get(context.capabilities(Capabilities.IntentDispatcher));
234
237
  const [client] = get(context.capabilities(ClientCapabilities.Client));
235
238
  const [state] = get(context.capabilities(SpaceCapabilities.State));
@@ -247,8 +250,8 @@ var app_graph_builder_default = (context) => {
247
250
  }),
248
251
  // Create nodes for objects in the root collection of a space.
249
252
  createExtension({
250
- id: `${SPACE_PLUGIN}/root-collection`,
251
- connector: (node) => Rx.make((get) => pipe(get(node), Option.flatMap((node2) => node2.type === SPACE_TYPE && isSpace(node2.data) ? Option.some(node2.data) : Option.none()), Option.map((space) => {
253
+ id: `${meta.id}/root-collection`,
254
+ connector: (node) => Rx.make((get) => Function.pipe(get(node), Option.flatMap((node2) => node2.type === SPACE_TYPE && isSpace(node2.data) ? Option.some(node2.data) : Option.none()), Option.map((space) => {
252
255
  const state = context.getCapability(SpaceCapabilities.State);
253
256
  const spaceState = get(rxFromObservable(space.state));
254
257
  if (spaceState !== SpaceState.SPACE_READY) {
@@ -258,7 +261,7 @@ var app_graph_builder_default = (context) => {
258
261
  if (!collection) {
259
262
  return [];
260
263
  }
261
- return get(rxFromSignal(() => pipe(collection.objects, Array.map((object) => object.target), Array.filter(isNonNullable), Array.map((object) => createObjectNode({
264
+ return get(rxFromSignal(() => Function.pipe(collection.objects, Array.map((object) => object.target), Array.filter(isNonNullable), Array.map((object) => createObjectNode({
262
265
  space,
263
266
  object,
264
267
  resolve,
@@ -268,11 +271,11 @@ var app_graph_builder_default = (context) => {
268
271
  }),
269
272
  // Create nodes for objects in a collection or by its fully qualified id.
270
273
  createExtension({
271
- id: `${SPACE_PLUGIN}/objects`,
272
- connector: (node) => Rx.make((get) => pipe(get(node), Option.flatMap((node2) => Obj.instanceOf(DataType.Collection, node2.data) ? Option.some(node2.data) : Option.none()), Option.map((collection) => {
274
+ id: `${meta.id}/objects`,
275
+ connector: (node) => Rx.make((get) => Function.pipe(get(node), Option.flatMap((node2) => Obj.instanceOf(DataType.Collection, node2.data) ? Option.some(node2.data) : Option.none()), Option.map((collection) => {
273
276
  const state = context.getCapability(SpaceCapabilities.State);
274
277
  const space = getSpace(collection);
275
- return get(rxFromSignal(() => pipe(collection.objects, Array.map((object) => object.target), Array.filter(isNonNullable), Array.map((object) => space && createObjectNode({
278
+ return get(rxFromSignal(() => Function.pipe(collection.objects, Array.map((object) => object.target), Array.filter(isNonNullable), Array.map((object) => space && createObjectNode({
276
279
  object,
277
280
  space,
278
281
  resolve,
@@ -282,13 +285,14 @@ var app_graph_builder_default = (context) => {
282
285
  }),
283
286
  // Create nodes for objects in a query collection.
284
287
  createExtension({
285
- id: `${SPACE_PLUGIN}/query-collection-objects`,
288
+ id: `${meta.id}/query-collection-objects`,
286
289
  connector: (node) => {
287
290
  let query;
288
- return Rx.make((get) => pipe(get(node), Option.flatMap((node2) => Obj.instanceOf(DataType.QueryCollection, node2.data) ? Option.some(node2.data) : Option.none()), Option.flatMap((collection) => {
291
+ return Rx.make((get) => Function.pipe(get(node), Option.flatMap((node2) => Obj.instanceOf(DataType.QueryCollection, node2.data) ? Option.some(node2.data) : Option.none()), Option.flatMap((collection) => {
289
292
  const space = getSpace(collection);
290
- return collection.query.typename && space ? Option.some({
291
- typename: collection.query.typename,
293
+ const typename = getTypenameFromQuery(collection.query);
294
+ return typename && space ? Option.some({
295
+ typename,
292
296
  space
293
297
  }) : Option.none();
294
298
  }), Option.map(({ typename, space }) => {
@@ -302,7 +306,7 @@ var app_graph_builder_default = (context) => {
302
306
  Query.select(Filter.typename(typename)).referencedBy(DataType.Collection, "objects").reference("objects")
303
307
  ));
304
308
  }
305
- return get(rxFromQuery(query)).map((object) => get(rxFromSignal(() => createObjectNode({
309
+ return get(rxFromQuery(query)).toSorted((a, b) => a.id.localeCompare(b.id)).map((object) => get(rxFromSignal(() => createObjectNode({
306
310
  object,
307
311
  space,
308
312
  resolve,
@@ -314,10 +318,10 @@ var app_graph_builder_default = (context) => {
314
318
  }),
315
319
  // Static schema records.
316
320
  createExtension({
317
- id: `${SPACE_PLUGIN}/static-schemas`,
321
+ id: `${meta.id}/static-schemas`,
318
322
  connector: (node) => {
319
323
  const client = context.getCapability(ClientCapabilities.Client);
320
- return Rx.make((get) => pipe(get(node), Option.flatMap((node2) => Obj.instanceOf(DataType.QueryCollection, node2.data) && node2.data.query.typename === DataType.StoredSchema.typename ? Option.some(node2.data) : Option.none()), Option.flatMap((collection) => {
324
+ return Rx.make((get) => Function.pipe(get(node), Option.flatMap((node2) => Obj.instanceOf(DataType.QueryCollection, node2.data) && getTypenameFromQuery(node2.data.query) === DataType.StoredSchema.typename ? Option.some(node2.data) : Option.none()), Option.flatMap((collection) => {
321
325
  const space = getSpace(collection);
322
326
  return space?.properties.staticRecords ? Option.some(space) : Option.none();
323
327
  }), Option.map((space) => {
@@ -330,10 +334,10 @@ var app_graph_builder_default = (context) => {
330
334
  }),
331
335
  // Create static schema actions.
332
336
  createExtension({
333
- id: `${SPACE_PLUGIN}/static-schema-actions`,
337
+ id: `${meta.id}/static-schema-actions`,
334
338
  actions: (node) => {
335
339
  let query;
336
- return Rx.make((get) => pipe(get(node), Option.flatMap((node2) => {
340
+ return Rx.make((get) => Function.pipe(get(node), Option.flatMap((node2) => {
337
341
  const space = isSpace(node2.properties.space) ? node2.properties.space : void 0;
338
342
  return space && Schema.isSchema(node2.data) ? Option.some({
339
343
  space,
@@ -346,12 +350,17 @@ var app_graph_builder_default = (context) => {
346
350
  const views = get(rxFromQuery(query));
347
351
  const filteredViews = get(rxFromSignal(() => (
348
352
  // TODO(wittjosiah): Remove cast.
349
- views.filter((view) => view.query.typename === Type.getTypename(schema))
353
+ views.filter((view) => getTypenameFromQuery(view.query.ast) === Type.getTypename(schema))
350
354
  )));
351
355
  const deletable = filteredViews.length === 0;
356
+ const [dispatcher] = get(context.capabilities(Capabilities.IntentDispatcher));
357
+ if (!dispatcher) {
358
+ return [];
359
+ }
352
360
  return createStaticSchemaActions({
353
361
  schema,
354
362
  space,
363
+ dispatch: dispatcher.dispatchPromise,
355
364
  deletable
356
365
  });
357
366
  }), Option.getOrElse(() => [])));
@@ -359,10 +368,10 @@ var app_graph_builder_default = (context) => {
359
368
  }),
360
369
  // Create nodes for schema views.
361
370
  createExtension({
362
- id: `${SPACE_PLUGIN}/schema-views`,
371
+ id: `${meta.id}/schema-views`,
363
372
  connector: (node) => {
364
373
  let query;
365
- return Rx.make((get) => pipe(get(node), Option.flatMap((node2) => {
374
+ return Rx.make((get) => Function.pipe(get(node), Option.flatMap((node2) => {
366
375
  const space = getSpace(node2.data) ?? (isSpace(node2.properties.space) ? node2.properties.space : void 0);
367
376
  return space && (Obj.instanceOf(DataType.StoredSchema, node2.data) || Schema.isSchema(node2.data)) ? Option.some({
368
377
  space,
@@ -373,7 +382,7 @@ var app_graph_builder_default = (context) => {
373
382
  query = space.db.query(Filter.type(DataType.View));
374
383
  }
375
384
  const typename = Schema.isSchema(schema) ? Type.getTypename(schema) : schema.typename;
376
- return get(rxFromQuery(query)).filter((view) => view.query.typename === typename).map((view) => get(rxFromSignal(() => createObjectNode({
385
+ return get(rxFromQuery(query)).filter((view) => getTypenameFromQuery(view.query.ast) === typename).map((view) => get(rxFromSignal(() => createObjectNode({
377
386
  object: view,
378
387
  space,
379
388
  resolve,
@@ -382,26 +391,58 @@ var app_graph_builder_default = (context) => {
382
391
  }), Option.getOrElse(() => [])));
383
392
  }
384
393
  }),
394
+ // Create record nodes.
395
+ createExtension({
396
+ id: `${meta.id}/records`,
397
+ resolver: (id) => {
398
+ let query;
399
+ return Rx.make((get) => {
400
+ const client = context.getCapability(ClientCapabilities.Client);
401
+ const { spaceId, objectId } = parseId(id);
402
+ if (!spaceId || !objectId) {
403
+ return null;
404
+ }
405
+ const space = client.spaces.get(spaceId);
406
+ if (!space) {
407
+ return null;
408
+ }
409
+ if (!query) {
410
+ query = space.db.query(Filter.ids(objectId));
411
+ }
412
+ const object = get(rxFromQuery(query)).at(0);
413
+ if (!object) {
414
+ return null;
415
+ }
416
+ return createObjectNode({
417
+ object,
418
+ space,
419
+ resolve,
420
+ disposition: "hidden"
421
+ });
422
+ });
423
+ }
424
+ }),
385
425
  // Create collection actions and action groups.
386
426
  createExtension({
387
- id: `${SPACE_PLUGIN}/object-actions`,
427
+ id: `${meta.id}/object-actions`,
388
428
  actions: (node) => {
389
429
  let query;
390
- return Rx.make((get) => pipe(get(node), Option.flatMap((node2) => {
430
+ return Rx.make((get) => Function.pipe(get(node), Option.flatMap((node2) => {
391
431
  const space = getSpace(node2.data);
392
- return space && Obj.isObject(node2.data) ? Option.some({
432
+ return space && Obj.isObject(node2.data) && Obj.getTypename(node2.data) === node2.type ? Option.some({
393
433
  space,
394
434
  object: node2.data
395
435
  }) : Option.none();
396
436
  }), Option.flatMap(({ space, object }) => {
397
- const isSchema = Obj.instanceOf(DataType.StoredSchema, object);
398
- if (!query && isSchema) {
437
+ const isSchema2 = Obj.instanceOf(DataType.StoredSchema, object);
438
+ if (!query && isSchema2) {
399
439
  query = space.db.query(Filter.type(DataType.View));
400
440
  }
401
- let deletable = !isSchema;
402
- if (isSchema && query) {
441
+ let deletable = !isSchema2 && // Don't allow the Records smart collection to be deleted.
442
+ !(Obj.instanceOf(DataType.QueryCollection, object) && getTypenameFromQuery(object.query) === DataType.StoredSchema.typename);
443
+ if (isSchema2 && query) {
403
444
  const views = get(rxFromQuery(query));
404
- const filteredViews = get(rxFromSignal(() => views.filter((view) => view.query.typename === object.typename)));
445
+ const filteredViews = get(rxFromSignal(() => views.filter((view) => getTypenameFromQuery(view.query.ast) === object.typename)));
405
446
  deletable = filteredViews.length === 0;
406
447
  }
407
448
  const [dispatcher] = get(context.capabilities(Capabilities.IntentDispatcher));
@@ -425,8 +466,8 @@ var app_graph_builder_default = (context) => {
425
466
  }),
426
467
  // View selected objects.
427
468
  createExtension({
428
- id: `${SPACE_PLUGIN}/selected-objects`,
429
- connector: (node) => Rx.make((get) => pipe(get(node), Option.flatMap((node2) => Obj.instanceOf(DataType.View, node2.data) ? Option.some(node2) : Option.none()), Option.map((node2) => [
469
+ id: `${meta.id}/selected-objects`,
470
+ connector: (node) => Rx.make((get) => Function.pipe(get(node), Option.flatMap((node2) => Obj.instanceOf(DataType.View, node2.data) ? Option.some(node2) : Option.none()), Option.map((node2) => [
430
471
  {
431
472
  id: [
432
473
  node2.id,
@@ -438,7 +479,7 @@ var app_graph_builder_default = (context) => {
438
479
  label: [
439
480
  "companion selected objects label",
440
481
  {
441
- ns: SPACE_PLUGIN
482
+ ns: meta.id
442
483
  }
443
484
  ],
444
485
  icon: "ph--tree-view--regular",
@@ -449,8 +490,8 @@ var app_graph_builder_default = (context) => {
449
490
  }),
450
491
  // Object settings plank companion.
451
492
  createExtension({
452
- id: `${SPACE_PLUGIN}/settings`,
453
- connector: (node) => Rx.make((get) => pipe(get(node), Option.flatMap((node2) => Obj.isObject(node2.data) ? Option.some(node2) : Option.none()), Option.map((node2) => [
493
+ id: `${meta.id}/settings`,
494
+ connector: (node) => Rx.make((get) => Function.pipe(get(node), Option.flatMap((node2) => Obj.isObject(node2.data) ? Option.some(node2) : Option.none()), Option.map((node2) => [
454
495
  {
455
496
  id: [
456
497
  node2.id,
@@ -462,7 +503,7 @@ var app_graph_builder_default = (context) => {
462
503
  label: [
463
504
  "object settings label",
464
505
  {
465
- ns: SPACE_PLUGIN
506
+ ns: meta.id
466
507
  }
467
508
  ],
468
509
  icon: "ph--sliders--regular",
@@ -473,8 +514,8 @@ var app_graph_builder_default = (context) => {
473
514
  ]), Option.getOrElse(() => [])))
474
515
  })
475
516
  ]);
476
- };
517
+ });
477
518
  export {
478
519
  app_graph_builder_default as default
479
520
  };
480
- //# sourceMappingURL=app-graph-builder-KGIGWC72.mjs.map
521
+ //# sourceMappingURL=app-graph-builder-DMNLDT7E.mjs.map
@@ -0,0 +1,7 @@
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 * as Array from 'effect/Array';\nimport * as Function from 'effect/Function';\nimport * as Option from 'effect/Option';\nimport * as Schema from 'effect/Schema';\n\nimport { Capabilities, type PluginContext, contributes, createIntent } from '@dxos/app-framework';\nimport { type QueryResult, type Space, SpaceState, getSpace, isSpace, parseId } from '@dxos/client/echo';\nimport { Filter, Obj, Query, Type } from '@dxos/echo';\nimport { log } from '@dxos/log';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { ATTENDABLE_PATH_SEPARATOR, PLANK_COMPANION_TYPE } from '@dxos/plugin-deck/types';\nimport { ROOT_ID, createExtension, rxFromObservable, rxFromSignal } from '@dxos/plugin-graph';\nimport { DataType, getTypenameFromQuery } from '@dxos/schema';\nimport { isNonNullable } from '@dxos/util';\n\nimport { getActiveSpace } from '../hooks';\nimport { meta } from '../meta';\nimport { SPACE_TYPE, SpaceAction, type SpaceSettingsProps } from '../types';\nimport {\n SHARED,\n SPACES,\n constructObjectActions,\n constructSpaceActions,\n constructSpaceNode,\n createObjectNode,\n createStaticSchemaActions,\n createStaticSchemaNode,\n rxFromQuery,\n} from '../util';\n\nimport { SpaceCapabilities } from './capabilities';\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: meta.id }],\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: `${meta.id}/primary-actions`,\n position: 'hoist',\n actions: (node) =>\n Rx.make((get) =>\n Function.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: meta.id }],\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: meta.id }],\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: meta.id }],\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: meta.id }],\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: `${meta.id}/root`,\n position: 'hoist',\n connector: (node) =>\n Rx.make((get) =>\n Function.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 Function.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 meta.id,\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: `${meta.id}/actions`,\n actions: (node) =>\n Rx.make((get) =>\n Function.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: `${meta.id}/root-collection`,\n connector: (node) =>\n Rx.make((get) =>\n Function.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 Function.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: `${meta.id}/objects`,\n connector: (node) =>\n Rx.make((get) =>\n Function.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 Function.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: `${meta.id}/query-collection-objects`,\n connector: (node) => {\n let query: QueryResult<Type.Expando> | undefined;\n return Rx.make((get) =>\n Function.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 const typename = getTypenameFromQuery(collection.query);\n return typename && space ? Option.some({ typename, space }) : 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 (\n get(rxFromQuery(query))\n // TODO(wittjosiah): This should be the default sort order.\n .toSorted((a, b) => a.id.localeCompare(b.id))\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 }),\n Option.getOrElse(() => []),\n ),\n );\n },\n }),\n\n // Static schema records.\n createExtension({\n id: `${meta.id}/static-schemas`,\n connector: (node) => {\n const client = context.getCapability(ClientCapabilities.Client);\n return Rx.make((get) =>\n Function.pipe(\n get(node),\n Option.flatMap((node) =>\n Obj.instanceOf(DataType.QueryCollection, node.data) &&\n getTypenameFromQuery(node.data.query) === DataType.StoredSchema.typename\n ? Option.some(node.data)\n : Option.none(),\n ),\n Option.flatMap((collection) => {\n const space = getSpace(collection);\n return space?.properties.staticRecords ? Option.some(space) : Option.none();\n }),\n Option.map((space) => {\n return get(rxFromSignal(() => (space.properties.staticRecords ?? []) as string[]))\n .map((typename) =>\n client.graph.schemaRegistry.schemas.find((schema) => Type.getTypename(schema) === typename),\n )\n .filter(isNonNullable)\n .map((schema) => createStaticSchemaNode({ schema, space }));\n }),\n Option.getOrElse(() => []),\n ),\n );\n },\n }),\n\n // Create static schema actions.\n createExtension({\n id: `${meta.id}/static-schema-actions`,\n actions: (node) => {\n let query: QueryResult<DataType.View> | undefined;\n return Rx.make((get) =>\n Function.pipe(\n get(node),\n Option.flatMap((node) => {\n const space = isSpace(node.properties.space) ? node.properties.space : undefined;\n return space && Schema.isSchema(node.data) ? Option.some({ space, schema: node.data }) : Option.none();\n }),\n Option.map(({ space, schema }) => {\n if (!query) {\n // TODO(wittjosiah): Support filtering by nested properties (e.g. `query.typename`).\n query = space.db.query(Filter.type(DataType.View));\n }\n\n const views = get(rxFromQuery(query));\n const filteredViews = get(\n rxFromSignal(() =>\n // TODO(wittjosiah): Remove cast.\n views.filter(\n (view) => getTypenameFromQuery(view.query.ast) === Type.getTypename(schema as Type.Obj.Any),\n ),\n ),\n );\n const deletable = filteredViews.length === 0;\n\n const [dispatcher] = get(context.capabilities(Capabilities.IntentDispatcher));\n if (!dispatcher) {\n return [];\n }\n\n // TODO(wittjosiah): Remove cast.\n return createStaticSchemaActions({\n schema: schema as Type.Obj.Any,\n space,\n dispatch: dispatcher.dispatchPromise,\n deletable,\n });\n }),\n Option.getOrElse(() => []),\n ),\n );\n },\n }),\n\n // Create nodes for schema views.\n createExtension({\n id: `${meta.id}/schema-views`,\n connector: (node) => {\n let query: QueryResult<DataType.View> | undefined;\n return Rx.make((get) =>\n Function.pipe(\n get(node),\n Option.flatMap((node) => {\n const space = getSpace(node.data) ?? (isSpace(node.properties.space) ? node.properties.space : undefined);\n return space && (Obj.instanceOf(DataType.StoredSchema, node.data) || Schema.isSchema(node.data))\n ? Option.some({ space, schema: node.data })\n : Option.none();\n }),\n Option.map(({ space, schema }) => {\n if (!query) {\n // TODO(wittjosiah): Support filtering by nested properties (e.g. `query.typename`).\n query = space.db.query(Filter.type(DataType.View));\n }\n\n // TODO(wittjosiah): Remove cast.\n const typename = Schema.isSchema(schema) ? Type.getTypename(schema as Type.Obj.Any) : schema.typename;\n return get(rxFromQuery(query))\n .filter((view) => getTypenameFromQuery(view.query.ast) === typename)\n .map((view) =>\n get(\n rxFromSignal(() =>\n createObjectNode({\n object: view,\n space,\n resolve,\n droppable: false,\n }),\n ),\n ),\n )\n .filter(isNonNullable);\n }),\n Option.getOrElse(() => []),\n ),\n );\n },\n }),\n\n // Create record nodes.\n createExtension({\n id: `${meta.id}/records`,\n resolver: (id) => {\n let query: QueryResult<Type.Expando> | undefined;\n return Rx.make((get) => {\n const client = context.getCapability(ClientCapabilities.Client);\n const { spaceId, objectId } = parseId(id);\n if (!spaceId || !objectId) {\n return null;\n }\n\n const space = client.spaces.get(spaceId);\n if (!space) {\n return null;\n }\n\n if (!query) {\n query = space.db.query(Filter.ids(objectId));\n }\n\n const object = get(rxFromQuery(query)).at(0);\n if (!object) {\n return null;\n }\n\n return createObjectNode({ object, space, resolve, disposition: 'hidden' });\n });\n },\n }),\n\n // Create collection actions and action groups.\n createExtension({\n id: `${meta.id}/object-actions`,\n actions: (node) => {\n let query: QueryResult<DataType.View> | undefined;\n return Rx.make((get) =>\n Function.pipe(\n get(node),\n Option.flatMap((node) => {\n const space = getSpace(node.data);\n return space && Obj.isObject(node.data) && Obj.getTypename(node.data) === node.type\n ? Option.some({ space, object: node.data })\n : Option.none();\n }),\n Option.flatMap(({ space, object }) => {\n const isSchema = Obj.instanceOf(DataType.StoredSchema, object);\n if (!query && isSchema) {\n // TODO(wittjosiah): Support filtering by nested properties (e.g. `query.typename`).\n query = space.db.query(Filter.type(DataType.View));\n }\n\n let deletable =\n !isSchema &&\n // Don't allow the Records smart collection to be deleted.\n !(\n Obj.instanceOf(DataType.QueryCollection, object) &&\n getTypenameFromQuery(object.query) === DataType.StoredSchema.typename\n );\n if (isSchema && query) {\n const views = get(rxFromQuery(query));\n const filteredViews = get(\n rxFromSignal(() => views.filter((view) => getTypenameFromQuery(view.query.ast) === object.typename)),\n );\n deletable = filteredViews.length === 0;\n }\n\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 deletable,\n navigable: get(rxFromSignal(() => state.navigableCollections)),\n });\n }\n }),\n Option.map((params) => constructObjectActions(params)),\n Option.getOrElse(() => []),\n ),\n );\n },\n }),\n\n // View selected objects.\n createExtension({\n id: `${meta.id}/selected-objects`,\n connector: (node) =>\n Rx.make((get) =>\n Function.pipe(\n get(node),\n Option.flatMap((node) => (Obj.instanceOf(DataType.View, node.data) ? Option.some(node) : Option.none())),\n Option.map((node) => [\n {\n id: [node.id, 'selected-objects'].join(ATTENDABLE_PATH_SEPARATOR),\n type: PLANK_COMPANION_TYPE,\n data: 'selected-objects',\n properties: {\n label: ['companion selected objects label', { ns: meta.id }],\n icon: 'ph--tree-view--regular',\n disposition: 'hidden',\n },\n },\n ]),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n\n // Object settings plank companion.\n createExtension({\n id: `${meta.id}/settings`,\n connector: (node) =>\n Rx.make((get) =>\n Function.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: meta.id }],\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", "Function", "Option", "Schema", "Capabilities", "contributes", "createIntent", "SpaceState", "getSpace", "isSpace", "parseId", "Filter", "Obj", "Query", "Type", "log", "ClientCapabilities", "ATTENDABLE_PATH_SEPARATOR", "PLANK_COMPANION_TYPE", "ROOT_ID", "createExtension", "rxFromObservable", "rxFromSignal", "DataType", "getTypenameFromQuery", "isNonNullable", "context", "resolve", "typename", "getCapabilities", "Capabilities", "Metadata", "find", "id", "metadata", "spacesNode", "SPACES", "type", "cacheable", "properties", "label", "ns", "meta", "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", "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", "object", "isNonNullable", "createObjectNode", "Obj", "instanceOf", "getSpace", "QueryCollection", "getTypenameFromQuery", "Query", "without", "select", "referencedBy", "reference", "toSorted", "localeCompare", "droppable", "StoredSchema", "staticRecords", "schemaRegistry", "schemas", "schema", "getTypename", "createStaticSchemaNode", "undefined", "isSchema", "View", "views", "filteredViews", "view", "ast", "deletable", "length", "createStaticSchemaActions", "resolver", "spaceId", "objectId", "parseId", "ids", "at", "isObject", "appGraph", "objectForms", "ObjectForm", "constructObjectActions", "join", "ATTENDABLE_PATH_SEPARATOR", "PLANK_COMPANION_TYPE"]
7
+ }
@@ -1,17 +1,17 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  translations
4
- } from "./chunk-P442DOQ3.mjs";
4
+ } from "./chunk-7UIEPBQJ.mjs";
5
5
  import {
6
6
  SPACES
7
- } from "./chunk-4AOMYKDE.mjs";
7
+ } from "./chunk-ZFCCFELA.mjs";
8
8
  import {
9
9
  SPACE_TYPE,
10
10
  SpaceAction
11
- } from "./chunk-JH6F4C3I.mjs";
11
+ } from "./chunk-ADEZJQE3.mjs";
12
12
  import {
13
- SPACE_PLUGIN
14
- } from "./chunk-HWNG4MEU.mjs";
13
+ meta
14
+ } from "./chunk-MWNATOXL.mjs";
15
15
 
16
16
  // src/capabilities/app-graph-serializer.ts
17
17
  import { Capabilities, contributes, createIntent } from "@dxos/app-framework";
@@ -20,13 +20,13 @@ import { Obj, Type } from "@dxos/echo";
20
20
  import { DataType } from "@dxos/schema";
21
21
  var COLLECTION_TYPE = Type.getTypename(DataType.Collection);
22
22
  var DIRECTORY_TYPE = "text/directory";
23
- var app_graph_serializer_default = (context) => contributes(Capabilities.AppGraphSerializer, [
23
+ var app_graph_serializer_default = ((context) => contributes(Capabilities.AppGraphSerializer, [
24
24
  {
25
25
  inputType: SPACES,
26
26
  outputType: DIRECTORY_TYPE,
27
27
  serialize: (node) => ({
28
- name: translations[0]["en-US"][SPACE_PLUGIN]["spaces label"] ?? "Spaces",
29
- data: translations[0]["en-US"][SPACE_PLUGIN]["spaces label"] ?? "Spaces",
28
+ name: translations[0]["en-US"][meta.id]["spaces label"] ?? "Spaces",
29
+ data: translations[0]["en-US"][meta.id]["spaces label"] ?? "Spaces",
30
30
  type: DIRECTORY_TYPE
31
31
  }),
32
32
  deserialize: () => {
@@ -36,8 +36,8 @@ var app_graph_serializer_default = (context) => contributes(Capabilities.AppGrap
36
36
  inputType: SPACE_TYPE,
37
37
  outputType: DIRECTORY_TYPE,
38
38
  serialize: (node) => ({
39
- name: node.data.properties.name ?? translations[0]["en-US"][SPACE_PLUGIN]["unnamed space label"],
40
- data: node.data.properties.name ?? translations[0]["en-US"][SPACE_PLUGIN]["unnamed space label"],
39
+ name: node.data.properties.name ?? translations[0]["en-US"][meta.id]["unnamed space label"],
40
+ data: node.data.properties.name ?? translations[0]["en-US"][meta.id]["unnamed space label"],
41
41
  type: DIRECTORY_TYPE
42
42
  }),
43
43
  deserialize: async (data) => {
@@ -53,8 +53,8 @@ var app_graph_serializer_default = (context) => contributes(Capabilities.AppGrap
53
53
  inputType: COLLECTION_TYPE,
54
54
  outputType: DIRECTORY_TYPE,
55
55
  serialize: (node) => ({
56
- name: node.data.name ?? translations[0]["en-US"][SPACE_PLUGIN]["object name placeholder"],
57
- data: node.data.name ?? translations[0]["en-US"][SPACE_PLUGIN]["object name placeholder"],
56
+ name: node.data.name ?? translations[0]["en-US"][meta.id]["object name placeholder"],
57
+ data: node.data.name ?? translations[0]["en-US"][meta.id]["object name placeholder"],
58
58
  type: DIRECTORY_TYPE
59
59
  }),
60
60
  deserialize: async (data, ancestors) => {
@@ -74,8 +74,8 @@ var app_graph_serializer_default = (context) => contributes(Capabilities.AppGrap
74
74
  return result.data?.object;
75
75
  }
76
76
  }
77
- ]);
77
+ ]));
78
78
  export {
79
79
  app_graph_serializer_default as default
80
80
  };
81
- //# sourceMappingURL=app-graph-serializer-2ICUGQQT.mjs.map
81
+ //# sourceMappingURL=app-graph-serializer-ZEDSY77N.mjs.map
@@ -0,0 +1,7 @@
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 { meta } 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'][meta.id]['spaces label'] ?? 'Spaces',\n data: translations[0]['en-US'][meta.id]['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'][meta.id]['unnamed space label'],\n data: node.data.properties.name ?? translations[0]['en-US'][meta.id]['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'][meta.id]['object name placeholder'],\n data: node.data.name ?? translations[0]['en-US'][meta.id]['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,gCAAe,CAACC,YACdC,YAAYC,aAAaC,oBAAoB;EAC3C;IACEC,WAAWC;IACXC,YAAYP;IACZQ,WAAW,CAACC,UAAU;MACpBC,MAAMC,aAAa,CAAA,EAAG,OAAA,EAASC,KAAKC,EAAE,EAAE,cAAA,KAAmB;MAC3DC,MAAMH,aAAa,CAAA,EAAG,OAAA,EAASC,KAAKC,EAAE,EAAE,cAAA,KAAmB;MAC3DE,MAAMf;IACR;IACAgB,aAAa,MAAA;IAEb;EACF;EACA;IACEX,WAAWY;IACXV,YAAYP;IACZQ,WAAW,CAACC,UAAU;MACpBC,MAAMD,KAAKK,KAAKI,WAAWR,QAAQC,aAAa,CAAA,EAAG,OAAA,EAASC,KAAKC,EAAE,EAAE,qBAAA;MACrEC,MAAML,KAAKK,KAAKI,WAAWR,QAAQC,aAAa,CAAA,EAAG,OAAA,EAASC,KAAKC,EAAE,EAAE,qBAAA;MACrEE,MAAMf;IACR;IACAgB,aAAa,OAAOF,SAAAA;AAClB,YAAM,EAAEK,iBAAiBC,SAAQ,IAAKnB,QAAQoB,cAAclB,aAAamB,gBAAgB;AACzF,YAAMC,SAAS,MAAMH,SAASI,aAAaC,YAAYC,QAAQ;QAAEhB,MAAMI,KAAKJ;QAAMiB,iBAAiB;MAAK,CAAA,CAAA;AACxG,aAAOJ,OAAOT,MAAMc;IACtB;EACF;EACA;IACEvB,WAAWV;IACXY,YAAYP;IACZQ,WAAW,CAACC,UAAU;MACpBC,MAAMD,KAAKK,KAAKJ,QAAQC,aAAa,CAAA,EAAG,OAAA,EAASC,KAAKC,EAAE,EAAE,yBAAA;MAC1DC,MAAML,KAAKK,KAAKJ,QAAQC,aAAa,CAAA,EAAG,OAAA,EAASC,KAAKC,EAAE,EAAE,yBAAA;MAC1DE,MAAMf;IACR;IACAgB,aAAa,OAAOF,MAAMe,cAAAA;AACxB,YAAMD,QAAQC,UAAUC,KAAKC,OAAAA;AAC7B,YAAMC,aACJH,UAAUI,SAAS,CAACC,aAAaC,IAAIC,WAAWtC,SAASC,YAAYmC,QAAAA,CAAAA,KACrEN,OAAOV,WAAWvB,eAAAA,GAAkB0C;AACtC,UAAI,CAACT,SAAS,CAACI,YAAY;AACzB;MACF;AAEA,YAAM,EAAEb,iBAAiBC,SAAQ,IAAKnB,QAAQoB,cAAclB,aAAamB,gBAAgB;AACzF,YAAMC,SAAS,MAAMH,SACnBI,aAAaC,YAAYa,WAAW;QAClCD,QAAQL;QACRO,QAAQJ,IAAIK,KAAK1C,SAASC,YAAY;UAAEW,MAAMI,KAAKJ;UAAM+B,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", "meta", "id", "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
+ }
@@ -0,0 +1,21 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ meta
4
+ } from "./chunk-MWNATOXL.mjs";
5
+
6
+ // src/capabilities/capabilities.ts
7
+ import { defineCapability } from "@dxos/app-framework";
8
+ (function(SpaceCapabilities2) {
9
+ SpaceCapabilities2.State = defineCapability(`${meta.id}/capability/state`);
10
+ SpaceCapabilities2.MutableState = defineCapability(`${meta.id}/capability/state`);
11
+ SpaceCapabilities2.SettingsSection = defineCapability(`${meta.id}/capability/settings-section`);
12
+ SpaceCapabilities2.onCreateSpace = defineCapability(`${meta.id}/capability/on-space-created`);
13
+ SpaceCapabilities2.OnSchemaAdded = defineCapability(`${meta.id}/capability/on-schema-added`);
14
+ SpaceCapabilities2.ObjectForm = defineCapability(`${meta.id}/capability/object-form`);
15
+ })(SpaceCapabilities || (SpaceCapabilities = {}));
16
+ var SpaceCapabilities;
17
+
18
+ export {
19
+ SpaceCapabilities
20
+ };
21
+ //# sourceMappingURL=chunk-36TAYXV7.mjs.map