@baique/pi-web-sky 0.1.21 → 0.1.23
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.
- package/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +8 -8
- package/.next/build-manifest.json +4 -4
- package/.next/next-server.js.nft.json +1 -1
- package/.next/prerender-manifest.json +3 -3
- package/.next/react-loadable-manifest.json +1 -1
- package/.next/required-server-files.js +6 -6
- package/.next/required-server-files.json +6 -6
- package/.next/server/app/_global-error/page.js +2 -2
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page.js +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +3 -3
- package/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -3
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/api/agent/[id]/bash-output/route.js +1 -1
- package/.next/server/app/api/agent/[id]/bash-output/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agent/[id]/events/route.js +2 -2
- package/.next/server/app/api/agent/[id]/events/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agent/[id]/route.js +1 -1
- package/.next/server/app/api/agent/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agent/new/route.js +1 -1
- package/.next/server/app/api/agent/new/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agent/running/events/route.js +1 -1
- package/.next/server/app/api/agent/running/events/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/agent/running/route.js +1 -1
- package/.next/server/app/api/agent/running/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/app-update/route.js +1 -1
- package/.next/server/app/api/app-update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/all-providers/route.js +1 -1
- package/.next/server/app/api/auth/all-providers/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/api-key/[provider]/route.js +1 -1
- package/.next/server/app/api/auth/api-key/[provider]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/login/[provider]/route.js +2 -2
- package/.next/server/app/api/auth/login/[provider]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/logout/[provider]/route.js +1 -1
- package/.next/server/app/api/auth/logout/[provider]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/auth/providers/route.js +1 -1
- package/.next/server/app/api/auth/providers/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/cwd/browse/route.js +1 -1
- package/.next/server/app/api/cwd/browse/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/cwd/validate/route.js +1 -1
- package/.next/server/app/api/cwd/validate/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/default-cwd/route.js +1 -1
- package/.next/server/app/api/default-cwd/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/file-index/route.js +1 -1
- package/.next/server/app/api/file-index/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/files/[...path]/route.js +1 -1
- package/.next/server/app/api/files/[...path]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/git/diff/route.js +2 -2
- package/.next/server/app/api/git/diff/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/git/status/route.js +1 -1
- package/.next/server/app/api/git/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/home/route.js +1 -1
- package/.next/server/app/api/home/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/route.js +1 -1
- package/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/models/route.js +1 -1
- package/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/models-config/catalog/route.js +1 -1
- package/.next/server/app/api/models-config/catalog/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/models-config/discover/route.js +1 -1
- package/.next/server/app/api/models-config/discover/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/models-config/route.js +1 -1
- package/.next/server/app/api/models-config/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/models-config/test/route.js +1 -1
- package/.next/server/app/api/models-config/test/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/plugins/route.js +1 -1
- package/.next/server/app/api/plugins/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/project-trust/route.js +1 -1
- package/.next/server/app/api/project-trust/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sessions/[id]/auto-name/route.js +2 -2
- package/.next/server/app/api/sessions/[id]/auto-name/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sessions/[id]/context/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/context/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sessions/[id]/export/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/export/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sessions/[id]/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sessions/[id]/state/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/state/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sessions/[id]/todos/route.js +1 -1
- package/.next/server/app/api/sessions/[id]/todos/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/sessions/route.js +1 -1
- package/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/check/route.js +1 -1
- package/.next/server/app/api/skills/check/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/install/route.js +1 -1
- package/.next/server/app/api/skills/install/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/route.js +1 -1
- package/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/search/route.js +1 -1
- package/.next/server/app/api/skills/search/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/skills/update/route.js +1 -1
- package/.next/server/app/api/skills/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/terminal/[id]/events/route.js +3 -3
- package/.next/server/app/api/terminal/[id]/events/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/terminal/[id]/route.js +2 -2
- package/.next/server/app/api/terminal/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/terminal/route.js +2 -2
- package/.next/server/app/api/terminal/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/worktrees/route.js +1 -1
- package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
- package/.next/server/app/favicon.ico/route.js +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +5 -5
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +5 -5
- package/.next/server/app/index.segments/_full.segment.rsc +5 -5
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/manifest.webmanifest/route.js +2 -2
- package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
- package/.next/server/app/page.js +8 -8
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +8 -8
- package/.next/server/chunks/2430.js +4 -4
- package/.next/server/chunks/3379.js +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/middleware.js +3 -3
- package/.next/server/next-font-manifest.js +1 -1
- package/.next/server/next-font-manifest.json +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/3266.5b76f9f71c8cef44.js +1 -0
- package/.next/static/chunks/4406-5d47a3d34a956b3f.js +7 -0
- package/.next/static/chunks/app/_not-found/{page-af4fe23994cb3d66.js → page-8cea8d8de35f4da4.js} +1 -1
- package/.next/static/chunks/app/{layout-ef2f232cb7bda98e.js → layout-a87bd7726a9b934b.js} +1 -1
- package/.next/static/chunks/app/page-1b3cab0efb7e465e.js +89 -0
- package/.next/static/chunks/{main-app-b3e8a8d15d83e1f0.js → main-app-dd2385a1a5a588df.js} +1 -1
- package/.next/static/chunks/next/dist/client/components/builtin/global-error-be943dcb89867ab9.js +1 -0
- package/.next/static/chunks/{webpack-8cc41c498e5b9a1b.js → webpack-943c1769a851c233.js} +1 -1
- package/.next/static/css/6e90300026a8f1d5.css +1 -0
- package/.next/trace +41 -7
- package/.next/trace-build +1 -1
- package/.next/types/app/api/agent/[id]/bash-output/route.ts +1 -1
- package/.next/types/app/api/agent/[id]/events/route.ts +1 -1
- package/.next/types/app/api/agent/[id]/route.ts +1 -1
- package/.next/types/app/api/agent/new/route.ts +1 -1
- package/.next/types/app/api/agent/running/events/route.ts +1 -1
- package/.next/types/app/api/agent/running/route.ts +1 -1
- package/.next/types/app/api/app-update/route.ts +1 -1
- package/.next/types/app/api/auth/all-providers/route.ts +1 -1
- package/.next/types/app/api/auth/api-key/[provider]/route.ts +1 -1
- package/.next/types/app/api/auth/login/[provider]/route.ts +1 -1
- package/.next/types/app/api/auth/logout/[provider]/route.ts +1 -1
- package/.next/types/app/api/auth/providers/route.ts +1 -1
- package/.next/types/app/api/cwd/browse/route.ts +1 -1
- package/.next/types/app/api/cwd/validate/route.ts +1 -1
- package/.next/types/app/api/default-cwd/route.ts +1 -1
- package/.next/types/app/api/file-index/route.ts +1 -1
- package/.next/types/app/api/files/[...path]/route.ts +1 -1
- package/.next/types/app/api/git/diff/route.ts +1 -1
- package/.next/types/app/api/git/status/route.ts +1 -1
- package/.next/types/app/api/home/route.ts +1 -1
- package/.next/types/app/api/mcp/route.ts +1 -1
- package/.next/types/app/api/models/route.ts +1 -1
- package/.next/types/app/api/models-config/catalog/route.ts +1 -1
- package/.next/types/app/api/models-config/discover/route.ts +1 -1
- package/.next/types/app/api/models-config/route.ts +1 -1
- package/.next/types/app/api/models-config/test/route.ts +1 -1
- package/.next/types/app/api/plugins/route.ts +1 -1
- package/.next/types/app/api/project-trust/route.ts +1 -1
- package/.next/types/app/api/sessions/[id]/auto-name/route.ts +1 -1
- package/.next/types/app/api/sessions/[id]/context/route.ts +1 -1
- package/.next/types/app/api/sessions/[id]/entries/[entryId]/thinking/route.ts +1 -1
- package/.next/types/app/api/sessions/[id]/export/route.ts +1 -1
- package/.next/types/app/api/sessions/[id]/route.ts +1 -1
- package/.next/types/app/api/sessions/[id]/state/route.ts +1 -1
- package/.next/types/app/api/sessions/[id]/todos/route.ts +1 -1
- package/.next/types/app/api/sessions/route.ts +1 -1
- package/.next/types/app/api/skills/check/route.ts +1 -1
- package/.next/types/app/api/skills/install/route.ts +1 -1
- package/.next/types/app/api/skills/route.ts +1 -1
- package/.next/types/app/api/skills/search/route.ts +1 -1
- package/.next/types/app/api/skills/update/route.ts +1 -1
- package/.next/types/app/api/terminal/[id]/events/route.ts +1 -1
- package/.next/types/app/api/terminal/[id]/route.ts +1 -1
- package/.next/types/app/api/terminal/route.ts +1 -1
- package/.next/types/app/api/worktrees/route.ts +1 -1
- package/.next/types/app/layout.ts +1 -1
- package/.next/types/app/page.ts +1 -1
- package/README.md +6 -2
- package/README.zh-CN.md +2 -1
- package/package.json +2 -1
- package/.next/static/chunks/1074-6cfca65ac411b2b8.js +0 -7
- package/.next/static/chunks/3266.4c722f2677595a04.js +0 -1
- package/.next/static/chunks/app/page-a99fc55e6eb5ac35.js +0 -89
- package/.next/static/chunks/next/dist/client/components/builtin/global-error-00a4badaccb388e6.js +0 -1
- package/.next/static/css/ad464d16f922f5b9.css +0 -1
- /package/.next/static/{pSndmMVwteDd_0Jo8BldA → W05wbsgovoISs6oOyAq_0}/_buildManifest.js +0 -0
- /package/.next/static/{pSndmMVwteDd_0Jo8BldA → W05wbsgovoISs6oOyAq_0}/_ssgManifest.js +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3266],{82407:()=>{},83266:(e,t,r)=>{"use strict";r.r(t),r.d(t,{TerminalPanel:()=>u});var n=r(95155),i=r(12115),l=r(47650),a=r(8422);r(82407);var s=class{activate(e){this._terminal=e}dispose(){}fit(){let e=this.proposeDimensions();if(!e||!this._terminal||isNaN(e.cols)||isNaN(e.rows))return;let t=this._terminal._core;(this._terminal.rows!==e.rows||this._terminal.cols!==e.cols)&&(t._renderService.clear(),this._terminal.resize(e.cols,e.rows))}proposeDimensions(){if(!this._terminal||!this._terminal.element||!this._terminal.element.parentElement)return;let e=this._terminal._core._renderService.dimensions;if(0===e.css.cell.width||0===e.css.cell.height)return;let t=0===this._terminal.options.scrollback?0:this._terminal.options.overviewRuler?.width||14,r=window.getComputedStyle(this._terminal.element.parentElement),n=parseInt(r.getPropertyValue("height")),i=Math.max(0,parseInt(r.getPropertyValue("width"))),l=window.getComputedStyle(this._terminal.element),a={top:parseInt(l.getPropertyValue("padding-top")),bottom:parseInt(l.getPropertyValue("padding-bottom")),right:parseInt(l.getPropertyValue("padding-right")),left:parseInt(l.getPropertyValue("padding-left"))},s=a.top+a.bottom;return{cols:Math.max(2,Math.floor((i-(a.right+a.left)-t)/e.css.cell.width)),rows:Math.max(1,Math.floor((n-s)/e.css.cell.height))}}},o=r(39247),c=r(31590);let d={black:"#000000",red:"#cd3131",green:"#0dbc79",yellow:"#e5e510",blue:"#2472c8",magenta:"#bc3fbc",cyan:"#11a8cd",white:"#e5e5e5",brightBlack:"#666666",brightRed:"#f14c4c",brightGreen:"#23d18b",brightYellow:"#f5f543",brightBlue:"#3b8eea",brightMagenta:"#d670d6",brightCyan:"#29b8db",brightWhite:"#ffffff"},m={black:"#000000",red:"#cd3131",green:"#0dbc79",yellow:"#949800",blue:"#0451a5",magenta:"#bc05bc",cyan:"#0598bc",white:"#555555",brightBlack:"#666666",brightRed:"#cd3131",brightGreen:"#14ce14",brightYellow:"#b5ba00",brightBlue:"#0451a5",brightMagenta:"#bc05bc",brightCyan:"#0598bc",brightWhite:"#a5a5a5"};function u({origin:e,anchorRect:t,activeCwd:r,hidden:h,onClose:f}){let p,b,g=(0,c.a)(),{t:w}=(0,o.s)(),[y,v]=(0,i.useState)([]),[x,k]=(0,i.useState)(null),[T,E]=(0,i.useState)(!1),[j,C]=(0,i.useState)(null),[N,S]=(0,i.useState)(!1),_=(0,i.useRef)(null),M=(0,i.useRef)(new Map),$=(0,i.useRef)(new Map),P=(0,i.useRef)(null);P.current=x;let L=(0,i.useRef)(h);L.current=h;let B=(0,i.useRef)(new Set),R=(0,i.useCallback)(async()=>{try{let e=await fetch("/api/terminal"),t=await e.json();if(Array.isArray(t.terminals)){let e=B.current;v(t.terminals.filter(t=>!e.has(t.id)))}}catch{}},[]),I=(0,i.useMemo)(()=>()=>{let e=getComputedStyle(document.documentElement),t=(t,r)=>e.getPropertyValue(t).trim()||r,r=document.documentElement.classList.contains("dark");return{background:`rgba(${t("--assistant-bg-rgb",r?"36, 36, 39":"252, 252, 253")}, ${t("--bubble-alpha",r?"0.55":"0.44")})`,foreground:t("--text",r?"#d4d4d4":"#1f2328"),cursor:t("--accent","#3b82f6"),cursorAccent:t("--bg",r?"#1e1e1e":"#ffffff"),selectionBackground:r?"rgba(128, 128, 128, 0.35)":"rgba(0, 0, 0, 0.15)",...r?d:m}},[]);(0,i.useEffect)(()=>{let e=new MutationObserver(()=>{let e=I();for(let[,t]of $.current)t.term&&(t.term.options.theme=e)});return e.observe(document.documentElement,{attributes:!0,attributeFilter:["class","style"]}),()=>e.disconnect()},[I]);let W=(0,i.useCallback)(e=>{let t=$.current.get(e);if(t?.es)return;if(!t){let r=new a.B({convertEol:!1,fontSize:12.5,fontFamily:getComputedStyle(document.documentElement).getPropertyValue("--font-mono").trim()||"'JetBrains Mono', Consolas, monospace",cursorBlink:!0,scrollback:5e3,theme:I()}),n=new s;r.loadAddon(n),r.onData(r=>{let n=t;n.inputQueue=n.inputQueue.catch(()=>{}).then(async()=>{await fetch(`/api/terminal/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({type:"input",data:r})})}).catch(()=>{})}),t={term:r,fit:n,es:null,offset:null,reconnectTimer:null,fitTimer:null,inputQueue:Promise.resolve(),disposed:!1},$.current.set(e,t)}let r=null!==t.offset?`?since=${t.offset}`:"",n=new EventSource(`/api/terminal/${e}/events${r}`);t.es=n,n.addEventListener("output",e=>{let{d:r,o:n}=JSON.parse(e.data);t.offset=n,t.term.write(r)}),n.addEventListener("gone",()=>{n.close(),t.es=null,R()}),n.onerror=()=>{n.close(),t&&!t.disposed&&(t.es=null,t.reconnectTimer&&clearTimeout(t.reconnectTimer),t.reconnectTimer=setTimeout(()=>{fetch(`/api/terminal/${e}`).then(t=>{t.ok?W(e):R()}).catch(()=>{})},1500))}},[I,R]),O=(0,i.useCallback)(e=>{let t=$.current.get(e);t&&fetch(`/api/terminal/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({type:"resize",cols:t.term.cols,rows:t.term.rows})})},[]),V=(0,i.useCallback)((e,t=0)=>{let r,n=$.current.get(e),i=_.current;if(n&&i&&!L.current&&!n.disposed){try{r=n.fit.proposeDimensions()}catch{}if(r&&r.cols>2&&r.rows>1){n.fitTimer&&(clearTimeout(n.fitTimer),n.fitTimer=null);try{n.fit.fit()}catch{}O(e),n.term.element?.classList.remove("terminal-attaching"),n.term.focus(),requestAnimationFrame(()=>{if(!n.disposed&&!L.current)try{n.fit.fit()}catch{}});return}if(t>=300){n.fitTimer&&(clearTimeout(n.fitTimer),n.fitTimer=null),n.term.element?.classList.remove("terminal-attaching"),console.warn(`[terminal] fit did not settle for ${e} after ~9s; showing as-is`);return}n.fitTimer&&clearTimeout(n.fitTimer),n.fitTimer=setTimeout(()=>V(e,t+1),30)}},[O]);(0,i.useEffect)(()=>{let e=_.current,t=x?M.current.get(x):void 0;if(!e||!t||!x)return;W(x);let r=$.current.get(x);if(!r||h)return;r.term.element?r.term.element.parentElement!==t&&t.appendChild(r.term.element):r.term.open(t),r.term.element?.classList.add("terminal-attaching"),V(x);let n=new ResizeObserver(()=>{L.current||P.current!==x||V(x)});return n.observe(t),()=>{n.disconnect()}},[x,W,h,V]);let z=(0,i.useRef)(!1);(0,i.useEffect)(()=>{z.current&&h||(z.current||(z.current=!0),R().then(()=>{S(!0),v(e=>(!P.current&&e.length>0&&k(e[e.length-1].id),e))}))},[h,R]),(0,i.useEffect)(()=>{if(h)return;let e=setInterval(()=>void R(),5e3);return()=>clearInterval(e)},[R,h]),(0,i.useEffect)(()=>{let e=new Set(y.map(e=>e.id));for(let[t,r]of $.current)e.has(t)||(r.disposed=!0,r.reconnectTimer&&clearTimeout(r.reconnectTimer),r.fitTimer&&clearTimeout(r.fitTimer),r.es?.close(),r.term.dispose(),$.current.delete(t),P.current===t&&k(y.find(e=>e.id!==t)?.id??null))},[y]),(0,i.useEffect)(()=>()=>{for(let[,e]of $.current)e.disposed=!0,e.reconnectTimer&&clearTimeout(e.reconnectTimer),e.fitTimer&&clearTimeout(e.fitTimer),e.es?.close(),e.term.dispose();$.current.clear()},[]);let F=(0,i.useCallback)(async()=>{E(!0),C(null);try{let e=await fetch("/api/terminal",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:r||"~"})}),t=await e.json();if(!e.ok||!t.terminal)throw Error(t.error??`HTTP ${e.status}`);await R(),k(t.terminal.id)}catch(e){C(String(e instanceof Error?e.message:e))}finally{E(!1)}},[r,R]),A=(0,i.useRef)(!1);(0,i.useEffect)(()=>{A.current||!N||T||(A.current=!0,y.length>0||F())},[N,T,y.length,F]);let D=(0,i.useCallback)(async e=>{B.current.add(e),v(t=>t.filter(t=>t.id!==e));try{(await fetch(`/api/terminal/${e}`,{method:"DELETE"})).ok||(B.current.delete(e),R())}catch{B.current.delete(e),R()}},[R]),J=(0,i.useRef)(null),H=(0,i.useRef)(null);(0,i.useEffect)(()=>{H.current=document.getElementById("terminal-bottombar-btn");let e=e=>{let t=e.target;J.current?.contains(t)||H.current?.contains(t)||document.getElementById("terminal-topbar-btn")?.contains(t)||f()},t=e=>{"Escape"===e.key&&f()};return document.addEventListener("pointerdown",e,!0),document.addEventListener("keydown",t,!0),()=>{document.removeEventListener("pointerdown",e,!0),document.removeEventListener("keydown",t,!0)}},[f]);let Q=(0,i.useMemo)(()=>{let e=new Map;for(let t of y){let r=e.get(t.projectLabel)??[];r.push(t),e.set(t.projectLabel,r)}return[...e.entries()]},[y]),G=g?{position:"fixed",inset:10,zIndex:1050}:"top"===e?(p=Math.min(780,window.innerWidth-48),b=t?Math.max(24,Math.min(t.left,window.innerWidth-p-24)):window.innerWidth-p-24,{position:"fixed",top:t?.bottom??t?.top??46,left:b,width:p,height:465,zIndex:1040}):{position:"fixed",right:t?Math.max(24,window.innerWidth-t.right):24,bottom:t?window.innerHeight-t.top:35,width:Math.min(780,window.innerWidth-48),height:Math.min(465,window.innerHeight-120),zIndex:1040},Y=(0,n.jsxs)("div",{ref:J,className:`terminal-panel terminal-panel-${e}${g?" terminal-panel-mobile":""}${h?" terminal-panel-hidden":""}`,style:{...G,background:"var(--panel-glass)",backdropFilter:"blur(var(--glass-blur-panel)) saturate(var(--glass-saturate))",WebkitBackdropFilter:"blur(var(--glass-blur-panel)) saturate(var(--glass-saturate))"},role:"region","aria-label":w("terminal.title"),children:[(0,n.jsxs)("div",{className:"terminal-tabs",children:[(0,n.jsx)("div",{className:"terminal-tab-scroll",children:Q.map(([e,t])=>(0,n.jsxs)("div",{className:"terminal-group",children:[(0,n.jsx)("span",{className:"terminal-group-label",children:e}),t.map(e=>(0,n.jsxs)("div",{className:`terminal-chip${e.id===x?" is-active":""}${!e.running?" is-dead":""}`,onClick:()=>k(e.id),role:"tab","aria-selected":e.id===x,children:[(0,n.jsx)("span",{className:`terminal-dot${e.running?"":" is-dead"}`}),(0,n.jsx)("span",{className:"terminal-chip-cwd",title:e.cwd,children:e.cwd.split("/").filter(Boolean).pop()||e.cwd}),(0,n.jsx)("button",{type:"button",className:"terminal-chip-close",title:w("terminal.close"),"aria-label":w("terminal.close"),onClick:t=>{t.stopPropagation(),D(e.id)},children:"\xd7"})]},e.id))]},e))}),(0,n.jsx)("button",{type:"button",className:"terminal-new",onClick:()=>void F(),disabled:T,title:w("terminal.new"),"aria-label":w("terminal.new"),children:(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round","aria-hidden":"true",children:[(0,n.jsx)("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),(0,n.jsx)("line",{x1:"5",y1:"12",x2:"19",y2:"12"})]})}),!g&&(0,n.jsx)("button",{type:"button",className:"terminal-close",onClick:f,title:w("common.close"),"aria-label":w("common.close"),children:(0,n.jsxs)("svg",{width:"13",height:"13",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round","aria-hidden":"true",children:[(0,n.jsx)("line",{x1:"5",y1:"5",x2:"19",y2:"19"}),(0,n.jsx)("line",{x1:"19",y1:"5",x2:"5",y2:"19"})]})})]}),j&&(0,n.jsx)("div",{className:"terminal-error",children:j}),(0,n.jsxs)("div",{className:"terminal-body",ref:_,children:[y.map(e=>(0,n.jsx)("div",{ref:t=>{t?M.current.set(e.id,t):M.current.delete(e.id)},"data-terminal-view":e.id,style:{display:e.id===x?"block":"none",height:"100%"}},e.id)),0===y.length&&(0,n.jsx)("div",{className:"terminal-placeholder",children:(0,n.jsx)("button",{type:"button",onClick:()=>void F(),disabled:T,children:T?"…":w("terminal.createFirst")})})]})]});return(0,l.createPortal)(Y,document.body)}}}]);
|