@dxos/plugin-deck 0.8.4-main.422d1c7879 → 0.8.4-main.51f1e5ca51

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 (252) hide show
  1. package/dist/lib/browser/{add-toast-EUN62IUE.mjs → add-toast-JWJOQNVL.mjs} +3 -3
  2. package/dist/lib/browser/{add-toast-EUN62IUE.mjs.map → add-toast-JWJOQNVL.mjs.map} +1 -1
  3. package/dist/lib/browser/{adjust-XWB6ZZ6U.mjs → adjust-RG6LIQLX.mjs} +7 -7
  4. package/dist/lib/browser/{adjust-XWB6ZZ6U.mjs.map → adjust-RG6LIQLX.mjs.map} +1 -1
  5. package/dist/lib/browser/{chunk-KUTDCWZF.mjs → chunk-GLB73Q6U.mjs} +2 -10
  6. package/dist/lib/browser/{chunk-KUTDCWZF.mjs.map → chunk-GLB73Q6U.mjs.map} +2 -2
  7. package/dist/lib/browser/{chunk-BRZAVPMC.mjs → chunk-LSZ47AY3.mjs} +1 -1
  8. package/dist/lib/browser/{chunk-5LM6A3EC.mjs → chunk-MARE7ZFK.mjs} +22 -15
  9. package/dist/lib/browser/{chunk-5LM6A3EC.mjs.map → chunk-MARE7ZFK.mjs.map} +3 -3
  10. package/dist/lib/browser/{chunk-FRVCL5NO.mjs → chunk-XM263CQU.mjs} +2 -2
  11. package/dist/lib/browser/chunk-XM263CQU.mjs.map +7 -0
  12. package/dist/lib/browser/{chunk-DF2VZ6W3.mjs → chunk-ZYYOSX5I.mjs} +1 -1
  13. package/dist/lib/browser/{chunk-DF2VZ6W3.mjs.map → chunk-ZYYOSX5I.mjs.map} +2 -2
  14. package/dist/lib/browser/{close-JXK73YIM.mjs → close-URA766JO.mjs} +6 -6
  15. package/dist/lib/browser/{close-JXK73YIM.mjs.map → close-URA766JO.mjs.map} +1 -1
  16. package/dist/lib/browser/index.mjs +7 -70
  17. package/dist/lib/browser/index.mjs.map +4 -4
  18. package/dist/lib/browser/meta.json +1 -1
  19. package/dist/lib/browser/{open-K2JOEW2E.mjs → open-OPFOOHCQ.mjs} +7 -10
  20. package/dist/lib/browser/open-OPFOOHCQ.mjs.map +7 -0
  21. package/dist/lib/browser/operations/index.mjs +3 -3
  22. package/dist/lib/browser/operations/index.mjs.map +3 -3
  23. package/dist/lib/browser/{revert-workspace-BNIR5U64.mjs → revert-workspace-KP2Y4QLG.mjs} +3 -3
  24. package/dist/lib/browser/{revert-workspace-BNIR5U64.mjs.map → revert-workspace-KP2Y4QLG.mjs.map} +1 -1
  25. package/dist/lib/browser/{scroll-into-view-4GSKC3GA.mjs → scroll-into-view-S5H2FGSQ.mjs} +3 -3
  26. package/dist/lib/browser/{scroll-into-view-4GSKC3GA.mjs.map → scroll-into-view-S5H2FGSQ.mjs.map} +1 -1
  27. package/dist/lib/browser/{set-XCG6NIAO.mjs → set-AEKFFSIX.mjs} +5 -5
  28. package/dist/lib/browser/{set-XCG6NIAO.mjs.map → set-AEKFFSIX.mjs.map} +1 -1
  29. package/dist/lib/browser/{set-layout-mode-BEVNGOY2.mjs → set-layout-mode-CWIGQDFZ.mjs} +5 -10
  30. package/dist/lib/browser/set-layout-mode-CWIGQDFZ.mjs.map +7 -0
  31. package/dist/lib/browser/{show-undo-5RQNREEB.mjs → show-undo-XFVEDKYC.mjs} +3 -3
  32. package/dist/lib/browser/{show-undo-5RQNREEB.mjs.map → show-undo-XFVEDKYC.mjs.map} +1 -1
  33. package/dist/lib/browser/{switch-workspace-ICJJWNFT.mjs → switch-workspace-DSAAXZSI.mjs} +4 -12
  34. package/dist/lib/browser/switch-workspace-DSAAXZSI.mjs.map +7 -0
  35. package/dist/lib/browser/translations.mjs +57 -0
  36. package/dist/lib/browser/translations.mjs.map +7 -0
  37. package/dist/lib/browser/types/index.mjs +1 -1
  38. package/dist/lib/browser/{update-companion-VPCBH3YT.mjs → update-companion-IDBBBHT3.mjs} +4 -4
  39. package/dist/lib/browser/{update-companion-VPCBH3YT.mjs.map → update-companion-IDBBBHT3.mjs.map} +1 -1
  40. package/dist/lib/browser/{update-complementary-74DEQY6T.mjs → update-complementary-55PNO5MD.mjs} +3 -3
  41. package/dist/lib/browser/{update-complementary-74DEQY6T.mjs.map → update-complementary-55PNO5MD.mjs.map} +1 -1
  42. package/dist/lib/browser/{update-dialog-6TDUYI5R.mjs → update-dialog-VNARIANC.mjs} +3 -3
  43. package/dist/lib/browser/{update-dialog-6TDUYI5R.mjs.map → update-dialog-VNARIANC.mjs.map} +1 -1
  44. package/dist/lib/browser/{update-plank-size-5VHZOTHE.mjs → update-plank-size-H63PRRXS.mjs} +5 -5
  45. package/dist/lib/browser/{update-plank-size-5VHZOTHE.mjs.map → update-plank-size-H63PRRXS.mjs.map} +1 -1
  46. package/dist/lib/browser/{update-popover-W7E2Z5T6.mjs → update-popover-ODTPZ3JL.mjs} +3 -3
  47. package/dist/lib/browser/{update-popover-W7E2Z5T6.mjs.map → update-popover-ODTPZ3JL.mjs.map} +1 -1
  48. package/dist/lib/browser/{update-sidebar-H3A6ZFRU.mjs → update-sidebar-JDVQ36WK.mjs} +3 -3
  49. package/dist/lib/browser/{update-sidebar-H3A6ZFRU.mjs.map → update-sidebar-JDVQ36WK.mjs.map} +1 -1
  50. package/dist/lib/node-esm/{add-toast-AZM7NFNM.mjs → add-toast-JUTN4GTI.mjs} +3 -3
  51. package/dist/lib/node-esm/{add-toast-AZM7NFNM.mjs.map → add-toast-JUTN4GTI.mjs.map} +1 -1
  52. package/dist/lib/node-esm/{adjust-ICALXQ6F.mjs → adjust-P5QK33P4.mjs} +7 -7
  53. package/dist/lib/node-esm/{adjust-ICALXQ6F.mjs.map → adjust-P5QK33P4.mjs.map} +1 -1
  54. package/dist/lib/node-esm/{chunk-B7WZXRW4.mjs → chunk-FO7YDJZ3.mjs} +22 -15
  55. package/dist/lib/node-esm/{chunk-B7WZXRW4.mjs.map → chunk-FO7YDJZ3.mjs.map} +3 -3
  56. package/dist/lib/node-esm/{chunk-MB4SDDVY.mjs → chunk-KY7ZCANM.mjs} +1 -1
  57. package/dist/lib/node-esm/{chunk-A63Q53TW.mjs → chunk-L7OVX7CV.mjs} +2 -2
  58. package/dist/lib/node-esm/chunk-L7OVX7CV.mjs.map +7 -0
  59. package/dist/lib/node-esm/{chunk-MLVJ2ODW.mjs → chunk-SHSR2CYO.mjs} +2 -10
  60. package/dist/lib/node-esm/{chunk-MLVJ2ODW.mjs.map → chunk-SHSR2CYO.mjs.map} +2 -2
  61. package/dist/lib/node-esm/{chunk-IRWCUYJY.mjs → chunk-WGBUTT5K.mjs} +1 -1
  62. package/dist/lib/node-esm/{chunk-IRWCUYJY.mjs.map → chunk-WGBUTT5K.mjs.map} +2 -2
  63. package/dist/lib/node-esm/{close-GC5V3GD5.mjs → close-U5VC7ERP.mjs} +6 -6
  64. package/dist/lib/node-esm/{close-GC5V3GD5.mjs.map → close-U5VC7ERP.mjs.map} +1 -1
  65. package/dist/lib/node-esm/index.mjs +7 -70
  66. package/dist/lib/node-esm/index.mjs.map +4 -4
  67. package/dist/lib/node-esm/meta.json +1 -1
  68. package/dist/lib/node-esm/{open-XXEHIR6G.mjs → open-4B3P5XGS.mjs} +7 -10
  69. package/dist/lib/node-esm/open-4B3P5XGS.mjs.map +7 -0
  70. package/dist/lib/node-esm/operations/index.mjs +3 -3
  71. package/dist/lib/node-esm/operations/index.mjs.map +3 -3
  72. package/dist/lib/node-esm/{revert-workspace-WCXAL5C6.mjs → revert-workspace-QD63M2U7.mjs} +3 -3
  73. package/dist/lib/node-esm/{revert-workspace-WCXAL5C6.mjs.map → revert-workspace-QD63M2U7.mjs.map} +1 -1
  74. package/dist/lib/node-esm/{scroll-into-view-2ZNU44ZO.mjs → scroll-into-view-G5M2EWK7.mjs} +3 -3
  75. package/dist/lib/node-esm/{scroll-into-view-2ZNU44ZO.mjs.map → scroll-into-view-G5M2EWK7.mjs.map} +1 -1
  76. package/dist/lib/node-esm/{set-5MO2JCUQ.mjs → set-ERJCXZBY.mjs} +5 -5
  77. package/dist/lib/node-esm/{set-5MO2JCUQ.mjs.map → set-ERJCXZBY.mjs.map} +1 -1
  78. package/dist/lib/node-esm/{set-layout-mode-3RK4HIG7.mjs → set-layout-mode-BOZD7744.mjs} +5 -10
  79. package/dist/lib/node-esm/set-layout-mode-BOZD7744.mjs.map +7 -0
  80. package/dist/lib/node-esm/{show-undo-WV7SAYGJ.mjs → show-undo-H5BRBYDC.mjs} +3 -3
  81. package/dist/lib/node-esm/{show-undo-WV7SAYGJ.mjs.map → show-undo-H5BRBYDC.mjs.map} +1 -1
  82. package/dist/lib/node-esm/{switch-workspace-VNM75H66.mjs → switch-workspace-F54PXE5N.mjs} +4 -12
  83. package/dist/lib/node-esm/switch-workspace-F54PXE5N.mjs.map +7 -0
  84. package/dist/lib/node-esm/translations.mjs +58 -0
  85. package/dist/lib/node-esm/translations.mjs.map +7 -0
  86. package/dist/lib/node-esm/types/index.mjs +1 -1
  87. package/dist/lib/node-esm/{update-companion-SIB3GWH7.mjs → update-companion-47LMKL5R.mjs} +4 -4
  88. package/dist/lib/node-esm/{update-companion-SIB3GWH7.mjs.map → update-companion-47LMKL5R.mjs.map} +1 -1
  89. package/dist/lib/node-esm/{update-complementary-CZTIVIXU.mjs → update-complementary-7VYYG7L2.mjs} +3 -3
  90. package/dist/lib/node-esm/{update-complementary-CZTIVIXU.mjs.map → update-complementary-7VYYG7L2.mjs.map} +1 -1
  91. package/dist/lib/node-esm/{update-dialog-HEDV5XBB.mjs → update-dialog-CABL7OWW.mjs} +3 -3
  92. package/dist/lib/node-esm/{update-dialog-HEDV5XBB.mjs.map → update-dialog-CABL7OWW.mjs.map} +1 -1
  93. package/dist/lib/node-esm/{update-plank-size-JJLU7VE3.mjs → update-plank-size-WYTSMZF2.mjs} +5 -5
  94. package/dist/lib/node-esm/{update-plank-size-JJLU7VE3.mjs.map → update-plank-size-WYTSMZF2.mjs.map} +1 -1
  95. package/dist/lib/node-esm/{update-popover-HI5TU2VT.mjs → update-popover-YZDYGL7G.mjs} +3 -3
  96. package/dist/lib/node-esm/{update-popover-HI5TU2VT.mjs.map → update-popover-YZDYGL7G.mjs.map} +1 -1
  97. package/dist/lib/node-esm/{update-sidebar-QB5BA655.mjs → update-sidebar-HV736LUN.mjs} +3 -3
  98. package/dist/lib/node-esm/{update-sidebar-QB5BA655.mjs.map → update-sidebar-HV736LUN.mjs.map} +1 -1
  99. package/dist/types/src/DeckPlugin.d.ts.map +1 -1
  100. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  101. package/dist/types/src/capabilities/check-app-scheme.d.ts.map +1 -1
  102. package/dist/types/src/capabilities/index.d.ts +17 -17
  103. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  104. package/dist/types/src/capabilities/operation-handler.d.ts +1 -1
  105. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -1
  106. package/dist/types/src/capabilities/react-root.d.ts.map +1 -1
  107. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  108. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  109. package/dist/types/src/capabilities/state.d.ts +16 -16
  110. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  111. package/dist/types/src/capabilities/tools.d.ts.map +1 -1
  112. package/dist/types/src/capabilities/url-handler.d.ts.map +1 -1
  113. package/dist/types/src/components/DeckSettings/DeckSettings.d.ts.map +1 -1
  114. package/dist/types/src/components/DeckSettings/DeckSettings.stories.d.ts +42 -52
  115. package/dist/types/src/components/DeckSettings/DeckSettings.stories.d.ts.map +1 -1
  116. package/dist/types/src/components/Matrix/Matrix.d.ts +2 -2
  117. package/dist/types/src/components/Matrix/Matrix.d.ts.map +1 -1
  118. package/dist/types/src/components/Matrix/Matrix.stories.d.ts.map +1 -1
  119. package/dist/types/src/containers/Deck/Banner.d.ts +1 -1
  120. package/dist/types/src/containers/Deck/Banner.d.ts.map +1 -1
  121. package/dist/types/src/containers/Deck/Deck.d.ts.map +1 -1
  122. package/dist/types/src/containers/Deck/Deck.stories.d.ts +42 -52
  123. package/dist/types/src/containers/Deck/Deck.stories.d.ts.map +1 -1
  124. package/dist/types/src/containers/Deck/DeckContent.d.ts +4 -4
  125. package/dist/types/src/containers/Deck/DeckContent.d.ts.map +1 -1
  126. package/dist/types/src/containers/Deck/DeckRoot.d.ts +5 -8
  127. package/dist/types/src/containers/Deck/DeckRoot.d.ts.map +1 -1
  128. package/dist/types/src/containers/Deck/DeckViewport.d.ts +4 -7
  129. package/dist/types/src/containers/Deck/DeckViewport.d.ts.map +1 -1
  130. package/dist/types/src/containers/Deck/StatusBar.d.ts.map +1 -1
  131. package/dist/types/src/containers/DeckLayout/DeckLayout.d.ts.map +1 -1
  132. package/dist/types/src/containers/DeckLayout/DeckLayout.stories.d.ts +42 -52
  133. package/dist/types/src/containers/DeckLayout/DeckLayout.stories.d.ts.map +1 -1
  134. package/dist/types/src/containers/DeckLayout/Popover.d.ts.map +1 -1
  135. package/dist/types/src/containers/DeckLayout/Toast.d.ts +1 -1
  136. package/dist/types/src/containers/DeckLayout/Toast.d.ts.map +1 -1
  137. package/dist/types/src/containers/DeckLayout/index.d.ts.map +1 -1
  138. package/dist/types/src/containers/Plank/Plank.d.ts +1 -1
  139. package/dist/types/src/containers/Plank/Plank.d.ts.map +1 -1
  140. package/dist/types/src/containers/Plank/Plank.stories.d.ts +42 -52
  141. package/dist/types/src/containers/Plank/Plank.stories.d.ts.map +1 -1
  142. package/dist/types/src/containers/Plank/PlankContent.d.ts +1 -1
  143. package/dist/types/src/containers/Plank/PlankError.d.ts +1 -1
  144. package/dist/types/src/containers/Plank/PlankError.d.ts.map +1 -1
  145. package/dist/types/src/containers/Plank/PlankRoot.d.ts.map +1 -1
  146. package/dist/types/src/containers/Sidebar/ComplementarySidebar.d.ts.map +1 -1
  147. package/dist/types/src/containers/Sidebar/SidebarButton.d.ts +1 -1
  148. package/dist/types/src/containers/Sidebar/SidebarButton.d.ts.map +1 -1
  149. package/dist/types/src/hooks/useBreakpoints.d.ts +1 -1
  150. package/dist/types/src/hooks/useCompanions.d.ts.map +1 -1
  151. package/dist/types/src/hooks/useDeckCompanions.d.ts +1 -1
  152. package/dist/types/src/hooks/useDeckCompanions.d.ts.map +1 -1
  153. package/dist/types/src/hooks/useHoistStatusbar.d.ts.map +1 -1
  154. package/dist/types/src/hooks/useMainSize.d.ts.map +1 -1
  155. package/dist/types/src/hooks/useNodeActionExpander.d.ts.map +1 -1
  156. package/dist/types/src/hooks/useSelectedCompanion.d.ts.map +1 -1
  157. package/dist/types/src/layout.d.ts.map +1 -1
  158. package/dist/types/src/operations/add-toast.d.ts +1 -1
  159. package/dist/types/src/operations/add-toast.d.ts.map +1 -1
  160. package/dist/types/src/operations/adjust.d.ts +1 -1
  161. package/dist/types/src/operations/adjust.d.ts.map +1 -1
  162. package/dist/types/src/operations/close.d.ts +1 -1
  163. package/dist/types/src/operations/close.d.ts.map +1 -1
  164. package/dist/types/src/operations/definitions.d.ts +2 -2
  165. package/dist/types/src/operations/definitions.d.ts.map +1 -1
  166. package/dist/types/src/operations/helpers.d.ts.map +1 -1
  167. package/dist/types/src/operations/index.d.ts +1 -1
  168. package/dist/types/src/operations/index.d.ts.map +1 -1
  169. package/dist/types/src/operations/open.d.ts +1 -1
  170. package/dist/types/src/operations/open.d.ts.map +1 -1
  171. package/dist/types/src/operations/revert-workspace.d.ts +1 -1
  172. package/dist/types/src/operations/revert-workspace.d.ts.map +1 -1
  173. package/dist/types/src/operations/scroll-into-view.d.ts +1 -1
  174. package/dist/types/src/operations/scroll-into-view.d.ts.map +1 -1
  175. package/dist/types/src/operations/set-layout-mode.d.ts +1 -1
  176. package/dist/types/src/operations/set-layout-mode.d.ts.map +1 -1
  177. package/dist/types/src/operations/set.d.ts +1 -1
  178. package/dist/types/src/operations/set.d.ts.map +1 -1
  179. package/dist/types/src/operations/show-undo.d.ts +1 -1
  180. package/dist/types/src/operations/show-undo.d.ts.map +1 -1
  181. package/dist/types/src/operations/switch-workspace.d.ts +1 -1
  182. package/dist/types/src/operations/switch-workspace.d.ts.map +1 -1
  183. package/dist/types/src/operations/update-companion.d.ts +1 -1
  184. package/dist/types/src/operations/update-companion.d.ts.map +1 -1
  185. package/dist/types/src/operations/update-complementary.d.ts +1 -1
  186. package/dist/types/src/operations/update-complementary.d.ts.map +1 -1
  187. package/dist/types/src/operations/update-dialog.d.ts +1 -1
  188. package/dist/types/src/operations/update-dialog.d.ts.map +1 -1
  189. package/dist/types/src/operations/update-plank-size.d.ts +1 -1
  190. package/dist/types/src/operations/update-plank-size.d.ts.map +1 -1
  191. package/dist/types/src/operations/update-popover.d.ts +1 -1
  192. package/dist/types/src/operations/update-popover.d.ts.map +1 -1
  193. package/dist/types/src/operations/update-sidebar.d.ts +1 -1
  194. package/dist/types/src/operations/update-sidebar.d.ts.map +1 -1
  195. package/dist/types/src/translations.d.ts +42 -53
  196. package/dist/types/src/translations.d.ts.map +1 -1
  197. package/dist/types/src/types/Settings.d.ts +5 -5
  198. package/dist/types/src/types/Settings.d.ts.map +1 -1
  199. package/dist/types/src/types/capabilities.d.ts +16 -16
  200. package/dist/types/src/types/capabilities.d.ts.map +1 -1
  201. package/dist/types/src/types/events.d.ts.map +1 -1
  202. package/dist/types/src/types/schema.d.ts.map +1 -1
  203. package/dist/types/src/util/layoutAppliesTopbar.d.ts.map +1 -1
  204. package/dist/types/src/util/plank-url-params.d.ts.map +1 -1
  205. package/dist/types/src/util/sanitize-persisted-state.d.ts.map +1 -1
  206. package/dist/types/src/util/set-active.d.ts.map +1 -1
  207. package/dist/types/tsconfig.tsbuildinfo +1 -1
  208. package/package.json +51 -45
  209. package/src/DeckPlugin.ts +2 -3
  210. package/src/capabilities/app-graph-builder.ts +2 -2
  211. package/src/capabilities/index.ts +1 -1
  212. package/src/capabilities/operation-handler.ts +1 -1
  213. package/src/capabilities/settings.ts +1 -1
  214. package/src/capabilities/url-handler.ts +1 -1
  215. package/src/components/DeckSettings/DeckSettings.stories.tsx +2 -1
  216. package/src/components/DeckSettings/DeckSettings.tsx +8 -47
  217. package/src/components/Matrix/Matrix.stories.tsx +1 -1
  218. package/src/containers/Deck/Deck.stories.tsx +1 -1
  219. package/src/containers/DeckLayout/DeckLayout.stories.tsx +1 -1
  220. package/src/containers/Plank/Plank.stories.tsx +1 -1
  221. package/src/containers/Sidebar/SidebarButton.tsx +7 -1
  222. package/src/hooks/useDeckCompanions.ts +1 -1
  223. package/src/operations/add-toast.ts +1 -1
  224. package/src/operations/adjust.ts +1 -1
  225. package/src/operations/close.ts +1 -1
  226. package/src/operations/definitions.ts +1 -1
  227. package/src/operations/index.ts +1 -1
  228. package/src/operations/open.ts +1 -1
  229. package/src/operations/revert-workspace.ts +1 -1
  230. package/src/operations/scroll-into-view.ts +1 -1
  231. package/src/operations/set-layout-mode.ts +1 -1
  232. package/src/operations/set.ts +1 -1
  233. package/src/operations/show-undo.ts +1 -1
  234. package/src/operations/switch-workspace.ts +1 -1
  235. package/src/operations/update-companion.ts +1 -1
  236. package/src/operations/update-complementary.ts +1 -1
  237. package/src/operations/update-dialog.ts +1 -1
  238. package/src/operations/update-plank-size.ts +1 -1
  239. package/src/operations/update-popover.ts +1 -1
  240. package/src/operations/update-sidebar.ts +1 -1
  241. package/src/translations.ts +2 -12
  242. package/src/types/Settings.ts +30 -5
  243. package/dist/lib/browser/chunk-FRVCL5NO.mjs.map +0 -7
  244. package/dist/lib/browser/open-K2JOEW2E.mjs.map +0 -7
  245. package/dist/lib/browser/set-layout-mode-BEVNGOY2.mjs.map +0 -7
  246. package/dist/lib/browser/switch-workspace-ICJJWNFT.mjs.map +0 -7
  247. package/dist/lib/node-esm/chunk-A63Q53TW.mjs.map +0 -7
  248. package/dist/lib/node-esm/open-XXEHIR6G.mjs.map +0 -7
  249. package/dist/lib/node-esm/set-layout-mode-3RK4HIG7.mjs.map +0 -7
  250. package/dist/lib/node-esm/switch-workspace-VNM75H66.mjs.map +0 -7
  251. /package/dist/lib/browser/{chunk-BRZAVPMC.mjs.map → chunk-LSZ47AY3.mjs.map} +0 -0
  252. /package/dist/lib/node-esm/{chunk-MB4SDDVY.mjs.map → chunk-KY7ZCANM.mjs.map} +0 -0
