@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
@@ -0,0 +1,31 @@
1
+ import {
2
+ meta
3
+ } from "./chunk-IRKDREHY.mjs";
4
+
5
+ // src/components/CollectionMain.tsx
6
+ import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
7
+ import React from "react";
8
+ import { useTranslation } from "@dxos/react-ui";
9
+ import { baseSurface, descriptionMessage, mx } from "@dxos/react-ui-theme";
10
+ var CollectionMain = ({ collection }) => {
11
+ var _effect = _useSignals();
12
+ try {
13
+ const { t } = useTranslation(meta.id);
14
+ return /* @__PURE__ */ React.createElement("div", {
15
+ role: "none",
16
+ className: mx(baseSurface, "min-bs-screen is-full flex items-center justify-center p-8"),
17
+ "data-testid": "composer.firstRunMessage"
18
+ }, /* @__PURE__ */ React.createElement("p", {
19
+ role: "alert",
20
+ className: mx(descriptionMessage, "rounded-md p-8 font-normal text-lg max-is-[24rem] break-words")
21
+ }, collection.name ?? t("unnamed collection label")));
22
+ } finally {
23
+ _effect.f();
24
+ }
25
+ };
26
+ var CollectionMain_default = CollectionMain;
27
+ export {
28
+ CollectionMain,
29
+ CollectionMain_default as default
30
+ };
31
+ //# sourceMappingURL=CollectionMain-AX7KKXWP.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/CollectionMain.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { useTranslation } from '@dxos/react-ui';\nimport { baseSurface, descriptionMessage, mx } from '@dxos/react-ui-theme';\nimport { type DataType } from '@dxos/schema';\n\nimport { meta } from '../meta';\n\nexport const CollectionMain = ({ collection }: { collection: DataType.Collection }) => {\n const { t } = useTranslation(meta.id);\n\n return (\n <div\n role='none'\n className={mx(baseSurface, 'min-bs-screen is-full flex items-center justify-center p-8')}\n data-testid='composer.firstRunMessage'\n >\n <p\n role='alert'\n className={mx(descriptionMessage, 'rounded-md p-8 font-normal text-lg max-is-[24rem] break-words')}\n >\n {collection.name ?? t('unnamed collection label')}\n </p>\n </div>\n );\n};\n\nexport default CollectionMain;\n"],
5
+ "mappings": ";;;;;;AAIA,OAAOA,WAAW;AAElB,SAASC,sBAAsB;AAC/B,SAASC,aAAaC,oBAAoBC,UAAU;AAK7C,IAAMC,iBAAiB,CAAC,EAAEC,WAAU,MAAuC;;;AAChF,UAAM,EAAEC,EAAC,IAAKC,eAAeC,KAAKC,EAAE;AAEpC,WACE,sBAAA,cAACC,OAAAA;MACCC,MAAK;MACLC,WAAWC,GAAGC,aAAa,4DAAA;MAC3BC,eAAY;OAEZ,sBAAA,cAACC,KAAAA;MACCL,MAAK;MACLC,WAAWC,GAAGI,oBAAoB,+DAAA;OAEjCZ,WAAWa,QAAQZ,EAAE,0BAAA,CAAA,CAAA;;;;AAI9B;AAEA,IAAA,yBAAeF;",
6
+ "names": ["React", "useTranslation", "baseSurface", "descriptionMessage", "mx", "CollectionMain", "collection", "t", "useTranslation", "meta", "id", "div", "role", "className", "mx", "baseSurface", "data-testid", "p", "descriptionMessage", "name"]
7
+ }
@@ -0,0 +1,90 @@
1
+ import {
2
+ meta
3
+ } from "./chunk-IRKDREHY.mjs";
4
+
5
+ // src/components/ObjectDetailsPanel.tsx
6
+ import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
7
+ import React, { useCallback } from "react";
8
+ import { setValue } from "@dxos/echo-schema";
9
+ import { invariant } from "@dxos/invariant";
10
+ import { useClient } from "@dxos/react-client";
11
+ import { Filter, getSpace, useQuery, useSchema } from "@dxos/react-client/echo";
12
+ import { Callout, useTranslation } from "@dxos/react-ui";
13
+ import { useSelected } from "@dxos/react-ui-attention";
14
+ import { Form, useRefQueryLookupHandler } from "@dxos/react-ui-form";
15
+ import { typenameFromQuery } from "@dxos/schema";
16
+ import { isNonNullable } from "@dxos/util";
17
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-space/src/components/ObjectDetailsPanel.tsx";
18
+ var ObjectDetailsPanel = ({ objectId, view }) => {
19
+ var _effect = _useSignals();
20
+ try {
21
+ const { t } = useTranslation(meta.id);
22
+ const client = useClient();
23
+ const space = getSpace(view);
24
+ const typename = view.query ? typenameFromQuery(view.query.ast) : void 0;
25
+ const schema = useSchema(client, space, typename);
26
+ const queriedObjects = useQuery(space, schema ? Filter.type(schema) : Filter.nothing());
27
+ const selectedRows = useSelected(objectId, "multi");
28
+ const selectedObjects = selectedRows.map((id) => queriedObjects.find((obj) => obj.id === id)).filter(isNonNullable);
29
+ const handleRefQueryLookup = useRefQueryLookupHandler({
30
+ space
31
+ });
32
+ const handleSave = useCallback((values, { changed }) => {
33
+ const id = values.id;
34
+ invariant(typeof id === "string", void 0, {
35
+ F: __dxlog_file,
36
+ L: 38,
37
+ S: void 0,
38
+ A: [
39
+ "typeof id === 'string'",
40
+ ""
41
+ ]
42
+ });
43
+ const object = queriedObjects.find((obj) => obj.id === id);
44
+ invariant(object, void 0, {
45
+ F: __dxlog_file,
46
+ L: 40,
47
+ S: void 0,
48
+ A: [
49
+ "object",
50
+ ""
51
+ ]
52
+ });
53
+ const changedPaths = Object.keys(changed).filter((path) => changed[path]);
54
+ for (const path of changedPaths) {
55
+ const value = values[path];
56
+ setValue(object, path, value);
57
+ }
58
+ }, [
59
+ queriedObjects
60
+ ]);
61
+ if (selectedObjects.length === 0) {
62
+ return /* @__PURE__ */ React.createElement("div", {
63
+ role: "none",
64
+ className: "plb-cardSpacingBlock pli-cardSpacingInline"
65
+ }, /* @__PURE__ */ React.createElement(Callout.Root, {
66
+ classNames: "is-full"
67
+ }, /* @__PURE__ */ React.createElement(Callout.Title, null, t("row details no selection label"))));
68
+ }
69
+ return /* @__PURE__ */ React.createElement("div", {
70
+ role: "none",
71
+ className: "bs-full is-full flex flex-col p-2 gap-1 overflow-y-auto"
72
+ }, schema && selectedObjects.map((object) => /* @__PURE__ */ React.createElement("div", {
73
+ key: object.id,
74
+ className: "border border-separator rounded"
75
+ }, /* @__PURE__ */ React.createElement(Form, {
76
+ autoSave: true,
77
+ schema,
78
+ values: object,
79
+ onSave: handleSave,
80
+ onQueryRefOptions: handleRefQueryLookup
81
+ }))));
82
+ } finally {
83
+ _effect.f();
84
+ }
85
+ };
86
+ var ObjectDetailsPanel_default = ObjectDetailsPanel;
87
+ export {
88
+ ObjectDetailsPanel_default as default
89
+ };
90
+ //# sourceMappingURL=ObjectDetailsPanel-ETI5YBTH.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/ObjectDetailsPanel.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback } from 'react';\n\nimport { type JsonPath, setValue } from '@dxos/echo-schema';\nimport { invariant } from '@dxos/invariant';\nimport { useClient } from '@dxos/react-client';\nimport { Filter, getSpace, useQuery, useSchema } from '@dxos/react-client/echo';\nimport { Callout, useTranslation } from '@dxos/react-ui';\nimport { useSelected } from '@dxos/react-ui-attention';\nimport { Form, useRefQueryLookupHandler } from '@dxos/react-ui-form';\nimport { type DataType } from '@dxos/schema';\nimport { typenameFromQuery } from '@dxos/schema';\nimport { isNonNullable } from '@dxos/util';\n\nimport { meta } from '../meta';\n\ntype RowDetailsPanelProps = { objectId: string; view: DataType.View };\n\nconst ObjectDetailsPanel = ({ objectId, view }: RowDetailsPanelProps) => {\n const { t } = useTranslation(meta.id);\n const client = useClient();\n const space = getSpace(view);\n const typename = view.query ? typenameFromQuery(view.query.ast) : undefined;\n const schema = useSchema(client, space, typename);\n\n const queriedObjects = useQuery(space, schema ? Filter.type(schema) : Filter.nothing());\n const selectedRows = useSelected(objectId, 'multi');\n const selectedObjects = selectedRows.map((id) => queriedObjects.find((obj) => obj.id === id)).filter(isNonNullable);\n\n const handleRefQueryLookup = useRefQueryLookupHandler({ space });\n\n const handleSave = useCallback(\n (values: any, { changed }: { changed: Record<JsonPath, boolean> }) => {\n const id = values.id;\n invariant(typeof id === 'string');\n const object = queriedObjects.find((obj) => obj.id === id);\n invariant(object);\n\n const changedPaths = Object.keys(changed).filter((path) => changed[path as JsonPath]) as JsonPath[];\n for (const path of changedPaths) {\n const value = values[path];\n setValue(object, path, value);\n }\n },\n [queriedObjects],\n );\n\n if (selectedObjects.length === 0) {\n return (\n <div role='none' className='plb-cardSpacingBlock pli-cardSpacingInline'>\n <Callout.Root classNames='is-full'>\n <Callout.Title>{t('row details no selection label')}</Callout.Title>\n </Callout.Root>\n </div>\n );\n }\n\n return (\n <div role='none' className='bs-full is-full flex flex-col p-2 gap-1 overflow-y-auto'>\n {schema &&\n selectedObjects.map((object) => (\n <div key={object.id} className='border border-separator rounded'>\n <Form\n autoSave\n schema={schema}\n values={object}\n onSave={handleSave}\n onQueryRefOptions={handleRefQueryLookup}\n />\n </div>\n ))}\n </div>\n );\n};\n\nexport default ObjectDetailsPanel;\n"],
5
+ "mappings": ";;;;;;AAIA,OAAOA,SAASC,mBAAmB;AAEnC,SAAwBC,gBAAgB;AACxC,SAASC,iBAAiB;AAC1B,SAASC,iBAAiB;AAC1B,SAASC,QAAQC,UAAUC,UAAUC,iBAAiB;AACtD,SAASC,SAASC,sBAAsB;AACxC,SAASC,mBAAmB;AAC5B,SAASC,MAAMC,gCAAgC;AAE/C,SAASC,yBAAyB;AAClC,SAASC,qBAAqB;;AAM9B,IAAMC,qBAAqB,CAAC,EAAEC,UAAUC,KAAI,MAAwB;;;AAClE,UAAM,EAAEC,EAAC,IAAKC,eAAeC,KAAKC,EAAE;AACpC,UAAMC,SAASC,UAAAA;AACf,UAAMC,QAAQC,SAASR,IAAAA;AACvB,UAAMS,WAAWT,KAAKU,QAAQC,kBAAkBX,KAAKU,MAAME,GAAG,IAAIC;AAClE,UAAMC,SAASC,UAAUV,QAAQE,OAAOE,QAAAA;AAExC,UAAMO,iBAAiBC,SAASV,OAAOO,SAASI,OAAOC,KAAKL,MAAAA,IAAUI,OAAOE,QAAO,CAAA;AACpF,UAAMC,eAAeC,YAAYvB,UAAU,OAAA;AAC3C,UAAMwB,kBAAkBF,aAAaG,IAAI,CAACpB,OAAOY,eAAeS,KAAK,CAACC,QAAQA,IAAItB,OAAOA,EAAAA,CAAAA,EAAKuB,OAAOC,aAAAA;AAErG,UAAMC,uBAAuBC,yBAAyB;MAAEvB;IAAM,CAAA;AAE9D,UAAMwB,aAAaC,YACjB,CAACC,QAAa,EAAEC,QAAO,MAA0C;AAC/D,YAAM9B,KAAK6B,OAAO7B;AAClB+B,gBAAU,OAAO/B,OAAO,UAAA,QAAA;;;;;;;;;AACxB,YAAMgC,SAASpB,eAAeS,KAAK,CAACC,QAAQA,IAAItB,OAAOA,EAAAA;AACvD+B,gBAAUC,QAAAA,QAAAA;;;;;;;;;AAEV,YAAMC,eAAeC,OAAOC,KAAKL,OAAAA,EAASP,OAAO,CAACa,SAASN,QAAQM,IAAAA,CAAiB;AACpF,iBAAWA,QAAQH,cAAc;AAC/B,cAAMI,QAAQR,OAAOO,IAAAA;AACrBE,iBAASN,QAAQI,MAAMC,KAAAA;MACzB;IACF,GACA;MAACzB;KAAe;AAGlB,QAAIO,gBAAgBoB,WAAW,GAAG;AAChC,aACE,sBAAA,cAACC,OAAAA;QAAIC,MAAK;QAAOC,WAAU;SACzB,sBAAA,cAACC,QAAQC,MAAI;QAACC,YAAW;SACvB,sBAAA,cAACF,QAAQG,OAAK,MAAEjD,EAAE,gCAAA,CAAA,CAAA,CAAA;IAI1B;AAEA,WACE,sBAAA,cAAC2C,OAAAA;MAAIC,MAAK;MAAOC,WAAU;OACxBhC,UACCS,gBAAgBC,IAAI,CAACY,WACnB,sBAAA,cAACQ,OAAAA;MAAIO,KAAKf,OAAOhC;MAAI0C,WAAU;OAC7B,sBAAA,cAACM,MAAAA;MACCC,UAAAA;MACAvC;MACAmB,QAAQG;MACRkB,QAAQvB;MACRwB,mBAAmB1B;;;;;AAMjC;AAEA,IAAA,6BAAe/B;",
6
+ "names": ["React", "useCallback", "setValue", "invariant", "useClient", "Filter", "getSpace", "useQuery", "useSchema", "Callout", "useTranslation", "useSelected", "Form", "useRefQueryLookupHandler", "typenameFromQuery", "isNonNullable", "ObjectDetailsPanel", "objectId", "view", "t", "useTranslation", "meta", "id", "client", "useClient", "space", "getSpace", "typename", "query", "typenameFromQuery", "ast", "undefined", "schema", "useSchema", "queriedObjects", "useQuery", "Filter", "type", "nothing", "selectedRows", "useSelected", "selectedObjects", "map", "find", "obj", "filter", "isNonNullable", "handleRefQueryLookup", "useRefQueryLookupHandler", "handleSave", "useCallback", "values", "changed", "invariant", "object", "changedPaths", "Object", "keys", "path", "value", "setValue", "length", "div", "role", "className", "Callout", "Root", "classNames", "Title", "key", "Form", "autoSave", "onSave", "onQueryRefOptions"]
7
+ }
@@ -0,0 +1,68 @@
1
+ // src/components/RecordMain.tsx
2
+ import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
3
+ import React, { useCallback } from "react";
4
+ import { Obj } from "@dxos/echo";
5
+ import { setValue } from "@dxos/echo-schema";
6
+ import { invariant } from "@dxos/invariant";
7
+ import { getSpace } from "@dxos/react-client/echo";
8
+ import { Form, useRefQueryLookupHandler } from "@dxos/react-ui-form";
9
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-space/src/components/RecordMain.tsx";
10
+ var RecordMain = ({ record }) => {
11
+ var _effect = _useSignals();
12
+ try {
13
+ const space = getSpace(record);
14
+ const schema = Obj.getSchema(record);
15
+ invariant(schema, "Record has no schema.", {
16
+ F: __dxlog_file,
17
+ L: 16,
18
+ S: void 0,
19
+ A: [
20
+ "schema",
21
+ "'Record has no schema.'"
22
+ ]
23
+ });
24
+ const handleRefQueryLookup = useRefQueryLookupHandler({
25
+ space
26
+ });
27
+ const handleSave = useCallback((values, { changed }) => {
28
+ const id = values.id;
29
+ invariant(typeof id === "string", void 0, {
30
+ F: __dxlog_file,
31
+ L: 23,
32
+ S: void 0,
33
+ A: [
34
+ "typeof id === 'string'",
35
+ ""
36
+ ]
37
+ });
38
+ const changedPaths = Object.keys(changed).filter((path) => changed[path]);
39
+ for (const path of changedPaths) {
40
+ const value = values[path];
41
+ setValue(record, path, value);
42
+ }
43
+ }, [
44
+ record
45
+ ]);
46
+ return /* @__PURE__ */ React.createElement("div", {
47
+ role: "none",
48
+ className: "container-max-width flex flex-col p-2 gap-1 overflow-y-auto"
49
+ }, /* @__PURE__ */ React.createElement("div", {
50
+ key: record.id,
51
+ className: "border border-separator rounded"
52
+ }, /* @__PURE__ */ React.createElement(Form, {
53
+ autoSave: true,
54
+ schema,
55
+ values: record,
56
+ onSave: handleSave,
57
+ onQueryRefOptions: handleRefQueryLookup
58
+ })));
59
+ } finally {
60
+ _effect.f();
61
+ }
62
+ };
63
+ var RecordMain_default = RecordMain;
64
+ export {
65
+ RecordMain,
66
+ RecordMain_default as default
67
+ };
68
+ //# sourceMappingURL=RecordMain-TEBGAVSL.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/RecordMain.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useCallback } from 'react';\n\nimport { Obj } from '@dxos/echo';\nimport { type JsonPath, setValue } from '@dxos/echo-schema';\nimport { invariant } from '@dxos/invariant';\nimport { getSpace } from '@dxos/react-client/echo';\nimport { Form, useRefQueryLookupHandler } from '@dxos/react-ui-form';\n\nexport const RecordMain = ({ record }: { record: Obj.Any }) => {\n const space = getSpace(record);\n const schema = Obj.getSchema(record);\n invariant(schema, 'Record has no schema.');\n\n const handleRefQueryLookup = useRefQueryLookupHandler({ space });\n\n const handleSave = useCallback(\n (values: any, { changed }: { changed: Record<JsonPath, boolean> }) => {\n const id = values.id;\n invariant(typeof id === 'string');\n\n const changedPaths = Object.keys(changed).filter((path) => changed[path as JsonPath]) as JsonPath[];\n for (const path of changedPaths) {\n const value = values[path];\n setValue(record, path, value);\n }\n },\n [record],\n );\n\n return (\n <div role='none' className='container-max-width flex flex-col p-2 gap-1 overflow-y-auto'>\n <div key={record.id} className='border border-separator rounded'>\n <Form autoSave schema={schema} values={record} onSave={handleSave} onQueryRefOptions={handleRefQueryLookup} />\n </div>\n </div>\n );\n};\n\nexport default RecordMain;\n"],
5
+ "mappings": ";;AAIA,OAAOA,SAASC,mBAAmB;AAEnC,SAASC,WAAW;AACpB,SAAwBC,gBAAgB;AACxC,SAASC,iBAAiB;AAC1B,SAASC,gBAAgB;AACzB,SAASC,MAAMC,gCAAgC;;AAExC,IAAMC,aAAa,CAAC,EAAEC,OAAM,MAAuB;;;AACxD,UAAMC,QAAQL,SAASI,MAAAA;AACvB,UAAME,SAAST,IAAIU,UAAUH,MAAAA;AAC7BL,cAAUO,QAAQ,yBAAA;;;;;;;;;AAElB,UAAME,uBAAuBN,yBAAyB;MAAEG;IAAM,CAAA;AAE9D,UAAMI,aAAab,YACjB,CAACc,QAAa,EAAEC,QAAO,MAA0C;AAC/D,YAAMC,KAAKF,OAAOE;AAClBb,gBAAU,OAAOa,OAAO,UAAA,QAAA;;;;;;;;;AAExB,YAAMC,eAAeC,OAAOC,KAAKJ,OAAAA,EAASK,OAAO,CAACC,SAASN,QAAQM,IAAAA,CAAiB;AACpF,iBAAWA,QAAQJ,cAAc;AAC/B,cAAMK,QAAQR,OAAOO,IAAAA;AACrBnB,iBAASM,QAAQa,MAAMC,KAAAA;MACzB;IACF,GACA;MAACd;KAAO;AAGV,WACE,sBAAA,cAACe,OAAAA;MAAIC,MAAK;MAAOC,WAAU;OACzB,sBAAA,cAACF,OAAAA;MAAIG,KAAKlB,OAAOQ;MAAIS,WAAU;OAC7B,sBAAA,cAACpB,MAAAA;MAAKsB,UAAAA;MAASjB;MAAgBI,QAAQN;MAAQoB,QAAQf;MAAYgB,mBAAmBjB;;;;;AAI9F;AAEA,IAAA,qBAAeL;",
6
+ "names": ["React", "useCallback", "Obj", "setValue", "invariant", "getSpace", "Form", "useRefQueryLookupHandler", "RecordMain", "record", "space", "schema", "getSchema", "handleRefQueryLookup", "handleSave", "values", "changed", "id", "changedPaths", "Object", "keys", "filter", "path", "value", "div", "role", "className", "key", "autoSave", "onSave", "onQueryRefOptions"]
7
+ }
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  getActiveSpace
3
- } from "./chunk-VLBRSGJ2.mjs";
3
+ } from "./chunk-ELJDGQTO.mjs";
4
4
  import {
5
5
  SpaceCapabilities
6
- } from "./chunk-XXIPJLJF.mjs";
6
+ } from "./chunk-E2I747A7.mjs";
7
7
  import {
8
8
  SHARED,
9
9
  SPACES,
@@ -11,30 +11,32 @@ import {
11
11
  constructSpaceActions,
12
12
  constructSpaceNode,
13
13
  createObjectNode,
14
+ createStaticSchemaActions,
15
+ createStaticSchemaNode,
14
16
  rxFromQuery
15
- } from "./chunk-WBSEOLEM.mjs";
17
+ } from "./chunk-PN27K4I7.mjs";
16
18
  import {
17
19
  SPACE_TYPE,
18
20
  SpaceAction
19
- } from "./chunk-S6NY637J.mjs";
21
+ } from "./chunk-JCHSUOPF.mjs";
20
22
  import {
21
- SPACE_PLUGIN
22
- } from "./chunk-FBCGT5YY.mjs";
23
+ meta
24
+ } from "./chunk-IRKDREHY.mjs";
23
25
 
