zkqh-canvas-select-one 2.32.6 → 2.32.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/canvas-select.esm.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* zkqh-canvas-select-one v2.32.
|
|
2
|
+
* zkqh-canvas-select-one v2.32.7
|
|
3
3
|
* 一个用于图片标注的javascript库,基于canvas,简单轻量,支持矩形、多边形、点、折线、圆形、网格、画笔、橡皮擦、文本
|
|
4
4
|
* (c) 2025 heylight
|
|
5
5
|
* Released under the MIT License.
|
|
6
6
|
*/
|
|
7
|
-
var t=function(e,i){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i])},t(e,i)};function e(e,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function s(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(s.prototype=i.prototype,new s)}var i=function(){return i=Object.assign||function(t){for(var e,i=1,s=arguments.length;i<s;i++)for(var a in e=arguments[i])Object.prototype.hasOwnProperty.call(e,a)&&(t[a]=e[a]);return t},i.apply(this,arguments)};function s(t,e){var i="function"==typeof Symbol&&t[Symbol.iterator];if(!i)return t;var s,a,o=i.call(t),r=[];try{for(;(void 0===e||e-- >0)&&!(s=o.next()).done;)r.push(s.value)}catch(t){a={error:t}}finally{try{s&&!s.done&&(i=o.return)&&i.call(o)}finally{if(a)throw a.error}}return r}"function"==typeof SuppressedError&&SuppressedError;var a,o=function(t,e){this.label="",this.coor=[],this.active=!1,this.creating=!1,this.dragging=!1,this.uuid=function(){for(var t=[],e="0123456789abcdef",i=0;i<36;i++){var s=Math.floor(16*Math.random());t[i]=e.slice(s,s+1)}t[14]="4";var a=3&t[19]|8;return t[19]=e.slice(a,a+1),t[8]=t[13]=t[18]=t[23]="-",t.join("")}(),this.index=e,Object.assign(this,t)},r=function(t){function i(e,i,s){var a,o,r,n,h=t.call(this,e,i)||this;return h.type=1,h.rotation=0,h.lineWidth=null!==(a=e.lineWidth)&&void 0!==a?a:s.lineWidth,h.fillStyle=null!==(o=e.fillStyle)&&void 0!==o?o:s.fillStyle,h.strokeStyle=null!==(r=e.strokeStyle)&&void 0!==r?r:s.strokeStyle,h.showRotation=null!==(n=e.showRotation)&&void 0!==n?n:s.showRotation,h}return e(i,t),Object.defineProperty(i.prototype,"ctrlsData",{get:function(){var t=this,e=s(this.coor,2),i=s(e[0],2),a=i[0],o=i[1],r=s(e[1],2),n=r[0],h=r[1],l=(a+n)/2,c=(o+h)/2,d=n-a,u=h-o,v=[[a,o],[a+d/2,o],[n,o],[n,o+u/2],[n,h],[a+d/2,h],[a,h],[a,o+u/2]];return this.showRotation&&v.push([l,o-20,"green"]),0===this.rotation?v:v.map(function(e){var i=s(e,2),a=i[0],o=i[1],r=a-l,n=o-c,h=r*Math.cos(t.rotation)-n*Math.sin(t.rotation),d=r*Math.sin(t.rotation)+n*Math.cos(t.rotation);return[h+l,d+c]})},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"center",{get:function(){var t=s(this.coor,2),e=s(t[0],2),i=e[0],a=e[1],o=s(t[1],2);return[(i+o[0])/2,(a+o[1])/2]},enumerable:!1,configurable:!0}),i}(o),n=function(t){function i(e,i,s){var a,o,r=t.call(this,e,i)||this;return r.type=2,r.fillStyle=null!==(a=e.fillStyle)&&void 0!==a?a:s.fillStyle,r.strokeStyle=null!==(o=e.strokeStyle)&&void 0!==o?o:s.strokeStyle,r}return e(i,t),Object.defineProperty(i.prototype,"ctrlsData",{get:function(){return this.coor.length>2?this.coor:[]},enumerable:!1,configurable:!0}),i}(o),h=function(t){function i(e,i,s){var a,o,r=t.call(this,e,i)||this;return r.type=3,r.fillStyle=null!==(a=e.fillStyle)&&void 0!==a?a:s.fillStyle,r.strokeStyle=null!==(o=e.strokeStyle)&&void 0!==o?o:s.strokeStyle,r}return e(i,t),i}(o),l=function(){function t(){this._eventTree={}}return t.prototype.on=function(t,e){var i=this._eventTree[t];Array.isArray(i)?i.push(e):this._eventTree[t]=[e]},t.prototype.emit=function(t){for(var e=[],i=1;i<arguments.length;i++)e[i-1]=arguments[i];var a=this._eventTree[t];Array.isArray(a)&&a.forEach(function(t){return t.apply(void 0,function(t,e,i){if(i||2===arguments.length)for(var s,a=0,o=e.length;a<o;a++)!s&&a in e||(s||(s=Array.prototype.slice.call(e,0,a)),s[a]=e[a]);return t.concat(s||Array.prototype.slice.call(e))}([],s(e),!1))})},t.prototype.off=function(t,e){var i=this._eventTree[t],s=i.find(function(t){return t===e});Array.isArray(i)&&s&&i.splice(s,1)},t}(),c=function(t){function i(e,i,s){var a,o=t.call(this,e,i)||this;return o.type=4,o.strokeStyle=null!==(a=e.strokeStyle)&&void 0!==a?a:s.strokeStyle,o}return e(i,t),Object.defineProperty(i.prototype,"ctrlsData",{get:function(){return this.coor.length>1?this.coor:[]},enumerable:!1,configurable:!0}),i}(o),d=function(t){function i(e,i,s){var a,o,r=t.call(this,e,i)||this;return r.type=5,r.radius=0,r.radius=e.radius||r.radius,r.fillStyle=null!==(a=e.fillStyle)&&void 0!==a?a:s.fillStyle,r.strokeStyle=null!==(o=e.strokeStyle)&&void 0!==o?o:s.strokeStyle,r}return e(i,t),Object.defineProperty(i.prototype,"ctrlsData",{get:function(){var t=s(this.coor,2),e=t[0],i=t[1];return[[e,i-this.radius],[e+this.radius,i],[e,i+this.radius],[e-this.radius,i]]},enumerable:!1,configurable:!0}),i}(o),u=function(t){function i(e,i,s){var a,o,r=t.call(this,e,i)||this;return r.type=6,r.row=1,r.col=1,r.selected=[],r.row=e.row>0?e.row:r.row,r.col=e.col>0?e.col:r.col,r.selected=Array.isArray(e.selected)?e.selected:[],r.fillStyle=null!==(a=e.fillStyle)&&void 0!==a?a:s.fillStyle,r.strokeStyle=null!==(o=e.strokeStyle)&&void 0!==o?o:s.strokeStyle,r}return e(i,t),Object.defineProperty(i.prototype,"ctrlsData",{get:function(){var t=s(this.coor,2),e=s(t[0],2),i=e[0],a=e[1],o=s(t[1],2),r=o[0],n=o[1];return[[i,a],[i+(r-i)/2,a],[r,a],[r,a+(n-a)/2],[r,n],[i+(r-i)/2,n],[i,n],[i,a+(n-a)/2]]},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"gridRects",{get:function(){for(var t=s(this.coor,2),e=s(t[0],2),i=e[0],a=e[1],o=s(t[1],2),n=o[0],h=o[1],l=this,c=l.row,d=l.col,u=l.strokeStyle,v=l.fillStyle,f=l.active,p=l.creating,y=l.lineWidth,g=(n-i)/this.col,S=(h-a)/this.row,x=[],I=0;I<c;I++)for(var m=0;m<d;m++){var b=[i+m*g,a+I*S],M=new r({coor:[b,[b[0]+g,b[1]+S]],strokeStyle:u,fillStyle:v,active:f,creating:p,lineWidth:y},I*d+m,{});x.push(M)}return x},enumerable:!1,configurable:!0}),i}(o),v="2.32.6",f=function(t){function i(e,i,s){var a,o,r=t.call(this,e,i)||this;return r.type=7,r.coor=[],r.brushSize=null!==(a=e.brushSize)&&void 0!==a?a:s.brushSize,r.brushStokeStyle=null!==(o=e.brushStokeStyle)&&void 0!==o?o:s.brushStokeStyle,r.coor=e.coor,r}return e(i,t),i}(o),p=function(t){function i(e,i,s){var a,o=t.call(this,e,i)||this;return o.type=8,o.coor=[],o.eraserSize=null!==(a=e.eraserSize)&&void 0!==a?a:s.eraserSize,o.coor=e.coor,o}return e(i,t),i}(o),y=function(t){function i(e,i,s){var a,o,r,n=t.call(this,e,i)||this;return n.type=9,n.radiusX=0,n.radiusY=0,n.rotation=0,n.radiusX=e.radiusX||n.radiusX,n.radiusY=e.radiusY||n.radiusY,n.rotation=e.rotation||n.rotation,n.fillStyle=null!==(a=e.fillStyle)&&void 0!==a?a:s.fillStyle,n.strokeStyle=null!==(o=e.strokeStyle)&&void 0!==o?o:s.strokeStyle,n.lineWidth=null!==(r=e.lineWidth)&&void 0!==r?r:s.lineWidth,n}return e(i,t),Object.defineProperty(i.prototype,"ctrlsData",{get:function(){var t=s(this.coor,2),e=t[0],i=t[1];return[[e,i-this.radiusY],[e+this.radiusX,i],[e,i+this.radiusY],[e-this.radiusX,i]]},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"boundingBox",{get:function(){var t=s(this.coor,2),e=t[0],i=t[1];return[[e-this.radiusX,i-this.radiusY],[e+this.radiusX,i+this.radiusY]]},enumerable:!1,configurable:!0}),i.prototype.isPointInEllipse=function(t,e){var i=s(this.coor,2),a=i[0],o=i[1];if(0!==this.rotation){var r,n,h=Math.cos(-this.rotation),l=Math.sin(-this.rotation),c=(r=t-a)*h-(n=e-o)*l,d=r*l+n*h;return c*c/(this.radiusX*this.radiusX)+d*d/(this.radiusY*this.radiusY)<=1}return(r=(t-a)/this.radiusX)*r+(n=(e-o)/this.radiusY)*n<=1},i}(o),g=function(t){function i(e,i,s){var a,o,r,n,h,l,c,d,u,v,f,p,y,g,S,x,I,m,b,M,E,T,w,H,k=t.call(this,e,i)||this;return k.type=10,k.text="",k.fontSize=14,k.fontFamily="sans-serif",k.textColor="#000000",k.backgroundColor="transparent",k.borderColor="transparent",k.borderWidth=0,k.borderRadius=0,k.padding=4,k.textAlign="left",k.textBaseline="top",k.text=null!==(a=e.text)&&void 0!==a?a:"",k.fontSize=null!==(r=null!==(o=e.fontSize)&&void 0!==o?o:s.fontSize)&&void 0!==r?r:k.fontSize,k.fontFamily=null!==(h=null!==(n=e.fontFamily)&&void 0!==n?n:s.fontFamily)&&void 0!==h?h:k.fontFamily,k.textColor=null!==(d=null!==(c=null!==(l=e.textColor)&&void 0!==l?l:s.textColor)&&void 0!==c?c:s.strokeStyle)&&void 0!==d?d:k.textColor,k.backgroundColor=null!==(v=null!==(u=e.backgroundColor)&&void 0!==u?u:s.backgroundColor)&&void 0!==v?v:k.backgroundColor,k.borderColor=null!==(p=null!==(f=e.borderColor)&&void 0!==f?f:s.borderColor)&&void 0!==p?p:k.borderColor,k.borderWidth=null!==(g=null!==(y=e.borderWidth)&&void 0!==y?y:s.borderWidth)&&void 0!==g?g:k.borderWidth,k.borderRadius=null!==(x=null!==(S=e.borderRadius)&&void 0!==S?S:s.borderRadius)&&void 0!==x?x:k.borderRadius,k.padding=null!==(m=null!==(I=e.padding)&&void 0!==I?I:s.padding)&&void 0!==m?m:k.padding,k.textAlign=null!==(M=null!==(b=e.textAlign)&&void 0!==b?b:s.textAlign)&&void 0!==M?M:k.textAlign,k.textBaseline=null!==(T=null!==(E=e.textBaseline)&&void 0!==E?E:s.textBaseline)&&void 0!==T?T:k.textBaseline,k.strokeStyle=null!==(w=e.strokeStyle)&&void 0!==w?w:s.strokeStyle,k.fillStyle=null!==(H=e.fillStyle)&&void 0!==H?H:s.fillStyle,k}return e(i,t),Object.defineProperty(i.prototype,"ctrlsData",{get:function(){if(this.coor.length<2)return[];var t=s(this.coor,2),e=s(t[0],2),i=e[0],a=e[1],o=s(t[1],2),r=o[0],n=o[1],h=(i+r)/2,l=(a+n)/2;return[[i,a],[h,a],[r,a],[r,l],[r,n],[h,n],[i,n],[i,l]]},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"width",{get:function(){if(this.coor.length<2)return 0;var t=s(this.coor,2),e=s(t[0],1)[0],i=s(t[1],1)[0];return Math.abs(i-e)},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"height",{get:function(){if(this.coor.length<2)return 0;var t=s(this.coor,2),e=s(t[0],2)[1],i=s(t[1],2)[1];return Math.abs(i-e)},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"center",{get:function(){if(this.coor.length<2)return[0,0];var t=s(this.coor,2),e=s(t[0],2),i=e[0],a=e[1],o=s(t[1],2);return[(i+o[0])/2,(a+o[1])/2]},enumerable:!1,configurable:!0}),i}(o);!function(t){t[t.None=0]="None",t[t.Rect=1]="Rect",t[t.Polygon=2]="Polygon",t[t.Dot=3]="Dot",t[t.Line=4]="Line",t[t.Circle=5]="Circle",t[t.Grid=6]="Grid",t[t.Brush=7]="Brush",t[t.Eraser=8]="Eraser",t[t.Ellipse=9]="Ellipse",t[t.Text=10]="Text"}(a||(a={}));var S=function(t){function o(e,i){var s=t.call(this)||this;s.version=v,s.lock=!1,s.readonly=!1,s.MIN_WIDTH=10,s.MIN_HEIGHT=10,s.MIN_RADIUS=5,s.MAX_POLYGON_POINTS=6,s.strokeStyle="#0f0",s.fillStyle="rgba(0, 0, 255, 0.1)",s.lineWidth=1,s.activeStrokeStyle="#f00",s.activeFillStyle="rgba(0, 0, 255, 0.1)",s.ctrlStrokeStyle="#000",s.ctrlFillStyle="#fff",s.ctrlRadius=13,s.hideLabel=!1,s.labelFillStyle="#fff",s.labelFont="10px sans-serif",s.textFillStyle="#000",s.labelMaxLen=10,s.WIDTH=0,s.maxPolygonPoint=6,s.HEIGHT=0,s.crossX=new c({},0,{}),s.crossY=new c({},1,{}),s.crossStroke="#ff0",s.showCross=!1,s.showRotation=!1,s.dataset=[],s.isMagnifierVisible=!1,s.magnifierPosition="auto",s.remmber=[],s.mouse=[0,0],s.remmberOrigin=[0,0],s.createType=a.None,s.ctrlIndex=-1,s.image=new Image,s.IMAGE_ORIGIN_WIDTH=0,s.IMAGE_WIDTH=0,s.IMAGE_ORIGIN_HEIGHT=0,s.IMAGE_HEIGHT=0,s.originX=0,s.originY=0,s.scaleStep=0,s.scrollZoom=!0,s.timer=null,s.dblTouch=300,s.dblTouchStore=0,s.alpha=!0,s.focusMode=!1,s.scaleTouchStore=0,s.isTouch2=!1,s.isMobile=navigator.userAgent.includes("Mobile"),s.labelUp=!1,s.isCtrlKey=!1,s.ctrlCode="ControlLeft",s.gridMenuEnable=!0,s.gridSelectedFillStyle="rgba(255, 255, 0, 0.6)",s.brushSize=20,s.brushStokeStyle="#f00",s.eraserSize=20,s.position=[0,0],s.handleLoad=s.handleLoad.bind(s),s.handleContextmenu=s.handleContextmenu.bind(s),s.handleMousewheel=s.handleMousewheel.bind(s),s.handleMouseDown=s.handleMouseDown.bind(s),s.handleMouseMove=s.handleMouseMove.bind(s),s.handleMouseUp=s.handleMouseUp.bind(s),s.handleDblclick=s.handleDblclick.bind(s),s.handleKeyup=s.handleKeyup.bind(s),s.handleKeydown=s.handleKeydown.bind(s);var o="string"==typeof e?document.querySelector(e):e;return o instanceof HTMLCanvasElement?(s.canvas=o,s.offScreen=document.createElement("canvas"),s.initSetting(),s.initEvents(),i&&s.setImage(i)):console.warn("HTMLCanvasElement is required!"),s.crossX.strokeStyle=s.crossStroke,s.crossY.strokeStyle=s.crossStroke,s}return e(o,t),Object.defineProperty(o.prototype,"activeShape",{get:function(){return this.dataset.find(function(t){return t.active})||{}},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"scale",{get:function(){return this.IMAGE_ORIGIN_WIDTH&&this.IMAGE_WIDTH?this.IMAGE_WIDTH/this.IMAGE_ORIGIN_WIDTH:1},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"imageMin",{get:function(){return Math.min(this.IMAGE_WIDTH,this.IMAGE_HEIGHT)},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"imageOriginMax",{get:function(){return Math.max(this.IMAGE_ORIGIN_WIDTH,this.IMAGE_ORIGIN_HEIGHT)},enumerable:!1,configurable:!0}),o.prototype.createMagnifierCanvas=function(){this.isMagnifierVisible&&(this.magnifierCanvas=this.magnifierCanvas||document.createElement("canvas"),this.magnifierCtx=this.magnifierCanvas&&this.magnifierCanvas.getContext("2d",{willReadFrequently:!0}),this.magnifierCanvas.style.position="fixed",this.magnifierCanvas.style.pointerEvents="none",this.magnifierCanvas.style.zIndex="1000",this.magnifierCanvas.style.border="1px solid black",this.magnifierCanvas.style.borderRadius="50%",this.magnifierCanvas.style.width="100px",this.magnifierCanvas.style.height="100px",document.body.appendChild(this.magnifierCanvas))},o.prototype.createMagnifier=function(t,e){this.magnifierCanvas?this.updateMagnifier(t,e):this.createMagnifierCanvas()},o.prototype.updateMagnifier=function(t,e){var i,a;if(this.canvas&&this.magnifierCanvas&&this.magnifierCtx){var o=100,r=window.devicePixelRatio||1;if(this.magnifierCanvas.width=o,this.magnifierCanvas.height=o,this.magnifierCtx.clearRect(0,0,o,o),this.magnifierPosition&&2===this.magnifierPosition.length){var n=s(this.magnifierPosition,2),h=n[0],l=n[1];this.magnifierCanvas.style.left="".concat(h,"px"),this.magnifierCanvas.style.top="".concat(l,"px")}else this.magnifierCanvas.style.left="".concat(t+10,"px"),this.magnifierCanvas.style.top="".concat(e+10,"px");var c=this.getImageDataFromCanvas(this.canvas,[t*r-50,e*r-50,o,o]),d=null===(i=this.magnifierCanvas.getContext("2d",{willReadFrequently:!0}))||void 0===i?void 0:i.createImageData(this.magnifierCanvas.width,this.magnifierCanvas.height);if(d&&c){for(var u=0,v=0;v<o;v+=1)for(var f=0;f<o;f+=1){for(var p=v;p<v+1;p++)for(var y=f;y<f+1;y++){var g=4*(p*o+y);d.data[g]=c.data[u],d.data[g+1]=c.data[u+1],d.data[g+2]=c.data[u+2],d.data[g+3]=c.data[u+3]}u+=4}null===(a=this.magnifierCanvas.getContext("2d",{willReadFrequently:!0}))||void 0===a||a.putImageData(d,0,0),this.magnifierCtx.strokeStyle="rgba(0, 0, 0, 0.5)",this.magnifierCtx.lineWidth=2,this.magnifierCtx.strokeRect(0,0,o,o)}}},o.prototype.destroyMagnifier=function(){this.magnifierCanvas&&(this.magnifierCanvas.remove(),this.magnifierCanvas=void 0,this.magnifierCtx=void 0)},o.prototype.getImageDataFromCanvas=function(t,e){var i=s(e,4),a=i[0],o=i[1],r=i[2],n=i[3],h=t.getContext("2d",{willReadFrequently:!0});return null==h?void 0:h.getImageData(a,o,r,n)},o.prototype.mergeEvent=function(t){var e,s,a=0,o=0,r=0,n=0;if(this.isMobile&&t.touches){var h=t.touches[0],l=h.clientX,c=h.clientY,d=t.target.getBoundingClientRect(),u=d.left,v=d.top;if(a=Math.round(l-u),o=Math.round(c-v),2===(null===(e=t.touches)||void 0===e?void 0:e.length)){var f=t.touches[1]||{},p=f.clientX,y=void 0===p?0:p,g=f.clientY,S=void 0===g?0:g;r=Math.round(Math.abs((y-l)/2+l)-u),n=Math.round(Math.abs((S-c)/2+c)-v)}else 1===(null===(s=t.touches)||void 0===s?void 0:s.length)&&(r=Math.round(l-u),n=Math.round(c-v))}else a=t.offsetX,o=t.offsetY;return i(i({},t),{mouseX:a,mouseY:o,mouseCX:r,mouseCY:n})},o.prototype.handleLoad=function(){this.emit("load",this.image.src),this.IMAGE_ORIGIN_WIDTH=this.IMAGE_WIDTH=this.image.width,this.IMAGE_ORIGIN_HEIGHT=this.IMAGE_HEIGHT=this.image.height,this.fitZoom()},o.prototype.handleContextmenu=function(t){t.preventDefault(),this.lock},o.prototype.handleMousewheel=function(t){if(t.preventDefault(),t.stopPropagation(),!this.lock&&this.scrollZoom){var e=this.mergeEvent(t),i=e.mouseX,s=e.mouseY;this.mouse=[i,s],this.setScale(t.deltaY<0,!0)}},o.prototype.handleMouseDown=function(t){var e,i,o,l=this;if(t.stopPropagation(),!this.lock){var v=this.mergeEvent(t),y=v.mouseX,S=v.mouseY,x=v.mouseCX,I=v.mouseCY,m=Math.round(y/this.scale),b=Math.round(S/this.scale);if(this.mouse=this.isMobile&&2===(null===(e=t.touches)||void 0===e?void 0:e.length)?[x,I]:[y,S],this.remmberOrigin=[y-this.originX,S-this.originY],!this.isMobile&&1===t.buttons||this.isMobile&&1===(null===(i=t.touches)||void 0===i?void 0:i.length)){var M=this.activeShape.ctrlsData||[];if(this.ctrlIndex=M.findIndex(function(t){return l.isPointInCircle(l.mouse,t,l.ctrlRadius)}),this.ctrlIndex>-1&&!this.readonly){var E=s(M[this.ctrlIndex],2),T=E[0],w=E[1];this.activeShape.type===a.Polygon&&this.activeShape.coor.length>2&&0===this.ctrlIndex&&this.handleDblclick(t),this.remmber=[[m-T,b-w]]}else if(this.isInBackground(t)){var H=Math.round(m-this.originX/this.scale),k=Math.round(b-this.originY/this.scale);if(this.activeShape.creating&&!this.readonly){if([a.Polygon,a.Line].includes(this.activeShape.type)){var C=s(this.activeShape.coor[this.activeShape.coor.length-1],2),G=C[0],_=C[1];G!==m&&_!==b&&(this.activeShape.coor.push([H,k]),this.activeShape.type===a.Polygon&&this.MAX_POLYGON_POINTS&&this.activeShape.coor.length>=this.MAX_POLYGON_POINTS&&this.handleDblclick(t),this.activeShape.type===a.Line&&this.activeShape.coor.length>=2&&this.handleDblclick(t))}}else if(this.createType===a.None||this.readonly||this.isCtrlKey){var D=s(this.hitOnShape(this.mouse),2),W=D[0],P=D[1];if(W>-1&&P){if(P.dragging=!0,this.dataset.forEach(function(t,e){return t.active=e===W}),this.dataset.splice(W,1),this.dataset.push(P),!this.readonly)if(this.remmber=[],[a.Dot,a.Circle].includes(P.type)){var R=s(P.coor,2);G=R[0],_=R[1];this.remmber=[[m-G,b-_]]}else P.coor.forEach(function(t){l.remmber.push([m-t[0],b-t[1]])});this.emit("select",P)}else this.activeShape.active=!1,this.dataset.sort(function(t,e){return t.index-e.index}),this.emit("select",null)}else{var O=void 0,A=[H,k];switch(this.createType){case a.Rect:(O=new r({coor:[A,A]},this.dataset.length,this)).creating=!0;break;case a.Polygon:(O=new n({coor:[A]},this.dataset.length,this)).creating=!0;break;case a.Dot:O=new h({coor:A},this.dataset.length,this),this.emit("add",O);break;case a.Line:(O=new c({coor:[A]},this.dataset.length,this)).creating=!0;break;case a.Circle:(O=new d({coor:A},this.dataset.length,this)).creating=!0;break;case a.Grid:(O=new u({coor:[A,A]},this.dataset.length,this)).creating=!0;break;case a.Brush:(O=new f({coor:[A]},this.dataset.length,this)).creating=!0;break;case a.Eraser:(O=new p({coor:[A]},this.dataset.length,this)).creating=!0;break;case a.Text:(O=new g({coor:[A,A]},this.dataset.length,this)).creating=!0}O&&(this.dataset.forEach(function(t){t.active=!1}),O.active=!0,this.dataset.push(O))}this.update()}}else if(!this.isMobile&&2===t.buttons||this.isMobile&&3===(null===(o=t.touches)||void 0===o?void 0:o.length)&&!this.readonly){if([a.Grid].includes(this.activeShape.type)&&this.gridMenuEnable){var L=prompt("x 行 y 列 x,y",[this.activeShape.row,this.activeShape.col].join(","));if("string"==typeof L){var N=s(L.split(","),2),X=N[0],Y=N[1];/^[1-9]\d*$/.test(X)&&/^[1-9]\d*$/.test(Y)&&(this.activeShape.row=Number(X),this.activeShape.col=Number(Y),this.update())}}this.emit("contextmenu",t)}}},o.prototype.handleMouseMove=function(t){var e,i,o,r;if(t.stopPropagation(),!this.lock){var n=this.mergeEvent(t),h=n.mouseX,l=n.mouseY,c=n.mouseCX,d=n.mouseCY,u=Math.round(h/this.scale),v=Math.round(l/this.scale);!this.isCtrlKey&&this.isInBackground(t)?(this.crossX.coor=[[u-this.originX/this.scale,0],[u-this.originX/this.scale,this.image.height]],this.crossY.coor=[[0,v-this.originY/this.scale],[this.image.width,v-this.originY/this.scale]]):(this.crossX.coor=[],this.crossY.coor=[]),this.mouse=this.isMobile&&2===(null===(e=t.touches)||void 0===e?void 0:e.length)?[c,d]:[h,l];var f=Math.round(u-this.originX/this.scale),p=Math.round(v-this.originY/this.scale);if(this.position=[f,p],(!this.isMobile&&1===t.buttons||this.isMobile&&1===(null===(i=t.touches)||void 0===i?void 0:i.length))&&this.activeShape.type){if(this.ctrlIndex>-1&&this.remmber.length&&(this.isInBackground(t)||this.activeShape.type===a.Circle)){var y=s(this.remmber,1),g=s(y[0],2),S=g[0],x=g[1];if([a.Rect,a.Grid].includes(this.activeShape.type))if(8===this.ctrlIndex){var I=s(this.activeShape.center,2),m=u-S-I[0],b=v-x-I[1];this.activeShape.rotation=Math.atan2(b,m)+Math.PI/2}else{var M=s(this.activeShape.coor,2),E=s(M[0],2),T=E[0],w=E[1],H=s(M[1],2),k=H[0],C=H[1],G=[];switch(this.ctrlIndex){case 0:G=[[u-S,v-x],[k,C]];break;case 1:G=[[T,v-x],[k,C]];break;case 2:G=[[T,v-x],[u-S,C]];break;case 3:G=[[T,w],[u-S,C]];break;case 4:G=[[T,w],[u-S,v-x]];break;case 5:G=[[T,w],[k,v-x]];break;case 6:G=[[u-S,w],[k,v-x]];break;case 7:G=[[u-S,w],[k,C]]}var _=s(G,2),D=s(_[0],2),W=D[0],P=D[1],R=s(_[1],2),O=R[0],A=R[1];(W<0||O<0||P<0||A<0||O>this.IMAGE_ORIGIN_WIDTH||A>this.IMAGE_ORIGIN_HEIGHT)&&(W<0&&(W=0),O<0&&(O=0),P<0&&(P=0),A<0&&(A=0),O>this.IMAGE_ORIGIN_WIDTH&&(O=this.IMAGE_ORIGIN_WIDTH),A>this.IMAGE_ORIGIN_HEIGHT&&(A=this.IMAGE_ORIGIN_HEIGHT)),O-W>=this.MIN_WIDTH&&A-P>=this.MIN_HEIGHT?this.activeShape.coor=[[W,P],[O,A]]:this.emit("warn","Width cannot be less than ".concat(this.MIN_WIDTH,",Height cannot be less than").concat(this.MIN_HEIGHT,"。"))}else if([a.Polygon,a.Line].includes(this.activeShape.type)){var L=[f,p];this.activeShape.coor.splice(this.ctrlIndex,1,L)}else if(this.activeShape.type===a.Circle){var N=Math.round(u-this.originX/this.scale)-this.activeShape.coor[0];N>=this.MIN_RADIUS&&(this.activeShape.radius=N)}if(this.isMagnifierVisible){var X=s(this.isMobile?[c,d]:[h,l],2),Y=X[0],F=X[1];this.createMagnifier(Y,F)}}else if(this.activeShape.dragging&&!this.readonly){if(this.isMagnifierVisible&&3===this.activeShape.type){var B=s(this.isMobile?[c,d]:[h,l],2);Y=B[0],F=B[1];this.createMagnifier(Y,F)}G=[];var j=!0,z=this.IMAGE_ORIGIN_WIDTH||this.WIDTH,K=this.IMAGE_ORIGIN_HEIGHT||this.HEIGHT;if([a.Dot,a.Circle].includes(this.activeShape.type)){var q=s(this.remmber[0],2),U=q[0];x=v-q[1];((S=u-U)<0||S>z||x<0||x>K)&&(j=!1),G=[S,x]}else for(var J=0;J<this.activeShape.coor.length;J++){var V=this.remmber[J];S=u-V[0],x=v-V[1];(S<0||S>z||x<0||x>K)&&(j=!1),G.push([S,x])}j&&(this.activeShape.coor=G)}else if(this.activeShape.creating&&this.isInBackground(t))if([a.Rect,a.Grid].includes(this.activeShape.type))this.activeShape.coor.splice(1,1,[f,p]);else if(this.activeShape.type===a.Circle){var Z=s(this.activeShape.coor,2),$=(T=Z[0],w=Z[1],Math.sqrt(Math.pow(T-f,2)+Math.pow(w-p,2)));this.activeShape.radius=$}else[a.Brush,a.Eraser].includes(this.activeShape.type)&&this.activeShape.coor.push([f,p]);this.update()}else if([a.Polygon,a.Line].includes(this.activeShape.type)&&this.activeShape.creating)this.update();else if(!this.isMobile&&2===t.buttons&&3===t.which||this.isMobile&&1===(null===(o=t.touches)||void 0===o?void 0:o.length)&&!this.isTouch2)this.originX=Math.round(h-this.remmberOrigin[0]),this.originY=Math.round(l-this.remmberOrigin[1]),this.update();else if(this.isMobile&&2===(null===(r=t.touches)||void 0===r?void 0:r.length)){this.isTouch2=!0;var Q=t.touches[0],tt=t.touches[1],et=this.scaleTouchStore;this.scaleTouchStore=Math.abs((tt.clientX-Q.clientX)*(tt.clientY-Q.clientY)),this.setScale(this.scaleTouchStore>et,!0)}else this.isCtrlKey||this.update()}},o.prototype.handleMouseUp=function(t){var e;if(t.stopPropagation(),!this.lock){if(this.destroyMagnifier(),this.isMobile){if(0===(null===(e=t.touches)||void 0===e?void 0:e.length)&&(this.isTouch2=!1),Date.now()-this.dblTouchStore<this.dblTouch)return void this.handleDblclick(t);this.dblTouchStore=Date.now()}if(this.remmber=[],this.activeShape.type!==a.None&&!this.isCtrlKey&&(this.activeShape.dragging=!1,this.activeShape.creating)){if([a.Rect,a.Grid].includes(this.activeShape.type)){var i=s(this.activeShape.coor,2),o=s(i[0],2),r=o[0],n=o[1],h=s(i[1],2),l=h[0],c=h[1];Math.abs(r-l)<this.MIN_WIDTH||Math.abs(n-c)<this.MIN_HEIGHT?(this.dataset.pop(),this.emit("warn","Width cannot be less than ".concat(this.MIN_WIDTH,",Height cannot be less than ").concat(this.MIN_HEIGHT))):(this.activeShape.coor=[[Math.min(r,l),Math.min(n,c)],[Math.max(r,l),Math.max(n,c)]],this.activeShape.creating=!1,this.emit("add",this.activeShape))}else this.activeShape.type===a.Circle?this.activeShape.radius<this.MIN_RADIUS?(this.dataset.pop(),this.emit("warn","Radius cannot be less than ".concat(this.MIN_WIDTH))):(this.activeShape.creating=!1,this.emit("add",this.activeShape)):[a.Brush,a.Eraser].includes(this.activeShape.type)&&(this.activeShape.creating=!1,this.emit("add",this.activeShape));this.update()}}},o.prototype.handleDblclick=function(t){var e=this;if(t.stopPropagation(),!this.lock)if([a.Polygon,a.Line].includes(this.activeShape.type)){var i=this.activeShape.type===a.Polygon&&this.activeShape.coor.length>2,s=this.activeShape.type===a.Line&&this.activeShape.coor.length>1,o=this.activeShape.type===a.Polygon&&this.activeShape.coor.length>=this.MAX_POLYGON_POINTS,r=this.activeShape.type===a.Line&&this.activeShape.coor.length>=2;(i||s||o||r)&&(this.emit("add",this.activeShape),this.activeShape.creating=!1,this.update())}else[a.Grid].includes(this.activeShape.type)&&this.activeShape.active&&(this.activeShape.gridRects.forEach(function(t){if(e.isPointInRect(e.mouse,t.coor)){var i=e.activeShape.selected.findIndex(function(e){return t.index===e});i>-1?e.activeShape.selected.splice(i,1):e.activeShape.selected.push(t.index)}}),this.update())},o.prototype.handleKeydown=function(t){t.code===this.ctrlCode&&(this.isCtrlKey=!0)},o.prototype.handleKeyup=function(t){if(t.code===this.ctrlCode&&(this.isCtrlKey=!1),!this.lock&&document.activeElement===document.body&&!this.readonly&&this.activeShape.type)if([a.Polygon,a.Line].includes(this.activeShape.type)&&"Escape"===t.key){var e=this.activeShape.type===a.Polygon&&this.activeShape.coor.length>=this.MAX_POLYGON_POINTS,i=this.activeShape.type===a.Line&&this.activeShape.coor.length>=2;this.activeShape.coor.length>1&&this.activeShape.creating&&!e&&!i?this.activeShape.coor.pop():this.deleteByIndex(this.activeShape.index),this.update()}else"Backspace"===t.key&&this.deleteByIndex(this.activeShape.index)},o.prototype.initSetting=function(){var t;if(this.canvas&&this.offScreen){var e=window.devicePixelRatio||1;this.image.crossOrigin="anonymous",this.canvas.style.userSelect="none",this.ctx=this.ctx||this.canvas.getContext("2d",{alpha:this.alpha}),this.WIDTH=this.canvas.clientWidth,this.HEIGHT=Math.round(this.canvas.clientHeight),this.canvas.width=this.WIDTH*e,this.canvas.height=this.HEIGHT*e,this.canvas.style.width=this.WIDTH+"px",this.canvas.style.height=this.HEIGHT+"px",this.offScreen.width=this.WIDTH,this.offScreen.height=this.HEIGHT,this.offScreenCtx=this.offScreenCtx||this.offScreen.getContext("2d",{willReadFrequently:!0}),null===(t=this.ctx)||void 0===t||t.scale(e,e)}},o.prototype.initEvents=function(){this.canvas&&(this.image.addEventListener("load",this.handleLoad),this.canvas.addEventListener("touchstart",this.handleMouseDown),this.canvas.addEventListener("touchmove",this.handleMouseMove),this.canvas.addEventListener("touchend",this.handleMouseUp),this.canvas.addEventListener("contextmenu",this.handleContextmenu),this.canvas.addEventListener("mousewheel",this.handleMousewheel),this.canvas.addEventListener("wheel",this.handleMousewheel),this.canvas.addEventListener("mousedown",this.handleMouseDown),this.canvas.addEventListener("mousemove",this.handleMouseMove),this.canvas.addEventListener("mouseup",this.handleMouseUp),this.canvas.addEventListener("dblclick",this.handleDblclick),document.body.addEventListener("keydown",this.handleKeydown,!0),document.body.addEventListener("keyup",this.handleKeyup,!0))},o.prototype.setImage=function(t){"string"==typeof t?this.image.src=t:(this.image=t,this.image.crossOrigin="anonymous",this.image.complete?this.handleLoad():this.image.addEventListener("load",this.handleLoad))},o.prototype.setData=function(t){var e=this;setTimeout(function(){var i=[];t.forEach(function(t,s){if(Object.prototype.toString.call(t).includes("Object")){var o=void 0;switch(t.type){case a.Rect:o=new r(t,s,e);break;case a.Polygon:o=new n(t,s,e);break;case a.Dot:o=new h(t,s,e);break;case a.Line:o=new c(t,s,e);break;case a.Circle:o=new d(t,s,e);break;case a.Grid:o=new u(t,s,e);break;case a.Brush:o=new f(t,s,e);break;case a.Eraser:o=new p(t,s,e);break;case a.Ellipse:o=new y(t,s,e);break;case a.Text:o=new g(t,s,e);break;default:console.warn("Invalid shape",t)}[a.Rect,a.Polygon,a.Dot,a.Line,a.Circle,a.Grid,a.Brush,a.Eraser,a.Ellipse,a.Text].includes(t.type)&&o&&i.push(o)}else console.warn("Shape must be an enumerable Object.",t)}),e.dataset=i,e.update()})},o.prototype.hitOnShape=function(t){var e,i=-1;console.log("hitOnShape",this.ctrlRadius);for(var s=this.dataset.length-1;s>-1;s--){var o=this.dataset[s];if(!o.hide&&(o.type===a.Dot&&this.isPointInCircle(t,o.coor,this.ctrlRadius)||o.type===a.Circle&&this.isPointInCircle(t,o.coor,o.radius*this.scale)||o.type===a.Rect&&this.isPointInRect(t,o.coor)||o.type===a.Polygon&&this.isPointInPolygon(t,o.coor)||o.type===a.Line&&this.isPointInLine(t,o.coor)||o.type===a.Grid&&this.isPointInRect(t,o.coor)||o.type===a.Text&&this.isPointInRect(t,o.coor))){if(this.focusMode&&!o.active)continue;i=s,e=o;break}}return[i,e]},o.prototype.isInBackground=function(t){var e=this.mergeEvent(t),i=e.mouseX,s=e.mouseY;return i>=this.originX&&s>=this.originY&&i<=this.originX+this.IMAGE_ORIGIN_WIDTH*this.scale&&s<=this.originY+this.IMAGE_ORIGIN_HEIGHT*this.scale},o.prototype.isPointInRect=function(t,e){var i=this,a=s(t,2),o=a[0],r=a[1],n=s(e.map(function(t){return t.map(function(t){return t*i.scale})}),2),h=s(n[0],2),l=h[0],c=h[1],d=s(n[1],2),u=d[0],v=d[1];return l+this.originX<=o&&o<=u+this.originX&&c+this.originY<=r&&r<=v+this.originY},o.prototype.isPointInPolygon=function(t,e){var i=this;if(!this.offScreenCtx)return!1;this.offScreenCtx.save(),this.offScreenCtx.clearRect(0,0,this.WIDTH,this.HEIGHT),this.offScreenCtx.translate(this.originX,this.originY),this.offScreenCtx.beginPath(),e.forEach(function(t,e){var a,o,r=s(t.map(function(t){return Math.round(t*i.scale)}),2),n=r[0],h=r[1];0===e?null===(a=i.offScreenCtx)||void 0===a||a.moveTo(n,h):null===(o=i.offScreenCtx)||void 0===o||o.lineTo(n,h)}),this.offScreenCtx.closePath(),this.offScreenCtx.fill();var a=this.offScreenCtx.getImageData(0,0,this.WIDTH,this.HEIGHT),o=(t[1]-1)*this.WIDTH*4+4*t[0];return this.offScreenCtx.restore(),0!==a.data[o+3]},o.prototype.isPointInCircle=function(t,e,i){var a=this,o=s(t,2),r=o[0],n=o[1],h=s(e.map(function(t){return t*a.scale}),2),l=h[0],c=h[1];return Math.sqrt(Math.pow(l+this.originX-r,2)+Math.pow(c+this.originY-n,2))<=i},o.prototype.isPointInLine=function(t,e){var i=this;if(!this.offScreenCtx)return!1;this.offScreenCtx.save(),this.offScreenCtx.clearRect(0,0,this.WIDTH,this.HEIGHT),this.offScreenCtx.translate(this.originX,this.originY),this.offScreenCtx.lineWidth=this.lineWidth>5?this.lineWidth:5,this.offScreenCtx.beginPath(),e.forEach(function(t,e){var a,o,r=s(t.map(function(t){return Math.round(t*i.scale)}),2),n=r[0],h=r[1];0===e?null===(a=i.offScreenCtx)||void 0===a||a.moveTo(n,h):null===(o=i.offScreenCtx)||void 0===o||o.lineTo(n,h)}),this.offScreenCtx.stroke();var a=this.offScreenCtx.getImageData(0,0,this.WIDTH,this.HEIGHT),o=(t[1]-1)*this.WIDTH*4+4*t[0];return this.offScreenCtx.restore(),0!==a.data[o+3]},o.prototype.drawRect=function(t,e){var i=this;if(this.ctx&&2===t.coor.length){var a=t.strokeStyle,o=void 0===a?"":a,r=t.fillStyle,n=void 0===r?"":r,h=t.active,l=t.creating,c=t.coor,d=t.lineWidth,u=t.rotation,v=s(c.map(function(t){return t.map(function(t){return Math.round(t*i.scale)})}),2),f=s(v[0],2),p=f[0],y=f[1],g=s(v[1],2),S=g[0],x=g[1],I=(p+S)/2,m=(y+x)/2,b=S-p,M=x-y;this.ctx.save(),this.ctx.lineWidth=d||this.lineWidth,(null==e?void 0:e.isSelected)?this.ctx.fillStyle=(null==e?void 0:e.selectedFillStyle)||n:this.ctx.fillStyle=h||l?this.activeFillStyle:n,this.ctx.strokeStyle=h||l?this.activeStrokeStyle:o,this.ctx.translate(I,m),this.ctx.rotate(u),this.ctx.translate(-I,-m),l||this.ctx.fillRect(p,y,b,M),this.ctx.strokeRect(p,y,b,M),this.ctx.restore(),this.drawLabel(c[0],t)}},o.prototype.drawPolygon=function(t){var e=this;if(this.ctx){var i=t.strokeStyle,a=void 0===i?"":i,o=t.fillStyle,r=void 0===o?"":o,n=t.active,h=t.creating,l=t.coor,c=t.lineWidth;this.ctx.save(),this.ctx.lineJoin="round",this.ctx.lineWidth=c||this.lineWidth,this.ctx.fillStyle=n||h?this.activeFillStyle:r,this.ctx.strokeStyle=n||h?this.activeStrokeStyle:a,this.ctx.beginPath(),l.forEach(function(t,i){var a,o,r=s(t.map(function(t){return Math.round(t*e.scale)}),2),n=r[0],h=r[1];0===i?null===(a=e.ctx)||void 0===a||a.moveTo(n,h):null===(o=e.ctx)||void 0===o||o.lineTo(n,h)});var d=h&&l.length>=this.MAX_POLYGON_POINTS;if(h&&!d){var u=s(this.mouse||[],2),v=u[0],f=u[1];this.ctx.lineTo(v-this.originX,f-this.originY)}else(l.length>2||d)&&this.ctx.closePath();this.ctx.fill(),this.ctx.stroke(),this.ctx.restore(),this.drawLabel(l[0],t)}},o.prototype.drawDot=function(t){var e=this;if(this.ctx){var i=t.strokeStyle,a=void 0===i?"":i,o=t.creating,r=t.fillStyle,n=void 0===r?"":r,h=t.active,l=t.coor,c=t.lineWidth,d=s(l.map(function(t){return t*e.scale}),2),u=d[0],v=d[1];this.ctx.save(),this.ctx.lineWidth=c||this.lineWidth,this.ctx.fillStyle=h||o?this.activeFillStyle:n,this.ctx.strokeStyle=h?this.activeStrokeStyle:a,this.ctx.beginPath(),this.ctx.arc(u,v,this.ctrlRadius,0,2*Math.PI,!0),this.ctx.fill(),this.ctx.arc(u,v,this.ctrlRadius,0,2*Math.PI,!0),this.ctx.stroke(),this.ctx.restore(),this.drawLabel(l,t)}},o.prototype.drawCirle=function(t){var e=this;if(this.ctx){var i=t.strokeStyle,a=void 0===i?"":i,o=t.fillStyle,r=void 0===o?"":o,n=t.active,h=t.coor,l=t.creating,c=t.radius,d=t.ctrlsData,u=t.lineWidth,v=s(h.map(function(t){return t*e.scale}),2),f=v[0],p=v[1];this.ctx.save(),this.ctx.lineWidth=u||this.lineWidth,this.ctx.fillStyle=n||l?this.activeFillStyle:r,this.ctx.strokeStyle=n||l?this.activeStrokeStyle:a,this.ctx.beginPath(),this.ctx.arc(f,p,c*this.scale,0,2*Math.PI,!0),this.ctx.fill(),this.ctx.arc(f,p,c*this.scale,0,2*Math.PI,!0),this.ctx.stroke(),this.ctx.restore(),this.drawLabel(d[0],t)}},o.prototype.drawEllipse=function(t){var e=this;if(this.ctx){var i=t.strokeStyle,a=void 0===i?"":i,o=t.fillStyle,r=void 0===o?"":o,n=t.active,h=t.coor,l=t.creating,c=t.radiusX,d=t.radiusY,u=t.rotation,v=t.lineWidth,f=s(h.map(function(t){return t*e.scale}),2),p=f[0],y=f[1],g=c*this.scale,S=d*this.scale;this.ctx.save(),this.ctx.lineWidth=v||this.lineWidth,this.ctx.fillStyle=n||l?this.activeFillStyle:r,this.ctx.strokeStyle=n||l?this.activeStrokeStyle:a,this.ctx.beginPath(),this.ctx.ellipse(p,y,g,S,u,0,2*Math.PI,!0),this.ctx.fill(),this.ctx.ellipse(p,y,g,S,u,0,2*Math.PI,!0),this.ctx.stroke(),this.ctx.restore(),this.drawLabel(t.ctrlsData[0],t)}},o.prototype.drawText=function(t){var e=this;if(this.ctx&&2===t.coor.length){var i=t.text,a=void 0===i?"":i,o=t.fontSize,r=void 0===o?14:o,n=t.fontFamily,h=void 0===n?"sans-serif":n,l=t.textColor,c=void 0===l?"#000000":l,d=t.backgroundColor,u=void 0===d?"transparent":d,v=t.borderColor,f=void 0===v?"transparent":v,p=t.borderWidth,y=void 0===p?0:p,g=t.borderRadius,S=void 0===g?0:g,x=t.padding,I=void 0===x?4:x;t.active,t.creating;var m=t.coor,b=t.lineWidth,M=s(m.map(function(t){return t.map(function(t){return Math.round(t*e.scale)})}),2),E=s(M[0],2),T=E[0],w=E[1],H=s(M[1],2),k=H[0],C=H[1],G=Math.min(T,k),_=Math.min(w,C),D=Math.abs(k-T),W=Math.abs(C-w);if(this.ctx.save(),this.ctx.lineWidth=b||this.lineWidth,u&&"transparent"!==u&&(this.ctx.fillStyle=u,S>0?(this.drawRoundedRect(G,_,D,W,S),this.ctx.fill()):this.ctx.fillRect(G,_,D,W)),y>0&&f&&"transparent"!==f&&(this.ctx.strokeStyle=f,this.ctx.lineWidth=y,S>0?(this.drawRoundedRect(G,_,D,W,S),this.ctx.stroke()):this.ctx.strokeRect(G,_,D,W)),a){this.ctx.font="".concat(r*this.scale,"px ").concat(h),this.ctx.fillStyle=c,this.ctx.textAlign="left",this.ctx.textBaseline="top";var P=G+I*this.scale,R=_+I*this.scale,O=D-2*I*this.scale;this.ctx.fillText(a,P,R,O)}this.ctx.restore(),this.drawLabel(m[0],t)}},o.prototype.drawRoundedRect=function(t,e,i,s,a){this.ctx&&(this.ctx.beginPath(),this.ctx.moveTo(t+a,e),this.ctx.lineTo(t+i-a,e),this.ctx.quadraticCurveTo(t+i,e,t+i,e+a),this.ctx.lineTo(t+i,e+s-a),this.ctx.quadraticCurveTo(t+i,e+s,t+i-a,e+s),this.ctx.lineTo(t+a,e+s),this.ctx.quadraticCurveTo(t,e+s,t,e+s-a),this.ctx.lineTo(t,e+a),this.ctx.quadraticCurveTo(t,e,t+a,e),this.ctx.closePath())},o.prototype.drawLine=function(t){var e=this;if(this.ctx){var i=t.strokeStyle,a=void 0===i?"":i,o=t.active,r=t.creating,n=t.coor,h=t.lineWidth;this.ctx.save(),this.ctx.lineJoin="round",this.ctx.lineWidth=h||this.lineWidth,this.ctx.strokeStyle=o||r?this.activeStrokeStyle:a,this.ctx.beginPath(),n.forEach(function(t,i){var a,o,r=s(t.map(function(t){return Math.round(t*e.scale)}),2),n=r[0],h=r[1];0===i?null===(a=e.ctx)||void 0===a||a.moveTo(n,h):null===(o=e.ctx)||void 0===o||o.lineTo(n,h)});var l=r&&n.length>=2;if(r&&!l){var c=s(this.mouse||[],2),d=c[0],u=c[1];this.ctx.lineTo(d-this.originX,u-this.originY)}else n.length;this.ctx.stroke(),this.ctx.restore(),this.drawLabel(n[0],t)}},o.prototype.drawGrid=function(t){var e=this;if(this.ctx&&2===t.coor.length){var i=t.strokeStyle,a=void 0===i?"":i,o=t.fillStyle,r=void 0===o?"":o,n=t.active,h=t.creating,l=t.coor,c=t.lineWidth,d=s(l.map(function(t){return t.map(function(t){return Math.round(t*e.scale)})}),2),u=s(d[0],2),v=u[0],f=u[1],p=s(d[1],2),y=p[0],g=p[1];this.ctx.save(),this.ctx.lineWidth=c||this.lineWidth,this.ctx.fillStyle=n||h?this.activeFillStyle:r,this.ctx.strokeStyle=n||h?this.activeStrokeStyle:a,t.gridRects.forEach(function(i,s){var a;e.drawRect(i,{selectedFillStyle:t.selectedFillStyle||e.gridSelectedFillStyle,isSelected:null===(a=t.selected)||void 0===a?void 0:a.includes(s)})});var S=y-v,x=g-f;h||this.ctx.fillRect(v,f,S,x),this.ctx.strokeRect(v,f,S,x),this.ctx.restore(),this.drawLabel(l[0],t)}},o.prototype.drawBrushPath=function(t){var e=this;if(this.ctx){var i=t.coor,a=t.brushSize,o=void 0===a?1:a,r=t.brushStokeStyle,n=void 0===r?"":r;this.ctx.save(),this.ctx.globalCompositeOperation="source-over",this.ctx.lineCap="round",this.ctx.lineJoin="round",this.ctx.lineWidth=Math.round(o*this.scale),this.ctx.strokeStyle=n,this.ctx.beginPath(),i.forEach(function(t,i){var a,o,r=s(t.map(function(t){return Math.round(t*e.scale)}),2),n=r[0],h=r[1];0===i?null===(a=e.ctx)||void 0===a||a.moveTo(n,h):null===(o=e.ctx)||void 0===o||o.lineTo(n,h)}),this.ctx.stroke(),this.ctx.restore()}},o.prototype.drawEraserPath=function(t){var e=this;if(this.ctx){var i=t.coor,a=t.eraserSize,o=void 0===a?1:a;this.ctx.save(),this.ctx.globalCompositeOperation="destination-out",this.ctx.lineCap="round",this.ctx.lineJoin="round",this.ctx.lineWidth=Math.round(o*this.scale),this.ctx.beginPath(),i.forEach(function(t,i){var a,o,r=s(t.map(function(t){return Math.round(t*e.scale)}),2),n=r[0],h=r[1];0===i?null===(a=e.ctx)||void 0===a||a.moveTo(n,h):null===(o=e.ctx)||void 0===o||o.lineTo(n,h)}),this.ctx.stroke(),this.ctx.restore()}},o.prototype.clearBrush=function(){var t=this.dataset.filter(function(t){return![a.Brush,a.Eraser].includes(t.type)});this.setData(t)},o.prototype.drawCtrl=function(t,e){var i=this;if(this.ctx){var a=s(t.map(function(t){return t*i.scale}),2),o=a[0],r=a[1];this.ctx.save(),this.ctx.beginPath(),this.ctx.fillStyle=e||this.ctrlFillStyle,this.ctx.strokeStyle=this.ctrlStrokeStyle,this.ctx.arc(o,r,6,0,2*Math.PI,!0),this.ctx.fill(),this.ctx.arc(o,r,6,0,2*Math.PI,!0),this.ctx.stroke(),this.ctx.restore()}},o.prototype.drawCtrlList=function(t){var e=this;t.ctrlsData.forEach(function(i,s){t.type===a.Circle?1===s&&e.drawCtrl(i):t.type===a.Ellipse?e.drawCtrl(i):e.drawCtrl(i,t.type===a.Rect&&8===s?"yellow":void 0)})},o.prototype.drawLabel=function(t,e){var i=this,o=e.label,r=void 0===o?"":o,n=e.labelFillStyle,h=void 0===n?"":n,l=e.labelFont,c=void 0===l?"":l,d=e.textFillStyle,u=void 0===d?"":d,v=e.hideLabel,f=e.labelUp,p=e.lineWidth,y="boolean"==typeof v?v:this.hideLabel,g="boolean"==typeof f?f:this.labelUp,S=p||this.lineWidth;if(this.ctx&&r.length&&!y){this.ctx.font=c||this.labelFont;var x=r.length<this.labelMaxLen+1?r:"".concat(r.slice(0,this.labelMaxLen),"..."),I=this.ctx.measureText(x),m=parseInt(this.ctx.font)-4,b=I.width+8,M=m+8,E=s(t.map(function(t){return t*i.scale}),2),T=E[0],w=E[1];if(e.type===a.Rect&&0!==e.rotation){var H=e,k=s(H.coor,2),C=s(k[0],2),G=C[0],_=C[1],D=s(k[1],2),W=D[0],P=D[1],R=(G+W)/2*this.scale,O=(_+P)/2*this.scale,A=T-R,L=w-O;T=A*Math.cos(H.rotation)-L*Math.sin(H.rotation)+R,w=A*Math.sin(H.rotation)+L*Math.cos(H.rotation)+O}var N=this.IMAGE_ORIGIN_WIDTH-t[0]<b/this.scale,X=this.IMAGE_ORIGIN_HEIGHT-t[1]<M/this.scale,Y=t[1]>M/this.scale,F=g?Y:X;this.ctx.save(),this.ctx.fillStyle=h||this.labelFillStyle,this.ctx.fillRect(N?T-I.width-4-S/2:T+S/2,F?w-M-S/2:w+S/2,b,M),this.ctx.fillStyle=u||this.textFillStyle,this.ctx.fillText(x,N?T-I.width:T+4+S/2,F?w-M+m+4:w+m+4+S/2,180),this.ctx.restore()}},o.prototype.update=function(){var t=this;window.cancelAnimationFrame(this.timer),this.timer=window.requestAnimationFrame(function(){var e,i,s;if(t.ctx){t.ctx.save(),t.ctx.clearRect(0,0,t.WIDTH,t.HEIGHT),t.ctx.translate(t.originX,t.originY);for(var o=t.focusMode?t.activeShape.type?[t.activeShape]:[]:t.dataset,r=o.filter(function(t){return t.type===a.Brush||t.type===a.Eraser}),n=0;n<r.length;n++){if(!(l=r[n]).hide)switch(l.type){case a.Brush:l.brushSize=null!==(e=l.brushSize)&&void 0!==e?e:t.brushSize,l.brushStokeStyle=null!==(i=l.brushStokeStyle)&&void 0!==i?i:t.brushStokeStyle,t.drawBrushPath(l);break;case a.Eraser:l.eraserSize=null!==(s=l.eraserSize)&&void 0!==s?s:t.eraserSize,t.drawEraserPath(l)}}var h=o.filter(function(t){return t.type!==a.Brush&&t.type!==a.Eraser});for(n=0;n<h.length;n++){var l;if(!(l=h[n]).hide)switch(l.type){case a.Rect:t.drawRect(l);break;case a.Polygon:t.drawPolygon(l);break;case a.Dot:t.drawDot(l);break;case a.Line:t.drawLine(l);break;case a.Circle:t.drawCirle(l);break;case a.Ellipse:t.drawEllipse(l);break;case a.Grid:t.drawGrid(l);break;case a.Text:t.drawText(l)}}!t.isCtrlKey&&t.showCross&&(t.drawLine(t.crossX),t.drawLine(t.crossY)),[a.Rect,a.Polygon,a.Line,a.Circle,a.Grid,a.Ellipse,a.Text].includes(t.activeShape.type)&&!t.activeShape.hide&&t.drawCtrlList(t.activeShape),t.ctx.globalCompositeOperation="destination-over",t.IMAGE_WIDTH&&t.IMAGE_HEIGHT&&t.ctx.drawImage(t.image,0,0,t.IMAGE_WIDTH,t.IMAGE_HEIGHT),t.ctx.globalCompositeOperation="source-over",t.ctx.restore(),t.emit("updated",t.dataset)}})},o.prototype.deleteByIndex=function(t){var e=this.dataset.findIndex(function(e){return e.index===t});e>-1&&(this.emit("delete",this.dataset[e]),this.dataset.splice(e,1),this.dataset.forEach(function(t,e){t.index=e}),this.update())},o.prototype.deleteByUuid=function(t){var e=this.dataset.find(function(e){return e.uuid===t});e&&(this.emit("delete",e),this.dataset=this.dataset.filter(function(e){return e.uuid!==t}),this.update())},o.prototype.calcStep=function(t){void 0===t&&(t=""),this.IMAGE_WIDTH<this.WIDTH&&this.IMAGE_HEIGHT<this.HEIGHT&&(""!==t&&"b"!==t||(this.setScale(!0,!1,!0),this.calcStep("b"))),(this.IMAGE_WIDTH>this.WIDTH||this.IMAGE_HEIGHT>this.HEIGHT)&&(""!==t&&"s"!==t||(this.setScale(!1,!1,!0),this.calcStep("s")))},o.prototype.setScale=function(t,e,i){if(void 0===e&&(e=!1),void 0===i&&(i=!1),!this.lock&&!(!t&&this.imageMin<20||t&&this.IMAGE_WIDTH>100*this.imageOriginMax)){t?this.scaleStep++:this.scaleStep--;var a=0,o=0,r=s(this.mouse||[],2),n=r[0],h=r[1];e&&(a=(n-this.originX)/this.scale,o=(h-this.originY)/this.scale);var l=Math.abs(this.scaleStep),c=this.IMAGE_WIDTH;if(this.IMAGE_WIDTH=Math.round(this.IMAGE_ORIGIN_WIDTH*Math.pow(this.scaleStep>=0?1.05:.95,l)),this.IMAGE_HEIGHT=Math.round(this.IMAGE_ORIGIN_HEIGHT*Math.pow(this.scaleStep>=0?1.05:.95,l)),e)this.originX=n-a*this.scale,this.originY=h-o*this.scale;else{var d=this.IMAGE_WIDTH/c;this.originX=this.WIDTH/2-(this.WIDTH/2-this.originX)*d,this.originY=this.HEIGHT/2-(this.HEIGHT/2-this.originY)*d}i||this.update()}},o.prototype.fitZoom=function(){this.calcStep(),this.IMAGE_HEIGHT/this.IMAGE_WIDTH>=this.HEIGHT/this.WIDTH?(this.IMAGE_WIDTH=this.IMAGE_ORIGIN_WIDTH/(this.IMAGE_ORIGIN_HEIGHT/this.HEIGHT),this.IMAGE_HEIGHT=this.HEIGHT):(this.IMAGE_WIDTH=this.WIDTH,this.IMAGE_HEIGHT=this.IMAGE_ORIGIN_HEIGHT/(this.IMAGE_ORIGIN_WIDTH/this.WIDTH)),this.originX=(this.WIDTH-this.IMAGE_WIDTH)/2,this.originY=(this.HEIGHT-this.IMAGE_HEIGHT)/2,this.update()},o.prototype.setFocusMode=function(t){this.focusMode=t,this.update()},o.prototype.destroy=function(){this.canvas&&(this.image.removeEventListener("load",this.handleLoad),this.canvas.removeEventListener("contextmenu",this.handleContextmenu),this.canvas.removeEventListener("mousewheel",this.handleMousewheel),this.canvas.removeEventListener("wheel",this.handleMousewheel),this.canvas.removeEventListener("mousedown",this.handleMouseDown),this.canvas.removeEventListener("touchend",this.handleMouseDown),this.canvas.removeEventListener("mousemove",this.handleMouseMove),this.canvas.removeEventListener("touchmove",this.handleMouseMove),this.canvas.removeEventListener("mouseup",this.handleMouseUp),this.canvas.removeEventListener("touchend",this.handleMouseUp),this.canvas.removeEventListener("dblclick",this.handleDblclick),document.body.removeEventListener("keydown",this.handleKeydown,!0),document.body.removeEventListener("keyup",this.handleKeyup,!0),this.canvas.width=this.WIDTH,this.canvas.height=this.HEIGHT,this.canvas.style.width="",this.canvas.style.height="",this.canvas.style.userSelect="")},o.prototype.resize=function(){this.canvas&&(this.canvas.removeAttribute("width"),this.canvas.removeAttribute("height"),this.canvas.style.width="",this.canvas.style.height="",this.initSetting(),this.update())},o}(l);export{S as default};
|
|
7
|
+
var t=function(e,i){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i])},t(e,i)};function e(e,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function s(){this.constructor=e}t(e,i),e.prototype=null===i?Object.create(i):(s.prototype=i.prototype,new s)}var i=function(){return i=Object.assign||function(t){for(var e,i=1,s=arguments.length;i<s;i++)for(var a in e=arguments[i])Object.prototype.hasOwnProperty.call(e,a)&&(t[a]=e[a]);return t},i.apply(this,arguments)};function s(t,e){var i="function"==typeof Symbol&&t[Symbol.iterator];if(!i)return t;var s,a,o=i.call(t),r=[];try{for(;(void 0===e||e-- >0)&&!(s=o.next()).done;)r.push(s.value)}catch(t){a={error:t}}finally{try{s&&!s.done&&(i=o.return)&&i.call(o)}finally{if(a)throw a.error}}return r}"function"==typeof SuppressedError&&SuppressedError;var a,o=function(t,e){this.label="",this.coor=[],this.active=!1,this.creating=!1,this.dragging=!1,this.uuid=function(){for(var t=[],e="0123456789abcdef",i=0;i<36;i++){var s=Math.floor(16*Math.random());t[i]=e.slice(s,s+1)}t[14]="4";var a=3&t[19]|8;return t[19]=e.slice(a,a+1),t[8]=t[13]=t[18]=t[23]="-",t.join("")}(),this.index=e,Object.assign(this,t)},r=function(t){function i(e,i,s){var a,o,r,n,h=t.call(this,e,i)||this;return h.type=1,h.rotation=0,h.lineWidth=null!==(a=e.lineWidth)&&void 0!==a?a:s.lineWidth,h.fillStyle=null!==(o=e.fillStyle)&&void 0!==o?o:s.fillStyle,h.strokeStyle=null!==(r=e.strokeStyle)&&void 0!==r?r:s.strokeStyle,h.showRotation=null!==(n=e.showRotation)&&void 0!==n?n:s.showRotation,h}return e(i,t),Object.defineProperty(i.prototype,"ctrlsData",{get:function(){var t=this,e=s(this.coor,2),i=s(e[0],2),a=i[0],o=i[1],r=s(e[1],2),n=r[0],h=r[1],l=(a+n)/2,c=(o+h)/2,d=n-a,u=h-o,v=[[a,o],[a+d/2,o],[n,o],[n,o+u/2],[n,h],[a+d/2,h],[a,h],[a,o+u/2]];return this.showRotation&&v.push([l,o-20,"green"]),0===this.rotation?v:v.map(function(e){var i=s(e,2),a=i[0],o=i[1],r=a-l,n=o-c,h=r*Math.cos(t.rotation)-n*Math.sin(t.rotation),d=r*Math.sin(t.rotation)+n*Math.cos(t.rotation);return[h+l,d+c]})},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"center",{get:function(){var t=s(this.coor,2),e=s(t[0],2),i=e[0],a=e[1],o=s(t[1],2);return[(i+o[0])/2,(a+o[1])/2]},enumerable:!1,configurable:!0}),i}(o),n=function(t){function i(e,i,s){var a,o,r=t.call(this,e,i)||this;return r.type=2,r.fillStyle=null!==(a=e.fillStyle)&&void 0!==a?a:s.fillStyle,r.strokeStyle=null!==(o=e.strokeStyle)&&void 0!==o?o:s.strokeStyle,r}return e(i,t),Object.defineProperty(i.prototype,"ctrlsData",{get:function(){return this.coor.length>2?this.coor:[]},enumerable:!1,configurable:!0}),i}(o),h=function(t){function i(e,i,s){var a,o,r=t.call(this,e,i)||this;return r.type=3,r.fillStyle=null!==(a=e.fillStyle)&&void 0!==a?a:s.fillStyle,r.strokeStyle=null!==(o=e.strokeStyle)&&void 0!==o?o:s.strokeStyle,r}return e(i,t),i}(o),l=function(){function t(){this._eventTree={}}return t.prototype.on=function(t,e){var i=this._eventTree[t];Array.isArray(i)?i.push(e):this._eventTree[t]=[e]},t.prototype.emit=function(t){for(var e=[],i=1;i<arguments.length;i++)e[i-1]=arguments[i];var a=this._eventTree[t];Array.isArray(a)&&a.forEach(function(t){return t.apply(void 0,function(t,e,i){if(i||2===arguments.length)for(var s,a=0,o=e.length;a<o;a++)!s&&a in e||(s||(s=Array.prototype.slice.call(e,0,a)),s[a]=e[a]);return t.concat(s||Array.prototype.slice.call(e))}([],s(e),!1))})},t.prototype.off=function(t,e){var i=this._eventTree[t],s=i.find(function(t){return t===e});Array.isArray(i)&&s&&i.splice(s,1)},t}(),c=function(t){function i(e,i,s){var a,o=t.call(this,e,i)||this;return o.type=4,o.strokeStyle=null!==(a=e.strokeStyle)&&void 0!==a?a:s.strokeStyle,o}return e(i,t),Object.defineProperty(i.prototype,"ctrlsData",{get:function(){return this.coor.length>1?this.coor:[]},enumerable:!1,configurable:!0}),i}(o),d=function(t){function i(e,i,s){var a,o,r=t.call(this,e,i)||this;return r.type=5,r.radius=0,r.radius=e.radius||r.radius,r.fillStyle=null!==(a=e.fillStyle)&&void 0!==a?a:s.fillStyle,r.strokeStyle=null!==(o=e.strokeStyle)&&void 0!==o?o:s.strokeStyle,r}return e(i,t),Object.defineProperty(i.prototype,"ctrlsData",{get:function(){var t=s(this.coor,2),e=t[0],i=t[1];return[[e,i-this.radius],[e+this.radius,i],[e,i+this.radius],[e-this.radius,i]]},enumerable:!1,configurable:!0}),i}(o),u=function(t){function i(e,i,s){var a,o,r=t.call(this,e,i)||this;return r.type=6,r.row=1,r.col=1,r.selected=[],r.row=e.row>0?e.row:r.row,r.col=e.col>0?e.col:r.col,r.selected=Array.isArray(e.selected)?e.selected:[],r.fillStyle=null!==(a=e.fillStyle)&&void 0!==a?a:s.fillStyle,r.strokeStyle=null!==(o=e.strokeStyle)&&void 0!==o?o:s.strokeStyle,r}return e(i,t),Object.defineProperty(i.prototype,"ctrlsData",{get:function(){var t=s(this.coor,2),e=s(t[0],2),i=e[0],a=e[1],o=s(t[1],2),r=o[0],n=o[1];return[[i,a],[i+(r-i)/2,a],[r,a],[r,a+(n-a)/2],[r,n],[i+(r-i)/2,n],[i,n],[i,a+(n-a)/2]]},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"gridRects",{get:function(){for(var t=s(this.coor,2),e=s(t[0],2),i=e[0],a=e[1],o=s(t[1],2),n=o[0],h=o[1],l=this,c=l.row,d=l.col,u=l.strokeStyle,v=l.fillStyle,f=l.active,p=l.creating,y=l.lineWidth,g=(n-i)/this.col,S=(h-a)/this.row,x=[],I=0;I<c;I++)for(var m=0;m<d;m++){var b=[i+m*g,a+I*S],M=new r({coor:[b,[b[0]+g,b[1]+S]],strokeStyle:u,fillStyle:v,active:f,creating:p,lineWidth:y},I*d+m,{});x.push(M)}return x},enumerable:!1,configurable:!0}),i}(o),v="2.32.7",f=function(t){function i(e,i,s){var a,o,r=t.call(this,e,i)||this;return r.type=7,r.coor=[],r.brushSize=null!==(a=e.brushSize)&&void 0!==a?a:s.brushSize,r.brushStokeStyle=null!==(o=e.brushStokeStyle)&&void 0!==o?o:s.brushStokeStyle,r.coor=e.coor,r}return e(i,t),i}(o),p=function(t){function i(e,i,s){var a,o=t.call(this,e,i)||this;return o.type=8,o.coor=[],o.eraserSize=null!==(a=e.eraserSize)&&void 0!==a?a:s.eraserSize,o.coor=e.coor,o}return e(i,t),i}(o),y=function(t){function i(e,i,s){var a,o,r,n=t.call(this,e,i)||this;return n.type=9,n.radiusX=0,n.radiusY=0,n.rotation=0,n.radiusX=e.radiusX||n.radiusX,n.radiusY=e.radiusY||n.radiusY,n.rotation=e.rotation||n.rotation,n.fillStyle=null!==(a=e.fillStyle)&&void 0!==a?a:s.fillStyle,n.strokeStyle=null!==(o=e.strokeStyle)&&void 0!==o?o:s.strokeStyle,n.lineWidth=null!==(r=e.lineWidth)&&void 0!==r?r:s.lineWidth,n}return e(i,t),Object.defineProperty(i.prototype,"ctrlsData",{get:function(){var t=s(this.coor,2),e=t[0],i=t[1];return[[e,i-this.radiusY],[e+this.radiusX,i],[e,i+this.radiusY],[e-this.radiusX,i]]},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"boundingBox",{get:function(){var t=s(this.coor,2),e=t[0],i=t[1];return[[e-this.radiusX,i-this.radiusY],[e+this.radiusX,i+this.radiusY]]},enumerable:!1,configurable:!0}),i.prototype.isPointInEllipse=function(t,e){var i=s(this.coor,2),a=i[0],o=i[1];if(0!==this.rotation){var r,n,h=Math.cos(-this.rotation),l=Math.sin(-this.rotation),c=(r=t-a)*h-(n=e-o)*l,d=r*l+n*h;return c*c/(this.radiusX*this.radiusX)+d*d/(this.radiusY*this.radiusY)<=1}return(r=(t-a)/this.radiusX)*r+(n=(e-o)/this.radiusY)*n<=1},i}(o),g=function(t){function i(e,i,s){var a,o,r,n,h,l,c,d,u,v,f,p,y,g,S,x,I,m,b,M,E,T,w,H,k=t.call(this,e,i)||this;return k.type=10,k.text="",k.fontSize=14,k.fontFamily="sans-serif",k.textColor="#000000",k.backgroundColor="transparent",k.borderColor="transparent",k.borderWidth=0,k.borderRadius=0,k.padding=4,k.textAlign="left",k.textBaseline="top",k.text=null!==(a=e.text)&&void 0!==a?a:"",k.fontSize=null!==(r=null!==(o=e.fontSize)&&void 0!==o?o:s.fontSize)&&void 0!==r?r:k.fontSize,k.fontFamily=null!==(h=null!==(n=e.fontFamily)&&void 0!==n?n:s.fontFamily)&&void 0!==h?h:k.fontFamily,k.textColor=null!==(d=null!==(c=null!==(l=e.textColor)&&void 0!==l?l:s.textColor)&&void 0!==c?c:s.strokeStyle)&&void 0!==d?d:k.textColor,k.backgroundColor=null!==(v=null!==(u=e.backgroundColor)&&void 0!==u?u:s.backgroundColor)&&void 0!==v?v:k.backgroundColor,k.borderColor=null!==(p=null!==(f=e.borderColor)&&void 0!==f?f:s.borderColor)&&void 0!==p?p:k.borderColor,k.borderWidth=null!==(g=null!==(y=e.borderWidth)&&void 0!==y?y:s.borderWidth)&&void 0!==g?g:k.borderWidth,k.borderRadius=null!==(x=null!==(S=e.borderRadius)&&void 0!==S?S:s.borderRadius)&&void 0!==x?x:k.borderRadius,k.padding=null!==(m=null!==(I=e.padding)&&void 0!==I?I:s.padding)&&void 0!==m?m:k.padding,k.textAlign=null!==(M=null!==(b=e.textAlign)&&void 0!==b?b:s.textAlign)&&void 0!==M?M:k.textAlign,k.textBaseline=null!==(T=null!==(E=e.textBaseline)&&void 0!==E?E:s.textBaseline)&&void 0!==T?T:k.textBaseline,k.strokeStyle=null!==(w=e.strokeStyle)&&void 0!==w?w:s.strokeStyle,k.fillStyle=null!==(H=e.fillStyle)&&void 0!==H?H:s.fillStyle,k}return e(i,t),Object.defineProperty(i.prototype,"ctrlsData",{get:function(){if(this.coor.length<2)return[];var t=s(this.coor,2),e=s(t[0],2),i=e[0],a=e[1],o=s(t[1],2),r=o[0],n=o[1],h=(i+r)/2,l=(a+n)/2;return[[i,a],[h,a],[r,a],[r,l],[r,n],[h,n],[i,n],[i,l]]},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"width",{get:function(){if(this.coor.length<2)return 0;var t=s(this.coor,2),e=s(t[0],1)[0],i=s(t[1],1)[0];return Math.abs(i-e)},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"height",{get:function(){if(this.coor.length<2)return 0;var t=s(this.coor,2),e=s(t[0],2)[1],i=s(t[1],2)[1];return Math.abs(i-e)},enumerable:!1,configurable:!0}),Object.defineProperty(i.prototype,"center",{get:function(){if(this.coor.length<2)return[0,0];var t=s(this.coor,2),e=s(t[0],2),i=e[0],a=e[1],o=s(t[1],2);return[(i+o[0])/2,(a+o[1])/2]},enumerable:!1,configurable:!0}),i}(o);!function(t){t[t.None=0]="None",t[t.Rect=1]="Rect",t[t.Polygon=2]="Polygon",t[t.Dot=3]="Dot",t[t.Line=4]="Line",t[t.Circle=5]="Circle",t[t.Grid=6]="Grid",t[t.Brush=7]="Brush",t[t.Eraser=8]="Eraser",t[t.Ellipse=9]="Ellipse",t[t.Text=10]="Text"}(a||(a={}));var S=function(t){function o(e,i){var s=t.call(this)||this;s.version=v,s.lock=!1,s.readonly=!1,s.MIN_WIDTH=10,s.MIN_HEIGHT=10,s.MIN_RADIUS=5,s.MAX_POLYGON_POINTS=6,s.strokeStyle="#0f0",s.fillStyle="rgba(0, 0, 255, 0.1)",s.lineWidth=1,s.activeStrokeStyle="#f00",s.activeFillStyle="rgba(0, 0, 255, 0.1)",s.ctrlStrokeStyle="#000",s.ctrlFillStyle="#fff",s.ctrlRadius=3,s.hideLabel=!1,s.labelFillStyle="#fff",s.labelFont="10px sans-serif",s.textFillStyle="#000",s.labelMaxLen=10,s.WIDTH=0,s.maxPolygonPoint=6,s.HEIGHT=0,s.crossX=new c({},0,{}),s.crossY=new c({},1,{}),s.crossStroke="#ff0",s.showCross=!1,s.showRotation=!1,s.dataset=[],s.isMagnifierVisible=!1,s.magnifierPosition="auto",s.remmber=[],s.mouse=[0,0],s.remmberOrigin=[0,0],s.createType=a.None,s.ctrlIndex=-1,s.image=new Image,s.IMAGE_ORIGIN_WIDTH=0,s.IMAGE_WIDTH=0,s.IMAGE_ORIGIN_HEIGHT=0,s.IMAGE_HEIGHT=0,s.originX=0,s.originY=0,s.scaleStep=0,s.scrollZoom=!0,s.timer=null,s.dblTouch=300,s.dblTouchStore=0,s.alpha=!0,s.focusMode=!1,s.scaleTouchStore=0,s.isTouch2=!1,s.isMobile=navigator.userAgent.includes("Mobile"),s.labelUp=!1,s.isCtrlKey=!1,s.ctrlCode="ControlLeft",s.gridMenuEnable=!0,s.gridSelectedFillStyle="rgba(255, 255, 0, 0.6)",s.brushSize=20,s.brushStokeStyle="#f00",s.eraserSize=20,s.position=[0,0],s.handleLoad=s.handleLoad.bind(s),s.handleContextmenu=s.handleContextmenu.bind(s),s.handleMousewheel=s.handleMousewheel.bind(s),s.handleMouseDown=s.handleMouseDown.bind(s),s.handleMouseMove=s.handleMouseMove.bind(s),s.handleMouseUp=s.handleMouseUp.bind(s),s.handleDblclick=s.handleDblclick.bind(s),s.handleKeyup=s.handleKeyup.bind(s),s.handleKeydown=s.handleKeydown.bind(s);var o="string"==typeof e?document.querySelector(e):e;return o instanceof HTMLCanvasElement?(s.canvas=o,s.offScreen=document.createElement("canvas"),s.initSetting(),s.initEvents(),i&&s.setImage(i)):console.warn("HTMLCanvasElement is required!"),s.crossX.strokeStyle=s.crossStroke,s.crossY.strokeStyle=s.crossStroke,s}return e(o,t),Object.defineProperty(o.prototype,"activeShape",{get:function(){return this.dataset.find(function(t){return t.active})||{}},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"scale",{get:function(){return this.IMAGE_ORIGIN_WIDTH&&this.IMAGE_WIDTH?this.IMAGE_WIDTH/this.IMAGE_ORIGIN_WIDTH:1},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"imageMin",{get:function(){return Math.min(this.IMAGE_WIDTH,this.IMAGE_HEIGHT)},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"imageOriginMax",{get:function(){return Math.max(this.IMAGE_ORIGIN_WIDTH,this.IMAGE_ORIGIN_HEIGHT)},enumerable:!1,configurable:!0}),o.prototype.createMagnifierCanvas=function(){this.isMagnifierVisible&&(this.magnifierCanvas=this.magnifierCanvas||document.createElement("canvas"),this.magnifierCtx=this.magnifierCanvas&&this.magnifierCanvas.getContext("2d",{willReadFrequently:!0}),this.magnifierCanvas.style.position="fixed",this.magnifierCanvas.style.pointerEvents="none",this.magnifierCanvas.style.zIndex="1000",this.magnifierCanvas.style.border="1px solid black",this.magnifierCanvas.style.borderRadius="50%",this.magnifierCanvas.style.width="100px",this.magnifierCanvas.style.height="100px",document.body.appendChild(this.magnifierCanvas))},o.prototype.createMagnifier=function(t,e){this.magnifierCanvas?this.updateMagnifier(t,e):this.createMagnifierCanvas()},o.prototype.updateMagnifier=function(t,e){var i,a;if(this.canvas&&this.magnifierCanvas&&this.magnifierCtx){var o=100,r=window.devicePixelRatio||1;if(this.magnifierCanvas.width=o,this.magnifierCanvas.height=o,this.magnifierCtx.clearRect(0,0,o,o),this.magnifierPosition&&2===this.magnifierPosition.length){var n=s(this.magnifierPosition,2),h=n[0],l=n[1];this.magnifierCanvas.style.left="".concat(h,"px"),this.magnifierCanvas.style.top="".concat(l,"px")}else this.magnifierCanvas.style.left="".concat(t+10,"px"),this.magnifierCanvas.style.top="".concat(e+10,"px");var c=this.getImageDataFromCanvas(this.canvas,[t*r-50,e*r-50,o,o]),d=null===(i=this.magnifierCanvas.getContext("2d",{willReadFrequently:!0}))||void 0===i?void 0:i.createImageData(this.magnifierCanvas.width,this.magnifierCanvas.height);if(d&&c){for(var u=0,v=0;v<o;v+=1)for(var f=0;f<o;f+=1){for(var p=v;p<v+1;p++)for(var y=f;y<f+1;y++){var g=4*(p*o+y);d.data[g]=c.data[u],d.data[g+1]=c.data[u+1],d.data[g+2]=c.data[u+2],d.data[g+3]=c.data[u+3]}u+=4}null===(a=this.magnifierCanvas.getContext("2d",{willReadFrequently:!0}))||void 0===a||a.putImageData(d,0,0),this.magnifierCtx.strokeStyle="rgba(0, 0, 0, 0.5)",this.magnifierCtx.lineWidth=2,this.magnifierCtx.strokeRect(0,0,o,o)}}},o.prototype.destroyMagnifier=function(){this.magnifierCanvas&&(this.magnifierCanvas.remove(),this.magnifierCanvas=void 0,this.magnifierCtx=void 0)},o.prototype.getImageDataFromCanvas=function(t,e){var i=s(e,4),a=i[0],o=i[1],r=i[2],n=i[3],h=t.getContext("2d",{willReadFrequently:!0});return null==h?void 0:h.getImageData(a,o,r,n)},o.prototype.mergeEvent=function(t){var e,s,a=0,o=0,r=0,n=0;if(this.isMobile&&t.touches){var h=t.touches[0],l=h.clientX,c=h.clientY,d=t.target.getBoundingClientRect(),u=d.left,v=d.top;if(a=Math.round(l-u),o=Math.round(c-v),2===(null===(e=t.touches)||void 0===e?void 0:e.length)){var f=t.touches[1]||{},p=f.clientX,y=void 0===p?0:p,g=f.clientY,S=void 0===g?0:g;r=Math.round(Math.abs((y-l)/2+l)-u),n=Math.round(Math.abs((S-c)/2+c)-v)}else 1===(null===(s=t.touches)||void 0===s?void 0:s.length)&&(r=Math.round(l-u),n=Math.round(c-v))}else a=t.offsetX,o=t.offsetY;return i(i({},t),{mouseX:a,mouseY:o,mouseCX:r,mouseCY:n})},o.prototype.handleLoad=function(){this.emit("load",this.image.src),this.IMAGE_ORIGIN_WIDTH=this.IMAGE_WIDTH=this.image.width,this.IMAGE_ORIGIN_HEIGHT=this.IMAGE_HEIGHT=this.image.height,this.fitZoom()},o.prototype.handleContextmenu=function(t){t.preventDefault(),this.lock},o.prototype.handleMousewheel=function(t){if(t.preventDefault(),t.stopPropagation(),!this.lock&&this.scrollZoom){var e=this.mergeEvent(t),i=e.mouseX,s=e.mouseY;this.mouse=[i,s],this.setScale(t.deltaY<0,!0)}},o.prototype.handleMouseDown=function(t){var e,i,o,l=this;if(t.stopPropagation(),!this.lock){var v=this.mergeEvent(t),y=v.mouseX,S=v.mouseY,x=v.mouseCX,I=v.mouseCY,m=Math.round(y/this.scale),b=Math.round(S/this.scale);if(this.mouse=this.isMobile&&2===(null===(e=t.touches)||void 0===e?void 0:e.length)?[x,I]:[y,S],this.remmberOrigin=[y-this.originX,S-this.originY],!this.isMobile&&1===t.buttons||this.isMobile&&1===(null===(i=t.touches)||void 0===i?void 0:i.length)){var M=this.activeShape.ctrlsData||[];if(this.ctrlIndex=M.findIndex(function(t){return l.isPointInCircle(l.mouse,t,l.ctrlRadius)}),this.ctrlIndex>-1&&!this.readonly){var E=s(M[this.ctrlIndex],2),T=E[0],w=E[1];this.activeShape.type===a.Polygon&&this.activeShape.coor.length>2&&0===this.ctrlIndex&&this.handleDblclick(t),this.remmber=[[m-T,b-w]]}else if(this.isInBackground(t)){var H=Math.round(m-this.originX/this.scale),k=Math.round(b-this.originY/this.scale);if(this.activeShape.creating&&!this.readonly){if([a.Polygon,a.Line].includes(this.activeShape.type)){var C=s(this.activeShape.coor[this.activeShape.coor.length-1],2),G=C[0],_=C[1];G!==m&&_!==b&&(this.activeShape.coor.push([H,k]),this.activeShape.type===a.Polygon&&this.MAX_POLYGON_POINTS&&this.activeShape.coor.length>=this.MAX_POLYGON_POINTS&&this.handleDblclick(t),this.activeShape.type===a.Line&&this.activeShape.coor.length>=2&&this.handleDblclick(t))}}else if(this.createType===a.None||this.readonly||this.isCtrlKey){var D=s(this.hitOnShape(this.mouse),2),W=D[0],P=D[1];if(W>-1&&P){if(P.dragging=!0,this.dataset.forEach(function(t,e){return t.active=e===W}),this.dataset.splice(W,1),this.dataset.push(P),!this.readonly)if(this.remmber=[],[a.Dot,a.Circle].includes(P.type)){var R=s(P.coor,2);G=R[0],_=R[1];this.remmber=[[m-G,b-_]]}else P.coor.forEach(function(t){l.remmber.push([m-t[0],b-t[1]])});this.emit("select",P)}else this.activeShape.active=!1,this.dataset.sort(function(t,e){return t.index-e.index}),this.emit("select",null)}else{var O=void 0,A=[H,k];switch(this.createType){case a.Rect:(O=new r({coor:[A,A]},this.dataset.length,this)).creating=!0;break;case a.Polygon:(O=new n({coor:[A]},this.dataset.length,this)).creating=!0;break;case a.Dot:O=new h({coor:A},this.dataset.length,this),this.emit("add",O);break;case a.Line:(O=new c({coor:[A]},this.dataset.length,this)).creating=!0;break;case a.Circle:(O=new d({coor:A},this.dataset.length,this)).creating=!0;break;case a.Grid:(O=new u({coor:[A,A]},this.dataset.length,this)).creating=!0;break;case a.Brush:(O=new f({coor:[A]},this.dataset.length,this)).creating=!0;break;case a.Eraser:(O=new p({coor:[A]},this.dataset.length,this)).creating=!0;break;case a.Text:(O=new g({coor:[A,A]},this.dataset.length,this)).creating=!0}O&&(this.dataset.forEach(function(t){t.active=!1}),O.active=!0,this.dataset.push(O))}this.update()}}else if(!this.isMobile&&2===t.buttons||this.isMobile&&3===(null===(o=t.touches)||void 0===o?void 0:o.length)&&!this.readonly){if([a.Grid].includes(this.activeShape.type)&&this.gridMenuEnable){var L=prompt("x 行 y 列 x,y",[this.activeShape.row,this.activeShape.col].join(","));if("string"==typeof L){var N=s(L.split(","),2),X=N[0],Y=N[1];/^[1-9]\d*$/.test(X)&&/^[1-9]\d*$/.test(Y)&&(this.activeShape.row=Number(X),this.activeShape.col=Number(Y),this.update())}}this.emit("contextmenu",t)}}},o.prototype.handleMouseMove=function(t){var e,i,o,r;if(t.stopPropagation(),!this.lock){var n=this.mergeEvent(t),h=n.mouseX,l=n.mouseY,c=n.mouseCX,d=n.mouseCY,u=Math.round(h/this.scale),v=Math.round(l/this.scale);!this.isCtrlKey&&this.isInBackground(t)?(this.crossX.coor=[[u-this.originX/this.scale,0],[u-this.originX/this.scale,this.image.height]],this.crossY.coor=[[0,v-this.originY/this.scale],[this.image.width,v-this.originY/this.scale]]):(this.crossX.coor=[],this.crossY.coor=[]),this.mouse=this.isMobile&&2===(null===(e=t.touches)||void 0===e?void 0:e.length)?[c,d]:[h,l];var f=Math.round(u-this.originX/this.scale),p=Math.round(v-this.originY/this.scale);if(this.position=[f,p],(!this.isMobile&&1===t.buttons||this.isMobile&&1===(null===(i=t.touches)||void 0===i?void 0:i.length))&&this.activeShape.type){if(this.ctrlIndex>-1&&this.remmber.length&&(this.isInBackground(t)||this.activeShape.type===a.Circle)){var y=s(this.remmber,1),g=s(y[0],2),S=g[0],x=g[1];if([a.Rect,a.Grid].includes(this.activeShape.type))if(8===this.ctrlIndex){var I=s(this.activeShape.center,2),m=u-S-I[0],b=v-x-I[1];this.activeShape.rotation=Math.atan2(b,m)+Math.PI/2}else{var M=s(this.activeShape.coor,2),E=s(M[0],2),T=E[0],w=E[1],H=s(M[1],2),k=H[0],C=H[1],G=[];switch(this.ctrlIndex){case 0:G=[[u-S,v-x],[k,C]];break;case 1:G=[[T,v-x],[k,C]];break;case 2:G=[[T,v-x],[u-S,C]];break;case 3:G=[[T,w],[u-S,C]];break;case 4:G=[[T,w],[u-S,v-x]];break;case 5:G=[[T,w],[k,v-x]];break;case 6:G=[[u-S,w],[k,v-x]];break;case 7:G=[[u-S,w],[k,C]]}var _=s(G,2),D=s(_[0],2),W=D[0],P=D[1],R=s(_[1],2),O=R[0],A=R[1];(W<0||O<0||P<0||A<0||O>this.IMAGE_ORIGIN_WIDTH||A>this.IMAGE_ORIGIN_HEIGHT)&&(W<0&&(W=0),O<0&&(O=0),P<0&&(P=0),A<0&&(A=0),O>this.IMAGE_ORIGIN_WIDTH&&(O=this.IMAGE_ORIGIN_WIDTH),A>this.IMAGE_ORIGIN_HEIGHT&&(A=this.IMAGE_ORIGIN_HEIGHT)),O-W>=this.MIN_WIDTH&&A-P>=this.MIN_HEIGHT?this.activeShape.coor=[[W,P],[O,A]]:this.emit("warn","Width cannot be less than ".concat(this.MIN_WIDTH,",Height cannot be less than").concat(this.MIN_HEIGHT,"。"))}else if([a.Polygon,a.Line].includes(this.activeShape.type)){var L=[f,p];this.activeShape.coor.splice(this.ctrlIndex,1,L)}else if(this.activeShape.type===a.Circle){var N=Math.round(u-this.originX/this.scale)-this.activeShape.coor[0];N>=this.MIN_RADIUS&&(this.activeShape.radius=N)}if(this.isMagnifierVisible){var X=s(this.isMobile?[c,d]:[h,l],2),Y=X[0],F=X[1];this.createMagnifier(Y,F)}}else if(this.activeShape.dragging&&!this.readonly){if(this.isMagnifierVisible&&3===this.activeShape.type){var B=s(this.isMobile?[c,d]:[h,l],2);Y=B[0],F=B[1];this.createMagnifier(Y,F)}G=[];var j=!0,z=this.IMAGE_ORIGIN_WIDTH||this.WIDTH,K=this.IMAGE_ORIGIN_HEIGHT||this.HEIGHT;if([a.Dot,a.Circle].includes(this.activeShape.type)){var q=s(this.remmber[0],2),U=q[0];x=v-q[1];((S=u-U)<0||S>z||x<0||x>K)&&(j=!1),G=[S,x]}else for(var J=0;J<this.activeShape.coor.length;J++){var V=this.remmber[J];S=u-V[0],x=v-V[1];(S<0||S>z||x<0||x>K)&&(j=!1),G.push([S,x])}j&&(this.activeShape.coor=G)}else if(this.activeShape.creating&&this.isInBackground(t))if([a.Rect,a.Grid].includes(this.activeShape.type))this.activeShape.coor.splice(1,1,[f,p]);else if(this.activeShape.type===a.Circle){var Z=s(this.activeShape.coor,2),$=(T=Z[0],w=Z[1],Math.sqrt(Math.pow(T-f,2)+Math.pow(w-p,2)));this.activeShape.radius=$}else[a.Brush,a.Eraser].includes(this.activeShape.type)&&this.activeShape.coor.push([f,p]);this.update()}else if([a.Polygon,a.Line].includes(this.activeShape.type)&&this.activeShape.creating)this.update();else if(!this.isMobile&&2===t.buttons&&3===t.which||this.isMobile&&1===(null===(o=t.touches)||void 0===o?void 0:o.length)&&!this.isTouch2)this.originX=Math.round(h-this.remmberOrigin[0]),this.originY=Math.round(l-this.remmberOrigin[1]),this.update();else if(this.isMobile&&2===(null===(r=t.touches)||void 0===r?void 0:r.length)){this.isTouch2=!0;var Q=t.touches[0],tt=t.touches[1],et=this.scaleTouchStore;this.scaleTouchStore=Math.abs((tt.clientX-Q.clientX)*(tt.clientY-Q.clientY)),this.setScale(this.scaleTouchStore>et,!0)}else this.isCtrlKey||this.update()}},o.prototype.handleMouseUp=function(t){var e;if(t.stopPropagation(),!this.lock){if(this.destroyMagnifier(),this.isMobile){if(0===(null===(e=t.touches)||void 0===e?void 0:e.length)&&(this.isTouch2=!1),Date.now()-this.dblTouchStore<this.dblTouch)return void this.handleDblclick(t);this.dblTouchStore=Date.now()}if(this.remmber=[],this.activeShape.type!==a.None&&!this.isCtrlKey&&(this.activeShape.dragging=!1,this.activeShape.creating)){if([a.Rect,a.Grid].includes(this.activeShape.type)){var i=s(this.activeShape.coor,2),o=s(i[0],2),r=o[0],n=o[1],h=s(i[1],2),l=h[0],c=h[1];Math.abs(r-l)<this.MIN_WIDTH||Math.abs(n-c)<this.MIN_HEIGHT?(this.dataset.pop(),this.emit("warn","Width cannot be less than ".concat(this.MIN_WIDTH,",Height cannot be less than ").concat(this.MIN_HEIGHT))):(this.activeShape.coor=[[Math.min(r,l),Math.min(n,c)],[Math.max(r,l),Math.max(n,c)]],this.activeShape.creating=!1,this.emit("add",this.activeShape))}else this.activeShape.type===a.Circle?this.activeShape.radius<this.MIN_RADIUS?(this.dataset.pop(),this.emit("warn","Radius cannot be less than ".concat(this.MIN_WIDTH))):(this.activeShape.creating=!1,this.emit("add",this.activeShape)):[a.Brush,a.Eraser].includes(this.activeShape.type)&&(this.activeShape.creating=!1,this.emit("add",this.activeShape));this.update()}}},o.prototype.handleDblclick=function(t){var e=this;if(t.stopPropagation(),!this.lock)if([a.Polygon,a.Line].includes(this.activeShape.type)){var i=this.activeShape.type===a.Polygon&&this.activeShape.coor.length>2,s=this.activeShape.type===a.Line&&this.activeShape.coor.length>1,o=this.activeShape.type===a.Polygon&&this.activeShape.coor.length>=this.MAX_POLYGON_POINTS,r=this.activeShape.type===a.Line&&this.activeShape.coor.length>=2;(i||s||o||r)&&(this.emit("add",this.activeShape),this.activeShape.creating=!1,this.update())}else[a.Grid].includes(this.activeShape.type)&&this.activeShape.active&&(this.activeShape.gridRects.forEach(function(t){if(e.isPointInRect(e.mouse,t.coor)){var i=e.activeShape.selected.findIndex(function(e){return t.index===e});i>-1?e.activeShape.selected.splice(i,1):e.activeShape.selected.push(t.index)}}),this.update())},o.prototype.handleKeydown=function(t){t.code===this.ctrlCode&&(this.isCtrlKey=!0)},o.prototype.handleKeyup=function(t){if(t.code===this.ctrlCode&&(this.isCtrlKey=!1),!this.lock&&document.activeElement===document.body&&!this.readonly&&this.activeShape.type)if([a.Polygon,a.Line].includes(this.activeShape.type)&&"Escape"===t.key){var e=this.activeShape.type===a.Polygon&&this.activeShape.coor.length>=this.MAX_POLYGON_POINTS,i=this.activeShape.type===a.Line&&this.activeShape.coor.length>=2;this.activeShape.coor.length>1&&this.activeShape.creating&&!e&&!i?this.activeShape.coor.pop():this.deleteByIndex(this.activeShape.index),this.update()}else"Backspace"===t.key&&this.deleteByIndex(this.activeShape.index)},o.prototype.initSetting=function(){var t;if(this.canvas&&this.offScreen){var e=window.devicePixelRatio||1;this.image.crossOrigin="anonymous",this.canvas.style.userSelect="none",this.ctx=this.ctx||this.canvas.getContext("2d",{alpha:this.alpha}),this.WIDTH=this.canvas.clientWidth,this.HEIGHT=Math.round(this.canvas.clientHeight),this.canvas.width=this.WIDTH*e,this.canvas.height=this.HEIGHT*e,this.canvas.style.width=this.WIDTH+"px",this.canvas.style.height=this.HEIGHT+"px",this.offScreen.width=this.WIDTH,this.offScreen.height=this.HEIGHT,this.offScreenCtx=this.offScreenCtx||this.offScreen.getContext("2d",{willReadFrequently:!0}),null===(t=this.ctx)||void 0===t||t.scale(e,e)}},o.prototype.initEvents=function(){this.canvas&&(this.image.addEventListener("load",this.handleLoad),this.canvas.addEventListener("touchstart",this.handleMouseDown),this.canvas.addEventListener("touchmove",this.handleMouseMove),this.canvas.addEventListener("touchend",this.handleMouseUp),this.canvas.addEventListener("contextmenu",this.handleContextmenu),this.canvas.addEventListener("mousewheel",this.handleMousewheel),this.canvas.addEventListener("wheel",this.handleMousewheel),this.canvas.addEventListener("mousedown",this.handleMouseDown),this.canvas.addEventListener("mousemove",this.handleMouseMove),this.canvas.addEventListener("mouseup",this.handleMouseUp),this.canvas.addEventListener("dblclick",this.handleDblclick),document.body.addEventListener("keydown",this.handleKeydown,!0),document.body.addEventListener("keyup",this.handleKeyup,!0))},o.prototype.setImage=function(t){"string"==typeof t?this.image.src=t:(this.image=t,this.image.crossOrigin="anonymous",this.image.complete?this.handleLoad():this.image.addEventListener("load",this.handleLoad))},o.prototype.setData=function(t){var e=this;setTimeout(function(){var i=[];t.forEach(function(t,s){if(Object.prototype.toString.call(t).includes("Object")){var o=void 0;switch(t.type){case a.Rect:o=new r(t,s,e);break;case a.Polygon:o=new n(t,s,e);break;case a.Dot:o=new h(t,s,e);break;case a.Line:o=new c(t,s,e);break;case a.Circle:o=new d(t,s,e);break;case a.Grid:o=new u(t,s,e);break;case a.Brush:o=new f(t,s,e);break;case a.Eraser:o=new p(t,s,e);break;case a.Ellipse:o=new y(t,s,e);break;case a.Text:o=new g(t,s,e);break;default:console.warn("Invalid shape",t)}[a.Rect,a.Polygon,a.Dot,a.Line,a.Circle,a.Grid,a.Brush,a.Eraser,a.Ellipse,a.Text].includes(t.type)&&o&&i.push(o)}else console.warn("Shape must be an enumerable Object.",t)}),e.dataset=i,e.update()})},o.prototype.hitOnShape=function(t){for(var e,i=-1,s=this.dataset.length-1;s>-1;s--){var o=this.dataset[s];if(!o.hide&&(o.type===a.Dot&&this.isPointInCircle(t,o.coor,this.ctrlRadius)||o.type===a.Circle&&this.isPointInCircle(t,o.coor,o.radius*this.scale)||o.type===a.Rect&&this.isPointInRect(t,o.coor)||o.type===a.Polygon&&this.isPointInPolygon(t,o.coor)||o.type===a.Line&&this.isPointInLine(t,o.coor)||o.type===a.Grid&&this.isPointInRect(t,o.coor)||o.type===a.Text&&this.isPointInRect(t,o.coor))){if(this.focusMode&&!o.active)continue;i=s,e=o;break}}return[i,e]},o.prototype.isInBackground=function(t){var e=this.mergeEvent(t),i=e.mouseX,s=e.mouseY;return i>=this.originX&&s>=this.originY&&i<=this.originX+this.IMAGE_ORIGIN_WIDTH*this.scale&&s<=this.originY+this.IMAGE_ORIGIN_HEIGHT*this.scale},o.prototype.isPointInRect=function(t,e){var i=this,a=s(t,2),o=a[0],r=a[1],n=s(e.map(function(t){return t.map(function(t){return t*i.scale})}),2),h=s(n[0],2),l=h[0],c=h[1],d=s(n[1],2),u=d[0],v=d[1];return l+this.originX<=o&&o<=u+this.originX&&c+this.originY<=r&&r<=v+this.originY},o.prototype.isPointInPolygon=function(t,e){var i=this;if(!this.offScreenCtx)return!1;this.offScreenCtx.save(),this.offScreenCtx.clearRect(0,0,this.WIDTH,this.HEIGHT),this.offScreenCtx.translate(this.originX,this.originY),this.offScreenCtx.beginPath(),e.forEach(function(t,e){var a,o,r=s(t.map(function(t){return Math.round(t*i.scale)}),2),n=r[0],h=r[1];0===e?null===(a=i.offScreenCtx)||void 0===a||a.moveTo(n,h):null===(o=i.offScreenCtx)||void 0===o||o.lineTo(n,h)}),this.offScreenCtx.closePath(),this.offScreenCtx.fill();var a=this.offScreenCtx.getImageData(0,0,this.WIDTH,this.HEIGHT),o=(t[1]-1)*this.WIDTH*4+4*t[0];return this.offScreenCtx.restore(),0!==a.data[o+3]},o.prototype.isPointInCircle=function(t,e,i){var a=this,o=s(t,2),r=o[0],n=o[1],h=s(e.map(function(t){return t*a.scale}),2),l=h[0],c=h[1];return Math.sqrt(Math.pow(l+this.originX-r,2)+Math.pow(c+this.originY-n,2))<=i},o.prototype.isPointInLine=function(t,e){var i=this;if(!this.offScreenCtx)return!1;this.offScreenCtx.save(),this.offScreenCtx.clearRect(0,0,this.WIDTH,this.HEIGHT),this.offScreenCtx.translate(this.originX,this.originY),this.offScreenCtx.lineWidth=this.lineWidth>5?this.lineWidth:5,this.offScreenCtx.beginPath(),e.forEach(function(t,e){var a,o,r=s(t.map(function(t){return Math.round(t*i.scale)}),2),n=r[0],h=r[1];0===e?null===(a=i.offScreenCtx)||void 0===a||a.moveTo(n,h):null===(o=i.offScreenCtx)||void 0===o||o.lineTo(n,h)}),this.offScreenCtx.stroke();var a=this.offScreenCtx.getImageData(0,0,this.WIDTH,this.HEIGHT),o=(t[1]-1)*this.WIDTH*4+4*t[0];return this.offScreenCtx.restore(),0!==a.data[o+3]},o.prototype.drawRect=function(t,e){var i=this;if(this.ctx&&2===t.coor.length){var a=t.strokeStyle,o=void 0===a?"":a,r=t.fillStyle,n=void 0===r?"":r,h=t.active,l=t.creating,c=t.coor,d=t.lineWidth,u=t.rotation,v=s(c.map(function(t){return t.map(function(t){return Math.round(t*i.scale)})}),2),f=s(v[0],2),p=f[0],y=f[1],g=s(v[1],2),S=g[0],x=g[1],I=(p+S)/2,m=(y+x)/2,b=S-p,M=x-y;this.ctx.save(),this.ctx.lineWidth=d||this.lineWidth,(null==e?void 0:e.isSelected)?this.ctx.fillStyle=(null==e?void 0:e.selectedFillStyle)||n:this.ctx.fillStyle=h||l?this.activeFillStyle:n,this.ctx.strokeStyle=h||l?this.activeStrokeStyle:o,this.ctx.translate(I,m),this.ctx.rotate(u),this.ctx.translate(-I,-m),l||this.ctx.fillRect(p,y,b,M),this.ctx.strokeRect(p,y,b,M),this.ctx.restore(),this.drawLabel(c[0],t)}},o.prototype.drawPolygon=function(t){var e=this;if(this.ctx){var i=t.strokeStyle,a=void 0===i?"":i,o=t.fillStyle,r=void 0===o?"":o,n=t.active,h=t.creating,l=t.coor,c=t.lineWidth;this.ctx.save(),this.ctx.lineJoin="round",this.ctx.lineWidth=c||this.lineWidth,this.ctx.fillStyle=n||h?this.activeFillStyle:r,this.ctx.strokeStyle=n||h?this.activeStrokeStyle:a,this.ctx.beginPath(),l.forEach(function(t,i){var a,o,r=s(t.map(function(t){return Math.round(t*e.scale)}),2),n=r[0],h=r[1];0===i?null===(a=e.ctx)||void 0===a||a.moveTo(n,h):null===(o=e.ctx)||void 0===o||o.lineTo(n,h)});var d=h&&l.length>=this.MAX_POLYGON_POINTS;if(h&&!d){var u=s(this.mouse||[],2),v=u[0],f=u[1];this.ctx.lineTo(v-this.originX,f-this.originY)}else(l.length>2||d)&&this.ctx.closePath();this.ctx.fill(),this.ctx.stroke(),this.ctx.restore(),this.drawLabel(l[0],t)}},o.prototype.drawDot=function(t){var e=this;if(this.ctx){var i=t.strokeStyle,a=void 0===i?"":i,o=t.creating,r=t.fillStyle,n=void 0===r?"":r,h=t.active,l=t.coor,c=t.lineWidth,d=s(l.map(function(t){return t*e.scale}),2),u=d[0],v=d[1];this.ctx.save(),this.ctx.lineWidth=c||this.lineWidth,this.ctx.fillStyle=h||o?this.activeFillStyle:n,this.ctx.strokeStyle=h?this.activeStrokeStyle:a,this.ctx.beginPath(),this.ctx.arc(u,v,this.ctrlRadius,0,2*Math.PI,!0),this.ctx.fill(),this.ctx.arc(u,v,this.ctrlRadius,0,2*Math.PI,!0),this.ctx.stroke(),this.ctx.restore(),this.drawLabel(l,t)}},o.prototype.drawCirle=function(t){var e=this;if(this.ctx){var i=t.strokeStyle,a=void 0===i?"":i,o=t.fillStyle,r=void 0===o?"":o,n=t.active,h=t.coor,l=t.creating,c=t.radius,d=t.ctrlsData,u=t.lineWidth,v=s(h.map(function(t){return t*e.scale}),2),f=v[0],p=v[1];this.ctx.save(),this.ctx.lineWidth=u||this.lineWidth,this.ctx.fillStyle=n||l?this.activeFillStyle:r,this.ctx.strokeStyle=n||l?this.activeStrokeStyle:a,this.ctx.beginPath(),this.ctx.arc(f,p,c*this.scale,0,2*Math.PI,!0),this.ctx.fill(),this.ctx.arc(f,p,c*this.scale,0,2*Math.PI,!0),this.ctx.stroke(),this.ctx.restore(),this.drawLabel(d[0],t)}},o.prototype.drawEllipse=function(t){var e=this;if(this.ctx){var i=t.strokeStyle,a=void 0===i?"":i,o=t.fillStyle,r=void 0===o?"":o,n=t.active,h=t.coor,l=t.creating,c=t.radiusX,d=t.radiusY,u=t.rotation,v=t.lineWidth,f=s(h.map(function(t){return t*e.scale}),2),p=f[0],y=f[1],g=c*this.scale,S=d*this.scale;this.ctx.save(),this.ctx.lineWidth=v||this.lineWidth,this.ctx.fillStyle=n||l?this.activeFillStyle:r,this.ctx.strokeStyle=n||l?this.activeStrokeStyle:a,this.ctx.beginPath(),this.ctx.ellipse(p,y,g,S,u,0,2*Math.PI,!0),this.ctx.fill(),this.ctx.ellipse(p,y,g,S,u,0,2*Math.PI,!0),this.ctx.stroke(),this.ctx.restore(),this.drawLabel(t.ctrlsData[0],t)}},o.prototype.drawText=function(t){var e=this;if(this.ctx&&2===t.coor.length){var i=t.text,a=void 0===i?"":i,o=t.fontSize,r=void 0===o?14:o,n=t.fontFamily,h=void 0===n?"sans-serif":n,l=t.textColor,c=void 0===l?"#000000":l,d=t.backgroundColor,u=void 0===d?"transparent":d,v=t.borderColor,f=void 0===v?"transparent":v,p=t.borderWidth,y=void 0===p?0:p,g=t.borderRadius,S=void 0===g?0:g,x=t.padding,I=void 0===x?4:x;t.active,t.creating;var m=t.coor,b=t.lineWidth,M=s(m.map(function(t){return t.map(function(t){return Math.round(t*e.scale)})}),2),E=s(M[0],2),T=E[0],w=E[1],H=s(M[1],2),k=H[0],C=H[1],G=Math.min(T,k),_=Math.min(w,C),D=Math.abs(k-T),W=Math.abs(C-w);if(this.ctx.save(),this.ctx.lineWidth=b||this.lineWidth,u&&"transparent"!==u&&(this.ctx.fillStyle=u,S>0?(this.drawRoundedRect(G,_,D,W,S),this.ctx.fill()):this.ctx.fillRect(G,_,D,W)),y>0&&f&&"transparent"!==f&&(this.ctx.strokeStyle=f,this.ctx.lineWidth=y,S>0?(this.drawRoundedRect(G,_,D,W,S),this.ctx.stroke()):this.ctx.strokeRect(G,_,D,W)),a){this.ctx.font="".concat(r*this.scale,"px ").concat(h),this.ctx.fillStyle=c,this.ctx.textAlign="left",this.ctx.textBaseline="top";var P=G+I*this.scale,R=_+I*this.scale,O=D-2*I*this.scale;this.ctx.fillText(a,P,R,O)}this.ctx.restore(),this.drawLabel(m[0],t)}},o.prototype.drawRoundedRect=function(t,e,i,s,a){this.ctx&&(this.ctx.beginPath(),this.ctx.moveTo(t+a,e),this.ctx.lineTo(t+i-a,e),this.ctx.quadraticCurveTo(t+i,e,t+i,e+a),this.ctx.lineTo(t+i,e+s-a),this.ctx.quadraticCurveTo(t+i,e+s,t+i-a,e+s),this.ctx.lineTo(t+a,e+s),this.ctx.quadraticCurveTo(t,e+s,t,e+s-a),this.ctx.lineTo(t,e+a),this.ctx.quadraticCurveTo(t,e,t+a,e),this.ctx.closePath())},o.prototype.drawLine=function(t){var e=this;if(this.ctx){var i=t.strokeStyle,a=void 0===i?"":i,o=t.active,r=t.creating,n=t.coor,h=t.lineWidth;this.ctx.save(),this.ctx.lineJoin="round",this.ctx.lineWidth=h||this.lineWidth,this.ctx.strokeStyle=o||r?this.activeStrokeStyle:a,this.ctx.beginPath(),n.forEach(function(t,i){var a,o,r=s(t.map(function(t){return Math.round(t*e.scale)}),2),n=r[0],h=r[1];0===i?null===(a=e.ctx)||void 0===a||a.moveTo(n,h):null===(o=e.ctx)||void 0===o||o.lineTo(n,h)});var l=r&&n.length>=2;if(r&&!l){var c=s(this.mouse||[],2),d=c[0],u=c[1];this.ctx.lineTo(d-this.originX,u-this.originY)}else n.length;this.ctx.stroke(),this.ctx.restore(),this.drawLabel(n[0],t)}},o.prototype.drawGrid=function(t){var e=this;if(this.ctx&&2===t.coor.length){var i=t.strokeStyle,a=void 0===i?"":i,o=t.fillStyle,r=void 0===o?"":o,n=t.active,h=t.creating,l=t.coor,c=t.lineWidth,d=s(l.map(function(t){return t.map(function(t){return Math.round(t*e.scale)})}),2),u=s(d[0],2),v=u[0],f=u[1],p=s(d[1],2),y=p[0],g=p[1];this.ctx.save(),this.ctx.lineWidth=c||this.lineWidth,this.ctx.fillStyle=n||h?this.activeFillStyle:r,this.ctx.strokeStyle=n||h?this.activeStrokeStyle:a,t.gridRects.forEach(function(i,s){var a;e.drawRect(i,{selectedFillStyle:t.selectedFillStyle||e.gridSelectedFillStyle,isSelected:null===(a=t.selected)||void 0===a?void 0:a.includes(s)})});var S=y-v,x=g-f;h||this.ctx.fillRect(v,f,S,x),this.ctx.strokeRect(v,f,S,x),this.ctx.restore(),this.drawLabel(l[0],t)}},o.prototype.drawBrushPath=function(t){var e=this;if(this.ctx){var i=t.coor,a=t.brushSize,o=void 0===a?1:a,r=t.brushStokeStyle,n=void 0===r?"":r;this.ctx.save(),this.ctx.globalCompositeOperation="source-over",this.ctx.lineCap="round",this.ctx.lineJoin="round",this.ctx.lineWidth=Math.round(o*this.scale),this.ctx.strokeStyle=n,this.ctx.beginPath(),i.forEach(function(t,i){var a,o,r=s(t.map(function(t){return Math.round(t*e.scale)}),2),n=r[0],h=r[1];0===i?null===(a=e.ctx)||void 0===a||a.moveTo(n,h):null===(o=e.ctx)||void 0===o||o.lineTo(n,h)}),this.ctx.stroke(),this.ctx.restore()}},o.prototype.drawEraserPath=function(t){var e=this;if(this.ctx){var i=t.coor,a=t.eraserSize,o=void 0===a?1:a;this.ctx.save(),this.ctx.globalCompositeOperation="destination-out",this.ctx.lineCap="round",this.ctx.lineJoin="round",this.ctx.lineWidth=Math.round(o*this.scale),this.ctx.beginPath(),i.forEach(function(t,i){var a,o,r=s(t.map(function(t){return Math.round(t*e.scale)}),2),n=r[0],h=r[1];0===i?null===(a=e.ctx)||void 0===a||a.moveTo(n,h):null===(o=e.ctx)||void 0===o||o.lineTo(n,h)}),this.ctx.stroke(),this.ctx.restore()}},o.prototype.clearBrush=function(){var t=this.dataset.filter(function(t){return![a.Brush,a.Eraser].includes(t.type)});this.setData(t)},o.prototype.drawCtrl=function(t,e){var i=this;if(this.ctx){var a=s(t.map(function(t){return t*i.scale}),2),o=a[0],r=a[1];this.ctx.save(),this.ctx.beginPath(),this.ctx.fillStyle=e||this.ctrlFillStyle,this.ctx.strokeStyle=this.ctrlStrokeStyle,this.ctx.arc(o,r,6,0,2*Math.PI,!0),this.ctx.fill(),this.ctx.arc(o,r,6,0,2*Math.PI,!0),this.ctx.stroke(),this.ctx.restore()}},o.prototype.drawCtrlList=function(t){var e=this;t.ctrlsData.forEach(function(i,s){t.type===a.Circle?1===s&&e.drawCtrl(i):t.type===a.Ellipse?e.drawCtrl(i):e.drawCtrl(i,t.type===a.Rect&&8===s?"yellow":void 0)})},o.prototype.drawLabel=function(t,e){var i=this,o=e.label,r=void 0===o?"":o,n=e.labelFillStyle,h=void 0===n?"":n,l=e.labelFont,c=void 0===l?"":l,d=e.textFillStyle,u=void 0===d?"":d,v=e.hideLabel,f=e.labelUp,p=e.lineWidth,y="boolean"==typeof v?v:this.hideLabel,g="boolean"==typeof f?f:this.labelUp,S=p||this.lineWidth;if(this.ctx&&r.length&&!y){this.ctx.font=c||this.labelFont;var x=r.length<this.labelMaxLen+1?r:"".concat(r.slice(0,this.labelMaxLen),"..."),I=this.ctx.measureText(x),m=parseInt(this.ctx.font)-4,b=I.width+8,M=m+8,E=s(t.map(function(t){return t*i.scale}),2),T=E[0],w=E[1];if(e.type===a.Rect&&0!==e.rotation){var H=e,k=s(H.coor,2),C=s(k[0],2),G=C[0],_=C[1],D=s(k[1],2),W=D[0],P=D[1],R=(G+W)/2*this.scale,O=(_+P)/2*this.scale,A=T-R,L=w-O;T=A*Math.cos(H.rotation)-L*Math.sin(H.rotation)+R,w=A*Math.sin(H.rotation)+L*Math.cos(H.rotation)+O}var N=this.IMAGE_ORIGIN_WIDTH-t[0]<b/this.scale,X=this.IMAGE_ORIGIN_HEIGHT-t[1]<M/this.scale,Y=t[1]>M/this.scale,F=g?Y:X;this.ctx.save(),this.ctx.fillStyle=h||this.labelFillStyle,this.ctx.fillRect(N?T-I.width-4-S/2:T+S/2,F?w-M-S/2:w+S/2,b,M),this.ctx.fillStyle=u||this.textFillStyle,this.ctx.fillText(x,N?T-I.width:T+4+S/2,F?w-M+m+4:w+m+4+S/2,180),this.ctx.restore()}},o.prototype.update=function(){var t=this;window.cancelAnimationFrame(this.timer),this.timer=window.requestAnimationFrame(function(){var e,i,s;if(t.ctx){t.ctx.save(),t.ctx.clearRect(0,0,t.WIDTH,t.HEIGHT),t.ctx.translate(t.originX,t.originY);for(var o=t.focusMode?t.activeShape.type?[t.activeShape]:[]:t.dataset,r=o.filter(function(t){return t.type===a.Brush||t.type===a.Eraser}),n=0;n<r.length;n++){if(!(l=r[n]).hide)switch(l.type){case a.Brush:l.brushSize=null!==(e=l.brushSize)&&void 0!==e?e:t.brushSize,l.brushStokeStyle=null!==(i=l.brushStokeStyle)&&void 0!==i?i:t.brushStokeStyle,t.drawBrushPath(l);break;case a.Eraser:l.eraserSize=null!==(s=l.eraserSize)&&void 0!==s?s:t.eraserSize,t.drawEraserPath(l)}}var h=o.filter(function(t){return t.type!==a.Brush&&t.type!==a.Eraser});for(n=0;n<h.length;n++){var l;if(!(l=h[n]).hide)switch(l.type){case a.Rect:t.drawRect(l);break;case a.Polygon:t.drawPolygon(l);break;case a.Dot:t.drawDot(l);break;case a.Line:t.drawLine(l);break;case a.Circle:t.drawCirle(l);break;case a.Ellipse:t.drawEllipse(l);break;case a.Grid:t.drawGrid(l);break;case a.Text:t.drawText(l)}}!t.isCtrlKey&&t.showCross&&(t.drawLine(t.crossX),t.drawLine(t.crossY)),[a.Rect,a.Polygon,a.Line,a.Circle,a.Grid,a.Ellipse,a.Text].includes(t.activeShape.type)&&!t.activeShape.hide&&t.drawCtrlList(t.activeShape),t.ctx.globalCompositeOperation="destination-over",t.IMAGE_WIDTH&&t.IMAGE_HEIGHT&&t.ctx.drawImage(t.image,0,0,t.IMAGE_WIDTH,t.IMAGE_HEIGHT),t.ctx.globalCompositeOperation="source-over",t.ctx.restore(),t.emit("updated",t.dataset)}})},o.prototype.deleteByIndex=function(t){var e=this.dataset.findIndex(function(e){return e.index===t});e>-1&&(this.emit("delete",this.dataset[e]),this.dataset.splice(e,1),this.dataset.forEach(function(t,e){t.index=e}),this.update())},o.prototype.deleteByUuid=function(t){var e=this.dataset.find(function(e){return e.uuid===t});e&&(this.emit("delete",e),this.dataset=this.dataset.filter(function(e){return e.uuid!==t}),this.update())},o.prototype.calcStep=function(t){void 0===t&&(t=""),this.IMAGE_WIDTH<this.WIDTH&&this.IMAGE_HEIGHT<this.HEIGHT&&(""!==t&&"b"!==t||(this.setScale(!0,!1,!0),this.calcStep("b"))),(this.IMAGE_WIDTH>this.WIDTH||this.IMAGE_HEIGHT>this.HEIGHT)&&(""!==t&&"s"!==t||(this.setScale(!1,!1,!0),this.calcStep("s")))},o.prototype.setScale=function(t,e,i){if(void 0===e&&(e=!1),void 0===i&&(i=!1),!this.lock&&!(!t&&this.imageMin<20||t&&this.IMAGE_WIDTH>100*this.imageOriginMax)){t?this.scaleStep++:this.scaleStep--;var a=0,o=0,r=s(this.mouse||[],2),n=r[0],h=r[1];e&&(a=(n-this.originX)/this.scale,o=(h-this.originY)/this.scale);var l=Math.abs(this.scaleStep),c=this.IMAGE_WIDTH;if(this.IMAGE_WIDTH=Math.round(this.IMAGE_ORIGIN_WIDTH*Math.pow(this.scaleStep>=0?1.05:.95,l)),this.IMAGE_HEIGHT=Math.round(this.IMAGE_ORIGIN_HEIGHT*Math.pow(this.scaleStep>=0?1.05:.95,l)),e)this.originX=n-a*this.scale,this.originY=h-o*this.scale;else{var d=this.IMAGE_WIDTH/c;this.originX=this.WIDTH/2-(this.WIDTH/2-this.originX)*d,this.originY=this.HEIGHT/2-(this.HEIGHT/2-this.originY)*d}i||this.update()}},o.prototype.fitZoom=function(){this.calcStep(),this.IMAGE_HEIGHT/this.IMAGE_WIDTH>=this.HEIGHT/this.WIDTH?(this.IMAGE_WIDTH=this.IMAGE_ORIGIN_WIDTH/(this.IMAGE_ORIGIN_HEIGHT/this.HEIGHT),this.IMAGE_HEIGHT=this.HEIGHT):(this.IMAGE_WIDTH=this.WIDTH,this.IMAGE_HEIGHT=this.IMAGE_ORIGIN_HEIGHT/(this.IMAGE_ORIGIN_WIDTH/this.WIDTH)),this.originX=(this.WIDTH-this.IMAGE_WIDTH)/2,this.originY=(this.HEIGHT-this.IMAGE_HEIGHT)/2,this.update()},o.prototype.setFocusMode=function(t){this.focusMode=t,this.update()},o.prototype.destroy=function(){this.canvas&&(this.image.removeEventListener("load",this.handleLoad),this.canvas.removeEventListener("contextmenu",this.handleContextmenu),this.canvas.removeEventListener("mousewheel",this.handleMousewheel),this.canvas.removeEventListener("wheel",this.handleMousewheel),this.canvas.removeEventListener("mousedown",this.handleMouseDown),this.canvas.removeEventListener("touchend",this.handleMouseDown),this.canvas.removeEventListener("mousemove",this.handleMouseMove),this.canvas.removeEventListener("touchmove",this.handleMouseMove),this.canvas.removeEventListener("mouseup",this.handleMouseUp),this.canvas.removeEventListener("touchend",this.handleMouseUp),this.canvas.removeEventListener("dblclick",this.handleDblclick),document.body.removeEventListener("keydown",this.handleKeydown,!0),document.body.removeEventListener("keyup",this.handleKeyup,!0),this.canvas.width=this.WIDTH,this.canvas.height=this.HEIGHT,this.canvas.style.width="",this.canvas.style.height="",this.canvas.style.userSelect="")},o.prototype.resize=function(){this.canvas&&(this.canvas.removeAttribute("width"),this.canvas.removeAttribute("height"),this.canvas.style.width="",this.canvas.style.height="",this.initSetting(),this.update())},o}(l);export{S as default};
|
|
8
8
|
//# sourceMappingURL=canvas-select.esm.js.map
|