@@ -7,11 +7,36 @@
7
7
  import * as Schema from 'effect/Schema';
8
8
 
9
9
  export const Settings = Schema.Struct({
10
- showHints: Schema.optional(Schema.Boolean),
11
- enableDeck: Schema.optional(Schema.Boolean),
12
- enableStatusbar: Schema.optional(Schema.Boolean),
13
- enableNativeRedirect: Schema.optional(Schema.Boolean),
10
+ enableDeck: Schema.optional(
11
+ Schema.Boolean.annotations({
12
+ title: 'Enable Deck',
13
+ description: 'Display multiple panels side by side instead of one at a time.',
14
+ }),
15
+ ),
14
16
  // TODO(burdon): Rename layoutMode? (e.g., bento | encapsulated?)
15
- encapsulatedPlanks: Schema.optional(Schema.Boolean),
17
+ encapsulatedPlanks: Schema.optional(
18
+ Schema.Boolean.annotations({
19
+ title: 'Encapsulated planks',
20
+ description: 'Render each plank inside its own isolated container.',
21
+ }),
22
+ ),
23
+ enableStatusbar: Schema.optional(
24
+ Schema.Boolean.annotations({
25
+ title: 'Show status bar',
26
+ description: 'Display a status bar at the bottom of the application.',
27
+ }),
28
+ ),
29
+ showHints: Schema.optional(
30
+ Schema.Boolean.annotations({
31
+ title: 'Show hints',
32
+ description: 'Show helpful tips and keyboard shortcut hints in the interface.',
33
+ }),
34
+ ),
35
+ enableNativeRedirect: Schema.optional(
36
+ Schema.Boolean.annotations({
37
+ title: 'Enable native url redirect',
38
+ description: 'Redirect supported URLs to the native desktop application.',
39
+ }),
40
+ ),
16
41
  }).pipe(Schema.mutable);
