import{o as e}from"./rolldown-runtime-C0FnF6B9.js";import{_ as t,v as n}from"./codemirror-CTwcbJL3.js";import{t as r}from"./useTranslation-203uReis.js";var i=e(n(),1),a=t(),o=(0,i.createContext)(void 0),s={tabs:[],currentTab:null,allSplitScreenTab:[],addTab:()=>-1,removeTab:()=>{},setCurrentTab:()=>{},setSplitScreenTab:()=>{},getTab:()=>void 0,reorderTabs:()=>{},updateHostConfig:()=>{},updateTab:()=>{},previewTerminalTheme:null,setPreviewTerminalTheme:()=>{}};function c(){return(0,i.useContext)(o)??s}function l(){localStorage.removeItem(`termix_tabs`),localStorage.removeItem(`termix_currentTab`)}function u({children:e}){let{t}=r(),[n,s]=(0,i.useState)([{id:1,type:`home`,title:`Home`}]),[c,l]=(0,i.useState)(1),[u,d]=(0,i.useState)([]),[f,p]=(0,i.useState)(null),[m]=(0,i.useState)(2),h=(0,i.useRef)(m);(0,i.useEffect)(()=>{n.length>0&&!n.some(e=>e.id===c)&&l(1)},[n,c]),i.useEffect(()=>{s(e=>e.map(e=>e.id===1&&e.type===`home`?{...e,title:t(`nav.home`)}:e))},[t]);let g=(0,i.useCallback)((e,r)=>{let i=t(e===`server_stats`?`nav.hostMetrics`:e===`file_manager`?`nav.fileManager`:e===`tunnel`?`nav.tunnels`:e===`docker`?`nav.docker`:`nav.terminal`),a=(r||i).trim(),o=a.match(/^(.*) \((\d+)\)$/),s=o?o[1]:a,c=new Set,l=!1;if(n.forEach(e=>{if(!e.title)return;if(e.title===s){l=!0;return}let t=e.title.match(RegExp(`^${s.replace(/[-/\\^$*+?.()|[\]{}]/g,`\\$&`)} \\((\\d+)\\)$`));if(t){let e=parseInt(t[1],10);isNaN(e)||c.add(e)}}),!l)return s;let u=2;for(;c.has(u);)u+=1;return`${s} (${u})`},[t,n]),_=(0,i.useCallback)(e=>{if(e.type===`ssh_manager`||e.type===`tmux_monitor`){let t=n.find(t=>t.type===e.type);if(t)return s(n=>n.map(n=>n.id===t.id?{...n,title:t.title,hostConfig:e.hostConfig?{...e.hostConfig}:void 0,initialTab:e.initialTab,_updateTimestamp:Date.now()}:n)),l(t.id),d(e=>e.filter(e=>e!==t.id)),t.id}let r=h.current++,a=`tab_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,o=e.type===`terminal`||e.type===`server_stats`||e.type===`file_manager`||e.type===`tunnel`||e.type===`docker`?g(e.type,e.title):e.type===`tmux_monitor`?e.title||t(`nav.tmuxMonitor`):e.title||``,c={...e,id:r,instanceId:a,title:o,terminalRef:e.type===`terminal`?i.createRef():void 0,hostConfig:e.hostConfig?{...e.hostConfig,instanceId:a}:void 0};return s(e=>[...e,c]),l(r),d(e=>e.filter(e=>e!==r)),r},[g,n,t]),v=(0,i.useRef)(null),y=(0,i.useCallback)(e=>{let r=n.find(t=>t.id===e);r&&r.terminalRef?.current&&typeof r.terminalRef.current.disconnect==`function`&&r.terminalRef.current.disconnect(),s(n=>{let r=n.findIndex(t=>t.id===e),i=n.filter(t=>t.id!==e);if(i.length===0)return v.current=1,[{id:1,type:`home`,title:t(`nav.home`)}];let a=r{let n=t.filter(t=>t!==e);return n.length<=1?[]:n}),l(t=>t===e?v.current??1:t)},[t,n]),b=(0,i.useCallback)(e=>{d(t=>t.includes(e)?t.filter(t=>t!==e):t.length<6?[...t,e]:t)},[]),x=(0,i.useCallback)(e=>n.find(t=>t.id===e),[n]),S=(0,i.useRef)(!1),C=(0,i.useCallback)((e,t)=>{S.current||(S.current=!0,s(n=>{let r=[...n],[i]=r.splice(e,1),a=r.length,o=Math.min(t,a);return r.splice(o,0,i),setTimeout(()=>{S.current=!1},100),r}))},[]),w=(0,i.useCallback)((e,n)=>{s(r=>r.map(r=>r.hostConfig&&r.hostConfig.id===e?r.type===`ssh_manager`?{...r,hostConfig:{...r.hostConfig,...n,instanceId:r.hostConfig.instanceId}}:{...r,hostConfig:{...r.hostConfig,...n,instanceId:r.hostConfig.instanceId},title:n.name?.trim()?n.name:t(`nav.hostTabTitle`,{username:n.username,ip:n.ip,port:n.port})}:r))},[t]),T=(0,i.useCallback)((e,t)=>{s(n=>n.map(n=>n.id===e?{...n,...t,_updateTimestamp:Date.now()}:n))},[]),E=(0,i.useMemo)(()=>({tabs:n,currentTab:c,allSplitScreenTab:u,addTab:_,removeTab:y,setCurrentTab:l,setSplitScreenTab:b,getTab:x,reorderTabs:C,updateHostConfig:w,updateTab:T,previewTerminalTheme:f,setPreviewTerminalTheme:p}),[n,c,u,_,y,b,x,C,w,T,f,p]);return(0,a.jsx)(o.Provider,{value:E,children:e})}export{l as n,c as r,u as t};