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