tmex-cli 0.9.2 → 0.10.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.
- package/dist/runtime/server.js +1407 -127
- package/package.json +1 -1
- package/resources/fe-dist/assets/{DevicePage-RqH-pnZX.js → DevicePage-5vkaNOjl.js} +2 -2
- package/resources/fe-dist/assets/DevicesPage-CKnRUGQm.js +2 -0
- package/resources/fe-dist/assets/FilePage-Dj0cszD4.css +1 -0
- package/resources/fe-dist/assets/FilePage-Uj-tzGW7.js +283 -0
- package/resources/fe-dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/resources/fe-dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/resources/fe-dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/resources/fe-dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/resources/fe-dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/resources/fe-dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/resources/fe-dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/resources/fe-dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/resources/fe-dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/resources/fe-dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/resources/fe-dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/resources/fe-dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/resources/fe-dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/resources/fe-dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/resources/fe-dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/resources/fe-dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/resources/fe-dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/resources/fe-dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/resources/fe-dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/resources/fe-dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/resources/fe-dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/resources/fe-dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/resources/fe-dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/resources/fe-dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/resources/fe-dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/resources/fe-dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/resources/fe-dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/resources/fe-dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/resources/fe-dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/resources/fe-dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/resources/fe-dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/resources/fe-dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/resources/fe-dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/resources/fe-dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/resources/fe-dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/resources/fe-dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/resources/fe-dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/resources/fe-dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/resources/fe-dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/resources/fe-dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/resources/fe-dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/resources/fe-dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/resources/fe-dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/resources/fe-dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/resources/fe-dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/resources/fe-dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/resources/fe-dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/resources/fe-dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/resources/fe-dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/resources/fe-dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/resources/fe-dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/resources/fe-dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/resources/fe-dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/resources/fe-dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/resources/fe-dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/resources/fe-dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/resources/fe-dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/resources/fe-dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/resources/fe-dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/resources/fe-dist/assets/SettingsPage-Cfzr_Phh.js +22 -0
- package/resources/fe-dist/assets/arc-Wv219fq_.js +2 -0
- package/resources/fe-dist/assets/architectureDiagram-3BPJPVTR-DkPPo2hY.js +37 -0
- package/resources/fe-dist/assets/blockDiagram-GPEHLZMM-DPAThozG.js +133 -0
- package/resources/fe-dist/assets/c4Diagram-AAUBKEIU-DBs_N-_p.js +11 -0
- package/resources/fe-dist/assets/card-Dl0HC88A.js +2 -0
- package/resources/fe-dist/assets/channel-DyLhDM_y.js +2 -0
- package/resources/fe-dist/assets/chunk-2J33WTMH-D3mrUPCp.js +2 -0
- package/resources/fe-dist/assets/chunk-4BX2VUAB-C0DRv58j.js +2 -0
- package/resources/fe-dist/assets/chunk-55IACEB6-DheUp7iQ.js +2 -0
- package/resources/fe-dist/assets/chunk-727SXJPM-Cvew2yIJ.js +207 -0
- package/resources/fe-dist/assets/chunk-AQP2D5EJ-DUoa4Wdg.js +232 -0
- package/resources/fe-dist/assets/chunk-FMBD7UC4-Bt9Oi52P.js +16 -0
- package/resources/fe-dist/assets/chunk-ND2GUHAM-DlWpyDaS.js +2 -0
- package/resources/fe-dist/assets/chunk-QZHKN3VN-BZtXwgRW.js +2 -0
- package/resources/fe-dist/assets/classDiagram-4FO5ZUOK-DA8DiM06.js +2 -0
- package/resources/fe-dist/assets/classDiagram-v2-Q7XG4LA2-DA8DiM06.js +2 -0
- package/resources/fe-dist/assets/cose-bilkent-S5V4N54A-yKy6sTY_.js +2 -0
- package/resources/fe-dist/assets/cytoscape.esm-DTSO7Bv0.js +332 -0
- package/resources/fe-dist/assets/dagre-BM42HDAG-DL4fpno6.js +5 -0
- package/resources/fe-dist/assets/defaultLocale-DX6XiGOO.js +2 -0
- package/resources/fe-dist/assets/diagram-2AECGRRQ-BueYws-9.js +44 -0
- package/resources/fe-dist/assets/diagram-5GNKFQAL-GQEQSUeb.js +11 -0
- package/resources/fe-dist/assets/diagram-KO2AKTUF-LE3yI4ed.js +4 -0
- package/resources/fe-dist/assets/diagram-LMA3HP47-BkHjYrU4.js +25 -0
- package/resources/fe-dist/assets/diagram-OG6HWLK6-DrnHic-P.js +25 -0
- package/resources/fe-dist/assets/erDiagram-TEJ5UH35-BCwWv-rO.js +86 -0
- package/resources/fe-dist/assets/flowDiagram-I6XJVG4X-DEC2Z_fh.js +163 -0
- package/resources/fe-dist/assets/ganttDiagram-6RSMTGT7-H1T5bCsY.js +293 -0
- package/resources/fe-dist/assets/gitGraphDiagram-PVQCEYII-DmZUfKfl.js +107 -0
- package/resources/fe-dist/assets/graph-CAnANduQ.js +2 -0
- package/resources/fe-dist/assets/index-OpBFduyh.js +466 -0
- package/resources/fe-dist/assets/index-yMgNjHUH.css +1 -0
- package/resources/fe-dist/assets/infoDiagram-5YYISTIA-fDOg9Qr5.js +3 -0
- package/resources/fe-dist/assets/init-Gi6I4Gst.js +2 -0
- package/resources/fe-dist/assets/ishikawaDiagram-YF4QCWOH-QIvSJI3q.js +71 -0
- package/resources/fe-dist/assets/journeyDiagram-JHISSGLW-Iz7u4iH8.js +140 -0
- package/resources/fe-dist/assets/kanban-definition-UN3LZRKU-BYiFSFgn.js +90 -0
- package/resources/fe-dist/assets/layout-DGIYPm2g.js +2 -0
- package/resources/fe-dist/assets/linear-DNHZFKop.js +2 -0
- package/resources/fe-dist/assets/mermaid.core-DUipsjFg.js +310 -0
- package/resources/fe-dist/assets/mindmap-definition-RKZ34NQL-tPbrKC3m.js +97 -0
- package/resources/fe-dist/assets/ordinal-BENe2yWM.js +2 -0
- package/resources/fe-dist/assets/pieDiagram-4H26LBE5-26o8qBzb.js +31 -0
- package/resources/fe-dist/assets/quadrantDiagram-W4KKPZXB-BgpGo9Ak.js +8 -0
- package/resources/fe-dist/assets/{refresh-cw-D0LYIwxc.js → refresh-cw-DdcimDhs.js} +3 -3
- package/resources/fe-dist/assets/requirementDiagram-4Y6WPE33-BEfrxsDZ.js +85 -0
- package/resources/fe-dist/assets/sankeyDiagram-5OEKKPKP-BuIeHyjh.js +41 -0
- package/resources/fe-dist/assets/sequenceDiagram-3UESZ5HK-CL0sinOn.js +163 -0
- package/resources/fe-dist/assets/stateDiagram-AJRCARHV-BCq5X6hO.js +2 -0
- package/resources/fe-dist/assets/stateDiagram-v2-BHNVJYJU-DH2ctCND.js +2 -0
- package/resources/fe-dist/assets/timeline-definition-PNZ67QCA-CnqqA91O.js +121 -0
- package/resources/fe-dist/assets/vennDiagram-CIIHVFJN-BqFG3JXB.js +35 -0
- package/resources/fe-dist/assets/wardley-L42UT6IY-DvfZKNwT.js +174 -0
- package/resources/fe-dist/assets/wardleyDiagram-YWT4CUSO-DlABpMGt.js +79 -0
- package/resources/fe-dist/assets/xychartDiagram-2RQKCTM6-BDiyUuus.js +8 -0
- package/resources/fe-dist/index.html +2 -2
- package/resources/gateway-drizzle/0007_fearless_pestilence.sql +8 -0
- package/resources/gateway-drizzle/0008_perfect_ozymandias.sql +7 -0
- package/resources/gateway-drizzle/meta/_journal.json +14 -0
- package/resources/fe-dist/assets/DevicesPage-BPLJu-5J.js +0 -2
- package/resources/fe-dist/assets/SettingsPage-CKP305BP.js +0 -22
- package/resources/fe-dist/assets/card-X35xwXzW.js +0 -2
- package/resources/fe-dist/assets/index-CKQEHZcV.css +0 -1
- package/resources/fe-dist/assets/index-O2a9149K.js +0 -400
package/package.json
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var jt=Object.defineProperty;var $t=(n,e,t)=>e in n?jt(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var p=(n,e,t)=>$t(n,typeof e!="symbol"?e+"":e,t);import{
|
|
1
|
+
var jt=Object.defineProperty;var $t=(n,e,t)=>e in n?jt(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var p=(n,e,t)=>$t(n,typeof e!="symbol"?e+"":e,t);import{W as Ye,u as Ke,j as f,a4 as qt,r as d,c as J,ab as At,ac as Ot,ad as Xt,ae as dt,t as xe,af as Qt,ag as it,ah as Jt,a5 as kt,ai as ot,a6 as ce,aj as Zt,b as It,ak as Nt,al as _e,am as en,a2 as $e,a0 as tn,B as fe,T as nn,aa as ut,an as sn,ao as rn,ap as on,A as ln,e as an,f as cn,h as dn,i as un,k as hn,l as fn,m as mn,aq as pn,ar as wn}from"./index-OpBFduyh.js";import{R as yn}from"./refresh-cw-DdcimDhs.js";/**
|
|
2
2
|
* @license lucide-react v0.564.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
@@ -23,4 +23,4 @@ var jt=Object.defineProperty;var $t=(n,e,t)=>e in n?jt(n,e,{enumerable:!0,config
|
|
|
23
23
|
`);return(e.endsWith(`
|
|
24
24
|
`)?e.slice(0,-1):e).replace(/\n/g,`\r
|
|
25
25
|
`)}const gr="\x1B[?1049h\x1B[H\x1B[2J";function Sr(n){return gr+Kt(n)}function Mt(n,e){let t=e,s=0;for(const l of n)l===10&&!t&&(s+=1),t=l===13;const i=t;if(s===0)return{normalized:n,endedWithCR:i};const r=new Uint8Array(n.length+s);let o=0;t=e;for(const l of n)l===10&&!t&&(r[o]=13,o+=1),r[o]=l,o+=1,t=l===13;return{normalized:r,endedWithCR:i}}const _r=1.3,xr=36,Tr=500,br=12;function Er(n,e){const t=d.useRef(!1);return d.useEffect(()=>{const s=n.current;if(!s||!(window.innerWidth<768||navigator.maxTouchPoints>0||"ontouchstart"in window))return;t.current=!0;let r=0,o=null,l=!1,u=0,h=0,a=0,x=null,v=!1;const O=()=>{x!==null&&(clearTimeout(x),x=null)},E=T=>T?!!(T.closest(".scrollbar")||T.closest(".slider")||T.closest(".xterm-scroll-area")):!1,b=(T,R,P)=>{const U=P instanceof Element?P:null;if(E(U))return!0;const Q=document.elementFromPoint(T,R);if(E(Q))return!0;const _=s.querySelector(".xterm");if(!(_ instanceof HTMLElement))return!1;const C=_.getBoundingClientRect(),F=T>=C.left&&T<=C.right,j=R>=C.top&&R<=C.bottom;return!F||!j?!1:T>=C.right-xr},z=()=>[s.querySelector(".xterm-viewport"),s.querySelector(".xterm-scrollable-element")].filter(R=>R instanceof HTMLElement),w=T=>{if(o===null)return null;for(let R=0;R<T.length;R+=1){const P=T.item(R);if(P&&P.identifier===o)return P}return null},N=T=>{if(O(),T.touches.length!==1)return;const R=T.touches.item(0);R&&(o=R.identifier,r=R.clientY,u=0,l=b(R.clientX,R.clientY,T.target),h=R.clientX,a=R.clientY,v=!1,l||(x=setTimeout(()=>{var U;x=null;const P=(e==null?void 0:e())??null;(U=P==null?void 0:P.startTouchSelection)!=null&&U.call(P,h,a,"word")&&(v=!0)},Tr)))},Y=T=>{var F,j,M,X,q,te,ne,D,re;const R=w(T.touches)??T.touches.item(0);if(!R)return;if(v){const B=(e==null?void 0:e())??null;(F=B==null?void 0:B.updateTouchSelection)==null||F.call(B,R.clientX,R.clientY),T.cancelable&&T.preventDefault();return}if(x!==null&&Math.hypot(R.clientX-h,R.clientY-a)>br&&O(),l||(l=b(R.clientX,R.clientY,T.target),l&&(u=0)),l)return;const P=R.clientY,U=r-P;if(r=P,U===0)return;let Q=!1,_=!1;const C=(e==null?void 0:e())??null;if(C){const B=C==null?void 0:C._core,V=((q=(X=(M=(j=B==null?void 0:B._renderService)==null?void 0:j.dimensions)==null?void 0:M.css)==null?void 0:X.cell)==null?void 0:q.height)??18;u+=U*_r;const L=u>0?Math.floor(u/V):Math.ceil(u/V);if(typeof C.handleViewportGesture=="function")L!==0&&(Q=C.handleViewportGesture({source:"touch",deltaY:L*V,clientX:R.clientX,clientY:R.clientY}),u-=L*V);else if(L!==0){const $=((ne=(te=C.buffer)==null?void 0:te.active)==null?void 0:ne.viewportY)??0;C.scrollLines(L);const le=((re=(D=C.buffer)==null?void 0:D.active)==null?void 0:re.viewportY)??0;Q=$!==le,_=L<0&&$<=0&&le<=0,u-=L*V}}else{const B=z();if(B.length===0)return;for(const V of B){const L=V.scrollTop;V.scrollTop+=U;const $=V.scrollTop;Math.abs($-L)>0&&(Q=!0),U<0&&$<=0&&(_=!0)}if(!Q){const V=s.querySelector(".xterm");if(V instanceof HTMLElement){const L=new WheelEvent("wheel",{bubbles:!0,cancelable:!0,deltaMode:WheelEvent.DOM_DELTA_PIXEL,deltaY:U}),$=V.dispatchEvent(L);Q=L.defaultPrevented||!$}}}T.cancelable&&(Q||_)&&T.preventDefault()},K=T=>{var P;if(O(),!(o===null||!w(T.changedTouches))&&(o=null,u=0,l=!1,v)){v=!1;const U=(e==null?void 0:e())??null;(P=U==null?void 0:U.endTouchSelection)==null||P.call(U)}},H=T=>{v&&T.preventDefault()};return s.addEventListener("touchstart",N,{passive:!0}),s.addEventListener("touchmove",Y,{passive:!1}),s.addEventListener("touchend",K,{passive:!0}),s.addEventListener("touchcancel",K,{passive:!0}),s.addEventListener("contextmenu",H),()=>{t.current=!1,O(),s.removeEventListener("touchstart",N),s.removeEventListener("touchmove",Y),s.removeEventListener("touchend",K),s.removeEventListener("touchcancel",K),s.removeEventListener("contextmenu",H)}},[n,e]),t}function Rr({now:n,remoteSize:e,pendingLocalSize:t,ttlMs:s=2e3}){return!t||n-t.at>s?!0:t.cols===e.cols&&t.rows===e.rows}function Cr({currentSize:n,containerSize:e,force:t=!1}){return t?!0:n.cols!==e.cols||n.rows!==e.rows}function vr({deviceId:n,paneId:e,deviceConnected:t,isSelectionInvalid:s,onResize:i,onSync:r,getContainerRect:o}){const l=d.useRef(null),u=d.useRef(null),h=d.useRef(null),a=d.useRef(null),x=d.useRef(0),v=d.useRef([]),O=d.useRef(null),E=d.useRef(null),b=d.useRef(o),z=d.useRef(!1),w=d.useRef(i),N=d.useRef(r);d.useEffect(()=>{w.current=i},[i]),d.useEffect(()=>{N.current=r},[r]),d.useEffect(()=>{b.current=o},[o]);const Y=d.useCallback(()=>{var te,ne,D,re,B,V,L,$,le,S;const _=E.current,C=O.current;if(!_||!C||!_.element)return null;let F;try{const g=C.proposeDimensions();if(!g)throw new Error("fitAddon.proposeDimensions() returned null");F=Math.max(2,g.cols)}catch{const g=_._core,k=((re=(D=(ne=(te=g==null?void 0:g._renderService)==null?void 0:te.dimensions)==null?void 0:ne.css)==null?void 0:D.cell)==null?void 0:re.width)??9,W=(B=b.current)==null?void 0:B.call(b);if(!W||W.width===0)return null;F=Math.max(2,Math.floor(W.width/k))}const j=(V=b.current)==null?void 0:V.call(b);if(!j||j.height===0)return null;const M=_._core,X=((S=(le=($=(L=M==null?void 0:M._renderService)==null?void 0:L.dimensions)==null?void 0:$.css)==null?void 0:le.cell)==null?void 0:S.height)??17,q=Math.max(2,Math.floor(j.height/X));return{cols:F,rows:q}},[]),K=d.useCallback((_,C)=>{const F=E.current;F&&(F.cols===_&&F.rows===C||F.resize(_,C))},[]),H=d.useCallback((_,C=!1)=>{if(!n||!e||!t||s&&_!=="sync"||!C&&Date.now()<x.current||!E.current)return!1;const j=Y();if(!j)return!1;const{cols:M,rows:X}=j,q=h.current;return!C&&q&&q.cols===M&&q.rows===X?(K(M,X),!0):(K(M,X),_==="sync"?N.current(M,X):w.current(M,X),h.current={cols:M,rows:X},a.current={cols:M,rows:X,at:Date.now()},!0)},[K,t,n,s,Y,e]),T=d.useCallback((_="resize",C={})=>{const{immediate:F=!1,force:j=!1}=C;u.current!==null&&(window.clearTimeout(u.current),u.current=null),l.current!==null&&(cancelAnimationFrame(l.current),l.current=null);const M=()=>{l.current=requestAnimationFrame(()=>{l.current=null,H(_,j)})};if(F){M();return}u.current=window.setTimeout(()=>{u.current=null,M()},150)},[H]),R=d.useCallback(()=>{for(const _ of v.current)window.clearTimeout(_);v.current=[]},[]),P=d.useCallback(()=>{var C;R(),T("sync",{immediate:!0,force:!0});const _=window.setTimeout(()=>{T("sync",{immediate:!0,force:!0})},60);v.current.push(_),typeof document<"u"&&"fonts"in document&&((C=document.fonts)!=null&&C.ready)&&document.fonts.ready.then(()=>{T("sync",{immediate:!0,force:!0})}).catch(()=>{})},[R,T]);d.useEffect(()=>{let _=null;const C=()=>{_!==null&&cancelAnimationFrame(_),_=requestAnimationFrame(()=>{_=null,T("resize")})};return window.addEventListener("resize",C),()=>{window.removeEventListener("resize",C),_!==null&&cancelAnimationFrame(_)}},[T]),d.useEffect(()=>{const _=()=>{var te;const M=E.current,X=Y();if(!M||!X)return;if(!Cr({currentSize:{cols:Math.max(2,M.cols),rows:Math.max(2,M.rows)},containerSize:X})){(te=M.refresh)==null||te.call(M);return}T("sync",{force:!0})},C=()=>{if(document.visibilityState!=="visible"){z.current=!0;return}z.current&&(z.current=!1,_())},F=()=>{z.current=!0},j=()=>{z.current&&(z.current=!1,_())};return document.addEventListener("visibilitychange",C),window.addEventListener("blur",F),window.addEventListener("focus",j),()=>{document.removeEventListener("visibilitychange",C),window.removeEventListener("blur",F),window.removeEventListener("focus",j)}},[Y,T]),d.useEffect(()=>()=>{R(),u.current!==null&&window.clearTimeout(u.current),l.current!==null&&cancelAnimationFrame(l.current)},[R]);const U=d.useCallback(_=>{O.current=_},[]),Q=d.useCallback(_=>{E.current=_},[]);return{scheduleResize:T,runPostSelectResize:P,clearPostSelectResizeTimers:R,setFitAddon:U,setTerminal:Q,lastReportedSize:h,pendingLocalSize:a,suppressLocalResizeUntil:x}}const Mr={fontFamily:Qt,fontSize:13,scrollback:1e4},rt="tmex:terminal-mode-cache";function Dr(n,e){try{const t=sessionStorage.getItem(rt);return t?JSON.parse(t)[`${n}:${e}`]??null:null}catch{return null}}function Ar(n,e,t){try{const s=sessionStorage.getItem(rt),i=s?JSON.parse(s):{},r=`${n}:${e}`;t?i[r]=t:delete i[r],sessionStorage.setItem(rt,JSON.stringify(i))}catch{}}function Or(){return{mouseX10:!1,mouseNormal:!0,mouseButton:!1,mouseAny:!1,mouseUtf8:!1,mouseSgr:!0,mouseSgrPixels:!1,mouseUrxvt:!1,altScroll:!0,altScreen1047:!1,altScreen1049:!1}}function kr(n,e){if(!e)return n?{...n,mouseX10:!1,mouseNormal:!1,mouseButton:!1,mouseAny:!1,mouseUtf8:!1,mouseSgrPixels:!1,mouseUrxvt:!1,altScreen1047:!1,altScreen1049:!1}:null;const t=Or();if(!n)return t;const s=n.mouseNormal||n.mouseButton||n.mouseAny;return{...n,mouseX10:!1,mouseUtf8:!1,mouseSgr:!0,mouseSgrPixels:!1,mouseUrxvt:!1,altScroll:!0,altScreen1047:!1,altScreen1049:!1,mouseNormal:s?n.mouseNormal:t.mouseNormal}}function Ir(n){var t;const e=globalThis;e.__tmexE2eXterm=n,e.__tmexE2eTerminal=n,e.__tmexE2eTerminalEngine=Yt,e.__tmexE2eTerminalRenderer=((t=n.getRendererKind)==null?void 0:t.call(n))??null}function Nr(n){if(!n)return;const e=globalThis;e.__tmexE2eTerminal!==n&&e.__tmexE2eXterm!==n||(e.__tmexE2eXterm=null,e.__tmexE2eTerminal=null,e.__tmexE2eTerminalEngine=null,e.__tmexE2eTerminalRenderer=null,e.__tmexE2eTerminalSelectionText=null)}const Vt=d.forwardRef(({deviceId:n,paneId:e,theme:t,inputMode:s,deviceConnected:i,isSelectionInvalid:r,onResize:o,onSync:l,children:u},h)=>{const[a,x]=d.useState(null),[v,O]=d.useState(!1),E=J(S=>S.sendInput),{t:b}=Ke(),z=d.useMemo(()=>{switch(t){case"light":return Ot;default:return At}},[t]),w=d.useRef(null),N=d.useRef(null),Y=d.useRef(null),K=d.useRef(n),H=d.useRef(e),T=d.useRef(n),R=d.useRef(e),P=d.useRef(i&&!r),U=d.useRef(s),Q=d.useRef(z),_=d.useRef(!1),C=d.useRef(!1),F=d.useRef(null),j=d.useRef(!1),M=d.useCallback((S,g,k)=>{!(S!=null&&S.exportModeSnapshot)||!g||!k||Ar(g,k,S.exportModeSnapshot())},[]),X=d.useCallback(()=>a,[a]);Er(w,X),d.useEffect(()=>{K.current=n,H.current=e,C.current=!1},[n,e]),d.useEffect(()=>{P.current=i&&!r},[i,r]),d.useEffect(()=>{U.current=s},[s]),d.useEffect(()=>{Q.current=z},[z]);const q=d.useCallback(S=>{if(!S||s!=="direct"||!P.current)return;const g=K.current,k=H.current;!g||!k||E(g,k,S,!1)},[s,E]),{pendingLocalSize:te,scheduleResize:ne,runPostSelectResize:D,setFitAddon:re,setTerminal:B}=vr({deviceId:n,paneId:e,deviceConnected:i,isSelectionInvalid:r,onResize:o,onSync:l,getContainerRect:()=>{const S=w.current;if(!S)return null;const g=S.getBoundingClientRect();return{width:g.width,height:g.height}}});d.useEffect(()=>{let S=!1,g=null;return(async()=>{if(await Xt(),S)return;const k=await wr({...Mr,theme:Q.current,disableStdin:U.current==="editor"});if(S){k.dispose();return}g=k,N.current&&k.open(N.current),Ir(k),x(k)})(),()=>{S=!0,x(null),Nr(g),g==null||g.dispose()}},[]),d.useEffect(()=>{!a||!("setTheme"in a)||a.setTheme(z)},[a,z]),d.useEffect(()=>{!a||!("setDisableStdin"in a)||a.setDisableStdin(s==="editor")},[a,s]),d.useEffect(()=>{!a||s!=="direct"||window.innerWidth<768||"ontouchstart"in window||a.focus()},[a,s]);const V=d.useMemo(()=>a?{onResetTerminal:S=>{K.current===S&&(M(a,T.current,R.current),j.current=!0,a.reset(),_.current=!1,D())},onApplyHistory:(S,g,k)=>{var ie;if(K.current!==S)return;const W=kr(Dr(K.current,H.current),k);W&&((ie=a.restoreModeSnapshot)==null||ie.call(a,W));const G=k?Sr(g):Kt(g);C.current=!0,a.write(G),j.current=!1,T.current=K.current,R.current=H.current,M(a,K.current,H.current)},onFlushBuffer:(S,g)=>{if(K.current===S){for(const k of g){const W=Mt(k,_.current);_.current=W.endedWithCR,a.write(W.normalized)}C.current&&(a.buffer.active.baseY<=1&&a.scrollToTop(),C.current=!1),T.current=K.current,R.current=H.current,M(a,K.current,H.current)}},onOutput:(S,g,k)=>{if(K.current!==S||H.current!==g)return;const W=Mt(k,_.current);_.current=W.endedWithCR,a.write(W.normalized),C.current&&(a.buffer.active.baseY<=1&&a.scrollToTop(),C.current=!1),T.current=K.current,R.current=H.current,M(a,K.current,H.current)}}:{},[a,M,D]);d.useEffect(()=>{a?F.current!==a&&(_.current=!1,T.current=K.current,R.current=H.current,F.current=a):F.current=null},[a]),d.useEffect(()=>{if(!(!a||!n||!e))return()=>{if(j.current){j.current=!1;return}M(a,T.current,R.current)}},[n,a,e,M]),d.useEffect(()=>{dt(V)},[V]),d.useEffect(()=>()=>{dt({})},[]),d.useEffect(()=>{if(!a){Y.current=null,re(null),B(null);return}const S=new pr;return a.loadAddon(S),Y.current=S,re(S),B(a),D(),()=>{try{S.dispose()}finally{Y.current=null,re(null),B(null)}}},[a,D,re,B]),d.useEffect(()=>{const S=w.current;if(!S)return;let g=null;const k=new ResizeObserver(()=>{g!==null&&cancelAnimationFrame(g),g=requestAnimationFrame(()=>{g=null,ne("resize")})});return k.observe(S),()=>{k.disconnect(),g!==null&&cancelAnimationFrame(g)}},[ne]),d.useEffect(()=>{if(!a||!n||!e)return;const S=a.onData(g=>{!i||r||q(g)});return a.attachCustomKeyEventHandler(g=>!i||r||g.type!=="keydown"||s!=="direct"?!0:g.shiftKey&&g.key==="Enter"?(g.preventDefault(),q("\x1B[13;2u"),!1):!0),()=>{S.dispose(),a.attachCustomKeyEventHandler(()=>!0)}},[a,i,r,s,q,n,e]),d.useEffect(()=>{if(!(a!=null&&a.onSelectionChange)){O(!1);return}const S=a.onSelectionChange(g=>{O(!!g)});return()=>{S.dispose(),O(!1)}},[a]);const L=d.useCallback(()=>{var g;if(!a)return;const S=((g=a.getSelection)==null?void 0:g.call(a))??"";S&&Gt(S).then(()=>{xe.success(b("terminal.copied"))}).catch(()=>{xe.error(b("terminal.copyFailed"))}).finally(()=>{var k;(k=a.clearSelection)==null||k.call(a),a.focus()})},[a,b]),$=d.useCallback(()=>{var g;if(!a)return;((g=navigator.clipboard)!=null&&g.readText?navigator.clipboard.readText():Promise.reject(new Error("clipboard unavailable"))).then(k=>{var W;k&&a.paste(k),(W=a.clearSelection)==null||W.call(a),a.focus()}).catch(()=>{xe.error(b("terminal.pasteFailed"))})},[a,b]),le=d.useCallback(()=>{var S;(S=a==null?void 0:a.clearSelection)==null||S.call(a),a==null||a.focus()},[a]);return d.useImperativeHandle(h,()=>({write:S=>a==null?void 0:a.write(S),reset:()=>{a==null||a.reset(),_.current=!1},scrollToBottom:()=>a==null?void 0:a.scrollToBottom(),resize:(S,g)=>a==null?void 0:a.resize(S,g),getTerminal:()=>a??null,getSize:()=>a?{cols:Math.max(2,a.cols),rows:Math.max(2,a.rows)}:null,runPostSelectResize:()=>D(),scheduleResize:(S,g)=>ne(S,g),calculateSizeFromContainer:()=>{var Me,oe,ye,ue,ae,Z,ge,he,Se,be,De,Ae,Oe,ke,Ee,c;const S=w.current,g=a,k=Y.current;if(!S||!g)return null;const W=S.getBoundingClientRect();if(W.width===0||W.height===0)return null;const G=g._core;let ie;if(k)try{const m=k.proposeDimensions();if(m)ie=Math.max(2,m.cols);else{const y=((ue=(ye=(oe=(Me=G==null?void 0:G._renderService)==null?void 0:Me.dimensions)==null?void 0:oe.css)==null?void 0:ye.cell)==null?void 0:ue.width)??9;ie=Math.max(2,Math.floor(W.width/y))}}catch{const m=((he=(ge=(Z=(ae=G==null?void 0:G._renderService)==null?void 0:ae.dimensions)==null?void 0:Z.css)==null?void 0:ge.cell)==null?void 0:he.width)??9;ie=Math.max(2,Math.floor(W.width/m))}else{const m=((Ae=(De=(be=(Se=G==null?void 0:G._renderService)==null?void 0:Se.dimensions)==null?void 0:be.css)==null?void 0:De.cell)==null?void 0:Ae.width)??9;ie=Math.max(2,Math.floor(W.width/m))}const pe=((c=(Ee=(ke=(Oe=G==null?void 0:G._renderService)==null?void 0:Oe.dimensions)==null?void 0:ke.css)==null?void 0:Ee.cell)==null?void 0:c.height)??17,We=Math.max(2,Math.floor(W.height/pe));return{cols:ie,rows:We}},getPendingLocalSize:()=>te.current}),[a,te,D,ne]),f.jsxs("div",{className:"flex h-full w-full flex-col",style:{backgroundColor:z.background},"data-terminal-engine":Yt,children:[f.jsxs("div",{ref:w,className:"relative min-h-0 w-full flex-1",children:[f.jsx("div",{ref:N,className:"absolute inset-0"}),f.jsx(yr,{visible:v,canPaste:s==="direct"&&i&&!r,onCopy:L,onPaste:$,onDismiss:le})]}),u]})});Vt.displayName="Terminal";const Hr=1200,Pr=2e3;function me(n,e){return!n||!e?!1:n.windowId===e.windowId&&n.paneId===e.paneId}function Wt(n,e){const t=n.filter(s=>e-s.at<Hr);return t.length===0?null:t.reduce((s,i)=>i.at>s.at?i:s)}function ve(n,e=Date.now()){return!n||e-n.at>Pr?null:n}function Br(n){const e=n.now??Date.now(),t=Wt(n.recentSelectRequests,e);if(t&&!me(t,n.activePaneFromEvent)||me(n.currentRoute,n.activePaneFromEvent)||me(n.lastHandledActive,n.activePaneFromEvent))return!0;const s=ve(n.pendingUserSelection,e);return!!(s&&!me(s,n.activePaneFromEvent))}function Lr(n){const e=n.now??Date.now(),t=Wt(n.recentSelectRequests,e),s=ve(n.pendingUserSelection,e);return!!(s&&!me(s,n.snapshotActive)||t&&!me(t,n.snapshotActive))}function Fr(n){const e=n.now??Date.now(),t=ve(n.pendingUserSelection,e);return!(t&&me(t,n.routeTarget)||n.snapshotActive&&me(n.snapshotActive,n.routeTarget))}const Gr=[{key:"enter",label:"ENTER",payload:"\r"},{key:"ctrl-c",label:"CTRL-C",payload:""},{key:"ctrl-d",label:"CTRL-D",payload:""},{key:"up",label:"↑",payload:"\x1B[A"},{key:"down",label:"↓",payload:"\x1B[B"},{key:"left",label:"←",payload:"\x1B[D"},{key:"right",label:"→",payload:"\x1B[C"},{key:"shift-enter",label:"SHIFT+ENTER",payload:"\x1B[13;2u"},{key:"tab",label:"TAB",payload:" "},{key:"backspace",label:"BACKSPACE",payload:"\b"},{key:"esc",label:"ESC",payload:"\x1B"},{key:"delete",label:"DELETE",payload:""},{key:":",label:":",payload:":"},{key:"/",label:"/",payload:"/"},{key:"'",label:"'",payload:"'"},{key:'"',label:'"',payload:'"'},{key:"`",label:"`",payload:"`"}],Dt=d.memo(function({onSend:e,onFocusEditor:t,disabled:s,isMobile:i,inputMode:r}){return f.jsx("div",{className:"terminal-shortcuts-strip","data-testid":"terminal-shortcuts-strip",children:f.jsx("div",{className:"shortcut-row flex items-center gap-1.5 py-2 overflow-x-auto scrollbar-thin","data-testid":"editor-shortcuts-row",children:Gr.map(o=>f.jsx(fe,{variant:"ghost",size:"sm",className:"terminal-shortcut-btn h-7 min-w-9 px-2.5 rounded-full text-[11px] font-medium tracking-wide shrink-0 [@media(any-pointer:coarse)]:h-9 [@media(any-pointer:coarse)]:min-w-10 [@media(any-pointer:coarse)]:px-3",title:o.label,"aria-label":o.label,"data-testid":`editor-shortcut-${o.key}`,onMouseDown:l=>l.preventDefault(),onClick:()=>{e(o.payload),i&&r==="editor"&&(t==null||t())},disabled:s,children:o.label},o.key))})})});function Kr(){var Ee;const{t:n}=Ke(),{deviceId:e,windowId:t,paneId:s}=it(),i=Jt(),r=d.useRef(null),o=d.useRef(null),l=d.useRef(null),u=d.useRef(null),h=d.useRef(!1),a=d.useRef(!1),x=d.useRef(null),v=J(c=>c.selectPane),O=J(c=>e?c.snapshots[e]:void 0),E=J(c=>{var m;return e?(m=c.deviceErrors)==null?void 0:m[e]:void 0}),b=J(c=>{var m;return e?((m=c.deviceConnected)==null?void 0:m[e])??!1:!1}),z=kt(c=>{var m;return((m=c.settings)==null?void 0:m.siteName)??"tmex"}),w=d.useMemo(()=>ot(s),[s]),N=d.useMemo(()=>e&&w?`${e}:${w}`:null,[e,w]),[Y,K]=d.useState(!1),[H,T]=d.useState(""),R=d.useRef(!1),P=!b||!w,[U,Q]=d.useState(!1),_=ce(c=>c.inputMode),C=ce(c=>c.theme),F=ce(c=>c.editorSendWithEnter),j=ce(c=>c.setEditorSendWithEnter),M=ce(c=>c.addEditorHistory),X=ce(c=>c.setEditorDraft),q=ce(c=>c.removeEditorDraft),te=ce(c=>N?c.editorDrafts[N]??"":""),ne=d.useMemo(()=>Zt(),[]),D=(Ee=O==null?void 0:O.session)==null?void 0:Ee.windows,re=C==="light"?Ot:At,{data:B}=It({queryKey:["devices"],queryFn:async()=>{const c=await fetch("/api/devices");if(!c.ok)throw new Error("Failed to fetch devices");return c.json()},throwOnError:!1}),V=d.useMemo(()=>{if(e)return B==null?void 0:B.devices.find(c=>c.id===e)},[e,B==null?void 0:B.devices]),L=d.useMemo(()=>{if(!(!t||!D))return D.find(c=>c.id===t)},[t,D]),$=d.useMemo(()=>{if(!(!w||!L))return L.panes.find(c=>c.id===w)},[w,L]),le=!!D,W=!!(le&&!!t&&!L||le&&!!t&&!!w&&!!L&&!$?n("wsError.checkGateway"):null),G=!!(b&&w&&!W),ie=d.useMemo(()=>{if(!L||!$)return null;const c=(V==null?void 0:V.name)??e;return Nt({paneIdx:$.index,windowIdx:L.index,paneTitle:$.title,windowName:L.name,windowCustomName:L.customName,deviceName:c})},[V==null?void 0:V.name,e,$,L]),pe=d.useMemo(()=>{if(!D||D.length===0)return null;const c=D.find(y=>y.active),m=c==null?void 0:c.panes.find(y=>y.active);return!c||!m?null:{windowId:c.id,paneId:m.id}},[D]),We=d.useCallback((c,m)=>{!e||!w||J.getState().resizePane(e,w,c,m)},[e,w]),Me=d.useCallback((c,m)=>{!e||!w||J.getState().syncPaneSize(e,w,c,m)},[e,w]),oe=d.useCallback((c,m)=>{const y=u.current,A=(y==null?void 0:y.calculateSizeFromContainer())??(y==null?void 0:y.getSize())??void 0;if(A)return A;if(!c||!m||!D)return;const ee=D.find(we=>we.id===c),se=ee==null?void 0:ee.panes.find(we=>we.id===m);if(!(!se||se.width<=1||se.height<=1))return{cols:se.width,rows:se.height}},[D]);d.useEffect(()=>{const c=()=>{K(window.innerWidth<768||"ontouchstart"in window)};return c(),window.addEventListener("resize",c),()=>window.removeEventListener("resize",c)},[]),d.useEffect(()=>{if(!Y||!ne||a.current)return;a.current=!0;const c=()=>{window.scrollTo(0,1)},m=window.requestAnimationFrame(c),y=window.setTimeout(c,120),A=window.setTimeout(c,420);return()=>{window.cancelAnimationFrame(m),window.clearTimeout(y),window.clearTimeout(A)}},[ne,Y]),d.useEffect(()=>{e&&(h.current=!1,ge.current=null,he.current=null,x.current=null,ue.current=[])},[e]),d.useEffect(()=>{b||(h.current=!1)},[b]),d.useEffect(()=>{if(!e||!b||!t||!D)return;if(D.length===0){i("/devices",{replace:!0});return}const c=D.find(y=>y.id===t);if(!c)return;if(!w){const y=c.panes.find(A=>A.active)??c.panes[0];y&&i(`/devices/${e}/windows/${t}/panes/${_e(y.id)}`,{replace:!0});return}if(!c.panes.find(y=>y.id===w)){const y=c.panes.find(A=>A.active)??c.panes[0];y&&i(`/devices/${e}/windows/${t}/panes/${_e(y.id)}`,{replace:!0});return}},[e,b,D,t,w,i]),d.useEffect(()=>{if(!e||!b||!D||D.length===0||t&&w||h.current)return;const c=D.find(y=>y.active)??D[0],m=c.panes.find(y=>y.active)??c.panes[0];m&&(h.current=!0,i(`/devices/${e}/windows/${c.id}/panes/${_e(m.id)}`,{replace:!0}))},[b,e,i,w,t,D]);const ye=d.useRef(null);d.useEffect(()=>{ye.current=null},[e,w]),d.useEffect(()=>{if(!e||!t||!w||P||!b)return;const c=`${e}:${t}:${w}`;if(ye.current===c)return;ye.current=c;const m=oe(t,w);ae(t,w),v(e,t,w,m)},[b,e,oe,P,w,v,t]),d.useEffect(()=>{if(!e||!b||!t||!w)return;const c={windowId:t,paneId:w};Fr({routeTarget:c,snapshotActive:pe,pendingUserSelection:x.current})&&(x.current={windowId:c.windowId,paneId:c.paneId,at:Date.now()})},[b,e,w,pe,t]);const ue=d.useRef([]),ae=d.useCallback((c,m)=>{const y=Date.now(),A=[...ue.current.filter(ee=>y-ee.at<2e3),{windowId:c,paneId:m,at:y}];ue.current=A.slice(-8)},[]),Z=J(c=>e?c.activePaneFromEvent[e]:void 0),ge=d.useRef(null);d.useEffect(()=>{if(!e||!b||!t||!w||!Z)return;const c=Date.now(),m=ve(x.current,c);if(x.current=m,Br({now:c,pendingUserSelection:m,activePaneFromEvent:Z,currentRoute:{windowId:t,paneId:w},recentSelectRequests:ue.current,lastHandledActive:ge.current}))return;ge.current={...Z},m&&m.windowId===Z.windowId&&m.paneId===Z.paneId&&(x.current=null);const y=oe(Z.windowId,Z.paneId);ae(Z.windowId,Z.paneId),v(e,Z.windowId,Z.paneId,y),i(`/devices/${e}/windows/${Z.windowId}/panes/${_e(Z.paneId)}`,{replace:!0})},[e,b,t,w,Z,ae,oe,v,i]);const he=d.useRef(null);d.useEffect(()=>{if(!e||!b||!D||D.length===0)return;const c=ue.current,m=D.find(je=>je.active);if(!m)return;const y=m.panes.find(je=>je.active);if(!y)return;const A={windowId:m.id,paneId:y.id},ee=Date.now(),se=ve(x.current,ee);if(x.current=se,Lr({now:ee,pendingUserSelection:se,snapshotActive:A,recentSelectRequests:c})||he.current&&he.current.windowId===A.windowId&&he.current.paneId===A.paneId||(he.current={...A},se&&se.windowId===A.windowId&&se.paneId===A.paneId&&(x.current=null),t===A.windowId&&w===A.paneId))return;const we=oe(A.windowId,A.paneId);ae(A.windowId,A.paneId),v(e,A.windowId,A.paneId,we),i(`/devices/${e}/windows/${A.windowId}/panes/${_e(A.paneId)}`,{replace:!0})},[e,b,D,t,w,ae,oe,v,i]);const Se=J(c=>e?c.pendingCreateWindowAt[e]:void 0);d.useEffect(()=>{if(!e||!b||!Se)return;const c=5e3,m=Date.now()-Se;if(m>c){J.getState().clearPendingCreateWindow(e);return}if(!pe){const ee=window.setTimeout(()=>{J.getState().clearPendingCreateWindow(e)},c-m);return()=>window.clearTimeout(ee)}const y=pe;if(t===y.windowId&&w===y.paneId){const ee=window.setTimeout(()=>{J.getState().clearPendingCreateWindow(e)},c-m);return()=>window.clearTimeout(ee)}x.current={windowId:y.windowId,paneId:y.paneId,at:Date.now()};const A=oe(y.windowId,y.paneId);ae(y.windowId,y.paneId),v(e,y.windowId,y.paneId,A),i(`/devices/${e}/windows/${y.windowId}/panes/${_e(y.paneId)}`,{replace:!0}),J.getState().clearPendingCreateWindow(e)},[e,b,Se,pe,t,w,ae,oe,v,i]),d.useEffect(()=>{if(!G||!$||P)return;const c=u.current,m=c==null?void 0:c.getTerminal();if(!m)return;const y=Math.max(2,Math.floor($.width||0)),A=Math.max(2,Math.floor($.height||0));if(!y||!A)return;const ee=Date.now(),se={cols:y,rows:A},we=(c==null?void 0:c.getPendingLocalSize())??null;Rr({now:ee,remoteSize:se,pendingLocalSize:we})&&(m.cols===y&&m.rows===A||m.resize(y,A))},[G,P,$]),d.useEffect(()=>{const c=window.requestAnimationFrame(()=>{var y;(y=u.current)==null||y.scrollToBottom()}),m=window.setTimeout(()=>{var y;(y=u.current)==null||y.scrollToBottom()},120);return()=>{window.cancelAnimationFrame(c),window.clearTimeout(m)}},[_]),d.useEffect(()=>{E!=null&&E.message&&xe.error(E.message)},[E==null?void 0:E.message]),d.useEffect(()=>(document.title=en(ie),()=>{document.title=z}),[z,ie]),d.useEffect(()=>{const c=()=>{var m;(m=u.current)==null||m.scrollToBottom()};return window.addEventListener("tmex:jump-to-latest",c),()=>{window.removeEventListener("tmex:jump-to-latest",c)}},[]),d.useEffect(()=>{const c=m=>{const{deviceId:y,windowId:A,paneId:ee}=m.detail;y===e&&(x.current={windowId:A,paneId:ee,at:Date.now()})};return window.addEventListener("tmex:user-initiated-selection",c),()=>{window.removeEventListener("tmex:user-initiated-selection",c)}},[e]),d.useEffect(()=>{T(te)},[te]);const be=d.useCallback(c=>{if(!e||!w||!G)return;J.getState().sendInput(e,w,c,!1)},[G,e,w]),De=d.useCallback(()=>{if(!G){xe.error(n("wsError.checkGateway"));return}if(!e||!w||!H.trim())return;Q(!0),window.setTimeout(()=>Q(!1),150);const c=F?`${H}\r`:H;J.getState().sendInput(e,w,c,!1),M(H),N&&q(N),T("")},[M,G,e,N,F,H,q,w,n]),Ae=d.useCallback(()=>{if(!G){xe.error(n("wsError.checkGateway"));return}if(!e||!w||!H.trim())return;Q(!0),window.setTimeout(()=>Q(!1),150);const c=H.split(/\r?\n/),m=J.getState();for(const y of c)y.trim()&&m.sendInput(e,w,`${y}\r`,!1);M(H),N&&q(N),T("")},[M,G,e,N,H,q,w,n]),Oe=d.useCallback(()=>{var c;(c=l.current)==null||c.focus({preventScroll:!0})},[]);if(!e)return f.jsx("div",{className:"flex h-full items-center justify-center p-4",children:f.jsx("div",{className:"rounded-lg border border-dashed border-border px-4 py-3 text-sm text-muted-foreground",children:n("device.noDevices")})});const ke=!b&&!E;return f.jsxs("div",{className:"flex h-full min-h-0 flex-col bg-background","data-testid":"device-page",children:[f.jsxs("div",{className:`flex-1 relative overflow-hidden min-h-0 min-w-0 ${Y&&_==="editor"?"pb-1":""}`,children:[f.jsx("div",{className:"h-full px-3 py-1 min-h-0 min-w-0 w-full relative flex rounded-xl",style:{backgroundColor:re.background},children:b&&w?f.jsx("div",{ref:r,className:"flex-1 h-full min-h-0 w-full","data-virtual-keyboard-avoid":!0,children:f.jsx(Vt,{ref:u,deviceId:e,paneId:w,theme:C,inputMode:_,deviceConnected:b,isSelectionInvalid:W,onResize:We,onSync:Me,children:_==="direct"&&f.jsx(Dt,{onSend:be,disabled:!G,isMobile:Y,inputMode:_})},`${e}:${w}`)}):f.jsx("div",{className:"absolute inset-0 flex flex-col items-center justify-center p-8 text-center",children:f.jsx("div",{className:"max-w-sm space-y-4",children:b?t?f.jsxs(f.Fragment,{children:[f.jsx("div",{className:"h-12 w-12 rounded-full bg-muted flex items-center justify-center mx-auto",children:f.jsx($e,{className:"h-6 w-6 text-muted-foreground animate-spin"})}),f.jsx("h3",{className:"text-lg font-medium",children:n("terminal.connecting")})]}):f.jsxs(f.Fragment,{children:[f.jsx("div",{className:"h-12 w-12 rounded-full bg-muted flex items-center justify-center mx-auto",children:f.jsx("span",{className:"text-2xl text-muted-foreground",children:"📋"})}),f.jsx("h3",{className:"text-lg font-medium",children:n("window.noWindowSelected")}),f.jsx("p",{className:"text-sm text-muted-foreground",children:n("window.selectWindowToStart")})]}):f.jsxs(f.Fragment,{children:[f.jsx("div",{className:"h-12 w-12 rounded-full bg-muted flex items-center justify-center mx-auto",children:f.jsx("span",{className:"text-2xl text-muted-foreground",children:"🔌"})}),f.jsx("h3",{className:"text-lg font-medium",children:n("device.disconnected")}),f.jsx("p",{className:"text-sm text-muted-foreground",children:n("device.connectToStart")})]})})})}),ke&&f.jsx("div",{className:"absolute inset-0 flex items-center justify-center bg-background/85 backdrop-blur-sm","data-testid":"terminal-status-overlay",children:f.jsxs("div",{className:"flex flex-col items-center gap-2 rounded-lg border border-border bg-card/90 px-4 py-3 shadow-sm",children:[f.jsx("div",{className:"h-7 w-7 rounded-full border-2 border-primary border-t-transparent animate-spin"}),f.jsx("span",{className:"text-xs text-muted-foreground","data-testid":"terminal-status-text",children:n("terminal.connecting")})]})})]}),_==="editor"&&f.jsxs("div",{ref:o,"data-virtual-keyboard-avoid":!0,className:"editor-mode-input bg-card/85 backdrop-blur-sm",children:[Y&&f.jsx(Dt,{onSend:be,onFocusEditor:Oe,disabled:!G,isMobile:Y,inputMode:_}),f.jsx("textarea",{ref:l,"data-testid":"editor-input",className:"min-h-[88px] max-h-[28vh] w-full resize-y rounded-lg border border-border bg-background px-3 py-2 text-sm text-foreground shadow-xs outline-none transition-colors focus:border-ring",value:H,onChange:c=>{const m=c.target.value;if(T(m),!!N){if(m){X(N,m);return}q(N)}},placeholder:n("terminal.inputPlaceholder"),onCompositionStart:()=>{R.current=!0},onCompositionEnd:()=>{R.current=!1}}),f.jsx("div",{className:"actions mt-2",children:f.jsxs("div",{className:"send-row flex flex-wrap items-center justify-end gap-2","data-testid":"editor-send-row",children:[f.jsxs("div",{className:"send-with-enter-toggle mr-auto flex items-center gap-2 text-xs text-muted-foreground","data-testid":"editor-send-with-enter-toggle",children:[f.jsx(tn,{size:"sm",checked:F,onCheckedChange:c=>j(!!c)}),f.jsx("span",{children:n("terminal.editorSendWithEnter")})]}),f.jsxs(fe,{variant:"outline",size:"sm","data-testid":"editor-clear",onMouseDown:c=>c.preventDefault(),onClick:()=>{var c;T(""),N&&q(N),Y&&_==="editor"&&((c=l.current)==null||c.focus({preventScroll:!0}))},title:n("terminal.clear"),children:[f.jsx(nn,{className:"h-4 w-4"}),n("terminal.clear")]}),f.jsxs(fe,{variant:"secondary",size:"sm","data-testid":"editor-send-line-by-line",onMouseDown:c=>c.preventDefault(),onClick:()=>{var c;Ae(),Y&&_==="editor"&&((c=l.current)==null||c.focus({preventScroll:!0}))},disabled:!G||U,children:[U?f.jsx($e,{className:"h-4 w-4 animate-spin"}):f.jsx(ut,{className:"h-4 w-4"}),n("terminal.editorSendLineByLine")]}),f.jsxs(fe,{variant:"default",size:"sm","data-testid":"editor-send",onMouseDown:c=>c.preventDefault(),onClick:()=>{var c;De(),Y&&_==="editor"&&((c=l.current)==null||c.focus({preventScroll:!0}))},disabled:!G||U,children:[U?f.jsx($e,{className:"h-4 w-4 animate-spin"}):f.jsx(ut,{className:"h-4 w-4"}),n("common.send")]})]})})]})]})}function Vr(){const{deviceId:n,windowId:e,paneId:t}=it(),s=t?ot(t):void 0,i=J(a=>a.snapshots),r=kt(a=>{var x;return((x=a.settings)==null?void 0:x.siteName)??"tmex"}),o=n?i[n]:void 0,l=d.useMemo(()=>{var a;if(!(!e||!((a=o==null?void 0:o.session)!=null&&a.windows)))return o.session.windows.find(x=>x.id===e)},[e,o]),u=d.useMemo(()=>{if(!(!s||!l))return l.panes.find(a=>a.id===s)},[s,l]),h=d.useMemo(()=>l&&u?Nt({paneIdx:u.index,windowIdx:l.index,paneTitle:u.title,windowName:l.name,windowCustomName:l.customName,deviceName:r}):n??"",[l,u,r,n]);return f.jsx(f.Fragment,{children:h})}function Wr(){const{t:n}=Ke(),{deviceId:e,paneId:t}=it(),s=t?ot(t):void 0,i=ce(N=>N.inputMode),r=ce(N=>N.setInputMode),o=J(N=>{var Y;return e?((Y=N.deviceConnected)==null?void 0:Y[e])??!1:!1}),[l,u]=d.useState(!1),[h,a]=d.useState(!1),x=!!(s&&o),O=(It({queryKey:wn(e??"",s??""),queryFn:()=>pn(e??"",s??""),enabled:!!(e&&s),throwOnError:!1}).data??[]).some(N=>N.enabled),E=()=>{r(i==="direct"?"editor":"direct")},b=()=>{window.dispatchEvent(new CustomEvent("tmex:jump-to-latest"))},z=()=>{u(!0)},w=()=>{window.location.reload()};return f.jsxs(f.Fragment,{children:[f.jsx(fe,{variant:"ghost",size:"icon-sm",onClick:z,"aria-label":n("nav.refreshPage"),title:n("nav.refreshPage"),children:f.jsx(yn,{className:"h-4 w-4"})}),f.jsx(fe,{variant:"ghost",size:"icon-sm",onClick:E,disabled:!x,"data-testid":"terminal-input-mode-toggle","aria-label":n(i==="direct"?"nav.switchToEditor":"nav.switchToDirect"),title:n(i==="direct"?"nav.switchToEditor":"nav.switchToDirect"),children:i==="direct"?f.jsx(sn,{className:"h-4 w-4"}):f.jsx(Rn,{className:"h-4 w-4"})}),f.jsx(fe,{variant:"ghost",size:"icon-sm",onClick:b,disabled:!x,"aria-label":n("nav.jumpToLatest"),title:n("nav.jumpToLatest"),children:f.jsx(Sn,{className:"h-4 w-4"})}),f.jsxs(fe,{variant:"ghost",size:"icon-sm",className:"relative",onClick:()=>a(!0),disabled:!s,"data-testid":"watch-open-button","aria-label":n("watch.title"),title:n("watch.title"),children:[f.jsx(rn,{className:"h-4 w-4"}),O&&f.jsx("span",{className:"absolute right-1 top-1 h-1.5 w-1.5 rounded-full bg-primary","data-testid":"watch-active-indicator"})]}),e&&s&&f.jsx(on,{open:h,onOpenChange:a,deviceId:e,paneId:s}),f.jsx(ln,{open:l,onOpenChange:u,children:f.jsxs(an,{children:[f.jsxs(cn,{children:[f.jsx(dn,{children:n("nav.refreshPage")}),f.jsx(un,{children:n("nav.refreshPageConfirm")})]}),f.jsxs(hn,{children:[f.jsx(fn,{onClick:()=>u(!1),children:n("common.cancel")}),f.jsx(mn,{onClick:w,children:n("common.confirm")})]})]})})]})}export{Wr as PageActions,Vr as PageTitle,Kr as default};
|
|
26
|
-
//# sourceMappingURL=DevicePage-
|
|
26
|
+
//# sourceMappingURL=DevicePage-5vkaNOjl.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{u as N,r as j,a as G,b as ee,c as se,d as M,j as e,M as Z,B as w,P as W,A as ae,e as te,f as ie,g as ne,T as X,h as re,i as ce,k as oe,l as de,m as le,G as me,t as v,D as he,n as pe,E as ue,o as xe,p as k,q as ve,Z as ye,s as je,v as O,w as ge,S as fe,L as we,x as Ne,y as De,z as Ce,C as be,F as Se,H as Ee,I as x,J as B,K as Q,N as z,O as J,Q as g,R as Me,U as Pe}from"./index-OpBFduyh.js";import{C as S,a as E,b as Ke,c as Ie,d as ke}from"./card-Dl0HC88A.js";function p(s){const c=s.trim();return c||void 0}function $e(s){return s?{name:s.name,type:s.type,host:s.host??"",port:s.port??22,username:s.username??"",sshConfigRef:s.sshConfigRef??"",session:s.session??"tmex",authMode:s.type==="local"?"auto":s.authMode,password:"",privateKey:"",privateKeyPassphrase:""}:{name:"",type:"local",host:"",port:22,username:"",sshConfigRef:"",session:"tmex",authMode:"auto",password:"",privateKey:"",privateKeyPassphrase:""}}function Ae(s){if(s.type==="local")return{name:s.name.trim(),type:"local",session:p(s.session)??"tmex",authMode:"auto"};const c={name:s.name.trim(),type:"ssh",host:p(s.host),port:s.port,username:p(s.username),sshConfigRef:p(s.sshConfigRef),session:p(s.session)??"tmex",authMode:s.authMode};return s.authMode==="password"&&(c.password=s.password),s.authMode==="key"&&(c.privateKey=s.privateKey,c.privateKeyPassphrase=s.privateKeyPassphrase||void 0),c}function Te(s){if(s.type==="local")return{name:s.name.trim(),session:p(s.session)??"tmex",authMode:"auto"};const c={name:s.name.trim(),host:p(s.host),port:s.port,username:p(s.username),sshConfigRef:p(s.sshConfigRef),session:p(s.session)??"tmex",authMode:s.authMode};return s.authMode==="password"&&s.password&&(c.password=s.password),s.authMode==="key"&&s.privateKey&&(c.privateKey=s.privateKey,c.privateKeyPassphrase=s.privateKeyPassphrase||void 0),c}async function U(s,c){try{return(await s.json()).error??c}catch{return c}}function Re(){const{t:s}=N(),[c,m]=j.useState(!1),[a,y]=j.useState(null),[n,o]=j.useState(null),l=G();j.useEffect(()=>{const r=()=>m(!0);return window.addEventListener("tmex:open-add-device",r),()=>window.removeEventListener("tmex:open-add-device",r)},[]);const{data:d,isLoading:u,isError:P}=ee({queryKey:["devices"],queryFn:async()=>{const r=await fetch("/api/devices");if(!r.ok)throw new Error(s("device.loadFailed"));return r.json()},throwOnError:!1}),D=se(r=>r.hydrateDeviceErrors);j.useEffect(()=>{d!=null&&d.devices&&D(d.devices.map(r=>({deviceId:r.id,lastError:r.lastError??null,lastErrorType:r.lastErrorType??null})))},[d,D]);const C=M({mutationFn:async r=>{if(!(await fetch(`/api/devices/${r}`,{method:"DELETE"})).ok)throw new Error(s("device.deleteFailed"))},onSuccess:()=>{l.invalidateQueries({queryKey:["devices"]}),v.success(s("common.success"))},onError:r=>{v.error(r instanceof Error?r.message:s("common.error"))}}),b=(d==null?void 0:d.devices)??[];return e.jsxs("div",{className:"mx-auto flex w-full max-w-6xl flex-col gap-3 p-3 pb-[calc(1rem+env(safe-area-inset-bottom))] sm:gap-4 sm:p-5","data-testid":"devices-page",children:[u?e.jsx(S,{children:e.jsx(E,{className:"py-16 text-center text-sm text-muted-foreground",children:s("common.loading")})}):P?e.jsx(S,{children:e.jsx(E,{className:"py-16 text-center text-sm text-destructive",children:s("device.loadFailed")})}):b.length===0?e.jsx(S,{children:e.jsxs(E,{className:"space-y-4 py-14 text-center",children:[e.jsx("div",{className:"mx-auto flex h-12 w-12 items-center justify-center rounded-xl border border-border bg-muted",children:e.jsx(Z,{className:"h-6 w-6 text-muted-foreground"})}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("h2",{className:"text-lg font-medium",children:s("device.noDevices")}),e.jsx("p",{className:"text-sm text-muted-foreground",children:s("device.addDevice")})]}),e.jsxs(w,{variant:"default","data-testid":"devices-add-empty",onClick:()=>m(!0),children:[e.jsx(W,{className:"h-4 w-4"}),s("device.addDevice")]})]})}):e.jsx("div",{className:"grid gap-3 lg:grid-cols-2",children:b.map(r=>e.jsx(Fe,{device:r,onEdit:()=>y(r),onDelete:()=>o(r)},r.id))}),c&&e.jsx(V,{mode:"create",onClose:()=>m(!1)}),a&&e.jsx(V,{mode:"edit",device:a,onClose:()=>y(null)}),e.jsx(ae,{open:n!==null,onOpenChange:r=>!r&&o(null),children:e.jsxs(te,{children:[e.jsxs(ie,{children:[e.jsx(ne,{className:"bg-destructive/10",children:e.jsx(X,{className:"h-5 w-5 text-destructive"})}),e.jsx(re,{children:s("device.deleteConfirm")}),e.jsx(ce,{children:s("device.deleteDescription",{name:(n==null?void 0:n.name)??""})})]}),e.jsxs(oe,{children:[e.jsx(de,{children:s("common.cancel")}),e.jsx(le,{variant:"destructive",disabled:!n||C.isPending,onClick:()=>{n&&(C.mutate(n.id),o(null))},children:s("common.delete")})]})]})})]})}function Fe({device:s,onEdit:c,onDelete:m}){const{t:a}=N(),y=s.type==="local"?e.jsx(Z,{className:"h-4 w-4"}):e.jsx(me,{className:"h-4 w-4"}),n=s.type==="local"?a("device.typeLocal"):`${s.username??"-"}@${s.host??"-"}:${s.port??22}`,o=M({mutationFn:async()=>{const l=await fetch(`/api/devices/${s.id}/test-connection`,{method:"POST"});let d=null;try{d=await l.json()}catch{d=null}if(!l.ok){const u=d;throw new Error((u==null?void 0:u.error)??a("common.error"))}return d},onSuccess:l=>{v.success(l.message??a("common.success"))},onError:l=>{v.error(l instanceof Error?l.message:a("common.error"))}});return e.jsxs(S,{"data-testid":"device-card","data-device-id":s.id,"data-device-name":s.name,className:"overflow-hidden",children:[e.jsxs(Ke,{className:"space-y-2 pb-2",children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsxs("div",{className:"flex min-w-0 items-center gap-2.5",children:[e.jsx("div",{className:"flex h-8 w-8 shrink-0 items-center justify-center rounded-md border border-border bg-muted text-muted-foreground",children:y}),e.jsxs("div",{className:"min-w-0 space-y-0.5",children:[e.jsx(Ie,{className:"line-clamp-1 text-sm",title:s.name,children:s.name}),e.jsx(ke,{className:"line-clamp-1 text-xs",children:n})]})]}),e.jsx("div",{className:"flex shrink-0 items-center gap-1",children:e.jsxs(he,{children:[e.jsx(pe,{render:e.jsx(w,{variant:"ghost",size:"icon-sm","data-testid":`device-card-actions-${s.id}`,"aria-label":a("common.edit"),title:a("common.edit")}),children:e.jsx(ue,{className:"h-4 w-4"})}),e.jsxs(xe,{align:"end",children:[e.jsxs(k,{"data-testid":`device-card-edit-${s.id}`,onClick:c,children:[e.jsx(ve,{className:"h-4 w-4"}),a("common.edit")]}),s.type==="ssh"&&e.jsxs(k,{"data-testid":`device-card-test-${s.id}`,onClick:()=>o.mutate(),disabled:o.isPending,children:[e.jsx(ye,{className:"h-4 w-4"}),a("common.test")]}),e.jsx(je,{}),e.jsxs(k,{"data-testid":`device-card-delete-${s.id}`,variant:"destructive",onClick:m,children:[e.jsx(X,{className:"h-4 w-4"}),a("common.delete")]})]})]})})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-1.5",children:[e.jsx(O,{variant:"outline",className:"text-[11px] font-normal",children:s.type==="local"?a("device.typeLocal"):a("device.typeSSHBadge")}),s.session&&e.jsx(O,{variant:"outline",className:"text-[11px] font-normal",children:s.session}),e.jsx(ge,{deviceId:s.id})]})]}),e.jsxs(E,{className:"pt-0",children:[e.jsx(fe,{className:"mb-2"}),e.jsx("div",{className:"flex items-center justify-end",children:e.jsx(we,{to:`/devices/${s.id}`,"data-testid":`device-card-connect-${s.id}`,className:Ne({variant:"default",size:"sm"}),children:a("device.connect")})})]})]})}function V({mode:s,device:c,onClose:m}){const{t:a}=N(),y=G(),[n,o]=j.useState($e(c)),[l,d]=j.useState(!1),u=s==="edit",P=n.type==="ssh",D=M({mutationFn:async t=>{const i=await fetch("/api/devices",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!i.ok)throw new Error(await U(i,a("device.createFailed")));return i.json()},onSuccess:()=>{y.invalidateQueries({queryKey:["devices"]}),v.success(a("common.success")),m()},onError:t=>{v.error(t instanceof Error?t.message:a("common.error"))}}),C=M({mutationFn:async t=>{if(!c)throw new Error(a("apiError.deviceNotFound"));const i=await fetch(`/api/devices/${c.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!i.ok)throw new Error(await U(i,a("device.updateFailed")));return i.json()},onSuccess:()=>{y.invalidateQueries({queryKey:["devices"]}),v.success(a("common.success")),m()},onError:t=>{v.error(t instanceof Error?t.message:a("common.error"))}}),b=async t=>{t.preventDefault(),d(!0);try{s==="create"?await D.mutateAsync(Ae(n)):await C.mutateAsync(Te(n))}catch{}finally{d(!1)}},r=`${s}-device-name`,K=`${s}-device-type`,$=`${s}-device-host`,A=`${s}-device-port`,T=`${s}-device-username`,F=`${s}-device-session`,H=`${s}-device-auth-mode`,L=`${s}-device-password`,R=`${s}-device-private-key`,q=`${s}-device-private-key-passphrase`,Y={local:a("device.typeLocal"),ssh:a("device.typeSSH")},_={password:a("device.authPassword"),key:a("device.authKey"),agent:a("device.authAgent"),configRef:"SSH Config"},I=t=>e.jsx("div",{className:"text-[11px] font-semibold uppercase tracking-wider text-muted-foreground",children:t}),h=(t,i,f)=>e.jsxs("label",{className:"block text-xs font-medium text-foreground",htmlFor:t,children:[i,f&&e.jsx("span",{className:"ml-0.5 text-destructive",children:"*"})]});return e.jsx(De,{open:!0,onOpenChange:t=>!t&&m(),children:e.jsxs(Ce,{"data-testid":"device-dialog",className:"w-full max-w-2xl",children:[e.jsxs(be,{children:[e.jsx(Se,{children:a(u?"device.editDevice":"device.addDevice")}),e.jsx(Ee,{children:a(u?"device.editDeviceDescription":"device.addDeviceDescription")})]}),e.jsxs("form",{onSubmit:b,className:"space-y-4",children:[e.jsxs("div",{className:"-mr-2 max-h-[min(70vh,720px)] space-y-5 overflow-y-auto pr-2",children:[e.jsxs("section",{className:"space-y-2.5",children:[I(a("device.sectionBasic")),e.jsxs("div",{className:"grid gap-3 sm:grid-cols-2",children:[e.jsxs("div",{className:"space-y-1.5 sm:col-span-2",children:[h(r,a("device.name"),!0),e.jsx(x,{id:r,"data-testid":"device-name-input",type:"text",value:n.name,onChange:t=>o(i=>({...i,name:t.target.value})),placeholder:a("device.namePlaceholder"),required:!0})]}),e.jsxs("div",{className:"space-y-1.5",children:[h(K,a("device.type")),e.jsxs(B,{value:n.type,onValueChange:t=>{if(!t)return;const i=t;o(f=>({...f,type:i,authMode:i==="local"?"auto":f.authMode==="auto"?"password":f.authMode}))},disabled:u,children:[e.jsx(Q,{id:K,"data-testid":"device-type-select",className:"w-full",children:e.jsx(z,{placeholder:a("device.type"),children:t=>Y[t]??""})}),e.jsxs(J,{children:[e.jsx(g,{value:"local",children:a("device.typeLocal")}),e.jsx(g,{value:"ssh",children:a("device.typeSSH")})]})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[h(F,a("device.session")),e.jsx(x,{id:F,"data-testid":"device-session-input",type:"text",value:n.session,onChange:t=>o(i=>({...i,session:t.target.value})),placeholder:a("device.sessionPlaceholder")})]})]})]}),P&&e.jsxs(e.Fragment,{children:[e.jsxs("section",{className:"space-y-2.5",children:[I(a("device.sectionConnection")),e.jsxs("div",{className:"grid gap-3 sm:grid-cols-3",children:[e.jsxs("div",{className:"space-y-1.5 sm:col-span-2",children:[h($,a("device.host")),e.jsx(x,{id:$,type:"text",value:n.host,onChange:t=>o(i=>({...i,host:t.target.value})),placeholder:a("device.hostPlaceholder")})]}),e.jsxs("div",{className:"space-y-1.5",children:[h(A,a("device.port")),e.jsx(x,{id:A,type:"number",value:n.port,onChange:t=>o(i=>({...i,port:Number.parseInt(t.target.value||"22",10)})),min:1,max:65535})]}),e.jsxs("div",{className:"space-y-1.5 sm:col-span-2",children:[h(T,a("device.username")),e.jsx(x,{id:T,type:"text",value:n.username,onChange:t=>o(i=>({...i,username:t.target.value})),placeholder:a("device.usernamePlaceholder")})]}),e.jsxs("div",{className:"space-y-1.5",children:[h(`${s}-device-ssh-config-ref`,"SSH Config"),e.jsx(x,{id:`${s}-device-ssh-config-ref`,type:"text",value:n.sshConfigRef,onChange:t=>o(i=>({...i,sshConfigRef:t.target.value})),placeholder:"~/.ssh/config"})]})]})]}),e.jsxs("section",{className:"space-y-2.5",children:[I(a("device.sectionAuth")),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"space-y-1.5",children:[h(H,a("device.authMode")),e.jsxs(B,{value:n.authMode,onValueChange:t=>{t&&o(i=>({...i,authMode:t}))},children:[e.jsx(Q,{id:H,className:"w-full",children:e.jsx(z,{placeholder:a("device.authMode"),children:t=>_[t]??""})}),e.jsxs(J,{children:[e.jsx(g,{value:"password",children:a("device.authPassword")}),e.jsx(g,{value:"key",children:a("device.authKey")}),e.jsx(g,{value:"agent",children:a("device.authAgent")}),e.jsx(g,{value:"configRef",children:"SSH Config"})]})]})]}),n.authMode==="password"&&e.jsxs("div",{className:"space-y-1.5",children:[h(L,a("device.password")),e.jsx(x,{id:L,type:"password",value:n.password,onChange:t=>o(i=>({...i,password:t.target.value}))})]}),n.authMode==="key"&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"space-y-1.5",children:[h(R,a("device.privateKey")),e.jsx(Me,{id:R,value:n.privateKey,onChange:t=>o(i=>({...i,privateKey:t.target.value})),className:"h-28 font-mono text-xs",placeholder:a("device.privateKeyPlaceholder")})]}),e.jsxs("div",{className:"space-y-1.5",children:[h(q,a("device.passphrase")),e.jsx(x,{id:q,type:"password",value:n.privateKeyPassphrase,onChange:t=>o(i=>({...i,privateKeyPassphrase:t.target.value}))})]})]})]})]})]})]}),e.jsxs(Pe,{children:[e.jsx(w,{type:"button",variant:"outline",onClick:m,children:a("common.cancel")}),e.jsx(w,{type:"submit",variant:"default","data-testid":"device-dialog-save",disabled:l,children:a(l?"common.saving":"common.save")})]})]})]})})}function qe(){const{t:s}=N();return e.jsx(e.Fragment,{children:s("sidebar.manageDevices")})}function Oe(){const{t:s}=N(),c=()=>{window.dispatchEvent(new CustomEvent("tmex:open-add-device"))};return e.jsx(w,{variant:"ghost",size:"icon-sm","data-testid":"devices-add",onClick:c,"aria-label":s("sidebar.addDevice"),title:s("sidebar.addDevice"),children:e.jsx(W,{className:"h-4 w-4"})})}export{Oe as PageActions,qe as PageTitle,Re as default};
|
|
2
|
+
//# sourceMappingURL=DevicesPage-CKnRUGQm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
:root{--code-bg: #e1e1e1;--code-fg: #616161;--code-comment: rgba(97, 97, 97, .55);--code-keyword: #007299;--code-string: #009799;--code-number: #9a7200;--code-literal: #9a7200;--code-title: #9b1d72;--code-function: #9b1d72;--code-builtin: #007173;--code-type: #007173;--code-attr: #007173;--code-variable: #007173;--code-meta: #007299;--code-tag: #007299;--code-name: #007299;--code-addition: #009799;--code-deletion: #bf2172;--code-regexp: #007173;--code-symbol: #9a7200;--code-quote: rgba(97, 97, 97, .55);--code-section: #9b1d72}.dark{--code-bg: #262626;--code-fg: #d0d0d0;--code-comment: rgba(208, 208, 208, .45);--code-keyword: #afa3b5;--code-string: #7aab7a;--code-number: #d1d194;--code-literal: #d1d194;--code-title: #e29f9f;--code-function: #e29f9f;--code-builtin: #a0aea3;--code-type: #a0aea3;--code-attr: #a0aea3;--code-variable: #a0aea3;--code-meta: #afa3b5;--code-tag: #afa3b5;--code-name: #afa3b5;--code-addition: #7aab7a;--code-deletion: #ea7171;--code-regexp: #a0aea3;--code-symbol: #d1d194;--code-quote: rgba(208, 208, 208, .45);--code-section: #e29f9f}.hljs{color:var(--code-fg);background:var(--code-bg)}.hljs-comment,.hljs-quote{color:var(--code-comment);font-style:italic}.hljs-keyword,.hljs-selector-tag{color:var(--code-keyword)}.hljs-string,.hljs-addition{color:var(--code-string)}.hljs-number,.hljs-literal{color:var(--code-number)}.hljs-title,.hljs-title.class_,.hljs-title.function_,.hljs-function{color:var(--code-function)}.hljs-built_in,.hljs-type{color:var(--code-builtin)}.hljs-attr,.hljs-attribute,.hljs-variable,.hljs-template-variable{color:var(--code-variable)}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:var(--code-meta)}.hljs-tag,.hljs-name{color:var(--code-tag)}.hljs-section{color:var(--code-section)}.hljs-bullet{color:var(--code-number)}.hljs-symbol,.hljs-link{color:var(--code-symbol)}.hljs-regexp{color:var(--code-regexp)}.hljs-deletion{color:var(--code-deletion)}.hljs-property,.hljs-params,.hljs-operator,.hljs-punctuation{color:var(--code-fg)}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}@font-face{font-display:block;font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2) format("woff2"),url(/assets/KaTeX_AMS-Regular-DMm9YOAa.woff) format("woff"),url(/assets/KaTeX_AMS-Regular-DRggAlZN.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff) format("woff"),url(/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff) format("woff"),url(/assets/KaTeX_Fraktur-Regular-CB_wures.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Main-Bold-Cx986IdX.woff2) format("woff2"),url(/assets/KaTeX_Main-Bold-Jm3AIy58.woff) format("woff"),url(/assets/KaTeX_Main-Bold-waoOVXN0.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2) format("woff2"),url(/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff) format("woff"),url(/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2) format("woff2"),url(/assets/KaTeX_Main-Italic-BMLOBm91.woff) format("woff"),url(/assets/KaTeX_Main-Italic-3WenGoN9.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Main-Regular-B22Nviop.woff2) format("woff2"),url(/assets/KaTeX_Main-Regular-Dr94JaBh.woff) format("woff"),url(/assets/KaTeX_Main-Regular-ypZvNtVU.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2) format("woff2"),url(/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff) format("woff"),url(/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Math-Italic-t53AETM-.woff2) format("woff2"),url(/assets/KaTeX_Math-Italic-DA0__PXp.woff) format("woff"),url(/assets/KaTeX_Math-Italic-flOr_0UB.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:normal;font-weight:700;src:url(/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff) format("woff"),url(/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:italic;font-weight:400;src:url(/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff) format("woff"),url(/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:normal;font-weight:400;src:url(/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff) format("woff"),url(/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Script-Regular-D3wIWfF6.woff2) format("woff2"),url(/assets/KaTeX_Script-Regular-D5yQViql.woff) format("woff"),url(/assets/KaTeX_Script-Regular-C5JkGWo-.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2) format("woff2"),url(/assets/KaTeX_Size1-Regular-C195tn64.woff) format("woff"),url(/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2) format("woff2"),url(/assets/KaTeX_Size2-Regular-oD1tc_U0.woff) format("woff"),url(/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(/assets/KaTeX_Size3-Regular-CTq5MqoE.woff) format("woff"),url(/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2) format("woff2"),url(/assets/KaTeX_Size4-Regular-BF-4gkZK.woff) format("woff"),url(/assets/KaTeX_Size4-Regular-DWFBv043.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2) format("woff2"),url(/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff) format("woff"),url(/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf) format("truetype")}.katex{font: 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;position:relative;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.17.0"}.katex .katex-mathml{border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-webkit-min-content;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .mathsfit,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .smash{display:inline;line-height:0}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.2777777778em;margin-right:-.5555555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.1666666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.6666666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.4566666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.1466666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.7142857143em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.8571428571em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.1428571429em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.2857142857em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.4285714286em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.7142857143em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.0571428571em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.4685714286em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.9628571429em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.5542857143em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.7777777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.8888888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.1111111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.3044444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.7644444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.5833333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.7283333333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.0733333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.4861111111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.4402777778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.7277777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.2893518519em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.4050925926em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.462962963em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.5208333333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.2002314815em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.4398148148em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.2410800386em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2892960463em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.337512054em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.3857280617em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.4339440694em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.4821600771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.5785920926em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.6943105111em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8331726133em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.1996142719em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.2009646302em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.2411575563em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.2813504823em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.3215434084em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.3617363344em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.4019292605em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.4823151125em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.578778135em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.6945337621em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.8336012862em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex svg{fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}
|