@dxos/plugin-deck 0.8.4-main.70d3990 → 0.8.4-main.7996785055

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 (468) hide show
  1. package/dist/lib/browser/Banner-TJ4ZQ7A6.mjs +16 -0
  2. package/dist/lib/browser/Banner-TJ4ZQ7A6.mjs.map +7 -0
  3. package/dist/lib/browser/DeckSettings-CZ3KWAXT.mjs +96 -0
  4. package/dist/lib/browser/DeckSettings-CZ3KWAXT.mjs.map +7 -0
  5. package/dist/lib/browser/add-toast-XOLZDESF.mjs +24 -0
  6. package/dist/lib/browser/add-toast-XOLZDESF.mjs.map +7 -0
  7. package/dist/lib/browser/adjust-N4YCWW3J.mjs +96 -0
  8. package/dist/lib/browser/adjust-N4YCWW3J.mjs.map +7 -0
  9. package/dist/lib/browser/app-graph-builder-34HXGUI2.mjs +123 -0
  10. package/dist/lib/browser/app-graph-builder-34HXGUI2.mjs.map +7 -0
  11. package/dist/lib/browser/change-companion-ONLIPI6F.mjs +34 -0
  12. package/dist/lib/browser/change-companion-ONLIPI6F.mjs.map +7 -0
  13. package/dist/lib/browser/check-app-scheme-72BBQSF6.mjs +33 -0
  14. package/dist/lib/browser/check-app-scheme-72BBQSF6.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-26ZKVZIN.mjs +112 -0
  16. package/dist/lib/browser/chunk-26ZKVZIN.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-4RO3FRCR.mjs +187 -0
  18. package/dist/lib/browser/chunk-4RO3FRCR.mjs.map +7 -0
  19. package/dist/lib/browser/chunk-4TLX2UGY.mjs +88 -0
  20. package/dist/lib/browser/chunk-4TLX2UGY.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-J6OERAED.mjs +69 -0
  22. package/dist/lib/browser/chunk-J6OERAED.mjs.map +7 -0
  23. package/dist/lib/browser/chunk-PPM7LZSC.mjs +8 -0
  24. package/dist/lib/browser/chunk-PPM7LZSC.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-RCLJGMR7.mjs +1417 -0
  26. package/dist/lib/browser/chunk-RCLJGMR7.mjs.map +7 -0
  27. package/dist/lib/browser/{chunk-UXLU6CMW.mjs → chunk-UN7XQWDE.mjs} +9 -2
  28. package/dist/lib/browser/chunk-UN7XQWDE.mjs.map +7 -0
  29. package/dist/lib/browser/{chunk-F3VCCHVL.mjs → chunk-WZXKWTDN.mjs} +74 -35
  30. package/dist/lib/browser/chunk-WZXKWTDN.mjs.map +7 -0
  31. package/dist/lib/browser/chunk-YAAXLCVX.mjs +30 -0
  32. package/dist/lib/browser/chunk-YAAXLCVX.mjs.map +7 -0
  33. package/dist/lib/browser/close-SPUQQH2F.mjs +44 -0
  34. package/dist/lib/browser/close-SPUQQH2F.mjs.map +7 -0
  35. package/dist/lib/browser/index.mjs +76 -75
  36. package/dist/lib/browser/index.mjs.map +4 -4
  37. package/dist/lib/browser/meta.json +1 -1
  38. package/dist/lib/browser/open-2DK2GFUW.mjs +95 -0
  39. package/dist/lib/browser/open-2DK2GFUW.mjs.map +7 -0
  40. package/dist/lib/browser/operation-handler-ETCDHJUK.mjs +16 -0
  41. package/dist/lib/browser/operation-handler-ETCDHJUK.mjs.map +7 -0
  42. package/dist/lib/browser/operations/index.mjs +12 -0
  43. package/dist/lib/browser/react-root-2IXL32LF.mjs +50 -0
  44. package/dist/lib/browser/react-root-2IXL32LF.mjs.map +7 -0
  45. package/dist/lib/browser/react-surface-LMALTBUM.mjs +44 -0
  46. package/dist/lib/browser/react-surface-LMALTBUM.mjs.map +7 -0
  47. package/dist/lib/browser/revert-workspace-NIXRKBAQ.mjs +21 -0
  48. package/dist/lib/browser/revert-workspace-NIXRKBAQ.mjs.map +7 -0
  49. package/dist/lib/browser/scroll-into-view-QUORIGE3.mjs +21 -0
  50. package/dist/lib/browser/scroll-into-view-QUORIGE3.mjs.map +7 -0
  51. package/dist/lib/browser/set-GKTHE4IZ.mjs +37 -0
  52. package/dist/lib/browser/set-GKTHE4IZ.mjs.map +7 -0
  53. package/dist/lib/browser/set-layout-mode-TRWCEJAO.mjs +91 -0
  54. package/dist/lib/browser/set-layout-mode-TRWCEJAO.mjs.map +7 -0
  55. package/dist/lib/browser/settings-3MYJVL5V.mjs +40 -0
  56. package/dist/lib/browser/settings-3MYJVL5V.mjs.map +7 -0
  57. package/dist/lib/browser/show-undo-OSWJQUSO.mjs +60 -0
  58. package/dist/lib/browser/show-undo-OSWJQUSO.mjs.map +7 -0
  59. package/dist/lib/browser/state-CFEZH3DH.mjs +100 -0
  60. package/dist/lib/browser/state-CFEZH3DH.mjs.map +7 -0
  61. package/dist/lib/browser/switch-workspace-JXIYKYFR.mjs +68 -0
  62. package/dist/lib/browser/switch-workspace-JXIYKYFR.mjs.map +7 -0
  63. package/dist/lib/browser/types/index.mjs +12 -8
  64. package/dist/lib/browser/update-complementary-IDQANYVM.mjs +28 -0
  65. package/dist/lib/browser/update-complementary-IDQANYVM.mjs.map +7 -0
  66. package/dist/lib/browser/update-dialog-LEF6XOAA.mjs +29 -0
  67. package/dist/lib/browser/update-dialog-LEF6XOAA.mjs.map +7 -0
  68. package/dist/lib/browser/update-plank-size-VMGJQJKT.mjs +28 -0
  69. package/dist/lib/browser/update-plank-size-VMGJQJKT.mjs.map +7 -0
  70. package/dist/lib/browser/update-popover-HLFD3DXD.mjs +33 -0
  71. package/dist/lib/browser/update-popover-HLFD3DXD.mjs.map +7 -0
  72. package/dist/lib/browser/update-sidebar-NJ3PB2Z4.mjs +25 -0
  73. package/dist/lib/browser/update-sidebar-NJ3PB2Z4.mjs.map +7 -0
  74. package/dist/lib/browser/url-handler-2QE6C6KP.mjs +106 -0
  75. package/dist/lib/browser/url-handler-2QE6C6KP.mjs.map +7 -0
  76. package/dist/lib/node-esm/Banner-3Y6W3VK3.mjs +17 -0
  77. package/dist/lib/node-esm/Banner-3Y6W3VK3.mjs.map +7 -0
  78. package/dist/lib/node-esm/DeckSettings-ULPBDAT3.mjs +97 -0
  79. package/dist/lib/node-esm/DeckSettings-ULPBDAT3.mjs.map +7 -0
  80. package/dist/lib/node-esm/add-toast-HQEPHXHX.mjs +25 -0
  81. package/dist/lib/node-esm/add-toast-HQEPHXHX.mjs.map +7 -0
  82. package/dist/lib/node-esm/adjust-MR6Z7HI3.mjs +97 -0
  83. package/dist/lib/node-esm/adjust-MR6Z7HI3.mjs.map +7 -0
  84. package/dist/lib/node-esm/app-graph-builder-4BD6BABT.mjs +124 -0
  85. package/dist/lib/node-esm/app-graph-builder-4BD6BABT.mjs.map +7 -0
  86. package/dist/lib/node-esm/change-companion-JJ6MFJYZ.mjs +35 -0
  87. package/dist/lib/node-esm/change-companion-JJ6MFJYZ.mjs.map +7 -0
  88. package/dist/lib/node-esm/check-app-scheme-NNJD4MJ3.mjs +34 -0
  89. package/dist/lib/node-esm/check-app-scheme-NNJD4MJ3.mjs.map +7 -0
  90. package/dist/lib/node-esm/chunk-2K2OUSFN.mjs +10 -0
  91. package/dist/lib/node-esm/chunk-2K2OUSFN.mjs.map +7 -0
  92. package/dist/lib/node-esm/chunk-3QUPGLN4.mjs +188 -0
  93. package/dist/lib/node-esm/chunk-3QUPGLN4.mjs.map +7 -0
  94. package/dist/lib/node-esm/chunk-4EIUXR64.mjs +71 -0
  95. package/dist/lib/node-esm/chunk-4EIUXR64.mjs.map +7 -0
  96. package/dist/lib/node-esm/chunk-4NLQZESJ.mjs +89 -0
  97. package/dist/lib/node-esm/chunk-4NLQZESJ.mjs.map +7 -0
  98. package/dist/lib/node-esm/chunk-CMISPQAO.mjs +24 -0
  99. package/dist/lib/node-esm/chunk-CMISPQAO.mjs.map +7 -0
  100. package/dist/lib/node-esm/chunk-HM4KJZ6L.mjs +1418 -0
  101. package/dist/lib/node-esm/chunk-HM4KJZ6L.mjs.map +7 -0
  102. package/dist/lib/node-esm/chunk-J2AFCKMH.mjs +202 -0
  103. package/dist/lib/node-esm/chunk-J2AFCKMH.mjs.map +7 -0
  104. package/dist/lib/node-esm/chunk-WD6BJV6B.mjs +32 -0
  105. package/dist/lib/node-esm/chunk-WD6BJV6B.mjs.map +7 -0
  106. package/dist/lib/node-esm/chunk-YYXVVZSS.mjs +114 -0
  107. package/dist/lib/node-esm/chunk-YYXVVZSS.mjs.map +7 -0
  108. package/dist/lib/node-esm/close-FWQQ3IH2.mjs +45 -0
  109. package/dist/lib/node-esm/close-FWQQ3IH2.mjs.map +7 -0
  110. package/dist/lib/node-esm/index.mjs +176 -0
  111. package/dist/lib/node-esm/index.mjs.map +7 -0
  112. package/dist/lib/node-esm/meta.json +1 -0
  113. package/dist/lib/node-esm/open-FCSJ42AD.mjs +96 -0
  114. package/dist/lib/node-esm/open-FCSJ42AD.mjs.map +7 -0
  115. package/dist/lib/node-esm/operation-handler-A3FWOT4M.mjs +17 -0
  116. package/dist/lib/node-esm/operation-handler-A3FWOT4M.mjs.map +7 -0
  117. package/dist/lib/node-esm/operations/index.mjs +13 -0
  118. package/dist/lib/node-esm/operations/index.mjs.map +7 -0
  119. package/dist/lib/node-esm/react-root-44EZV4V7.mjs +51 -0
  120. package/dist/lib/node-esm/react-root-44EZV4V7.mjs.map +7 -0
  121. package/dist/lib/node-esm/react-surface-KFFPAGAC.mjs +45 -0
  122. package/dist/lib/node-esm/react-surface-KFFPAGAC.mjs.map +7 -0
  123. package/dist/lib/node-esm/revert-workspace-APB6WY3W.mjs +22 -0
  124. package/dist/lib/node-esm/revert-workspace-APB6WY3W.mjs.map +7 -0
  125. package/dist/lib/node-esm/scroll-into-view-YZVRLJKB.mjs +22 -0
  126. package/dist/lib/node-esm/scroll-into-view-YZVRLJKB.mjs.map +7 -0
  127. package/dist/lib/node-esm/set-WSNRQ3DI.mjs +38 -0
  128. package/dist/lib/node-esm/set-WSNRQ3DI.mjs.map +7 -0
  129. package/dist/lib/node-esm/set-layout-mode-LGAF5R4U.mjs +92 -0
  130. package/dist/lib/node-esm/set-layout-mode-LGAF5R4U.mjs.map +7 -0
  131. package/dist/lib/node-esm/settings-77JXSDLC.mjs +41 -0
  132. package/dist/lib/node-esm/settings-77JXSDLC.mjs.map +7 -0
  133. package/dist/lib/node-esm/show-undo-R3LATVTS.mjs +61 -0
  134. package/dist/lib/node-esm/show-undo-R3LATVTS.mjs.map +7 -0
  135. package/dist/lib/node-esm/state-I3LRM7SB.mjs +101 -0
  136. package/dist/lib/node-esm/state-I3LRM7SB.mjs.map +7 -0
  137. package/dist/lib/node-esm/switch-workspace-FKZT6EL4.mjs +69 -0
  138. package/dist/lib/node-esm/switch-workspace-FKZT6EL4.mjs.map +7 -0
  139. package/dist/lib/node-esm/types/index.mjs +37 -0
  140. package/dist/lib/node-esm/types/index.mjs.map +7 -0
  141. package/dist/lib/node-esm/update-complementary-KVLJTKK3.mjs +29 -0
  142. package/dist/lib/node-esm/update-complementary-KVLJTKK3.mjs.map +7 -0
  143. package/dist/lib/node-esm/update-dialog-EXY2PCHT.mjs +30 -0
  144. package/dist/lib/node-esm/update-dialog-EXY2PCHT.mjs.map +7 -0
  145. package/dist/lib/node-esm/update-plank-size-67U7Z5VK.mjs +29 -0
  146. package/dist/lib/node-esm/update-plank-size-67U7Z5VK.mjs.map +7 -0
  147. package/dist/lib/node-esm/update-popover-MDOZNY2D.mjs +34 -0
  148. package/dist/lib/node-esm/update-popover-MDOZNY2D.mjs.map +7 -0
  149. package/dist/lib/node-esm/update-sidebar-5LEWTTGW.mjs +26 -0
  150. package/dist/lib/node-esm/update-sidebar-5LEWTTGW.mjs.map +7 -0
  151. package/dist/lib/node-esm/url-handler-WSC5K5ME.mjs +107 -0
  152. package/dist/lib/node-esm/url-handler-WSC5K5ME.mjs.map +7 -0
  153. package/dist/types/src/DeckPlugin.d.ts +2 -1
  154. package/dist/types/src/DeckPlugin.d.ts.map +1 -1
  155. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +6 -0
  156. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -0
  157. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +3 -0
  158. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +1 -0
  159. package/dist/types/src/capabilities/check-app-scheme/check-app-scheme.d.ts +5 -0
  160. package/dist/types/src/capabilities/check-app-scheme/check-app-scheme.d.ts.map +1 -0
  161. package/dist/types/src/capabilities/check-app-scheme/index.d.ts +3 -0
  162. package/dist/types/src/capabilities/check-app-scheme/index.d.ts.map +1 -0
  163. package/dist/types/src/capabilities/index.d.ts +7 -13
  164. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  165. package/dist/types/src/capabilities/operation-handler/index.d.ts +4 -0
  166. package/dist/types/src/capabilities/operation-handler/index.d.ts.map +1 -0
  167. package/dist/types/src/capabilities/operation-handler/operation-handler.d.ts +6 -0
  168. package/dist/types/src/capabilities/operation-handler/operation-handler.d.ts.map +1 -0
  169. package/dist/types/src/capabilities/react-root/index.d.ts +6 -0
  170. package/dist/types/src/capabilities/react-root/index.d.ts.map +1 -0
  171. package/dist/types/src/capabilities/react-root/react-root.d.ts +9 -0
  172. package/dist/types/src/capabilities/react-root/react-root.d.ts.map +1 -0
  173. package/dist/types/src/capabilities/react-surface/index.d.ts +3 -0
  174. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -0
  175. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +5 -0
  176. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -0
  177. package/dist/types/src/capabilities/settings/index.d.ts +19 -0
  178. package/dist/types/src/capabilities/settings/index.d.ts.map +1 -0
  179. package/dist/types/src/capabilities/settings/settings.d.ts +22 -0
  180. package/dist/types/src/capabilities/settings/settings.d.ts.map +1 -0
  181. package/dist/types/src/capabilities/state/index.d.ts +172 -0
  182. package/dist/types/src/capabilities/state/index.d.ts.map +1 -0
  183. package/dist/types/src/capabilities/state/state.d.ts +175 -0
  184. package/dist/types/src/capabilities/state/state.d.ts.map +1 -0
  185. package/dist/types/src/capabilities/tools/index.d.ts +3 -0
  186. package/dist/types/src/capabilities/tools/index.d.ts.map +1 -0
  187. package/dist/types/src/capabilities/tools/tools.d.ts +12 -0
  188. package/dist/types/src/capabilities/tools/tools.d.ts.map +1 -0
  189. package/dist/types/src/capabilities/url-handler/index.d.ts +3 -0
  190. package/dist/types/src/capabilities/url-handler/index.d.ts.map +1 -0
  191. package/dist/types/src/capabilities/url-handler/url-handler.d.ts +5 -0
  192. package/dist/types/src/capabilities/url-handler/url-handler.d.ts.map +1 -0
  193. package/dist/types/src/components/DeckLayout/ActiveNode.d.ts.map +1 -1
  194. package/dist/types/src/components/DeckLayout/ContentEmpty.d.ts.map +1 -1
  195. package/dist/types/src/components/DeckLayout/DeckLayout.d.ts.map +1 -1
  196. package/dist/types/src/components/DeckLayout/DeckLayout.stories.d.ts +1 -0
  197. package/dist/types/src/components/DeckLayout/DeckLayout.stories.d.ts.map +1 -1
  198. package/dist/types/src/components/DeckLayout/DeckMain.d.ts.map +1 -1
  199. package/dist/types/src/components/DeckLayout/Dialog.d.ts.map +1 -1
  200. package/dist/types/src/components/DeckLayout/Fallback.d.ts.map +1 -1
  201. package/dist/types/src/components/DeckLayout/Popover.d.ts.map +1 -1
  202. package/dist/types/src/components/DeckLayout/Toast.d.ts +3 -3
  203. package/dist/types/src/components/DeckLayout/Toast.d.ts.map +1 -1
  204. package/dist/types/src/components/Plank/Plank.d.ts +5 -5
  205. package/dist/types/src/components/Plank/Plank.d.ts.map +1 -1
  206. package/dist/types/src/components/Plank/Plank.stories.d.ts +25 -6
  207. package/dist/types/src/components/Plank/Plank.stories.d.ts.map +1 -1
  208. package/dist/types/src/components/Plank/PlankControls.d.ts +1 -1
  209. package/dist/types/src/components/Plank/PlankControls.d.ts.map +1 -1
  210. package/dist/types/src/components/Plank/PlankError.d.ts +7 -5
  211. package/dist/types/src/components/Plank/PlankError.d.ts.map +1 -1
  212. package/dist/types/src/components/Plank/PlankHeading.d.ts +2 -2
  213. package/dist/types/src/components/Plank/PlankHeading.d.ts.map +1 -1
  214. package/dist/types/src/components/Sidebar/ComplementarySidebar.d.ts.map +1 -1
  215. package/dist/types/src/components/Sidebar/Sidebar.d.ts.map +1 -1
  216. package/dist/types/src/components/Sidebar/SidebarButton.d.ts.map +1 -1
  217. package/dist/types/src/components/fragments.d.ts +4 -1
  218. package/dist/types/src/components/fragments.d.ts.map +1 -1
  219. package/dist/types/src/components/index.d.ts +0 -1
  220. package/dist/types/src/components/index.d.ts.map +1 -1
  221. package/dist/types/src/containers/Banner/Banner.d.ts +2 -0
  222. package/dist/types/src/containers/Banner/Banner.d.ts.map +1 -0
  223. package/dist/types/src/containers/Banner/index.d.ts +3 -0
  224. package/dist/types/src/containers/Banner/index.d.ts.map +1 -0
  225. package/dist/types/src/containers/DeckSettings/DeckSettings.d.ts +8 -0
  226. package/dist/types/src/containers/DeckSettings/DeckSettings.d.ts.map +1 -0
  227. package/dist/types/src/containers/DeckSettings/index.d.ts +3 -0
  228. package/dist/types/src/containers/DeckSettings/index.d.ts.map +1 -0
  229. package/dist/types/src/containers/index.d.ts +4 -0
  230. package/dist/types/src/containers/index.d.ts.map +1 -0
  231. package/dist/types/src/hooks/index.d.ts +2 -0
  232. package/dist/types/src/hooks/index.d.ts.map +1 -1
  233. package/dist/types/src/hooks/useDeckCompanions.d.ts +3 -4
  234. package/dist/types/src/hooks/useDeckCompanions.d.ts.map +1 -1
  235. package/dist/types/src/hooks/useDeckState.d.ts +17 -0
  236. package/dist/types/src/hooks/useDeckState.d.ts.map +1 -0
  237. package/dist/types/src/hooks/useHoistStatusbar.d.ts +1 -1
  238. package/dist/types/src/hooks/useHoistStatusbar.d.ts.map +1 -1
  239. package/dist/types/src/hooks/useMainSize.d.ts +2 -2
  240. package/dist/types/src/hooks/useNodeActionExpander.d.ts +1 -1
  241. package/dist/types/src/hooks/useNodeActionExpander.d.ts.map +1 -1
  242. package/dist/types/src/hooks/useSelectedCompanion.d.ts +13 -0
  243. package/dist/types/src/hooks/useSelectedCompanion.d.ts.map +1 -0
  244. package/dist/types/src/index.d.ts +1 -2
  245. package/dist/types/src/index.d.ts.map +1 -1
  246. package/dist/types/src/layout.d.ts +1 -7
  247. package/dist/types/src/layout.d.ts.map +1 -1
  248. package/dist/types/src/meta.d.ts +2 -2
  249. package/dist/types/src/meta.d.ts.map +1 -1
  250. package/dist/types/src/operations/add-toast.d.ts +5 -0
  251. package/dist/types/src/operations/add-toast.d.ts.map +1 -0
  252. package/dist/types/src/operations/adjust.d.ts +5 -0
  253. package/dist/types/src/operations/adjust.d.ts.map +1 -0
  254. package/dist/types/src/operations/change-companion.d.ts +5 -0
  255. package/dist/types/src/operations/change-companion.d.ts.map +1 -0
  256. package/dist/types/src/operations/close.d.ts +5 -0
  257. package/dist/types/src/operations/close.d.ts.map +1 -0
  258. package/dist/types/src/operations/definitions.d.ts +18 -0
  259. package/dist/types/src/operations/definitions.d.ts.map +1 -0
  260. package/dist/types/src/operations/helpers.d.ts +3 -0
  261. package/dist/types/src/operations/helpers.d.ts.map +1 -0
  262. package/dist/types/src/operations/index.d.ts +4 -0
  263. package/dist/types/src/operations/index.d.ts.map +1 -0
  264. package/dist/types/src/operations/open.d.ts +5 -0
  265. package/dist/types/src/operations/open.d.ts.map +1 -0
  266. package/dist/types/src/operations/revert-workspace.d.ts +5 -0
  267. package/dist/types/src/operations/revert-workspace.d.ts.map +1 -0
  268. package/dist/types/src/operations/scroll-into-view.d.ts +5 -0
  269. package/dist/types/src/operations/scroll-into-view.d.ts.map +1 -0
  270. package/dist/types/src/operations/set-layout-mode.d.ts +5 -0
  271. package/dist/types/src/operations/set-layout-mode.d.ts.map +1 -0
  272. package/dist/types/src/operations/set.d.ts +5 -0
  273. package/dist/types/src/operations/set.d.ts.map +1 -0
  274. package/dist/types/src/operations/show-undo.d.ts +5 -0
  275. package/dist/types/src/operations/show-undo.d.ts.map +1 -0
  276. package/dist/types/src/operations/switch-workspace.d.ts +5 -0
  277. package/dist/types/src/operations/switch-workspace.d.ts.map +1 -0
  278. package/dist/types/src/operations/update-complementary.d.ts +5 -0
  279. package/dist/types/src/operations/update-complementary.d.ts.map +1 -0
  280. package/dist/types/src/operations/update-dialog.d.ts +5 -0
  281. package/dist/types/src/operations/update-dialog.d.ts.map +1 -0
  282. package/dist/types/src/operations/update-plank-size.d.ts +5 -0
  283. package/dist/types/src/operations/update-plank-size.d.ts.map +1 -0
  284. package/dist/types/src/operations/update-popover.d.ts +5 -0
  285. package/dist/types/src/operations/update-popover.d.ts.map +1 -0
  286. package/dist/types/src/operations/update-sidebar.d.ts +5 -0
  287. package/dist/types/src/operations/update-sidebar.d.ts.map +1 -0
  288. package/dist/types/src/translations.d.ts +1 -0
  289. package/dist/types/src/translations.d.ts.map +1 -1
  290. package/dist/types/src/{capabilities → types}/capabilities.d.ts +96 -90
  291. package/dist/types/src/types/capabilities.d.ts.map +1 -0
  292. package/dist/types/src/types/events.d.ts +7 -0
  293. package/dist/types/src/types/events.d.ts.map +1 -0
  294. package/dist/types/src/types/index.d.ts +2 -0
  295. package/dist/types/src/types/index.d.ts.map +1 -1
  296. package/dist/types/src/types/schema.d.ts +40 -38
  297. package/dist/types/src/types/schema.d.ts.map +1 -1
  298. package/dist/types/src/util/index.d.ts +1 -0
  299. package/dist/types/src/util/index.d.ts.map +1 -1
  300. package/dist/types/src/util/sanitize-persisted-state.d.ts +19 -0
  301. package/dist/types/src/util/sanitize-persisted-state.d.ts.map +1 -0
  302. package/dist/types/src/util/sanitize-persisted-state.test.d.ts +2 -0
  303. package/dist/types/src/util/sanitize-persisted-state.test.d.ts.map +1 -0
  304. package/dist/types/src/util/set-active.d.ts +18 -3
  305. package/dist/types/src/util/set-active.d.ts.map +1 -1
  306. package/dist/types/src/util/set-active.test.d.ts +2 -0
  307. package/dist/types/src/util/set-active.test.d.ts.map +1 -0
  308. package/dist/types/tsconfig.tsbuildinfo +1 -1
  309. package/package.json +69 -49
  310. package/src/DeckPlugin.ts +26 -52
  311. package/src/capabilities/app-graph-builder/app-graph-builder.ts +119 -0
  312. package/src/capabilities/app-graph-builder/index.ts +7 -0
  313. package/src/capabilities/check-app-scheme/check-app-scheme.ts +45 -0
  314. package/src/capabilities/check-app-scheme/index.ts +7 -0
  315. package/src/capabilities/index.ts +8 -14
  316. package/src/capabilities/operation-handler/index.ts +11 -0
  317. package/src/capabilities/operation-handler/operation-handler.ts +16 -0
  318. package/src/capabilities/react-root/index.ts +7 -0
  319. package/src/capabilities/react-root/react-root.tsx +47 -0
  320. package/src/capabilities/react-surface/index.ts +7 -0
  321. package/src/capabilities/react-surface/react-surface.tsx +38 -0
  322. package/src/capabilities/settings/index.ts +7 -0
  323. package/src/capabilities/settings/settings.ts +39 -0
  324. package/src/capabilities/state/index.ts +7 -0
  325. package/src/capabilities/state/state.ts +97 -0
  326. package/src/capabilities/tools/index.ts +7 -0
  327. package/src/capabilities/tools/tools.ts +91 -0
  328. package/src/capabilities/url-handler/index.ts +7 -0
  329. package/src/capabilities/url-handler/url-handler.ts +108 -0
  330. package/src/components/DeckLayout/ActiveNode.tsx +3 -2
  331. package/src/components/DeckLayout/Banner.tsx +9 -9
  332. package/src/components/DeckLayout/ContentEmpty.tsx +5 -6
  333. package/src/components/DeckLayout/DeckLayout.stories.tsx +20 -31
  334. package/src/components/DeckLayout/DeckLayout.tsx +13 -11
  335. package/src/components/DeckLayout/DeckMain.tsx +65 -59
  336. package/src/components/DeckLayout/Dialog.tsx +22 -13
  337. package/src/components/DeckLayout/Fallback.tsx +2 -6
  338. package/src/components/DeckLayout/Popover.tsx +83 -22
  339. package/src/components/DeckLayout/StatusBar.tsx +4 -4
  340. package/src/components/DeckLayout/Toast.tsx +4 -4
  341. package/src/components/Plank/Plank.stories.tsx +18 -9
  342. package/src/components/Plank/Plank.tsx +41 -38
  343. package/src/components/Plank/PlankControls.tsx +9 -11
  344. package/src/components/Plank/PlankError.tsx +49 -19
  345. package/src/components/Plank/PlankHeading.tsx +41 -46
  346. package/src/components/Plank/PlankLoading.tsx +1 -1
  347. package/src/components/Sidebar/ComplementarySidebar.tsx +78 -86
  348. package/src/components/Sidebar/Sidebar.tsx +7 -7
  349. package/src/components/Sidebar/SidebarButton.tsx +31 -26
  350. package/src/components/fragments.ts +10 -5
  351. package/src/components/index.ts +0 -1
  352. package/src/containers/Banner/Banner.tsx +5 -0
  353. package/src/containers/Banner/index.ts +7 -0
  354. package/src/{components → containers}/DeckSettings/DeckSettings.tsx +41 -31
  355. package/src/containers/DeckSettings/index.ts +7 -0
  356. package/src/containers/index.ts +8 -0
  357. package/src/hooks/index.ts +2 -0
  358. package/src/hooks/useCompanions.ts +2 -2
  359. package/src/hooks/useDeckCompanions.ts +7 -11
  360. package/src/hooks/useDeckState.ts +82 -0
  361. package/src/hooks/useHoistStatusbar.ts +3 -6
  362. package/src/hooks/useMainSize.ts +2 -2
  363. package/src/hooks/useNodeActionExpander.ts +4 -4
  364. package/src/hooks/useSelectedCompanion.ts +32 -0
  365. package/src/index.ts +1 -2
  366. package/src/layout.ts +1 -14
  367. package/src/meta.ts +3 -3
  368. package/src/operations/add-toast.ts +24 -0
  369. package/src/operations/adjust.ts +83 -0
  370. package/src/operations/change-companion.ts +35 -0
  371. package/src/operations/close.ts +35 -0
  372. package/src/operations/definitions.ts +61 -0
  373. package/src/operations/helpers.ts +22 -0
  374. package/src/operations/index.ts +26 -0
  375. package/src/operations/open.ts +89 -0
  376. package/src/operations/revert-workspace.ts +22 -0
  377. package/src/operations/scroll-into-view.ts +24 -0
  378. package/src/operations/set-layout-mode.ts +80 -0
  379. package/src/operations/set.ts +36 -0
  380. package/src/operations/show-undo.ts +46 -0
  381. package/src/operations/switch-workspace.ts +60 -0
  382. package/src/operations/update-complementary.ts +33 -0
  383. package/src/operations/update-dialog.ts +34 -0
  384. package/src/operations/update-plank-size.ts +29 -0
  385. package/src/operations/update-popover.ts +36 -0
  386. package/src/operations/update-sidebar.ts +28 -0
  387. package/src/translations.ts +1 -0
  388. package/src/types/capabilities.ts +33 -0
  389. package/src/types/events.ts +21 -0
  390. package/src/types/index.ts +2 -0
  391. package/src/types/schema.ts +32 -25
  392. package/src/util/index.ts +1 -0
  393. package/src/util/layoutAppliesTopbar.ts +1 -1
  394. package/src/util/overscroll.ts +3 -3
  395. package/src/util/sanitize-persisted-state.test.ts +79 -0
  396. package/src/util/sanitize-persisted-state.ts +52 -0
  397. package/src/util/set-active.test.ts +106 -0
  398. package/src/util/set-active.ts +49 -29
  399. package/dist/lib/browser/app-graph-builder-D74NTOMK.mjs +0 -128
  400. package/dist/lib/browser/app-graph-builder-D74NTOMK.mjs.map +0 -7
  401. package/dist/lib/browser/check-app-scheme-HIEVFAAX.mjs +0 -32
  402. package/dist/lib/browser/check-app-scheme-HIEVFAAX.mjs.map +0 -7
  403. package/dist/lib/browser/chunk-5KMJPIQC.mjs +0 -16
  404. package/dist/lib/browser/chunk-5KMJPIQC.mjs.map +0 -7
  405. package/dist/lib/browser/chunk-CNTGBCMK.mjs +0 -145
  406. package/dist/lib/browser/chunk-CNTGBCMK.mjs.map +0 -7
  407. package/dist/lib/browser/chunk-F3VCCHVL.mjs.map +0 -7
  408. package/dist/lib/browser/chunk-QKCGZ45E.mjs +0 -128
  409. package/dist/lib/browser/chunk-QKCGZ45E.mjs.map +0 -7
  410. package/dist/lib/browser/chunk-UXLU6CMW.mjs.map +0 -7
  411. package/dist/lib/browser/chunk-VBYJ664A.mjs +0 -132
  412. package/dist/lib/browser/chunk-VBYJ664A.mjs.map +0 -7
  413. package/dist/lib/browser/chunk-VUJ6UNIJ.mjs +0 -1553
  414. package/dist/lib/browser/chunk-VUJ6UNIJ.mjs.map +0 -7
  415. package/dist/lib/browser/intent-resolver-UA4YQGAC.mjs +0 -524
  416. package/dist/lib/browser/intent-resolver-UA4YQGAC.mjs.map +0 -7
  417. package/dist/lib/browser/react-root-JAMHKYWN.mjs +0 -44
  418. package/dist/lib/browser/react-root-JAMHKYWN.mjs.map +0 -7
  419. package/dist/lib/browser/react-surface-6LW337ZT.mjs +0 -40
  420. package/dist/lib/browser/react-surface-6LW337ZT.mjs.map +0 -7
  421. package/dist/lib/browser/settings-SDPTOCCM.mjs +0 -30
  422. package/dist/lib/browser/settings-SDPTOCCM.mjs.map +0 -7
  423. package/dist/lib/browser/state-7IFAGZQO.mjs +0 -12
  424. package/dist/lib/browser/toolkit-L5CFXJCF.mjs +0 -52
  425. package/dist/lib/browser/toolkit-L5CFXJCF.mjs.map +0 -7
  426. package/dist/lib/browser/url-handler-QEYGYE2H.mjs +0 -70
  427. package/dist/lib/browser/url-handler-QEYGYE2H.mjs.map +0 -7
  428. package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -4
  429. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
  430. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  431. package/dist/types/src/capabilities/check-app-scheme.d.ts +0 -4
  432. package/dist/types/src/capabilities/check-app-scheme.d.ts.map +0 -1
  433. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  434. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  435. package/dist/types/src/capabilities/react-root.d.ts +0 -7
  436. package/dist/types/src/capabilities/react-root.d.ts.map +0 -1
  437. package/dist/types/src/capabilities/react-surface.d.ts +0 -4
  438. package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
  439. package/dist/types/src/capabilities/settings.d.ts +0 -4
  440. package/dist/types/src/capabilities/settings.d.ts.map +0 -1
  441. package/dist/types/src/capabilities/state.d.ts +0 -104
  442. package/dist/types/src/capabilities/state.d.ts.map +0 -1
  443. package/dist/types/src/capabilities/toolkit.d.ts +0 -25
  444. package/dist/types/src/capabilities/toolkit.d.ts.map +0 -1
  445. package/dist/types/src/capabilities/tools.d.ts +0 -11
  446. package/dist/types/src/capabilities/tools.d.ts.map +0 -1
  447. package/dist/types/src/capabilities/url-handler.d.ts +0 -4
  448. package/dist/types/src/capabilities/url-handler.d.ts.map +0 -1
  449. package/dist/types/src/components/DeckSettings/DeckSettings.d.ts +0 -6
  450. package/dist/types/src/components/DeckSettings/DeckSettings.d.ts.map +0 -1
  451. package/dist/types/src/components/DeckSettings/index.d.ts +0 -2
  452. package/dist/types/src/components/DeckSettings/index.d.ts.map +0 -1
  453. package/dist/types/src/events.d.ts +0 -4
  454. package/dist/types/src/events.d.ts.map +0 -1
  455. package/src/capabilities/app-graph-builder.ts +0 -143
  456. package/src/capabilities/capabilities.ts +0 -14
  457. package/src/capabilities/check-app-scheme.ts +0 -40
  458. package/src/capabilities/intent-resolver.ts +0 -471
  459. package/src/capabilities/react-root.tsx +0 -40
  460. package/src/capabilities/react-surface.tsx +0 -30
  461. package/src/capabilities/settings.ts +0 -27
  462. package/src/capabilities/state.ts +0 -113
  463. package/src/capabilities/toolkit.ts +0 -66
  464. package/src/capabilities/tools.ts +0 -84
  465. package/src/capabilities/url-handler.ts +0 -60
  466. package/src/components/DeckSettings/index.ts +0 -5
  467. package/src/events.ts +0 -11
  468. /package/dist/lib/browser/{state-7IFAGZQO.mjs.map → operations/index.mjs.map} +0 -0