17
42
  export interface Settings extends Schema.Schema.Type<typeof Settings> {}
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/operations/definitions.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { Capability } from '@dxos/app-framework';\nimport { Operation } from '@dxos/operation';\n\nimport { meta } from '#meta';\n\nconst PartAdjustment = Schema.Union(\n Schema.Literal('close').annotations({ description: 'Close the plank.' }),\n Schema.Literal('companion').annotations({ description: 'Open the companion plank.' }),\n Schema.Literal('solo').annotations({ description: 'Solo the plank.' }),\n Schema.Literal('solo--fullscreen').annotations({ description: 'Fullscreen the plank.' }),\n Schema.Literal('increment-start').annotations({ description: 'Move the plank towards the start of the deck.' }),\n Schema.Literal('increment-end').annotations({ description: 'Move the plank towards the end of the deck.' }),\n);\n\nexport type PartAdjustment = Schema.Schema.Type<typeof PartAdjustment>;\n\nexport const Adjust = Operation.make({\n meta: {\n key: `${meta.id}.operation.adjust`,\n name: 'Adjust',\n description: 'Adjust the layout of a plank.',\n },\n services: [Capability.Service],\n input: Schema.Struct({\n id: Schema.String.annotations({ description: 'The id of the plank to adjust.' }),\n type: PartAdjustment.annotations({ description: 'The type of adjustment to make.' }),\n }),\n output: Schema.Void,\n});\n\nexport const UpdatePlankSize = Operation.make({\n meta: {\n key: `${meta.id}.operation.update-plank-size`,\n name: 'Update Plank Size',\n description: 'Update the size of a plank.',\n },\n services: [Capability.Service],\n input: Schema.Struct({\n id: Schema.String.annotations({ description: 'The id of the plank to resize.' }),\n size: Schema.Number.annotations({ description: 'The new size of the plank.' }),\n }),\n output: Schema.Void,\n});\n"],
5
- "mappings": ";;;;;AAAA;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,kBAAkB;AAC3B,SAASC,iBAAiB;AAE1B,SAASC,YAAY;AAErB,IAAMC,iBAAwBC,aACrBC,eAAQ,OAAA,EAASC,YAAY;EAAEC,aAAa;AAAmB,CAAA,GAC/DF,eAAQ,WAAA,EAAaC,YAAY;EAAEC,aAAa;AAA4B,CAAA,GAC5EF,eAAQ,MAAA,EAAQC,YAAY;EAAEC,aAAa;AAAkB,CAAA,GAC7DF,eAAQ,kBAAA,EAAoBC,YAAY;EAAEC,aAAa;AAAwB,CAAA,GAC/EF,eAAQ,iBAAA,EAAmBC,YAAY;EAAEC,aAAa;AAAgD,CAAA,GACtGF,eAAQ,eAAA,EAAiBC,YAAY;EAAEC,aAAa;AAA8C,CAAA,CAAA;AAKpG,IAAMC,SAASC,UAAUC,KAAK;EACnCC,MAAM;IACJC,KAAK,GAAGD,KAAKE,EAAE;IACfC,MAAM;IACNP,aAAa;EACf;EACAQ,UAAU;IAACC,WAAWC;;EACtBC,OAAcC,cAAO;IACnBN,IAAWO,cAAOd,YAAY;MAAEC,aAAa;IAAiC,CAAA;IAC9Ec,MAAMlB,eAAeG,YAAY;MAAEC,aAAa;IAAkC,CAAA;EACpF,CAAA;EACAe,QAAeC;AACjB,CAAA;AAEO,IAAMC,kBAAkBf,UAAUC,KAAK;EAC5CC,MAAM;IACJC,KAAK,GAAGD,KAAKE,EAAE;IACfC,MAAM;IACNP,aAAa;EACf;EACAQ,UAAU;IAACC,WAAWC;;EACtBC,OAAcC,cAAO;IACnBN,IAAWO,cAAOd,YAAY;MAAEC,aAAa;IAAiC,CAAA;IAC9EkB,MAAaC,cAAOpB,YAAY;MAAEC,aAAa;IAA6B,CAAA;EAC9E,CAAA;EACAe,QAAeC;AACjB,CAAA;",
6
- "names": ["Schema", "Capability", "Operation", "meta", "PartAdjustment", "Union", "Literal", "annotations", "description", "Adjust", "Operation", "make", "meta", "key", "id", "name", "services", "Capability", "Service", "input", "Struct", "String", "type", "output", "Void", "UpdatePlankSize", "size", "Number"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/operations/open.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport {\n AppCapabilities,\n LayoutOperation,\n createEdgeExistenceChecker,\n expandPath,\n validateNavigationTarget,\n} from '@dxos/app-toolkit';\nimport { Context } from '@dxos/context';\nimport { Obj } from '@dxos/echo';\nimport { Operation } from '@dxos/operation';\nimport { AttentionCapabilities } from '@dxos/plugin-attention/types';\nimport { ClientCapabilities } from '@dxos/plugin-client/types';\nimport { Graph } from '@dxos/plugin-graph';\nimport { ObservabilityOperation } from '@dxos/plugin-observability/operations';\n\nimport { openSubjectsOnActiveDeck } from '../layout';\nimport { DeckCapabilities } from '../types';\nimport { computeActiveUpdates } from '../util';\nimport { updateActiveDeck } from './helpers';\n\nconst handler: Operation.WithHandler<typeof LayoutOperation.Open> = LayoutOperation.Open.pipe(\n Operation.withHandler(\n Effect.fnUntraced(function* (input) {\n const { graph } = yield* Capability.get(AppCapabilities.AppGraph);\n const attention = yield* Capability.get(AttentionCapabilities.Attention);\n\n // Validate navigation targets, redirecting to 404 if not found.\n const capabilities = yield* Capability.Service;\n const pathResolvers = capabilities.getAll(AppCapabilities.NavigationPathResolver);\n const checkRemoteExistence = yield* Capability.get(ClientCapabilities.Client).pipe(\n Effect.map((client) =>\n createEdgeExistenceChecker((spaceId, body) => client.edge.http.execQuery(new Context(), spaceId, body)),\n ),\n Effect.catchAll(() => Effect.succeed(undefined)),\n );\n\n // Immediate: skip 404 / resolver checks but still expand the path (same as validate’s first step).\n if (input.navigation === 'immediate') {\n for (const subjectId of input.subject) {\n expandPath(graph, subjectId);\n }\n }\n\n const validatedSubjects = yield* Effect.all(\n input.subject.map((subjectId) =>\n input.navigation === 'immediate'\n ? Effect.succeed(subjectId)\n : validateNavigationTarget({ graph, subjectId, pathResolvers, checkRemoteExistence }),\n ),\n );\n input = { ...input, subject: validatedSubjects };\n\n {\n const state = yield* Capabilities.getAtomValue(DeckCapabilities.State);\n if (input.workspace && state.activeDeck !== input.workspace) {\n yield* Operation.invoke(LayoutOperation.SwitchWorkspace, { subject: input.workspace });\n }\n }\n\n // Dedup subjects against the active deck using DXN identity.\n // The same object can appear under different graph paths (e.g., via collections vs types).\n // Resolve each subject's DXN and, if it matches an already-open deck item, remap the\n // subject to the existing deck entry so that openEntry's exact-match check succeeds.\n // Only needed in multi (deck) mode; solo mode replaces the single visible item anyway.\n {\n const deck = yield* DeckCapabilities.getDeck();\n const active = !deck.solo && deck.initialized ? deck.active : [];\n if (active.length > 0 && input.subject.length > 0) {\n const resolveDxn = (qualifiedPath: string) =>\n Effect.reduce(pathResolvers, Option.none<string>(), (acc, resolver) =>\n Option.isSome(acc)\n ? Effect.succeed(acc)\n : resolver(qualifiedPath).pipe(\n Effect.map((opt) => Option.map(opt, (dxn) => dxn.toString())),\n Effect.catchAll(() => Effect.succeed(Option.none<string>())),\n ),\n );\n\n // Build DXN → deck item ID map for active items.\n const deckDxnMap = new Map<string, string>();\n yield* Effect.all(\n active.map((deckId) =>\n resolveDxn(deckId).pipe(\n Effect.map((opt) => {\n if (Option.isSome(opt)) {\n deckDxnMap.set(opt.value, deckId);\n }\n }),\n ),\n ),\n { concurrency: 'unbounded' },\n );\n\n // Remap subjects whose DXN matches an existing deck item.\n if (deckDxnMap.size > 0) {\n const remapped = yield* Effect.all(\n input.subject.map((subjectId) =>\n resolveDxn(subjectId).pipe(\n Effect.map((opt) => {\n if (Option.isSome(opt)) {\n const existing = deckDxnMap.get(opt.value);\n if (existing && existing !== subjectId) {\n return existing;\n }\n }\n return subjectId;\n }),\n ),\n ),\n { concurrency: 'unbounded' },\n );\n input = { ...input, subject: remapped };\n }\n }\n }\n\n // Compute the next active deck state and apply it.\n // In solo or uninitialized mode the subject list replaces the deck entirely.\n // In multi (deck) mode, subjects are merged via openSubjectsOnActiveDeck which\n // uses stack semantics (truncate after pivot, then push new entries).\n let previouslyOpenIds: Set<string>;\n {\n const deck = yield* DeckCapabilities.getDeck();\n previouslyOpenIds = new Set<string>(deck.solo ? [deck.solo] : deck.active);\n const next =\n deck.solo || !deck.initialized\n ? [...input.subject]\n : openSubjectsOnActiveDeck(deck.active, input.subject, {\n pivotId: input.pivotId,\n key: input.key,\n });\n\n const { deckUpdates, toAttend: _toAttend } = computeActiveUpdates({ next, deck, attention });\n yield* Capabilities.updateAtomValue(DeckCapabilities.State, (state) => updateActiveDeck(state, deckUpdates));\n }\n\n // Schedule side-effects for the newly opened items: scroll into view, expose in\n // the navigation sidebar, and emit observability events.\n // When nothing is newly opened (subject was already visible), the fallback\n // `input.subject[0]` still triggers scroll and expose so the user is taken there.\n {\n const deck = yield* DeckCapabilities.getDeck();\n const ids = deck.solo ? [deck.solo] : deck.active;\n const newlyOpen = ids.filter((i: string) => !previouslyOpenIds.has(i));\n\n if (input.scrollIntoView !== false && (newlyOpen[0] ?? input.subject[0])) {\n yield* Operation.schedule(LayoutOperation.ScrollIntoView, {\n subject: newlyOpen[0] ?? input.subject[0],\n });\n }\n\n if (newlyOpen[0] ?? input.subject[0]) {\n yield* Operation.schedule(LayoutOperation.Expose, { subject: newlyOpen[0] ?? input.subject[0] });\n }\n\n for (const subjectId of newlyOpen) {\n const typename = Option.match(Graph.getNode(graph, subjectId), {\n onNone: () => undefined,\n onSome: (node) => {\n const active = node.data;\n return Obj.isObject(active) ? Obj.getTypename(active) : undefined;\n },\n });\n yield* Operation.schedule(ObservabilityOperation.SendEvent, {\n name: 'navigation.activate',\n properties: { subjectId, typename },\n });\n }\n }\n\n return validatedSubjects;\n }),\n ),\n);\n\nexport default handler;\n"],
5
- "mappings": "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",
6
- "names": ["Effect", "Option", "Capabilities", "Capability", "AppCapabilities", "LayoutOperation", "createEdgeExistenceChecker", "expandPath", "validateNavigationTarget", "Context", "Obj", "Operation", "AttentionCapabilities", "ClientCapabilities", "Graph", "ObservabilityOperation", "handler", "LayoutOperation", "Open", "pipe", "Operation", "withHandler", "fnUntraced", "input", "graph", "Capability", "get", "AppCapabilities", "AppGraph", "attention", "AttentionCapabilities", "Attention", "capabilities", "Service", "pathResolvers", "getAll", "NavigationPathResolver", "checkRemoteExistence", "ClientCapabilities", "Client", "map", "client", "createEdgeExistenceChecker", "spaceId", "body", "edge", "http", "execQuery", "Context", "catchAll", "succeed", "undefined", "navigation", "subjectId", "subject", "expandPath", "validatedSubjects", "all", "validateNavigationTarget", "state", "Capabilities", "getAtomValue", "DeckCapabilities", "State", "workspace", "activeDeck", "invoke", "SwitchWorkspace", "deck", "getDeck", "active", "solo", "initialized", "length", "resolveDxn", "qualifiedPath", "reduce", "none", "acc", "resolver", "isSome", "opt", "dxn", "toString", "deckDxnMap", "Map", "deckId", "set", "value", "concurrency", "size", "remapped", "existing", "previouslyOpenIds", "Set", "next", "openSubjectsOnActiveDeck", "pivotId", "key", "deckUpdates", "toAttend", "_toAttend", "computeActiveUpdates", "updateAtomValue", "updateActiveDeck", "ids", "newlyOpen", "filter", "i", "has", "scrollIntoView", "schedule", "ScrollIntoView", "Expose", "typename", "match", "Graph", "getNode", "onNone", "onSome", "node", "data", "Obj", "isObject", "getTypename", "ObservabilityOperation", "SendEvent", "name", "properties"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/operations/set-layout-mode.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capabilities } from '@dxos/app-framework';\nimport { LayoutOperation } from '@dxos/app-toolkit';\nimport { log } from '@dxos/log';\nimport { Operation } from '@dxos/operation';\nimport { isNonNullable } from '@dxos/util';\n\nimport { DeckCapabilities, type DeckState, type LayoutMode, getMode, isLayoutMode } from '../types';\nimport { updateActiveDeck } from './helpers';\n\n/**\n * Transitions between layout modes (multi, solo, solo--fullscreen) or reverts to the previous mode.\n * Computes which planks become active/inactive and persists the previous mode for revert support.\n */\nconst handler: Operation.WithHandler<typeof LayoutOperation.SetLayoutMode> = LayoutOperation.SetLayoutMode.pipe(\n Operation.withHandler(\n Effect.fnUntraced(function* (input) {\n if ('mode' in input && !isLayoutMode(input.mode)) {\n return;\n }\n\n const state = yield* Capabilities.getAtomValue(DeckCapabilities.State);\n const deck = yield* DeckCapabilities.getDeck();\n\n const computeModeUpdate = (mode: LayoutMode, subject?: string): Partial<DeckState> => {\n const current = deck.solo ? [deck.solo] : deck.active;\n const next = (mode !== 'multi' ? [subject ?? deck.solo ?? deck.active[0]] : [...deck.active, deck.solo]).filter(\n isNonNullable,\n );\n\n const removed = current.filter((id: string) => !next.includes(id));\n const closed = Array.from(new Set([...deck.inactive.filter((id: string) => !next.includes(id)), ...removed]));\n\n const soloUpdate =\n mode !== 'multi' && next[0]\n ? { solo: next[0] }\n : mode === 'multi' && deck.solo\n ? { solo: undefined, initialized: true }\n : {};\n\n const fullscreenUpdate = mode === 'solo--fullscreen' ? { fullscreen: !deck.fullscreen } : {};\n\n return {\n inactive: closed,\n ...soloUpdate,\n ...fullscreenUpdate,\n };\n };\n\n if ('mode' in input) {\n const currentMode = getMode(deck);\n const subject = 'subject' in input ? input.subject : undefined;\n const deckUpdates = computeModeUpdate(input.mode as LayoutMode, subject);\n\n yield* Capabilities.updateAtomValue(DeckCapabilities.State, (state) => {\n const newPreviousMode =\n currentMode !== input.mode\n ? { ...state.previousMode, [state.activeDeck]: currentMode }\n : state.previousMode;\n return {\n ...updateActiveDeck(state, deckUpdates),\n previousMode: newPreviousMode,\n };\n });\n\n if (subject) {\n yield* Operation.schedule(LayoutOperation.Expose, { subject });\n }\n } else if ('revert' in input) {\n const deckUpdates = computeModeUpdate(state.previousMode[state.activeDeck]);\n yield* Capabilities.updateAtomValue(DeckCapabilities.State, (state) => updateActiveDeck(state, deckUpdates));\n } else {\n log.warn('Invalid layout mode', input);\n }\n }),\n ),\n);\n\nexport default handler;\n"],
5
- "mappings": ";;;;;;;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,oBAAoB;AAC7B,SAASC,uBAAuB;AAChC,SAASC,WAAW;AACpB,SAASC,iBAAiB;AAC1B,SAASC,qBAAqB;;AAS9B,IAAMC,UAAuEC,gBAAgBC,cAAcC,KACzGC,UAAUC,YACDC,kBAAW,WAAWC,OAAK;AAChC,MAAI,UAAUA,SAAS,CAACC,aAAaD,MAAME,IAAI,GAAG;AAChD;EACF;AAEA,QAAMC,QAAQ,OAAOC,aAAaC,aAAaC,iBAAiBC,KAAK;AACrE,QAAMC,OAAO,OAAOF,iBAAiBG,QAAO;AAE5C,QAAMC,oBAAoB,CAACR,MAAkBS,YAAAA;AAC3C,UAAMC,UAAUJ,KAAKK,OAAO;MAACL,KAAKK;QAAQL,KAAKM;AAC/C,UAAMC,QAAQb,SAAS,UAAU;MAACS,WAAWH,KAAKK,QAAQL,KAAKM,OAAO,CAAA;QAAM;SAAIN,KAAKM;MAAQN,KAAKK;OAAOG,OACvGC,aAAAA;AAGF,UAAMC,UAAUN,QAAQI,OAAO,CAACG,OAAe,CAACJ,KAAKK,SAASD,EAAAA,CAAAA;AAC9D,UAAME,SAASC,MAAMC,KAAK,oBAAIC,IAAI;SAAIhB,KAAKiB,SAAST,OAAO,CAACG,OAAe,CAACJ,KAAKK,SAASD,EAAAA,CAAAA;SAASD;KAAQ,CAAA;AAE3G,UAAMQ,aACJxB,SAAS,WAAWa,KAAK,CAAA,IACrB;MAAEF,MAAME,KAAK,CAAA;IAAG,IAChBb,SAAS,WAAWM,KAAKK,OACvB;MAAEA,MAAMc;MAAWC,aAAa;IAAK,IACrC,CAAC;AAET,UAAMC,mBAAmB3B,SAAS,qBAAqB;MAAE4B,YAAY,CAACtB,KAAKsB;IAAW,IAAI,CAAC;AAE3F,WAAO;MACLL,UAAUJ;MACV,GAAGK;MACH,GAAGG;IACL;EACF;AAEA,MAAI,UAAU7B,OAAO;AACnB,UAAM+B,cAAcC,QAAQxB,IAAAA;AAC5B,UAAMG,UAAU,aAAaX,QAAQA,MAAMW,UAAUgB;AACrD,UAAMM,cAAcvB,kBAAkBV,MAAME,MAAoBS,OAAAA;AAEhE,WAAOP,aAAa8B,gBAAgB5B,iBAAiBC,OAAO,CAACJ,WAAAA;AAC3D,YAAMgC,kBACJJ,gBAAgB/B,MAAME,OAClB;QAAE,GAAGC,OAAMiC;QAAc,CAACjC,OAAMkC,UAAU,GAAGN;MAAY,IACzD5B,OAAMiC;AACZ,aAAO;QACL,GAAGE,iBAAiBnC,QAAO8B,WAAAA;QAC3BG,cAAcD;MAChB;IACF,CAAA;AAEA,QAAIxB,SAAS;AACX,aAAOd,UAAU0C,SAAS7C,gBAAgB8C,QAAQ;QAAE7B;MAAQ,CAAA;IAC9D;EACF,WAAW,YAAYX,OAAO;AAC5B,UAAMiC,cAAcvB,kBAAkBP,MAAMiC,aAAajC,MAAMkC,UAAU,CAAC;AAC1E,WAAOjC,aAAa8B,gBAAgB5B,iBAAiBC,OAAO,CAACJ,WAAUmC,iBAAiBnC,QAAO8B,WAAAA,CAAAA;EACjG,OAAO;AACLQ,QAAIC,KAAK,uBAAuB1C,OAAAA;;;;;;EAClC;AACF,CAAA,CAAA,CAAA;AAIJ,IAAA,0BAAeP;",
6
- "names": ["Effect", "Capabilities", "LayoutOperation", "log", "Operation", "isNonNullable", "handler", "LayoutOperation", "SetLayoutMode", "pipe", "Operation", "withHandler", "fnUntraced", "input", "isLayoutMode", "mode", "state", "Capabilities", "getAtomValue", "DeckCapabilities", "State", "deck", "getDeck", "computeModeUpdate", "subject", "current", "solo", "active", "next", "filter", "isNonNullable", "removed", "id", "includes", "closed", "Array", "from", "Set", "inactive", "soloUpdate", "undefined", "initialized", "fullscreenUpdate", "fullscreen", "currentMode", "getMode", "deckUpdates", "updateAtomValue", "newPreviousMode", "previousMode", "activeDeck", "updateActiveDeck", "schedule", "Expose", "log", "warn"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/operations/switch-workspace.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { AppCapabilities, isPinnedWorkspace, LayoutOperation } from '@dxos/app-toolkit';\nimport { invariant } from '@dxos/invariant';\nimport { Operation } from '@dxos/operation';\nimport { Graph, Node } from '@dxos/plugin-graph';\n\nimport { DeckCapabilities, defaultDeck } from '../types';\n\nconst handler: Operation.WithHandler<typeof LayoutOperation.SwitchWorkspace> = LayoutOperation.SwitchWorkspace.pipe(\n Operation.withHandler(\n Effect.fnUntraced(function* (input) {\n const { graph } = yield* Capability.get(AppCapabilities.AppGraph);\n\n {\n const state = yield* Capabilities.getAtomValue(DeckCapabilities.State);\n // TODO(wittjosiah): This is a hack to prevent the previous deck from being set for pinned items.\n // Ideally this should be worked into the data model in a generic way.\n const shouldUpdatePrevious = !isPinnedWorkspace(state.activeDeck);\n\n yield* Capabilities.updateAtomValue(DeckCapabilities.State, (state) => {\n const newDecks = state.decks[input.subject]\n ? state.decks\n : { ...state.decks, [input.subject]: { ...defaultDeck } };\n return {\n ...state,\n previousDeck: shouldUpdatePrevious ? state.activeDeck : state.previousDeck,\n activeDeck: input.subject,\n decks: newDecks,\n };\n });\n }\n\n {\n const state = yield* Capabilities.getAtomValue(DeckCapabilities.State);\n const deck = state.decks[input.subject];\n invariant(deck, `Deck not found: ${input.subject}`);\n\n const first = deck.solo ? deck.solo : deck.active[0];\n if (first) {\n yield* Operation.schedule(LayoutOperation.ScrollIntoView, { subject: first });\n } else {\n const [item] = Graph.getConnections(graph, input.subject, 'child').filter(\n (node) => !Node.isActionLike(node) && !node.properties.disposition,\n );\n if (item) {\n yield* Operation.schedule(LayoutOperation.Open, { subject: [item.id] });\n }\n }\n }\n }),\n ),\n);\n\nexport default handler;\n"],
5
- "mappings": ";;;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,cAAcC,kBAAkB;AACzC,SAASC,iBAAiBC,mBAAmBC,uBAAuB;AACpE,SAASC,iBAAiB;AAC1B,SAASC,iBAAiB;AAC1B,SAASC,OAAOC,YAAY;;AAI5B,IAAMC,UAAyEC,gBAAgBC,gBAAgBC,KAC7GC,UAAUC,YACDC,kBAAW,WAAWC,OAAK;AAChC,QAAM,EAAEC,MAAK,IAAK,OAAOC,WAAWC,IAAIC,gBAAgBC,QAAQ;AAEhE;AACE,UAAMC,QAAQ,OAAOC,aAAaC,aAAaC,iBAAiBC,KAAK;AAGrE,UAAMC,uBAAuB,CAACC,kBAAkBN,MAAMO,UAAU;AAEhE,WAAON,aAAaO,gBAAgBL,iBAAiBC,OAAO,CAACJ,WAAAA;AAC3D,YAAMS,WAAWT,OAAMU,MAAMhB,MAAMiB,OAAO,IACtCX,OAAMU,QACN;QAAE,GAAGV,OAAMU;QAAO,CAAChB,MAAMiB,OAAO,GAAG;UAAE,GAAGC;QAAY;MAAE;AAC1D,aAAO;QACL,GAAGZ;QACHa,cAAcR,uBAAuBL,OAAMO,aAAaP,OAAMa;QAC9DN,YAAYb,MAAMiB;QAClBD,OAAOD;MACT;IACF,CAAA;EACF;AAEA;AACE,UAAMT,QAAQ,OAAOC,aAAaC,aAAaC,iBAAiBC,KAAK;AACrE,UAAMU,OAAOd,MAAMU,MAAMhB,MAAMiB,OAAO;AACtCI,cAAUD,MAAM,mBAAmBpB,MAAMiB,OAAO,IAAE;;;;;;;;;AAElD,UAAMK,QAAQF,KAAKG,OAAOH,KAAKG,OAAOH,KAAKI,OAAO,CAAA;AAClD,QAAIF,OAAO;AACT,aAAOzB,UAAU4B,SAAS/B,gBAAgBgC,gBAAgB;QAAET,SAASK;MAAM,CAAA;IAC7E,OAAO;AACL,YAAM,CAACK,IAAAA,IAAQC,MAAMC,eAAe5B,OAAOD,MAAMiB,SAAS,OAAA,EAASa,OACjE,CAACC,SAAS,CAACC,KAAKC,aAAaF,IAAAA,KAAS,CAACA,KAAKG,WAAWC,WAAW;AAEpE,UAAIR,MAAM;AACR,eAAO9B,UAAU4B,SAAS/B,gBAAgB0C,MAAM;UAAEnB,SAAS;YAACU,KAAKU;;QAAI,CAAA;MACvE;IACF;EACF;AACF,CAAA,CAAA,CAAA;AAIJ,IAAA,2BAAe5C;",
6
- "names": ["Effect", "Capabilities", "Capability", "AppCapabilities", "isPinnedWorkspace", "LayoutOperation", "invariant", "Operation", "Graph", "Node", "handler", "LayoutOperation", "SwitchWorkspace", "pipe", "Operation", "withHandler", "fnUntraced", "input", "graph", "Capability", "get", "AppCapabilities", "AppGraph", "state", "Capabilities", "getAtomValue", "DeckCapabilities", "State", "shouldUpdatePrevious", "isPinnedWorkspace", "activeDeck", "updateAtomValue", "newDecks", "decks", "subject", "defaultDeck", "previousDeck", "deck", "invariant", "first", "solo", "active", "schedule", "ScrollIntoView", "item", "Graph", "getConnections", "filter", "node", "Node", "isActionLike", "properties", "disposition", "Open", "id"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/operations/definitions.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { Capability } from '@dxos/app-framework';\nimport { Operation } from '@dxos/operation';\n\nimport { meta } from '#meta';\n\nconst PartAdjustment = Schema.Union(\n Schema.Literal('close').annotations({ description: 'Close the plank.' }),\n Schema.Literal('companion').annotations({ description: 'Open the companion plank.' }),\n Schema.Literal('solo').annotations({ description: 'Solo the plank.' }),\n Schema.Literal('solo--fullscreen').annotations({ description: 'Fullscreen the plank.' }),\n Schema.Literal('increment-start').annotations({ description: 'Move the plank towards the start of the deck.' }),\n Schema.Literal('increment-end').annotations({ description: 'Move the plank towards the end of the deck.' }),\n);\n\nexport type PartAdjustment = Schema.Schema.Type<typeof PartAdjustment>;\n\nexport const Adjust = Operation.make({\n meta: {\n key: `${meta.id}.operation.adjust`,\n name: 'Adjust',\n description: 'Adjust the layout of a plank.',\n },\n services: [Capability.Service],\n input: Schema.Struct({\n id: Schema.String.annotations({ description: 'The id of the plank to adjust.' }),\n type: PartAdjustment.annotations({ description: 'The type of adjustment to make.' }),\n }),\n output: Schema.Void,\n});\n\nexport const UpdatePlankSize = Operation.make({\n meta: {\n key: `${meta.id}.operation.update-plank-size`,\n name: 'Update Plank Size',\n description: 'Update the size of a plank.',\n },\n services: [Capability.Service],\n input: Schema.Struct({\n id: Schema.String.annotations({ description: 'The id of the plank to resize.' }),\n size: Schema.Number.annotations({ description: 'The new size of the plank.' }),\n }),\n output: Schema.Void,\n});\n"],
5
- "mappings": ";;;;;;AAAA;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,kBAAkB;AAC3B,SAASC,iBAAiB;AAE1B,SAASC,YAAY;AAErB,IAAMC,iBAAwBC,aACrBC,eAAQ,OAAA,EAASC,YAAY;EAAEC,aAAa;AAAmB,CAAA,GAC/DF,eAAQ,WAAA,EAAaC,YAAY;EAAEC,aAAa;AAA4B,CAAA,GAC5EF,eAAQ,MAAA,EAAQC,YAAY;EAAEC,aAAa;AAAkB,CAAA,GAC7DF,eAAQ,kBAAA,EAAoBC,YAAY;EAAEC,aAAa;AAAwB,CAAA,GAC/EF,eAAQ,iBAAA,EAAmBC,YAAY;EAAEC,aAAa;AAAgD,CAAA,GACtGF,eAAQ,eAAA,EAAiBC,YAAY;EAAEC,aAAa;AAA8C,CAAA,CAAA;AAKpG,IAAMC,SAASC,UAAUC,KAAK;EACnCC,MAAM;IACJC,KAAK,GAAGD,KAAKE,EAAE;IACfC,MAAM;IACNP,aAAa;EACf;EACAQ,UAAU;IAACC,WAAWC;;EACtBC,OAAcC,cAAO;IACnBN,IAAWO,cAAOd,YAAY;MAAEC,aAAa;IAAiC,CAAA;IAC9Ec,MAAMlB,eAAeG,YAAY;MAAEC,aAAa;IAAkC,CAAA;EACpF,CAAA;EACAe,QAAeC;AACjB,CAAA;AAEO,IAAMC,kBAAkBf,UAAUC,KAAK;EAC5CC,MAAM;IACJC,KAAK,GAAGD,KAAKE,EAAE;IACfC,MAAM;IACNP,aAAa;EACf;EACAQ,UAAU;IAACC,WAAWC;;EACtBC,OAAcC,cAAO;IACnBN,IAAWO,cAAOd,YAAY;MAAEC,aAAa;IAAiC,CAAA;IAC9EkB,MAAaC,cAAOpB,YAAY;MAAEC,aAAa;IAA6B,CAAA;EAC9E,CAAA;EACAe,QAAeC;AACjB,CAAA;",
6
- "names": ["Schema", "Capability", "Operation", "meta", "PartAdjustment", "Union", "Literal", "annotations", "description", "Adjust", "Operation", "make", "meta", "key", "id", "name", "services", "Capability", "Service", "input", "Struct", "String", "type", "output", "Void", "UpdatePlankSize", "size", "Number"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/operations/open.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport {\n AppCapabilities,\n LayoutOperation,\n createEdgeExistenceChecker,\n expandPath,\n validateNavigationTarget,\n} from '@dxos/app-toolkit';\nimport { Context } from '@dxos/context';\nimport { Obj } from '@dxos/echo';\nimport { Operation } from '@dxos/operation';\nimport { AttentionCapabilities } from '@dxos/plugin-attention/types';\nimport { ClientCapabilities } from '@dxos/plugin-client/types';\nimport { Graph } from '@dxos/plugin-graph';\nimport { ObservabilityOperation } from '@dxos/plugin-observability/operations';\n\nimport { openSubjectsOnActiveDeck } from '../layout';\nimport { DeckCapabilities } from '../types';\nimport { computeActiveUpdates } from '../util';\nimport { updateActiveDeck } from './helpers';\n\nconst handler: Operation.WithHandler<typeof LayoutOperation.Open> = LayoutOperation.Open.pipe(\n Operation.withHandler(\n Effect.fnUntraced(function* (input) {\n const { graph } = yield* Capability.get(AppCapabilities.AppGraph);\n const attention = yield* Capability.get(AttentionCapabilities.Attention);\n\n // Validate navigation targets, redirecting to 404 if not found.\n const capabilities = yield* Capability.Service;\n const pathResolvers = capabilities.getAll(AppCapabilities.NavigationPathResolver);\n const checkRemoteExistence = yield* Capability.get(ClientCapabilities.Client).pipe(\n Effect.map((client) =>\n createEdgeExistenceChecker((spaceId, body) => client.edge.http.execQuery(new Context(), spaceId, body)),\n ),\n Effect.catchAll(() => Effect.succeed(undefined)),\n );\n\n // Immediate: skip 404 / resolver checks but still expand the path (same as validate’s first step).\n if (input.navigation === 'immediate') {\n for (const subjectId of input.subject) {\n expandPath(graph, subjectId);\n }\n }\n\n const validatedSubjects = yield* Effect.all(\n input.subject.map((subjectId) =>\n input.navigation === 'immediate'\n ? Effect.succeed(subjectId)\n : validateNavigationTarget({ graph, subjectId, pathResolvers, checkRemoteExistence }),\n ),\n );\n input = { ...input, subject: validatedSubjects };\n\n {\n const state = yield* Capabilities.getAtomValue(DeckCapabilities.State);\n if (input.workspace && state.activeDeck !== input.workspace) {\n yield* Operation.invoke(LayoutOperation.SwitchWorkspace, { subject: input.workspace });\n }\n }\n\n // Dedup subjects against the active deck using DXN identity.\n // The same object can appear under different graph paths (e.g., via collections vs types).\n // Resolve each subject's DXN and, if it matches an already-open deck item, remap the\n // subject to the existing deck entry so that openEntry's exact-match check succeeds.\n // Only needed in multi (deck) mode; solo mode replaces the single visible item anyway.\n {\n const deck = yield* DeckCapabilities.getDeck();\n const active = !deck.solo && deck.initialized ? deck.active : [];\n if (active.length > 0 && input.subject.length > 0) {\n const resolveDxn = (qualifiedPath: string) =>\n Effect.reduce(pathResolvers, Option.none<string>(), (acc, resolver) =>\n Option.isSome(acc)\n ? Effect.succeed(acc)\n : resolver(qualifiedPath).pipe(\n Effect.map((opt) => Option.map(opt, (dxn) => dxn.toString())),\n Effect.catchAll(() => Effect.succeed(Option.none<string>())),\n ),\n );\n\n // Build DXN → deck item ID map for active items.\n const deckDxnMap = new Map<string, string>();\n yield* Effect.all(\n active.map((deckId) =>\n resolveDxn(deckId).pipe(\n Effect.map((opt) => {\n if (Option.isSome(opt)) {\n deckDxnMap.set(opt.value, deckId);\n }\n }),\n ),\n ),\n { concurrency: 'unbounded' },\n );\n\n // Remap subjects whose DXN matches an existing deck item.\n if (deckDxnMap.size > 0) {\n const remapped = yield* Effect.all(\n input.subject.map((subjectId) =>\n resolveDxn(subjectId).pipe(\n Effect.map((opt) => {\n if (Option.isSome(opt)) {\n const existing = deckDxnMap.get(opt.value);\n if (existing && existing !== subjectId) {\n return existing;\n }\n }\n return subjectId;\n }),\n ),\n ),\n { concurrency: 'unbounded' },\n );\n input = { ...input, subject: remapped };\n }\n }\n }\n\n // Compute the next active deck state and apply it.\n // In solo or uninitialized mode the subject list replaces the deck entirely.\n // In multi (deck) mode, subjects are merged via openSubjectsOnActiveDeck which\n // uses stack semantics (truncate after pivot, then push new entries).\n let previouslyOpenIds: Set<string>;\n {\n const deck = yield* DeckCapabilities.getDeck();\n previouslyOpenIds = new Set<string>(deck.solo ? [deck.solo] : deck.active);\n const next =\n deck.solo || !deck.initialized\n ? [...input.subject]\n : openSubjectsOnActiveDeck(deck.active, input.subject, {\n pivotId: input.pivotId,\n key: input.key,\n });\n\n const { deckUpdates, toAttend: _toAttend } = computeActiveUpdates({ next, deck, attention });\n yield* Capabilities.updateAtomValue(DeckCapabilities.State, (state) => updateActiveDeck(state, deckUpdates));\n }\n\n // Schedule side-effects for the newly opened items: scroll into view, expose in\n // the navigation sidebar, and emit observability events.\n // When nothing is newly opened (subject was already visible), the fallback\n // `input.subject[0]` still triggers scroll and expose so the user is taken there.\n {\n const deck = yield* DeckCapabilities.getDeck();\n const ids = deck.solo ? [deck.solo] : deck.active;\n const newlyOpen = ids.filter((i: string) => !previouslyOpenIds.has(i));\n\n if (input.scrollIntoView !== false && (newlyOpen[0] ?? input.subject[0])) {\n yield* Operation.schedule(LayoutOperation.ScrollIntoView, {\n subject: newlyOpen[0] ?? input.subject[0],\n });\n }\n\n if (newlyOpen[0] ?? input.subject[0]) {\n yield* Operation.schedule(LayoutOperation.Expose, { subject: newlyOpen[0] ?? input.subject[0] });\n }\n\n for (const subjectId of newlyOpen) {\n const typename = Option.match(Graph.getNode(graph, subjectId), {\n onNone: () => undefined,\n onSome: (node) => {\n const active = node.data;\n return Obj.isObject(active) ? Obj.getTypename(active) : undefined;\n },\n });\n yield* Operation.schedule(ObservabilityOperation.SendEvent, {\n name: 'navigation.activate',\n properties: { subjectId, typename },\n });\n }\n }\n\n return validatedSubjects;\n }),\n ),\n);\n\nexport default handler;\n"],
5
- "mappings": "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",
6
- "names": ["Effect", "Option", "Capabilities", "Capability", "AppCapabilities", "LayoutOperation", "createEdgeExistenceChecker", "expandPath", "validateNavigationTarget", "Context", "Obj", "Operation", "AttentionCapabilities", "ClientCapabilities", "Graph", "ObservabilityOperation", "handler", "LayoutOperation", "Open", "pipe", "Operation", "withHandler", "fnUntraced", "input", "graph", "Capability", "get", "AppCapabilities", "AppGraph", "attention", "AttentionCapabilities", "Attention", "capabilities", "Service", "pathResolvers", "getAll", "NavigationPathResolver", "checkRemoteExistence", "ClientCapabilities", "Client", "map", "client", "createEdgeExistenceChecker", "spaceId", "body", "edge", "http", "execQuery", "Context", "catchAll", "succeed", "undefined", "navigation", "subjectId", "subject", "expandPath", "validatedSubjects", "all", "validateNavigationTarget", "state", "Capabilities", "getAtomValue", "DeckCapabilities", "State", "workspace", "activeDeck", "invoke", "SwitchWorkspace", "deck", "getDeck", "active", "solo", "initialized", "length", "resolveDxn", "qualifiedPath", "reduce", "none", "acc", "resolver", "isSome", "opt", "dxn", "toString", "deckDxnMap", "Map", "deckId", "set", "value", "concurrency", "size", "remapped", "existing", "previouslyOpenIds", "Set", "next", "openSubjectsOnActiveDeck", "pivotId", "key", "deckUpdates", "toAttend", "_toAttend", "computeActiveUpdates", "updateAtomValue", "updateActiveDeck", "ids", "newlyOpen", "filter", "i", "has", "scrollIntoView", "schedule", "ScrollIntoView", "Expose", "typename", "match", "Graph", "getNode", "onNone", "onSome", "node", "data", "Obj", "isObject", "getTypename", "ObservabilityOperation", "SendEvent", "name", "properties"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/operations/set-layout-mode.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capabilities } from '@dxos/app-framework';\nimport { LayoutOperation } from '@dxos/app-toolkit';\nimport { log } from '@dxos/log';\nimport { Operation } from '@dxos/operation';\nimport { isNonNullable } from '@dxos/util';\n\nimport { DeckCapabilities, type DeckState, type LayoutMode, getMode, isLayoutMode } from '../types';\nimport { updateActiveDeck } from './helpers';\n\n/**\n * Transitions between layout modes (multi, solo, solo--fullscreen) or reverts to the previous mode.\n * Computes which planks become active/inactive and persists the previous mode for revert support.\n */\nconst handler: Operation.WithHandler<typeof LayoutOperation.SetLayoutMode> = LayoutOperation.SetLayoutMode.pipe(\n Operation.withHandler(\n Effect.fnUntraced(function* (input) {\n if ('mode' in input && !isLayoutMode(input.mode)) {\n return;\n }\n\n const state = yield* Capabilities.getAtomValue(DeckCapabilities.State);\n const deck = yield* DeckCapabilities.getDeck();\n\n const computeModeUpdate = (mode: LayoutMode, subject?: string): Partial<DeckState> => {\n const current = deck.solo ? [deck.solo] : deck.active;\n const next = (mode !== 'multi' ? [subject ?? deck.solo ?? deck.active[0]] : [...deck.active, deck.solo]).filter(\n isNonNullable,\n );\n\n const removed = current.filter((id: string) => !next.includes(id));\n const closed = Array.from(new Set([...deck.inactive.filter((id: string) => !next.includes(id)), ...removed]));\n\n const soloUpdate =\n mode !== 'multi' && next[0]\n ? { solo: next[0] }\n : mode === 'multi' && deck.solo\n ? { solo: undefined, initialized: true }\n : {};\n\n const fullscreenUpdate = mode === 'solo--fullscreen' ? { fullscreen: !deck.fullscreen } : {};\n\n return {\n inactive: closed,\n ...soloUpdate,\n ...fullscreenUpdate,\n };\n };\n\n if ('mode' in input) {\n const currentMode = getMode(deck);\n const subject = 'subject' in input ? input.subject : undefined;\n const deckUpdates = computeModeUpdate(input.mode as LayoutMode, subject);\n\n yield* Capabilities.updateAtomValue(DeckCapabilities.State, (state) => {\n const newPreviousMode =\n currentMode !== input.mode\n ? { ...state.previousMode, [state.activeDeck]: currentMode }\n : state.previousMode;\n return {\n ...updateActiveDeck(state, deckUpdates),\n previousMode: newPreviousMode,\n };\n });\n\n if (subject) {\n yield* Operation.schedule(LayoutOperation.Expose, { subject });\n }\n } else if ('revert' in input) {\n const deckUpdates = computeModeUpdate(state.previousMode[state.activeDeck]);\n yield* Capabilities.updateAtomValue(DeckCapabilities.State, (state) => updateActiveDeck(state, deckUpdates));\n } else {\n log.warn('Invalid layout mode', input);\n }\n }),\n ),\n);\n\nexport default handler;\n"],
5
- "mappings": ";;;;;;;;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,oBAAoB;AAC7B,SAASC,uBAAuB;AAChC,SAASC,WAAW;AACpB,SAASC,iBAAiB;AAC1B,SAASC,qBAAqB;;AAS9B,IAAMC,UAAuEC,gBAAgBC,cAAcC,KACzGC,UAAUC,YACDC,kBAAW,WAAWC,OAAK;AAChC,MAAI,UAAUA,SAAS,CAACC,aAAaD,MAAME,IAAI,GAAG;AAChD;EACF;AAEA,QAAMC,QAAQ,OAAOC,aAAaC,aAAaC,iBAAiBC,KAAK;AACrE,QAAMC,OAAO,OAAOF,iBAAiBG,QAAO;AAE5C,QAAMC,oBAAoB,CAACR,MAAkBS,YAAAA;AAC3C,UAAMC,UAAUJ,KAAKK,OAAO;MAACL,KAAKK;QAAQL,KAAKM;AAC/C,UAAMC,QAAQb,SAAS,UAAU;MAACS,WAAWH,KAAKK,QAAQL,KAAKM,OAAO,CAAA;QAAM;SAAIN,KAAKM;MAAQN,KAAKK;OAAOG,OACvGC,aAAAA;AAGF,UAAMC,UAAUN,QAAQI,OAAO,CAACG,OAAe,CAACJ,KAAKK,SAASD,EAAAA,CAAAA;AAC9D,UAAME,SAASC,MAAMC,KAAK,oBAAIC,IAAI;SAAIhB,KAAKiB,SAAST,OAAO,CAACG,OAAe,CAACJ,KAAKK,SAASD,EAAAA,CAAAA;SAASD;KAAQ,CAAA;AAE3G,UAAMQ,aACJxB,SAAS,WAAWa,KAAK,CAAA,IACrB;MAAEF,MAAME,KAAK,CAAA;IAAG,IAChBb,SAAS,WAAWM,KAAKK,OACvB;MAAEA,MAAMc;MAAWC,aAAa;IAAK,IACrC,CAAC;AAET,UAAMC,mBAAmB3B,SAAS,qBAAqB;MAAE4B,YAAY,CAACtB,KAAKsB;IAAW,IAAI,CAAC;AAE3F,WAAO;MACLL,UAAUJ;MACV,GAAGK;MACH,GAAGG;IACL;EACF;AAEA,MAAI,UAAU7B,OAAO;AACnB,UAAM+B,cAAcC,QAAQxB,IAAAA;AAC5B,UAAMG,UAAU,aAAaX,QAAQA,MAAMW,UAAUgB;AACrD,UAAMM,cAAcvB,kBAAkBV,MAAME,MAAoBS,OAAAA;AAEhE,WAAOP,aAAa8B,gBAAgB5B,iBAAiBC,OAAO,CAACJ,WAAAA;AAC3D,YAAMgC,kBACJJ,gBAAgB/B,MAAME,OAClB;QAAE,GAAGC,OAAMiC;QAAc,CAACjC,OAAMkC,UAAU,GAAGN;MAAY,IACzD5B,OAAMiC;AACZ,aAAO;QACL,GAAGE,iBAAiBnC,QAAO8B,WAAAA;QAC3BG,cAAcD;MAChB;IACF,CAAA;AAEA,QAAIxB,SAAS;AACX,aAAOd,UAAU0C,SAAS7C,gBAAgB8C,QAAQ;QAAE7B;MAAQ,CAAA;IAC9D;EACF,WAAW,YAAYX,OAAO;AAC5B,UAAMiC,cAAcvB,kBAAkBP,MAAMiC,aAAajC,MAAMkC,UAAU,CAAC;AAC1E,WAAOjC,aAAa8B,gBAAgB5B,iBAAiBC,OAAO,CAACJ,WAAUmC,iBAAiBnC,QAAO8B,WAAAA,CAAAA;EACjG,OAAO;AACLQ,QAAIC,KAAK,uBAAuB1C,OAAAA;;;;;;EAClC;AACF,CAAA,CAAA,CAAA;AAIJ,IAAA,0BAAeP;",
6
- "names": ["Effect", "Capabilities", "LayoutOperation", "log", "Operation", "isNonNullable", "handler", "LayoutOperation", "SetLayoutMode", "pipe", "Operation", "withHandler", "fnUntraced", "input", "isLayoutMode", "mode", "state", "Capabilities", "getAtomValue", "DeckCapabilities", "State", "deck", "getDeck", "computeModeUpdate", "subject", "current", "solo", "active", "next", "filter", "isNonNullable", "removed", "id", "includes", "closed", "Array", "from", "Set", "inactive", "soloUpdate", "undefined", "initialized", "fullscreenUpdate", "fullscreen", "currentMode", "getMode", "deckUpdates", "updateAtomValue", "newPreviousMode", "previousMode", "activeDeck", "updateActiveDeck", "schedule", "Expose", "log", "warn"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/operations/switch-workspace.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capabilities, Capability } from '@dxos/app-framework';\nimport { AppCapabilities, isPinnedWorkspace, LayoutOperation } from '@dxos/app-toolkit';\nimport { invariant } from '@dxos/invariant';\nimport { Operation } from '@dxos/operation';\nimport { Graph, Node } from '@dxos/plugin-graph';\n\nimport { DeckCapabilities, defaultDeck } from '../types';\n\nconst handler: Operation.WithHandler<typeof LayoutOperation.SwitchWorkspace> = LayoutOperation.SwitchWorkspace.pipe(\n Operation.withHandler(\n Effect.fnUntraced(function* (input) {\n const { graph } = yield* Capability.get(AppCapabilities.AppGraph);\n\n {\n const state = yield* Capabilities.getAtomValue(DeckCapabilities.State);\n // TODO(wittjosiah): This is a hack to prevent the previous deck from being set for pinned items.\n // Ideally this should be worked into the data model in a generic way.\n const shouldUpdatePrevious = !isPinnedWorkspace(state.activeDeck);\n\n yield* Capabilities.updateAtomValue(DeckCapabilities.State, (state) => {\n const newDecks = state.decks[input.subject]\n ? state.decks\n : { ...state.decks, [input.subject]: { ...defaultDeck } };\n return {\n ...state,\n previousDeck: shouldUpdatePrevious ? state.activeDeck : state.previousDeck,\n activeDeck: input.subject,\n decks: newDecks,\n };\n });\n }\n\n {\n const state = yield* Capabilities.getAtomValue(DeckCapabilities.State);\n const deck = state.decks[input.subject];\n invariant(deck, `Deck not found: ${input.subject}`);\n\n const first = deck.solo ? deck.solo : deck.active[0];\n if (first) {\n yield* Operation.schedule(LayoutOperation.ScrollIntoView, { subject: first });\n } else {\n const [item] = Graph.getConnections(graph, input.subject, 'child').filter(\n (node) => !Node.isActionLike(node) && !node.properties.disposition,\n );\n if (item) {\n yield* Operation.schedule(LayoutOperation.Open, { subject: [item.id] });\n }\n }\n }\n }),\n ),\n);\n\nexport default handler;\n"],
5
- "mappings": ";;;;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,cAAcC,kBAAkB;AACzC,SAASC,iBAAiBC,mBAAmBC,uBAAuB;AACpE,SAASC,iBAAiB;AAC1B,SAASC,iBAAiB;AAC1B,SAASC,OAAOC,YAAY;;AAI5B,IAAMC,UAAyEC,gBAAgBC,gBAAgBC,KAC7GC,UAAUC,YACDC,kBAAW,WAAWC,OAAK;AAChC,QAAM,EAAEC,MAAK,IAAK,OAAOC,WAAWC,IAAIC,gBAAgBC,QAAQ;AAEhE;AACE,UAAMC,QAAQ,OAAOC,aAAaC,aAAaC,iBAAiBC,KAAK;AAGrE,UAAMC,uBAAuB,CAACC,kBAAkBN,MAAMO,UAAU;AAEhE,WAAON,aAAaO,gBAAgBL,iBAAiBC,OAAO,CAACJ,WAAAA;AAC3D,YAAMS,WAAWT,OAAMU,MAAMhB,MAAMiB,OAAO,IACtCX,OAAMU,QACN;QAAE,GAAGV,OAAMU;QAAO,CAAChB,MAAMiB,OAAO,GAAG;UAAE,GAAGC;QAAY;MAAE;AAC1D,aAAO;QACL,GAAGZ;QACHa,cAAcR,uBAAuBL,OAAMO,aAAaP,OAAMa;QAC9DN,YAAYb,MAAMiB;QAClBD,OAAOD;MACT;IACF,CAAA;EACF;AAEA;AACE,UAAMT,QAAQ,OAAOC,aAAaC,aAAaC,iBAAiBC,KAAK;AACrE,UAAMU,OAAOd,MAAMU,MAAMhB,MAAMiB,OAAO;AACtCI,cAAUD,MAAM,mBAAmBpB,MAAMiB,OAAO,IAAE;;;;;;;;;AAElD,UAAMK,QAAQF,KAAKG,OAAOH,KAAKG,OAAOH,KAAKI,OAAO,CAAA;AAClD,QAAIF,OAAO;AACT,aAAOzB,UAAU4B,SAAS/B,gBAAgBgC,gBAAgB;QAAET,SAASK;MAAM,CAAA;IAC7E,OAAO;AACL,YAAM,CAACK,IAAAA,IAAQC,MAAMC,eAAe5B,OAAOD,MAAMiB,SAAS,OAAA,EAASa,OACjE,CAACC,SAAS,CAACC,KAAKC,aAAaF,IAAAA,KAAS,CAACA,KAAKG,WAAWC,WAAW;AAEpE,UAAIR,MAAM;AACR,eAAO9B,UAAU4B,SAAS/B,gBAAgB0C,MAAM;UAAEnB,SAAS;YAACU,KAAKU;;QAAI,CAAA;MACvE;IACF;EACF;AACF,CAAA,CAAA,CAAA;AAIJ,IAAA,2BAAe5C;",
6
- "names": ["Effect", "Capabilities", "Capability", "AppCapabilities", "isPinnedWorkspace", "LayoutOperation", "invariant", "Operation", "Graph", "Node", "handler", "LayoutOperation", "SwitchWorkspace", "pipe", "Operation", "withHandler", "fnUntraced", "input", "graph", "Capability", "get", "AppCapabilities", "AppGraph", "state", "Capabilities", "getAtomValue", "DeckCapabilities", "State", "shouldUpdatePrevious", "isPinnedWorkspace", "activeDeck", "updateAtomValue", "newDecks", "decks", "subject", "defaultDeck", "previousDeck", "deck", "invariant", "first", "solo", "active", "schedule", "ScrollIntoView", "item", "Graph", "getConnections", "filter", "node", "Node", "isActionLike", "properties", "disposition", "Open", "id"]
7
- }