@ahpd/web 0.3.1 → 0.4.0

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 (186) hide show
  1. package/README.md +27 -20
  2. package/dist/app/ahpw.svg +4 -4
  3. package/dist/app/assets/ActionList-Bc-jZDaT.css +1 -0
  4. package/dist/app/assets/ActionList-QwhYPQiB.js +1 -0
  5. package/dist/app/assets/ActivityBarItem-B2nm6zWz.css +1 -0
  6. package/dist/app/assets/ActivityBarItem-DNjVAT_E.js +1 -0
  7. package/dist/app/assets/Alert-BhdRA0LL.js +1 -0
  8. package/dist/app/assets/AudioPage-CTBMdEWh.js +1 -0
  9. package/dist/app/assets/ChoicePicker-I5V6f-aN.js +1 -0
  10. package/dist/app/assets/CodeEditor-C-ygqVsY.js +3 -0
  11. package/dist/app/assets/CommandPalette-wYX5XXUP.js +1 -0
  12. package/dist/app/assets/Composer-DHrV5Yeq.js +2 -0
  13. package/dist/app/assets/{ContextMenu-BV1gdog0.js → ContextMenu-DYnWIBAF.js} +1 -1
  14. package/dist/app/assets/CopyButton-Dqp4FT7R.js +1 -0
  15. package/dist/app/assets/{DataTable-8woVlU4S.js → DataTable-Di749duh.js} +1 -1
  16. package/dist/app/assets/Details-DD3vmkCl.js +1 -0
  17. package/dist/app/assets/DiffPage-BId8ozv7.js +3 -0
  18. package/dist/app/assets/Edit-jFXpMjZc.js +1 -0
  19. package/dist/app/assets/Explorer-COyfGhcR.js +1 -0
  20. package/dist/app/assets/Explorer-Cau0IyIv.js +1 -0
  21. package/dist/app/assets/Explorer-DV3iMW_H.js +1 -0
  22. package/dist/app/assets/Explorer-Dfcbd81k.js +1 -0
  23. package/dist/app/assets/Explorer-gCfiH4Xy.js +1 -0
  24. package/dist/app/assets/ExplorerList-0duzRsX6.js +1 -0
  25. package/dist/app/assets/FilePage-C2oyHqAU.js +1 -0
  26. package/dist/app/assets/Filter-C4R4cZ-3.js +1 -0
  27. package/dist/app/assets/HeaderAction-5M2x4m1w.css +1 -0
  28. package/dist/app/assets/HeaderAction-Vq-h0k1X.js +1 -0
  29. package/dist/app/assets/HostSwitcher-CpnK8XaS.js +1 -0
  30. package/dist/app/assets/ImagePage-iB_X7JK-.js +1 -0
  31. package/dist/app/assets/Info-zs1cf5D4.js +1 -0
  32. package/dist/app/assets/LocaleToggle-Bnt4p8rr.js +1 -0
  33. package/dist/app/assets/LogPage-BksXBBRH.js +1 -0
  34. package/dist/app/assets/LoginForm-C83NjSZc.js +1 -0
  35. package/dist/app/assets/MarkdownPage-B3Uf-uhF.js +1 -0
  36. package/dist/app/assets/Modal-xWzwLA8s.js +1 -0
  37. package/dist/app/assets/MountTitle-BYR1nX0U.js +1 -0
  38. package/dist/app/assets/New-DSGbzxwy.js +4 -0
  39. package/dist/app/assets/OpenEditors-FoK0L7cG.js +1 -0
  40. package/dist/app/assets/Page-C__t0LNx.js +1 -0
  41. package/dist/app/assets/Page-D2Aojkph.js +2 -0
  42. package/dist/app/assets/Page-D_hX82GR.js +1 -0
  43. package/dist/app/assets/PageAlert-B8ulCXV4.js +1 -0
  44. package/dist/app/assets/Pagination-Bt7IC1tA.js +1 -0
  45. package/dist/app/assets/PortaLock-Q4MlsHWm.js +2 -0
  46. package/dist/app/assets/SchemaForm-byhtwSG1.css +1 -0
  47. package/dist/app/assets/SchemaForm-uhkLDWDC.js +1 -0
  48. package/dist/app/assets/Settings-D7Fa-31J.js +1 -0
  49. package/dist/app/assets/{SigillumGate-Bq_GLDvI.js → SigillumGate-B75RU_FM.js} +1 -1
  50. package/dist/app/assets/SingleLayout-DrZzqh9e.js +1 -0
  51. package/dist/app/assets/SpatialLayout-DZfRmqF0.js +1 -0
  52. package/dist/app/assets/Spinner-CBEPv0eM.js +1 -0
  53. package/dist/app/assets/SplitLayout-Bytjyrrj.js +1 -0
  54. package/dist/app/assets/StackLayout-BCyRY0nG.js +1 -0
  55. package/dist/app/assets/Start-DX8T0ii8.js +1 -0
  56. package/dist/app/assets/TabLayout-Czi2A6i3.js +1 -0
  57. package/dist/app/assets/TabPanelLayout-B_7L0Dyp.js +1 -0
  58. package/dist/app/assets/TerminalPage-BOIBCy2W.js +18 -0
  59. package/dist/app/assets/ThemeModeToggle-CFpNVcU1.js +1 -0
  60. package/dist/app/assets/ThemePicker-CqnA9Que.js +1 -0
  61. package/dist/app/assets/Tree-BvNPcfhW.js +1 -0
  62. package/dist/app/assets/{VideoPage-Cz7g_2E1.js → VideoPage-v3zVSos7.js} +1 -1
  63. package/dist/app/assets/WindowControls-BuiQSjfa.js +1 -0
  64. package/dist/app/assets/actions-CIzLn0YN.js +1 -0
  65. package/dist/app/assets/changeset-IbJWvDqP.js +1 -0
  66. package/dist/app/assets/{channel-UD2KGCy_.js → channel-C6Ss9Aem.js} +1 -1
  67. package/dist/app/assets/{clicks-DIh3kBLi.js → clicks-Doh5a3f9.js} +1 -1
  68. package/dist/app/assets/composer-commands-BOXuqfcP.js +2 -0
  69. package/dist/app/assets/data-DPJ4OTLn.js +2 -0
  70. package/dist/app/assets/{dist-C5-Hv917.js → dist-2b3tV-Z7.js} +1 -1
  71. package/dist/app/assets/dist-BCQ-dSMw.js +9 -0
  72. package/dist/app/assets/{dist-CxEuuaKq.js → dist-BMwhNxyY.js} +1 -1
  73. package/dist/app/assets/dist-BVWBMVma.js +1 -0
  74. package/dist/app/assets/dist-BvY_obDK.js +13 -0
  75. package/dist/app/assets/dist-CHrzvaer.js +11 -0
  76. package/dist/app/assets/{dist-1MAn9CBM.js → dist-CaJpOCLg.js} +1 -1
  77. package/dist/app/assets/{dist-BdNRSgzN.js → dist-Cy5nEZGW.js} +2 -2
  78. package/dist/app/assets/dist-DUiHb392.js +1 -0
  79. package/dist/app/assets/dist-DVLbqnEo.js +23 -0
  80. package/dist/app/assets/dist-DrG75V-Z.js +6 -0
  81. package/dist/app/assets/dist-DxvAUGwy.js +1 -0
  82. package/dist/app/assets/{dist-uvIW_qsj.js → dist-UsePpmWK.js} +1 -1
  83. package/dist/app/assets/{dist-Bq_hlZV8.js → dist-ZM5yW1OM.js} +1 -1
  84. package/dist/app/assets/dist-a56DBHT4.js +1 -0
  85. package/dist/app/assets/dist-fdt_fTp5.js +1 -0
  86. package/dist/app/assets/{emojis-7RT6GvLa.js → emojis-DanG-8fr.js} +1 -1
  87. package/dist/app/assets/{folder-path-CTpCmycG.js → folder-path-CJJ4uFfN.js} +1 -1
  88. package/dist/app/assets/grouping-DtiUUpdw.js +1 -0
  89. package/dist/app/assets/index-BiJaGB50.css +1 -0
  90. package/dist/app/assets/index-xynK_AEL.js +14 -0
  91. package/dist/app/assets/label-hTY0RCEf.js +1 -0
  92. package/dist/app/assets/locales-Dnk_Y338.js +1 -0
  93. package/dist/app/assets/media-Da9OmSvb.js +1 -0
  94. package/dist/app/assets/notify-BmjJL_fx.js +1 -0
  95. package/dist/app/assets/sessions-CLjdYeF3.js +2 -0
  96. package/dist/app/assets/state-CKNqusrK.js +1 -0
  97. package/dist/app/assets/terminal-_7S7Eyr-.js +1 -0
  98. package/dist/app/assets/text-D_lQQGN1.js +1 -0
  99. package/dist/app/assets/turn-z1TPlA5Q.js +3 -0
  100. package/dist/app/assets/useI18n-T3BwAm0z.js +1 -0
  101. package/dist/app/assets/useStoreLabel-BtAsVCsr.js +1 -0
  102. package/dist/app/assets/viewers-Vk4T9IkZ.js +1 -0
  103. package/dist/app/assets/words-DF1J9CaQ.js +2 -0
  104. package/dist/app/index.html +28 -24
  105. package/dist/plugin/index.d.ts +2 -2
  106. package/dist/plugin/index.js +2 -2
  107. package/dist/plugin/index.js.map +1 -1
  108. package/package.json +4 -3
  109. package/dist/app/assets/ActionList-Bawu-Lja.css +0 -1
  110. package/dist/app/assets/ActionList-aOUHK9Z9.js +0 -1
  111. package/dist/app/assets/ActivityBarItem-Cyes10aK.css +0 -1
  112. package/dist/app/assets/ActivityBarItem-DVzJQ1uh.js +0 -1
  113. package/dist/app/assets/Alert-CHZkhmDE.js +0 -1
  114. package/dist/app/assets/AudioPage-DAAck9ph.js +0 -1
  115. package/dist/app/assets/ChoicePicker-Cg4Cj6B2.js +0 -1
  116. package/dist/app/assets/Composer-Dp_Z0bXp.js +0 -2
  117. package/dist/app/assets/CopyButton-DWmFc5fw.js +0 -1
  118. package/dist/app/assets/Details-ByJkvhJN.js +0 -1
  119. package/dist/app/assets/DiffPage-Ck21x0bd.js +0 -3
  120. package/dist/app/assets/Edit-rv9ZDDDu.js +0 -1
  121. package/dist/app/assets/Explorer-CDm6vvt6.js +0 -1
  122. package/dist/app/assets/Explorer-CNz5U5q-.js +0 -1
  123. package/dist/app/assets/Explorer-DS_lqr3R.js +0 -1
  124. package/dist/app/assets/Explorer-DoNVPZ-C.js +0 -1
  125. package/dist/app/assets/Explorer-VoN5CYd5.js +0 -1
  126. package/dist/app/assets/ExplorerList-DfesRs43.js +0 -1
  127. package/dist/app/assets/FilePage-CAUDXIh9.js +0 -3
  128. package/dist/app/assets/Filter-D1FpBH5R.js +0 -1
  129. package/dist/app/assets/HostSwitcher-BuSTjyO6.js +0 -1
  130. package/dist/app/assets/ImagePage-cy_jkGi1.js +0 -1
  131. package/dist/app/assets/Info-DqnamTeq.js +0 -1
  132. package/dist/app/assets/LocaleToggle-B91QrqGs.js +0 -1
  133. package/dist/app/assets/LogPage-CKm7_URt.js +0 -1
  134. package/dist/app/assets/LoginForm-rBz-5JFG.js +0 -1
  135. package/dist/app/assets/MarkdownPage-DgalhN_B.js +0 -1
  136. package/dist/app/assets/Modal-BHPfQpzr.js +0 -1
  137. package/dist/app/assets/MountTitle-Bx_Vo8tF.js +0 -1
  138. package/dist/app/assets/New-D6QCCHrx.js +0 -3
  139. package/dist/app/assets/Page-CnfUTsQD.js +0 -2
  140. package/dist/app/assets/Page-DGp_WebG.js +0 -1
  141. package/dist/app/assets/Page-Dqf45zd4.js +0 -1
  142. package/dist/app/assets/Pagination-fEfxXCWD.js +0 -1
  143. package/dist/app/assets/PortaLock-BFpTWuKB.js +0 -2
  144. package/dist/app/assets/SchemaForm-B_SWmx0L.css +0 -1
  145. package/dist/app/assets/SchemaForm-DKxGZpnK.js +0 -1
  146. package/dist/app/assets/Settings-ALaVSuhU.js +0 -1
  147. package/dist/app/assets/SingleLayout-BzRi_cEY.js +0 -1
  148. package/dist/app/assets/SpatialLayout-Cote5YNZ.js +0 -1
  149. package/dist/app/assets/Spinner-B-iOhBZq.js +0 -1
  150. package/dist/app/assets/SplitLayout-CK5SuMF1.js +0 -1
  151. package/dist/app/assets/StackLayout-BUdng0sD.js +0 -1
  152. package/dist/app/assets/Start-D5KBqSwf.js +0 -1
  153. package/dist/app/assets/TabLayout-ByKrZ0yM.js +0 -1
  154. package/dist/app/assets/TabPanelLayout-B4DWG6Zm.js +0 -1
  155. package/dist/app/assets/TerminalPage-CDtmKMSK.js +0 -18
  156. package/dist/app/assets/ThemeModeToggle-C0j9D4s0.js +0 -1
  157. package/dist/app/assets/ThemePicker-DEUED0NH.js +0 -1
  158. package/dist/app/assets/Tree-fxC7yDSR.js +0 -1
  159. package/dist/app/assets/WindowControls-BWi1hOPh.js +0 -1
  160. package/dist/app/assets/actions-BzJiPQuh.js +0 -1
  161. package/dist/app/assets/changeset-eZAmDe3s.js +0 -1
  162. package/dist/app/assets/composer-commands-B8AF8OGi.js +0 -2
  163. package/dist/app/assets/data-hUAVersf.js +0 -2
  164. package/dist/app/assets/dist-33oU5N7i.js +0 -1
  165. package/dist/app/assets/dist-B4E-6SqB.js +0 -1
  166. package/dist/app/assets/dist-BDH0Q8eg.js +0 -13
  167. package/dist/app/assets/dist-BfGIsxxP.js +0 -1
  168. package/dist/app/assets/dist-BwHJSc3S.js +0 -6
  169. package/dist/app/assets/dist-DUFzb_Eu.js +0 -23
  170. package/dist/app/assets/dist-DX2Uz40S.js +0 -9
  171. package/dist/app/assets/dist-Db_OB0lX.js +0 -11
  172. package/dist/app/assets/dist-IR189dk6.js +0 -1
  173. package/dist/app/assets/dist-rmKzqdIO.js +0 -1
  174. package/dist/app/assets/index-B1VQ36Tb.css +0 -1
  175. package/dist/app/assets/index-yhQX4tVS.js +0 -14
  176. package/dist/app/assets/media-Coozt7AL.js +0 -1
  177. package/dist/app/assets/notify-BQ9fSOfy.js +0 -1
  178. package/dist/app/assets/registry-iidw4F1W.js +0 -1
  179. package/dist/app/assets/sessions-8PScJEDe.js +0 -2
  180. package/dist/app/assets/state-KGSq646f.js +0 -1
  181. package/dist/app/assets/terminal-BPj7jGw5.js +0 -1
  182. package/dist/app/assets/text-BdULOY8N.js +0 -1
  183. package/dist/app/assets/turn-BoF7W1h6.js +0 -3
  184. package/dist/app/assets/useStoreLabel-BuZT1So6.js +0 -1
  185. package/dist/app/assets/viewers-MssMDn0e.js +0 -1
  186. package/dist/app/assets/words-CyqfIDyJ.js +0 -2
