@co0ontty/wand 1.29.3 → 1.30.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/process-manager.js +5 -2
- package/dist/server.js +4 -0
- package/dist/structured-session-manager.js +132 -24
- package/dist/types.d.ts +19 -0
- package/dist/web-ui/content/scripts.js +719 -137
- package/dist/web-ui/content/styles.css +860 -262
- package/dist/web-ui/content/vendor/wterm/wterm.bundle.js +1 -1
- package/dist/web-ui/index.js +33 -3
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var WTermLib=(()=>{var D=Object.defineProperty;var G=Object.getOwnPropertyDescriptor;var F=Object.getOwnPropertyNames;var x=Object.prototype.hasOwnProperty;var v=(r,A)=>{for(var t in A)D(r,t,{get:A[t],enumerable:!0})},p=(r,A,t,e)=>{if(A&&typeof A=="object"||typeof A=="function")for(let s of F(A))!x.call(r,s)&&s!==t&&D(r,s,{get:()=>A[s],enumerable:!(e=G(A,s))||e.enumerable});return r};var m=r=>p(D({},"__esModule",{value:!0}),r);var J={};v(J,{InputHandler:()=>l,Renderer:()=>c,WTerm:()=>L,WasmBridge:()=>a,WebSocketTransport:()=>d});var b="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";function k(r){let A=atob(r),t=new Uint8Array(A.length);for(let e=0;e<A.length;e++)t[e]=A.charCodeAt(e);return t.buffer}var a=class r{constructor(A){this.gridPtr=0,this.dirtyPtr=0,this.writeBufferPtr=0,this.cellSize=12,this.maxCols=256,this.encoder=new TextEncoder,this.decoder=new TextDecoder,this.exports=A.exports,this.memory=this.exports.memory}static async load(A){let t;if(A){let s=await fetch(A);if(!s.ok)throw new Error(`[wterm] Failed to load WASM from ${A}: ${s.status} ${s.statusText}`);t=await s.arrayBuffer()}else t=k(b);let{instance:e}=await WebAssembly.instantiate(t);return new r(e)}init(A,t){this.exports.init(A,t),this._updatePointers()}_updatePointers(){this.gridPtr=this.exports.getGridPtr(),this.dirtyPtr=this.exports.getDirtyPtr(),this.writeBufferPtr=this.exports.getWriteBuffer(),this.cellSize=this.exports.getCellSize(),this.maxCols=this.exports.getMaxCols(),this._dv=new DataView(this.memory.buffer)}writeString(A){let t=this.encoder.encode(A);this.writeRaw(t)}writeRaw(A){let t=new Uint8Array(this.memory.buffer,this.writeBufferPtr,8192),e=0;for(;e<A.length;){let s=Math.min(A.length-e,8192);t.set(A.subarray(e,e+s)),this.exports.writeBytes(s),e+=s}}getCell(A,t){let e=this.gridPtr+(A*this.maxCols+t)*this.cellSize,s=this._dv;return{char:s.getUint32(e,!0),fg:s.getUint16(e+4,!0),bg:s.getUint16(e+6,!0),flags:s.getUint8(e+8)}}isDirtyRow(A){return new Uint8Array(this.memory.buffer,this.dirtyPtr,256)[A]!==0}clearDirty(){this.exports.clearDirty()}getCursor(){return{row:this.exports.getCursorRow(),col:this.exports.getCursorCol(),visible:this.exports.getCursorVisible()!==0}}getCols(){return this.exports.getCols()}getRows(){return this.exports.getRows()}cursorKeysApp(){return this.exports.getCursorKeysApp()!==0}bracketedPaste(){return this.exports.getBracketedPaste()!==0}usingAltScreen(){return this.exports.getUsingAltScreen()!==0}getTitle(){if(this.exports.getTitleChanged()===0)return null;let A=this.exports.getTitlePtr(),t=this.exports.getTitleLen(),e=new Uint8Array(this.memory.buffer,A,t);return this.decoder.decode(e)}getResponse(){let A=this.exports.getResponseLen();if(A===0)return null;let t=this.exports.getResponsePtr(),e=new Uint8Array(this.memory.buffer,t,A),s=this.decoder.decode(e);return this.exports.clearResponse(),s}getScrollbackCount(){return this.exports.getScrollbackCount()}getScrollbackCell(A,t){let s=this.exports.getScrollbackLine(A)+t*this.cellSize,i=this._dv;return{char:i.getUint32(s,!0),fg:i.getUint16(s+4,!0),bg:i.getUint16(s+6,!0),flags:i.getUint8(s+8)}}getScrollbackLineLen(A){return this.exports.getScrollbackLineLen(A)}resize(A,t){this.exports.resizeTerminal(A,t),this._updatePointers()}};var d=class{constructor(A={}){this._ws=null,this._reconnectTimer=null,this._reconnectDelay=1e3,this._closed=!1,this._buffer=[],this.url=A.url??null,this.reconnect=A.reconnect!==!1,this.maxReconnectDelay=A.maxReconnectDelay??3e4,this.onData=A.onData??null,this.onOpen=A.onOpen??null,this.onClose=A.onClose??null,this.onError=A.onError??null}connect(A){if(A&&(this.url=A),!this.url)throw new Error("No WebSocket URL provided");this._closed=!1,this._ws=new WebSocket(this.url),this._ws.binaryType="arraybuffer",this._ws.onopen=()=>{this._reconnectDelay=1e3,this._flushBuffer(),this.onOpen&&this.onOpen()},this._ws.onmessage=t=>{this.onData&&(t.data instanceof ArrayBuffer?this.onData(new Uint8Array(t.data)):this.onData(t.data))},this._ws.onclose=()=>{this.onClose&&this.onClose(),this.reconnect&&!this._closed&&this._scheduleReconnect()},this._ws.onerror=t=>{this.onError&&this.onError(t),this._ws?.close()}}send(A){this._ws&&this._ws.readyState===WebSocket.OPEN?typeof A=="string"?this._ws.send(new TextEncoder().encode(A)):this._ws.send(A):this._buffer.push(A)}close(){this._closed=!0,this._reconnectTimer&&clearTimeout(this._reconnectTimer),this._ws&&this._ws.close()}get connected(){return this._ws!==null&&this._ws.readyState===WebSocket.OPEN}_flushBuffer(){let A=this._buffer.splice(0);for(let t of A)this.send(t)}_scheduleReconnect(){this._reconnectTimer=setTimeout(()=>{this.connect()},this._reconnectDelay),this._reconnectDelay=Math.min(this._reconnectDelay*2,this.maxReconnectDelay)}};function u(r){if(r===256)return null;if(r<16)return`var(--term-color-${r})`;if(r<232){let t=r-16,e=Math.floor(t/36)*51,s=Math.floor(t/6)%6*51,i=t%6*51;return`rgb(${e},${s},${i})`}let A=(r-232)*10+8;return`rgb(${A},${A},${A})`}function y(r,A,t){let e=r,s=A;if(t&32){let Q=e;e=s,s=Q,e===256&&(e=0),s===256&&(s=7)}let i=u(e),o=u(s),B="";i&&(B+=`color:${i};`),o&&(B+=`background:${o};`),t&1&&(B+="font-weight:bold;"),t&2&&(B+="opacity:0.5;"),t&4&&(B+="font-style:italic;");let E=[];return t&128&&E.push("line-through"),E.length&&(B+=`text-decoration:${E.join(" ")};`),t&64&&(B+="visibility:hidden;"),B}function f(r,A,t){if(t){let e=document.createElement("span");e.style.cssText=t,e.textContent=A,r.appendChild(e)}else r.appendChild(document.createTextNode(A))}function S(r,A,t){let e=r,s=A;return t&32&&([e,s]=[s,e],e===256&&(e=0),s===256&&(s=7)),{fg:u(e)||"var(--term-fg)",bg:u(s)||"var(--term-bg)"}}function R(r,A,t){switch(r){case 9600:return`linear-gradient(${A} 50%,${t} 50%)`;case 9601:return`linear-gradient(${t} 87.5%,${A} 87.5%)`;case 9602:return`linear-gradient(${t} 75%,${A} 75%)`;case 9603:return`linear-gradient(${t} 62.5%,${A} 62.5%)`;case 9604:return`linear-gradient(${t} 50%,${A} 50%)`;case 9605:return`linear-gradient(${t} 37.5%,${A} 37.5%)`;case 9606:return`linear-gradient(${t} 25%,${A} 25%)`;case 9607:return`linear-gradient(${t} 12.5%,${A} 12.5%)`;case 9608:return A;case 9609:return`linear-gradient(to right,${A} 87.5%,${t} 87.5%)`;case 9610:return`linear-gradient(to right,${A} 75%,${t} 75%)`;case 9611:return`linear-gradient(to right,${A} 62.5%,${t} 62.5%)`;case 9612:return`linear-gradient(to right,${A} 50%,${t} 50%)`;case 9613:return`linear-gradient(to right,${A} 37.5%,${t} 37.5%)`;case 9614:return`linear-gradient(to right,${A} 25%,${t} 25%)`;case 9615:return`linear-gradient(to right,${A} 12.5%,${t} 12.5%)`;case 9616:return`linear-gradient(to right,${t} 50%,${A} 50%)`;case 9617:return`color-mix(in srgb,${A} 25%,${t})`;case 9618:return`color-mix(in srgb,${A} 50%,${t})`;case 9619:return`color-mix(in srgb,${A} 75%,${t})`;case 9620:return`linear-gradient(${A} 12.5%,${t} 12.5%)`;case 9621:return`linear-gradient(to right,${t} 87.5%,${A} 87.5%)`;default:{let s={9622:[!1,!1,!0,!1],9623:[!1,!1,!1,!0],9624:[!0,!1,!1,!1],9625:[!0,!1,!0,!0],9626:[!0,!1,!1,!0],9627:[!0,!0,!0,!1],9628:[!0,!0,!1,!0],9629:[!1,!0,!1,!1],9630:[!1,!0,!0,!1],9631:[!1,!0,!0,!0]}[r];if(!s)return A;let[i,o,B,E]=s;if(i&&o&&B&&E)return A;let Q=[],C=["0 0","100% 0","0 100%","100% 100%"];return s.forEach((g,I)=>{g&&Q.push(`linear-gradient(${A},${A}) ${C[I]}/50% 50% no-repeat`)}),Q.push(t),Q.join(",")}}}var c=class{constructor(A){this.rows=0,this.cols=0,this.rowEls=[],this.prevCursorRow=-1,this.prevCursorCol=-1,this._scrollbackRowEls=[],this._renderedScrollbackCount=0,this.container=A}setup(A,t){this.cols=A,this.rows=t,this.container.innerHTML="",this.rowEls=[],this._scrollbackRowEls=[],this._renderedScrollbackCount=0;let e=document.createDocumentFragment();for(let s=0;s<t;s++){let i=document.createElement("div");i.className="term-row",e.appendChild(i),this.rowEls.push(i)}this.container.appendChild(e),this.prevCursorRow=-1,this.prevCursorCol=-1}_buildRowContent(A,t,e,s){A.textContent="";let i="",o="",B=0,E=Q=>{if(o)if(s>=B&&s<Q){let C=s-B,g=o.slice(0,C),I=o[C],h=o.slice(C+1);g&&f(A,g,i);let n=document.createElement("span");n.className="term-cursor",i&&(n.style.cssText=i),n.textContent=I,A.appendChild(n),h&&f(A,h,i)}else f(A,o,i)};for(let Q=0;Q<this.cols;Q++){let C=t(Q),g=Q<e,I=g?C.char:0;if(g&&I>=9600&&I<=9631){E(Q);let h=S(C.fg,C.bg,C.flags),n=document.createElement("span");n.className=Q===s?"term-block term-cursor":"term-block",n.style.background=R(I,h.fg,h.bg),C.flags&2&&(n.style.opacity="0.5"),A.appendChild(n),i="",o="",B=Q+1}else{let h=g&&I>=32?String.fromCodePoint(I):" ",n=g?y(C.fg,C.bg,C.flags):"";n!==i?(E(Q),i=n,o=h,B=Q):o+=h}}E(this.cols)}_buildScrollbackRowEl(A,t){let e=document.createElement("div");e.className="term-row term-scrollback-row";let s=A.getScrollbackLineLen(t);return this._buildRowContent(e,i=>A.getScrollbackCell(t,i),s,-1),e}syncScrollback(A){let t=A.getScrollbackCount();if(t!==this._renderedScrollbackCount){if(t>this._renderedScrollbackCount){let e=t-this._renderedScrollbackCount,s=this.rowEls[0]??null,i=document.createDocumentFragment();for(let o=e-1;o>=0;o--){let B=this._buildScrollbackRowEl(A,o);i.appendChild(B),this._scrollbackRowEls.push(B)}this.container.insertBefore(i,s)}else{let e=this._renderedScrollbackCount-t;for(let s=0;s<e;s++){let i=this._scrollbackRowEls.shift();i&&i.remove()}}this._renderedScrollbackCount=t}}render(A){let t=A.getRows(),e=A.getCols(),s=!1;(t!==this.rows||e!==this.cols)&&(this.setup(e,t),s=!0),this.syncScrollback(A);let i=A.getCursor(),o=i.visible,B=i.row!==this.prevCursorRow||i.col!==this.prevCursorCol;for(let E=0;E<this.rows;E++){let Q=s||A.isDirtyRow(E),C=E===this.prevCursorRow&&B,g=E===i.row;if(Q||C||g&&B){let I=g&&o?i.col:-1;this._buildRowContent(this.rowEls[E],h=>A.getCell(E,h),this.cols,I)}}this.prevCursorRow=i.row,this.prevCursorCol=i.col,A.clearDirty()}};var H={ArrowUp:"\x1B[A",ArrowDown:"\x1B[B",ArrowRight:"\x1B[C",ArrowLeft:"\x1B[D",Home:"\x1B[H",End:"\x1B[F"},U={ArrowUp:"\x1BOA",ArrowDown:"\x1BOB",ArrowRight:"\x1BOC",ArrowLeft:"\x1BOD",Home:"\x1BOH",End:"\x1BOF"},M={Enter:"\r",Backspace:"\x7F",Tab:" ",Escape:"\x1B",Insert:"\x1B[2~",Delete:"\x1B[3~",PageUp:"\x1B[5~",PageDown:"\x1B[6~",F1:"\x1BOP",F2:"\x1BOQ",F3:"\x1BOR",F4:"\x1BOS",F5:"\x1B[15~",F6:"\x1B[17~",F7:"\x1B[18~",F8:"\x1B[19~",F9:"\x1B[20~",F10:"\x1B[21~",F11:"\x1B[23~",F12:"\x1B[24~"},l=class{constructor(A,t,e){this.composing=!1,this.element=A,this.onData=t,this.getBridge=e,this.textarea=document.createElement("textarea"),this.textarea.setAttribute("autocapitalize","off"),this.textarea.setAttribute("autocomplete","off"),this.textarea.setAttribute("autocorrect","off"),this.textarea.setAttribute("spellcheck","false"),this.textarea.setAttribute("enterkeyhint","send"),this.textarea.setAttribute("tabindex","0"),this.textarea.setAttribute("aria-hidden","true");let s=this.textarea.style;s.position="absolute",s.left="-9999px",s.top="0",s.width="1px",s.height="1px",s.opacity="0",s.overflow="hidden",s.border="0",s.padding="0",s.margin="0",s.outline="none",s.resize="none",s.pointerEvents="none",s.caretColor="transparent",s.color="transparent",s.background="transparent",A.appendChild(this.textarea),this._onKeyDown=this.handleKeyDown.bind(this),this._onPaste=this.handlePaste.bind(this),this._onCompositionStart=this.handleCompositionStart.bind(this),this._onCompositionEnd=this.handleCompositionEnd.bind(this),this._onInput=this.handleInput.bind(this),this._onFocus=()=>this.element.classList.add("focused"),this._onBlur=()=>this.element.classList.remove("focused"),this.textarea.addEventListener("keydown",this._onKeyDown),this.textarea.addEventListener("paste",this._onPaste),this.textarea.addEventListener("compositionstart",this._onCompositionStart),this.textarea.addEventListener("compositionend",this._onCompositionEnd),this.textarea.addEventListener("input",this._onInput),this.textarea.addEventListener("focus",this._onFocus),this.textarea.addEventListener("blur",this._onBlur)}focus(){this.textarea.focus({preventScroll:!0})}destroy(){this.textarea.removeEventListener("keydown",this._onKeyDown),this.textarea.removeEventListener("paste",this._onPaste),this.textarea.removeEventListener("compositionstart",this._onCompositionStart),this.textarea.removeEventListener("compositionend",this._onCompositionEnd),this.textarea.removeEventListener("input",this._onInput),this.textarea.removeEventListener("focus",this._onFocus),this.textarea.removeEventListener("blur",this._onBlur),this.element.classList.remove("focused"),this.textarea.remove()}handleKeyDown(A){if(this.composing)return;if((A.metaKey||A.ctrlKey)&&A.key==="c"){let e=window.getSelection();if(e&&e.toString().length>0)return}if((A.metaKey||A.ctrlKey)&&A.key==="v"){this.textarea.focus();return}if(A.metaKey&&!A.ctrlKey){if(A.key==="Backspace")A.preventDefault(),this.onData("");else if(A.key==="a"){A.preventDefault();let e=window.getSelection();if(e){let s=document.createRange();s.selectNodeContents(this.element),e.removeAllRanges(),e.addRange(s)}}return}A.preventDefault();let t=this.keyToSequence(A);t&&this.onData(t)}handlePaste(A){A.preventDefault();let t=A.clipboardData?.getData("text");if(!t)return;let e=this.getBridge();e&&e.bracketedPaste()?this.onData("\x1B[200~"+t+"\x1B[201~"):this.onData(t)}handleCompositionStart(){this.composing=!0}handleCompositionEnd(A){this.composing=!1,A.data&&this.onData(A.data),this.textarea.value=""}handleInput(){if(this.composing)return;let A=this.textarea.value;A&&(this.onData(A),this.textarea.value="")}keyToSequence(A){if(A.ctrlKey&&!A.altKey&&!A.metaKey){if(A.key.length===1){let B=A.key.toLowerCase().charCodeAt(0);if(B>=97&&B<=122)return String.fromCharCode(B-96)}if(A.key==="[")return"\x1B";if(A.key==="\\")return"";if(A.key==="]")return"";if(A.key==="^")return"";if(A.key==="_")return""}if(A.key==="Enter"&&A.shiftKey)return"\x1B[13;2u";if(A.key==="Tab"&&A.shiftKey)return"\x1B[Z";let t=M[A.key];if(t)return A.altKey?"\x1B"+t:t;let e=this.getBridge(),o=(e&&e.cursorKeysApp()?U:H)[A.key];return o?A.altKey?"\x1B"+o:o:A.key.length===1&&!A.ctrlKey&&!A.metaKey?A.altKey?"\x1B"+A.key:A.key:null}};var w=class{constructor(A,t={}){this.bridge=null,this.renderer=null,this.input=null,this.rafId=null,this.resizeObserver=null,this._destroyed=!1,this._shouldScrollToBottom=!1,this.element=A,this.wasmUrl=t.wasmUrl,this.cols=t.cols||80,this.rows=t.rows||24,this.autoResize=t.autoResize!==!1,this.onData=t.onData||null,this.onTitle=t.onTitle||null,this.onResize=t.onResize||null,this._container=document.createElement("div"),this._container.className="term-grid",this.element.appendChild(this._container),this.element.classList.add("wterm"),t.cursorBlink&&this.element.classList.add("cursor-blink"),this._onClickFocus=()=>{let e=window.getSelection();(!e||e.isCollapsed)&&this.input?.focus()},this.element.addEventListener("click",this._onClickFocus)}async init(){try{if(this.bridge=await a.load(this.wasmUrl),this._destroyed)return this;this.bridge.init(this.cols,this.rows),this.renderer=new c(this._container),this.renderer.setup(this.cols,this.rows),this.input=new l(this.element,A=>{this.onData?this.onData(A):this.write(A)},()=>this.bridge),this.autoResize?this._setupResizeObserver():this._lockHeight(),this.input.focus(),this._initialRender()}catch(A){throw this.destroy(),new Error(`wterm: failed to initialize: ${A instanceof Error?A.message:A}`)}return this}_isScrolledToBottom(){let A=this.element;return A.scrollHeight-A.scrollTop-A.clientHeight<5}_scrollToBottom(){this.element.scrollTop=this.element.scrollHeight}write(A){this.bridge&&(this._shouldScrollToBottom=this._isScrolledToBottom(),typeof A=="string"?this.bridge.writeString(A):this.bridge.writeRaw(A),this._scheduleRender())}resize(A,t){this.bridge&&(this._shouldScrollToBottom=this._isScrolledToBottom(),this.cols=A,this.rows=t,this.bridge.resize(A,t),this.renderer?.setup(A,t),this._scheduleRender(),this.onResize&&this.onResize(A,t))}focus(){this.input?this.input.focus():this.element.focus()}_scheduleRender(){this.rafId==null&&(this.rafId=requestAnimationFrame(()=>{this.rafId=null,this._doRender()}))}_initialRender(){this._doRender()}_doRender(){if(!this.bridge||!this.renderer)return;this.renderer.render(this.bridge);let A=this.bridge.getScrollbackCount()>0;this.element.classList.toggle("has-scrollback",A),this._shouldScrollToBottom&&this._scrollToBottom();let t=this.bridge.getTitle();t!==null&&this.onTitle&&this.onTitle(t);let e=this.bridge.getResponse();e!==null&&this.onData&&this.onData(e)}_lockHeight(){let A=getComputedStyle(this.element),t=parseFloat(A.getPropertyValue("--term-row-height"))||17,e=this.rows*t,s=(parseFloat(A.paddingTop)||0)+(parseFloat(A.paddingBottom)||0);A.boxSizing==="border-box"&&(s+=(parseFloat(A.borderTopWidth)||0)+(parseFloat(A.borderBottomWidth)||0)),this.element.style.height=`${e+s}px`}_measureCharSize(){let A=document.createElement("span");A.className="term-cell",A.textContent="W",A.style.position="absolute",A.style.visibility="hidden",this._container.appendChild(A);let t=A.getBoundingClientRect(),e=t.width,s=t.height;return A.remove(),e===0||s===0?null:{width:e,height:s}}_setupResizeObserver(){let A=this._measureCharSize();if(!A)return;let t=A.width,e=A.height;this.resizeObserver=new ResizeObserver(s=>{let i=this._measureCharSize();i&&(t=i.width,e=i.height);for(let o of s){let{width:B,height:E}=o.contentRect,Q=Math.max(1,Math.floor(B/t)),C=Math.max(1,Math.floor(E/e));(Q!==this.cols||C!==this.rows)&&this.resize(Q,C)}}),this.resizeObserver.observe(this.element)}destroy(){this._destroyed=!0,this.rafId!=null&&cancelAnimationFrame(this.rafId),this.resizeObserver&&this.resizeObserver.disconnect(),this.input&&this.input.destroy(),this.element.removeEventListener("click",this._onClickFocus),this.element.innerHTML=""}};var _=/\x1b\[([0-9;]*)m/g,L=class extends w{write(A){typeof A=="string"&&(A=A.replace(_,(t,e)=>{if(!e)return t;let s=e.split(";").filter(i=>i!=="4"&&i!=="24");return s.length?"\x1B["+s.join(";")+"m":""})),super.write(A)}reset(){!this.bridge||!this.renderer||(this.bridge.init(this.cols,this.rows),this.renderer.setup(this.cols,this.rows),this._scheduleRender())}async init(){return this._calibrateInitialSize(),await super.init(),this.autoResize&&!this.resizeObserver&&!this._destroyed&&this._scheduleObserverSetup(),this}_calibrateInitialSize(){if(!this.element||!this._container||!this.element.isConnected)return;this.element.offsetHeight;let A=document.createElement("span");A.className="term-cell",A.style.cssText="position:absolute;visibility:hidden;left:-9999px;top:0;",A.textContent="W",this._container.appendChild(A);let t=A.getBoundingClientRect(),e=t.width,s=t.height;if(A.remove(),e<=0||s<=0)return;let i=getComputedStyle(this.element),o=(parseFloat(i.paddingLeft)||0)+(parseFloat(i.paddingRight)||0),B=(parseFloat(i.paddingTop)||0)+(parseFloat(i.paddingBottom)||0),E=this.element.clientWidth-o,Q=this.element.clientHeight-B;if(E<=0||Q<=0)return;let C=Math.max(1,Math.floor(E/e)),g=Math.max(1,Math.floor(Q/s));this.cols=C,this.rows=g}_scheduleObserverSetup(){if(this._observerSetupPending)return;this._observerSetupPending=!0;let A=0,t=120,e=()=>{if(this._destroyed||this.resizeObserver){this._observerSetupPending=!1;return}if(this.element.offsetHeight,this._measureCharSize()&&this.element.clientWidth>0&&this.element.clientHeight>0){this._setupResizeObserver(),this._observerSetupPending=!1;return}if(++A>=t){this._observerSetupPending=!1;return}A<=8?requestAnimationFrame(e):setTimeout(e,50)};requestAnimationFrame(e)}remeasure(){if(!this.bridge||!this.renderer)return;this.autoResize&&!this.resizeObserver&&!this._destroyed&&(this._measureCharSize()&&this.element.clientWidth>0&&this.element.clientHeight>0?this._setupResizeObserver():this._scheduleObserverSetup());let A=this._measureCharSize();if(!A)return;let t=getComputedStyle(this.element),e=this.element.clientWidth-(parseFloat(t.paddingLeft)||0)-(parseFloat(t.paddingRight)||0),s=this.element.clientHeight-(parseFloat(t.paddingTop)||0)-(parseFloat(t.paddingBottom)||0);if(e<=0||s<=0)return;let i=Math.max(1,Math.floor(e/A.width)),o=Math.max(1,Math.floor(s/A.height));i!==this.cols||o!==this.rows?this.resize(i,o):this._scheduleRender()}};return m(J);})();
|
|
1
|
+
"use strict";var WTermLib=(()=>{var f=Object.defineProperty;var F=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var p=Object.prototype.hasOwnProperty;var v=(r,A)=>{for(var t in A)f(r,t,{get:A[t],enumerable:!0})},m=(r,A,t,e)=>{if(A&&typeof A=="object"||typeof A=="function")for(let s of x(A))!p.call(r,s)&&s!==t&&f(r,s,{get:()=>A[s],enumerable:!(e=F(A,s))||e.enumerable});return r};var k=r=>m(f({},"__esModule",{value:!0}),r);var O={};v(O,{InputHandler:()=>l,Renderer:()=>c,WTerm:()=>b,WasmBridge:()=>a,WebSocketTransport:()=>d});var G="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";function y(r){let A=atob(r),t=new Uint8Array(A.length);for(let e=0;e<A.length;e++)t[e]=A.charCodeAt(e);return t.buffer}var a=class r{constructor(A){this.gridPtr=0,this.dirtyPtr=0,this.writeBufferPtr=0,this.cellSize=12,this.maxCols=256,this.encoder=new TextEncoder,this.decoder=new TextDecoder,this.exports=A.exports,this.memory=this.exports.memory}static async load(A){let t;if(A){let s=await fetch(A);if(!s.ok)throw new Error(`[wterm] Failed to load WASM from ${A}: ${s.status} ${s.statusText}`);t=await s.arrayBuffer()}else t=y(G);let{instance:e}=await WebAssembly.instantiate(t);return new r(e)}init(A,t){this.exports.init(A,t),this._updatePointers()}_updatePointers(){this.gridPtr=this.exports.getGridPtr(),this.dirtyPtr=this.exports.getDirtyPtr(),this.writeBufferPtr=this.exports.getWriteBuffer(),this.cellSize=this.exports.getCellSize(),this.maxCols=this.exports.getMaxCols(),this._dv=new DataView(this.memory.buffer)}writeString(A){let t=this.encoder.encode(A);this.writeRaw(t)}writeRaw(A){let t=new Uint8Array(this.memory.buffer,this.writeBufferPtr,8192),e=0;for(;e<A.length;){let s=Math.min(A.length-e,8192);t.set(A.subarray(e,e+s)),this.exports.writeBytes(s),e+=s}}getCell(A,t){let e=this.gridPtr+(A*this.maxCols+t)*this.cellSize,s=this._dv;return{char:s.getUint32(e,!0),fg:s.getUint16(e+4,!0),bg:s.getUint16(e+6,!0),flags:s.getUint8(e+8)}}isDirtyRow(A){return new Uint8Array(this.memory.buffer,this.dirtyPtr,256)[A]!==0}clearDirty(){this.exports.clearDirty()}getCursor(){return{row:this.exports.getCursorRow(),col:this.exports.getCursorCol(),visible:this.exports.getCursorVisible()!==0}}getCols(){return this.exports.getCols()}getRows(){return this.exports.getRows()}cursorKeysApp(){return this.exports.getCursorKeysApp()!==0}bracketedPaste(){return this.exports.getBracketedPaste()!==0}usingAltScreen(){return this.exports.getUsingAltScreen()!==0}getTitle(){if(this.exports.getTitleChanged()===0)return null;let A=this.exports.getTitlePtr(),t=this.exports.getTitleLen(),e=new Uint8Array(this.memory.buffer,A,t);return this.decoder.decode(e)}getResponse(){let A=this.exports.getResponseLen();if(A===0)return null;let t=this.exports.getResponsePtr(),e=new Uint8Array(this.memory.buffer,t,A),s=this.decoder.decode(e);return this.exports.clearResponse(),s}getScrollbackCount(){return this.exports.getScrollbackCount()}getScrollbackCell(A,t){let s=this.exports.getScrollbackLine(A)+t*this.cellSize,i=this._dv;return{char:i.getUint32(s,!0),fg:i.getUint16(s+4,!0),bg:i.getUint16(s+6,!0),flags:i.getUint8(s+8)}}getScrollbackLineLen(A){return this.exports.getScrollbackLineLen(A)}resize(A,t){this.exports.resizeTerminal(A,t),this._updatePointers()}};var d=class{constructor(A={}){this._ws=null,this._reconnectTimer=null,this._reconnectDelay=1e3,this._closed=!1,this._buffer=[],this.url=A.url??null,this.reconnect=A.reconnect!==!1,this.maxReconnectDelay=A.maxReconnectDelay??3e4,this.onData=A.onData??null,this.onOpen=A.onOpen??null,this.onClose=A.onClose??null,this.onError=A.onError??null}connect(A){if(A&&(this.url=A),!this.url)throw new Error("No WebSocket URL provided");this._closed=!1,this._ws=new WebSocket(this.url),this._ws.binaryType="arraybuffer",this._ws.onopen=()=>{this._reconnectDelay=1e3,this._flushBuffer(),this.onOpen&&this.onOpen()},this._ws.onmessage=t=>{this.onData&&(t.data instanceof ArrayBuffer?this.onData(new Uint8Array(t.data)):this.onData(t.data))},this._ws.onclose=()=>{this.onClose&&this.onClose(),this.reconnect&&!this._closed&&this._scheduleReconnect()},this._ws.onerror=t=>{this.onError&&this.onError(t),this._ws?.close()}}send(A){this._ws&&this._ws.readyState===WebSocket.OPEN?typeof A=="string"?this._ws.send(new TextEncoder().encode(A)):this._ws.send(A):this._buffer.push(A)}close(){this._closed=!0,this._reconnectTimer&&clearTimeout(this._reconnectTimer),this._ws&&this._ws.close()}get connected(){return this._ws!==null&&this._ws.readyState===WebSocket.OPEN}_flushBuffer(){let A=this._buffer.splice(0);for(let t of A)this.send(t)}_scheduleReconnect(){this._reconnectTimer=setTimeout(()=>{this.connect()},this._reconnectDelay),this._reconnectDelay=Math.min(this._reconnectDelay*2,this.maxReconnectDelay)}};function u(r){if(r===256)return null;if(r<16)return`var(--term-color-${r})`;if(r<232){let t=r-16,e=Math.floor(t/36)*51,s=Math.floor(t/6)%6*51,i=t%6*51;return`rgb(${e},${s},${i})`}let A=(r-232)*10+8;return`rgb(${A},${A},${A})`}function S(r,A,t){let e=r,s=A;if(t&32){let Q=e;e=s,s=Q,e===256&&(e=0),s===256&&(s=7)}let i=u(e),o=u(s),B="";i&&(B+=`color:${i};`),o&&(B+=`background:${o};`),t&1&&(B+="font-weight:bold;"),t&2&&(B+="opacity:0.5;"),t&4&&(B+="font-style:italic;");let E=[];return t&128&&E.push("line-through"),E.length&&(B+=`text-decoration:${E.join(" ")};`),t&64&&(B+="visibility:hidden;"),B}function D(r,A,t){if(t){let e=document.createElement("span");e.style.cssText=t,e.textContent=A,r.appendChild(e)}else r.appendChild(document.createTextNode(A))}function R(r,A,t){let e=r,s=A;return t&32&&([e,s]=[s,e],e===256&&(e=0),s===256&&(s=7)),{fg:u(e)||"var(--term-fg)",bg:u(s)||"var(--term-bg)"}}function H(r,A,t){switch(r){case 9600:return`linear-gradient(${A} 50%,${t} 50%)`;case 9601:return`linear-gradient(${t} 87.5%,${A} 87.5%)`;case 9602:return`linear-gradient(${t} 75%,${A} 75%)`;case 9603:return`linear-gradient(${t} 62.5%,${A} 62.5%)`;case 9604:return`linear-gradient(${t} 50%,${A} 50%)`;case 9605:return`linear-gradient(${t} 37.5%,${A} 37.5%)`;case 9606:return`linear-gradient(${t} 25%,${A} 25%)`;case 9607:return`linear-gradient(${t} 12.5%,${A} 12.5%)`;case 9608:return A;case 9609:return`linear-gradient(to right,${A} 87.5%,${t} 87.5%)`;case 9610:return`linear-gradient(to right,${A} 75%,${t} 75%)`;case 9611:return`linear-gradient(to right,${A} 62.5%,${t} 62.5%)`;case 9612:return`linear-gradient(to right,${A} 50%,${t} 50%)`;case 9613:return`linear-gradient(to right,${A} 37.5%,${t} 37.5%)`;case 9614:return`linear-gradient(to right,${A} 25%,${t} 25%)`;case 9615:return`linear-gradient(to right,${A} 12.5%,${t} 12.5%)`;case 9616:return`linear-gradient(to right,${t} 50%,${A} 50%)`;case 9617:return`color-mix(in srgb,${A} 25%,${t})`;case 9618:return`color-mix(in srgb,${A} 50%,${t})`;case 9619:return`color-mix(in srgb,${A} 75%,${t})`;case 9620:return`linear-gradient(${A} 12.5%,${t} 12.5%)`;case 9621:return`linear-gradient(to right,${t} 87.5%,${A} 87.5%)`;default:{let s={9622:[!1,!1,!0,!1],9623:[!1,!1,!1,!0],9624:[!0,!1,!1,!1],9625:[!0,!1,!0,!0],9626:[!0,!1,!1,!0],9627:[!0,!0,!0,!1],9628:[!0,!0,!1,!0],9629:[!1,!0,!1,!1],9630:[!1,!0,!0,!1],9631:[!1,!0,!0,!0]}[r];if(!s)return A;let[i,o,B,E]=s;if(i&&o&&B&&E)return A;let Q=[],C=["0 0","100% 0","0 100%","100% 100%"];return s.forEach((n,I)=>{n&&Q.push(`linear-gradient(${A},${A}) ${C[I]}/50% 50% no-repeat`)}),Q.push(t),Q.join(",")}}}var c=class{constructor(A){this.rows=0,this.cols=0,this.rowEls=[],this.prevCursorRow=-1,this.prevCursorCol=-1,this._scrollbackRowEls=[],this._renderedScrollbackCount=0,this.container=A}setup(A,t){this.cols=A,this.rows=t,this.container.innerHTML="",this.rowEls=[],this._scrollbackRowEls=[],this._renderedScrollbackCount=0;let e=document.createDocumentFragment();for(let s=0;s<t;s++){let i=document.createElement("div");i.className="term-row",e.appendChild(i),this.rowEls.push(i)}this.container.appendChild(e),this.prevCursorRow=-1,this.prevCursorCol=-1}_buildRowContent(A,t,e,s){A.textContent="";let i="",o="",B=0,E=Q=>{if(o)if(s>=B&&s<Q){let C=s-B,n=o.slice(0,C),I=o[C],h=o.slice(C+1);n&&D(A,n,i);let g=document.createElement("span");g.className="term-cursor",i&&(g.style.cssText=i),g.textContent=I,A.appendChild(g),h&&D(A,h,i)}else D(A,o,i)};for(let Q=0;Q<this.cols;Q++){let C=t(Q),n=Q<e,I=n?C.char:0;if(n&&I>=9600&&I<=9631){E(Q);let h=R(C.fg,C.bg,C.flags),g=document.createElement("span");g.className=Q===s?"term-block term-cursor":"term-block",g.style.background=H(I,h.fg,h.bg),C.flags&2&&(g.style.opacity="0.5"),A.appendChild(g),i="",o="",B=Q+1}else{let h=n&&I>=32?String.fromCodePoint(I):" ",g=n?S(C.fg,C.bg,C.flags):"";g!==i?(E(Q),i=g,o=h,B=Q):o+=h}}E(this.cols)}_buildScrollbackRowEl(A,t){let e=document.createElement("div");e.className="term-row term-scrollback-row";let s=A.getScrollbackLineLen(t);return this._buildRowContent(e,i=>A.getScrollbackCell(t,i),s,-1),e}syncScrollback(A){let t=A.getScrollbackCount();if(t!==this._renderedScrollbackCount){if(t>this._renderedScrollbackCount){let e=t-this._renderedScrollbackCount,s=this.rowEls[0]??null,i=document.createDocumentFragment();for(let o=e-1;o>=0;o--){let B=this._buildScrollbackRowEl(A,o);i.appendChild(B),this._scrollbackRowEls.push(B)}this.container.insertBefore(i,s)}else{let e=this._renderedScrollbackCount-t;for(let s=0;s<e;s++){let i=this._scrollbackRowEls.shift();i&&i.remove()}}this._renderedScrollbackCount=t}}render(A){let t=A.getRows(),e=A.getCols(),s=!1;(t!==this.rows||e!==this.cols)&&(this.setup(e,t),s=!0),this.syncScrollback(A);let i=A.getCursor(),o=i.visible,B=i.row!==this.prevCursorRow||i.col!==this.prevCursorCol;for(let E=0;E<this.rows;E++){let Q=s||A.isDirtyRow(E),C=E===this.prevCursorRow&&B,n=E===i.row;if(Q||C||n&&B){let I=n&&o?i.col:-1;this._buildRowContent(this.rowEls[E],h=>A.getCell(E,h),this.cols,I)}}this.prevCursorRow=i.row,this.prevCursorCol=i.col,A.clearDirty()}};var U={ArrowUp:"\x1B[A",ArrowDown:"\x1B[B",ArrowRight:"\x1B[C",ArrowLeft:"\x1B[D",Home:"\x1B[H",End:"\x1B[F"},M={ArrowUp:"\x1BOA",ArrowDown:"\x1BOB",ArrowRight:"\x1BOC",ArrowLeft:"\x1BOD",Home:"\x1BOH",End:"\x1BOF"},_={Enter:"\r",Backspace:"\x7F",Tab:" ",Escape:"\x1B",Insert:"\x1B[2~",Delete:"\x1B[3~",PageUp:"\x1B[5~",PageDown:"\x1B[6~",F1:"\x1BOP",F2:"\x1BOQ",F3:"\x1BOR",F4:"\x1BOS",F5:"\x1B[15~",F6:"\x1B[17~",F7:"\x1B[18~",F8:"\x1B[19~",F9:"\x1B[20~",F10:"\x1B[21~",F11:"\x1B[23~",F12:"\x1B[24~"},l=class{constructor(A,t,e){this.composing=!1,this.element=A,this.onData=t,this.getBridge=e,this.textarea=document.createElement("textarea"),this.textarea.setAttribute("autocapitalize","off"),this.textarea.setAttribute("autocomplete","off"),this.textarea.setAttribute("autocorrect","off"),this.textarea.setAttribute("spellcheck","false"),this.textarea.setAttribute("enterkeyhint","send"),this.textarea.setAttribute("tabindex","0"),this.textarea.setAttribute("aria-label","terminal input");let s=this.textarea.style;s.position="absolute",s.left="-9999px",s.top="0",s.width="1px",s.height="1px",s.opacity="0",s.overflow="hidden",s.border="0",s.padding="0",s.margin="0",s.outline="none",s.resize="none",s.pointerEvents="none",s.caretColor="transparent",s.color="transparent",s.background="transparent",A.appendChild(this.textarea),this._onKeyDown=this.handleKeyDown.bind(this),this._onPaste=this.handlePaste.bind(this),this._onCompositionStart=this.handleCompositionStart.bind(this),this._onCompositionEnd=this.handleCompositionEnd.bind(this),this._onInput=this.handleInput.bind(this),this._onFocus=()=>this.element.classList.add("focused"),this._onBlur=()=>this.element.classList.remove("focused"),this.textarea.addEventListener("keydown",this._onKeyDown),this.textarea.addEventListener("paste",this._onPaste),this.textarea.addEventListener("compositionstart",this._onCompositionStart),this.textarea.addEventListener("compositionend",this._onCompositionEnd),this.textarea.addEventListener("input",this._onInput),this.textarea.addEventListener("focus",this._onFocus),this.textarea.addEventListener("blur",this._onBlur)}focus(){this.textarea.focus({preventScroll:!0})}destroy(){this.textarea.removeEventListener("keydown",this._onKeyDown),this.textarea.removeEventListener("paste",this._onPaste),this.textarea.removeEventListener("compositionstart",this._onCompositionStart),this.textarea.removeEventListener("compositionend",this._onCompositionEnd),this.textarea.removeEventListener("input",this._onInput),this.textarea.removeEventListener("focus",this._onFocus),this.textarea.removeEventListener("blur",this._onBlur),this.element.classList.remove("focused"),this.textarea.remove()}handleKeyDown(A){if(this.composing)return;if((A.metaKey||A.ctrlKey)&&A.key==="c"){let e=window.getSelection();if(e&&e.toString().length>0)return}if((A.metaKey||A.ctrlKey)&&A.key==="v"){this.textarea.focus();return}if(A.metaKey&&!A.ctrlKey){if(A.key==="Backspace")A.preventDefault(),this.onData("");else if(A.key==="a"){A.preventDefault();let e=window.getSelection();if(e){let s=document.createRange();s.selectNodeContents(this.element),e.removeAllRanges(),e.addRange(s)}}return}A.preventDefault();let t=this.keyToSequence(A);t&&this.onData(t)}handlePaste(A){A.preventDefault();let t=A.clipboardData?.getData("text");if(!t)return;let e=this.getBridge();e&&e.bracketedPaste()?this.onData("\x1B[200~"+t+"\x1B[201~"):this.onData(t)}handleCompositionStart(){this.composing=!0}handleCompositionEnd(A){this.composing=!1,A.data&&this.onData(A.data),this.textarea.value=""}handleInput(){if(this.composing)return;let A=this.textarea.value;A&&(this.onData(A),this.textarea.value="")}keyToSequence(A){if(A.ctrlKey&&!A.altKey&&!A.metaKey){if(A.key.length===1){let B=A.key.toLowerCase().charCodeAt(0);if(B>=97&&B<=122)return String.fromCharCode(B-96)}if(A.key==="[")return"\x1B";if(A.key==="\\")return"";if(A.key==="]")return"";if(A.key==="^")return"";if(A.key==="_")return""}if(A.key==="Enter"&&A.shiftKey)return"\x1B[13;2u";if(A.key==="Tab"&&A.shiftKey)return"\x1B[Z";let t=_[A.key];if(t)return A.altKey?"\x1B"+t:t;let e=this.getBridge(),o=(e&&e.cursorKeysApp()?M:U)[A.key];return o?A.altKey?"\x1B"+o:o:A.key.length===1&&!A.ctrlKey&&!A.metaKey?A.altKey?"\x1B"+A.key:A.key:null}};var w=class{constructor(A,t={}){this.bridge=null,this.renderer=null,this.input=null,this.rafId=null,this.resizeObserver=null,this._destroyed=!1,this._shouldScrollToBottom=!1,this.element=A,this.wasmUrl=t.wasmUrl,this.cols=t.cols||80,this.rows=t.rows||24,this.autoResize=t.autoResize!==!1,this.onData=t.onData||null,this.onTitle=t.onTitle||null,this.onResize=t.onResize||null,this._container=document.createElement("div"),this._container.className="term-grid",this.element.appendChild(this._container),this.element.classList.add("wterm"),t.cursorBlink&&this.element.classList.add("cursor-blink"),this._onClickFocus=()=>{let e=window.getSelection();(!e||e.isCollapsed)&&this.input?.focus()},this.element.addEventListener("click",this._onClickFocus)}async init(){try{if(this.bridge=await a.load(this.wasmUrl),this._destroyed)return this;this.bridge.init(this.cols,this.rows),this.renderer=new c(this._container),this.renderer.setup(this.cols,this.rows),this.input=new l(this.element,A=>{this.onData?this.onData(A):this.write(A)},()=>this.bridge),this.autoResize?this._setupResizeObserver():this._lockHeight(),this.input.focus(),this._initialRender()}catch(A){throw this.destroy(),new Error(`wterm: failed to initialize: ${A instanceof Error?A.message:A}`)}return this}_isScrolledToBottom(){let A=this.element;return A.scrollHeight-A.scrollTop-A.clientHeight<5}_scrollToBottom(){this.element.scrollTop=this.element.scrollHeight}write(A){this.bridge&&(this._shouldScrollToBottom=this._isScrolledToBottom(),typeof A=="string"?this.bridge.writeString(A):this.bridge.writeRaw(A),this._scheduleRender())}resize(A,t){this.bridge&&(this._shouldScrollToBottom=this._isScrolledToBottom(),this.cols=A,this.rows=t,this.bridge.resize(A,t),this.renderer?.setup(A,t),this._scheduleRender(),this.onResize&&this.onResize(A,t))}focus(){this.input?this.input.focus():this.element.focus()}_scheduleRender(){this.rafId==null&&(this.rafId=requestAnimationFrame(()=>{this.rafId=null,this._doRender()}))}_initialRender(){this._doRender()}_doRender(){if(!this.bridge||!this.renderer)return;this.renderer.render(this.bridge);let A=this.bridge.getScrollbackCount()>0;this.element.classList.toggle("has-scrollback",A),this._shouldScrollToBottom&&this._scrollToBottom();let t=this.bridge.getTitle();t!==null&&this.onTitle&&this.onTitle(t);let e=this.bridge.getResponse();e!==null&&this.onData&&this.onData(e)}_lockHeight(){let A=getComputedStyle(this.element),t=parseFloat(A.getPropertyValue("--term-row-height"))||17,e=this.rows*t,s=(parseFloat(A.paddingTop)||0)+(parseFloat(A.paddingBottom)||0);A.boxSizing==="border-box"&&(s+=(parseFloat(A.borderTopWidth)||0)+(parseFloat(A.borderBottomWidth)||0)),this.element.style.height=`${e+s}px`}_measureCharSize(){let A=document.createElement("span");A.className="term-cell",A.textContent="W",A.style.position="absolute",A.style.visibility="hidden",this._container.appendChild(A);let t=A.getBoundingClientRect(),e=t.width,s=t.height;return A.remove(),e===0||s===0?null:{width:e,height:s}}_setupResizeObserver(){let A=this._measureCharSize();if(!A)return;let t=A.width,e=A.height;this.resizeObserver=new ResizeObserver(s=>{let i=this._measureCharSize();i&&(t=i.width,e=i.height);for(let o of s){let{width:B,height:E}=o.contentRect,Q=Math.max(1,Math.floor(B/t)),C=Math.max(1,Math.floor(E/e));(Q!==this.cols||C!==this.rows)&&this.resize(Q,C)}}),this.resizeObserver.observe(this.element)}destroy(){this._destroyed=!0,this.rafId!=null&&cancelAnimationFrame(this.rafId),this.resizeObserver&&this.resizeObserver.disconnect(),this.input&&this.input.destroy(),this.element.removeEventListener("click",this._onClickFocus),this.element.innerHTML=""}};var J=/\x1b\[([0-9;]*)m/g,L=256;function N(r){if(!r)return null;let A=r.split(";"),t=[];for(let e=0;e<A.length;e++){let s=A[e];if((s==="38"||s==="48")&&A[e+1]==="5"){t.push(A[e],A[e+1],A[e+2]??""),e+=2;continue}if((s==="38"||s==="48")&&A[e+1]==="2"){t.push(A[e],A[e+1],A[e+2]??"",A[e+3]??"",A[e+4]??""),e+=4;continue}s==="4"||s==="24"||t.push(s)}return t.length?"\x1B["+t.join(";")+"m":""}var b=class extends w{resize(A,t){super.resize(Math.min(A,L),t)}write(A){typeof A=="string"&&(A=A.replace(J,(t,e)=>{let s=N(e);return s===null?t:s})),super.write(A)}reset(){!this.bridge||!this.renderer||(this.bridge.init(this.cols,this.rows),this.renderer.setup(this.cols,this.rows),this._scheduleRender())}async init(){return this._calibrateInitialSize(),await super.init(),this.autoResize&&!this.resizeObserver&&!this._destroyed&&this._scheduleObserverSetup(),this}_calibrateInitialSize(){if(!this.element||!this._container||!this.element.isConnected)return;this.element.offsetHeight;let A=document.createElement("span");A.className="term-cell",A.style.cssText="position:absolute;visibility:hidden;left:-9999px;top:0;",A.textContent="W",this._container.appendChild(A);let t=A.getBoundingClientRect(),e=t.width,s=t.height;if(A.remove(),e<=0||s<=0)return;let i=getComputedStyle(this.element),o=(parseFloat(i.paddingLeft)||0)+(parseFloat(i.paddingRight)||0),B=(parseFloat(i.paddingTop)||0)+(parseFloat(i.paddingBottom)||0),E=this.element.clientWidth-o,Q=this.element.clientHeight-B;if(E<=0||Q<=0)return;let C=Math.min(Math.max(1,Math.floor(E/e)),L),n=Math.max(1,Math.floor(Q/s));this.cols=C,this.rows=n}_scheduleObserverSetup(){if(this._observerSetupPending)return;this._observerSetupPending=!0;let A=0,t=120,e=()=>{if(this._destroyed||this.resizeObserver){this._observerSetupPending=!1;return}if(this.element.offsetHeight,this._measureCharSize()&&this.element.clientWidth>0&&this.element.clientHeight>0){this._setupResizeObserver(),this._observerSetupPending=!1;return}if(++A>=t){this._observerSetupPending=!1;return}A<=8?requestAnimationFrame(e):setTimeout(e,50)};requestAnimationFrame(e)}remeasure(){if(!this.bridge||!this.renderer)return;this.autoResize&&!this.resizeObserver&&!this._destroyed&&(this._measureCharSize()&&this.element.clientWidth>0&&this.element.clientHeight>0?this._setupResizeObserver():this._scheduleObserverSetup());let A=this._measureCharSize();if(!A)return;let t=getComputedStyle(this.element),e=this.element.clientWidth-(parseFloat(t.paddingLeft)||0)-(parseFloat(t.paddingRight)||0),s=this.element.clientHeight-(parseFloat(t.paddingTop)||0)-(parseFloat(t.paddingBottom)||0);if(e<=0||s<=0)return;let i=Math.min(Math.max(1,Math.floor(e/A.width)),L),o=Math.max(1,Math.floor(s/A.height));i!==this.cols||o!==this.rows?this.resize(i,o):this._scheduleRender()}};return k(O);})();
|
package/dist/web-ui/index.js
CHANGED
|
@@ -1,13 +1,43 @@
|
|
|
1
1
|
// Main entry point for web-ui module
|
|
2
2
|
// Combines CSS and JavaScript into a single HTML document
|
|
3
|
+
import { readFileSync, existsSync } from "node:fs";
|
|
4
|
+
import { createHash } from "node:crypto";
|
|
5
|
+
import path from "node:path";
|
|
6
|
+
import { fileURLToPath } from "node:url";
|
|
3
7
|
import { getCSSStyles } from "./styles.js";
|
|
4
8
|
import { getScriptContent } from "./scripts.js";
|
|
9
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
5
10
|
// Use String.fromCharCode to avoid template literal interpretation of </script>
|
|
6
11
|
const scriptClose = String.fromCharCode(60, 47) + "script>";
|
|
7
12
|
const scriptOpen = "<" + "script";
|
|
13
|
+
// Vendor assets are served with immutable cache headers, so the URL must
|
|
14
|
+
// change whenever the file content changes — otherwise the browser keeps the
|
|
15
|
+
// stale copy across upgrades. We append ?v=<sha-prefix> derived from the
|
|
16
|
+
// on-disk bundle so each new build busts the cache automatically.
|
|
17
|
+
const vendorHashCache = new Map();
|
|
18
|
+
function vendorAssetUrl(relPath) {
|
|
19
|
+
if (!vendorHashCache.has(relPath)) {
|
|
20
|
+
const fullPath = path.join(__dirname, "content", relPath);
|
|
21
|
+
let hash = "0";
|
|
22
|
+
try {
|
|
23
|
+
if (existsSync(fullPath)) {
|
|
24
|
+
const buf = readFileSync(fullPath);
|
|
25
|
+
hash = createHash("md5").update(buf).digest("hex").slice(0, 8);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
hash = String(Date.now()).slice(-8);
|
|
30
|
+
}
|
|
31
|
+
vendorHashCache.set(relPath, hash);
|
|
32
|
+
}
|
|
33
|
+
return `${relPath}?v=${vendorHashCache.get(relPath)}`;
|
|
34
|
+
}
|
|
8
35
|
export function renderApp(configPath) {
|
|
9
36
|
const cssStyles = getCSSStyles();
|
|
10
37
|
const scriptContent = getScriptContent(configPath);
|
|
38
|
+
const wtermSrc = vendorAssetUrl("/vendor/wterm/wterm.bundle.js");
|
|
39
|
+
const qrcodeSrc = vendorAssetUrl("/vendor/qrcode/qrcode.bundle.js");
|
|
40
|
+
const wtermCssHref = vendorAssetUrl("/vendor/wterm/terminal.css");
|
|
11
41
|
return `<!doctype html>
|
|
12
42
|
<html lang="zh-CN">
|
|
13
43
|
<head>
|
|
@@ -28,15 +58,15 @@ export function renderApp(configPath) {
|
|
|
28
58
|
<link rel="icon" href="/icon.svg" type="image/svg+xml" />
|
|
29
59
|
<link rel="apple-touch-icon" href="/icon.svg" />
|
|
30
60
|
<link rel="manifest" href="/manifest.json" />
|
|
31
|
-
<link rel="stylesheet" href="
|
|
61
|
+
<link rel="stylesheet" href="${wtermCssHref}" />
|
|
32
62
|
<style>
|
|
33
63
|
${cssStyles}
|
|
34
64
|
</style>
|
|
35
65
|
</head>
|
|
36
66
|
<body>
|
|
37
67
|
<div id="app"></div>
|
|
38
|
-
${scriptOpen} src="
|
|
39
|
-
${scriptOpen} src="
|
|
68
|
+
${scriptOpen} src="${wtermSrc}">${scriptClose}
|
|
69
|
+
${scriptOpen} src="${qrcodeSrc}">${scriptClose}
|
|
40
70
|
${scriptOpen}>
|
|
41
71
|
${scriptContent}
|
|
42
72
|
${scriptClose}
|