@dxos/plugin-deck 0.8.4-main.4a85c3132b → 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 (548) hide show
  1. package/dist/lib/browser/add-toast-JWJOQNVL.mjs +24 -0
  2. package/dist/lib/browser/add-toast-JWJOQNVL.mjs.map +7 -0
  3. package/dist/lib/browser/adjust-RG6LIQLX.mjs +95 -0
  4. package/dist/lib/browser/adjust-RG6LIQLX.mjs.map +7 -0
  5. package/dist/lib/browser/chunk-GLB73Q6U.mjs +22 -0
  6. package/dist/lib/browser/chunk-GLB73Q6U.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  8. package/dist/lib/browser/chunk-J5LGTIGS.mjs.map +7 -0
  9. package/dist/lib/browser/{chunk-BJDEG7YZ.mjs → chunk-LSZ47AY3.mjs} +3 -29
  10. package/dist/lib/browser/chunk-LSZ47AY3.mjs.map +7 -0
  11. package/dist/lib/browser/chunk-MARE7ZFK.mjs +215 -0
  12. package/dist/lib/browser/chunk-MARE7ZFK.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-XM263CQU.mjs +72 -0
  14. package/dist/lib/browser/chunk-XM263CQU.mjs.map +7 -0
  15. package/dist/lib/browser/{chunk-SKBPLX5T.mjs → chunk-ZYYOSX5I.mjs} +22 -34
  16. package/dist/lib/browser/chunk-ZYYOSX5I.mjs.map +7 -0
  17. package/dist/lib/browser/close-URA766JO.mjs +44 -0
  18. package/dist/lib/browser/close-URA766JO.mjs.map +7 -0
  19. package/dist/lib/browser/index.mjs +78 -125
  20. package/dist/lib/browser/index.mjs.map +4 -4
  21. package/dist/lib/browser/meta.json +1 -1
  22. package/dist/lib/browser/open-OPFOOHCQ.mjs +147 -0
  23. package/dist/lib/browser/open-OPFOOHCQ.mjs.map +7 -0
  24. package/dist/lib/browser/operations/index.mjs +13 -0
  25. package/dist/lib/browser/operations/index.mjs.map +7 -0
  26. package/dist/lib/browser/revert-workspace-KP2Y4QLG.mjs +21 -0
  27. package/dist/lib/browser/revert-workspace-KP2Y4QLG.mjs.map +7 -0
  28. package/dist/lib/browser/scroll-into-view-S5H2FGSQ.mjs +21 -0
  29. package/dist/lib/browser/scroll-into-view-S5H2FGSQ.mjs.map +7 -0
  30. package/dist/lib/browser/set-AEKFFSIX.mjs +37 -0
  31. package/dist/lib/browser/set-AEKFFSIX.mjs.map +7 -0
  32. package/dist/lib/browser/set-layout-mode-CWIGQDFZ.mjs +85 -0
  33. package/dist/lib/browser/set-layout-mode-CWIGQDFZ.mjs.map +7 -0
  34. package/dist/lib/browser/show-undo-XFVEDKYC.mjs +59 -0
  35. package/dist/lib/browser/show-undo-XFVEDKYC.mjs.map +7 -0
  36. package/dist/lib/browser/switch-workspace-DSAAXZSI.mjs +60 -0
  37. package/dist/lib/browser/switch-workspace-DSAAXZSI.mjs.map +7 -0
  38. package/dist/lib/browser/translations.mjs +57 -0
  39. package/dist/lib/browser/translations.mjs.map +7 -0
  40. package/dist/lib/browser/types/index.mjs +8 -16
  41. package/dist/lib/browser/update-companion-IDBBBHT3.mjs +32 -0
  42. package/dist/lib/browser/update-companion-IDBBBHT3.mjs.map +7 -0
  43. package/dist/lib/browser/update-complementary-55PNO5MD.mjs +28 -0
  44. package/dist/lib/browser/update-complementary-55PNO5MD.mjs.map +7 -0
  45. package/dist/lib/browser/update-dialog-VNARIANC.mjs +29 -0
  46. package/dist/lib/browser/update-dialog-VNARIANC.mjs.map +7 -0
  47. package/dist/lib/browser/update-plank-size-H63PRRXS.mjs +28 -0
  48. package/dist/lib/browser/update-plank-size-H63PRRXS.mjs.map +7 -0
  49. package/dist/lib/browser/update-popover-ODTPZ3JL.mjs +33 -0
  50. package/dist/lib/browser/update-popover-ODTPZ3JL.mjs.map +7 -0
  51. package/dist/lib/browser/update-sidebar-JDVQ36WK.mjs +25 -0
  52. package/dist/lib/browser/update-sidebar-JDVQ36WK.mjs.map +7 -0
  53. package/dist/lib/node-esm/add-toast-JUTN4GTI.mjs +25 -0
  54. package/dist/lib/node-esm/add-toast-JUTN4GTI.mjs.map +7 -0
  55. package/dist/lib/node-esm/adjust-P5QK33P4.mjs +96 -0
  56. package/dist/lib/node-esm/adjust-P5QK33P4.mjs.map +7 -0
  57. package/dist/lib/node-esm/chunk-FO7YDJZ3.mjs +216 -0
  58. package/dist/lib/node-esm/chunk-FO7YDJZ3.mjs.map +7 -0
  59. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  60. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
  61. package/dist/lib/node-esm/{chunk-DGTRKKWZ.mjs → chunk-KY7ZCANM.mjs} +3 -29
  62. package/dist/lib/node-esm/chunk-KY7ZCANM.mjs.map +7 -0
  63. package/dist/lib/node-esm/chunk-L7OVX7CV.mjs +73 -0
  64. package/dist/lib/node-esm/chunk-L7OVX7CV.mjs.map +7 -0
  65. package/dist/lib/node-esm/chunk-SHSR2CYO.mjs +24 -0
  66. package/dist/lib/node-esm/chunk-SHSR2CYO.mjs.map +7 -0
  67. package/dist/lib/node-esm/{chunk-IR6ODCNC.mjs → chunk-WGBUTT5K.mjs} +22 -34
  68. package/dist/lib/node-esm/chunk-WGBUTT5K.mjs.map +7 -0
  69. package/dist/lib/node-esm/close-U5VC7ERP.mjs +45 -0
  70. package/dist/lib/node-esm/close-U5VC7ERP.mjs.map +7 -0
  71. package/dist/lib/node-esm/index.mjs +78 -125
  72. package/dist/lib/node-esm/index.mjs.map +4 -4
  73. package/dist/lib/node-esm/meta.json +1 -1
  74. package/dist/lib/node-esm/open-4B3P5XGS.mjs +148 -0
  75. package/dist/lib/node-esm/open-4B3P5XGS.mjs.map +7 -0
  76. package/dist/lib/node-esm/operations/index.mjs +14 -0
  77. package/dist/lib/node-esm/operations/index.mjs.map +7 -0
  78. package/dist/lib/node-esm/revert-workspace-QD63M2U7.mjs +22 -0
  79. package/dist/lib/node-esm/revert-workspace-QD63M2U7.mjs.map +7 -0
  80. package/dist/lib/node-esm/scroll-into-view-G5M2EWK7.mjs +22 -0
  81. package/dist/lib/node-esm/scroll-into-view-G5M2EWK7.mjs.map +7 -0
  82. package/dist/lib/node-esm/set-ERJCXZBY.mjs +38 -0
  83. package/dist/lib/node-esm/set-ERJCXZBY.mjs.map +7 -0
  84. package/dist/lib/node-esm/set-layout-mode-BOZD7744.mjs +86 -0
  85. package/dist/lib/node-esm/set-layout-mode-BOZD7744.mjs.map +7 -0
  86. package/dist/lib/node-esm/show-undo-H5BRBYDC.mjs +60 -0
  87. package/dist/lib/node-esm/show-undo-H5BRBYDC.mjs.map +7 -0
  88. package/dist/lib/node-esm/switch-workspace-F54PXE5N.mjs +61 -0
  89. package/dist/lib/node-esm/switch-workspace-F54PXE5N.mjs.map +7 -0
  90. package/dist/lib/node-esm/translations.mjs +58 -0
  91. package/dist/lib/node-esm/translations.mjs.map +7 -0
  92. package/dist/lib/node-esm/types/index.mjs +8 -16
  93. package/dist/lib/node-esm/update-companion-47LMKL5R.mjs +33 -0
  94. package/dist/lib/node-esm/update-companion-47LMKL5R.mjs.map +7 -0
  95. package/dist/lib/node-esm/update-complementary-7VYYG7L2.mjs +29 -0
  96. package/dist/lib/node-esm/update-complementary-7VYYG7L2.mjs.map +7 -0
  97. package/dist/lib/node-esm/update-dialog-CABL7OWW.mjs +30 -0
  98. package/dist/lib/node-esm/update-dialog-CABL7OWW.mjs.map +7 -0
  99. package/dist/lib/node-esm/update-plank-size-WYTSMZF2.mjs +29 -0
  100. package/dist/lib/node-esm/update-plank-size-WYTSMZF2.mjs.map +7 -0
  101. package/dist/lib/node-esm/update-popover-YZDYGL7G.mjs +34 -0
  102. package/dist/lib/node-esm/update-popover-YZDYGL7G.mjs.map +7 -0
  103. package/dist/lib/node-esm/update-sidebar-HV736LUN.mjs +26 -0
  104. package/dist/lib/node-esm/update-sidebar-HV736LUN.mjs.map +7 -0
  105. package/dist/types/src/DeckPlugin.d.ts.map +1 -1
  106. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -0
  107. package/dist/types/src/capabilities/check-app-scheme.d.ts +19 -0
  108. package/dist/types/src/capabilities/check-app-scheme.d.ts.map +1 -0
  109. package/dist/types/src/capabilities/index.d.ts +198 -9
  110. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  111. package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
  112. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
  113. package/dist/types/src/capabilities/react-root.d.ts.map +1 -0
  114. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
  115. package/dist/types/src/capabilities/settings.d.ts +7 -0
  116. package/dist/types/src/capabilities/settings.d.ts.map +1 -0
  117. package/dist/types/src/capabilities/{state/state.d.ts → state.d.ts} +38 -22
  118. package/dist/types/src/capabilities/state.d.ts.map +1 -0
  119. package/dist/types/src/capabilities/{tools/tools.d.ts → tools.d.ts} +1 -1
  120. package/dist/types/src/capabilities/tools.d.ts.map +1 -0
  121. package/dist/types/src/capabilities/{url-handler/url-handler.d.ts → url-handler.d.ts} +1 -1
  122. package/dist/types/src/capabilities/url-handler.d.ts.map +1 -0
  123. package/dist/types/src/components/DeckSettings/DeckSettings.d.ts +6 -0
  124. package/dist/types/src/components/DeckSettings/DeckSettings.d.ts.map +1 -0
  125. package/dist/types/src/components/DeckSettings/DeckSettings.stories.d.ts +61 -0
  126. package/dist/types/src/components/DeckSettings/DeckSettings.stories.d.ts.map +1 -0
  127. package/dist/types/src/components/DeckSettings/index.d.ts +2 -0
  128. package/dist/types/src/components/DeckSettings/index.d.ts.map +1 -0
  129. package/dist/types/src/components/Matrix/Matrix.d.ts +41 -0
  130. package/dist/types/src/components/Matrix/Matrix.d.ts.map +1 -0
  131. package/dist/types/src/components/Matrix/Matrix.stories.d.ts +17 -0
  132. package/dist/types/src/components/Matrix/Matrix.stories.d.ts.map +1 -0
  133. package/dist/types/src/components/Matrix/index.d.ts +3 -0
  134. package/dist/types/src/components/Matrix/index.d.ts.map +1 -0
  135. package/dist/types/src/components/index.d.ts +3 -1
  136. package/dist/types/src/components/index.d.ts.map +1 -1
  137. package/dist/types/src/{components/DeckLayout → containers/Deck}/Banner.d.ts +1 -1
  138. package/dist/types/src/containers/Deck/Banner.d.ts.map +1 -0
  139. package/dist/types/src/containers/Deck/Deck.d.ts +25 -0
  140. package/dist/types/src/containers/Deck/Deck.d.ts.map +1 -0
  141. package/dist/types/src/containers/Deck/Deck.stories.d.ts +61 -0
  142. package/dist/types/src/containers/Deck/Deck.stories.d.ts.map +1 -0
  143. package/dist/types/src/containers/Deck/DeckContent.d.ts +7 -0
  144. package/dist/types/src/containers/Deck/DeckContent.d.ts.map +1 -0
  145. package/dist/types/src/containers/Deck/DeckRoot.d.ts +39 -0
  146. package/dist/types/src/containers/Deck/DeckRoot.d.ts.map +1 -0
  147. package/dist/types/src/containers/Deck/DeckViewport.d.ts +16 -0
  148. package/dist/types/src/containers/Deck/DeckViewport.d.ts.map +1 -0
  149. package/dist/types/src/containers/Deck/StatusBar.d.ts.map +1 -0
  150. package/dist/types/src/containers/Deck/index.d.ts +2 -0
  151. package/dist/types/src/containers/Deck/index.d.ts.map +1 -0
  152. package/dist/types/src/{components → containers}/DeckLayout/ActiveNode.d.ts.map +1 -1
  153. package/dist/types/src/containers/DeckLayout/DeckLayout.d.ts.map +1 -0
  154. package/dist/types/src/containers/DeckLayout/DeckLayout.stories.d.ts +63 -0
  155. package/dist/types/src/containers/DeckLayout/DeckLayout.stories.d.ts.map +1 -0
  156. package/dist/types/src/containers/DeckLayout/Dialog.d.ts.map +1 -0
  157. package/dist/types/src/containers/DeckLayout/Fallback.d.ts +2 -0
  158. package/dist/types/src/containers/DeckLayout/Fallback.d.ts.map +1 -0
  159. package/dist/types/src/containers/DeckLayout/Popover.d.ts +5 -0
  160. package/dist/types/src/containers/DeckLayout/Popover.d.ts.map +1 -0
  161. package/dist/types/src/{components → containers}/DeckLayout/Toast.d.ts +1 -1
  162. package/dist/types/src/containers/DeckLayout/Toast.d.ts.map +1 -0
  163. package/dist/types/src/containers/DeckLayout/constants.d.ts.map +1 -0
  164. package/dist/types/src/containers/DeckLayout/index.d.ts +4 -0
  165. package/dist/types/src/containers/DeckLayout/index.d.ts.map +1 -0
  166. package/dist/types/src/containers/Plank/Plank.d.ts +17 -0
  167. package/dist/types/src/containers/Plank/Plank.d.ts.map +1 -0
  168. package/dist/types/src/containers/Plank/Plank.stories.d.ts +61 -0
  169. package/dist/types/src/containers/Plank/Plank.stories.d.ts.map +1 -0
  170. package/dist/types/src/containers/Plank/PlankComponent.d.ts +17 -0
  171. package/dist/types/src/containers/Plank/PlankComponent.d.ts.map +1 -0
  172. package/dist/types/src/containers/Plank/PlankContent.d.ts +10 -0
  173. package/dist/types/src/containers/Plank/PlankContent.d.ts.map +1 -0
  174. package/dist/types/src/{components → containers}/Plank/PlankControls.d.ts +5 -6
  175. package/dist/types/src/containers/Plank/PlankControls.d.ts.map +1 -0
  176. package/dist/types/src/{components → containers}/Plank/PlankError.d.ts +2 -2
  177. package/dist/types/src/containers/Plank/PlankError.d.ts.map +1 -0
  178. package/dist/types/src/{components → containers}/Plank/PlankHeading.d.ts +3 -2
  179. package/dist/types/src/containers/Plank/PlankHeading.d.ts.map +1 -0
  180. package/dist/types/src/{components → containers}/Plank/PlankLoading.d.ts.map +1 -1
  181. package/dist/types/src/containers/Plank/PlankRoot.d.ts +37 -0
  182. package/dist/types/src/containers/Plank/PlankRoot.d.ts.map +1 -0
  183. package/dist/types/src/containers/Plank/index.d.ts +4 -0
  184. package/dist/types/src/containers/Plank/index.d.ts.map +1 -0
  185. package/dist/types/src/containers/Sidebar/ComplementarySidebar.d.ts.map +1 -0
  186. package/dist/types/src/containers/Sidebar/Sidebar.d.ts.map +1 -0
  187. package/dist/types/src/{components → containers}/Sidebar/SidebarButton.d.ts +1 -1
  188. package/dist/types/src/containers/Sidebar/SidebarButton.d.ts.map +1 -0
  189. package/dist/types/src/{components → containers}/Sidebar/index.d.ts.map +1 -1
  190. package/dist/types/src/containers/index.d.ts +4 -2
  191. package/dist/types/src/containers/index.d.ts.map +1 -1
  192. package/dist/types/src/hooks/useBreakpoints.d.ts +1 -1
  193. package/dist/types/src/hooks/useCompanions.d.ts.map +1 -1
  194. package/dist/types/src/hooks/useDeckCompanions.d.ts +2 -2
  195. package/dist/types/src/hooks/useDeckCompanions.d.ts.map +1 -1
  196. package/dist/types/src/hooks/useDeckState.d.ts +3 -3
  197. package/dist/types/src/hooks/useDeckState.d.ts.map +1 -1
  198. package/dist/types/src/hooks/useHoistStatusbar.d.ts +1 -1
  199. package/dist/types/src/hooks/useHoistStatusbar.d.ts.map +1 -1
  200. package/dist/types/src/hooks/useMainSize.d.ts.map +1 -1
  201. package/dist/types/src/hooks/useNodeActionExpander.d.ts.map +1 -1
  202. package/dist/types/src/hooks/useSelectedCompanion.d.ts.map +1 -1
  203. package/dist/types/src/layout.d.ts +20 -9
  204. package/dist/types/src/layout.d.ts.map +1 -1
  205. package/dist/types/src/layout.test.d.ts +2 -0
  206. package/dist/types/src/layout.test.d.ts.map +1 -0
  207. package/dist/types/src/operations/add-toast.d.ts +5 -0
  208. package/dist/types/src/operations/add-toast.d.ts.map +1 -0
  209. package/dist/types/src/operations/adjust.d.ts +5 -0
  210. package/dist/types/src/operations/adjust.d.ts.map +1 -0
  211. package/dist/types/src/operations/close.d.ts +5 -0
  212. package/dist/types/src/operations/close.d.ts.map +1 -0
  213. package/dist/types/src/operations/definitions.d.ts +15 -0
  214. package/dist/types/src/operations/definitions.d.ts.map +1 -0
  215. package/dist/types/src/operations/helpers.d.ts +3 -0
  216. package/dist/types/src/operations/helpers.d.ts.map +1 -0
  217. package/dist/types/src/operations/index.d.ts +4 -0
  218. package/dist/types/src/operations/index.d.ts.map +1 -0
  219. package/dist/types/src/operations/open.d.ts +5 -0
  220. package/dist/types/src/operations/open.d.ts.map +1 -0
  221. package/dist/types/src/operations/revert-workspace.d.ts +5 -0
  222. package/dist/types/src/operations/revert-workspace.d.ts.map +1 -0
  223. package/dist/types/src/operations/scroll-into-view.d.ts +5 -0
  224. package/dist/types/src/operations/scroll-into-view.d.ts.map +1 -0
  225. package/dist/types/src/operations/set-layout-mode.d.ts +9 -0
  226. package/dist/types/src/operations/set-layout-mode.d.ts.map +1 -0
  227. package/dist/types/src/operations/set.d.ts +5 -0
  228. package/dist/types/src/operations/set.d.ts.map +1 -0
  229. package/dist/types/src/operations/show-undo.d.ts +5 -0
  230. package/dist/types/src/operations/show-undo.d.ts.map +1 -0
  231. package/dist/types/src/operations/switch-workspace.d.ts +5 -0
  232. package/dist/types/src/operations/switch-workspace.d.ts.map +1 -0
  233. package/dist/types/src/operations/update-companion.d.ts +5 -0
  234. package/dist/types/src/operations/update-companion.d.ts.map +1 -0
  235. package/dist/types/src/operations/update-complementary.d.ts +5 -0
  236. package/dist/types/src/operations/update-complementary.d.ts.map +1 -0
  237. package/dist/types/src/operations/update-dialog.d.ts +5 -0
  238. package/dist/types/src/operations/update-dialog.d.ts.map +1 -0
  239. package/dist/types/src/operations/update-plank-size.d.ts +5 -0
  240. package/dist/types/src/operations/update-plank-size.d.ts.map +1 -0
  241. package/dist/types/src/operations/update-popover.d.ts +5 -0
  242. package/dist/types/src/operations/update-popover.d.ts.map +1 -0
  243. package/dist/types/src/operations/update-sidebar.d.ts +5 -0
  244. package/dist/types/src/operations/update-sidebar.d.ts.map +1 -0
  245. package/dist/types/src/translations.d.ts +42 -56
  246. package/dist/types/src/translations.d.ts.map +1 -1
  247. package/dist/types/src/types/Settings.d.ts +11 -0
  248. package/dist/types/src/types/Settings.d.ts.map +1 -0
  249. package/dist/types/src/types/capabilities.d.ts +41 -40
  250. package/dist/types/src/types/capabilities.d.ts.map +1 -1
  251. package/dist/types/src/types/events.d.ts.map +1 -1
  252. package/dist/types/src/types/index.d.ts +1 -0
  253. package/dist/types/src/types/index.d.ts.map +1 -1
  254. package/dist/types/src/types/schema.d.ts +44 -104
  255. package/dist/types/src/types/schema.d.ts.map +1 -1
  256. package/dist/types/src/util/index.d.ts +2 -1
  257. package/dist/types/src/util/index.d.ts.map +1 -1
  258. package/dist/types/src/util/layoutAppliesTopbar.d.ts +1 -1
  259. package/dist/types/src/util/layoutAppliesTopbar.d.ts.map +1 -1
  260. package/dist/types/src/util/plank-url-params.d.ts +14 -0
  261. package/dist/types/src/util/plank-url-params.d.ts.map +1 -0
  262. package/dist/types/src/util/plank-url-params.test.d.ts +2 -0
  263. package/dist/types/src/util/plank-url-params.test.d.ts.map +1 -0
  264. package/dist/types/src/util/sanitize-persisted-state.d.ts +19 -0
  265. package/dist/types/src/util/sanitize-persisted-state.d.ts.map +1 -0
  266. package/dist/types/src/util/sanitize-persisted-state.test.d.ts +2 -0
  267. package/dist/types/src/util/sanitize-persisted-state.test.d.ts.map +1 -0
  268. package/dist/types/src/util/set-active.d.ts +2 -2
  269. package/dist/types/src/util/set-active.d.ts.map +1 -1
  270. package/dist/types/src/util/set-active.test.d.ts +2 -0
  271. package/dist/types/src/util/set-active.test.d.ts.map +1 -0
  272. package/dist/types/tsconfig.tsbuildinfo +1 -1
  273. package/package.json +71 -45
  274. package/src/DeckPlugin.ts +10 -16
  275. package/src/capabilities/app-graph-builder.ts +127 -0
  276. package/src/capabilities/check-app-scheme.ts +139 -0
  277. package/src/capabilities/index.ts +14 -10
  278. package/src/capabilities/operation-handler.ts +16 -0
  279. package/src/capabilities/{react-root/react-root.tsx → react-root.tsx} +3 -3
  280. package/src/capabilities/{react-surface/react-surface.tsx → react-surface.tsx} +12 -14
  281. package/src/capabilities/{settings/settings.ts → settings.ts} +4 -6
  282. package/src/capabilities/{state/state.ts → state.ts} +13 -27
  283. package/src/capabilities/{tools/tools.ts → tools.ts} +6 -6
  284. package/src/capabilities/url-handler.ts +231 -0
  285. package/src/components/DeckSettings/DeckSettings.stories.tsx +38 -0
  286. package/src/components/DeckSettings/DeckSettings.tsx +34 -0
  287. package/src/components/DeckSettings/index.ts +5 -0
  288. package/src/components/Matrix/Matrix.stories.tsx +220 -0
  289. package/src/components/Matrix/Matrix.tsx +205 -0
  290. package/src/components/Matrix/SPEC.md +219 -0
  291. package/src/components/Matrix/index.ts +6 -0
  292. package/src/components/index.ts +6 -2
  293. package/src/{components/DeckLayout → containers/Deck}/Banner.tsx +5 -3
  294. package/src/containers/Deck/Deck.stories.tsx +81 -0
  295. package/src/containers/Deck/Deck.tsx +21 -0
  296. package/src/containers/Deck/DeckContent.tsx +105 -0
  297. package/src/containers/Deck/DeckRoot.tsx +50 -0
  298. package/src/containers/Deck/DeckViewport.tsx +456 -0
  299. package/src/containers/Deck/index.ts +5 -0
  300. package/src/{components → containers}/DeckLayout/ActiveNode.tsx +7 -3
  301. package/src/containers/DeckLayout/DeckLayout.stories.tsx +397 -0
  302. package/src/containers/DeckLayout/DeckLayout.tsx +62 -0
  303. package/src/{components → containers}/DeckLayout/Dialog.tsx +11 -4
  304. package/src/{components → containers}/DeckLayout/Fallback.tsx +3 -3
  305. package/src/{components → containers}/DeckLayout/Popover.tsx +62 -43
  306. package/src/{components → containers}/DeckLayout/Toast.tsx +1 -1
  307. package/src/{components → containers}/DeckLayout/constants.ts +1 -0
  308. package/src/{components → containers}/DeckLayout/index.ts +3 -2
  309. package/src/containers/Plank/Plank.stories.tsx +108 -0
  310. package/src/containers/Plank/Plank.tsx +22 -0
  311. package/src/containers/Plank/PlankComponent.tsx +217 -0
  312. package/src/containers/Plank/PlankContent.tsx +45 -0
  313. package/src/{components → containers}/Plank/PlankControls.tsx +37 -28
  314. package/src/{components → containers}/Plank/PlankError.tsx +20 -4
  315. package/src/{components → containers}/Plank/PlankHeading.tsx +53 -42
  316. package/src/containers/Plank/PlankRoot.tsx +49 -0
  317. package/src/{components → containers}/Plank/index.ts +0 -2
  318. package/src/{components → containers}/Sidebar/ComplementarySidebar.tsx +65 -80
  319. package/src/{components → containers}/Sidebar/Sidebar.tsx +8 -6
  320. package/src/{components → containers}/Sidebar/SidebarButton.tsx +16 -10
  321. package/src/containers/index.ts +5 -2
  322. package/src/hooks/useCompanions.ts +1 -1
  323. package/src/hooks/useDeckCompanions.ts +3 -7
  324. package/src/hooks/useDeckState.ts +11 -20
  325. package/src/hooks/useHoistStatusbar.ts +1 -1
  326. package/src/hooks/useSelectedCompanion.ts +4 -10
  327. package/src/layout.test.ts +59 -0
  328. package/src/layout.ts +38 -40
  329. package/src/meta.ts +1 -1
  330. package/src/operations/add-toast.ts +24 -0
  331. package/src/operations/adjust.ts +83 -0
  332. package/src/operations/close.ts +35 -0
  333. package/src/operations/definitions.ts +49 -0
  334. package/src/operations/helpers.ts +22 -0
  335. package/src/operations/index.ts +26 -0
  336. package/src/operations/open.ts +184 -0
  337. package/src/operations/revert-workspace.ts +22 -0
  338. package/src/operations/scroll-into-view.ts +24 -0
  339. package/src/operations/set-layout-mode.ts +84 -0
  340. package/src/operations/set.ts +36 -0
  341. package/src/operations/show-undo.ts +47 -0
  342. package/src/operations/switch-workspace.ts +60 -0
  343. package/src/operations/update-companion.ts +35 -0
  344. package/src/operations/update-complementary.ts +33 -0
  345. package/src/operations/update-dialog.ts +34 -0
  346. package/src/operations/update-plank-size.ts +29 -0
  347. package/src/operations/update-popover.ts +36 -0
  348. package/src/operations/update-sidebar.ts +28 -0
  349. package/src/translations.ts +42 -55
  350. package/src/types/Settings.ts +42 -0
  351. package/src/types/capabilities.ts +8 -6
  352. package/src/types/events.ts +2 -2
  353. package/src/types/index.ts +1 -0
  354. package/src/types/schema.ts +36 -116
  355. package/src/util/index.ts +2 -1
  356. package/src/util/layoutAppliesTopbar.ts +1 -1
  357. package/src/util/plank-url-params.test.ts +85 -0
  358. package/src/util/plank-url-params.ts +36 -0
  359. package/src/util/sanitize-persisted-state.test.ts +79 -0
  360. package/src/util/sanitize-persisted-state.ts +52 -0
  361. package/src/util/set-active.test.ts +106 -0
  362. package/src/util/set-active.ts +2 -2
  363. package/src/vite-env.d.ts +5 -0
  364. package/dist/lib/browser/Banner-DR6B7XTO.mjs +0 -15
  365. package/dist/lib/browser/Banner-DR6B7XTO.mjs.map +0 -7
  366. package/dist/lib/browser/DeckSettings-HB5TKG2F.mjs +0 -96
  367. package/dist/lib/browser/DeckSettings-HB5TKG2F.mjs.map +0 -7
  368. package/dist/lib/browser/app-graph-builder-22XAL7YE.mjs +0 -123
  369. package/dist/lib/browser/app-graph-builder-22XAL7YE.mjs.map +0 -7
  370. package/dist/lib/browser/check-app-scheme-ZV3QWNNZ.mjs +0 -33
  371. package/dist/lib/browser/check-app-scheme-ZV3QWNNZ.mjs.map +0 -7
  372. package/dist/lib/browser/chunk-BJDEG7YZ.mjs.map +0 -7
  373. package/dist/lib/browser/chunk-FBL4WVYZ.mjs +0 -16
  374. package/dist/lib/browser/chunk-FBL4WVYZ.mjs.map +0 -7
  375. package/dist/lib/browser/chunk-OAPMV5ZR.mjs +0 -280
  376. package/dist/lib/browser/chunk-OAPMV5ZR.mjs.map +0 -7
  377. package/dist/lib/browser/chunk-Q4GUCIRE.mjs +0 -200
  378. package/dist/lib/browser/chunk-Q4GUCIRE.mjs.map +0 -7
  379. package/dist/lib/browser/chunk-SKBPLX5T.mjs.map +0 -7
  380. package/dist/lib/browser/chunk-YGOOWRJE.mjs +0 -1390
  381. package/dist/lib/browser/chunk-YGOOWRJE.mjs.map +0 -7
  382. package/dist/lib/browser/operation-resolver-BLZGJWLO.mjs +0 -580
  383. package/dist/lib/browser/operation-resolver-BLZGJWLO.mjs.map +0 -7
  384. package/dist/lib/browser/react-root-4ESZAM6D.mjs +0 -49
  385. package/dist/lib/browser/react-root-4ESZAM6D.mjs.map +0 -7
  386. package/dist/lib/browser/react-surface-KYQGCALN.mjs +0 -44
  387. package/dist/lib/browser/react-surface-KYQGCALN.mjs.map +0 -7
  388. package/dist/lib/browser/settings-RY2TBSGP.mjs +0 -40
  389. package/dist/lib/browser/settings-RY2TBSGP.mjs.map +0 -7
  390. package/dist/lib/browser/state-CSTTMJ43.mjs +0 -106
  391. package/dist/lib/browser/state-CSTTMJ43.mjs.map +0 -7
  392. package/dist/lib/browser/toolkit-EONRPYA5.mjs +0 -55
  393. package/dist/lib/browser/toolkit-EONRPYA5.mjs.map +0 -7
  394. package/dist/lib/browser/url-handler-EM3SYHHX.mjs +0 -95
  395. package/dist/lib/browser/url-handler-EM3SYHHX.mjs.map +0 -7
  396. package/dist/lib/node-esm/Banner-HR7DPUZU.mjs +0 -16
  397. package/dist/lib/node-esm/Banner-HR7DPUZU.mjs.map +0 -7
  398. package/dist/lib/node-esm/DeckSettings-MWTR7HU2.mjs +0 -97
  399. package/dist/lib/node-esm/DeckSettings-MWTR7HU2.mjs.map +0 -7
  400. package/dist/lib/node-esm/app-graph-builder-GNNNCWGN.mjs +0 -124
  401. package/dist/lib/node-esm/app-graph-builder-GNNNCWGN.mjs.map +0 -7
  402. package/dist/lib/node-esm/check-app-scheme-ZNISVRFH.mjs +0 -34
  403. package/dist/lib/node-esm/check-app-scheme-ZNISVRFH.mjs.map +0 -7
  404. package/dist/lib/node-esm/chunk-DGTRKKWZ.mjs.map +0 -7
  405. package/dist/lib/node-esm/chunk-EGFOT3DE.mjs +0 -18
  406. package/dist/lib/node-esm/chunk-EGFOT3DE.mjs.map +0 -7
  407. package/dist/lib/node-esm/chunk-IR6ODCNC.mjs.map +0 -7
  408. package/dist/lib/node-esm/chunk-L2NPJPGL.mjs +0 -281
  409. package/dist/lib/node-esm/chunk-L2NPJPGL.mjs.map +0 -7
  410. package/dist/lib/node-esm/chunk-O4IOJICP.mjs +0 -201
  411. package/dist/lib/node-esm/chunk-O4IOJICP.mjs.map +0 -7
  412. package/dist/lib/node-esm/chunk-Z43MBISY.mjs +0 -1391
  413. package/dist/lib/node-esm/chunk-Z43MBISY.mjs.map +0 -7
  414. package/dist/lib/node-esm/operation-resolver-5BYDNQND.mjs +0 -581
  415. package/dist/lib/node-esm/operation-resolver-5BYDNQND.mjs.map +0 -7
  416. package/dist/lib/node-esm/react-root-YO7IIC75.mjs +0 -50
  417. package/dist/lib/node-esm/react-root-YO7IIC75.mjs.map +0 -7
  418. package/dist/lib/node-esm/react-surface-G7VRKT4U.mjs +0 -45
  419. package/dist/lib/node-esm/react-surface-G7VRKT4U.mjs.map +0 -7
  420. package/dist/lib/node-esm/settings-GYLWWOBK.mjs +0 -41
  421. package/dist/lib/node-esm/settings-GYLWWOBK.mjs.map +0 -7
  422. package/dist/lib/node-esm/state-RQXTBWUX.mjs +0 -107
  423. package/dist/lib/node-esm/state-RQXTBWUX.mjs.map +0 -7
  424. package/dist/lib/node-esm/toolkit-EU3Z2R4H.mjs +0 -56
  425. package/dist/lib/node-esm/toolkit-EU3Z2R4H.mjs.map +0 -7
  426. package/dist/lib/node-esm/url-handler-VUK2LBJV.mjs +0 -96
  427. package/dist/lib/node-esm/url-handler-VUK2LBJV.mjs.map +0 -7
  428. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +0 -1
  429. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +0 -3
  430. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +0 -1
  431. package/dist/types/src/capabilities/check-app-scheme/check-app-scheme.d.ts +0 -5
  432. package/dist/types/src/capabilities/check-app-scheme/check-app-scheme.d.ts.map +0 -1
  433. package/dist/types/src/capabilities/check-app-scheme/index.d.ts +0 -3
  434. package/dist/types/src/capabilities/check-app-scheme/index.d.ts.map +0 -1
  435. package/dist/types/src/capabilities/operation-resolver/index.d.ts +0 -3
  436. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +0 -1
  437. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +0 -5
  438. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +0 -1
  439. package/dist/types/src/capabilities/react-root/index.d.ts +0 -6
  440. package/dist/types/src/capabilities/react-root/index.d.ts.map +0 -1
  441. package/dist/types/src/capabilities/react-root/react-root.d.ts.map +0 -1
  442. package/dist/types/src/capabilities/react-surface/index.d.ts +0 -3
  443. package/dist/types/src/capabilities/react-surface/index.d.ts.map +0 -1
  444. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +0 -1
  445. package/dist/types/src/capabilities/settings/index.d.ts +0 -19
  446. package/dist/types/src/capabilities/settings/index.d.ts.map +0 -1
  447. package/dist/types/src/capabilities/settings/settings.d.ts +0 -22
  448. package/dist/types/src/capabilities/settings/settings.d.ts.map +0 -1
  449. package/dist/types/src/capabilities/state/index.d.ts +0 -172
  450. package/dist/types/src/capabilities/state/index.d.ts.map +0 -1
  451. package/dist/types/src/capabilities/state/state.d.ts.map +0 -1
  452. package/dist/types/src/capabilities/toolkit/index.d.ts +0 -3
  453. package/dist/types/src/capabilities/toolkit/index.d.ts.map +0 -1
  454. package/dist/types/src/capabilities/toolkit/toolkit.d.ts +0 -27
  455. package/dist/types/src/capabilities/toolkit/toolkit.d.ts.map +0 -1
  456. package/dist/types/src/capabilities/tools/index.d.ts +0 -3
  457. package/dist/types/src/capabilities/tools/index.d.ts.map +0 -1
  458. package/dist/types/src/capabilities/tools/tools.d.ts.map +0 -1
  459. package/dist/types/src/capabilities/url-handler/index.d.ts +0 -3
  460. package/dist/types/src/capabilities/url-handler/index.d.ts.map +0 -1
  461. package/dist/types/src/capabilities/url-handler/url-handler.d.ts.map +0 -1
  462. package/dist/types/src/components/DeckLayout/Banner.d.ts.map +0 -1
  463. package/dist/types/src/components/DeckLayout/ContentEmpty.d.ts +0 -3
  464. package/dist/types/src/components/DeckLayout/ContentEmpty.d.ts.map +0 -1
  465. package/dist/types/src/components/DeckLayout/DeckLayout.d.ts.map +0 -1
  466. package/dist/types/src/components/DeckLayout/DeckLayout.stories.d.ts +0 -75
  467. package/dist/types/src/components/DeckLayout/DeckLayout.stories.d.ts.map +0 -1
  468. package/dist/types/src/components/DeckLayout/DeckMain.d.ts +0 -3
  469. package/dist/types/src/components/DeckLayout/DeckMain.d.ts.map +0 -1
  470. package/dist/types/src/components/DeckLayout/Dialog.d.ts.map +0 -1
  471. package/dist/types/src/components/DeckLayout/Fallback.d.ts +0 -3
  472. package/dist/types/src/components/DeckLayout/Fallback.d.ts.map +0 -1
  473. package/dist/types/src/components/DeckLayout/Popover.d.ts +0 -5
  474. package/dist/types/src/components/DeckLayout/Popover.d.ts.map +0 -1
  475. package/dist/types/src/components/DeckLayout/StatusBar.d.ts.map +0 -1
  476. package/dist/types/src/components/DeckLayout/Toast.d.ts.map +0 -1
  477. package/dist/types/src/components/DeckLayout/Topbar.d.ts +0 -3
  478. package/dist/types/src/components/DeckLayout/Topbar.d.ts.map +0 -1
  479. package/dist/types/src/components/DeckLayout/constants.d.ts.map +0 -1
  480. package/dist/types/src/components/DeckLayout/index.d.ts +0 -4
  481. package/dist/types/src/components/DeckLayout/index.d.ts.map +0 -1
  482. package/dist/types/src/components/Plank/Plank.d.ts +0 -27
  483. package/dist/types/src/components/Plank/Plank.d.ts.map +0 -1
  484. package/dist/types/src/components/Plank/Plank.stories.d.ts +0 -108
  485. package/dist/types/src/components/Plank/Plank.stories.d.ts.map +0 -1
  486. package/dist/types/src/components/Plank/PlankControls.d.ts.map +0 -1
  487. package/dist/types/src/components/Plank/PlankError.d.ts.map +0 -1
  488. package/dist/types/src/components/Plank/PlankHeading.d.ts.map +0 -1
  489. package/dist/types/src/components/Plank/index.d.ts +0 -6
  490. package/dist/types/src/components/Plank/index.d.ts.map +0 -1
  491. package/dist/types/src/components/Sidebar/ComplementarySidebar.d.ts.map +0 -1
  492. package/dist/types/src/components/Sidebar/Sidebar.d.ts.map +0 -1
  493. package/dist/types/src/components/Sidebar/SidebarButton.d.ts.map +0 -1
  494. package/dist/types/src/components/fragments.d.ts +0 -7
  495. package/dist/types/src/components/fragments.d.ts.map +0 -1
  496. package/dist/types/src/containers/Banner/Banner.d.ts +0 -2
  497. package/dist/types/src/containers/Banner/Banner.d.ts.map +0 -1
  498. package/dist/types/src/containers/Banner/index.d.ts +0 -3
  499. package/dist/types/src/containers/Banner/index.d.ts.map +0 -1
  500. package/dist/types/src/containers/DeckSettings/DeckSettings.d.ts +0 -8
  501. package/dist/types/src/containers/DeckSettings/DeckSettings.d.ts.map +0 -1
  502. package/dist/types/src/containers/DeckSettings/index.d.ts +0 -3
  503. package/dist/types/src/containers/DeckSettings/index.d.ts.map +0 -1
  504. package/dist/types/src/util/overscroll.d.ts +0 -47
  505. package/dist/types/src/util/overscroll.d.ts.map +0 -1
  506. package/src/capabilities/app-graph-builder/app-graph-builder.ts +0 -119
  507. package/src/capabilities/app-graph-builder/index.ts +0 -7
  508. package/src/capabilities/check-app-scheme/check-app-scheme.ts +0 -45
  509. package/src/capabilities/check-app-scheme/index.ts +0 -7
  510. package/src/capabilities/operation-resolver/index.ts +0 -10
  511. package/src/capabilities/operation-resolver/operation-resolver.ts +0 -560
  512. package/src/capabilities/react-root/index.ts +0 -7
  513. package/src/capabilities/react-surface/index.ts +0 -7
  514. package/src/capabilities/settings/index.ts +0 -7
  515. package/src/capabilities/state/index.ts +0 -7
  516. package/src/capabilities/toolkit/index.ts +0 -7
  517. package/src/capabilities/toolkit/toolkit.ts +0 -64
  518. package/src/capabilities/tools/index.ts +0 -7
  519. package/src/capabilities/url-handler/index.ts +0 -7
  520. package/src/capabilities/url-handler/url-handler.ts +0 -96
  521. package/src/components/DeckLayout/ContentEmpty.tsx +0 -30
  522. package/src/components/DeckLayout/DeckLayout.stories.tsx +0 -53
  523. package/src/components/DeckLayout/DeckLayout.tsx +0 -34
  524. package/src/components/DeckLayout/DeckMain.tsx +0 -287
  525. package/src/components/DeckLayout/Topbar.tsx +0 -11
  526. package/src/components/Plank/Plank.stories.tsx +0 -64
  527. package/src/components/Plank/Plank.tsx +0 -302
  528. package/src/components/fragments.ts +0 -19
  529. package/src/containers/Banner/Banner.tsx +0 -5
  530. package/src/containers/Banner/index.ts +0 -7
  531. package/src/containers/DeckSettings/DeckSettings.tsx +0 -113
  532. package/src/containers/DeckSettings/index.ts +0 -7
  533. package/src/util/overscroll.ts +0 -69
  534. /package/dist/types/src/capabilities/{app-graph-builder/app-graph-builder.d.ts → app-graph-builder.d.ts} +0 -0
  535. /package/dist/types/src/capabilities/{react-root/react-root.d.ts → react-root.d.ts} +0 -0
  536. /package/dist/types/src/capabilities/{react-surface/react-surface.d.ts → react-surface.d.ts} +0 -0
  537. /package/dist/types/src/{components/DeckLayout → containers/Deck}/StatusBar.d.ts +0 -0
  538. /package/dist/types/src/{components → containers}/DeckLayout/ActiveNode.d.ts +0 -0
  539. /package/dist/types/src/{components → containers}/DeckLayout/DeckLayout.d.ts +0 -0
  540. /package/dist/types/src/{components → containers}/DeckLayout/Dialog.d.ts +0 -0
  541. /package/dist/types/src/{components → containers}/DeckLayout/constants.d.ts +0 -0
  542. /package/dist/types/src/{components → containers}/Plank/PlankLoading.d.ts +0 -0
  543. /package/dist/types/src/{components → containers}/Sidebar/ComplementarySidebar.d.ts +0 -0
  544. /package/dist/types/src/{components → containers}/Sidebar/Sidebar.d.ts +0 -0
  545. /package/dist/types/src/{components → containers}/Sidebar/index.d.ts +0 -0
  546. /package/src/{components/DeckLayout → containers/Deck}/StatusBar.tsx +0 -0
  547. /package/src/{components → containers}/Plank/PlankLoading.tsx +0 -0
  548. /package/src/{components → containers}/Sidebar/index.ts +0 -0