@@ -0,0 +1 @@
1
+ import{t as e}from"./jsx-runtime-BguD1OXD.js";import{t}from"./useI18n-T3BwAm0z.js";import{n}from"./ScenaProvider-6A3TJumQ.js";import{t as r}from"./Button-_R1oktDz.js";import{C as i}from"./index-xynK_AEL.js";var a=e();function o(){let e=n(),{t:o}=t();return(0,a.jsxs)(`div`,{className:`web-start`,children:[(0,a.jsx)(i,{size:72}),(0,a.jsx)(`p`,{className:`web-note`,children:o(`sessions/start/note`)}),(0,a.jsx)(r,{label:o(`sessions/commands/newSession`),variant:`primary`,onClick:()=>void e.commands.execute(`ahp.newSession`)})]})}export{o as default};
@@ -0,0 +1 @@
1
+ import{t as e}from"./jsx-runtime-BguD1OXD.js";import{t}from"./react-CybPckBe.js";import{t as n}from"./useI18n-T3BwAm0z.js";import{n as r}from"./ScenaProvider-6A3TJumQ.js";import{t as i}from"./ContextMenu-DYnWIBAF.js";import{r as a}from"./Icon-CIQ7doud.js";import{TabTitle as o}from"./TabPanelLayout-B_7L0Dyp.js";var s=e(),c=t(),l=`application/x-scena-tab-index`;function u({surface:e,mounts:t,state:u,renderMount:d,renderEmpty:f,onActivate:p,onClose:m,onReorder:h}){let{t:g}=n(),_=r(),v=u.split?.order??[],y=new Set(v),b=v.map(e=>t.find(t=>t.key===e)).filter(e=>!!e),x=t.filter(e=>!y.has(e.key)),S=[...b,...x],C=S.find(e=>e.key===u.activeContainerKey)??S[S.length-1],w=new Set(u.split?.pinned??[]),T=C?_.commands.list({slot:`view/title`,enabled:!0}):[],E=C?.component.component,D={"$/surface/name":e,"$/tab/key":C?.key,"$/tab/component":typeof E==`string`?E:void 0},O=_.commands.list({slot:`surface/title`}).filter(e=>e.when===void 0||_.when.evaluate(e.when,D)),k=t=>{_.store.set(`$/surface/name`,e),_.store.set(`$/tab/key`,C?.key),_.commands.execute(t)},[A,j]=(0,c.useState)(null),[M,N]=(0,c.useState)(null),[P,F]=(0,c.useState)(null),[I,L]=(0,c.useState)(null),R=(0,c.useRef)(null);(0,c.useEffect)(()=>{let e=R.current;if(!e)return;function t(t){t.deltaY!==0&&(t.preventDefault(),e.scrollLeft+=t.deltaY)}return e.addEventListener(`wheel`,t,{passive:!1}),()=>e.removeEventListener(`wheel`,t)},[]);function z(e,t,n){e.preventDefault(),e.stopPropagation(),N({x:e.clientX,y:e.clientY,tabKey:t,tabIdx:n})}function B(e){let t=e.currentTarget.getBoundingClientRect();F({x:t.right,y:t.bottom+2})}function V(e){e.target===e.currentTarget&&(e.preventDefault(),L({x:e.clientX,y:e.clientY}))}function H(e,t){e.dataTransfer.setData(l,String(t)),e.dataTransfer.effectAllowed=`move`}function U(e,t){e.dataTransfer.types.includes(l)&&(e.preventDefault(),e.dataTransfer.dropEffect=`move`,j(t))}function W(){j(null)}function G(e,t){if(!e.dataTransfer.types.includes(l))return;e.preventDefault();let n=Number(e.dataTransfer.getData(l));j(null),Number.isFinite(n)&&n!==t&&h(n,t)}let K={"$/tab/canSplit":!1,"$/tab/canMove":!1,"$/group/canClose":!1,"$/group/canMaximize":!1,"$/surface/name":e,"$/surface/layoutId":`tab`,"$/surface/mountCount":t.length,"$/surface/closedHistory":0},q=M?S.find(e=>e.key===M.tabKey):void 0,J=q?_.mountMenus.collect(`tab:context`,q):void 0;return(0,s.jsxs)(`div`,{className:`oo-layout oo-layout--tab`,style:{display:`flex`,flexDirection:`column`,height:`100%`},children:[(0,s.jsxs)(`div`,{className:`tab-bar`,children:[(0,s.jsx)(`div`,{className:`tab-bar__strip`,ref:R,children:S.map((t,n)=>{let r=w.has(t.key);return(0,s.jsx)(o,{resourceKey:t.key,m:t,idx:n,isPinned:r,isActive:t===C,dragOverTab:A,onDragStart:e=>H(e,n),onDragOver:e=>U(e,n),onDragLeave:W,onDrop:e=>G(e,n),onClick:()=>p(t.key),onContextMenu:e=>z(e,t.key,n),onClose:e=>{e.stopPropagation(),m(t.key)},onUnpin:n=>{n.stopPropagation(),_.store.set(`$/tab/key`,t.key),_.store.set(`$/surface/name`,e),_.commands.execute(`tab.unpin`)}},t.key)})}),(0,s.jsxs)(`div`,{className:`tab-bar__extras`,children:[T.map((e,t)=>{let n=typeof e.title==`function`?e.title():e.title;return(0,s.jsxs)(`button`,{onClick:()=>_.commands.execute(e.id),title:String(n),children:[e.icon?`${e.icon} `:``,String(n)]},t)}),O.map(e=>{let t=String(typeof e.title==`function`?e.title():e.title);return(0,s.jsx)(`button`,{onClick:()=>k(e.id),title:t,"aria-label":t,children:e.icon??t},e.id)}),(0,s.jsx)(`button`,{className:`tab-bar__more`,title:g(`layout/groupActions`,`Group actions`),"aria-label":g(`layout/groupActions`,`Group actions`),onClick:B,children:a.moreHoriz})]})]}),(0,s.jsx)(`div`,{style:{flex:1,minHeight:0,position:`relative`},onContextMenu:V,children:S.length===0?f?.()??null:S.map(e=>(0,s.jsx)(`div`,{className:`oo-layout__mount`,"data-active":e===C||void 0,style:{height:`100%`,overflow:`auto`,display:e===C?`block`:`none`},children:d(e)},e.key))}),M?(0,s.jsx)(i,{x:M.x,y:M.y,onClose:()=>N(null),spec:{query:{slot:`tab:context`},extraItems:J,footerHints:!0},context:{...K,"$/tab/key":M.tabKey,"$/tab/index":M.tabIdx,"$/tab/isActive":M.tabKey===C?.key,"$/tab/isPinned":w.has(M.tabKey),"$/group/tabCount":S.length}}):null,P?(0,s.jsx)(i,{x:P.x,y:P.y,onClose:()=>F(null),spec:{query:{slot:`tab-group:context`},footerHints:!0},context:{...K,"$/group/tabCount":S.length}}):null,I?(0,s.jsx)(i,{x:I.x,y:I.y,onClose:()=>L(null),spec:{query:{slot:`surface:context`},footerHints:!0},context:K}):null]})}export{u as TabLayout};
@@ -0,0 +1 @@
1
+ import{t as e}from"./jsx-runtime-BguD1OXD.js";import{t}from"./react-CybPckBe.js";import{n}from"./colors-BieSUSt7.js";import{t as r}from"./useI18n-T3BwAm0z.js";import{n as i}from"./ScenaProvider-6A3TJumQ.js";import{t as a}from"./ContextMenu-DYnWIBAF.js";import{r as o}from"./Icon-CIQ7doud.js";import{t as s}from"./Divisor-hrrJK3bw.js";import{t as c}from"./useStoreLabel-BtAsVCsr.js";var l=e(),u=t(),d=`application/x-scena-tab-panel`,f=.2,p=.05;function m(){return`g_${Math.random().toString(36).slice(2,10)}`}function h(e,t){return{kind:`leaf`,id:m(),tabs:e,activeKey:t}}function g(e,t){if(e.kind===`leaf`){for(let n of e.tabs)t.add(n);return}g(e.first,t),g(e.second,t)}function _(e,t){if(e.kind===`leaf`){t.push(e);return}_(e.first,t),_(e.second,t)}function v(e,t){if(e.kind===`leaf`){let n=e.tabs.filter(e=>t.has(e)),r=e.activeKey&&t.has(e.activeKey)?e.activeKey:n[0];return{...e,tabs:n,activeKey:r}}return{...e,first:v(e.first,t),second:v(e.second,t)}}function y(e,t){if(e.kind===`leaf`)return t(e);let n=y(e.first,t),r=y(e.second,t);return n&&r?{...e,first:n,second:r}:n??r}function b(e,t,n){return e.kind===`leaf`?e.id===t?n:e:{...e,first:b(e.first,t,n),second:b(e.second,t,n)}}function x(e,t,n){return e.kind===`leaf`?e:t(e)?{...e,...n}:{...e,first:x(e.first,t,n),second:x(e.second,t,n)}}function S(e,t){if(e.kind===`leaf`){if(t.has(e.id)){let n=m();return t.add(n),{...e,id:n}}return t.add(e.id),e}return{...e,first:S(e.first,t),second:S(e.second,t)}}function C(e,t,n){let r=new Set(t),i=e?S(v(e,r),new Set):h([...t],n),a=new Set;g(i,a);let o=t.filter(e=>!a.has(e));if(o.length>0){let e=[];_(i,e);let t=n&&e.find(e=>e.tabs.includes(n))||e.find(e=>e.tabs.length>0)||e[0];if(t){let e=n&&o.includes(n)?n:o[o.length-1];i=b(i,t.id,{...t,tabs:[...t.tabs,...o],activeKey:e})}}if(n){let e=y(i,e=>e.tabs.includes(n)&&e.activeKey!==n?{...e,activeKey:n}:e);e&&(i=e)}return{tree:i}}function w(e,t){return e===t?!0:!e||!t||e.kind!==t.kind?!1:e.kind===`leaf`&&t.kind===`leaf`?e.id===t.id&&e.activeKey===t.activeKey&&e.tabs.length===t.tabs.length&&e.tabs.every((e,n)=>e===t.tabs[n]):e.kind===`split`&&t.kind===`split`&&e.direction===t.direction&&(e.ratio??.5)===(t.ratio??.5)&&w(e.first,t.first)&&w(e.second,t.second)}function T({leaf:e,ctx:t}){let{t:n}=r(),s=i(),c=e.activeKey??e.tabs[0],[p,m]=(0,u.useState)(null),[h,g]=(0,u.useState)(null),_=(0,u.useRef)(null),v=(0,u.useRef)(null);(0,u.useEffect)(()=>{let e=v.current;if(!e)return;function t(t){t.deltaY!==0&&(t.preventDefault(),e.scrollLeft+=t.deltaY)}return e.addEventListener(`wheel`,t,{passive:!1}),()=>e.removeEventListener(`wheel`,t)},[]),(0,u.useEffect)(()=>{let e=()=>{g(null),m(null)};return window.addEventListener(`dragend`,e),window.addEventListener(`drop`,e),()=>{window.removeEventListener(`dragend`,e),window.removeEventListener(`drop`,e)}},[]);function b(n){let r=y(t.tree,t=>t.id===e.id?{...t,activeKey:n}:t);r&&t.commit(r),t.onActivate(n)}function x(t,n){let r={sourceLeafId:e.id,tabKey:n};t.dataTransfer.setData(d,JSON.stringify(r)),t.dataTransfer.effectAllowed=`move`}function S(e,t){e.dataTransfer.types.includes(d)&&(e.preventDefault(),e.dataTransfer.dropEffect=`move`,m(t))}function C(){m(null)}function w(n,r){if(!n.dataTransfer.types.includes(d))return;n.preventDefault(),m(null);let i=D(n);i&&k(t,i,e.id,r)}function T(e){let t=_.current;if(!t)return null;let n=t.getBoundingClientRect();if(n.width<=0||n.height<=0)return null;let r=(e.clientX-n.left)/n.width,i=(e.clientY-n.top)/n.height;return i<f?`top`:i>.8?`bottom`:r<f?`left`:r>.8?`right`:`center`}function O(e){e.dataTransfer.types.includes(d)&&(e.preventDefault(),e.dataTransfer.dropEffect=`move`,g(T(e)))}function j(e){let t=e.relatedTarget;(!t||!e.currentTarget.contains(t))&&g(null)}function M(n){if(!n.dataTransfer.types.includes(d))return;n.preventDefault();let r=T(n);g(null);let i=D(n);i&&r&&(r===`center`?k(t,i,e.id,e.tabs.length):A(t,i,e.id,r))}let[N,P]=(0,u.useState)(null);function I(e){e.stopPropagation();let t=e.currentTarget.getBoundingClientRect();P({x:t.right-4,y:t.bottom+2})}function L(){P(null)}let[R,z]=(0,u.useState)(null);function B(e,t,n){e.preventDefault(),z({x:e.clientX,y:e.clientY,tabKey:t,tabIdx:n})}function V(){z(null)}let H=R?t.mounts.find(e=>e.key===R.tabKey):void 0,U=H?s.mountMenus.collect(`tab:context`,H):void 0;return(0,l.jsxs)(`div`,{className:`oo-tab-panel-group`,"data-leaf-id":e.id,style:{flex:1,minWidth:0,minHeight:0,display:`flex`,flexDirection:`column`,overflow:`hidden`},children:[(0,l.jsxs)(`div`,{className:`tab-bar`,children:[(0,l.jsx)(`div`,{className:`tab-bar__strip`,ref:v,children:e.tabs.map((e,n)=>{let r=t.mounts.find(t=>t.key===e);return(0,l.jsx)(F,{resourceKey:e,idx:n,m:r,isActive:e===c,isPinned:t.pinned.has(e),dragOverTab:p,onDragStart:t=>x(t,e),onDragOver:e=>S(e,n),onDragLeave:C,onDrop:e=>w(e,n),onClick:()=>b(e),onContextMenu:t=>B(t,e,n),onClose:()=>t.onClose(e),onUnpin:n=>{n.stopPropagation(),s.store.set(`$/tab/key`,e),s.store.set(`$/surface/name`,t.surface),s.commands.execute(`tab.unpin`)}},e)})}),(0,l.jsx)(`div`,{className:`tab-bar__extras`,children:(0,l.jsx)(`button`,{className:`tab-bar__more`,title:n(`layout/groupActions`,`Group actions`),"aria-label":n(`layout/groupActions`,`Group actions`),onClick:I,children:o.moreHoriz})})]}),(0,l.jsxs)(`div`,{ref:_,onDragOver:O,onDragLeave:j,onDrop:M,style:{flex:1,minHeight:0,position:`relative`,overflow:`auto`},children:[e.tabs.length===0?t.mounts.length===0?t.renderEmpty?.()??null:(0,l.jsx)(`div`,{style:{padding:24,color:`var(--oo-color-muted)`},children:`Empty group. Drag a tab here.`}):e.tabs.map(e=>{let n=t.mounts.find(t=>t.key===e);return n?(0,l.jsx)(`div`,{className:`oo-layout__mount`,"data-active":e===c||void 0,style:{position:`absolute`,inset:0,overflow:`auto`,display:e===c?`block`:`none`},children:t.renderMount(n)},e):null}),h?(0,l.jsx)(E,{zone:h}):null]}),N?(0,l.jsx)(a,{x:N.x,y:N.y,onClose:L,spec:{query:{slot:`tab-group:context`},footerHints:!0},context:{"$/surface/name":t.surface,"$/surface/layoutId":`tab-panel`,"$/surface/mountCount":t.mounts.length,"$/surface/closedHistory":0,"$/group/key":e.id,"$/group/tabCount":e.tabs.length,"$/group/canClose":!0,"$/group/canMaximize":!1,"$/tab/canSplit":!0,"$/tab/canMove":t.leafCount>1}}):null,R?(0,l.jsx)(a,{x:R.x,y:R.y,onClose:V,spec:{query:{slot:`tab:context`},extraItems:U,footerHints:!0},context:{"$/surface/name":t.surface,"$/surface/layoutId":`tab-panel`,"$/surface/mountCount":t.mounts.length,"$/surface/closedHistory":0,"$/group/key":e.id,"$/group/tabCount":e.tabs.length,"$/group/canClose":!0,"$/tab/key":R.tabKey,"$/tab/index":R.tabIdx,"$/tab/leafId":e.id,"$/tab/isActive":R.tabKey===c,"$/tab/isPinned":t.pinned.has(R.tabKey),"$/tab/canSplit":!0,"$/tab/canMove":t.leafCount>1}}):null]})}function E({zone:e}){let t={position:`absolute`,pointerEvents:`none`,background:`rgba(59,130,246,0.12)`,border:`2px solid rgba(59,130,246,0.6)`,boxSizing:`border-box`,zIndex:5,transition:`all 80ms ease-out`},n=(()=>{switch(e){case`center`:return{...t,inset:0};case`top`:return{...t,top:0,left:0,right:0,height:`50%`};case`bottom`:return{...t,bottom:0,left:0,right:0,height:`50%`};case`left`:return{...t,top:0,bottom:0,left:0,width:`50%`};case`right`:return{...t,top:0,bottom:0,right:0,width:`50%`}}})();return(0,l.jsx)(`div`,{className:`oo-tab-panel-drop-preview`,style:n})}function D(e){let t=e.dataTransfer.getData(d);if(!t)return null;try{let e=JSON.parse(t);return typeof e.sourceLeafId!=`string`||typeof e.tabKey!=`string`?null:e}catch{return null}}function O(e,t){return y(e,e=>{if(!e.tabs.includes(t))return e;let n=e.tabs.filter(e=>e!==t);return n.length===0?null:{...e,tabs:n,activeKey:e.activeKey===t?n[0]:e.activeKey}})}function k(e,t,n,r){if(t.sourceLeafId===n){let i=y(e.tree,e=>{if(e.id!==n)return e;let i=e.tabs.indexOf(t.tabKey);if(i===-1)return e;let a=[...e.tabs];a.splice(i,1);let o=i<r?r-1:r;return a.splice(o,0,t.tabKey),{...e,tabs:a,activeKey:t.tabKey}});i&&e.commit(i),e.onActivate(t.tabKey);return}let i=O(e.tree,t.tabKey);if(!i)return;let a=y(i,e=>{if(e.id!==n)return e;let i=[...e.tabs],a=Math.max(0,Math.min(r,i.length));return i.splice(a,0,t.tabKey),{...e,tabs:i,activeKey:t.tabKey}});a&&e.commit(a),e.onActivate(t.tabKey)}function A(e,t,n,r){let i=e.tree,a=j(i,t.sourceLeafId);if(a&&a.id===n&&a.tabs.length===1||(i=O(i,t.tabKey),!i))return;let o=j(i,n);if(!o)return;let s=h([t.tabKey],t.tabKey),c=b(i,n,{kind:`split`,direction:r===`left`||r===`right`?`row`:`column`,ratio:.5,first:r===`left`||r===`top`?s:o,second:r===`left`||r===`top`?o:s});e.commit(c),e.onActivate(t.tabKey)}function j(e,t){return e.kind===`leaf`?e.id===t?e:null:j(e.first,t)||j(e.second,t)}function M({node:e,ctx:t}){return e.kind===`leaf`?(0,l.jsx)(T,{leaf:e,ctx:t}):(0,l.jsx)(N,{node:e,ctx:t})}function N({node:e,ctx:t}){let n=(0,u.useRef)(null),r=e.ratio??.5;function i(n){let r=x(t.tree,t=>t===e,{ratio:n});t.commit(r)}let a=e.direction===`row`;return(0,l.jsxs)(`div`,{ref:n,className:`oo-tab-panel-split`,"data-direction":e.direction,style:{display:`flex`,flexDirection:a?`row`:`column`,flex:1,minWidth:0,minHeight:0},children:[(0,l.jsx)(`div`,{style:{flex:r,minWidth:0,minHeight:0,display:`flex`},children:(0,l.jsx)(M,{node:e.first,ctx:t})}),(0,l.jsx)(s,{direction:e.direction===`row`?`row`:`col`,containerRef:n,min:p,max:.95,onCommit:i}),(0,l.jsx)(`div`,{style:{flex:1-r,minWidth:0,minHeight:0,display:`flex`},children:(0,l.jsx)(M,{node:e.second,ctx:t})})]})}function P({surface:e,mounts:t,state:n,setState:r,renderMount:i,renderEmpty:a,onActivate:o,onClose:s}){let c=t.map(e=>e.key),{tree:d}=C(n.tabPanel?.tree,c,n.activeContainerKey);(0,u.useEffect)(()=>{w(n.tabPanel?.tree,d)||r({tabPanel:{tree:d}})});let f=[];_(d,f);let p={surface:e,mounts:t,renderMount:i,renderEmpty:a,onActivate:o,onClose:s,tree:d,commit:e=>r({tabPanel:{tree:e}}),leafCount:f.length,pinned:new Set(n.split?.pinned??[])};return(0,l.jsx)(`div`,{className:`oo-layout oo-layout--tab-panel`,style:{display:`flex`,height:`100%`,minHeight:0},children:(0,l.jsx)(M,{node:d,ctx:p})})}function F({m:e,resourceKey:t,isActive:a,dragOverTab:s,idx:u,onDragStart:d,onDragOver:f,onDragLeave:p,onDrop:m,onClick:h,onContextMenu:g,onClose:_,onUnpin:v,isPinned:y}){let{t:b}=r(),x=i(),S=e?x.components.get(e.component.component)?.props:void 0,C=c(e?.props?.title??S?.title,``,e?.dataContext)||t,w=e?.props?.icon??S?.icon,T=e?.props?.color??S?.color;return(0,l.jsxs)(`div`,{className:`tab-bar__tab`,"data-active":a,"data-drag-over":s===u?`true`:void 0,"data-color":T,"data-pinned":y||void 0,draggable:!0,onDragStart:d,onDragOver:f,onDragLeave:p,onDrop:m,onClick:h,onContextMenu:g,title:C,style:{...T?{"--tab-color":n(T)}:{}},children:[w?(0,l.jsx)(`span`,{className:`tab__icon`,"aria-hidden":!0,children:w}):null,(0,l.jsx)(`span`,{className:`tab__label`,children:C}),y?(0,l.jsx)(`span`,{className:`pin`,onClick:e=>{e.stopPropagation(),v(e)},title:b(`tabs/unpin`,`Unpin tab`),children:o.pin}):(0,l.jsx)(`span`,{className:`close`,onClick:e=>{e.stopPropagation(),_(e)},title:b(`common/close`,`Close`),children:o.closePanel})]})}export{P as TabPanelLayout,F as TabTitle};