@@ -1,1553 +0,0 @@
1
- import {
2
- getCompanionId,
3
- useBreakpoints,
4
- useCompanions,
5
- useDeckCompanions,
6
- useHoistStatusbar,
7
- useMainSize,
8
- useNodeActionExpander
9
- } from "./chunk-QKCGZ45E.mjs";
10
- import {
11
- calculateOverscroll,
12
- layoutAppliesTopbar,
13
- parseEntryId
14
- } from "./chunk-CNTGBCMK.mjs";
15
- import {
16
- DeckCapabilities
17
- } from "./chunk-5KMJPIQC.mjs";
18
- import {
19
- DeckAction,
20
- NewPlankPositions,
21
- OverscrollOptions,
22
- PLANK_COMPANION_TYPE,
23
- getMode
24
- } from "./chunk-F3VCCHVL.mjs";
25
- import {
26
- meta
27
- } from "./chunk-UXLU6CMW.mjs";
28
-
29
- // src/components/DeckLayout/Banner.tsx
30
- import { useSignals as _useSignals9 } from "@preact-signals/safe-react/tracking";
31
- import React9 from "react";
32
- import { Surface as Surface5 } from "@dxos/app-framework/react";
33
- import { useTranslation as useTranslation6 } from "@dxos/react-ui";
34
- import { mx as mx5 } from "@dxos/react-ui-theme";
35
-
36
- // src/components/Sidebar/ComplementarySidebar.tsx
37
- import { useSignals as _useSignals7 } from "@preact-signals/safe-react/tracking";
38
- import React7, { Fragment as Fragment2, useCallback as useCallback5, useEffect as useEffect3, useMemo as useMemo3, useState as useState2 } from "react";
39
- import { LayoutAction as LayoutAction4, createIntent as createIntent5 } from "@dxos/app-framework";
40
- import { Surface as Surface3, useCapability as useCapability3, useIntentDispatcher as useIntentDispatcher5 } from "@dxos/app-framework/react";
41
- import { IconButton as IconButton4, Main, toLocalizedString as toLocalizedString2, useTranslation as useTranslation5 } from "@dxos/react-ui";
42
- import { Tabs } from "@dxos/react-ui-tabs";
43
- import { mx as mx4 } from "@dxos/react-ui-theme";
44
-
45
- // src/components/Plank/Plank.tsx
46
- import { useSignals as _useSignals5 } from "@preact-signals/safe-react/tracking";
47
- import { useFocusFinders } from "@fluentui/react-tabster";
48
- import React5, { memo as memo2, useCallback as useCallback3, useLayoutEffect, useMemo as useMemo2, useRef } from "react";
49
- import { LayoutAction as LayoutAction2, createIntent as createIntent3 } from "@dxos/app-framework";
50
- import { Surface as Surface2, useAppGraph as useAppGraph2, useCapability, useIntentDispatcher as useIntentDispatcher3 } from "@dxos/app-framework/react";
51
- import { debounce } from "@dxos/async";
52
- import { useNode } from "@dxos/plugin-graph";
53
- import { ATTENDABLE_PATH_SEPARATOR, useAttentionAttributes } from "@dxos/react-ui-attention";
54
- import { StackItem as StackItem2, railGridHorizontal } from "@dxos/react-ui-stack";
55
- import { mainIntrinsicSize, mx as mx3 } from "@dxos/react-ui-theme";
56
-
57
- // src/components/Plank/PlankError.tsx
58
- import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
59
- import React4, { useEffect as useEffect2, useState } from "react";
60
- import { useTranslation as useTranslation3 } from "@dxos/react-ui";
61
- import { descriptionMessage, mx as mx2 } from "@dxos/react-ui-theme";
62
-
63
- // src/components/Plank/PlankHeading.tsx
64
- import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
65
- import React2, { Fragment, memo, useCallback as useCallback2, useEffect, useMemo } from "react";
66
- import { LayoutAction, createIntent as createIntent2 } from "@dxos/app-framework";
67
- import { Surface, useAppGraph, useIntentDispatcher as useIntentDispatcher2 } from "@dxos/app-framework/react";
68
- import { Icon, IconButton as IconButton2, Popover, toLocalizedString, useTranslation as useTranslation2 } from "@dxos/react-ui";
69
- import { StackItem } from "@dxos/react-ui-stack";
70
- import { TextTooltip } from "@dxos/react-ui-text-tooltip";
71
- import { hoverableControls, hoverableFocusedWithinControls } from "@dxos/react-ui-theme";
72
-
73
- // src/components/fragments.ts
74
- import { mx } from "@dxos/react-ui-theme";
75
- var soloInlinePadding = "pis-[calc(env(safe-area-inset-left)+.25rem)] pie-[calc(env(safe-area-inset-left)+.25rem)]";
76
- var sidebarToggleStyles = "bs-[--rail-item] is-[--rail-item] absolute block-end-2 z-[1] !bg-deckSurface lg:hidden";
77
- var fixedSidebarToggleStyles = mx(sidebarToggleStyles, "inline-start-2");
78
- var fixedComplementarySidebarToggleStyles = mx(sidebarToggleStyles, "inline-end-2");
79
-
80
- // src/components/Plank/PlankControls.tsx
81
- import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
82
- import React, { forwardRef, useCallback } from "react";
83
- import { createIntent } from "@dxos/app-framework";
84
- import { useIntentDispatcher } from "@dxos/app-framework/react";
85
- import { invariant } from "@dxos/invariant";
86
- import { ButtonGroup, IconButton, useTranslation } from "@dxos/react-ui";
87
- var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-deck/src/components/Plank/PlankControls.tsx";
88
- var PlankControl = ({ icon, label: label3, ...props }) => {
89
- var _effect = _useSignals();
90
- try {
91
- return /* @__PURE__ */ React.createElement(IconButton, {
92
- label: label3,
93
- icon,
94
- iconOnly: true,
95
- variant: "ghost",
96
- tooltipSide: "bottom",
97
- ...props
98
- });
99
- } finally {
100
- _effect.f();
101
- }
102
- };
103
- var plankControlSpacing = "pli-2";
104
- var PlankCompanionControls = /* @__PURE__ */ forwardRef(({ primary }, forwardedRef) => {
105
- var _effect = _useSignals();
106
- try {
107
- const { t } = useTranslation(meta.id);
108
- const { dispatchPromise: dispatch } = useIntentDispatcher();
109
- const handleCloseCompanion = useCallback(() => {
110
- invariant(primary, void 0, {
111
- F: __dxlog_file,
112
- L: 50,
113
- S: void 0,
114
- A: [
115
- "primary",
116
- ""
117
- ]
118
- });
119
- return dispatch(createIntent(DeckAction.ChangeCompanion, {
120
- primary,
121
- companion: null
122
- }));
123
- }, []);
124
- return /* @__PURE__ */ React.createElement("div", {
125
- ref: forwardedRef,
126
- className: "contents app-no-drag"
127
- }, /* @__PURE__ */ React.createElement(PlankControl, {
128
- label: t("close companion label"),
129
- variant: "ghost",
130
- icon: "ph--x--regular",
131
- onClick: handleCloseCompanion,
132
- classNames: plankControlSpacing
133
- }));
134
- } finally {
135
- _effect.f();
136
- }
137
- });
138
- var PlankControls = /* @__PURE__ */ forwardRef(({ children, classNames, variant = "default", capabilities, layoutMode, pin, close = false, onClick, ...props }, forwardedRef) => {
139
- var _effect = _useSignals();
140
- try {
141
- const { t } = useTranslation(meta.id);
142
- const buttonClassNames = variant === "hide-disabled" ? `disabled:hidden ${plankControlSpacing}` : plankControlSpacing;
143
- const layoutIsAnySolo = !!layoutMode?.startsWith("solo");
144
- return /* @__PURE__ */ React.createElement(ButtonGroup, {
145
- ...props,
146
- classNames: [
147
- "app-no-drag !opacity-100",
148
- classNames
149
- ],
150
- ref: forwardedRef
151
- }, capabilities.deck ? /* @__PURE__ */ React.createElement(React.Fragment, null, capabilities.solo && /* @__PURE__ */ React.createElement(React.Fragment, null, layoutMode === "solo" && /* @__PURE__ */ React.createElement(PlankControl, {
152
- label: t("show fullscreen plank label"),
153
- classNames: buttonClassNames,
154
- icon: "ph--corners-out--regular",
155
- onClick: () => onClick?.("solo--fullscreen")
156
- }), /* @__PURE__ */ React.createElement(PlankControl, {
157
- label: t(layoutMode === "solo--fullscreen" ? "exit fullscreen label" : layoutIsAnySolo ? "show deck plank label" : "show solo plank label"),
158
- classNames: buttonClassNames,
159
- icon: layoutMode === "solo--fullscreen" ? "ph--corners-in--regular" : layoutIsAnySolo ? "ph--arrows-in-line-horizontal--regular" : "ph--arrows-out-line-horizontal--regular",
160
- onClick: () => onClick?.(layoutMode === "solo--fullscreen" ? "solo--fullscreen" : "solo")
161
- })), !layoutIsAnySolo && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(PlankControl, {
162
- label: t("increment start label"),
163
- disabled: !capabilities.incrementStart,
164
- classNames: buttonClassNames,
165
- icon: "ph--caret-left--regular",
166
- onClick: () => onClick?.("increment-start")
167
- }), /* @__PURE__ */ React.createElement(PlankControl, {
168
- label: t("increment end label"),
169
- disabled: !capabilities.incrementEnd,
170
- classNames: buttonClassNames,
171
- icon: "ph--caret-right--regular",
172
- onClick: () => onClick?.("increment-end")
173
- }))) : capabilities.fullscreen && /* @__PURE__ */ React.createElement(PlankControl, {
174
- label: t(layoutMode === "solo--fullscreen" ? "exit fullscreen label" : "show fullscreen plank label"),
175
- classNames: buttonClassNames,
176
- icon: layoutMode === "solo--fullscreen" ? "ph--corners-in--regular" : "ph--corners-out--regular",
177
- onClick: () => onClick?.("solo--fullscreen")
178
- }), close && !layoutIsAnySolo && /* @__PURE__ */ React.createElement(PlankControl, {
179
- label: t(`${typeof close === "string" ? "minify" : "close"} label`),
180
- classNames: buttonClassNames,
181
- "data-testid": "plankHeading.close",
182
- icon: close === "minify-start" ? "ph--caret-line-left--regular" : close === "minify-end" ? "ph--caret-line-right--regular" : "ph--x--regular",
183
- onClick: () => onClick?.("close")
184
- }), capabilities.companion && /* @__PURE__ */ React.createElement(PlankControl, {
185
- label: t("open companion label"),
186
- classNames: buttonClassNames,
187
- "data-testid": "plankHeading.companion",
188
- icon: "ph--square-split-horizontal--regular",
189
- onClick: () => onClick?.("companion")
190
- }), children);
191
- } finally {
192
- _effect.f();
193
- }
194
- });
195
-
196
- // src/components/Plank/PlankHeading.tsx
197
- var MAX_COMPANIONS = 5;
198
- var PlankHeading = /* @__PURE__ */ memo(({ id, part, node, deckEnabled, canIncrementStart, canIncrementEnd, popoverAnchorId, primaryId, pending, companioned, companions, layoutMode, actions = [] }) => {
199
- var _effect = _useSignals2();
200
- try {
201
- const { t } = useTranslation2(meta.id);
202
- const { dispatchPromise: dispatch } = useIntentDispatcher2();
203
- const { graph } = useAppGraph();
204
- const breakpoint = useBreakpoints();
205
- const icon = node?.properties?.icon ?? "ph--placeholder--regular";
206
- const label3 = pending ? t("pending heading") : toLocalizedString(node?.properties?.label ?? [
207
- "plank heading fallback label",
208
- {
209
- ns: meta.id
210
- }
211
- ], t);
212
- const isCompanionNode = node?.type === PLANK_COMPANION_TYPE;
213
- useEffect(() => {
214
- const frame = requestAnimationFrame(() => {
215
- if (node) {
216
- void graph.expand(node.id);
217
- }
218
- });
219
- return () => cancelAnimationFrame(frame);
220
- }, [
221
- node
222
- ]);
223
- const attendableId = primaryId ?? id;
224
- const capabilities = useMemo(() => ({
225
- deck: deckEnabled ?? true,
226
- solo: breakpoint !== "mobile" && (part === "solo" || part === "deck"),
227
- incrementStart: canIncrementStart,
228
- incrementEnd: canIncrementEnd,
229
- fullscreen: !isCompanionNode,
230
- companion: !isCompanionNode && companions && companions.length > 0
231
- }), [
232
- breakpoint,
233
- part,
234
- companions,
235
- canIncrementStart,
236
- canIncrementEnd,
237
- isCompanionNode,
238
- deckEnabled
239
- ]);
240
- const { variant } = parseEntryId(id);
241
- const sigilActions = useMemo(() => {
242
- if (!node) {
243
- return void 0;
244
- } else if (variant) {
245
- return [];
246
- } else {
247
- return [
248
- actions,
249
- graph.getActions(node.id).filter((a) => [
250
- "list-item",
251
- "list-item-primary",
252
- "heading-list-item"
253
- ].includes(a.properties.disposition))
254
- ].filter((a) => a.length > 0);
255
- }
256
- }, [
257
- actions,
258
- node,
259
- variant,
260
- graph
261
- ]);
262
- const handleAction = useCallback2((action) => {
263
- typeof action.data === "function" && void action.data?.({
264
- parent: node,
265
- caller: meta.id
266
- });
267
- }, [
268
- node
269
- ]);
270
- const handlePlankAction = useCallback2((eventType) => {
271
- if (eventType.startsWith("solo")) {
272
- return dispatch(createIntent2(DeckAction.Adjust, {
273
- type: eventType,
274
- id
275
- }));
276
- } else if (eventType === "close") {
277
- if (part === "complementary") {
278
- return dispatch(createIntent2(LayoutAction.UpdateComplementary, {
279
- part: "complementary",
280
- options: {
281
- state: "collapsed"
282
- }
283
- }));
284
- } else {
285
- return dispatch(createIntent2(LayoutAction.Close, {
286
- part: "main",
287
- subject: [
288
- id
289
- ],
290
- options: {
291
- state: false
292
- }
293
- }));
294
- }
295
- } else {
296
- return dispatch(createIntent2(DeckAction.Adjust, {
297
- type: eventType,
298
- id
299
- }));
300
- }
301
- }, [
302
- dispatch,
303
- id,
304
- part
305
- ]);
306
- const ActionRoot = node && popoverAnchorId === `dxos.org/ui/${meta.id}/${node.id}` ? Popover.Anchor : Fragment;
307
- const handleTabClick = useCallback2((event) => {
308
- const target = event.target.closest("[data-id]");
309
- const tabId = target?.dataset?.id;
310
- if (primaryId && tabId) {
311
- void dispatch(createIntent2(DeckAction.ChangeCompanion, {
312
- primary: primaryId,
313
- companion: tabId
314
- }));
315
- }
316
- }, [
317
- primaryId
318
- ]);
319
- return /* @__PURE__ */ React2.createElement(StackItem.Heading, {
320
- classNames: [
321
- "plb-1 items-stretch gap-1 sticky inline-start-12 app-drag min-is-0 contain-layout density-coarse",
322
- part === "solo" ? soloInlinePadding : "pli-1",
323
- ...layoutMode === "solo--fullscreen" ? [
324
- hoverableControls,
325
- hoverableFocusedWithinControls,
326
- "*:transition-opacity *:opacity-[--controls-opacity] bg-transparent border-transparent transition-[background-color,border-color]",
327
- "hover-hover:hover:bg-headerSurface focus-within:bg-headerSurface hover-hover:hover:border-subduedSeparator focus-within:border-subduedSeparator"
328
- ] : []
329
- ],
330
- "data-plank-heading": true
331
- }, companions && isCompanionNode ? (
332
- /* TODO(thure): IMPORTANT: This is a tablist; it should be implemented as such. */
333
- /* @__PURE__ */ React2.createElement("div", {
334
- role: "none",
335
- className: "flex-1 min-is-0 overflow-x-auto scrollbar-none flex gap-1"
336
- }, companions.map(({ id: id2, properties: { icon: icon2, label: label4 } }) => /* @__PURE__ */ React2.createElement(IconButton2, {
337
- key: id2,
338
- "data-id": id2,
339
- icon: icon2,
340
- iconOnly: companions.length > MAX_COMPANIONS && node?.id !== id2,
341
- label: toLocalizedString(label4, t),
342
- variant: node?.id === id2 ? "primary" : "ghost",
343
- onClick: handleTabClick
344
- })))
345
- ) : /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement(ActionRoot, null, node && sigilActions ? /* @__PURE__ */ React2.createElement(StackItem.Sigil, {
346
- icon,
347
- related: part === "complementary",
348
- attendableId,
349
- triggerLabel: t("actions menu label"),
350
- actions: sigilActions,
351
- onAction: handleAction
352
- }, /* @__PURE__ */ React2.createElement(Surface, {
353
- role: "menu-footer",
354
- data: {
355
- subject: node.data
356
- }
357
- })) : /* @__PURE__ */ React2.createElement(StackItem.SigilButton, null, /* @__PURE__ */ React2.createElement("span", {
358
- className: "sr-only"
359
- }, label3), /* @__PURE__ */ React2.createElement(Icon, {
360
- icon
361
- }))), /* @__PURE__ */ React2.createElement(TextTooltip, {
362
- text: label3,
363
- onlyWhenTruncating: true
364
- }, /* @__PURE__ */ React2.createElement(StackItem.HeadingLabel, {
365
- attendableId,
366
- related: part === "complementary",
367
- ...pending && {
368
- classNames: "text-description"
369
- }
370
- }, label3))), node && part !== "complementary" && /* @__PURE__ */ React2.createElement(Surface, {
371
- role: "navbar-end",
372
- data: {
373
- subject: node.data
374
- }
375
- }), companioned === "companion" ? /* @__PURE__ */ React2.createElement(PlankCompanionControls, {
376
- primary: primaryId
377
- }) : /* @__PURE__ */ React2.createElement(PlankControls, {
378
- capabilities,
379
- layoutMode,
380
- close: part === "complementary" ? "minify-end" : true,
381
- onClick: handlePlankAction
382
- }));
383
- } finally {
384
- _effect.f();
385
- }
386
- });
387
-
388
- // src/components/Plank/PlankLoading.tsx
389
- import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
390
- import React3 from "react";
391
- var PlankLoading = () => {
392
- var _effect = _useSignals3();
393
- try {
394
- return /* @__PURE__ */ React3.createElement("div", {
395
- role: "none",
396
- className: "grid place-items-center attention-surface"
397
- });
398
- } finally {
399
- _effect.f();
400
- }
401
- };
402
-
403
- // src/components/Plank/PlankError.tsx
404
- var PlankContentError = ({ error }) => {
405
- var _effect = _useSignals4();
406
- try {
407
- const { t } = useTranslation3(meta.id);
408
- const errorString = error?.toString() ?? "";
409
- return /* @__PURE__ */ React4.createElement("div", {
410
- role: "none",
411
- className: "overflow-y-auto p-8 attention-surface grid place-items-center"
412
- }, /* @__PURE__ */ React4.createElement("p", {
413
- role: "alert",
414
- className: mx2(descriptionMessage, "break-all rounded-md p-4")
415
- }, error ? errorString : t("error fallback message")));
416
- } finally {
417
- _effect.f();
418
- }
419
- };
420
- var PlankError = ({ id, part, node, error }) => {
421
- var _effect = _useSignals4();
422
- try {
423
- const [timedOut, setTimedOut] = useState(false);
424
- useEffect2(() => {
425
- setTimeout(() => setTimedOut(true), 5e3);
426
- }, []);
427
- return /* @__PURE__ */ React4.createElement(React4.Fragment, null, /* @__PURE__ */ React4.createElement(PlankHeading, {
428
- id,
429
- part,
430
- node,
431
- pending: !timedOut
432
- }), timedOut ? /* @__PURE__ */ React4.createElement(PlankContentError, {
433
- error
434
- }) : /* @__PURE__ */ React4.createElement(PlankLoading, null));
435
- } finally {
436
- _effect.f();
437
- }
438
- };
439
-
440
- // src/components/Plank/Plank.tsx
441
- var UNKNOWN_ID = "unknown_id";
442
- var Plank = /* @__PURE__ */ memo2(({ id = UNKNOWN_ID, companionId, ...props }) => {
443
- var _effect = _useSignals5();
444
- try {
445
- const { graph } = useAppGraph2();
446
- const node = useNode(graph, id);
447
- const companions = useCompanions(id);
448
- const currentCompanion = companions.find(({ id: id2 }) => id2 === companionId);
449
- const hasCompanion = !!(companionId && currentCompanion);
450
- return /* @__PURE__ */ React5.createElement(PlankContainer, {
451
- solo: props.part === "solo",
452
- companion: hasCompanion,
453
- encapsulate: !!props.settings?.encapsulatedPlanks
454
- }, /* @__PURE__ */ React5.createElement(PlankComponent, {
455
- id,
456
- node,
457
- companioned: hasCompanion ? "primary" : void 0,
458
- companions: hasCompanion ? [] : companions,
459
- ...props,
460
- ...props.part === "solo" ? {
461
- part: "solo-primary"
462
- } : {}
463
- }), hasCompanion && /* @__PURE__ */ React5.createElement(PlankComponent, {
464
- id: companionId,
465
- node: currentCompanion,
466
- primary: node,
467
- companions,
468
- companioned: "companion",
469
- ...props,
470
- ...props.part === "solo" ? {
471
- part: "solo-companion"
472
- } : {
473
- order: (props.order ?? 0) + 1
474
- }
475
- }));
476
- } finally {
477
- _effect.f();
478
- }
479
- });
480
- var PlankContainer = ({ children, solo, companion, encapsulate }) => {
481
- var _effect = _useSignals5();
482
- try {
483
- const sizeAttrs = useMainSize();
484
- if (!solo) {
485
- return children;
486
- }
487
- return /* @__PURE__ */ React5.createElement("div", {
488
- role: "none",
489
- "data-popover-collision-boundary": true,
490
- className: mx3("absolute inset-[--main-spacing] grid", encapsulate && "border border-separator rounded overflow-hidden", companion && "grid-cols-[6fr_4fr]", railGridHorizontal, mainIntrinsicSize),
491
- ...sizeAttrs
492
- }, children);
493
- } finally {
494
- _effect.f();
495
- }
496
- };
497
- var PlankComponent = /* @__PURE__ */ memo2(({ layoutMode, id, part, path, order, active, companioned, node, primary, companions, settings }) => {
498
- var _effect = _useSignals5();
499
- try {
500
- const { dispatchPromise: dispatch } = useIntentDispatcher3();
501
- const { deck, popoverAnchorId, scrollIntoView } = useCapability(DeckCapabilities.DeckState);
502
- const { findFirstFocusable } = useFocusFinders();
503
- const canResize = layoutMode === "deck";
504
- const attentionAttrs = useAttentionAttributes(primary?.id ?? id);
505
- const index = active ? active.findIndex((entryId) => entryId === id) : 0;
506
- const length = active?.length ?? 1;
507
- const canIncrementStart = active && index !== void 0 && index > 0 && length !== void 0 && length > 1;
508
- const canIncrementEnd = active && index !== void 0 && index < length - 1 && length !== void 0;
509
- const rootElement = useRef(null);
510
- const { variant } = parseEntryId(id);
511
- const sizeKey = `${id.split("+")[0]}${variant ? `${ATTENDABLE_PATH_SEPARATOR}${variant}` : ""}`;
512
- const size = deck.plankSizing[sizeKey];
513
- const handleSizeChange = useCallback3(debounce((nextSize) => {
514
- return dispatch(createIntent3(DeckAction.UpdatePlankSize, {
515
- id: sizeKey,
516
- size: nextSize
517
- }));
518
- }, 200), [
519
- dispatch,
520
- sizeKey
521
- ]);
522
- const handleKeyDown = useCallback3((event) => {
523
- if (event.target === event.currentTarget) {
524
- switch (event.key) {
525
- case "Escape":
526
- rootElement.current?.closest("main")?.focus();
527
- break;
528
- case "Enter":
529
- rootElement.current && findFirstFocusable(rootElement.current)?.focus();
530
- break;
531
- }
532
- }
533
- }, []);
534
- useLayoutEffect(() => {
535
- if (scrollIntoView === id) {
536
- layoutMode === "deck" && rootElement.current?.scrollIntoView({
537
- behavior: "smooth",
538
- inline: "center"
539
- });
540
- void dispatch(createIntent3(LayoutAction2.ScrollIntoView, {
541
- part: "current",
542
- subject: void 0
543
- }));
544
- }
545
- }, [
546
- id,
547
- scrollIntoView,
548
- layoutMode
549
- ]);
550
- const isSolo = layoutMode.startsWith("solo") && part === "solo";
551
- const isAttendable = layoutMode.startsWith("solo") && part.startsWith("solo") || layoutMode === "deck" && part === "deck";
552
- const sizeAttrs = useMainSize();
553
- const data = useMemo2(() => node && {
554
- attendableId: id,
555
- subject: node.data,
556
- companionTo: primary?.data,
557
- properties: node.properties,
558
- variant,
559
- path,
560
- popoverAnchorId
561
- }, [
562
- node,
563
- node?.data,
564
- node?.properties,
565
- path,
566
- popoverAnchorId,
567
- primary?.data,
568
- variant
569
- ]);
570
- const placeholder = useMemo2(() => /* @__PURE__ */ React5.createElement(PlankLoading, null), []);
571
- const Root = part.startsWith("solo") ? "article" : StackItem2.Root;
572
- const fullscreen = layoutMode === "solo--fullscreen";
573
- const className = mx3("attention-surface relative dx-focus-ring-inset-over-all density-coarse", isSolo && "absolute inset-0", isSolo && mainIntrinsicSize, railGridHorizontal, part.startsWith("solo") && "grid", part.startsWith("solo-") && "grid-rows-subgrid row-span-2 min-is-0", fullscreen && "grid-rows-1", part === "deck" && (companioned === "companion" ? "!border-separator border-ie" : "!border-separator border-li"), part === "solo-companion" && "!border-separator border-is", settings?.encapsulatedPlanks && !part.startsWith("solo") && "mli-[--main-spacing] !border-separator border rounded overflow-hidden");
574
- return /* @__PURE__ */ React5.createElement(Root, {
575
- ref: rootElement,
576
- "data-testid": "deck.plank",
577
- "data-popover-collision-boundary": true,
578
- tabIndex: 0,
579
- ...part.startsWith("solo") ? {
580
- ...sizeAttrs,
581
- className
582
- } : {
583
- item: {
584
- id
585
- },
586
- size,
587
- onSizeChange: handleSizeChange,
588
- classNames: className,
589
- order,
590
- role: "article"
591
- },
592
- ...isAttendable ? attentionAttrs : {},
593
- onKeyDown: handleKeyDown
594
- }, node ? /* @__PURE__ */ React5.createElement(React5.Fragment, null, !fullscreen && /* @__PURE__ */ React5.createElement(PlankHeading, {
595
- id,
596
- part: part.startsWith("solo-") ? "solo" : part,
597
- node,
598
- layoutMode,
599
- deckEnabled: settings?.enableDeck,
600
- canIncrementStart,
601
- canIncrementEnd,
602
- popoverAnchorId,
603
- primaryId: primary?.id,
604
- companioned,
605
- companions
606
- }), /* @__PURE__ */ React5.createElement(Surface2, {
607
- key: node.id,
608
- role: "article",
609
- data,
610
- limit: 1,
611
- fallback: PlankContentError,
612
- placeholder
613
- })) : /* @__PURE__ */ React5.createElement(PlankError, {
614
- id,
615
- part
616
- }), canResize && /* @__PURE__ */ React5.createElement(StackItem2.ResizeHandle, null));
617
- } finally {
618
- _effect.f();
619
- }
620
- });
621
-
622
- // src/components/Sidebar/SidebarButton.tsx
623
- import { useSignals as _useSignals6 } from "@preact-signals/safe-react/tracking";
624
- import React6, { useCallback as useCallback4 } from "react";
625
- import { LayoutAction as LayoutAction3, createIntent as createIntent4 } from "@dxos/app-framework";
626
- import { useCapability as useCapability2, useIntentDispatcher as useIntentDispatcher4 } from "@dxos/app-framework/react";
627
- import { IconButton as IconButton3, useTranslation as useTranslation4 } from "@dxos/react-ui";
628
- var ToggleSidebarButton = ({ classNames, variant = "ghost" }) => {
629
- var _effect = _useSignals6();
630
- try {
631
- const layoutContext = useCapability2(DeckCapabilities.MutableDeckState);
632
- const { t } = useTranslation4(meta.id);
633
- return /* @__PURE__ */ React6.createElement(IconButton3, {
634
- variant,
635
- icon: "ph--sidebar--regular",
636
- iconOnly: true,
637
- size: 4,
638
- label: t("open navigation sidebar label"),
639
- onClick: () => layoutContext.sidebarState = layoutContext.sidebarState === "expanded" ? "collapsed" : "expanded",
640
- classNames
641
- });
642
- } finally {
643
- _effect.f();
644
- }
645
- };
646
- var CloseSidebarButton = () => {
647
- var _effect = _useSignals6();
648
- try {
649
- const layoutContext = useCapability2(DeckCapabilities.MutableDeckState);
650
- const { t } = useTranslation4(meta.id);
651
- return /* @__PURE__ */ React6.createElement(IconButton3, {
652
- variant: "ghost",
653
- icon: "ph--caret-line-left--regular",
654
- iconOnly: true,
655
- size: 4,
656
- label: t("close navigation sidebar label"),
657
- onClick: () => layoutContext.sidebarState = "collapsed",
658
- classNames: "rounded-none pli-1 dx-focus-ring-inset pie-[max(.5rem,env(safe-area-inset-left))]"
659
- });
660
- } finally {
661
- _effect.f();
662
- }
663
- };
664
- var ToggleComplementarySidebarButton = ({ inR0, classNames, current }) => {
665
- var _effect = _useSignals6();
666
- try {
667
- const { dispatchPromise: dispatch } = useIntentDispatcher4();
668
- const layoutContext = useCapability2(DeckCapabilities.MutableDeckState);
669
- const { t } = useTranslation4(meta.id);
670
- const companions = useDeckCompanions();
671
- const handleClick = useCallback4(async () => {
672
- layoutContext.complementarySidebarState = layoutContext.complementarySidebarState === "expanded" ? "collapsed" : "expanded";
673
- const subject = layoutContext.complementarySidebarPanel ?? (companions[0] && getCompanionId(companions[0].id));
674
- if (layoutContext.complementarySidebarState === "expanded" && !current && subject) {
675
- await dispatch(createIntent4(LayoutAction3.UpdateComplementary, {
676
- part: "complementary",
677
- subject
678
- }));
679
- }
680
- }, [
681
- layoutContext,
682
- current,
683
- companions,
684
- dispatch
685
- ]);
686
- return /* @__PURE__ */ React6.createElement(IconButton3, {
687
- variant: "ghost",
688
- classNames: [
689
- "[&>svg]:-scale-x-100",
690
- classNames
691
- ],
692
- icon: "ph--sidebar-simple--regular",
693
- iconOnly: true,
694
- label: t("open complementary sidebar label"),
695
- size: inR0 ? 5 : 4,
696
- tooltipSide: inR0 ? "left" : void 0,
697
- onClick: handleClick
698
- });
699
- } finally {
700
- _effect.f();
701
- }
702
- };
703
-
704
- // src/components/Sidebar/ComplementarySidebar.tsx
705
- var label = [
706
- "complementary sidebar title",
707
- {
708
- ns: meta.id
709
- }
710
- ];
711
- var ComplementarySidebar = ({ current }) => {
712
- var _effect = _useSignals7();
713
- try {
714
- const { t } = useTranslation5(meta.id);
715
- const { dispatchPromise: dispatch } = useIntentDispatcher5();
716
- const layout = useCapability3(DeckCapabilities.MutableDeckState);
717
- const layoutMode = getMode(layout.deck);
718
- const breakpoint = useBreakpoints();
719
- const topbar = layoutAppliesTopbar(breakpoint, layoutMode);
720
- const hoistStatusbar = useHoistStatusbar(breakpoint, layoutMode);
721
- const companions = useDeckCompanions();
722
- const activeCompanion = companions.find((companion) => getCompanionId(companion.id) === current);
723
- const activeId = activeCompanion && getCompanionId(activeCompanion.id);
724
- const [internalValue, setInternalValue] = useState2(activeId);
725
- useEffect3(() => {
726
- setInternalValue(activeId);
727
- }, [
728
- activeId
729
- ]);
730
- const handleTabClick = useCallback5((event) => {
731
- const nextValue = event.currentTarget.getAttribute("data-value");
732
- if (nextValue === activeId) {
733
- layout.complementarySidebarState = layout.complementarySidebarState === "expanded" ? "collapsed" : "expanded";
734
- } else {
735
- setInternalValue(nextValue);
736
- layout.complementarySidebarState = "expanded";
737
- void dispatch(createIntent5(LayoutAction4.UpdateComplementary, {
738
- part: "complementary",
739
- subject: nextValue
740
- }));
741
- }
742
- }, [
743
- layout,
744
- activeId,
745
- dispatch
746
- ]);
747
- const data = useMemo3(() => activeCompanion && {
748
- id: activeCompanion.id,
749
- subject: activeCompanion.data
750
- }, [
751
- activeCompanion?.id,
752
- activeCompanion?.data
753
- ]);
754
- useEffect3(() => {
755
- if (!activeId) {
756
- void dispatch(createIntent5(LayoutAction4.UpdateComplementary, {
757
- part: "complementary",
758
- options: {
759
- state: "collapsed"
760
- }
761
- }));
762
- }
763
- }, [
764
- activeId,
765
- dispatch
766
- ]);
767
- return /* @__PURE__ */ React7.createElement(Main.ComplementarySidebar, {
768
- label,
769
- classNames: [
770
- topbar && "block-start-[calc(env(safe-area-inset-top)+var(--rail-size))]",
771
- hoistStatusbar && "block-end-[--statusbar-size]"
772
- ]
773
- }, /* @__PURE__ */ React7.createElement(Tabs.Root, {
774
- orientation: "vertical",
775
- verticalVariant: "stateless",
776
- value: internalValue,
777
- classNames: "contents"
778
- }, /* @__PURE__ */ React7.createElement("div", {
779
- role: "none",
780
- className: mx4("absolute z-[1] inset-block-0 inline-end-0 !is-[--r0-size]", "pbs-[env(safe-area-inset-top)] pbe-[env(safe-area-inset-bottom)] border-is border-subduedSeparator", "grid grid-cols-1 grid-rows-[1fr_min-content] bg-baseSurface contain-layout app-drag")
781
- }, /* @__PURE__ */ React7.createElement(Tabs.Tablist, {
782
- classNames: "grid grid-cols-1 auto-rows-[--rail-action] p-1 gap-1 !overflow-y-auto"
783
- }, companions.map((companion) => /* @__PURE__ */ React7.createElement(Tabs.Tab, {
784
- key: getCompanionId(companion.id),
785
- value: getCompanionId(companion.id),
786
- asChild: true
787
- }, /* @__PURE__ */ React7.createElement(IconButton4, {
788
- label: toLocalizedString2(companion.properties.label, t),
789
- icon: companion.properties.icon,
790
- iconOnly: true,
791
- tooltipSide: "left",
792
- "data-value": getCompanionId(companion.id),
793
- variant: activeId === getCompanionId(companion.id) ? layout.complementarySidebarState === "expanded" ? "primary" : "default" : "ghost",
794
- onClick: handleTabClick
795
- })))), !hoistStatusbar && /* @__PURE__ */ React7.createElement("div", {
796
- role: "none",
797
- className: "grid grid-cols-1 auto-rows-[--rail-item] p-1 overflow-y-auto"
798
- }, /* @__PURE__ */ React7.createElement(Surface3, {
799
- role: "status-bar--r0-footer",
800
- limit: 1
801
- })), /* @__PURE__ */ React7.createElement("div", {
802
- role: "none",
803
- className: "hidden lg:grid grid-cols-1 auto-rows-[--rail-action] p-1"
804
- }, /* @__PURE__ */ React7.createElement(ToggleComplementarySidebarButton, null))), activeId && companions.map((companion) => /* @__PURE__ */ React7.createElement(Tabs.Tabpanel, {
805
- key: getCompanionId(companion.id),
806
- value: getCompanionId(companion.id),
807
- classNames: [
808
- 'absolute data-[state="inactive"]:-z-[1] overflow-hidden',
809
- "inset-block-0 inline-start-0 is-[calc(100%-var(--r0-size))] lg:is-[--r1-size]",
810
- "grid grid-cols-1 grid-rows-[var(--rail-size)_1fr_min-content] pbs-[env(safe-area-inset-top)]"
811
- ],
812
- ...layout.complementarySidebarState !== "expanded" && {
813
- inert: true
814
- }
815
- }, /* @__PURE__ */ React7.createElement(ComplementarySidebarPanel, {
816
- companion,
817
- activeId,
818
- data,
819
- hoistStatusbar
820
- })))));
821
- } finally {
822
- _effect.f();
823
- }
824
- };
825
- var ComplementarySidebarPanel = ({ companion, activeId, data, hoistStatusbar }) => {
826
- var _effect = _useSignals7();
827
- try {
828
- const { t } = useTranslation5(meta.id);
829
- if (getCompanionId(companion.id) !== activeId && !data) {
830
- return null;
831
- }
832
- const Wrapper = companion.properties.fixed ? Fragment2 : ScrollArea;
833
- return /* @__PURE__ */ React7.createElement(React7.Fragment, null, /* @__PURE__ */ React7.createElement("div", {
834
- role: "none",
835
- className: "flex items-center p-1 gap-1 border-be border-subduedSeparator"
836
- }, /* @__PURE__ */ React7.createElement(IconButton4, {
837
- label: toLocalizedString2(companion.properties.label, t),
838
- icon: companion.properties.icon,
839
- iconOnly: true,
840
- tooltipSide: "left",
841
- "data-value": getCompanionId(companion.id),
842
- classNames: "bs-10 is-10",
843
- variant: "default"
844
- }), /* @__PURE__ */ React7.createElement("div", {
845
- role: "none",
846
- className: "pli-1"
847
- }, toLocalizedString2(companion.properties.label, t))), /* @__PURE__ */ React7.createElement(Wrapper, null, /* @__PURE__ */ React7.createElement(Surface3, {
848
- role: `deck-companion--${getCompanionId(companion.id)}`,
849
- data,
850
- fallback: PlankContentError,
851
- placeholder: /* @__PURE__ */ React7.createElement(PlankLoading, null)
852
- })), !hoistStatusbar && /* @__PURE__ */ React7.createElement("div", {
853
- role: "contentinfo",
854
- className: "flex flex-wrap justify-center items-center border-bs border-subduedSeparator pbs-1 pbe-[max(env(safe-area-inset-bottom),0.25rem)]"
855
- }, /* @__PURE__ */ React7.createElement(Surface3, {
856
- role: "status-bar--r1-footer",
857
- limit: 1
858
- })));
859
- } finally {
860
- _effect.f();
861
- }
862
- };
863
- var ScrollArea = ({ children }) => {
864
- var _effect = _useSignals7();
865
- try {
866
- return /* @__PURE__ */ React7.createElement("div", {
867
- className: "flex flex-col grow overflow-x-hidden overflow-y-auto scrollbar-thin"
868
- }, children);
869
- } finally {
870
- _effect.f();
871
- }
872
- };
873
-
874
- // src/components/Sidebar/Sidebar.tsx
875
- import { useSignals as _useSignals8 } from "@preact-signals/safe-react/tracking";
876
- import React8, { useMemo as useMemo4 } from "react";
877
- import { Surface as Surface4, useCapability as useCapability4 } from "@dxos/app-framework/react";
878
- import { Main as Main2 } from "@dxos/react-ui";
879
- var label2 = [
880
- "sidebar title",
881
- {
882
- ns: meta.id
883
- }
884
- ];
885
- var Sidebar = () => {
886
- var _effect = _useSignals8();
887
- try {
888
- const { popoverAnchorId, activeDeck: current, deck } = useCapability4(DeckCapabilities.DeckState);
889
- const breakpoint = useBreakpoints();
890
- const layoutMode = getMode(deck);
891
- const topbar = layoutAppliesTopbar(breakpoint, layoutMode);
892
- const hoistStatusbar = useHoistStatusbar(breakpoint, layoutMode);
893
- const navigationData = useMemo4(() => ({
894
- popoverAnchorId,
895
- topbar,
896
- hoistStatusbar,
897
- current
898
- }), [
899
- popoverAnchorId,
900
- topbar,
901
- hoistStatusbar,
902
- current
903
- ]);
904
- return /* @__PURE__ */ React8.createElement(Main2.NavigationSidebar, {
905
- label: label2,
906
- classNames: [
907
- "grid",
908
- topbar && "block-start-[calc(env(safe-area-inset-top)+var(--rail-size))]",
909
- hoistStatusbar && "block-end-[--statusbar-size]"
910
- ]
911
- }, /* @__PURE__ */ React8.createElement(Surface4, {
912
- role: "navigation",
913
- data: navigationData,
914
- limit: 1
915
- }));
916
- } finally {
917
- _effect.f();
918
- }
919
- };
920
-
921
- // src/components/DeckLayout/Banner.tsx
922
- var Banner = ({ variant, classNames }) => {
923
- var _effect = _useSignals9();
924
- try {
925
- const { t } = useTranslation6(meta.id);
926
- return /* @__PURE__ */ React9.createElement("header", {
927
- className: mx5("flex items-stretch relative plb-1 pis-1 pie-2", variant === "topbar" && "fixed inset-inline-0 block-start-[env(safe-area-inset-top)] bs-[--rail-size] border-be border-separator", classNames)
928
- }, variant === "sidebar" ? /* @__PURE__ */ React9.createElement(CloseSidebarButton, null) : /* @__PURE__ */ React9.createElement(ToggleSidebarButton, null), /* @__PURE__ */ React9.createElement("span", {
929
- className: "self-center grow mis-1"
930
- }, t("current app name", {
931
- ns: "appkit"
932
- })), variant === "topbar" && /* @__PURE__ */ React9.createElement("div", {
933
- role: "none",
934
- className: "absolute inset-0 pointer-events-none"
935
- }, /* @__PURE__ */ React9.createElement("div", {
936
- role: "none",
937
- className: "grid bs-full pointer-fine:p-1 max-is-md mli-auto pointer-events-auto"
938
- }, /* @__PURE__ */ React9.createElement(Surface5, {
939
- role: "search-input",
940
- limit: 1
941
- }))), /* @__PURE__ */ React9.createElement("span", {
942
- role: "none",
943
- className: "grow"
944
- }), /* @__PURE__ */ React9.createElement(Surface5, {
945
- role: "header-end",
946
- limit: 1
947
- }), /* @__PURE__ */ React9.createElement(Surface5, {
948
- role: "notch-start",
949
- limit: 1
950
- }));
951
- } finally {
952
- _effect.f();
953
- }
954
- };
955
-
956
- // src/components/DeckLayout/DeckLayout.tsx
957
- import { useSignals as _useSignals18 } from "@preact-signals/safe-react/tracking";
958
- import React18 from "react";
959
- import { useCapability as useCapability9 } from "@dxos/app-framework/react";
960
-
961
- // src/components/DeckLayout/ActiveNode.tsx
962
- import { useSignals as _useSignals10 } from "@preact-signals/safe-react/tracking";
963
- import React10 from "react";
964
- import { Surface as Surface6, useAppGraph as useAppGraph3 } from "@dxos/app-framework/react";
965
- import { useNode as useNode2 } from "@dxos/plugin-graph";
966
- import { useAttended } from "@dxos/react-ui-attention";
967
- var ActiveNode = () => {
968
- var _effect = _useSignals10();
969
- try {
970
- const [id] = useAttended();
971
- const { graph } = useAppGraph3();
972
- const activeNode = useNode2(graph, id);
973
- useNodeActionExpander(activeNode);
974
- return /* @__PURE__ */ React10.createElement("div", {
975
- role: "none",
976
- className: "sr-only"
977
- }, /* @__PURE__ */ React10.createElement(Surface6, {
978
- role: "document-title",
979
- data: {
980
- subject: activeNode
981
- },
982
- limit: 1
983
- }));
984
- } finally {
985
- _effect.f();
986
- }
987
- };
988
-
989
- // src/components/DeckLayout/DeckMain.tsx
990
- import { useSignals as _useSignals14 } from "@preact-signals/safe-react/tracking";
991
- import { untracked } from "@preact/signals-core";
992
- import React14, { Fragment as Fragment3, useCallback as useCallback6, useEffect as useEffect4, useMemo as useMemo5, useRef as useRef2 } from "react";
993
- import { Capabilities, LayoutAction as LayoutAction5, createIntent as createIntent6 } from "@dxos/app-framework";
994
- import { useCapability as useCapability6, useIntentDispatcher as useIntentDispatcher6, usePluginManager } from "@dxos/app-framework/react";
995
- import { AttentionCapabilities } from "@dxos/plugin-attention";
996
- import { Main as Main3, useMediaQuery, useOnTransition } from "@dxos/react-ui";
997
- import { DEFAULT_HORIZONTAL_SIZE, Stack, StackContext } from "@dxos/react-ui-stack";
998
- import { mainPaddingTransitions, mx as mx6 } from "@dxos/react-ui-theme";
999
-
1000
- // src/components/DeckLayout/ContentEmpty.tsx
1001
- import { useSignals as _useSignals11 } from "@preact-signals/safe-react/tracking";
1002
- import React11 from "react";
1003
- import { Surface as Surface7, useCapability as useCapability5 } from "@dxos/app-framework/react";
1004
- var ContentEmpty = () => {
1005
- var _effect = _useSignals11();
1006
- try {
1007
- const breakpoint = useBreakpoints();
1008
- const { deck } = useCapability5(DeckCapabilities.MutableDeckState);
1009
- const layoutMode = getMode(deck);
1010
- const topbar = layoutAppliesTopbar(breakpoint, layoutMode);
1011
- return /* @__PURE__ */ React11.createElement("div", {
1012
- role: "none",
1013
- className: "grid place-items-center p-8 relative bg-deckSurface",
1014
- "data-testid": "layoutPlugin.firstRunMessage"
1015
- }, /* @__PURE__ */ React11.createElement(Surface7, {
1016
- role: "keyshortcuts"
1017
- }), !topbar && /* @__PURE__ */ React11.createElement(ToggleSidebarButton, {
1018
- variant: "default",
1019
- classNames: fixedSidebarToggleStyles
1020
- }));
1021
- } finally {
1022
- _effect.f();
1023
- }
1024
- };
1025
-
1026
- // src/components/DeckLayout/StatusBar.tsx
1027
- import { useSignals as _useSignals12 } from "@preact-signals/safe-react/tracking";
1028
- import React12 from "react";
1029
- import { Surface as Surface8 } from "@dxos/app-framework/react";
1030
- import { useLandmarkMover } from "@dxos/react-ui";
1031
- var StatusBar = ({ showHints }) => {
1032
- var _effect = _useSignals12();
1033
- try {
1034
- const mover = useLandmarkMover(void 0, "3");
1035
- return /* @__PURE__ */ React12.createElement("div", {
1036
- role: "contentinfo",
1037
- className: "fixed block-end-0 inset-inline-0 bs-[--statusbar-size] border-bs border-separator z-[2] flex text-description",
1038
- ...mover
1039
- }, showHints && /* @__PURE__ */ React12.createElement(Surface8, {
1040
- role: "hints",
1041
- limit: 1
1042
- }), /* @__PURE__ */ React12.createElement(Surface8, {
1043
- role: "status-bar",
1044
- limit: 1
1045
- }));
1046
- } finally {
1047
- _effect.f();
1048
- }
1049
- };
1050
-
1051
- // src/components/DeckLayout/Topbar.tsx
1052
- import { useSignals as _useSignals13 } from "@preact-signals/safe-react/tracking";
1053
- import React13 from "react";
1054
- var Topbar = () => {
1055
- var _effect = _useSignals13();
1056
- try {
1057
- return /* @__PURE__ */ React13.createElement(Banner, {
1058
- variant: "topbar"
1059
- });
1060
- } finally {
1061
- _effect.f();
1062
- }
1063
- };
1064
-
1065
- // src/components/DeckLayout/DeckMain.tsx
1066
- var DeckMain = () => {
1067
- var _effect = _useSignals14();
1068
- try {
1069
- const { dispatchPromise: dispatch } = useIntentDispatcher6();
1070
- const settings = useCapability6(Capabilities.SettingsStore).getStore(meta.id)?.value;
1071
- const context = useCapability6(DeckCapabilities.MutableDeckState);
1072
- const { sidebarState, complementarySidebarState, complementarySidebarPanel, deck } = context;
1073
- const { active, activeCompanions, fullscreen, solo, plankSizing } = deck;
1074
- const layoutMode = getMode(deck);
1075
- const breakpoint = useBreakpoints();
1076
- const topbar = layoutAppliesTopbar(breakpoint, layoutMode);
1077
- const hoistStatusbar = useHoistStatusbar(breakpoint, layoutMode);
1078
- const pluginManager = usePluginManager();
1079
- const scrollLeftRef = useRef2(null);
1080
- const deckRef = useRef2(null);
1081
- useEffect4(() => {
1082
- const attended = untracked(() => {
1083
- const attention = pluginManager.context.getCapability(AttentionCapabilities.Attention);
1084
- return attention.current;
1085
- });
1086
- const firstId = solo ?? active[0];
1087
- if (attended.length === 0 && firstId) {
1088
- document.querySelector(`article[data-attendable-id="${firstId}"] button`)?.focus();
1089
- }
1090
- }, []);
1091
- const [isNotMobile] = useMediaQuery("md");
1092
- const shouldRevert = useRef2(false);
1093
- useEffect4(() => {
1094
- if (!isNotMobile && getMode(deck) === "deck") {
1095
- const attended = untracked(() => {
1096
- const attention = pluginManager.context.getCapability(AttentionCapabilities.Attention);
1097
- return attention.current;
1098
- });
1099
- shouldRevert.current = true;
1100
- void dispatch(createIntent6(LayoutAction5.SetLayoutMode, {
1101
- part: "mode",
1102
- subject: attended[0],
1103
- options: {
1104
- mode: "solo"
1105
- }
1106
- }));
1107
- } else if (isNotMobile && getMode(deck) === "solo" && shouldRevert.current) {
1108
- void dispatch(createIntent6(LayoutAction5.SetLayoutMode, {
1109
- part: "mode",
1110
- options: {
1111
- revert: true
1112
- }
1113
- }));
1114
- }
1115
- }, [
1116
- isNotMobile,
1117
- deck,
1118
- dispatch
1119
- ]);
1120
- useEffect4(() => {
1121
- if (!settings?.enableDeck && layoutMode === "deck") {
1122
- void dispatch(createIntent6(LayoutAction5.SetLayoutMode, {
1123
- part: "mode",
1124
- subject: active[0],
1125
- options: {
1126
- mode: "solo"
1127
- }
1128
- }));
1129
- }
1130
- }, [
1131
- settings?.enableDeck,
1132
- dispatch,
1133
- active,
1134
- layoutMode
1135
- ]);
1136
- const handleResize = useCallback6(() => {
1137
- scrollLeftRef.current = null;
1138
- }, []);
1139
- useEffect4(() => {
1140
- window.addEventListener("resize", handleResize);
1141
- return () => window.removeEventListener("resize", handleResize);
1142
- }, [
1143
- handleResize
1144
- ]);
1145
- const restoreScroll = useCallback6(() => {
1146
- if (deckRef.current && scrollLeftRef.current != null) {
1147
- deckRef.current.scrollLeft = scrollLeftRef.current;
1148
- }
1149
- }, []);
1150
- useOnTransition(layoutMode, (mode) => mode !== "deck", "deck", restoreScroll);
1151
- const handleScroll = useCallback6((event) => {
1152
- if (!solo && event.currentTarget === event.target) {
1153
- scrollLeftRef.current = event.target.scrollLeft;
1154
- }
1155
- }, [
1156
- solo
1157
- ]);
1158
- const isEmpty = !solo && active.length === 0;
1159
- const padding = useMemo5(() => {
1160
- if (!solo && settings?.overscroll === "centering") {
1161
- return calculateOverscroll(active.length);
1162
- }
1163
- return {};
1164
- }, [
1165
- solo,
1166
- settings?.overscroll,
1167
- deck
1168
- ]);
1169
- const mainPosition = useMemo5(() => [
1170
- "grid !block-start-[env(safe-area-inset-top)]",
1171
- topbar && "!block-start-[calc(env(safe-area-inset-top)+var(--rail-size))]",
1172
- hoistStatusbar && "lg:block-end-[--statusbar-size]"
1173
- ], [
1174
- topbar,
1175
- hoistStatusbar
1176
- ]);
1177
- const { order, itemsCount } = useMemo5(() => {
1178
- return active.reduce((acc, entryId) => {
1179
- acc.order[entryId] = acc.itemsCount + 1;
1180
- acc.itemsCount += activeCompanions?.[entryId] ? 3 : 2;
1181
- return acc;
1182
- }, {
1183
- order: {},
1184
- itemsCount: 0
1185
- });
1186
- }, [
1187
- active,
1188
- activeCompanions
1189
- ]);
1190
- return /* @__PURE__ */ React14.createElement(Main3.Root, {
1191
- navigationSidebarState: fullscreen ? "closed" : context.sidebarState,
1192
- complementarySidebarState: fullscreen ? "closed" : context.complementarySidebarState,
1193
- onNavigationSidebarStateChange: (next) => context.sidebarState = next,
1194
- onComplementarySidebarStateChange: (next) => context.complementarySidebarState = next
1195
- }, /* @__PURE__ */ React14.createElement(Sidebar, null), /* @__PURE__ */ React14.createElement(ComplementarySidebar, {
1196
- current: complementarySidebarPanel
1197
- }), /* @__PURE__ */ React14.createElement(Main3.Overlay, null), isEmpty && /* @__PURE__ */ React14.createElement(Main3.Content, {
1198
- bounce: true,
1199
- handlesFocus: true,
1200
- classNames: mainPosition
1201
- }, /* @__PURE__ */ React14.createElement(ContentEmpty, null)), !isEmpty && /* @__PURE__ */ React14.createElement(Main3.Content, {
1202
- bounce: true,
1203
- handlesFocus: true,
1204
- classNames: mainPosition,
1205
- style: {
1206
- "--main-spacing": settings?.encapsulatedPlanks ? "0.75rem" : "0",
1207
- "--dx-main-sidebarWidth": sidebarState === "expanded" ? "var(--nav-sidebar-size)" : sidebarState === "collapsed" ? "var(--l0-size)" : "0",
1208
- "--dx-main-complementaryWidth": complementarySidebarState === "expanded" ? "var(--complementary-sidebar-size)" : complementarySidebarState === "collapsed" ? "var(--rail-size)" : "0",
1209
- "--dx-main-contentFirstWidth": `${plankSizing[active[0] ?? "never"] ?? DEFAULT_HORIZONTAL_SIZE}rem`,
1210
- "--dx-main-contentLastWidth": `${plankSizing[active[(active.length ?? 1) - 1] ?? "never"] ?? DEFAULT_HORIZONTAL_SIZE}rem`
1211
- }
1212
- }, /* @__PURE__ */ React14.createElement("div", {
1213
- role: "none",
1214
- className: !solo ? "relative bg-deckSurface overflow-hidden" : "sr-only",
1215
- ...solo && {
1216
- inert: true
1217
- }
1218
- }, !topbar && !fullscreen && /* @__PURE__ */ React14.createElement(ToggleSidebarButton, {
1219
- classNames: fixedSidebarToggleStyles
1220
- }), !topbar && !fullscreen && /* @__PURE__ */ React14.createElement(ToggleComplementarySidebarButton, {
1221
- classNames: fixedComplementarySidebarToggleStyles
1222
- }), /* @__PURE__ */ React14.createElement(Stack, {
1223
- ref: deckRef,
1224
- orientation: "horizontal",
1225
- size: "contain",
1226
- itemsCount: itemsCount - 1,
1227
- classNames: [
1228
- "absolute inset-block-[--main-spacing] -inset-inline-px bs-[calc(100%-2*var(--main-spacing))]",
1229
- mainPaddingTransitions
1230
- ],
1231
- style: padding,
1232
- onScroll: handleScroll
1233
- }, active.map((entryId) => /* @__PURE__ */ React14.createElement(Fragment3, {
1234
- key: entryId
1235
- }, /* @__PURE__ */ React14.createElement(PlankSeparator, {
1236
- order: order[entryId] - 1,
1237
- encapsulate: !!settings?.enableDeck
1238
- }), /* @__PURE__ */ React14.createElement(Plank, {
1239
- id: entryId,
1240
- companionId: activeCompanions?.[entryId],
1241
- part: "deck",
1242
- order: order[entryId],
1243
- active,
1244
- layoutMode,
1245
- settings
1246
- }))))), /* @__PURE__ */ React14.createElement("div", {
1247
- role: "none",
1248
- className: solo ? "relative overflow-hidden bg-deckSurface" : "sr-only",
1249
- ...!solo && {
1250
- inert: true
1251
- }
1252
- }, !topbar && !fullscreen && /* @__PURE__ */ React14.createElement(ToggleSidebarButton, {
1253
- classNames: fixedSidebarToggleStyles
1254
- }), !topbar && !fullscreen && /* @__PURE__ */ React14.createElement(ToggleComplementarySidebarButton, {
1255
- classNames: fixedComplementarySidebarToggleStyles
1256
- }), /* @__PURE__ */ React14.createElement(StackContext.Provider, {
1257
- value: {
1258
- orientation: "horizontal",
1259
- size: "contain",
1260
- rail: true
1261
- }
1262
- }, /* @__PURE__ */ React14.createElement(Plank, {
1263
- id: solo,
1264
- companionId: solo ? activeCompanions?.[solo] : void 0,
1265
- part: "solo",
1266
- layoutMode,
1267
- settings
1268
- })))), topbar && /* @__PURE__ */ React14.createElement(Topbar, null), hoistStatusbar && /* @__PURE__ */ React14.createElement(StatusBar, {
1269
- showHints: settings?.showHints
1270
- }));
1271
- } finally {
1272
- _effect.f();
1273
- }
1274
- };
1275
- var PlankSeparator = ({ order, encapsulate }) => {
1276
- var _effect = _useSignals14();
1277
- try {
1278
- return order > 0 ? /* @__PURE__ */ React14.createElement("span", {
1279
- role: "separator",
1280
- className: mx6("row-span-2 bg-deckSurface", encapsulate ? "is-0" : "is-4"),
1281
- style: {
1282
- gridColumn: order
1283
- }
1284
- }) : null;
1285
- } finally {
1286
- _effect.f();
1287
- }
1288
- };
1289
-
1290
- // src/components/DeckLayout/Dialog.tsx
1291
- import { useSignals as _useSignals15 } from "@preact-signals/safe-react/tracking";
1292
- import React15 from "react";
1293
- import { Surface as Surface9, useCapability as useCapability7 } from "@dxos/app-framework/react";
1294
- import { AlertDialog, Dialog as NaturalDialog } from "@dxos/react-ui";
1295
- var Dialog = () => {
1296
- var _effect = _useSignals15();
1297
- try {
1298
- const context = useCapability7(DeckCapabilities.MutableDeckState);
1299
- const { dialogOpen, dialogType, dialogBlockAlign, dialogOverlayClasses, dialogOverlayStyle, dialogContent } = context;
1300
- const Root = dialogType === "alert" ? AlertDialog.Root : NaturalDialog.Root;
1301
- const Overlay = dialogType === "alert" ? AlertDialog.Overlay : NaturalDialog.Overlay;
1302
- return /* @__PURE__ */ React15.createElement(Root, {
1303
- modal: dialogBlockAlign !== "end",
1304
- open: dialogOpen,
1305
- onOpenChange: (nextOpen) => context.dialogOpen = nextOpen
1306
- }, dialogBlockAlign === "end" ? (
1307
- // TODO(burdon): Placeholder creates a suspense boundary; replace with defaults.
1308
- /* @__PURE__ */ React15.createElement(Surface9, {
1309
- role: "dialog",
1310
- data: dialogContent,
1311
- limit: 1,
1312
- fallback: PlankContentError,
1313
- placeholder: /* @__PURE__ */ React15.createElement("div", null)
1314
- })
1315
- ) : /* @__PURE__ */ React15.createElement(Overlay, {
1316
- blockAlign: dialogBlockAlign,
1317
- classNames: dialogOverlayClasses,
1318
- style: dialogOverlayStyle
1319
- }, /* @__PURE__ */ React15.createElement(Surface9, {
1320
- role: "dialog",
1321
- data: dialogContent,
1322
- limit: 1,
1323
- fallback: PlankContentError
1324
- })));
1325
- } finally {
1326
- _effect.f();
1327
- }
1328
- };
1329
-
1330
- // src/components/DeckLayout/Popover.tsx
1331
- import { useSignals as _useSignals16 } from "@preact-signals/safe-react/tracking";
1332
- import { createContext } from "@radix-ui/react-context";
1333
- import React16, { useCallback as useCallback7, useEffect as useEffect5, useRef as useRef3, useState as useState3 } from "react";
1334
- import { Surface as Surface10, useCapability as useCapability8 } from "@dxos/app-framework/react";
1335
- import { Popover as Popover2 } from "@dxos/react-ui";
1336
- var DEBOUNCE_DELAY = 40;
1337
- var [DeckPopoverProvider, useDeckPopoverContext] = createContext("DeckPopover");
1338
- var PopoverRoot = ({ children }) => {
1339
- var _effect = _useSignals16();
1340
- try {
1341
- const layout = useCapability8(DeckCapabilities.MutableDeckState);
1342
- const virtualRef = useRef3(null);
1343
- const [virtualIter, setVirtualIter] = useState3(0);
1344
- const [open, setOpen] = useState3(false);
1345
- const debounceRef = useRef3(null);
1346
- useEffect5(() => {
1347
- setOpen(false);
1348
- if (layout.popoverOpen) {
1349
- if (debounceRef.current) {
1350
- clearTimeout(debounceRef.current);
1351
- }
1352
- if (layout.popoverAnchor && virtualRef.current !== layout.popoverAnchor) {
1353
- virtualRef.current = layout.popoverAnchor ?? null;
1354
- setVirtualIter((iter) => iter + 1);
1355
- }
1356
- debounceRef.current = setTimeout(() => setOpen(true), DEBOUNCE_DELAY);
1357
- }
1358
- }, [
1359
- layout.popoverOpen,
1360
- layout.popoverAnchorId,
1361
- layout.popoverAnchor,
1362
- layout.popoverContent
1363
- ]);
1364
- return /* @__PURE__ */ React16.createElement(DeckPopoverProvider, {
1365
- setOpen
1366
- }, /* @__PURE__ */ React16.createElement(Popover2.Root, {
1367
- modal: false,
1368
- open
1369
- }, layout.popoverAnchor && /* @__PURE__ */ React16.createElement(Popover2.VirtualTrigger, {
1370
- key: virtualIter,
1371
- virtualRef
1372
- }), children));
1373
- } finally {
1374
- _effect.f();
1375
- }
1376
- };
1377
- var PopoverContent = () => {
1378
- var _effect = _useSignals16();
1379
- try {
1380
- const layout = useCapability8(DeckCapabilities.MutableDeckState);
1381
- const { setOpen } = useDeckPopoverContext("PopoverContent");
1382
- const handleClose = useCallback7((event) => {
1383
- if (
1384
- // TODO(thure): CodeMirror should not focus itself when it updates.
1385
- event.type === "dismissableLayer.focusOutside" && event.currentTarget?.classList.contains("cm-content")
1386
- ) {
1387
- event.preventDefault();
1388
- } else {
1389
- setOpen(false);
1390
- layout.popoverOpen = false;
1391
- layout.popoverAnchor = void 0;
1392
- layout.popoverAnchorId = void 0;
1393
- layout.popoverSide = void 0;
1394
- }
1395
- }, [
1396
- setOpen
1397
- ]);
1398
- return /* @__PURE__ */ React16.createElement(Popover2.Portal, null, /* @__PURE__ */ React16.createElement(Popover2.Content, {
1399
- side: layout.popoverSide,
1400
- sticky: "always",
1401
- hideWhenDetached: true,
1402
- onInteractOutside: handleClose,
1403
- onEscapeKeyDown: handleClose
1404
- }, /* @__PURE__ */ React16.createElement(Popover2.Viewport, null, /* @__PURE__ */ React16.createElement(Surface10, {
1405
- role: "card--popover",
1406
- data: layout.popoverContent,
1407
- limit: 1
1408
- })), /* @__PURE__ */ React16.createElement(Popover2.Arrow, null)));
1409
- } finally {
1410
- _effect.f();
1411
- }
1412
- };
1413
-
1414
- // src/components/DeckLayout/Toast.tsx
1415
- import { useSignals as _useSignals17 } from "@preact-signals/safe-react/tracking";
1416
- import React17 from "react";
1417
- import { Button, Icon as Icon2, Toast as NaturalToast, toLocalizedString as toLocalizedString3, useTranslation as useTranslation7 } from "@dxos/react-ui";
1418
- var Toast = ({ id, title, description, icon, duration, actionLabel, actionAlt, closeLabel, onAction, onOpenChange }) => {
1419
- var _effect = _useSignals17();
1420
- try {
1421
- const { t } = useTranslation7(meta.id);
1422
- return /* @__PURE__ */ React17.createElement(NaturalToast.Root, {
1423
- "data-testid": id,
1424
- defaultOpen: true,
1425
- duration,
1426
- onOpenChange
1427
- }, /* @__PURE__ */ React17.createElement(NaturalToast.Body, null, /* @__PURE__ */ React17.createElement(NaturalToast.Title, {
1428
- classNames: "items-center"
1429
- }, icon && /* @__PURE__ */ React17.createElement(Icon2, {
1430
- icon,
1431
- classNames: "inline mr-1"
1432
- }), title && /* @__PURE__ */ React17.createElement("span", null, toLocalizedString3(title, t))), description && /* @__PURE__ */ React17.createElement(NaturalToast.Description, null, description && toLocalizedString3(description, t))), /* @__PURE__ */ React17.createElement(NaturalToast.Actions, null, onAction && actionAlt && actionLabel && /* @__PURE__ */ React17.createElement(NaturalToast.Action, {
1433
- altText: toLocalizedString3(actionAlt, t),
1434
- asChild: true
1435
- }, /* @__PURE__ */ React17.createElement(Button, {
1436
- "data-testid": "toast.action",
1437
- variant: "primary",
1438
- onClick: () => onAction?.()
1439
- }, toLocalizedString3(actionLabel, t))), closeLabel && /* @__PURE__ */ React17.createElement(NaturalToast.Close, {
1440
- asChild: true
1441
- }, /* @__PURE__ */ React17.createElement(Button, {
1442
- "data-testid": "toast.close"
1443
- }, toLocalizedString3(closeLabel, t)))));
1444
- } finally {
1445
- _effect.f();
1446
- }
1447
- };
1448
- var Toaster = ({ toasts, onDismissToast }) => {
1449
- var _effect = _useSignals17();
1450
- try {
1451
- return /* @__PURE__ */ React17.createElement(React17.Fragment, null, toasts?.map((toast) => /* @__PURE__ */ React17.createElement(Toast, {
1452
- ...toast,
1453
- key: toast.id,
1454
- onOpenChange: (open) => {
1455
- if (!open) {
1456
- onDismissToast?.(toast.id);
1457
- }
1458
- return open;
1459
- }
1460
- })));
1461
- } finally {
1462
- _effect.f();
1463
- }
1464
- };
1465
-
1466
- // src/components/DeckLayout/DeckLayout.tsx
1467
- var DeckLayout = ({ onDismissToast }) => {
1468
- var _effect = _useSignals18();
1469
- try {
1470
- const context = useCapability9(DeckCapabilities.MutableDeckState);
1471
- const { toasts } = context;
1472
- return /* @__PURE__ */ React18.createElement(PopoverRoot, null, /* @__PURE__ */ React18.createElement(ActiveNode, null), /* @__PURE__ */ React18.createElement(DeckMain, null), /* @__PURE__ */ React18.createElement(PopoverContent, null), /* @__PURE__ */ React18.createElement(Dialog, null), /* @__PURE__ */ React18.createElement(Toaster, {
1473
- toasts,
1474
- onDismissToast
1475
- }));
1476
- } finally {
1477
- _effect.f();
1478
- }
1479
- };
1480
-
1481
- // src/components/DeckSettings/DeckSettings.tsx
1482
- import { useSignals as _useSignals19 } from "@preact-signals/safe-react/tracking";
1483
- import React19 from "react";
1484
- import { Input, Select, useTranslation as useTranslation8 } from "@dxos/react-ui";
1485
- import { ControlGroup, ControlItemInput, ControlPage, ControlSection } from "@dxos/react-ui-form";
1486
- var isSocket = !!globalThis.__args;
1487
- var DeckSettings = ({ settings }) => {
1488
- var _effect = _useSignals19();
1489
- try {
1490
- const { t } = useTranslation8(meta.id);
1491
- return /* @__PURE__ */ React19.createElement(ControlPage, null, /* @__PURE__ */ React19.createElement(ControlSection, {
1492
- title: t("settings title", {
1493
- ns: meta.id
1494
- })
1495
- }, /* @__PURE__ */ React19.createElement(ControlGroup, null, /* @__PURE__ */ React19.createElement(ControlItemInput, {
1496
- title: t("settings enable deck label")
1497
- }, /* @__PURE__ */ React19.createElement(Input.Switch, {
1498
- checked: settings.enableDeck,
1499
- onCheckedChange: (checked) => settings.enableDeck = checked
1500
- })), /* @__PURE__ */ React19.createElement(ControlItemInput, {
1501
- title: t("settings encapsulated planks label")
1502
- }, /* @__PURE__ */ React19.createElement(Input.Switch, {
1503
- checked: settings.encapsulatedPlanks ?? false,
1504
- onCheckedChange: (checked) => settings.encapsulatedPlanks = checked
1505
- })), /* @__PURE__ */ React19.createElement(ControlItemInput, {
1506
- title: t("select new plank positioning label")
1507
- }, /* @__PURE__ */ React19.createElement(Select.Root, {
1508
- disabled: !settings.enableDeck,
1509
- value: settings.newPlankPositioning ?? "start",
1510
- onValueChange: (value) => settings.newPlankPositioning = value
1511
- }, /* @__PURE__ */ React19.createElement(Select.TriggerButton, {
1512
- placeholder: t("select new plank positioning placeholder")
1513
- }), /* @__PURE__ */ React19.createElement(Select.Portal, null, /* @__PURE__ */ React19.createElement(Select.Content, null, /* @__PURE__ */ React19.createElement(Select.Viewport, null, NewPlankPositions.map((position) => /* @__PURE__ */ React19.createElement(Select.Option, {
1514
- key: position,
1515
- value: position
1516
- }, t(`settings new plank position ${position} label`)))), /* @__PURE__ */ React19.createElement(Select.Arrow, null))))), /* @__PURE__ */ React19.createElement(ControlItemInput, {
1517
- title: t("settings overscroll label")
1518
- }, /* @__PURE__ */ React19.createElement(Select.Root, {
1519
- disabled: !settings.enableDeck,
1520
- value: settings.overscroll ?? "none",
1521
- onValueChange: (value) => settings.overscroll = value
1522
- }, /* @__PURE__ */ React19.createElement(Select.TriggerButton, {
1523
- placeholder: t("select overscroll placeholder")
1524
- }), /* @__PURE__ */ React19.createElement(Select.Portal, null, /* @__PURE__ */ React19.createElement(Select.Content, null, /* @__PURE__ */ React19.createElement(Select.Viewport, null, OverscrollOptions.map((option) => /* @__PURE__ */ React19.createElement(Select.Option, {
1525
- key: option,
1526
- value: option
1527
- }, t(`settings overscroll ${option} label`)))), /* @__PURE__ */ React19.createElement(Select.Arrow, null))))), /* @__PURE__ */ React19.createElement(ControlItemInput, {
1528
- title: t("settings enable statusbar label")
1529
- }, /* @__PURE__ */ React19.createElement(Input.Switch, {
1530
- checked: settings.enableStatusbar,
1531
- onCheckedChange: (checked) => settings.enableStatusbar = checked
1532
- })), /* @__PURE__ */ React19.createElement(ControlItemInput, {
1533
- title: t("settings show hints label")
1534
- }, /* @__PURE__ */ React19.createElement(Input.Switch, {
1535
- checked: settings.showHints,
1536
- onCheckedChange: (checked) => settings.showHints = checked
1537
- })), !isSocket && /* @__PURE__ */ React19.createElement(ControlItemInput, {
1538
- title: t("settings native redirect label")
1539
- }, /* @__PURE__ */ React19.createElement(Input.Switch, {
1540
- checked: settings.enableNativeRedirect,
1541
- onCheckedChange: (checked) => settings.enableNativeRedirect = checked
1542
- })))));
1543
- } finally {
1544
- _effect.f();
1545
- }
1546
- };
1547
-
1548
- export {
1549
- Banner,
1550
- DeckLayout,
1551
- DeckSettings
1552
- };
1553
- //# sourceMappingURL=chunk-VUJ6UNIJ.mjs.map