24
26
  // src/capabilities/app-graph-builder.ts
25
27
  import { Rx } from "@effect-rx/rx-react";
26
- import { Array, Option, pipe } from "effect";
28
+ import { Array, Option, Schema, pipe } from "effect";
27
29
  import { Capabilities, contributes, createIntent } from "@dxos/app-framework";
28
- import { getSpace, SpaceState, isSpace } from "@dxos/client/echo";
30
+ import { SpaceState, getSpace, isSpace, parseId } from "@dxos/client/echo";
29
31
  import { Filter, Obj, Query, Type } from "@dxos/echo";
30
32
  import { log } from "@dxos/log";
31
33
  import { ClientCapabilities } from "@dxos/plugin-client";
32
- import { PLANK_COMPANION_TYPE, ATTENDABLE_PATH_SEPARATOR } from "@dxos/plugin-deck/types";
33
- import { createExtension, rxFromObservable, ROOT_ID, rxFromSignal } from "@dxos/plugin-graph";
34
- import { DataType } from "@dxos/schema";
34
+ import { ATTENDABLE_PATH_SEPARATOR, PLANK_COMPANION_TYPE } from "@dxos/plugin-deck/types";
35
+ import { ROOT_ID, createExtension, rxFromObservable, rxFromSignal } from "@dxos/plugin-graph";
36
+ import { DataType, typenameFromQuery } from "@dxos/schema";
35
37
  import { isNonNullable } from "@dxos/util";