@@ -1,23 +1,13 @@
1
1
  // src/layout.ts
2
2
  import { produce } from "immer";
3
- import { ATTENDABLE_PATH_SEPARATOR } from "@dxos/react-ui-attention";
4
- var createEntryId = (entryId, variant) => variant ? `${entryId}${ATTENDABLE_PATH_SEPARATOR}${variant}` : entryId;
5
- var parseEntryId = (entryId) => {
6
- const [id, variant] = entryId.split(ATTENDABLE_PATH_SEPARATOR);
7
- return {
8
- id,
9
- variant
10
- };
11
- };
12
- var openEntry = (deck, _entryId, options) => {
13
- return produce(deck, (draft) => {
14
- const entryId = createEntryId(_entryId, options?.variant);
3
+ var openEntry = (deck, entryId, options) => {
4
+ return produce([
5
+ ...deck
6
+ ], (draft) => {
15
7
  if (draft.find((id) => id === entryId)) {
16
8
  return;
17
9
  }
18
10
  const key = options?.key;
19
- const plankPositioning = options?.positioning ?? "start";
20
- const pivotId = options?.pivotId;
21
11
  if (key) {
22
12
  const index = draft.findIndex((id) => id.split("+")[0] === key);
23
13
  if (index !== -1) {
@@ -25,24 +15,24 @@ var openEntry = (deck, _entryId, options) => {
25
15
  return;
26
16
  }
27
17
  }
28
- if (pivotId) {
29
- const pivotIndex = draft.findIndex((id) => id === pivotId);
30
- if (pivotIndex !== -1) {
31
- if (plankPositioning === "start") {
32
- draft.splice(pivotIndex, 0, entryId);
33
- } else {
34
- draft.splice(pivotIndex + 1, 0, entryId);
35
- }
36
- return;
37
- }
38
- }
39
- if (plankPositioning === "start") {
40
- draft.unshift(entryId);
41
- } else {
42
- draft.push(entryId);
43
- }
18
+ draft.push(entryId);
44
19
  });
45
20
  };
21
+ var openSubjectsOnActiveDeck = (active, subject, options) => {
22
+ if (subject.length > 0 && subject.every((id) => active.includes(id))) {
23
+ return [
24
+ ...active
25
+ ];
26
+ }
27
+ const { pivotId, key } = options ?? {};
28
+ const pivotIndex = pivotId ? active.findIndex((id) => id === pivotId) : -1;
29
+ const baseDeck = pivotIndex !== -1 ? active.slice(0, pivotIndex + 1) : [
30
+ ...active
31
+ ];
32
+ return subject.reduce((acc, entryId) => openEntry(acc, entryId, {
33
+ key
34
+ }), baseDeck);
35
+ };
46
36
  var closeEntry = (deck, entryId) => {
47
37
  return produce(deck, (draft) => {
48
38
  const index = draft.findIndex((id) => id === entryId);
@@ -72,10 +62,8 @@ var incrementPlank = (deck, adjustment) => {
72
62
  };
73
63
 
74
64
  export {
75
- createEntryId,
76
- parseEntryId,
77
- openEntry,
65
+ openSubjectsOnActiveDeck,
78
66
  closeEntry,
79
67
  incrementPlank
80
68
  };
81
- //# sourceMappingURL=chunk-SKBPLX5T.mjs.map
69
+ //# sourceMappingURL=chunk-ZYYOSX5I.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/layout.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { produce } from 'immer';\n\nimport { type DeckAction } from '#types';\n\ntype OpenLayoutEntryOptions = {\n key?: string;\n};\n\n/**\n * Mutates a deck list using stack semantics: new items open to the right (`push`).\n * Callers that open from a pivot must truncate the deck first (see deck `open` operation).\n */\nexport const openEntry = (deck: readonly string[], entryId: string, options?: OpenLayoutEntryOptions): string[] => {\n return produce([...deck], (draft) => {\n if (draft.find((id) => id === entryId)) {\n return;\n }\n\n const key = options?.key;\n if (key) {\n const index = draft.findIndex((id) => id.split('+')[0] === key);\n if (index !== -1) {\n draft.splice(index, 1, entryId);\n return;\n }\n }\n\n draft.push(entryId);\n });\n};\n\nexport type OpenSubjectsOnActiveDeckOptions = {\n pivotId?: string;\n key?: string;\n};\n\n/**\n * Computes the next multi-mode `active` list for {@link LayoutOperation.Open}.\n * If `pivotId` is present and found, truncates the deck after that id.\n * Applies each subject with {@link openEntry}.\n * If the pivot is missing, appends onto the full `active` list.\n *\n * When all subjects are already present in the active deck, the deck is returned\n * unchanged so that pivot truncation does not discard open planks when navigating\n * to something that is already visible.\n */\nexport const openSubjectsOnActiveDeck = (\n active: readonly string[],\n subject: readonly string[],\n options?: OpenSubjectsOnActiveDeckOptions,\n): string[] => {\n if (subject.length > 0 && subject.every((id) => active.includes(id))) {\n return [...active];\n }\n\n const { pivotId, key } = options ?? {};\n const pivotIndex = pivotId ? active.findIndex((id) => id === pivotId) : -1;\n const baseDeck = pivotIndex !== -1 ? active.slice(0, pivotIndex + 1) : [...active];\n return subject.reduce((acc, entryId) => openEntry(acc, entryId, { key }), baseDeck);\n};\n\nexport const closeEntry = (deck: string[], entryId: string): string[] => {\n return produce(deck, (draft) => {\n const index = draft.findIndex((id) => id === entryId);\n if (index !== -1) {\n draft.splice(index, 1);\n }\n });\n};\n\nexport const incrementPlank = (deck: string[], adjustment: DeckAction.Adjustment): string[] => {\n return produce(deck, (draft) => {\n const index = draft.findIndex((id) => id === adjustment.id);\n if (\n index === -1 ||\n (adjustment.type === 'increment-start' && index === 0) ||\n (adjustment.type === 'increment-end' && index === draft.length - 1)\n ) {\n return;\n }\n\n if (adjustment.type === 'increment-start') {\n // Swap the current item with the previous item.\n [draft[index - 1], draft[index]] = [draft[index], draft[index - 1]];\n } else if (adjustment.type === 'increment-end') {\n // Swap the current item with the next item.\n [draft[index], draft[index + 1]] = [draft[index + 1], draft[index]];\n }\n });\n};\n"],
5
+ "mappings": ";AAIA,SAASA,eAAe;AAYjB,IAAMC,YAAY,CAACC,MAAyBC,SAAiBC,YAAAA;AAClE,SAAOJ,QAAQ;OAAIE;KAAO,CAACG,UAAAA;AACzB,QAAIA,MAAMC,KAAK,CAACC,OAAOA,OAAOJ,OAAAA,GAAU;AACtC;IACF;AAEA,UAAMK,MAAMJ,SAASI;AACrB,QAAIA,KAAK;AACP,YAAMC,QAAQJ,MAAMK,UAAU,CAACH,OAAOA,GAAGI,MAAM,GAAA,EAAK,CAAA,MAAOH,GAAAA;AAC3D,UAAIC,UAAU,IAAI;AAChBJ,cAAMO,OAAOH,OAAO,GAAGN,OAAAA;AACvB;MACF;IACF;AAEAE,UAAMQ,KAAKV,OAAAA;EACb,CAAA;AACF;AAiBO,IAAMW,2BAA2B,CACtCC,QACAC,SACAZ,YAAAA;AAEA,MAAIY,QAAQC,SAAS,KAAKD,QAAQE,MAAM,CAACX,OAAOQ,OAAOI,SAASZ,EAAAA,CAAAA,GAAM;AACpE,WAAO;SAAIQ;;EACb;AAEA,QAAM,EAAEK,SAASZ,IAAG,IAAKJ,WAAW,CAAC;AACrC,QAAMiB,aAAaD,UAAUL,OAAOL,UAAU,CAACH,OAAOA,OAAOa,OAAAA,IAAW;AACxE,QAAME,WAAWD,eAAe,KAAKN,OAAOQ,MAAM,GAAGF,aAAa,CAAA,IAAK;OAAIN;;AAC3E,SAAOC,QAAQQ,OAAO,CAACC,KAAKtB,YAAYF,UAAUwB,KAAKtB,SAAS;IAAEK;EAAI,CAAA,GAAIc,QAAAA;AAC5E;AAEO,IAAMI,aAAa,CAACxB,MAAgBC,YAAAA;AACzC,SAAOH,QAAQE,MAAM,CAACG,UAAAA;AACpB,UAAMI,QAAQJ,MAAMK,UAAU,CAACH,OAAOA,OAAOJ,OAAAA;AAC7C,QAAIM,UAAU,IAAI;AAChBJ,YAAMO,OAAOH,OAAO,CAAA;IACtB;EACF,CAAA;AACF;AAEO,IAAMkB,iBAAiB,CAACzB,MAAgB0B,eAAAA;AAC7C,SAAO5B,QAAQE,MAAM,CAACG,UAAAA;AACpB,UAAMI,QAAQJ,MAAMK,UAAU,CAACH,OAAOA,OAAOqB,WAAWrB,EAAE;AAC1D,QACEE,UAAU,MACTmB,WAAWC,SAAS,qBAAqBpB,UAAU,KACnDmB,WAAWC,SAAS,mBAAmBpB,UAAUJ,MAAMY,SAAS,GACjE;AACA;IACF;AAEA,QAAIW,WAAWC,SAAS,mBAAmB;AAEzC,OAACxB,MAAMI,QAAQ,CAAA,GAAIJ,MAAMI,KAAAA,CAAM,IAAI;QAACJ,MAAMI,KAAAA;QAAQJ,MAAMI,QAAQ,CAAA;;IAClE,WAAWmB,WAAWC,SAAS,iBAAiB;AAE9C,OAACxB,MAAMI,KAAAA,GAAQJ,MAAMI,QAAQ,CAAA,CAAE,IAAI;QAACJ,MAAMI,QAAQ,CAAA;QAAIJ,MAAMI,KAAAA;;IAC9D;EACF,CAAA;AACF;",
6
+ "names": ["produce", "openEntry", "deck", "entryId", "options", "draft", "find", "id", "key", "index", "findIndex", "split", "splice", "push", "openSubjectsOnActiveDeck", "active", "subject", "length", "every", "includes", "pivotId", "pivotIndex", "baseDeck", "slice", "reduce", "acc", "closeEntry", "incrementPlank", "adjustment", "type"]
7
+ }
@@ -0,0 +1,44 @@
1
+ import {
2
+ closeEntry
3
+ } from "./chunk-ZYYOSX5I.mjs";
4
+ import {
5
+ computeActiveUpdates
6
+ } from "./chunk-LSZ47AY3.mjs";
7
+ import {
8
+ updateActiveDeck
9
+ } from "./chunk-GLB73Q6U.mjs";
10
+ import {
11
+ DeckCapabilities
12
+ } from "./chunk-MARE7ZFK.mjs";
13
+ import "./chunk-J5LGTIGS.mjs";
14
+
15
+ // src/operations/close.ts
16
+ import * as Effect from "effect/Effect";
17
+ import { Capabilities, Capability } from "@dxos/app-framework";
18
+ import { LayoutOperation } from "@dxos/app-toolkit";
19
+ import { Operation } from "@dxos/compute";
20
+ import { AttentionCapabilities } from "@dxos/plugin-attention/types";
21
+ var handler = LayoutOperation.Close.pipe(Operation.withHandler(Effect.fnUntraced(function* (input) {
22
+ const deck = yield* DeckCapabilities.getDeck();
23
+ const attention = yield* Capability.get(AttentionCapabilities.Attention);
24
+ const active = deck.solo ? [
25
+ deck.solo
26
+ ] : deck.active;
27
+ const next = input.subject.reduce((acc, id) => closeEntry(acc, id), active);
28
+ const { deckUpdates, toAttend } = computeActiveUpdates({
29
+ next,
30
+ deck,
31
+ attention
32
+ });
33
+ yield* Capabilities.updateAtomValue(DeckCapabilities.State, (state) => updateActiveDeck(state, deckUpdates));
34
+ if (toAttend) {
35
+ yield* Operation.schedule(LayoutOperation.ScrollIntoView, {
36
+ subject: toAttend
37
+ });
38
+ }
39
+ })));
40
+ var close_default = handler;
41
+ export {
42
+ close_default as default
43
+ };
44
+ //# sourceMappingURL=close-URA766JO.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/operations/close.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 { LayoutOperation } from '@dxos/app-toolkit';\nimport { Operation } from '@dxos/compute';\nimport { AttentionCapabilities } from '@dxos/plugin-attention/types';\n\nimport { closeEntry } from '../layout';\nimport { DeckCapabilities } from '../types';\nimport { computeActiveUpdates } from '../util';\nimport { updateActiveDeck } from './helpers';\n\nconst handler: Operation.WithHandler<typeof LayoutOperation.Close> = LayoutOperation.Close.pipe(\n Operation.withHandler(\n Effect.fnUntraced(function* (input) {\n const deck = yield* DeckCapabilities.getDeck();\n const attention = yield* Capability.get(AttentionCapabilities.Attention);\n\n const active = deck.solo ? [deck.solo] : deck.active;\n const next = input.subject.reduce((acc, id) => closeEntry(acc, id), active);\n const { deckUpdates, toAttend } = computeActiveUpdates({ next, deck, attention });\n yield* Capabilities.updateAtomValue(DeckCapabilities.State, (state) => updateActiveDeck(state, deckUpdates));\n\n if (toAttend) {\n yield* Operation.schedule(LayoutOperation.ScrollIntoView, { subject: toAttend });\n }\n }),\n ),\n);\n\nexport default handler;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,cAAcC,kBAAkB;AACzC,SAASC,uBAAuB;AAChC,SAASC,iBAAiB;AAC1B,SAASC,6BAA6B;AAOtC,IAAMC,UAA+DC,gBAAgBC,MAAMC,KACzFC,UAAUC,YACDC,kBAAW,WAAWC,OAAK;AAChC,QAAMC,OAAO,OAAOC,iBAAiBC,QAAO;AAC5C,QAAMC,YAAY,OAAOC,WAAWC,IAAIC,sBAAsBC,SAAS;AAEvE,QAAMC,SAASR,KAAKS,OAAO;IAACT,KAAKS;MAAQT,KAAKQ;AAC9C,QAAME,OAAOX,MAAMY,QAAQC,OAAO,CAACC,KAAKC,OAAOC,WAAWF,KAAKC,EAAAA,GAAKN,MAAAA;AACpE,QAAM,EAAEQ,aAAaC,SAAQ,IAAKC,qBAAqB;IAAER;IAAMV;IAAMG;EAAU,CAAA;AAC/E,SAAOgB,aAAaC,gBAAgBnB,iBAAiBoB,OAAO,CAACC,UAAUC,iBAAiBD,OAAON,WAAAA,CAAAA;AAE/F,MAAIC,UAAU;AACZ,WAAOrB,UAAU4B,SAAS/B,gBAAgBgC,gBAAgB;MAAEd,SAASM;IAAS,CAAA;EAChF;AACF,CAAA,CAAA,CAAA;AAIJ,IAAA,gBAAezB;",
6
+ "names": ["Effect", "Capabilities", "Capability", "LayoutOperation", "Operation", "AttentionCapabilities", "handler", "LayoutOperation", "Close", "pipe", "Operation", "withHandler", "fnUntraced", "input", "deck", "DeckCapabilities", "getDeck", "attention", "Capability", "get", "AttentionCapabilities", "Attention", "active", "solo", "next", "subject", "reduce", "acc", "id", "closeEntry", "deckUpdates", "toAttend", "computeActiveUpdates", "Capabilities", "updateAtomValue", "State", "state", "updateActiveDeck", "schedule", "ScrollIntoView"]
7
+ }
@@ -1,129 +1,25 @@
1
- import {
2
- useCompanions
3
- } from "./chunk-Q4GUCIRE.mjs";
4
- import "./chunk-SKBPLX5T.mjs";
5
1
  import {
6
2
  DeckCapabilities,
7
3
  DeckEvents
8
- } from "./chunk-OAPMV5ZR.mjs";
9
- import {
10
- meta
11
- } from "./chunk-FBL4WVYZ.mjs";
4
+ } from "./chunk-MARE7ZFK.mjs";
5
+ import "./chunk-J5LGTIGS.mjs";
12
6
 
13
7
  // src/DeckPlugin.ts
14
8
  import { setAutoFreeze } from "immer";
15
9
  import { ActivationEvent, ActivationEvents, Plugin } from "@dxos/app-framework";
16
10
  import { AppActivationEvents, AppPlugin } from "@dxos/app-toolkit";
17
- import { translations as stackTranslations } from "@dxos/react-ui-stack";
18
-
19
- // src/capabilities/app-graph-builder/index.ts
20
- import { Capability } from "@dxos/app-framework";
21
- var AppGraphBuilder = Capability.lazy("AppGraphBuilder", () => import("./app-graph-builder-22XAL7YE.mjs"));
22
-
23
- // src/capabilities/check-app-scheme/index.ts
24
- import { Capability as Capability2 } from "@dxos/app-framework";
25
- var CheckAppScheme = Capability2.lazy("CheckAppScheme", () => import("./check-app-scheme-ZV3QWNNZ.mjs"));
26
-
27
- // src/capabilities/operation-resolver/index.ts
28
- import { Capability as Capability$ } from "@dxos/app-framework";
29
- var LayoutOperationResolver = Capability$.lazy("LayoutOperationResolver", () => import("./operation-resolver-BLZGJWLO.mjs"));
30
-
31
- // src/capabilities/react-root/index.ts
32
- import { Capability as Capability3 } from "@dxos/app-framework";
33
- var ReactRoot = Capability3.lazy("ReactRoot", () => import("./react-root-4ESZAM6D.mjs"));
34
-
35
- // src/capabilities/react-surface/index.ts
36
- import { Capability as Capability4 } from "@dxos/app-framework";
37
- var ReactSurface = Capability4.lazy("ReactSurface", () => import("./react-surface-KYQGCALN.mjs"));
38
-
39
- // src/capabilities/settings/index.ts
40
- import { Capability as Capability5 } from "@dxos/app-framework";
41
- var DeckSettings = Capability5.lazy("DeckSettings", () => import("./settings-RY2TBSGP.mjs"));
42
-
43
- // src/capabilities/state/index.ts
44
- import { Capability as Capability6 } from "@dxos/app-framework";
45
- var DeckState = Capability6.lazy("DeckState", () => import("./state-CSTTMJ43.mjs"));
46
-
47
- // src/capabilities/toolkit/index.ts
48
- import { Capability as Capability7 } from "@dxos/app-framework";
49
- var Toolkit = Capability7.lazy("Toolkit", () => import("./toolkit-EONRPYA5.mjs"));
50
-
51
- // src/capabilities/url-handler/index.ts
52
- import { Capability as Capability8 } from "@dxos/app-framework";
53
- var UrlHandler = Capability8.lazy("UrlHandler", () => import("./url-handler-EM3SYHHX.mjs"));
54
-
55
- // src/translations.ts
56
- var translations = [
57
- {
58
- "en-US": {
59
- [meta.id]: {
60
- "plugin name": "Deck",
61
- "settings title": "Deck settings",
62
- "main header label": "Main header",
63
- "open navigation sidebar label": "Open sidebar",
64
- "collapse navigation sidebar label": "Minimize sidebar",
65
- "open complementary sidebar label": "Open context sidebar",
66
- "close complementary sidebar label": "Minimize context sidebar",
67
- "sidebar title": "Navigation sidebar",
68
- "complementary sidebar title": "Context sidebar",
69
- "plugin error message": "Content failed to render.",
70
- "content fallback message": "Unsupported",
71
- "content fallback description": "No plugin had a response for the address you navigated\xA0to. Double-check the URL, and ensure you\u2019ve enabled a plugin that supports the\xA0object.",
72
- "toggle fullscreen label": "Toggle fullscreen",
73
- "settings show hints label": "Show hints",
74
- "settings native redirect label": "Enable native url redirect (experimental)",
75
- "settings new plank position start label": "Start",
76
- "settings new plank position end label": "End",
77
- "select new plank positioning placeholder": "Select new plank positioning",
78
- "select new plank positioning label": "New plank positioning",
79
- "undo available label": "Click to undo previous action.",
80
- "undo action label": "Undo",
81
- "undo action alt": "Undo previous action",
82
- "undo close label": "Dismiss",
83
- "error fallback message": "Unable to open this object",
84
- "plank heading fallback label": "Untitled",
85
- "actions menu label": "Options",
86
- "settings deck label": "Disable deck",
87
- "pending heading": "Loading\u2026",
88
- "insert plank label": "Open",
89
- "resize label": "Drag to resize",
90
- "pin start label": "Pin to the left sidebar",
91
- "pin end label": "Pin to the right sidebar",
92
- "increment start label": "Move to the left",
93
- "increment end label": "Move to the right",
94
- "show deck plank label": "Return to deck",
95
- "show solo plank label": "Maximize",
96
- "exit fullscreen label": "Exit fullscreen",
97
- "show fullscreen plank label": "Fullscreen",
98
- "close label": "Close",
99
- "minify label": "Minify",
100
- "open companion label": "Open companion",
101
- "close companion label": "Close companion",
102
- "settings overscroll label": "Plank scrolling",
103
- "select overscroll placeholder": "Select plank scrolling behavior",
104
- "settings overscroll centering label": "Centering",
105
- "settings overscroll none label": "None",
106
- "settings enable statusbar label": "Show status bar",
107
- "settings enable deck label": "Enable Deck",
108
- "settings encapsulated planks label": "Encapsulated planks",
109
- "close current label": "Close current plank",
110
- "close others label": "Close other planks",
111
- "close all label": "Close all planks",
112
- "companion plank heading fallback label": "Related",
113
- "open item label": "Open"
114
- }
115
- }
116
- }
117
- ];
118
-
119
- // src/DeckPlugin.ts
11
+ import { translations as stackTranslations } from "@dxos/react-ui-stack/translations";
12
+ import { AppGraphBuilder, CheckAppScheme, DeckSettings, DeckState, OperationHandler, ReactRoot, ReactSurface, UrlHandler } from "#capabilities";
13
+ import { meta } from "#meta";
14
+ import { translations } from "#translations";
15
+ import { DeckEvents as DeckEvents2 } from "#types";
120
16
  setAutoFreeze(false);
121
17
  var DeckPlugin = Plugin.define(meta).pipe(
122
18
  AppPlugin.addAppGraphModule({
123
19
  activate: AppGraphBuilder
124
20
  }),
125
- AppPlugin.addOperationResolverModule({
126
- activate: LayoutOperationResolver
21
+ AppPlugin.addOperationHandlerModule({
22
+ activate: OperationHandler
127
23
  }),
128
24
  AppPlugin.addSurfaceModule({
129
25
  activate: ReactSurface
@@ -136,13 +32,13 @@ var DeckPlugin = Plugin.define(meta).pipe(
136
32
  }),
137
33
  Plugin.addModule({
138
34
  activatesOn: AppActivationEvents.SetupSettings,
139
- activatesAfter: [
140
- DeckEvents.SettingsReady
35
+ firesAfterActivation: [
36
+ DeckEvents2.SettingsReady
141
37
  ],
142
38
  activate: DeckSettings
143
39
  }),
144
40
  Plugin.addModule({
145
- activatesOn: DeckEvents.SettingsReady,
41
+ activatesOn: ActivationEvent.allOf(DeckEvents2.SettingsReady, ActivationEvents.OperationInvokerReady),
146
42
  activate: CheckAppScheme
147
43
  }),
148
44
  Plugin.addModule({
@@ -150,9 +46,9 @@ var DeckPlugin = Plugin.define(meta).pipe(
150
46
  // Should this be a different event?
151
47
  // Should settings store be renamed to be more generic?
152
48
  activatesOn: ActivationEvent.oneOf(AppActivationEvents.SetupSettings, AppActivationEvents.SetupAppGraph),
153
- activatesAfter: [
49
+ firesAfterActivation: [
154
50
  AppActivationEvents.LayoutReady,
155
- DeckEvents.StateReady
51
+ DeckEvents2.StateReady
156
52
  ],
157
53
  activate: DeckState
158
54
  }),
@@ -165,21 +61,78 @@ var DeckPlugin = Plugin.define(meta).pipe(
165
61
  // activate: Tools,
166
62
  // }),
167
63
  Plugin.addModule({
168
- // TODO(wittjosiah): Shouldn't use the startup event.
169
- activatesOn: ActivationEvents.Startup,
170
- activate: Toolkit
171
- }),
172
- Plugin.addModule({
173
- activatesOn: ActivationEvent.allOf(ActivationEvents.OperationInvokerReady, DeckEvents.StateReady),
64
+ activatesOn: ActivationEvent.allOf(ActivationEvents.OperationInvokerReady, DeckEvents2.StateReady),
174
65
  activate: UrlHandler
175
66
  }),
176
67
  Plugin.make
177
68
  );
69
+
70
+ // src/meta.ts
71
+ import { trim } from "@dxos/util";
72
+ var meta2 = {
73
+ id: "org.dxos.plugin.deck",
74
+ name: "Layout",
75
+ description: trim`
76
+ Flexible layout system for arranging workspace views in tabs, splits, and panels.
77
+ Customize your workspace organization with drag-and-drop layout management.
78
+ `,
79
+ icon: "ph--layout--regular"
80
+ };
81
+
82
+ // src/hooks/useBreakpoints.ts
83
+ import { useMediaQuery } from "@dxos/react-ui";
84
+
85
+ // src/hooks/useCompanions.ts
86
+ import { useMemo } from "react";
87
+ import { useAppGraph } from "@dxos/app-toolkit/ui";
88
+ import { useConnections } from "@dxos/plugin-graph";
89
+ import { byPosition } from "@dxos/util";
90
+ import { PLANK_COMPANION_TYPE } from "#types";
91
+ var useCompanions = (id) => {
92
+ const { graph } = useAppGraph();
93
+ const nodes = useConnections(graph, id, "child");
94
+ const companions = nodes.filter((node) => node.type === PLANK_COMPANION_TYPE);
95
+ return useMemo(() => companions.toSorted((a, b) => byPosition(a.properties, b.properties)), [
96
+ companions
97
+ ]);
98
+ };
99
+
100
+ // src/hooks/useDeckCompanions.ts
101
+ import { useAppGraph as useAppGraph2 } from "@dxos/app-toolkit/ui";
102
+ import { Node } from "@dxos/plugin-graph";
103
+ import { useConnections as useConnections2 } from "@dxos/plugin-graph";
104
+ import { byPosition as byPosition2 } from "@dxos/util";
105
+ import { DECK_COMPANION_TYPE } from "#types";
106
+
107
+ // src/hooks/useDeckState.ts
108
+ import { useAtomValue } from "@effect-atom/atom-react";
109
+ import { useCallback, useMemo as useMemo2 } from "react";
110
+ import { Capabilities } from "@dxos/app-framework";
111
+ import { useCapability } from "@dxos/app-framework/ui";
112
+ import { invariant } from "@dxos/invariant";
113
+ import { DeckCapabilities as DeckCapabilities2 } from "#types";
114
+
115
+ // src/hooks/useHoistStatusbar.ts
116
+ import { useMemo as useMemo3 } from "react";
117
+ import { useAtomCapability } from "@dxos/app-framework/ui";
118
+ import { useThemeContext } from "@dxos/react-ui";
119
+ import { DeckCapabilities as DeckCapabilities3 } from "#types";
120
+
121
+ // src/hooks/useMainSize.ts
122
+ import { useMainContext } from "@dxos/react-ui";
123
+
124
+ // src/hooks/useNodeActionExpander.ts
125
+ import { useEffect } from "react";
126
+ import { Graph } from "@dxos/plugin-graph";
127
+
128
+ // src/hooks/useSelectedCompanion.ts
129
+ import { useMemo as useMemo4 } from "react";
130
+ import { getLinkedVariant } from "@dxos/react-ui-attention";
178
131
  export {
179
132
  DeckCapabilities,
180
133
  DeckEvents,
181
134
  DeckPlugin,
182
- meta,
135
+ meta2 as meta,
183
136
  useCompanions
184
137
  };
185
138
  //# sourceMappingURL=index.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/DeckPlugin.ts", "../../../src/capabilities/app-graph-builder/index.ts", "../../../src/capabilities/check-app-scheme/index.ts", "../../../src/capabilities/operation-resolver/index.ts", "../../../src/capabilities/react-root/index.ts", "../../../src/capabilities/react-surface/index.ts", "../../../src/capabilities/settings/index.ts", "../../../src/capabilities/state/index.ts", "../../../src/capabilities/toolkit/index.ts", "../../../src/capabilities/url-handler/index.ts", "../../../src/translations.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { setAutoFreeze } from 'immer';\n\nimport { ActivationEvent, ActivationEvents, Plugin } from '@dxos/app-framework';\nimport { AppActivationEvents, AppPlugin } from '@dxos/app-toolkit';\nimport { translations as stackTranslations } from '@dxos/react-ui-stack';\n\nimport {\n AppGraphBuilder,\n CheckAppScheme,\n DeckSettings,\n DeckState,\n LayoutOperationResolver,\n ReactRoot,\n ReactSurface,\n Toolkit,\n UrlHandler,\n} from './capabilities';\nimport { meta } from './meta';\nimport { translations } from './translations';\nimport { DeckEvents } from './types';\n\n// NOTE(Zan): When producing values with immer, we shouldn't auto-freeze them because\n// our signal implementation needs to add some hidden properties to the produced values.\n// TODO(Zan): Move this to a more global location if we use immer more broadly.\nsetAutoFreeze(false);\n\nexport const DeckPlugin = Plugin.define(meta).pipe(\n AppPlugin.addAppGraphModule({ activate: AppGraphBuilder }),\n AppPlugin.addOperationResolverModule({ activate: LayoutOperationResolver }),\n AppPlugin.addSurfaceModule({ activate: ReactSurface }),\n AppPlugin.addTranslationsModule({ translations: [...translations, ...stackTranslations] }),\n Plugin.addModule({\n activatesOn: AppActivationEvents.SetupSettings,\n activatesAfter: [DeckEvents.SettingsReady],\n activate: DeckSettings,\n }),\n Plugin.addModule({\n activatesOn: DeckEvents.SettingsReady,\n activate: CheckAppScheme,\n }),\n Plugin.addModule({\n // TODO(wittjosiah): Does not integrate with settings store.\n // Should this be a different event?\n // Should settings store be renamed to be more generic?\n activatesOn: ActivationEvent.oneOf(AppActivationEvents.SetupSettings, AppActivationEvents.SetupAppGraph),\n activatesAfter: [AppActivationEvents.LayoutReady, DeckEvents.StateReady],\n activate: DeckState,\n }),\n Plugin.addModule({\n activatesOn: ActivationEvents.Startup,\n activate: ReactRoot,\n }),\n // Plugin.addModule({\n // activatesOn: Events.SetupArtifactDefinition,\n // activate: Tools,\n // }),\n Plugin.addModule({\n // TODO(wittjosiah): Shouldn't use the startup event.\n activatesOn: ActivationEvents.Startup,\n activate: Toolkit,\n }),\n Plugin.addModule({\n activatesOn: ActivationEvent.allOf(ActivationEvents.OperationInvokerReady, DeckEvents.StateReady),\n activate: UrlHandler,\n }),\n Plugin.make,\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\n\nexport const AppGraphBuilder = Capability.lazy('AppGraphBuilder', () => import('./app-graph-builder'));\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\n\nexport const CheckAppScheme = Capability.lazy('CheckAppScheme', () => import('./check-app-scheme'));\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Capability, Capability as Capability$ } from '@dxos/app-framework';\n\nexport const LayoutOperationResolver: Capability.LazyCapability = Capability$.lazy(\n 'LayoutOperationResolver',\n () => import('./operation-resolver'),\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\n\nexport const ReactRoot = Capability.lazy('ReactRoot', () => import('./react-root'));\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\n\nexport const ReactSurface = Capability.lazy('ReactSurface', () => import('./react-surface'));\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\n\nexport const DeckSettings = Capability.lazy('DeckSettings', () => import('./settings'));\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\n\nexport const DeckState = Capability.lazy('DeckState', () => import('./state'));\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\n\nexport const Toolkit = Capability.lazy('Toolkit', () => import('./toolkit'));\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capability } from '@dxos/app-framework';\n\nexport const UrlHandler = Capability.lazy('UrlHandler', () => import('./url-handler'));\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Resource } from '@dxos/react-ui';\n\nimport { meta } from './meta';\n\nexport const translations = [\n {\n 'en-US': {\n [meta.id]: {\n 'plugin name': 'Deck',\n 'settings title': 'Deck settings',\n 'main header label': 'Main header',\n 'open navigation sidebar label': 'Open sidebar',\n 'collapse navigation sidebar label': 'Minimize sidebar',\n 'open complementary sidebar label': 'Open context sidebar',\n 'close complementary sidebar label': 'Minimize context sidebar',\n 'sidebar title': 'Navigation sidebar',\n 'complementary sidebar title': 'Context sidebar',\n 'plugin error message': 'Content failed to render.',\n 'content fallback message': 'Unsupported',\n 'content fallback description':\n 'No plugin had a response for the address you navigated to. Double-check the URL, and ensure you’ve enabled a plugin that supports the object.',\n 'toggle fullscreen label': 'Toggle fullscreen',\n 'settings show hints label': 'Show hints',\n 'settings native redirect label': 'Enable native url redirect (experimental)',\n 'settings new plank position start label': 'Start',\n 'settings new plank position end label': 'End',\n 'select new plank positioning placeholder': 'Select new plank positioning',\n 'select new plank positioning label': 'New plank positioning',\n 'undo available label': 'Click to undo previous action.',\n 'undo action label': 'Undo',\n 'undo action alt': 'Undo previous action',\n 'undo close label': 'Dismiss',\n 'error fallback message': 'Unable to open this object',\n 'plank heading fallback label': 'Untitled',\n 'actions menu label': 'Options',\n 'settings deck label': 'Disable deck',\n 'pending heading': 'Loading…',\n 'insert plank label': 'Open',\n 'resize label': 'Drag to resize',\n 'pin start label': 'Pin to the left sidebar',\n 'pin end label': 'Pin to the right sidebar',\n 'increment start label': 'Move to the left',\n 'increment end label': 'Move to the right',\n 'show deck plank label': 'Return to deck',\n 'show solo plank label': 'Maximize',\n 'exit fullscreen label': 'Exit fullscreen',\n 'show fullscreen plank label': 'Fullscreen',\n 'close label': 'Close',\n 'minify label': 'Minify',\n 'open companion label': 'Open companion',\n 'close companion label': 'Close companion',\n 'settings overscroll label': 'Plank scrolling',\n 'select overscroll placeholder': 'Select plank scrolling behavior',\n 'settings overscroll centering label': 'Centering',\n 'settings overscroll none label': 'None',\n 'settings enable statusbar label': 'Show status bar',\n 'settings enable deck label': 'Enable Deck',\n 'settings encapsulated planks label': 'Encapsulated planks',\n 'close current label': 'Close current plank',\n 'close others label': 'Close other planks',\n 'close all label': 'Close all planks',\n 'companion plank heading fallback label': 'Related',\n 'open item label': 'Open',\n },\n },\n },\n] as const satisfies Resource[];\n"],
5
- "mappings": ";;;;;;;;;;;;;AAIA,SAASA,qBAAqB;AAE9B,SAASC,iBAAiBC,kBAAkBC,cAAc;AAC1D,SAASC,qBAAqBC,iBAAiB;AAC/C,SAASC,gBAAgBC,yBAAyB;;;ACJlD,SAASC,kBAAkB;AAEpB,IAAMC,kBAAkBC,WAAWC,KAAK,mBAAmB,MAAM,OAAO,kCAAA,CAAA;;;ACF/E,SAASC,cAAAA,mBAAkB;AAEpB,IAAMC,iBAAiBC,YAAWC,KAAK,kBAAkB,MAAM,OAAO,iCAAA,CAAA;;;ACF7E,SAA0BC,cAAcC,mBAAmB;AAEpD,IAAMC,0BAAqDC,YAAYC,KAC5E,2BACA,MAAM,OAAO,mCAAA,CAAA;;;ACJf,SAASC,cAAAA,mBAAkB;AAEpB,IAAMC,YAAYC,YAAWC,KAAK,aAAa,MAAM,OAAO,2BAAA,CAAA;;;ACFnE,SAASC,cAAAA,mBAAkB;AAEpB,IAAMC,eAAeC,YAAWC,KAAK,gBAAgB,MAAM,OAAO,8BAAA,CAAA;;;ACFzE,SAASC,cAAAA,mBAAkB;AAEpB,IAAMC,eAAeC,YAAWC,KAAK,gBAAgB,MAAM,OAAO,yBAAA,CAAA;;;ACFzE,SAASC,cAAAA,mBAAkB;AAEpB,IAAMC,YAAYC,YAAWC,KAAK,aAAa,MAAM,OAAO,sBAAA,CAAA;;;ACFnE,SAASC,cAAAA,mBAAkB;AAEpB,IAAMC,UAAUC,YAAWC,KAAK,WAAW,MAAM,OAAO,wBAAA,CAAA;;;ACF/D,SAASC,cAAAA,mBAAkB;AAEpB,IAAMC,aAAaC,YAAWC,KAAK,cAAc,MAAM,OAAO,4BAAA,CAAA;;;ACE9D,IAAMC,eAAe;EAC1B;IACE,SAAS;MACP,CAACC,KAAKC,EAAE,GAAG;QACT,eAAe;QACf,kBAAkB;QAClB,qBAAqB;QACrB,iCAAiC;QACjC,qCAAqC;QACrC,oCAAoC;QACpC,qCAAqC;QACrC,iBAAiB;QACjB,+BAA+B;QAC/B,wBAAwB;QACxB,4BAA4B;QAC5B,gCACE;QACF,2BAA2B;QAC3B,6BAA6B;QAC7B,kCAAkC;QAClC,2CAA2C;QAC3C,yCAAyC;QACzC,4CAA4C;QAC5C,sCAAsC;QACtC,wBAAwB;QACxB,qBAAqB;QACrB,mBAAmB;QACnB,oBAAoB;QACpB,0BAA0B;QAC1B,gCAAgC;QAChC,sBAAsB;QACtB,uBAAuB;QACvB,mBAAmB;QACnB,sBAAsB;QACtB,gBAAgB;QAChB,mBAAmB;QACnB,iBAAiB;QACjB,yBAAyB;QACzB,uBAAuB;QACvB,yBAAyB;QACzB,yBAAyB;QACzB,yBAAyB;QACzB,+BAA+B;QAC/B,eAAe;QACf,gBAAgB;QAChB,wBAAwB;QACxB,yBAAyB;QACzB,6BAA6B;QAC7B,iCAAiC;QACjC,uCAAuC;QACvC,kCAAkC;QAClC,mCAAmC;QACnC,8BAA8B;QAC9B,sCAAsC;QACtC,uBAAuB;QACvB,sBAAsB;QACtB,mBAAmB;QACnB,0CAA0C;QAC1C,mBAAmB;MACrB;IACF;EACF;;;;AVzCFC,cAAc,KAAA;AAEP,IAAMC,aAAaC,OAAOC,OAAOC,IAAAA,EAAMC;EAC5CC,UAAUC,kBAAkB;IAAEC,UAAUC;EAAgB,CAAA;EACxDH,UAAUI,2BAA2B;IAAEF,UAAUG;EAAwB,CAAA;EACzEL,UAAUM,iBAAiB;IAAEJ,UAAUK;EAAa,CAAA;EACpDP,UAAUQ,sBAAsB;IAAEC,cAAc;SAAIA;SAAiBC;;EAAmB,CAAA;EACxFd,OAAOe,UAAU;IACfC,aAAaC,oBAAoBC;IACjCC,gBAAgB;MAACC,WAAWC;;IAC5Bf,UAAUgB;EACZ,CAAA;EACAtB,OAAOe,UAAU;IACfC,aAAaI,WAAWC;IACxBf,UAAUiB;EACZ,CAAA;EACAvB,OAAOe,UAAU;;;;IAIfC,aAAaQ,gBAAgBC,MAAMR,oBAAoBC,eAAeD,oBAAoBS,aAAa;IACvGP,gBAAgB;MAACF,oBAAoBU;MAAaP,WAAWQ;;IAC7DtB,UAAUuB;EACZ,CAAA;EACA7B,OAAOe,UAAU;IACfC,aAAac,iBAAiBC;IAC9BzB,UAAU0B;EACZ,CAAA;;;;;EAKAhC,OAAOe,UAAU;;IAEfC,aAAac,iBAAiBC;IAC9BzB,UAAU2B;EACZ,CAAA;EACAjC,OAAOe,UAAU;IACfC,aAAaQ,gBAAgBU,MAAMJ,iBAAiBK,uBAAuBf,WAAWQ,UAAU;IAChGtB,UAAU8B;EACZ,CAAA;EACApC,OAAOqC;AAAI;",
6
- "names": ["setAutoFreeze", "ActivationEvent", "ActivationEvents", "Plugin", "AppActivationEvents", "AppPlugin", "translations", "stackTranslations", "Capability", "AppGraphBuilder", "Capability", "lazy", "Capability", "CheckAppScheme", "Capability", "lazy", "Capability", "Capability$", "LayoutOperationResolver", "Capability$", "lazy", "Capability", "ReactRoot", "Capability", "lazy", "Capability", "ReactSurface", "Capability", "lazy", "Capability", "DeckSettings", "Capability", "lazy", "Capability", "DeckState", "Capability", "lazy", "Capability", "Toolkit", "Capability", "lazy", "Capability", "UrlHandler", "Capability", "lazy", "translations", "meta", "id", "setAutoFreeze", "DeckPlugin", "Plugin", "define", "meta", "pipe", "AppPlugin", "addAppGraphModule", "activate", "AppGraphBuilder", "addOperationResolverModule", "LayoutOperationResolver", "addSurfaceModule", "ReactSurface", "addTranslationsModule", "translations", "stackTranslations", "addModule", "activatesOn", "AppActivationEvents", "SetupSettings", "activatesAfter", "DeckEvents", "SettingsReady", "DeckSettings", "CheckAppScheme", "ActivationEvent", "oneOf", "SetupAppGraph", "LayoutReady", "StateReady", "DeckState", "ActivationEvents", "Startup", "ReactRoot", "Toolkit", "allOf", "OperationInvokerReady", "UrlHandler", "make"]
3
+ "sources": ["../../../src/DeckPlugin.ts", "../../../src/meta.ts", "../../../src/hooks/useBreakpoints.ts", "../../../src/hooks/useCompanions.ts", "../../../src/hooks/useDeckCompanions.ts", "../../../src/hooks/useDeckState.ts", "../../../src/hooks/useHoistStatusbar.ts", "../../../src/hooks/useMainSize.ts", "../../../src/hooks/useNodeActionExpander.ts", "../../../src/hooks/useSelectedCompanion.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { setAutoFreeze } from 'immer';\n\nimport { ActivationEvent, ActivationEvents, Plugin } from '@dxos/app-framework';\nimport { AppActivationEvents, AppPlugin } from '@dxos/app-toolkit';\nimport { translations as stackTranslations } from '@dxos/react-ui-stack/translations';\n\nimport {\n AppGraphBuilder,\n CheckAppScheme,\n DeckSettings,\n DeckState,\n OperationHandler,\n ReactRoot,\n ReactSurface,\n UrlHandler,\n} from '#capabilities';\nimport { meta } from '#meta';\nimport { translations } from '#translations';\nimport { DeckEvents } from '#types';\n\n// NOTE(Zan): When producing values with immer, we shouldn't auto-freeze them because\n// our signal implementation needs to add some hidden properties to the produced values.\n// TODO(Zan): Move this to a more global location if we use immer more broadly.\nsetAutoFreeze(false);\n\nexport const DeckPlugin = Plugin.define(meta).pipe(\n AppPlugin.addAppGraphModule({ activate: AppGraphBuilder }),\n AppPlugin.addOperationHandlerModule({ activate: OperationHandler }),\n AppPlugin.addSurfaceModule({ activate: ReactSurface }),\n AppPlugin.addTranslationsModule({ translations: [...translations, ...stackTranslations] }),\n Plugin.addModule({\n activatesOn: AppActivationEvents.SetupSettings,\n firesAfterActivation: [DeckEvents.SettingsReady],\n activate: DeckSettings,\n }),\n Plugin.addModule({\n activatesOn: ActivationEvent.allOf(DeckEvents.SettingsReady, ActivationEvents.OperationInvokerReady),\n activate: CheckAppScheme,\n }),\n Plugin.addModule({\n // TODO(wittjosiah): Does not integrate with settings store.\n // Should this be a different event?\n // Should settings store be renamed to be more generic?\n activatesOn: ActivationEvent.oneOf(AppActivationEvents.SetupSettings, AppActivationEvents.SetupAppGraph),\n firesAfterActivation: [AppActivationEvents.LayoutReady, DeckEvents.StateReady],\n activate: DeckState,\n }),\n Plugin.addModule({\n activatesOn: ActivationEvents.Startup,\n activate: ReactRoot,\n }),\n // Plugin.addModule({\n // activatesOn: Events.SetupArtifactDefinition,\n // activate: Tools,\n // }),\n Plugin.addModule({\n activatesOn: ActivationEvent.allOf(ActivationEvents.OperationInvokerReady, DeckEvents.StateReady),\n activate: UrlHandler,\n }),\n Plugin.make,\n);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Plugin } from '@dxos/app-framework';\nimport { trim } from '@dxos/util';\n\nexport const meta: Plugin.Meta = {\n id: 'org.dxos.plugin.deck',\n name: 'Layout',\n description: trim`\n Flexible layout system for arranging workspace views in tabs, splits, and panels.\n Customize your workspace organization with drag-and-drop layout management.\n `,\n icon: 'ph--layout--regular',\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useMediaQuery } from '@dxos/react-ui';\n\nexport const useBreakpoints = () => {\n const [isNotMobile] = useMediaQuery('md');\n const [isDesktop] = useMediaQuery('lg');\n return isDesktop ? 'desktop' : isNotMobile ? 'tablet' : 'mobile';\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { useAppGraph } from '@dxos/app-toolkit/ui';\nimport { useConnections } from '@dxos/plugin-graph';\nimport { byPosition } from '@dxos/util';\n\nimport { PLANK_COMPANION_TYPE } from '#types';\n\nexport const useCompanions = (id?: string) => {\n const { graph } = useAppGraph();\n const nodes = useConnections(graph, id, 'child');\n const companions = nodes.filter((node) => node.type === PLANK_COMPANION_TYPE);\n return useMemo(() => companions.toSorted((a, b) => byPosition(a.properties, b.properties)), [companions]);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useAppGraph } from '@dxos/app-toolkit/ui';\nimport { Node, type Node as NodeType } from '@dxos/plugin-graph';\nimport { useConnections } from '@dxos/plugin-graph';\nimport { type Label } from '@dxos/ui-types/translations';\nimport { type Position, byPosition } from '@dxos/util';\n\nimport { DECK_COMPANION_TYPE } from '#types';\n\nexport type DeckCompanion = NodeType.Node<\n any,\n {\n label: Label;\n icon: string;\n // TODO(burdon): Scroll area should be controlled by surface.\n /** If true, the panel will not be wrapped in a scroll area. */\n fixed?: boolean;\n position?: Position;\n joyride?: string;\n }\n>;\n\nexport const useDeckCompanions = (): DeckCompanion[] => {\n const { graph } = useAppGraph();\n const connections = useConnections(graph, Node.RootId, 'child');\n const companions = connections.filter((node) => node.type === DECK_COMPANION_TYPE) as DeckCompanion[];\n return companions.toSorted((a, b) => byPosition(a.properties, b.properties));\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useAtomValue } from '@effect-atom/atom-react';\nimport { useCallback, useMemo } from 'react';\n\nimport { Capabilities } from '@dxos/app-framework';\nimport { useCapability } from '@dxos/app-framework/ui';\nimport { invariant } from '@dxos/invariant';\n\nimport {\n DeckCapabilities,\n type EphemeralDeckState,\n type DeckPluginState,\n type DeckState,\n type StoredDeckState,\n} from '#types';\n\nexport type DeckStateHook = {\n /** Combined state value (reactive). Includes both persisted and ephemeral state. */\n state: DeckPluginState;\n /** The active deck, computed from decks[activeDeck]. */\n deck: DeckState;\n /** Update persisted state. */\n updateState: (fn: (current: StoredDeckState) => StoredDeckState) => void;\n /** Update ephemeral state. */\n updateEphemeral: (fn: (current: EphemeralDeckState) => EphemeralDeckState) => void;\n};\n\n/**\n * Hook to access the deck plugin state reactively.\n * Returns the combined state, the active deck, and update functions for each atom.\n */\nexport const useDeckState = (): DeckStateHook => {\n const registry = useCapability(Capabilities.AtomRegistry);\n const stateAtom = useCapability(DeckCapabilities.State);\n const ephemeralAtom = useCapability(DeckCapabilities.EphemeralState);\n const persistedState = useAtomValue(stateAtom);\n const ephemeralState = useAtomValue(ephemeralAtom);\n\n // Compute deck from decks[activeDeck] to ensure it's always current.\n const deck = useMemo(() => {\n const deck = persistedState.decks[persistedState.activeDeck];\n invariant(deck, `Deck not found: ${persistedState.activeDeck}`);\n return deck;\n }, [persistedState.decks, persistedState.activeDeck]);\n\n // Combine persisted and ephemeral state into a unified view.\n const state = useMemo(\n (): DeckPluginState => ({\n ...persistedState,\n ...ephemeralState,\n }),\n [persistedState, ephemeralState],\n );\n\n const updateState = useCallback(\n (fn: (current: StoredDeckState) => StoredDeckState) => {\n registry.set(stateAtom, fn(registry.get(stateAtom)));\n },\n [registry, stateAtom],\n );\n\n const updateEphemeral = useCallback(\n (fn: (current: EphemeralDeckState) => EphemeralDeckState) => {\n registry.set(ephemeralAtom, fn(registry.get(ephemeralAtom)));\n },\n [registry, ephemeralAtom],\n );\n\n return useMemo(() => ({ state, deck, updateState, updateEphemeral }), [state, deck, updateState, updateEphemeral]);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { useAtomCapability } from '@dxos/app-framework/ui';\nimport { useThemeContext } from '@dxos/react-ui';\n\nimport { DeckCapabilities, type LayoutMode } from '#types';\n\nexport const useHoistStatusbar = (breakpoint: string, layoutMode?: LayoutMode): boolean => {\n const { safeAreaPadding } = useThemeContext();\n const enableStatusbar = useAtomCapability(DeckCapabilities.Settings).enableStatusbar;\n\n return useMemo(() => {\n return (\n breakpoint === 'desktop' &&\n layoutMode !== 'solo--fullscreen' &&\n !!enableStatusbar &&\n safeAreaPadding?.bottom === 0\n );\n }, [enableStatusbar, breakpoint, safeAreaPadding?.bottom, layoutMode]);\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useMainContext } from '@dxos/react-ui';\n\nexport const useMainSize = () => {\n const { navigationSidebarState, complementarySidebarState } = useMainContext('DeckPluginPlank');\n return {\n 'data-sidebar-left-state': navigationSidebarState,\n 'data-sidebar-right-state': complementarySidebarState,\n };\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useEffect } from 'react';\n\nimport { Graph, type Node } from '@dxos/plugin-graph';\n\nexport const useNodeActionExpander = (node?: Node.Node) => {\n useEffect(() => {\n if (node) {\n const frame = requestAnimationFrame(() => {\n const graph = Graph.getGraph(node);\n void Graph.expand(graph, node.id, 'action');\n });\n return () => cancelAnimationFrame(frame);\n }\n }, [node]);\n};\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { type Node } from '@dxos/plugin-graph';\nimport { getLinkedVariant } from '@dxos/react-ui-attention';\n\n/**\n * Resolves which companion to show based on variant preference.\n * Falls back to first available if preferred variant not found.\n */\nexport const useSelectedCompanion = (companions: Node.Node[], preferredVariant?: string) => {\n return useMemo(() => {\n if (companions.length === 0) {\n return { companionId: undefined, variant: undefined };\n }\n\n // Try to find companion matching the preferred variant.\n if (preferredVariant) {\n const preferred = companions.find((companion) => getLinkedVariant(companion.id) === preferredVariant);\n if (preferred) {\n return { companionId: preferred.id, variant: getLinkedVariant(preferred.id) };\n }\n }\n\n // Fallback to first companion.\n const first = companions[0];\n return { companionId: first.id, variant: getLinkedVariant(first.id) };\n }, [companions, preferredVariant]);\n};\n"],
5
+ "mappings": ";;;;;;;AAIA,SAASA,qBAAqB;AAE9B,SAASC,iBAAiBC,kBAAkBC,cAAc;AAC1D,SAASC,qBAAqBC,iBAAiB;AAC/C,SAASC,gBAAgBC,yBAAyB;AAElD,SACEC,iBACAC,gBACAC,cACAC,WACAC,kBACAC,WACAC,cACAC,kBACK;AACP,SAASC,YAAY;AACrB,SAASV,oBAAoB;AAC7B,SAASW,cAAAA,mBAAkB;AAK3BjB,cAAc,KAAA;AAEP,IAAMkB,aAAaf,OAAOgB,OAAOH,IAAAA,EAAMI;EAC5Cf,UAAUgB,kBAAkB;IAAEC,UAAUd;EAAgB,CAAA;EACxDH,UAAUkB,0BAA0B;IAAED,UAAUV;EAAiB,CAAA;EACjEP,UAAUmB,iBAAiB;IAAEF,UAAUR;EAAa,CAAA;EACpDT,UAAUoB,sBAAsB;IAAEnB,cAAc;SAAIA;SAAiBC;;EAAmB,CAAA;EACxFJ,OAAOuB,UAAU;IACfC,aAAavB,oBAAoBwB;IACjCC,sBAAsB;MAACZ,YAAWa;;IAClCR,UAAUZ;EACZ,CAAA;EACAP,OAAOuB,UAAU;IACfC,aAAa1B,gBAAgB8B,MAAMd,YAAWa,eAAe5B,iBAAiB8B,qBAAqB;IACnGV,UAAUb;EACZ,CAAA;EACAN,OAAOuB,UAAU;;;;IAIfC,aAAa1B,gBAAgBgC,MAAM7B,oBAAoBwB,eAAexB,oBAAoB8B,aAAa;IACvGL,sBAAsB;MAACzB,oBAAoB+B;MAAalB,YAAWmB;;IACnEd,UAAUX;EACZ,CAAA;EACAR,OAAOuB,UAAU;IACfC,aAAazB,iBAAiBmC;IAC9Bf,UAAUT;EACZ,CAAA;;;;;EAKAV,OAAOuB,UAAU;IACfC,aAAa1B,gBAAgB8B,MAAM7B,iBAAiB8B,uBAAuBf,YAAWmB,UAAU;IAChGd,UAAUP;EACZ,CAAA;EACAZ,OAAOmC;AAAI;;;AC1Db,SAASC,YAAY;AAEd,IAAMC,QAAoB;EAC/BC,IAAI;EACJC,MAAM;EACNC,aAAaJ;;;;EAIbK,MAAM;AACR;;;ACXA,SAASC,qBAAqB;;;ACA9B,SAASC,eAAe;AAExB,SAASC,mBAAmB;AAC5B,SAASC,sBAAsB;AAC/B,SAASC,kBAAkB;AAE3B,SAASC,4BAA4B;AAE9B,IAAMC,gBAAgB,CAACC,OAAAA;AAC5B,QAAM,EAAEC,MAAK,IAAKN,YAAAA;AAClB,QAAMO,QAAQN,eAAeK,OAAOD,IAAI,OAAA;AACxC,QAAMG,aAAaD,MAAME,OAAO,CAACC,SAASA,KAAKC,SAASR,oBAAAA;AACxD,SAAOJ,QAAQ,MAAMS,WAAWI,SAAS,CAACC,GAAGC,MAAMZ,WAAWW,EAAEE,YAAYD,EAAEC,UAAU,CAAA,GAAI;IAACP;GAAW;AAC1G;;;ACbA,SAASQ,eAAAA,oBAAmB;AAC5B,SAASC,YAAmC;AAC5C,SAASC,kBAAAA,uBAAsB;AAE/B,SAAwBC,cAAAA,mBAAkB;AAE1C,SAASC,2BAA2B;;;ACNpC,SAASC,oBAAoB;AAC7B,SAASC,aAAaC,WAAAA,gBAAe;AAErC,SAASC,oBAAoB;AAC7B,SAASC,qBAAqB;AAC9B,SAASC,iBAAiB;AAE1B,SACEC,oBAAAA,yBAKK;;;ACbP,SAASC,WAAAA,gBAAe;AAExB,SAASC,yBAAyB;AAClC,SAASC,uBAAuB;AAEhC,SAASC,oBAAAA,yBAAyC;;;ACLlD,SAASC,sBAAsB;;;ACA/B,SAASC,iBAAiB;AAE1B,SAASC,aAAwB;;;ACFjC,SAASC,WAAAA,gBAAe;AAGxB,SAASC,wBAAwB;",
6
+ "names": ["setAutoFreeze", "ActivationEvent", "ActivationEvents", "Plugin", "AppActivationEvents", "AppPlugin", "translations", "stackTranslations", "AppGraphBuilder", "CheckAppScheme", "DeckSettings", "DeckState", "OperationHandler", "ReactRoot", "ReactSurface", "UrlHandler", "meta", "DeckEvents", "DeckPlugin", "define", "pipe", "addAppGraphModule", "activate", "addOperationHandlerModule", "addSurfaceModule", "addTranslationsModule", "addModule", "activatesOn", "SetupSettings", "firesAfterActivation", "SettingsReady", "allOf", "OperationInvokerReady", "oneOf", "SetupAppGraph", "LayoutReady", "StateReady", "Startup", "make", "trim", "meta", "id", "name", "description", "icon", "useMediaQuery", "useMemo", "useAppGraph", "useConnections", "byPosition", "PLANK_COMPANION_TYPE", "useCompanions", "id", "graph", "nodes", "companions", "filter", "node", "type", "toSorted", "a", "b", "properties", "useAppGraph", "Node", "useConnections", "byPosition", "DECK_COMPANION_TYPE", "useAtomValue", "useCallback", "useMemo", "Capabilities", "useCapability", "invariant", "DeckCapabilities", "useMemo", "useAtomCapability", "useThemeContext", "DeckCapabilities", "useMainContext", "useEffect", "Graph", "useMemo", "getLinkedVariant"]
7
7
  }