painterro
Version:
HTML5 image editing widget (js paint plugin)
2 lines • 302 kB
JavaScript
/*! For license information please see painterro.min.js.LICENSE.txt */
var Painterro;Painterro=function(){var t={794:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.HexToRGB=a,e.HexToRGBA=l,e.rgbToHex=c,e.default=void 0;var r=n(784),i=n(564);function o(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function a(t){var e=/^#?([a-fA-F\d]{2})([a-fA-F\d]{2})([a-fA-F\d]{2})$/i.exec(t);return e?{r:parseInt(e[1],16),g:parseInt(e[2],16),b:parseInt(e[3],16)}:(e=/^#?([a-fA-F\d])([a-fA-F\d])([a-fA-F\d])$/i.exec(t))?{r:parseInt(e[1].repeat(2),16),g:parseInt(e[2].repeat(2),16),b:parseInt(e[3].repeat(2),16)}:void 0}function l(t,e){var n=a(t);return"rgba(".concat(n.r,",").concat(n.g,",").concat(n.b,",").concat(e,")")}function s(t){var e=t.toString(16);return 1===e.length&&"0".concat(e)||e}function c(t,e,n){return"#".concat(s(t)).concat(s(e)).concat(s(n))}var A=function(){function t(e,n){var r=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.callback=n,this.main=e,this.w=180,this.h=150;var i=this.w,o=this.h;this.lightPosition=this.w-1,this.wrapper=e.wrapper.querySelector(".ptro-color-widget-wrapper"),this.input=e.wrapper.querySelector(".ptro-color-widget-wrapper .ptro-color"),this.pipetteButton=e.wrapper.querySelector(".ptro-color-widget-wrapper button.ptro-pipette"),this.closeButton=e.wrapper.querySelector(".ptro-color-widget-wrapper button.ptro-close-color-picker"),this.canvas=e.wrapper.querySelector(".ptro-color-widget-wrapper canvas"),this.ctx=this.canvas.getContext("2d"),this.canvasLight=e.wrapper.querySelector(".ptro-color-widget-wrapper .ptro-canvas-light"),this.colorRegulator=e.wrapper.querySelector(".ptro-color-widget-wrapper .ptro-color-light-regulator"),this.canvasAlpha=e.wrapper.querySelector(".ptro-color-widget-wrapper .ptro-canvas-alpha"),this.alphaRegulator=e.wrapper.querySelector(".ptro-color-widget-wrapper .ptro-color-alpha-regulator"),this.ctxLight=this.canvasLight.getContext("2d"),this.ctxAlpha=this.canvasAlpha.getContext("2d"),this.canvas.setAttribute("width","".concat(i)),this.canvas.setAttribute("height","".concat(o)),this.canvasLight.setAttribute("width","".concat(i)),this.canvasLight.setAttribute("height","".concat(20)),this.canvasAlpha.setAttribute("width","".concat(i)),this.canvasAlpha.setAttribute("height","".concat(20));var a=this.ctx.createLinearGradient(0,0,i,0);a.addColorStop(1/15,"#ff0000"),a.addColorStop(4/15,"#ffff00"),a.addColorStop(5/15,"#00ff00"),a.addColorStop(.6,"#00ffff"),a.addColorStop(.8,"#0000ff"),a.addColorStop(14/15,"#ff00ff"),this.ctx.fillStyle=a,this.ctx.fillRect(0,0,i,o);var l=this.ctx.createLinearGradient(0,0,0,o);l.addColorStop(0,"rgba(0, 0, 0, 0)"),l.addColorStop(.99,"rgba(0, 0, 0, 1)"),l.addColorStop(1,"rgba(0, 0, 0, 1)"),this.ctx.fillStyle=l,this.ctx.fillRect(0,0,i,o),this.closeButton.onclick=function(){r.close()},this.pipetteButton.onclick=function(){r.wrapper.setAttribute("hidden","true"),r.opened=!1,r.choosing=!0},this.input.onkeyup=function(){r.setActiveColor(r.input.value,!0)}}var e,n,s;return e=t,s=[{key:"html",value:function(){return'<div class="ptro-color-widget-wrapper ptro-common-widget-wrapper ptro-v-middle" hidden><div class="ptro-pallet ptro-color-main ptro-v-middle-in"><canvas></canvas><canvas class="ptro-canvas-light"></canvas><span class="ptro-color-light-regulator ptro-bordered-control"></span><canvas class="ptro-canvas-alpha"></canvas><span class="alpha-checkers"></span><span class="ptro-color-alpha-regulator ptro-bordered-control"></span><div class="ptro-colors"></div><div class="ptro-color-edit"><button type="button" aria-label="pipette" class="ptro-icon-btn ptro-pipette ptro-color-control" style="float: left; margin-right: 5px"><i class="ptro-icon ptro-icon-pipette"></i></button><input class="ptro-input ptro-color" type="text" size="7"/><button type="button" aria-label="close" class="ptro-named-btn ptro-close-color-picker ptro-color-control" >'+"".concat((0,r.tr)("close"),"</button>")+"</div></div></div>"}}],(n=[{key:"open",value:function(t,e){this.target=t.target,this.palleteColor=t.palleteColor,this.alpha=t.alpha,this.lightPosition=this.lightPosition||this.w-1,this.drawLighter(),this.colorRegulator.style.left="".concat(this.lightPosition,"px"),this.alphaRegulator.style.left="".concat(Math.round(this.alpha*this.w),"px"),this.regetColor(),this.wrapper.removeAttribute("hidden"),this.opened=!0,this.addCallback=e}},{key:"close",value:function(){this.wrapper.setAttribute("hidden","true"),this.opened=!1}},{key:"getPaletteColorAtPoint",value:function(t){var e=t.clientX-this.canvas.documentOffsetLeft,n=t.clientY-this.canvas.documentOffsetTop;n=n<1?1:n,e=(e=e<1?1:e)>this.w&&this.w-1||e,n=n>this.h&&this.h-1||n;var r=this.ctx.getImageData(e,n,1,1).data;this.palleteColor=c(r[0],r[1],r[2]),this.drawLighter(),this.regetColor()}},{key:"regetColor",value:function(){var t=this.ctxLight.getImageData(this.lightPosition,5,1,1).data;this.setActiveColor(c(t[0],t[1],t[2])),this.drawAlpher()}},{key:"regetAlpha",value:function(){var t=this.ctxAlpha.getImageData(this.alphaPosition,5,1,1).data;this.alpha=t[3]/255,this.setActiveColor(this.color,!0)}},{key:"getColorLightAtClick",value:function(t){var e=t.clientX-this.canvasLight.documentOffsetLeft;e=(e=e<1?1:e)>this.w-1&&this.w-1||e,this.lightPosition=e,this.colorRegulator.style.left="".concat(e,"px"),this.regetColor()}},{key:"getAlphaAtClick",value:function(t){var e=t.clientX-this.canvasAlpha.documentOffsetLeft;e=(e=e<1?1:e)>this.w-1&&this.w-1||e,this.alphaPosition=e,this.alphaRegulator.style.left="".concat(e,"px"),this.regetAlpha()}},{key:"handleKeyDown",value:function(t){return!(!this.opened||t.keyCode!==i.KEYS.enter)||!(!this.opened||t.keyCode!==i.KEYS.esc)&&(this.close(),!0)}},{key:"handleMouseDown",value:function(t){return this.choosing&&2!==t.button?(this.choosingActive=!0,this.handleMouseMove(t),!0):(this.choosing=!1,t.target===this.canvas&&(this.selecting=!0,this.getPaletteColorAtPoint(t)),t.target!==this.canvasLight&&t.target!==this.colorRegulator||(this.lightSelecting=!0,this.getColorLightAtClick(t)),t.target!==this.canvasAlpha&&t.target!==this.alphaRegulator||(this.alphaSelecting=!0,this.getAlphaAtClick(t)),!1)}},{key:"handleMouseMove",value:function(t){if(this.opened)this.selecting&&this.getPaletteColorAtPoint(t),this.lightSelecting&&this.getColorLightAtClick(t),this.alphaSelecting&&this.getAlphaAtClick(t);else if(this.choosingActive){var e=this.main.getScale(),n=(t.clientX-this.main.elLeft()+this.main.scroller.scrollLeft)*e;n=(n=n<1?1:n)>this.main.size.w-1&&this.main.size.w-1||n;var r=(t.clientY-this.main.elTop()+this.main.scroller.scrollTop)*e;r=(r=r<1?1:r)>this.main.size.h-1&&this.main.size.h-1||r;var i=this.main.ctx.getImageData(n,r,1,1).data,o=c(i[0],i[1],i[2]);this.callback({alphaColor:l(o,1),lightPosition:this.w-1,alpha:1,palleteColor:o,target:this.target}),void 0!==this.addCallback&&this.addCallback({alphaColor:l(o,1),lightPosition:this.w-1,alpha:1,palleteColor:o,target:this.target})}}},{key:"handleMouseUp",value:function(){this.selecting=!1,this.lightSelecting=!1,this.choosing=!1,this.choosingActive=!1,this.alphaSelecting=!1,this.main.zoomHelper.hideZoomHelper()}},{key:"setActiveColor",value:function(t,e){try{this.input.style.color=function(t){var e=a(t);return(299*e.r+587*e.g+114*e.b)/1e3>=128?"black":"white"}(t)}catch(t){return}this.input.style["background-color"]=t,void 0===e&&(this.input.value=t),this.color=t,this.alphaColor=l(t,this.alpha),void 0!==this.callback&&this.opened&&this.callback({alphaColor:this.alphaColor,lightPosition:this.lightPosition,alpha:this.alpha,palleteColor:this.color,target:this.target}),void 0!==this.addCallback&&this.opened&&this.addCallback({alphaColor:this.alphaColor,lightPosition:this.lightPosition,alpha:this.alpha,palleteColor:this.color,target:this.target})}},{key:"drawLighter",value:function(){var t=this.ctxLight.createLinearGradient(0,0,this.w,0);t.addColorStop(0,"#ffffff"),t.addColorStop(.05,"#ffffff"),t.addColorStop(.95,this.palleteColor),t.addColorStop(1,this.palleteColor),this.ctxLight.fillStyle=t,this.ctxLight.fillRect(0,0,this.w,15)}},{key:"drawAlpher",value:function(){this.ctxAlpha.clearRect(0,0,this.w,15);var t=this.ctxAlpha.createLinearGradient(0,0,this.w,0);t.addColorStop(0,"rgba(255,255,255,0)"),t.addColorStop(.05,"rgba(255,255,255,0)"),t.addColorStop(.95,this.color),t.addColorStop(1,this.color),this.ctxAlpha.fillStyle=t,this.ctxAlpha.fillRect(0,0,this.w,15)}}])&&o(e.prototype,n),s&&o(e,s),t}();e.default=A},198:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var r=n(927);function i(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var o=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.main=e}var e,n,o;return e=t,o=[{key:"buildInputControl",value:function(t,e,n,r,i){return{type:"int",title:t,titleFull:"".concat(t,"Full"),target:t,min:r,max:i,action:e,getValue:n}}},{key:"buildDropDownControl",value:function(t,e,n,r){return{type:"dropdown",title:t,titleFull:"".concat(t,"Full"),target:t,action:e,getValue:n,getAvailableValues:function(){return r.map((function(t){return{value:t,name:t.toString(),title:t.toString()}}))}}}}],(n=[{key:"buildFontSizeControl",value:function(e){var n=this,i=function(){var t=n.main.getElemByIdSafe(n.main.activeTool.controls[e].id).value;n.main.textTool.setFontSize(t),(0,r.setParam)("defaultFontSize",t)},o=function(){return n.main.textTool.fontSize};return this.main.params.availableFontSizes?t.buildDropDownControl("fontSize",i,o,this.main.params.availableFontSizes):t.buildInputControl("fontSize",i,o,1,200)}},{key:"buildEraserWidthControl",value:function(e){var n=this,i=function(){var t=n.main.getElemByIdSafe(n.main.activeTool.controls[e].id).value;n.main.primitiveTool.setEraserWidth(t),(0,r.setParam)("defaultEraserWidth",t)},o=function(){return n.main.primitiveTool.eraserWidth};return this.main.params.availableEraserWidths?t.buildDropDownControl("eraserWidth",i,o,this.main.params.availableEraserWidths):t.buildInputControl("eraserWidth",i,o,1,99)}},{key:"buildLineWidthControl",value:function(e){var n=this,i=function(){var t=n.main.getElemByIdSafe(n.main.activeTool.controls[e].id).value;n.main.primitiveTool.setLineWidth(t),(0,r.setParam)("defaultLineWidth",t)},o=function(){return n.main.primitiveTool.lineWidth};return this.main.params.availableLineWidths?t.buildDropDownControl("lineWidth",i,o,this.main.params.availableLineWidths):t.buildInputControl("lineWidth",i,o,0,99)}},{key:"buildShadowOnControl",value:function(t){var e=this;return{type:"bool",title:"shadowOn",titleFull:"shadowOnFull",target:"shadowOn",action:function(){var n=e.main.getElemByIdSafe(e.main.activeTool.controls[t].id),i=!("true"===n.getAttribute("data-value"));e.main.primitiveTool.setShadowOn(i),n.setAttribute("data-value",i?"true":"false"),(0,r.setParam)("defaultPrimitiveShadowOn",i)},getValue:function(){return e.main.primitiveTool.shadowOn}}}},{key:"buildPaintBucketControl",value:function(e){var n=this;return t.buildInputControl("lineWidth",(function(){var t=document.getElementById(n.main.activeTool.controls[e].id).value;console.log("buildPaintBucketControl width: "+t),(0,r.setParam)("activeFillColor",t)}),(function(){return n.main.primitiveTool.lineWidth}),1,99)}},{key:"buildArrowLengthControl",value:function(e){var n=this,i=function(){var t=n.main.getElemByIdSafe(n.main.activeTool.controls[e].id).value;n.main.primitiveTool.setArrowLength(t),(0,r.setParam)("defaultArrowLength",t)},o=function(){return n.main.primitiveTool.arrowLength};return this.main.params.availableArrowLengths?t.buildDropDownControl("arrowLength",i,o,this.main.params.availableArrowLengths):t.buildInputControl("arrowLength",i,o,1,99)}}])&&i(e.prototype,n),o&&i(e,o),t}();e.default=o},34:function(t,e){"use strict";function n(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var r=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.element=e}var e,r,i;return e=t,(r=[{key:"createEvent",value:function(t,e){return new CustomEvent(t,{detail:e})}},{key:"dispatchEvent",value:function(t,e){this.element.dispatchEvent(this.createEvent(t,e))}},{key:"addEventListener",value:function(t,e){this.element.addEventListener(t,e)}},{key:"removeEventListener",value:function(t,e){this.element.removeEventListener(t,e)}},{key:"useCustomEvent",value:function(t,e){this.dispatchEvent(t,e)}}])&&n(e.prototype,r),i&&n(e,i),t}();e.default=r},149:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;n(20);var r=n(784);n(564);function i(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var o=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.main=e,this.wrapper=e.wrapper.querySelector(".ptro-filters-widget-wrapper"),this.input=e.wrapper.querySelector(".ptro-filters-widget-wrapper .ptro-filters-input"),this.applyButton=e.wrapper.querySelector(".ptro-filters-widget-wrapper button.ptro-apply"),this.closeButton=e.wrapper.querySelector(".ptro-filters-widget-wrapper button.ptro-close"),this.errorHolder=e.wrapper.querySelector(".ptro-filters-widget-wrapper .ptro-error"),this.filters=["grayscale","sepia","invert","brightness","contrast","saturate"],this.chosenFilter=this.filters[0],this.initCtxImageData=null,this.filterValue=0,this.filtersForApply=this.createFiltersForApply()}var e,n,o;return e=t,o=[{key:"html",value:function(t){return'<div class="ptro-filters-widget-wrapper ptro-common-widget-wrapper ptro-v-middle" hidden> <div class="ptro-filters-widget-content ptro-common-widget-content"> <div class="ptro-filters-widget-title">'+(0,r.tr)("filters")+'</div> <div class="ptro-filters-widget-input-wrapper"> <div class="ptro-error ptro-error-hidden">'+(0,r.tr)("wrongFilterValue")+'</div> </div> <div class="ptro-filters-widget-buttons"> <button type="button" class="ptro-apply ptro-color-control">'+(0,r.tr)("apply")+'</button> <button type="button" class="ptro-close ptro-color-control">'+(0,r.tr)("close")+"</button> </div> </div></div>"}}],(n=[{key:"createFiltersForApply",value:function(){var t={};return this.filters.forEach((function(e){t[e]=0})),t}},{key:"createFilterString",value:function(){var t="";for(var e in this.filtersForApply)0!==this.filtersForApply[e]&&(t+="".concat(e,"(").concat(this.filtersForApply[e],"%) "));return t}},{key:"getFilters",value:function(){return this.filters.map((function(t){return{value:t,name:t,title:t}}))}},{key:"setFilter",value:function(t){this.chosenFilter=t,this.filtersForApply.hasOwnProperty(t)&&(this.filtersForApply[t]=this.filterValue)}},{key:"setPercents",value:function(t){this.filterValue=t,this.filtersForApply.hasOwnProperty(this.chosenFilter)&&(this.filtersForApply[this.chosenFilter]=t)}},{key:"getFilter",value:function(){return this.filters[0]}},{key:"applyFilter",value:function(){var t=this.main.size.w,e=this.main.size.h,n=this.initCtxImageData,r=this.main.doc.createElement("canvas");r.width=t,r.height=e,r.getContext("2d").putImageData(n,0,0),this.main.ctx.save(),this.main.ctx.filter=this.createFilterString(),this.main.ctx.drawImage(r,0,0),this.main.worklog.captureState()}},{key:"saveInitImg",value:function(){this.initCtxImageData=this.main.ctx.getImageData(0,0,this.main.size.w,this.main.size.h),this.createFiltersForApply()}},{key:"open",value:function(){this.wrapper.removeAttribute("hidden"),this.opened=!0}},{key:"close",value:function(){this.wrapper.setAttribute("hidden",""),this.opened=!1}},{key:"startClose",value:function(){this.errorHolder.setAttribute("hidden",""),this.main.closeActiveTool()}},{key:"getValue",value:function(){}}])&&i(e.prototype,n),o&&i(e,o),t}();e.default=o},840:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var r=n(784),i=n(564);function o(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var a=function(){function t(e){var n=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.main=e;var r={extend_top:{internalName:"extend_top",handle:function(t){n.tmpImg=t;var e=n.main.size.h,r=n.main.size.w,i=e+t.naturalHeight,o=Math.max(r,t.naturalWidth),a=n.ctx.getImageData(0,0,n.main.size.w,n.main.size.h);if(n.main.resize(o,i),n.main.clearBackground(),n.ctx.putImageData(a,0,t.naturalHeight),n.main.adjustSizeFull(),t.naturalWidth<r){var l=Math.round((r-t.naturalWidth)/2);n.main.select.placeAt(l,0,l,e,t)}else n.main.select.placeAt(0,0,0,e,t);n.worklog.captureState()}},extend_left:{internalName:"extend_left",handle:function(t){n.tmpImg=t;var e=n.main.size.h,r=n.main.size.w,i=r+t.naturalWidth,o=Math.max(e,t.naturalHeight),a=n.ctx.getImageData(0,0,n.main.size.w,n.main.size.h);if(n.main.resize(i,o),n.main.clearBackground(),n.ctx.putImageData(a,t.naturalWidth,0),n.main.adjustSizeFull(),t.naturalHeight<e){var l=Math.round((e-t.naturalHeight)/2);n.main.select.placeAt(0,l,r,l,t)}else n.main.select.placeAt(0,0,r,0,t);n.worklog.captureState()}},extend_right:{internalName:"extend_right",handle:function(t){n.tmpImg=t;var e=n.main.size.h,r=n.main.size.w,i=r+t.naturalWidth,o=Math.max(e,t.naturalHeight),a=n.ctx.getImageData(0,0,n.main.size.w,n.main.size.h);if(n.main.resize(i,o),n.main.clearBackground(),n.ctx.putImageData(a,0,0),n.main.adjustSizeFull(),t.naturalHeight<e){var l=Math.round((e-t.naturalHeight)/2);n.main.select.placeAt(r,l,0,l,t)}else n.main.select.placeAt(r,0,0,0,t);n.worklog.captureState()}},extend_down:{internalName:"extend_down",handle:function(t){n.tmpImg=t;var e=n.main.size.h,r=n.main.size.w,i=e+t.naturalHeight,o=Math.max(r,t.naturalWidth),a=n.ctx.getImageData(0,0,n.main.size.w,n.main.size.h);if(n.main.resize(o,i),n.main.clearBackground(),n.ctx.putImageData(a,0,0),n.main.adjustSizeFull(),t.naturalWidth<r){var l=Math.round((r-t.naturalWidth)/2);n.main.select.placeAt(l,e,l,0,t)}else n.main.select.placeAt(0,e,0,0,t);n.worklog.captureState()}}},i={replace_all:{internalName:"fit",handle:function(t){n.main.params.backplateImgUrl&&(n.main.params.backplateImgUrl=void 0,n.main.tabelCell.style.background="",n.main.canvas.style.backgroundColor="".concat(n.main.params.backgroundFillColor,"ff"),n.pasteOptions=Object.assign({},i,r),n.activeOption=n.pasteOptions,n.main.wrapper.querySelector(".ptro-paster-select-wrapper").remove(),n.main.wrapper.insertAdjacentHTML("beforeend",n.html()),n.init(e)),n.main.fitImage(t,n.mimetype)}},paste_over:{internalName:"over",handle:function(t){n.tmpImg=t;var e=n.main.size.h,r=n.main.size.w;if(t.naturalHeight<=e&&t.naturalWidth<=r)n.main.select.placeAt(0,0,r-t.naturalWidth,e-t.naturalHeight,t);else if(t.naturalWidth/t.naturalHeight>r/e){var i=r*(t.naturalHeight/t.naturalWidth);n.main.select.placeAt(0,0,0,e-i,t)}else{var o=e*(t.naturalWidth/t.naturalHeight);n.main.select.placeAt(0,0,r-o,0,t)}n.worklog.captureState()}}};if(this.main.params.backplateImgUrl)return this.pasteOptions=Object.assign({},i),void(this.activeOption=this.pasteOptions);this.pasteOptions=Object.assign({},i,r),this.activeOption=this.pasteOptions}var e,n,a;return e=t,a=[{key:"get",value:function(e){return e.inserter||(e.inserter=new t(e)),e.inserter}},{key:"controlObjToString",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=t;return n.id=(0,i.genId)(),'<button type="button" id="'.concat(t.id,'" class="ptro-selector-btn ptro-color-control ').concat(e,'">')+'<div><i class="ptro-icon ptro-icon-paste_'.concat(t.internalName,'"></i></div>')+"<div>".concat((0,r.tr)("pasteOptions.".concat(t.internalName)),"</div>")+"</button>"}}],(n=[{key:"init",value:function(t){var e=this;this.CLIP_DATA_MARKER="painterro-image-data",this.ctx=t.ctx,this.main=t,this.worklog=t.worklog,this.selector=t.wrapper.querySelector(".ptro-paster-select-wrapper"),this.cancelChoosing(),this.img=null,this.mimetype=null,this.getAvailableOptions().forEach((function(t){var n=e.pasteOptions[t];e.main.getElemByIdSafe(n.id).onclick=function(){e.loading?e.doLater=n.handle:n.handle(e.img),e.cancelChoosing()}})),this.loading=!1,this.doLater=null}},{key:"insert",value:function(t,e,n,r){this.main.ctx.drawImage(this.tmpImg,t,e,n,r),this.main.worklog.reCaptureState()}},{key:"cancelChoosing",value:function(){this.selector.setAttribute("hidden",""),this.waitChoice=!1}},{key:"loaded",value:function(t,e){this.img=t,this.mimetype=e,this.loading=!1,this.doLater&&(this.doLater(t),this.doLater=null)}},{key:"getAvailableOptions",value:function(){var t=this;return this.main.params.how_to_paste_actions?Object.keys(this.activeOption).filter((function(e){return t.main.params.how_to_paste_actions.includes(e)})):Object.keys(this.activeOption)}},{key:"handleOpen",value:function(t,e){var n=this;this.startLoading();var r=function(t){var r=new Image,i=n.main.worklog.clean&&n.main.params.replaceAllOnEmptyBackground;if(r.onload=function(){i?n.main.fitImage(r,e):n.loaded(r,e),n.finishLoading()},r.onerror=function(){"function"==typeof n.main.params.onImageFailedOpen&&n.main.params.onImageFailedOpen()},r.src=t,!i){var o=n.getAvailableOptions();1!==o.length?(n.selector.removeAttribute("hidden"),n.waitChoice=!0):n.doLater=n.activeOption[o[0]].handle}};0!==t.indexOf("data")?(0,i.imgToDataURL)(t,(function(t){r(t)}),(function(){"function"==typeof n.main.params.onImageFailedOpen&&n.main.params.onImageFailedOpen()})):r(t)}},{key:"handleKeyDown",value:function(t){return this.waitChoice&&t.keyCode===i.KEYS.esc?(this.cancelChoosing(),!0):!(!this.waitChoice||event.keyCode!==i.KEYS.enter)}},{key:"startLoading",value:function(){if(this.loading=!0,this.main.toolByName.open.buttonId){var t=this.main.getElemByIdSafe(this.main.toolByName.open.buttonId);t&&t.setAttribute("disabled","true");var e=this.main.doc.querySelector("#".concat(this.main.toolByName.open.buttonId," > i"));e&&(e.className="ptro-icon ptro-icon-loading ptro-spinning")}}},{key:"finishLoading",value:function(){if(this.main.toolByName.open.buttonId){var t=this.main.getElemByIdSafe(this.main.toolByName.open.buttonId);t&&t.removeAttribute("disabled");var e=this.main.doc.querySelector("#".concat(this.main.toolByName.open.buttonId," > i"));e&&(e.className="ptro-icon ptro-icon-open")}this.main.params.onImageLoaded&&this.main.params.onImageLoaded()}},{key:"html",value:function(){var e=this,n=this.main.params.backplateImgUrl,i="",o="";return this.getAvailableOptions().forEach((function(n){"replace_all"===n||"paste_over"===n?i+='<div class="ptro-paster-fit">\n '.concat(t.controlObjToString(e.pasteOptions[n],"ptro-selector-fit"),'\n <div class="ptro-paster-wrapper-label">\n ').concat((0,r.tr)("pasteOptions.".concat(e.pasteOptions[n].internalName)),"\n </div></div>"):o+=t.controlObjToString(e.pasteOptions[n],"ptro-selector-extend")})),'<div class="ptro-paster-select-wrapper" hidden><div class="ptro-paster-select ptro-v-middle"><div class="ptro-in ptro-v-middle-in">'+' <div class="ptro-paster-wrappers-fits">\n '.concat(i,"\n ").concat(n||!o?"":'\n <div class="ptro-paster-select-wrapper-extends">\n <div class="ptro-paster-extends-items">\n '.concat(o,'\n </div>\n <div class="ptro-paster-wrapper-label">').concat((0,r.tr)("pasteOptions.extend"),"</div>\n </div>"),"\n </div>\n </div></div></div>")}}])&&o(e.prototype,n),a&&o(e,a),t}();e.default=a},165:function(t,e,n){"use strict";function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}e.default=void 0;var i=B(n(891));n(735),n(757),n(996);var o=B(n(505)),a=B(n(390)),l=n(564),s=B(n(335)),c=function(t){if(t&&t.__esModule)return t;if(null===t||"object"!==r(t)&&"function"!=typeof t)return{default:t};var e=b();if(e&&e.has(t))return e.get(t);var n={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in t)if(Object.prototype.hasOwnProperty.call(t,o)){var a=i?Object.getOwnPropertyDescriptor(t,o):null;a&&(a.get||a.set)?Object.defineProperty(n,o,a):n[o]=t[o]}n.default=t,e&&e.set(t,n);return n}(n(794)),A=n(927),u=n(784),p=B(n(9)),h=B(n(997)),f=B(n(724)),d=B(n(840)),g=B(n(624)),m=B(n(198)),v=B(n(666)),C=B(n(149)),w=B(n(34));n(20);function b(){if("function"!=typeof WeakMap)return null;var t=new WeakMap;return b=function(){return t},t}function B(t){return t&&t.__esModule?t:{default:t}}function y(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function x(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?y(Object(n),!0).forEach((function(e){I(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):y(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function I(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function k(t){return function(t){if(Array.isArray(t))return S(t)}(t)||function(t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}(t)||function(t,e){if(!t)return;if("string"==typeof t)return S(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return S(t,e)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function S(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function E(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}var z=function(){function t(e){var n,r=this;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t);var b=document.querySelector("#".concat(e.id))||document.getElementById("app");this.customEvents=new w.default(b),(0,l.addDocumentObjectHelpers)(),this.getElemByIdSafe=function(t){if(!t)throw new Error("Can't get element with id=".concat(t,", please create an issue here, we will easily fx it: https://github.com/devforth/painterro/issues/"));return document.getElementById(t)},this.tools=[{name:"select",hotkey:"s",activate:function(){r.initText&&r.wrapper.click(),r.toolContainer.style.cursor="crosshair",r.select.activate(),r.select.draw()},close:function(){r.select.close(),r.toolContainer.style.cursor="auto"},eventListner:function(){return r.select}},{name:"crop",hotkey:"c",activate:function(){r.initText&&r.wrapper.click(),r.select.doCrop(),r.closeActiveTool()}},{name:"pixelize",hotkey:"p",activate:function(){r.initText&&r.wrapper.click(),r.select.doPixelize(),r.closeActiveTool()}},{name:"line",hotkey:"l",controls:[function(){return{type:"color",title:"lineColor",target:"line",titleFull:"lineColorFull",action:function(){r.colorPicker.open(r.colorWidgetState.line)}}},function(){return r.controlBuilder.buildLineWidthControl(1)},function(){return r.controlBuilder.buildShadowOnControl(2)}],activate:function(){r.initText&&r.wrapper.click(),r.toolContainer.style.cursor="crosshair",r.primitiveTool.activate("line")},eventListner:function(){return r.primitiveTool}},{name:"arrow",hotkey:"a",controls:[function(){return{type:"color",title:"lineColor",target:"line",titleFull:"lineColorFull",action:function(){r.colorPicker.open(r.colorWidgetState.line)}}},function(){return r.controlBuilder.buildArrowLengthControl(1)},function(){return r.controlBuilder.buildShadowOnControl(2)}],activate:function(){r.initText&&r.wrapper.click(),r.toolContainer.style.cursor="crosshair",r.primitiveTool.activate("arrow")},eventListner:function(){return r.primitiveTool}},{name:"rect",controls:[function(){return{type:"color",title:"lineColor",titleFull:"lineColorFull",target:"line",action:function(){r.colorPicker.open(r.colorWidgetState.line)}}},function(){return{type:"color",title:"fillColor",titleFull:"fillColorFull",target:"fill",action:function(){r.colorPicker.open(r.colorWidgetState.fill)}}},function(){return r.controlBuilder.buildLineWidthControl(2)},function(){return r.controlBuilder.buildShadowOnControl(3)}],activate:function(){r.initText&&r.wrapper.click(),r.toolContainer.style.cursor="crosshair",r.primitiveTool.activate("rect")},eventListner:function(){return r.primitiveTool}},{name:"filters",controls:[function(){return{type:"dropdown",title:"filters",titleFull:"imageFilters",action:function(){var t=r.activeTool.controls[0].id,e=r.getElemByIdSafe(t).value;r.filters.setFilter(e)},getValue:function(){return r.filters.getFilter()},getAvailableValues:function(){return r.filters.getFilters()}}},function(){return{type:"int",title:"percents",titleFull:"percentsFull",min:0,max:100,options:{eventOnChange:!0},action:function(){var t=r.getElemByIdSafe(r.activeTool.controls[1].id).value;r.filters.setPercents(t),r.filters.applyFilter()},getValue:function(){return 1}}}],activate:function(){r.initText&&r.wrapper.click(),r.filters.saveInitImg(),r.toolContainer.style.cursor="crosshair"}},{name:"ellipse",controls:[function(){return{type:"color",title:"lineColor",titleFull:"lineColorFull",target:"line",action:function(){r.colorPicker.open(r.colorWidgetState.line)}}},function(){return{type:"color",title:"fillColor",titleFull:"fillColorFull",target:"fill",action:function(){r.colorPicker.open(r.colorWidgetState.fill)}}},function(){return r.controlBuilder.buildLineWidthControl(2)},function(){return r.controlBuilder.buildShadowOnControl(3)}],activate:function(){r.initText&&r.wrapper.click(),r.toolContainer.style.cursor="crosshair",r.primitiveTool.activate("ellipse")},eventListner:function(){return r.primitiveTool}},{name:"brush",hotkey:"b",controls:[function(){return{type:"color",title:"lineColor",target:"line",titleFull:"lineColorFull",action:function(){r.colorPicker.open(r.colorWidgetState.line)}}},function(){return r.controlBuilder.buildLineWidthControl(1)}],activate:function(){r.initText&&r.wrapper.click(),r.toolContainer.style.cursor="crosshair",r.primitiveTool.activate("brush")},eventListner:function(){return r.primitiveTool}},{name:"eraser",controls:[function(){return r.controlBuilder.buildEraserWidthControl(0)}],activate:function(){r.initText&&r.wrapper.click(),r.toolContainer.style.cursor="crosshair",r.primitiveTool.activate("eraser")},eventListner:function(){return r.primitiveTool}},{name:"text",hotkey:"t",controls:[function(){return{type:"color",title:"textColor",titleFull:"textColorFull",target:"line",action:function(){r.colorPicker.open(r.colorWidgetState.line,(function(t){r.textTool.setFontColor(t.alphaColor)}))}}},function(){return r.controlBuilder.buildFontSizeControl(1)},function(){return{type:"dropdown",title:"fontName",titleFull:"fontNameFull",target:"fontName",action:function(){var t=r.getElemByIdSafe(r.activeTool.controls[2].id).value;r.textTool.setFont(t)},getValue:function(){return r.textTool.getFont()},getAvailableValues:function(){return r.textTool.getFonts()}}},function(){return{type:"bool",title:"fontIsBold",titleFull:"fontIsBoldFull",target:"fontIsBold",action:function(){var t=r.getElemByIdSafe(r.activeTool.controls[3].id),e=!("true"===t.getAttribute("data-value"));r.textTool.setFontIsBold(e),(0,A.setParam)("defaultFontBold",e),t.setAttribute("data-value",e?"true":"false")},getValue:function(){return r.textTool.isBold}}},function(){return{type:"bool",title:"fontIsItalic",titleFull:"fontIsItalicFull",target:"fontIsItalic",action:function(){var t=r.getElemByIdSafe(r.activeTool.controls[4].id),e=!("true"===t.getAttribute("data-value"));r.textTool.setFontIsItalic(e),(0,A.setParam)("defaultFontItalic",e),t.setAttribute("data-value",e?"true":"false")},getValue:function(){return r.textTool.isItalic}}},function(){return{type:"bool",title:"fontStrokeAndShadow",titleFull:"fontStrokeAndShadowFull",target:"fontStrokeAndShadow",action:function(){var t=r.getElemByIdSafe(r.activeTool.controls[5].id),e=!("true"===t.getAttribute("data-value"));r.textTool.setStrokeOn(e),(0,A.setParam)("defaultTextStrokeAndShadow",e),t.setAttribute("data-value",e?"true":"false")},getValue:function(){return r.textTool.strokeOn}}}],activate:function(){r.initText&&r.wrapper.click(),r.textTool.setFontColor(r.colorWidgetState.line.alphaColor),r.toolContainer.style.cursor="crosshair"},close:function(){r.textTool.close()},eventListner:function(){return r.textTool}},{name:"rotate",hotkey:"r",activate:function(){r.initText&&r.wrapper.click();var t=r.size.w,e=r.size.h,n=r.ctx.getImageData(0,0,r.size.w,r.size.h),i=r.doc.createElement("canvas");i.width=t,i.height=e,i.getContext("2d").putImageData(n,0,0),r.resize(e,t),r.ctx.save(),r.ctx.translate(e/2,t/2),r.ctx.rotate(90*Math.PI/180),r.ctx.drawImage(i,-t/2,-e/2),r.adjustSizeFull(),r.ctx.restore(),r.worklog.captureState(),r.closeActiveTool()}},{name:"resize",activate:function(){r.initText&&r.wrapper.click(),r.resizer.open()},close:function(){r.resizer.close()},eventListner:function(){return r.resizer}},{name:"undo",activate:function(){r.initText&&r.wrapper.click(),r.worklog.undoState()},eventListner:function(){return r.resizer}},{name:"redo",activate:function(){r.initText&&r.wrapper.click(),r.worklog.redoState()},eventListner:function(){return r.resizer}},{name:"settings",activate:function(){r.initText&&r.wrapper.click(),r.settings.open()},close:function(){r.settings.close()},eventListner:function(){return r.settings}},{name:"zoomout",activate:function(){r.initText&&r.wrapper.click(),r.zoomButtonActive=!0;var t=r.canvas.getBoundingClientRect(),e={wheelDelta:-120,clientX:t.right/2,clientY:t.bottom/2};r.curCord=[e.clientX-r.elLeft()+r.scroller.scrollLeft,e.clientY-r.elTop()+r.scroller.scrollTop];var n=r.getScale();r.curCord=[r.curCord[0]*n,r.curCord[1]*n],r.zoomImage(e)}},{name:"zoomin",activate:function(){r.initText&&r.wrapper.click(),r.zoomButtonActive=!0;var t=r.canvas.getBoundingClientRect(),e={wheelDelta:120,clientX:t.right/2,clientY:t.bottom/2};r.curCord=[e.clientX-r.elLeft()+r.scroller.scrollLeft,e.clientY-r.elTop()+r.scroller.scrollTop];var n=r.getScale();r.curCord=[r.curCord[0]*n,r.curCord[1]*n],r.zoomImage(e)}},{name:"bucket",hotkey:"f",controls:[function(){return{type:"color",title:"fillColor",target:"fill",titleFull:"fillColorFull",action:function(){r.colorPicker.open(r.colorWidgetState.fill)}}}],activate:function(){r.toolContainer.style.cursor="crosshair",r.primitiveTool.activate("bucket")},eventListner:function(){return r.paintBucket}},{name:"clear",activate:function(){r.clear(),r.closeActiveTool()}},{name:"save",right:!0,hotkey:function(){return!!r.params.saveByEnter&&"enter"},activate:function(){r.initText&&r.wrapper.click(),r.save(),r.closeActiveTool()}},{name:"open",right:!0,activate:function(){r.initText&&r.wrapper.click(),r.closeActiveTool();var t=r.getElemByIdSafe(r.fileInputId);t.onchange=function(e){var n=e.target.files||e.dataTransfer.files;n.length&&(r.openFile(n[0]),t.value="")},t.click()}},{name:"close",hotkey:function(){return!!r.params.hideByEsc&&"esc"},right:!0,activate:function(){r.initText&&r.wrapper.click();var t=function(){r.closeActiveTool(),r.close(),r.hide()};r.params.onBeforeClose?r.params.onBeforeClose(r.hasUnsaved,t):t()}}].concat(k((null===(n=e.customTools)||void 0===n?void 0:n.map((function(t){return{name:t.name,activate:t.callBack,iconUrl:t.iconUrl}})))||[])),this.params=(0,A.setDefaults)(e,this.tools.map((function(t){return t.name}))),this.colorWidgetState={line:{target:"line",palleteColor:this.params.activeColor,alpha:this.params.activeColorAlpha,alphaColor:this.params.activeAlphaColor},fill:{target:"fill",palleteColor:this.params.activeFillColor,alpha:this.params.activeFillColorAlpha,alphaColor:this.params.activeFillAlphaColor},bg:{target:"bg",palleteColor:this.params.backgroundFillColor,alpha:this.params.backgroundFillColorAlpha,alphaColor:this.params.backgroundFillAlphaColor}},this.currentBackground=this.colorWidgetState.bg.alphaColor,this.currentBackgroundAlpha=this.colorWidgetState.bg.alpha,this.controlBuilder=new m.default(this),this.isMobile=i.default.any,this.toolByName={},this.toolByKeyCode={},this.tools.forEach((function(t){if(t.controls&&(t.controls=t.controls.map((function(t){return t()}))),r.toolByName[t.name]=t,t.hotkey instanceof Function&&(t.hotkey=t.hotkey()),t.hotkey&&!r.params.hiddenTools.includes(t.name)){if(!l.KEYS[t.hotkey])throw new Error("Key code for ".concat(t.hotkey," not defined in KEYS"));r.toolByKeyCode[l.KEYS[t.hotkey]]=t}})),this.activeTool=void 0,this.zoom=!1,this.ratioRelation=void 0,this.id=this.params.id,this.saving=!1,void 0===this.id?(this.id=(0,l.genId)(),this.holderId=(0,l.genId)(),this.holderEl=document.createElement("div"),this.holderEl.id=this.holderId,this.holderEl.className="ptro-holder-wrapper",document.body.appendChild(this.holderEl),this.holderEl.innerHTML="<div id='".concat(this.id,'\' class="ptro-holder"></div>'),this.baseEl=this.getElemByIdSafe(this.id)):(this.baseEl=this.getElemByIdSafe(this.id),this.holderEl=null);var B="",y="";this.tools.filter((function(t){return!r.params.hiddenTools.includes(t.name)})).forEach((function(t){var e=(0,l.genId)();t.buttonId=e;var n=t.hotkey?" [".concat(t.hotkey.toUpperCase(),"]"):"",r=t.iconUrl?'<button type="button" aria-label='.concat(t.name,' class="ptro-icon-btn ptro-color-control" title="').concat(t.name,'" ')+'id="'.concat(e,'" >')+'<img width="14" src="'.concat(t.iconUrl,'" alt="',"".concat(t.name),'" /></button>'):'<button type="button" aria-label='.concat(t.name,' class="ptro-icon-btn ptro-color-control" title="').concat((0,u.tr)("tools.".concat(t.name))).concat(n,'" ')+'id="'.concat(e,'" >')+'<i class="ptro-icon ptro-icon-'.concat(t.name,'"></i></button>');t.right?y+=r:B+=r})),this.inserter=d.default.get(this);var x='<div class="ptro-crp-el">'+"".concat(o.default.code()).concat(h.default.code(),"</div>");this.loadedName="",this.doc=document,this.wrapper=this.doc.createElement("div"),this.wrapper.id="".concat(this.id,"-wrapper"),this.wrapper.className="ptro-wrapper",this.wrapper.innerHTML='<div class="ptro-scroller"><div class="ptro-center-table"><div class="ptro-center-tablecell">'+'<canvas id="'.concat(this.id,'-canvas"></canvas>')+'<div class="ptro-substrate"></div>'.concat(x)+"</div></div>"+"</div>".concat(c.default.html()+p.default.html()+f.default.html()+g.default.html(this)+C.default.html(this)+this.inserter.html()),this.baseEl.appendChild(this.wrapper),this.scroller=this.doc.querySelector("#".concat(this.id,"-wrapper .ptro-scroller")),this.bar=this.doc.createElement("div"),this.bar.id="".concat(this.id,"-bar"),this.bar.className="ptro-bar ptro-color-main",this.fileInputId=(0,l.genId)(),this.bar.innerHTML="<div>".concat(B)+'<span class="ptro-tool-controls"></span><span class="ptro-info"></span>'+'<span class="ptro-bar-right">'.concat(y,"</span>")+'<input id="'.concat(this.fileInputId,'" type="file" style="display: none" value="none" accept="image/x-png,image/png,image/gif,image/jpeg" /></div>'),this.isMobile&&(this.bar.style["overflow-x"]="auto"),this.baseEl.appendChild(this.bar);var I=this.doc.createElement("style");if(I.type="text/css",I.innerHTML=this.params.styles,this.baseEl.appendChild(I),this.saveBtn=this.baseEl.querySelector("#".concat(this.toolByName.save.buttonId)),this.toolByName.save.buttonId&&this.saveBtn&&this.saveBtn.setAttribute("disabled","true"),this.body=this.doc.body,this.info=this.doc.querySelector("#".concat(this.id,"-bar .ptro-info")),this.canvas=this.doc.querySelector("#".concat(this.id,"-canvas")),this.ctx=this.canvas.getContext("2d"),this.toolControls=this.doc.querySelector("#".concat(this.id,"-bar .ptro-tool-controls")),this.toolContainer=this.doc.querySelector("#".concat(this.id,"-wrapper .ptro-crp-el")),this.substrate=this.doc.querySelector("#".concat(this.id,"-wrapper .ptro-substrate")),this.zoomHelper=new p.default(this),this.zoomButtonActive=!1,this.select=new o.default(this,(function(t){[r.toolByName.crop,r.toolByName.pixelize].forEach((function(e){r.setToolEnabled(e,t)}))})),this.params.backplateImgUrl){this.tabelCell=this.canvas.parentElement,this.tabelCell.style.backgroundImage="url(".concat(this.params.backplateImgUrl,")"),this.tabelCell.style.backgroundRepeat="no-repeat",this.tabelCell.style.backgroundPosition="center center";var S=new Image;S.onload=function(){r.resize(S.naturalWidth,S.naturalHeight),r.adjustSizeFull(),r.worklog.captureState(),r.tabelCell.style.backgroundSize="".concat(window.getComputedStyle(r.substrate).width," ").concat(window.getComputedStyle(r.substrate).height)},S.src=this.params.backplateImgUrl}this.resizer=new f.default(this),this.settings=new g.default(this),this.primitiveTool=new s.default(this),this.primitiveTool.setShadowOn(this.params.defaultPrimitiveShadowOn),this.primitiveTool.setLineWidth(this.params.defaultLineWidth),this.primitiveTool.setArrowLength(this.params.defaultArrowLength),this.primitiveTool.setEraserWidth(this.params.defaultEraserWidth),this.primitiveTool.setPixelSize(this.params.defaultPixelSize),this.hasUnsaved=!1,this.worklog=new a.default(this,(function(t){r.saveBtn&&!t.initial&&(r.saveBtn.removeAttribute("disabled"),r.hasUnsaved=!0),r.setToolEnabled(r.toolByName.undo,!t.first),r.setToolEnabled(r.toolByName.redo,!t.last),r.params.onChange&&r.params.onChange.call(r,{image:r.imageSaver,operationsDone:r.worklog.current.prevCount,realesedMemoryOperations:r.worklog.clearedCount})})),this.inserter.init(this),this.paintBucket=new v.default(this),this.textTool=new h.default(this),this.filters=new C.default(this),this.colorPicker=new c.default(this,(function(t){r.colorWidgetState[t.target]=t,r.doc.querySelector("#".concat(r.id," .ptro-color-btn[data-id='").concat(t.target,"']")).style["background-color"]=t.alphaColor;var e=(0,c.HexToRGB)(t.palleteColor);void 0!==e&&(t.palleteColor=(0,c.rgbToHex)(e.r,e.g,e.b),"line"===t.target?((0,A.setParam)("activeColor",t.palleteColor),(0,A.setParam)("activeColorAlpha",t.alpha)):"fill"===t.target?((0,A.setParam)("activeFillColor",t.palleteColor),(0,A.setParam)("activeFillColorAlpha",t.alpha)):"bg"===t.target?((0,A.setParam)("backgroundFillColor",t.palleteColor),(0,A.setParam)("backgroundFillColorAlpha",t.alpha)):"stroke"===t.target&&((0,A.setParam)("textStrokeColor",t.palleteColor),(0,A.setParam)("textStrokeColorAlpha",t.alpha)))})),this.defaultTool=this.toolByName[this.params.defaultTool],this.tools.filter((function(t){return-1===r.params.hiddenTools.indexOf(t.name)})).forEach((function(t){r.getBtnEl(t).onclick=function(){if(t!==r.defaultTool||r.activeTool!==t){var e=r.activeTool;r.closeActiveTool(!0),e!==t?(r.setActiveTool(t),r.customEvents.dispatchEvent("changeActiveTool",t)):r.setActiveTool(r.defaultTool)}},r.getBtnEl(t).ontouch=r.getBtnEl(t).onclick})),this.getBtnEl(this.defaultTool).click(),this.imageSaver={asDataURL:function(t,e){var n=t;return void 0===n&&(n=r.loadedImageType?r.loadedImageType:"image/png"),r.getAsUri(n,e)},asBlob:function(t,e){var n=t;void 0===n&&(n=r.loadedImageType?r.loadedImageType:"image/png");for(var i=r.getAsUri(n,e),o=atob(i.split(",")[1]),a=new ArrayBuffer(o.length),l=new Uint8Array(a),s=0;s<o.length;s+=1)l[s]=o.charCodeAt(s);return new Blob([a],{type:n})},getOriginalMimeType:function(){return r.loadedImageType},hasAlphaChannel:function(){for(var t=r.ctx.getImageData(0,0,r.canvas.width,r.canvas.height).data,e=3,n=t.length;e<n;e+=4)if(t[e]<255)return!0;return!1},suggestedFileName:function(t){var e=t;return void 0===e&&(e="png"),"".concat(r.loadedName||"image-".concat((0,l.genId)()),".").concat(e)},getWidth:function(){return r.size.w},getHeight:function(){return r.size.h}},this.initEventHandlers(),this.hide(),this.zoomFactor=1}var e,n,r;return e=t,(n=[{key:"setToolEnabled",value:function(t,e){if(t.buttonId){var n=this.getElemByIdSafe(t.buttonId);e?n.removeAttribute("disabled"):n.setAttribute("disabled","true")}}},{key:"getAsUri",value:function(t,e){var n=e;return void 0===n&&(n=.92),this.canvas.toDataURL(t,n)}},{key:"getBtnEl",value:function(t){return this.getElemByIdSafe(t.buttonId)}},{key:"save",value:function(){var t=this;if(this.saving)return this;this.saving=!0;var e=this.baseEl.querySelector("#".concat(this.toolByName.save.buttonId)),n=this.baseEl.querySelector("#".concat(this.toolByName.save.buttonId," > i"));return this.toolByName.save.buttonId&&e&&e.setAttribute("disabled","true"),this.hasUnsaved=!1,n&&(n.className="ptro-icon ptro-icon-loading ptro-spinning"),void 0!==this.params.saveHandler?this.params.saveHandler(this.imageSaver,(function(e){!0===e&&t.hide(),n&&(n.className="ptro-icon ptro-icon-save"),t.saving=!1})):((0,l.logError)("No saveHandler defined, please check documentation"),n&&(n.className="ptro-icon ptro-icon-save"),this.saving=!1),this}},{key:"close",value:function(){void 0!==this.params.onClose&&this.params.onClose()}},{key:"closeActiveTool",value:function(t){if(void 0!==this.activeTool){void 0!==this.activeTool.close&&this.activeTool.close(),this.toolControls.innerHTML="";var e=this.getBtnEl(this.activeTool);e&&(e.className=this.getBtnEl(this.activeTool).className.replace(" ptro-color-active-control","")),this.activeTool=void 0}!0!==t&&this.setActiveTool(this.defaultTool)}},{key:"handleToolEvent",value:function(t,e){if(this.select.imagePlaced||this.select.area.activated)return this.select[t](e);if(this.activeTool&&this.activeTool.eventListner){var n=this.activeTool.eventListner();if(n[t])return n[t](e)}return!1}},{key:"handleClipCopyEvent",value:function(t){var e=!1,n="image/png";if(t.keyCode===l.KEYS.c&&(t.ctrlKey||t.metaKey))if(this.inserter.waitChoice||this.select.imagePlaced||!this.select.shown)this.canvas.toBlob((function(t){navigator.clipboard.write([new ClipboardItem(I({},n,t))])}),n,1),e=!0;else{var r=this.select.area,i=r.bottoml[0]-r.topl[0],o=r.bottoml[1]-r.topl[1],a=this.doc.createElement("canvas");a.width=i,a.height=o,a.getContext("2d").drawImage(this.canvas,-r.topl[0],-r.topl[1]),a.toBlob((function(t){navigator.clipboard.write([new ClipboardItem(I({},n,t))])}),n,1),e=!0}return e}},{key:"zoomImage",value:function(t,e,n){var r=t.wheelDelta,i=t.clientX,o=t.clientY,a=r;void 0!==e&&(a=e);var l=1;this.size.w>this.wrapper.documentClientWidth&&(l=Math.min(l,this.wrapper.documentClientWidth/this.size.w)),this.size.h>this.wrapper.documentClientHeight&&(l=Math.min(l,this.wrapper.documentClientHeight/this.size.h)),!this.zoom&&this.zoomFactor>l&&(this.zoomFactor=l);var s=.2;void 0!==n&&(s=n),this.zoomFactor+=Math.sign(a)*s,this.zoomFactor<l?(this.zoom=!1,this.zoomFactor=l):this.zoom=!0,this.adjustSizeFull(),this.select.adjustPosition(),this.zoom&&(this.scroller.scrollLeft=this.curCord[0]/this.getScale()-(i-this.wrapper.documentOffsetLeft),this.scroller.scrollTop=this.curCord[1]/this.getScale()-(o-this.wrapper.documentOffsetTop))}},{key:"initEventHandlers",value:function(){var t=this;this.documentHandlers={mousedown:function(e){t.shown&&(!t.worklog.empty||-1===e.target.className.indexOf("ptro-crp-el")&&-1===e.target.className.indexOf("ptro-icon")&&-1===e.target.className.indexOf("ptro-named-btn")||t.clearBackground(),!0!==t.colorPicker.handleMouseDown(e)&&t.handleToolEvent("handleMouseDown",e))},touchstart:function(e){if(1===e.touches.length)e.clientX=e.changedTouches[0].clientX,e.clientY=e.changedTouches[0].clientY,t.documentHandlers.mousedown(e);else if(2===e.touches.length){var n=(0,l.distance)({x:e.touches[0].clientX,y:e.touches[0].clientY},{x:e.touches[1].clientX,y:e.touches[1].clientY});t.lastFingerDist=n}},touchend:function(e){e.clientX=e.changedTouches[0].clientX,e.clientY=e.changedTouches[0].clientY,t.documentHandlers.mouseup(e)},touchmove:function(e){if(1===e.touches.length)e.clientX=e.touches[0].clientX,e.clientY=e.touches[0].clientY,t.documentHandlers.mousemove(e);else if(2===e.touches.length){var n=(0,l.distance)({x:e.touches[0].clientX,y:e.touches[0].clientY},{x:e.touches[1].clientX,y:e.touches[1].clientY}),r={x:(e.touches[0].clientX+e.touches[1].clientX)/2,y:(e.touches[0].clientY+e.touches[1].clientY)/2};e.clientX=r.x,e.clientY=r.y;var i=Math.abs(n-t.lastFingerDist),o=n>t.lastFingerDist?1:-1;t.documentHandlers.wheel(e,o,!0,.001*i),t.lastFingerDist=n,e.stopPropagation(),t.zoomButtonActive||e.preventDefault()}},mousemove:function(e){var n="ptro-crp-el"===e.target.classList[0]||"ptro-bar"===e.target.classList[0];if(t.shown){t.handleToolEvent("handleMouseMove",e),t.colorPicker.handleMouseMove(e),t.zoomHelper.handleMouseMove(e),t.curCord=[e.clientX-t.elLeft()+t.scroller.scrollLeft,e.clientY-t.elTop()+t.scroller.scrollTop];var r=t.getScale();t.curCord=[t.curCord[0]*r,t.curCord[1]*r],void 0!==e.target.tagName&&"input"!==e.target.tagName.toLowerCase()&&"button"!==e.target.tagName.toLowerCase()&&"i"!==e.target.tagName.toLowerCase()&&"select"!==e.target.tagName.toLowerCase()&&!t.zoomButtonActive&&n&&e.preventDefault()}},mouseup:function(e){t.shown&&(t.handleToolEvent("handleMouseUp",e),t.colorPicker.handleMouseUp(e))},wheel:function(e,n,r,i){t.shown&&!t.params.disableWheelZoom&&(void 0!==r?r:e.ctrlKey)&&(t.zoomImage(e,n,i),e.preventD