36
38
  var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-space/src/capabilities/app-graph-builder.ts";
37
- var app_graph_builder_default = (context) => {
39
+ var app_graph_builder_default = ((context) => {
38
40
  const resolve = (typename) => context.getCapabilities(Capabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {};
39
41
  const spacesNode = {
40
42
  id: SPACES,
@@ -47,7 +49,7 @@ var app_graph_builder_default = (context) => {
47
49
  label: [
48
50
  "spaces label",
49
51
  {
50
- ns: SPACE_PLUGIN
52
+ ns: meta.id
51
53
  }
52
54
  ],
53
55
  icon: "ph--planet--regular",
@@ -68,7 +70,7 @@ var app_graph_builder_default = (context) => {
68
70
  } else {
69
71
  log.warn("spaces order object not found", void 0, {
70
72
  F: __dxlog_file,
71
- L: 68,
73
+ L: 71,
72
74
  S: void 0,
73
75
  C: (f, a) => f(...a)
74
76
  });
@@ -79,7 +81,7 @@ var app_graph_builder_default = (context) => {
79
81
  return contributes(Capabilities.AppGraphBuilder, [
80
82
  // Primary actions.
81
83
  createExtension({
82
- id: `${SPACE_PLUGIN}/primary-actions`,
84
+ id: `${meta.id}/primary-actions`,
83
85
  position: "hoist",
84
86
  actions: (node) => Rx.make((get) => pipe(get(node), Option.flatMap((node2) => node2.id === ROOT_ID ? Option.some(node2) : Option.none()), Option.map(() => [
85
87
  {
@@ -92,7 +94,7 @@ var app_graph_builder_default = (context) => {
92
94
  label: [
93
95
  "create space label",
94
96
  {
95
- ns: SPACE_PLUGIN
97
+ ns: meta.id
96
98
  }
97
99
  ],
98
100
  icon: "ph--plus--regular",
@@ -110,7 +112,7 @@ var app_graph_builder_default = (context) => {
110
112
  label: [
111
113
  "join space label",
112
114
  {
113
- ns: SPACE_PLUGIN
115
+ ns: meta.id
114
116
  }
115
117
  ],
116
118
  icon: "ph--sign-in--regular",
@@ -132,7 +134,7 @@ var app_graph_builder_default = (context) => {
132
134
  label: [
133
135
  "share space label",
134
136
  {
135
- ns: SPACE_PLUGIN
137
+ ns: meta.id
136
138
  }
137
139
  ],
138
140
  icon: "ph--users--regular",
@@ -157,7 +159,7 @@ var app_graph_builder_default = (context) => {
157
159
  label: [
158
160
  "open current space settings label",
159
161
  {
160
- ns: SPACE_PLUGIN
162
+ ns: meta.id
161
163
  }
162
164
  ],
163
165
  icon: "ph--faders--regular",
@@ -171,7 +173,7 @@ var app_graph_builder_default = (context) => {
171
173
  }),
172
174
  // Create spaces group node.
173
175
  createExtension({
174
- id: `${SPACE_PLUGIN}/root`,
176
+ id: `${meta.id}/root`,
175
177
  position: "hoist",
176
178
  connector: (node) => Rx.make((get) => pipe(get(node), Option.flatMap((node2) => node2.id === ROOT_ID ? Option.some(node2) : Option.none()), Option.map(() => [
177
179
  spacesNode
@@ -192,7 +194,7 @@ var app_graph_builder_default = (context) => {
192
194
  if (!spaces || !isReady) {
193
195
  return [];
194
196
  }
195
- const settings = get(context.capabilities(Capabilities.SettingsStore))[0]?.getStore(SPACE_PLUGIN)?.value;
197
+ const settings = get(context.capabilities(Capabilities.SettingsStore))[0]?.getStore(meta.id)?.value;
196
198
  try {
197
199
  if (!query) {
198
200
  query = client.spaces.default.db.query(Filter.type(Type.Expando, {
@@ -225,7 +227,7 @@ var app_graph_builder_default = (context) => {
225
227
  }),
226
228
  // Create space actions.
227
229
  createExtension({
228
- id: `${SPACE_PLUGIN}/actions`,
230
+ id: `${meta.id}/actions`,
229
231
  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) => {
230
232
  const [dispatcher] = get(context.capabilities(Capabilities.IntentDispatcher));
231
233
  const [client] = get(context.capabilities(ClientCapabilities.Client));
@@ -244,7 +246,7 @@ var app_graph_builder_default = (context) => {
244
246
  }),
245
247
  // Create nodes for objects in the root collection of a space.
246
248
  createExtension({
247
- id: `${SPACE_PLUGIN}/root-collection`,
249
+ id: `${meta.id}/root-collection`,
248
250
  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) => {
249
251
  const state = context.getCapability(SpaceCapabilities.State);
250
252
  const spaceState = get(rxFromObservable(space.state));
@@ -265,7 +267,7 @@ var app_graph_builder_default = (context) => {
265
267
  }),
266
268
  // Create nodes for objects in a collection or by its fully qualified id.
267
269
  createExtension({
268
- id: `${SPACE_PLUGIN}/objects`,
270
+ id: `${meta.id}/objects`,
269
271
  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) => {
270
272
  const state = context.getCapability(SpaceCapabilities.State);
271
273
  const space = getSpace(collection);
@@ -279,13 +281,14 @@ var app_graph_builder_default = (context) => {
279
281
  }),
280
282
  // Create nodes for objects in a query collection.
281
283
  createExtension({
282
- id: `${SPACE_PLUGIN}/query-collection-objects`,
284
+ id: `${meta.id}/query-collection-objects`,
283
285
  connector: (node) => {
284
286
  let query;
285
287
  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) => {
286
288
  const space = getSpace(collection);
287
- return collection.query.typename && space ? Option.some({
288
- typename: collection.query.typename,
289
+ const typename = typenameFromQuery(collection.query);
290
+ return typename && space ? Option.some({
291
+ typename,
289
292
  space
290
293
  }) : Option.none();
291
294
  }), Option.map(({ typename, space }) => {
@@ -299,7 +302,7 @@ var app_graph_builder_default = (context) => {
299
302
  Query.select(Filter.typename(typename)).referencedBy(DataType.Collection, "objects").reference("objects")
300
303
  ));
301
304
  }
302
- return get(rxFromQuery(query)).map((object) => get(rxFromSignal(() => createObjectNode({
305
+ return get(rxFromQuery(query)).toSorted((a, b) => a.id.localeCompare(b.id)).map((object) => get(rxFromSignal(() => createObjectNode({
303
306
  object,
304
307
  space,
305
308
  resolve,
@@ -309,30 +312,181 @@ var app_graph_builder_default = (context) => {
309
312
  }), Option.getOrElse(() => [])));
310
313
  }
311
314
  }),
312
- // Create collection actions and action groups.
315
+ // Static schema records.
313
316
  createExtension({
314
- id: `${SPACE_PLUGIN}/object-actions`,
315
- actions: (node) => Rx.make((get) => pipe(get(node), Option.flatMap((node2) => Obj.isObject(node2.data) ? Option.some(node2.data) : Option.none()), Option.flatMap((object) => {
316
- const [dispatcher] = get(context.capabilities(Capabilities.IntentDispatcher));
317
- const [appGraph] = get(context.capabilities(Capabilities.AppGraph));
318
- const [state] = get(context.capabilities(SpaceCapabilities.State));
319
- const objectForms = get(context.capabilities(SpaceCapabilities.ObjectForm));
320
- if (!dispatcher || !appGraph || !state) {
321
- return Option.none();
322
- } else {
323
- return Option.some({
324
- object,
325
- graph: appGraph.graph,
317
+ id: `${meta.id}/static-schemas`,
318
+ connector: (node) => {
319
+ const client = context.getCapability(ClientCapabilities.Client);
320
+ return Rx.make((get) => pipe(get(node), Option.flatMap((node2) => Obj.instanceOf(DataType.QueryCollection, node2.data) && typenameFromQuery(node2.data.query) === DataType.StoredSchema.typename ? Option.some(node2.data) : Option.none()), Option.flatMap((collection) => {
321
+ const space = getSpace(collection);
322
+ return space?.properties.staticRecords ? Option.some(space) : Option.none();
323
+ }), Option.map((space) => {
324
+ return get(rxFromSignal(() => space.properties.staticRecords ?? [])).map((typename) => client.graph.schemaRegistry.schemas.find((schema) => Type.getTypename(schema) === typename)).filter(isNonNullable).map((schema) => createStaticSchemaNode({
325
+ schema,
326
+ space
327
+ }));
328
+ }), Option.getOrElse(() => [])));
329
+ }
330
+ }),
331
+ // Create static schema actions.
332
+ createExtension({
333
+ id: `${meta.id}/static-schema-actions`,
334
+ actions: (node) => {
335
+ let query;
336
+ return Rx.make((get) => pipe(get(node), Option.flatMap((node2) => {
337
+ const space = isSpace(node2.properties.space) ? node2.properties.space : void 0;
338
+ return space && Schema.isSchema(node2.data) ? Option.some({
339
+ space,
340
+ schema: node2.data
341
+ }) : Option.none();
342
+ }), Option.map(({ space, schema }) => {
343
+ if (!query) {
344
+ query = space.db.query(Filter.type(DataType.View));
345
+ }
346
+ const views = get(rxFromQuery(query));
347
+ const filteredViews = get(rxFromSignal(() => (
348
+ // TODO(wittjosiah): Remove cast.
349
+ views.filter((view) => typenameFromQuery(view.query.ast) === Type.getTypename(schema))
350
+ )));
351
+ const deletable = filteredViews.length === 0;
352
+ const [dispatcher] = get(context.capabilities(Capabilities.IntentDispatcher));
353
+ if (!dispatcher) {
354
+ return [];
355
+ }
356
+ return createStaticSchemaActions({
357
+ schema,
358
+ space,
326
359
  dispatch: dispatcher.dispatchPromise,
327
- objectForms,
328
- navigable: get(rxFromSignal(() => state.navigableCollections))
360
+ deletable
329
361
  });
362
+ }), Option.getOrElse(() => [])));
363
+ }
364
+ }),
365
+ // Create nodes for schema views.
366
+ createExtension({
367
+ id: `${meta.id}/schema-views`,
368
+ connector: (node) => {
369
+ let query;
370
+ return Rx.make((get) => pipe(get(node), Option.flatMap((node2) => {
371
+ const space = getSpace(node2.data) ?? (isSpace(node2.properties.space) ? node2.properties.space : void 0);
372
+ return space && (Obj.instanceOf(DataType.StoredSchema, node2.data) || Schema.isSchema(node2.data)) ? Option.some({
373
+ space,
374
+ schema: node2.data
375
+ }) : Option.none();
376
+ }), Option.map(({ space, schema }) => {
377
+ if (!query) {
378
+ query = space.db.query(Filter.type(DataType.View));
379
+ }
380
+ const typename = Schema.isSchema(schema) ? Type.getTypename(schema) : schema.typename;
381
+ return get(rxFromQuery(query)).filter((view) => typenameFromQuery(view.query.ast) === typename).map((view) => get(rxFromSignal(() => createObjectNode({
382
+ object: view,
383
+ space,
384
+ resolve,
385
+ droppable: false
386
+ })))).filter(isNonNullable);
387
+ }), Option.getOrElse(() => [])));
388
+ }
389
+ }),
390
+ // Create record nodes.
391
+ createExtension({
392
+ id: `${meta.id}/records`,
393
+ resolver: (id) => {
394
+ let query;
395
+ return Rx.make((get) => {
396
+ const client = context.getCapability(ClientCapabilities.Client);
397
+ const { spaceId, objectId } = parseId(id);
398
+ if (!spaceId || !objectId) {
399
+ return null;
400
+ }
401
+ const space = client.spaces.get(spaceId);
402
+ if (!space) {
403
+ return null;
404
+ }
405
+ if (!query) {
406
+ query = space.db.query(Filter.ids(objectId));
407
+ }
408
+ const object = get(rxFromQuery(query)).at(0);
409
+ if (!object) {
410
+ return null;
411
+ }
412
+ return createObjectNode({
413
+ object,
414
+ space,
415
+ resolve,
416
+ disposition: "hidden"
417
+ });
418
+ });
419
+ }
420
+ }),
421
+ // Create collection actions and action groups.
422
+ createExtension({
423
+ id: `${meta.id}/object-actions`,
424
+ actions: (node) => {
425
+ let query;
426
+ return Rx.make((get) => pipe(get(node), Option.flatMap((node2) => {
427
+ const space = getSpace(node2.data);
428
+ return space && Obj.isObject(node2.data) ? Option.some({
429
+ space,
430
+ object: node2.data
431
+ }) : Option.none();
432
+ }), Option.flatMap(({ space, object }) => {
433
+ const isSchema = Obj.instanceOf(DataType.StoredSchema, object);
434
+ if (!query && isSchema) {
435
+ query = space.db.query(Filter.type(DataType.View));
436
+ }
437
+ let deletable = !isSchema && // Don't allow the Records smart collection to be deleted.
438
+ !(Obj.instanceOf(DataType.QueryCollection, object) && typenameFromQuery(object.query) === DataType.StoredSchema.typename);
439
+ if (isSchema && query) {
440
+ const views = get(rxFromQuery(query));
441
+ const filteredViews = get(rxFromSignal(() => views.filter((view) => typenameFromQuery(view.query.ast) === object.typename)));
442
+ deletable = filteredViews.length === 0;
443
+ }
444
+ const [dispatcher] = get(context.capabilities(Capabilities.IntentDispatcher));
445
+ const [appGraph] = get(context.capabilities(Capabilities.AppGraph));
446
+ const [state] = get(context.capabilities(SpaceCapabilities.State));
447
+ const objectForms = get(context.capabilities(SpaceCapabilities.ObjectForm));
448
+ if (!dispatcher || !appGraph || !state) {
449
+ return Option.none();
450
+ } else {
451
+ return Option.some({
452
+ object,
453
+ graph: appGraph.graph,
454
+ dispatch: dispatcher.dispatchPromise,
455
+ objectForms,
456
+ deletable,
457
+ navigable: get(rxFromSignal(() => state.navigableCollections))
458
+ });
459
+ }
460
+ }), Option.map((params) => constructObjectActions(params)), Option.getOrElse(() => [])));
461
+ }
462
+ }),
463
+ // View selected objects.
464
+ createExtension({
465
+ id: `${meta.id}/selected-objects`,
466
+ 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) => [
467
+ {
468
+ id: [
469
+ node2.id,
470
+ "selected-objects"
471
+ ].join(ATTENDABLE_PATH_SEPARATOR),
472
+ type: PLANK_COMPANION_TYPE,
473
+ data: "selected-objects",
474
+ properties: {
475
+ label: [
476
+ "companion selected objects label",
477
+ {
478
+ ns: meta.id
479
+ }
480
+ ],
481
+ icon: "ph--tree-view--regular",
482
+ disposition: "hidden"
483
+ }
330
484
  }
331
- }), Option.map((params) => constructObjectActions(params)), Option.getOrElse(() => [])))
485
+ ]), Option.getOrElse(() => [])))
332
486
  }),
333
487
  // Object settings plank companion.
334
488
  createExtension({
335
- id: `${SPACE_PLUGIN}/settings`,
489
+ id: `${meta.id}/settings`,
336
490
  connector: (node) => Rx.make((get) => pipe(get(node), Option.flatMap((node2) => Obj.isObject(node2.data) ? Option.some(node2) : Option.none()), Option.map((node2) => [
337
491
  {
338
492
  id: [
@@ -345,7 +499,7 @@ var app_graph_builder_default = (context) => {
345
499
  label: [
346
500
  "object settings label",
347
501
  {
348
- ns: SPACE_PLUGIN
502
+ ns: meta.id
349
503
  }
350
504
  ],
351
505
  icon: "ph--sliders--regular",
@@ -356,8 +510,8 @@ var app_graph_builder_default = (context) => {
356
510
  ]), Option.getOrElse(() => [])))
357
511
  })
358
512
  ]);
359
- };
513
+ });
360
514
  export {
361
515
  app_graph_builder_default as default
362
516
  };
363
- //# sourceMappingURL=app-graph-builder-PMDF6PJV.mjs.map
517
+ //# sourceMappingURL=app-graph-builder-W7RVDAUA.mjs.map