1
0
mirror of https://github.com/sehugg/8bitworkshop.git synced 2024-05-28 23:41:32 +00:00
8bitworkshop/gen/chunk-3XE5YOCV.js

4 lines
4.5 KiB
JavaScript

var l=class{constructor(e,i){this.ncols=80;this.page=e,this.fixed=i,this.clear()}clear(){this.curline=null,this.curstyle=0,this.reverse=!1,this.col=0,this.row=-1,this.lines=[],this.ncharsout=0,$(this.page).empty(),this.showPrintHead(!0)}ensureline(){this.curline==null&&(this.curline=this.lines[++this.row],this.curline==null&&(this.curline=$('<div class="transcript-line"/>')[0],this.page.appendChild(this.curline),this.lines[this.row]=this.curline,this.scrollToBottom()))}flushline(){this.curline=null,this.col=0,this.movePrintHead(!1)}addtext(e,i){if(this.ensureline(),e.length){if(this.fixed&&e.length>1){for(var t=0;t<e.length;t++)this.addtext(e[t],i);return}if(e.length==1){var s=e.charCodeAt(0);switch(s){case 7:this.bell&&this.bell.play();break;case 8:this.col>0&&this.col--;break;case 12:this.formfeed();break;case 13:this.col=0;break}if(s<32)return}for(var n=$("<span/>").text(e),t=0;t<8;t++)i&1<<t&&n.addClass("transcript-style-"+(1<<t));this.reverse&&n.addClass("transcript-reverse"),this.fixed&&e.length==1&&this.col<this.curline.childNodes.length?this.curline.replaceChild(n[0],this.curline.childNodes[this.col]):n.appendTo(this.curline),this.col+=e.length,this.fixed&&this.col>=this.ncols&&this.flushline(),this.ncharsout+=e.length,this.movePrintHead(!0)}}newline(){this.flushline(),this.ensureline()}print(e){for(var i=e.split(`
`),t=0;t<i.length;t++)t>0&&this.newline(),this.addtext(i[t],this.curstyle)}move_cursor(e,i){if(!!this.fixed){for(;this.lines.length<=i;)this.flushline(),this.ensureline();this.curline=this.lines[i],this.row=i;var t=$(this.curline).children();if(t.length>e)this.col=e;else for(;this.col<e;)this.addtext(" ",this.curstyle)}}setrows(e){if(!!this.fixed){var i=$(this.page).children();i.length>e&&(this.flushline(),i.slice(e).remove(),this.lines=this.lines.slice(0,e))}}formfeed(){for(var e=0;e<60;e++)this.newline(),this.ensureline()}scrollToBottom(){this.curline.scrollIntoView()}movePrintHead(e){}showPrintHead(e){}resize(e){var i=$(this.page).width()*1.6/e;$(this.page).css("font-size",i+"px"),this.scrollToBottom()}saveState(){return{curstyle:this.curstyle,reverse:this.reverse,col:this.col,row:this.row,ncharsout:this.ncharsout,lines:this.lines.map(e=>e.cloneNode(!0))}}loadState(e){this.curstyle=e.curstyle,this.reverse=e.reverse,this.col=e.col,this.row=e.row,this.ncharsout=e.ncharsout,$(this.page).empty();for(var i=0;i<e.lines.length;i++)this.page.appendChild(e.lines[i]);this.lines=e.lines,this.curline=e.lines[this.row]}},h=class extends l{constructor(e,i,t){super(e,i);this.msecPerLine=100;this.keepinput=!0;this.keephandler=!0;this.uppercaseOnly=!1;this.splitInput=!1;this.focused=!0;this.scrolling=0;this.input=t,this.input.onkeypress=s=>{this.sendkey(s)},this.input.onfocus=s=>{this.focused=!0,console.log("inputline gained focus")},$("#workspace").on("click",s=>{this.focused=!1,console.log("inputline lost focus")}),this.page.onclick=s=>{this.input.focus()}}clear(){super.clear(),this.hideinput(),this.waitingfor=null}focusinput(){this.ensureline(),this.showPrintHead(!1),this.keepinput?$(this.input).css("visibility","visible"):$(this.input).appendTo(this.curline).show()[0],this.scrollToBottom(),this.focused&&$(this.input).focus(),this.waitingfor=="char"?$(this.input).addClass("transcript-input-char"):$(this.input).removeClass("transcript-input-char"),this.lastInputRequestTime=Date.now()}hideinput(){this.showPrintHead(!0),this.keepinput?$(this.input).css("visibility","hidden"):$(this.input).appendTo($(this.page).parent()).hide()}clearinput(){this.input.value="",this.waitingfor=null}cancelinput(){this.sendinput("")}sendkey(e){this.waitingfor=="line"?e.key=="Enter"&&this.sendinput(this.input.value.toString()):this.waitingfor=="char"&&(this.sendchar(e.keyCode),e.preventDefault())}sendinput(e){if(this.resolveInput){var i=Date.now()-this.lastInputRequestTime;this.uppercaseOnly&&(e=e.toUpperCase()),this.addtext(e,4),this.flushline(),this.clearinput(),this.hideinput();var t=this.splitInput?e.split(","):null;this.resolveInput({line:e,vals:t,elapsed:i/1e3}),this.keephandler||(this.resolveInput=null)}}sendchar(e){this.sendinput(String.fromCharCode(e))}ensureline(){this.keepinput||$(this.input).hide(),super.ensureline()}scrollToBottom(){if(this.scrolldiv){this.scrolling++;var e=$(this.page).height()+$(this.input).height();$(this.scrolldiv).stop().animate({scrollTop:e},this.msecPerLine,"swing",()=>{this.scrolling=0,this.ncharsout=0})}else this.input.scrollIntoView()}isBusy(){return this.scrolling>0&&this.ncharsout>0}};export{l as a,h as b};
//# sourceMappingURL=chunk-3XE5YOCV.js.map