@tty-pt/ndc
Version:
ndc example project
7 lines (6 loc) • 2.99 kB
JavaScript
var ttyNdc=(()=>{var U=Object.create;var a=Object.defineProperty;var P=Object.getOwnPropertyDescriptor;var j=Object.getOwnPropertyNames;var q=Object.getPrototypeOf,J=Object.prototype.hasOwnProperty;var A=(r,t)=>()=>(t||r((t={exports:{}}).exports,t),t.exports),K=(r,t)=>{for(var s in t)a(r,s,{get:t[s],enumerable:!0})},B=(r,t,s,m)=>{if(t&&typeof t=="object"||typeof t=="function")for(let c of j(t))!J.call(r,c)&&c!==s&&a(r,c,{get:()=>t[c],enumerable:!(m=P(t,c))||m.enumerable});return r};var y=(r,t,s)=>(s=r!=null?U(q(r)):{},B(t||!r||!r.__esModule?a(s,"default",{value:r,enumerable:!0}):s,r)),Q=r=>B(a({},"__esModule",{value:!0}),r);var L=A((ee,v)=>{v.exports=globalThis.FitAddon});var C=A((oe,T)=>{T.exports=globalThis.WebLinksAddon});var X={};K(X,{create:()=>d,default:()=>V});var k=y(L()),N=y(C());var O=0;function d(r,t={}){let{proto:s=location.protocol==="https:"?"wss":"ws",port:m=window.location.port,url:c=s+"://"+window.location.hostname+":"+m}=t,i=t.sub??{onMessage:function(n,o){return!0},onOpen:function(n,o){},onClose:function(n){},cols:80,rows:25},w=new k.FitAddon,W=new ResizeObserver(()=>w.fit()),e=new globalThis.Terminal({convertEol:!0,fontSize:13,fontFamily:"Consolas,Liberation Mono,Menlo,Courier,monospace",allowProposedApi:!0}),l={},Y=n=>e.write(n),Z=O;O++;function x(n){l.send(n)}let z=new TextDecoder("utf-8"),b=!1,u=!0,g=!1;function F(n){let o=new Uint8Array(n.data);if(i.onMessage(n,o)){if(o[0]!=255){let f=z.decode(o);e.write(f)}else if(o[1]==252)switch(o[2]){case 1:u=!1,t.debug&&console.log("WONT ECHO");break;case 3:g=!1,t.debug&&console.log("WONT SGA (ICANON/not raw)");break}else if(o[1]==251)switch(o[2]){case 1:u=!0,t.debug&&console.log("WILL ECHO");break;case 3:g=!0,t.debug&&console.log("WILL SGA (not ICANON/raw)");break}else if(o[1]==250)switch(o[2]){case 31:}}else return}function p(n,o){if(i.cols=n,i.rows=o,!b)return;let f=255,_=250,E=31,I=240,H=n>>8,M=n&255,D=o>>8,G=o&255,R=new Uint8Array([f,_,E,H,M,D,G,f,I]);l.send(R)}function S(n){return n.scrollTop=n.scrollHeight,e.loadAddon(w),e.loadAddon(new N.WebLinksAddon),e.open(n),e.inputBuf="",e.perm="",e.onResize(({cols:o,rows:f})=>p(o,f)),W.observe(n),e.element.addEventListener("focusin",()=>{e.focused=!0}),e.element.addEventListener("focusout",()=>{e.focused=!1}),e.onData(o=>{if(t.debug&&console.log("term.onData",o,o.charAt(0),g,u),g)x(o==="\r"?`\r
`:o);else if(o==="\r"||o===`
`)u?e.write("\b \b".repeat(e.inputBuf.length)):e.write(`
`),l.send(e.inputBuf+`\r
`),e.inputBuf="";else if(o==="\x7F")g?x(o):(e.write("\b \b"),e.inputBuf=e.inputBuf.length>0?e.inputBuf.slice(0,e.inputBuf.length-1):"");else{e.inputBuf+=o,u&&e.write(o);return}e.lastInput=!1}),e}S(r);function h(){l=new WebSocket(c,"binary"),l.binaryType="arraybuffer",l.onopen=()=>{b=!0,p(i.cols,i.rows),i.onOpen(e,l)},l.onmessage=F,l.onclose=()=>{b=!1,i.onClose(),i.timeout=setTimeout(()=>{clearTimeout(i.timeout),h()},3e3)}}return h(),i}window.ttyNdc={create:d};var V={create:d};return Q(X);})();
//# sourceMappingURL=ndc.js.map