/g,">")).replace(/"/g,""")).replace(/'/g,"'")}function init_layer_window(){}function init_sortable(){var e=document.getElementById("layer_list");sortable=Sortable.create(e,{supportPointer:!1,fallbackTolerance:10,onEnd:change_layer_order,group:"save",store:{get:function(e){let t=[];for(let e=0;e<8;e++)t.push(7-SETTING.layer[7-e].order+1);return t}}})}function key_down(e){if(NowProcessing)return;if("[object HTMLInputElement]"==document.activeElement.toString())return;if(!0===document.getElementById("album_window").classList.contains("show"))return;let t=e.keyCode;32==t&&(SPACE_KEY=!0),69==t&&!1===SETTING.tool_shift&&1!=SETTING.current_brush_group&&tool_shift(),CTRL_KEY=e.ctrlKey;let n=e.ctrlKey,s=e.shiftKey;if(13==t)new_canvas();else if(96==t)CTRL_KEY=!0,SPACE_KEY=!0;else if(97==t)SPACE_KEY=!0;else if(98==t)undo_clicked();else if(99==t)redo_clicked();else if(1==n&&90==t)undo_clicked();else if(1==n&&89==t)redo_clicked();else if(1==n&&78==t)new_canvas();else if(1==n&&83==t)download_png_clicked();else if(1==n&&1==s&&83==t)download_png_clicked();else if(72==t)hflip_clicked();else if(36==t)reset_view_clicked();else if(1==n&&186==t)zoom_in();else if(1==n&&107==t)zoom_in();else if(1==n&&189==t)zoom_out();else if(1==n&&109==t)zoom_out();else if(219==t)brush_size_down();else if(221==t)brush_size_up();else if(1==s&&33==t)view_angle_left_15();else{if(1!=s||34!=t)return!0;view_angle_right_15()}return e.preventDefault(),!1}function key_up(e){if(NowProcessing)return;if("[object HTMLInputElement]"==document.activeElement.toString())return;if(!0===document.getElementById("album_window").classList.contains("show"))return;CTRL_KEY=e.ctrlKey;let t=e.keyCode;CTRL_KEY||SPACE_KEY||POINTER_IS_DOWN||(ENABLE_SCROLL=!1),96==t?(CTRL_KEY=!1,(SPACE_KEY=!1)||POINTER_IS_DOWN||(ENABLE_SCROLL=!1)):97==t?(SPACE_KEY=!1)||POINTER_IS_DOWN||(ENABLE_SCROLL=!1):32==t&&((SPACE_KEY=!1)||POINTER_IS_DOWN||(ENABLE_SCROLL=!1)),69==t&&!0===SETTING.tool_shift&&tool_shift()}function wheel_zoom(e){NowProcessing||!0!==document.getElementById("album_window").classList.contains("show")&&(0{let t=document.createElement("canvas");t.width=512,t.height=512;let n=t.getContext("2d");n.drawImage(e,0,0);let s=n.getImageData(0,0,t.width,t.height),r=Module._malloc(s.data.length);Module.HEAP8.set(s.data,r),Module.ccall("LoadMaterialEvent","number",["number","number"],[r,s.data.length]),save_setting_to_localstorage()}).catch(e=>{console.log("error in LoadMaterial()")})}catch(e){alert(e),alert(e.lineNumber)}}function loadImage(e){return new Promise((t,n)=>{const s=new Image;s.onload=()=>t(s),s.onerror=e=>n(e),s.src=e})}function new_canvas_size(){let e=document.getElementById("canvas_size_selection_window");e.classList.contains("invisible")?(e.classList.remove("z-back"),e.classList.remove("invisible"),e.classList.add("z-front")):(e.classList.add("z-back"),e.classList.add("invisible"),e.classList.remove("z-front"));for(let t=0;t>>=0;var i=parseInt(SETTING.layer[e].order),a=1==SETTING.layer[e].clipUnderLayer?1:0,l=parseInt(SETTING.layer[e].opacity);Module.ccall("SetLayerEvent","number",["number","number","number","number","number","number","number","number"],[e,t,n,s,r,i,a,l])}!0===INITIALIZED&&Module.ccall("ReflectLayerEvent","number",[],[])}function invisible_clicked(e){id="#invisible"+e,$(id).hasClass("active")?SETTING.layer[e].visible=!0:SETTING.layer[e].visible=!1,!0===INITIALIZED&&(LAYER_MODIFIED=!0),set_layer_parameters()}function lock_clicked(e){id="#lock"+e,$(id).hasClass("active")?(SETTING.layer[e].lock=!1,$(id).children("img").attr("src","./img/opn.svg")):(SETTING.layer[e].lock=!0,$(id).children("img").attr("src","./img/lock.svg")),!0===INITIALIZED&&(LAYER_MODIFIED=!0),set_layer_parameters()}function clip_under_layer_clicked(e){$("#clip_under_layer"+e).hasClass("active")?SETTING.layer[e].clipUnderLayer=!1:SETTING.layer[e].clipUnderLayer=!0;var t="clip_under_layer_mark"+e,n=document.getElementById(t);1==SETTING.layer[e].clipUnderLayer?n.classList.remove("invisible"):n.classList.add("invisible"),!0===INITIALIZED&&(LAYER_MODIFIED=!0),set_layer_parameters()}function layer_mode_clicked(e,t){SETTING.layer[e].layerMode=t,!0===INITIALIZED&&(LAYER_MODIFIED=!0),set_layer_parameters()}function change_layer_order(){if(void 0===sortable)return;let e=sortable.toArray();for(let t=0;t<8;t++)SETTING.layer[t].order=7-e.indexOf((8-t).toString());!0===INITIALIZED&&(LAYER_MODIFIED=!0),set_layer_parameters()}function get_layer_parameters_from_wasm(){let e=Module.ccall("GetLayerEvent","number",[],[]),t=new Uint32Array(63);t.set(Module.HEAP32.subarray(e/4,e/4+63));let n=[];for(let e=0;e<9;e++){let s=0!=t[7*e+0];SETTING.layer[e].visible=s;let r=0!=t[7*e+1];SETTING.layer[e].lock=r;let i=t[7*e+2];0==i&&(SETTING.layer[e].layerMode="normal"),1==i&&(SETTING.layer[e].layerMode="multiply"),2==i&&(SETTING.layer[e].layerMode="add");let a=t[7*e+3],l="#"+("000000"+(((a>>0&255)<<16)+((a>>8&255)<<8)+((a>>16&255)<<0)).toString(16)).slice(-6);SETTING.layer[e].color=l;let o=t[7*e+4];SETTING.layer[e].order=o,e<8&&n.push(o);let c=0!=t[7*e+5];SETTING.layer[e].clipUnderLayer=c;let _=t[7*e+6];SETTING.layer[e].opacity=_}for(let e=0;e<8;e++){let t="palette"+e;document.getElementById(t).style.backgroundColor=SETTING.layer[e].color}let s=[];for(let e=0;e<8;e++)s.push((8-n.indexOf(7-e)).toString());sortable.sort(s),init_layer_window()}function reset_view_clicked(){let e;paste_selection(),Module.ccall("ResetViewEvent","number",[],[]),e=4/RATIO,save_setting_to_localstorage(),Module.ccall("SetDefaultScaleEvent","number",["number"],[e]),e=Module.ccall("GetViewCanvasScaleEvent","number",[],[]),set_zoom_slider_from_scale_value(e);var t="view_angle_slider";document.getElementById(t).value=0,t="hflip_button",document.getElementById(t).classList.remove("active"),SETTING.angle=0,FLIP_HORIZONTAL=!1,document.activeElement.blur(),CANVAS.focus()}function check_draw_with_touch(){SETTING.draw_with_touch=document.getElementById("draw_with_touch").checked}function tilt_correction_slider_input(e){document.getElementById("tilt_correction_value").innerHTML=Math.round(e)}function tilt_correction_slider_changed(e){SETTING.tilt_correction=e,document.getElementById("tilt_correction_value").innerHTML=Math.round(e),save_setting_to_localstorage()}function link_with_twitter(){save_setting_to_localstorage(),window.confirm(i18next.t("Redirect to link with Twitter page Is it OK"))&&(window.location.href="./login.php")}function tweet_clicked(){let e=document.getElementById("tweet_window");e.classList.remove("invisible"),e.classList.add("visible")}function tweet_cancel(){let e=document.getElementById("tweet_window");e.classList.remove("visible"),e.classList.add("invisible")}function tweet(){if(window.confirm(i18next.t("Post to Twitter Is it OK"))){Module.ccall("TweetCanvasEvent","number",[null],[null]);let e="tweet_window",t=document.getElementById(e);t.classList.remove("visible"),t.classList.add("invisible")}}function brush_group_clicked(e){if(e==SETTING.current_brush_group){let t="brush_group"+e+"menu";document.getElementById(t).classList.contains("show")?(document.getElementById(t).classList.remove("show"),document.getElementById(t).classList.add("hide"),document.getElementById(t).parentElement.classList.remove("show")):(document.getElementById(t).classList.add("show"),document.getElementById(t).classList.remove("hide"),document.getElementById(t).parentElement.classList.add("show"))}else{let t="brush_group"+SETTING.current_brush_group+"menu";document.getElementById(t).classList.contains("show")&&(document.getElementById(t).classList.remove("show"),document.getElementById(t).classList.add("hide"),document.getElementById(t).parentElement.classList.remove("show")),t="brush_group"+SETTING.current_brush_group,document.getElementById(t).classList.contains("active")&&document.getElementById(t).classList.remove("active"),SETTING.current_brush_group=e,t="brush_group"+SETTING.current_brush_group,document.getElementById(t).classList.contains("active")||document.getElementById(t).classList.add("active"),paste_selection(),Module.ccall("BrushSelectionEvent","number",["number"],[current_brush_index()]),change_menu_brush_size_button()}}function hide_brush_group_menu(){let e="brush_group"+SETTING.current_brush_group+"menu";document.getElementById(e).classList.remove("show"),document.getElementById(e).parentElement.classList.remove("show"),e="brush_group"+SETTING.current_brush_group,!1===document.getElementById(e).classList.contains("active")&&document.getElementById(e).classList.add("active")}function current_brush_index(){return 0==SETTING.current_brush_group?SETTING.drawing_brush_index:1==SETTING.current_brush_group?SETTING.eraser_brush_index:2==SETTING.current_brush_group?SETTING.selection_brush_index:SETTING.drawing_brush_index}function tool_shift(){paste_selection();for(let e=0;e<1;e++)Module.ccall("TabletEvent","number",["number","number","number","number","number"],[PREV_X,PREV_Y,0,PREV_altitudeAngle,PREV_azimuthAngle]);if(!1===SETTING.tool_shift){SETTING.brush_group_before_tool_shift=SETTING.current_brush_group;let e="brush_group1";document.getElementById(e).click(),SETTING.tool_shift=!0}else{let e="brush_group"+SETTING.brush_group_before_tool_shift;document.getElementById(e).click(),SETTING.tool_shift=!1}}function auto_save(){if(INACTIVITY_TIME++,30<=++AUTO_SAVE_INTERVAL_COUNTER&&5<=INACTIVITY_TIME){if(save_setting_to_localstorage(),!NowSaving&&(!0===CANVAS_MODIFIED||!0===LAYER_MODIFIED)){let e;const t=4;let n;e=Module.ccall("GetCanvasBmpPointerEvent","number",[null],[null]),n=new Uint32Array(t),n.set(Module.HEAP32.subarray(e/4,e/4+t));const s=n[0],r=n[1],i=new Uint8ClampedArray(buffer,s,r);let a=new Uint8ClampedArray(r);for(let e=0;e{console.log("Share was successful.")}).catch(e=>{alert("Sharing failed")}):alert(i18next.t("This browser does not support it"))}))}catch(e){alert("Sharing for album failed")}}function download_archive_clicked(){let e=new JSZip;indexedDB.open(DB_NAME).onsuccess=function(t){let n=t.target.result.transaction(["canvas","thumbnail"],"readonly"),s=n.objectStore("canvas"),r=0,i=0;s.openCursor().onsuccess=function(t){let n=t.target.result;if(n){let t=n.key+".png";console.log(t),e.file("canvas/"+t,n.value.data),r++,i+=n.value.data.byteLength,n.continue()}},n.objectStore("thumbnail").openCursor().onsuccess=function(t){let n=t.target.result;if(n){let t=n.key+".png";console.log(t),e.file("thumbnail/"+t,n.value.data),i+=n.value.data.byteLength,n.continue()}},n.oncomplete=function(){let t=i18next.t("Download all the images in the album Is it OK")+"(files:"+r+" total bytes:"+i+")";window.confirm(t)&&e.generateAsync({type:"blob"}).then((function(e){saveAs(e,"8bitpaint_archive"+generate_file_name()+".8bpa")}),(function(e){console.log("download_archive error."),console.log(e)}))}}}async function erase_album(){return new Promise((function(e,t){window.confirm(i18next.t("Erase all images in the album Is it OK"))&&(indexedDB.open(DB_NAME).onsuccess=function(t){let n=t.target.result,s=n.transaction(["thumbnail","canvas"],"readwrite"),r=s.objectStore("thumbnail").clear(),i=s.objectStore("canvas").clear();r.onsuccess=function(){console.log("delete all thumbnail data success")},i.onsuccess=function(){console.log("delete all canvas data success")},console.log("transaction complete"),n.close();let a=document.getElementById("album_template").parentNode;for(;10?r=Math.PI/2:t<0&&(r=3*Math.PI/2);else if(0==t)e<0&&(r=Math.PI);else if(90==Math.abs(e)||90==Math.abs(t))r=0;else{let e=Math.tan(n),t=Math.tan(s);r=Math.atan2(t,e),r<0&&(r+=2*Math.PI)}let i=0,a=Math.abs(Math.sin(n)),l=Math.abs(Math.sin(s)),o=Math.abs(Math.cos(n))*Math.abs(Math.cos(s));return o*=Math.pow(.75*Math.pow(Math.cos(2*r),2)+.25,.25),i=Math.asin(o/Math.sqrt(a*a+l*l+o*o)),{altitudeAngle:i,azimuthAngle:r}}class TouchPoint{constructor(){this.maxTouches=4,this.start=[],this.end=[];for(let e=0;e