UNPKG

@etsoo/editor

Version:

ETSOO Free WYSIWYG HTML Editor

1 lines 310 kB
"use strict";(self.webpackChunk_etsoo_editor=self.webpackChunk_etsoo_editor||[]).push([[663],{663(t,e,s){function i(t,e,s){return(e=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var s=t[Symbol.toPrimitive];if(void 0!==s){var i=s.call(t,e);if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t,"string");return"symbol"==typeof e?e:e+""}(e))in t?Object.defineProperty(t,e,{value:s,enumerable:!0,configurable:!0,writable:!0}):t[e]=s,t}s.r(e),s.d(e,{ActiveSelection:()=>Fo,BaseBrush:()=>Nn,BaseFabricObject:()=>Qs,Canvas:()=>En,Canvas2dFilterBackend:()=>Lo,CanvasDOMManager:()=>cn,Circle:()=>Jn,CircleBrush:()=>Qn,ClipPathLayout:()=>Eo,Color:()=>ts,Control:()=>li,Ellipse:()=>no,FabricImage:()=>Wo,FabricObject:()=>Bi,FabricText:()=>po,FitContentLayout:()=>Tr,FixedLayout:()=>Ao,Gradient:()=>zn,Group:()=>Mr,IText:()=>Mo,Image:()=>Wo,InteractiveFabricObject:()=>Fi,Intersection:()=>Ks,LayoutManager:()=>kr,LayoutStrategy:()=>wr,Line:()=>so,Object:()=>Bi,Observable:()=>nt,Path:()=>Un,Pattern:()=>Hn,PatternBrush:()=>to,PencilBrush:()=>qn,Point:()=>lt,Polygon:()=>ho,Polyline:()=>ao,Rect:()=>yr,Shadow:()=>Ps,SprayBrush:()=>Zn,StaticCanvas:()=>ue,StaticCanvasDOMManager:()=>ie,Text:()=>po,Textbox:()=>Po,Triangle:()=>io,WebGLFilterBackend:()=>Bo,cache:()=>y,classRegistry:()=>it,config:()=>n,controlsUtils:()=>Sn,createCollectionMixin:()=>dt,filters:()=>Wa,getEnv:()=>f,getFabricDocument:()=>p,getFabricWindow:()=>m,getFilterBackend:()=>$o,iMatrix:()=>T,initFilterBackend:()=>Io,isPutImageFaster:()=>ra,isWebGLPipelineState:()=>ia,loadSVGFromString:()=>ea,loadSVGFromURL:()=>sa,parseSVGDocument:()=>ta,runningAnimations:()=>rt,setEnv:()=>g,setFilterBackend:()=>Xo,util:()=>hn,version:()=>_});class r{constructor(){i(this,"browserShadowBlurConstant",1),i(this,"DPI",96),i(this,"devicePixelRatio","undefined"!=typeof window?window.devicePixelRatio:1),i(this,"perfLimitSizeTotal",2097152),i(this,"maxCacheSideLimit",4096),i(this,"minCacheSideLimit",256),i(this,"disableStyleCopyPaste",!1),i(this,"enableGLFiltering",!0),i(this,"textureSize",4096),i(this,"forceGLPutImageData",!1),i(this,"cachesBoundsOfCurve",!1),i(this,"fontPaths",{}),i(this,"NUM_FRACTION_DIGITS",4)}}const n=new class extends r{constructor(t){super(),this.configure(t)}configure(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};Object.assign(this,t)}addFonts(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.fontPaths={...this.fontPaths,...t}}removeFonts(){(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]).forEach((t=>{delete this.fontPaths[t]}))}clearFonts(){this.fontPaths={}}restoreDefaults(t){const e=new r,s=(null==t?void 0:t.reduce(((t,s)=>(t[s]=e[s],t)),{}))||e;this.configure(s)}},o=function(t){for(var e=arguments.length,s=new Array(e>1?e-1:0),i=1;i<e;i++)s[i-1]=arguments[i];return console[t]("fabric",...s)};class a extends Error{constructor(t,e){super(`fabric: ${t}`,e)}}class h extends a{constructor(t){super(`${t} 'options.signal' is in 'aborted' state`)}}class l{}class c extends l{testPrecision(t,e){const s=`precision ${e} float;\nvoid main(){}`,i=t.createShader(t.FRAGMENT_SHADER);return!!i&&(t.shaderSource(i,s),t.compileShader(i),!!t.getShaderParameter(i,t.COMPILE_STATUS))}queryWebGL(t){const e=t.getContext("webgl");e&&(this.maxTextureSize=e.getParameter(e.MAX_TEXTURE_SIZE),this.GLPrecision=["highp","mediump","lowp"].find((t=>this.testPrecision(e,t))),e.getExtension("WEBGL_lose_context").loseContext(),o("log",`WebGL: max texture size ${this.maxTextureSize}`))}isSupported(t){return!!this.maxTextureSize&&this.maxTextureSize>=t}}const u={};let d;const g=t=>{d=t},f=()=>d||(d={document,window,isTouchSupported:"ontouchstart"in window||"ontouchstart"in document||window&&window.navigator&&window.navigator.maxTouchPoints>0,WebGLProbe:new c,dispose(){},copyPasteData:u}),p=()=>f().document,m=()=>f().window,v=()=>{var t;return Math.max(null!==(t=n.devicePixelRatio)&&void 0!==t?t:m().devicePixelRatio,1)},y=new class{constructor(){i(this,"boundsOfCurveCache",{}),this.charWidthsCache=new Map}getFontCache(t){let{fontFamily:e,fontStyle:s,fontWeight:i}=t;e=e.toLowerCase();const r=this.charWidthsCache;r.has(e)||r.set(e,new Map);const n=r.get(e),o=`${s.toLowerCase()}_${(i+"").toLowerCase()}`;return n.has(o)||n.set(o,new Map),n.get(o)}clearFontCache(t){t?this.charWidthsCache.delete((t||"").toLowerCase()):this.charWidthsCache=new Map}limitDimsByArea(t){const{perfLimitSizeTotal:e}=n,s=Math.sqrt(e*t);return[Math.floor(s),Math.floor(e/s)]}},_="7.2.0";function x(){}const C=Math.PI/2,b=Math.PI/4,S=2*Math.PI,w=Math.PI/180,T=Object.freeze([1,0,0,1,0,0]),O=16,k=.4477152502,D="center",M="left",P="top",E="bottom",A="right",j="none",F=/\r?\n/,L="moving",B="scaling",R="rotating",I="rotate",$="skewing",X="resizing",Y="modifyPoly",W="modifyPath",V="changed",G="scale",z="scaleX",H="scaleY",N="skewX",U="skewY",q="fill",K="stroke",J="modified",Q="ltr",Z="rtl",tt="normal",et="json",st="svg",it=new class{constructor(){this[et]=new Map,this[st]=new Map}has(t){return this[et].has(t)}getClass(t){const e=this[et].get(t);if(!e)throw new a(`No class registered for ${t}`);return e}setClass(t,e){e?this[et].set(e,t):(this[et].set(t.type,t),this[et].set(t.type.toLowerCase(),t))}getSVGClass(t){return this[st].get(t)}setSVGClass(t,e){this[st].set(null!=e?e:t.type.toLowerCase(),t)}},rt=new class extends Array{remove(t){const e=this.indexOf(t);e>-1&&this.splice(e,1)}cancelAll(){const t=this.splice(0);return t.forEach((t=>t.abort())),t}cancelByCanvas(t){if(!t)return[];const e=this.filter((e=>{var s;return e.target===t||"object"==typeof e.target&&(null===(s=e.target)||void 0===s?void 0:s.canvas)===t}));return e.forEach((t=>t.abort())),e}cancelByTarget(t){if(!t)return[];const e=this.filter((e=>e.target===t));return e.forEach((t=>t.abort())),e}};class nt{constructor(){i(this,"__eventListeners",{})}on(t,e){if(this.__eventListeners||(this.__eventListeners={}),"object"==typeof t)return Object.entries(t).forEach((t=>{let[e,s]=t;this.on(e,s)})),()=>this.off(t);if(e){const s=t;return this.__eventListeners[s]||(this.__eventListeners[s]=[]),this.__eventListeners[s].push(e),()=>this.off(s,e)}return()=>!1}once(t,e){if("object"==typeof t){const e=[];return Object.entries(t).forEach((t=>{let[s,i]=t;e.push(this.once(s,i))})),()=>e.forEach((t=>t()))}if(e){const s=this.on(t,(function(){for(var t=arguments.length,i=new Array(t),r=0;r<t;r++)i[r]=arguments[r];e.call(this,...i),s()}));return s}return()=>!1}_removeEventListener(t,e){if(this.__eventListeners[t])if(e){const s=this.__eventListeners[t],i=s.indexOf(e);i>-1&&s.splice(i,1)}else this.__eventListeners[t]=[]}off(t,e){if(this.__eventListeners)if(void 0===t)for(const t in this.__eventListeners)this._removeEventListener(t);else"object"==typeof t?Object.entries(t).forEach((t=>{let[e,s]=t;this._removeEventListener(e,s)})):this._removeEventListener(t,e)}fire(t,e){var s;if(!this.__eventListeners)return;const i=null===(s=this.__eventListeners[t])||void 0===s?void 0:s.concat();if(i)for(let t=0;t<i.length;t++)i[t].call(this,e||{})}}const ot=(t,e)=>{const s=t.indexOf(e);return-1!==s&&t.splice(s,1),t},at=t=>{if(0===t)return 1;switch(Math.abs(t)/C){case 1:case 3:return 0;case 2:return-1}return Math.cos(t)},ht=t=>{if(0===t)return 0;const e=t/C,s=Math.sign(t);switch(e){case 1:return s;case 2:return 0;case 3:return-s}return Math.sin(t)};class lt{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;"object"==typeof t?(this.x=t.x,this.y=t.y):(this.x=t,this.y=e)}add(t){return new lt(this.x+t.x,this.y+t.y)}addEquals(t){return this.x+=t.x,this.y+=t.y,this}scalarAdd(t){return new lt(this.x+t,this.y+t)}scalarAddEquals(t){return this.x+=t,this.y+=t,this}subtract(t){return new lt(this.x-t.x,this.y-t.y)}subtractEquals(t){return this.x-=t.x,this.y-=t.y,this}scalarSubtract(t){return new lt(this.x-t,this.y-t)}scalarSubtractEquals(t){return this.x-=t,this.y-=t,this}multiply(t){return new lt(this.x*t.x,this.y*t.y)}scalarMultiply(t){return new lt(this.x*t,this.y*t)}scalarMultiplyEquals(t){return this.x*=t,this.y*=t,this}divide(t){return new lt(this.x/t.x,this.y/t.y)}scalarDivide(t){return new lt(this.x/t,this.y/t)}scalarDivideEquals(t){return this.x/=t,this.y/=t,this}eq(t){return this.x===t.x&&this.y===t.y}lt(t){return this.x<t.x&&this.y<t.y}lte(t){return this.x<=t.x&&this.y<=t.y}gt(t){return this.x>t.x&&this.y>t.y}gte(t){return this.x>=t.x&&this.y>=t.y}lerp(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.5;return e=Math.max(Math.min(1,e),0),new lt(this.x+(t.x-this.x)*e,this.y+(t.y-this.y)*e)}distanceFrom(t){const e=this.x-t.x,s=this.y-t.y;return Math.sqrt(e*e+s*s)}midPointFrom(t){return this.lerp(t)}min(t){return new lt(Math.min(this.x,t.x),Math.min(this.y,t.y))}max(t){return new lt(Math.max(this.x,t.x),Math.max(this.y,t.y))}toString(){return`${this.x},${this.y}`}setXY(t,e){return this.x=t,this.y=e,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setFromPoint(t){return this.x=t.x,this.y=t.y,this}swap(t){const e=this.x,s=this.y;this.x=t.x,this.y=t.y,t.x=e,t.y=s}clone(){return new lt(this.x,this.y)}rotate(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:ct;const s=ht(t),i=at(t),r=this.subtract(e);return new lt(r.x*i-r.y*s,r.x*s+r.y*i).add(e)}transform(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return new lt(t[0]*this.x+t[2]*this.y+(e?0:t[4]),t[1]*this.x+t[3]*this.y+(e?0:t[5]))}}const ct=new lt(0,0),ut=t=>!!t&&Array.isArray(t._objects);function dt(t){class e extends t{constructor(){super(...arguments),i(this,"_objects",[])}_onObjectAdded(t){}_onObjectRemoved(t){}_onStackOrderChanged(t){}add(){for(var t=arguments.length,e=new Array(t),s=0;s<t;s++)e[s]=arguments[s];const i=this._objects.push(...e);return e.forEach((t=>this._onObjectAdded(t))),i}insertAt(t){for(var e=arguments.length,s=new Array(e>1?e-1:0),i=1;i<e;i++)s[i-1]=arguments[i];return this._objects.splice(t,0,...s),s.forEach((t=>this._onObjectAdded(t))),this._objects.length}remove(){const t=this._objects,e=[];for(var s=arguments.length,i=new Array(s),r=0;r<s;r++)i[r]=arguments[r];return i.forEach((s=>{const i=t.indexOf(s);-1!==i&&(t.splice(i,1),e.push(s),this._onObjectRemoved(s))})),e}forEachObject(t){this.getObjects().forEach(((e,s,i)=>t(e,s,i)))}getObjects(){for(var t=arguments.length,e=new Array(t),s=0;s<t;s++)e[s]=arguments[s];return 0===e.length?[...this._objects]:this._objects.filter((t=>t.isType(...e)))}item(t){return this._objects[t]}isEmpty(){return 0===this._objects.length}size(){return this._objects.length}contains(t,s){return!!this._objects.includes(t)||!!s&&this._objects.some((s=>s instanceof e&&s.contains(t,!0)))}complexity(){return this._objects.reduce(((t,e)=>t+(e.complexity?e.complexity():0)),0)}sendObjectToBack(t){return!(!t||t===this._objects[0]||(ot(this._objects,t),this._objects.unshift(t),this._onStackOrderChanged(t),0))}bringObjectToFront(t){return!(!t||t===this._objects[this._objects.length-1]||(ot(this._objects,t),this._objects.push(t),this._onStackOrderChanged(t),0))}sendObjectBackwards(t,e){if(!t)return!1;const s=this._objects.indexOf(t);if(0!==s){const i=this.findNewLowerIndex(t,s,e);return ot(this._objects,t),this._objects.splice(i,0,t),this._onStackOrderChanged(t),!0}return!1}bringObjectForward(t,e){if(!t)return!1;const s=this._objects.indexOf(t);if(s!==this._objects.length-1){const i=this.findNewUpperIndex(t,s,e);return ot(this._objects,t),this._objects.splice(i,0,t),this._onStackOrderChanged(t),!0}return!1}moveObjectTo(t,e){return t!==this._objects[e]&&(ot(this._objects,t),this._objects.splice(e,0,t),this._onStackOrderChanged(t),!0)}findNewLowerIndex(t,e,s){let i;if(s){i=e;for(let s=e-1;s>=0;--s)if(t.isOverlapping(this._objects[s])){i=s;break}}else i=e-1;return i}findNewUpperIndex(t,e,s){let i;if(s){i=e;for(let s=e+1;s<this._objects.length;++s)if(t.isOverlapping(this._objects[s])){i=s;break}}else i=e+1;return i}collectObjects(t){let{left:e,top:s,width:i,height:r}=t,{includeIntersecting:n=!0}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const o=[],a=new lt(e,s),h=a.add(new lt(i,r));for(let t=this._objects.length-1;t>=0;t--){const e=this._objects[t];e.selectable&&e.visible&&(n&&e.intersectsWithRect(a,h)||e.isContainedWithinRect(a,h)||n&&e.containsPoint(a)||n&&e.containsPoint(h))&&o.push(e)}return o}}return e}class gt extends nt{_setOptions(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};for(const e in t)this.set(e,t[e])}_setObject(t){for(const e in t)this._set(e,t[e])}set(t,e){return"object"==typeof t?this._setObject(t):this._set(t,e),this}_set(t,e){this[t]=e}toggle(t){const e=this.get(t);return"boolean"==typeof e&&this.set(t,!e),this}get(t){return this[t]}}function ft(t){return m().requestAnimationFrame(t)}function pt(t){return m().cancelAnimationFrame(t)}let mt=0;const vt=()=>mt++,yt=()=>{const t=p().createElement("canvas");if(!t||void 0===t.getContext)throw new a("Failed to create `canvas` element");return t},_t=()=>p().createElement("img"),xt=t=>{const e=yt();return e.width=t.width,e.height=t.height,e},Ct=(t,e,s)=>t.toDataURL(`image/${e}`,s),bt=(t,e,s)=>new Promise(((i,r)=>{t.toBlob(i,`image/${e}`,s)})),St=t=>t*w,wt=t=>t/w,Tt=t=>t.every(((t,e)=>t===T[e])),Ot=(t,e,s)=>new lt(t).transform(e,s),kt=t=>{const e=1/(t[0]*t[3]-t[1]*t[2]),s=[e*t[3],-e*t[1],-e*t[2],e*t[0],0,0],{x:i,y:r}=new lt(t[4],t[5]).transform(s,!0);return s[4]=-i,s[5]=-r,s},Dt=(t,e,s)=>[t[0]*e[0]+t[2]*e[1],t[1]*e[0]+t[3]*e[1],t[0]*e[2]+t[2]*e[3],t[1]*e[2]+t[3]*e[3],s?0:t[0]*e[4]+t[2]*e[5]+t[4],s?0:t[1]*e[4]+t[3]*e[5]+t[5]],Mt=(t,e)=>t.reduceRight(((t,s)=>s&&t?Dt(s,t,e):s||t),void 0)||T.concat(),Pt=t=>{let[e,s]=t;return Math.atan2(s,e)},Et=t=>{const e=Pt(t),s=Math.pow(t[0],2)+Math.pow(t[1],2),i=Math.sqrt(s),r=(t[0]*t[3]-t[2]*t[1])/i,n=Math.atan2(t[0]*t[2]+t[1]*t[3],s);return{angle:wt(e),scaleX:i,scaleY:r,skewX:wt(n),skewY:0,translateX:t[4]||0,translateY:t[5]||0}},At=function(t){return[1,0,0,1,t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:0]};function jt(){let{angle:t=0}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{x:e=0,y:s=0}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const i=St(t),r=at(i),n=ht(i);return[r,n,-n,r,e?e-(r*e-n*s):0,s?s-(n*e+r*s):0]}const Ft=function(t){return[t,0,0,arguments.length>1&&void 0!==arguments[1]?arguments[1]:t,0,0]},Lt=t=>Math.tan(St(t)),Bt=t=>[1,0,Lt(t),1,0,0],Rt=t=>[1,Lt(t),0,1,0,0],It=t=>{let{scaleX:e=1,scaleY:s=1,flipX:i=!1,flipY:r=!1,skewX:n=0,skewY:o=0}=t,a=Ft(i?-e:e,r?-s:s);return n&&(a=Dt(a,Bt(n),!0)),o&&(a=Dt(a,Rt(o),!0)),a},$t=t=>{const{translateX:e=0,translateY:s=0,angle:i=0}=t;let r=At(e,s);i&&(r=Dt(r,jt({angle:i})));const n=It(t);return Tt(n)||(r=Dt(r,n)),r},Xt=function(t){let{signal:e,crossOrigin:s=null}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise((function(i,r){if(e&&e.aborted)return r(new h("loadImage"));const n=_t();let o;e&&(o=function(t){n.src="",r(t)},e.addEventListener("abort",o,{once:!0}));const l=function(){n.onload=n.onerror=null,o&&(null==e||e.removeEventListener("abort",o)),i(n)};t?(n.onload=l,n.onerror=function(){o&&(null==e||e.removeEventListener("abort",o)),r(new a(`Error loading ${n.src}`))},s&&(n.crossOrigin=s),n.src=t):l()}))},Yt=function(t){let{signal:e,reviver:s=x}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((i,r)=>{const n=[];e&&e.addEventListener("abort",r,{once:!0}),Promise.all(t.map((t=>it.getClass(t.type).fromObject(t,{signal:e}).then((e=>(s(t,e),n.push(e),e)))))).then(i).catch((t=>{n.forEach((t=>{t.dispose&&t.dispose()})),r(t)})).finally((()=>{e&&e.removeEventListener("abort",r)}))}))},Wt=function(t){let{signal:e}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise(((s,i)=>{const r=[];e&&e.addEventListener("abort",i,{once:!0});const n=Object.values(t).map((t=>t&&t.type&&it.has(t.type)?Yt([t],{signal:e}).then((t=>{let[e]=t;return r.push(e),e})):t)),o=Object.keys(t);Promise.all(n).then((t=>t.reduce(((t,e,s)=>(t[o[s]]=e,t)),{}))).then(s).catch((t=>{r.forEach((t=>{t.dispose&&t.dispose()})),i(t)})).finally((()=>{e&&e.removeEventListener("abort",i)}))}))},Vt=function(t){return(arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]).reduce(((e,s)=>(s in t&&(e[s]=t[s]),e)),{})},Gt=(t,e)=>Object.keys(t).reduce(((s,i)=>(e(t[i],i,t)&&(s[i]=t[i]),s)),{}),zt=(t,e)=>parseFloat(Number(t).toFixed(e)),Ht=t=>"matrix("+t.map((t=>zt(t,n.NUM_FRACTION_DIGITS))).join(" ")+")",Nt=t=>!!t&&void 0!==t.toLive,Ut=t=>!!t&&"function"==typeof t.toObject,qt=t=>!!t&&void 0!==t.offsetX&&"source"in t,Kt=t=>!!t&&"multiSelectionStacking"in t;function Jt(t){const e=t&&Qt(t);let s=0,i=0;if(!t||!e)return{left:s,top:i};let r=t;const n=e.documentElement,o=e.body||{scrollLeft:0,scrollTop:0};for(;r&&(r.parentNode||r.host)&&(r=r.parentNode||r.host,r===e?(s=o.scrollLeft||n.scrollLeft||0,i=o.scrollTop||n.scrollTop||0):(s+=r.scrollLeft||0,i+=r.scrollTop||0),1!==r.nodeType||"fixed"!==r.style.position););return{left:s,top:i}}const Qt=t=>t.ownerDocument||null,Zt=t=>{var e;return(null===(e=t.ownerDocument)||void 0===e?void 0:e.defaultView)||null},te=function(t,e,s){let{width:i,height:r}=s,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;t.width=i,t.height=r,n>1&&(t.setAttribute("width",(i*n).toString()),t.setAttribute("height",(r*n).toString()),e.scale(n,n))},ee=(t,e)=>{let{width:s,height:i}=e;s&&(t.style.width="number"==typeof s?`${s}px`:s),i&&(t.style.height="number"==typeof i?`${i}px`:i)};function se(t){return void 0!==t.onselectstart&&(t.onselectstart=()=>!1),t.style.userSelect=j,t}class ie{constructor(t){i(this,"_originalCanvasStyle",void 0),i(this,"lower",void 0);const e=this.createLowerCanvas(t);this.lower={el:e,ctx:e.getContext("2d")}}createLowerCanvas(t){const e=(s=t)&&void 0!==s.getContext?t:t&&p().getElementById(t)||yt();var s;if(e.hasAttribute("data-fabric"))throw new a("Trying to initialize a canvas that has already been initialized. Did you forget to dispose the canvas?");return this._originalCanvasStyle=e.style.cssText,e.setAttribute("data-fabric","main"),e.classList.add("lower-canvas"),e}cleanupDOM(t){let{width:e,height:s}=t;const{el:i}=this.lower;i.classList.remove("lower-canvas"),i.removeAttribute("data-fabric"),i.setAttribute("width",`${e}`),i.setAttribute("height",`${s}`),i.style.cssText=this._originalCanvasStyle||"",this._originalCanvasStyle=void 0}setDimensions(t,e){const{el:s,ctx:i}=this.lower;te(s,i,t,e)}setCSSDimensions(t){ee(this.lower.el,t)}calcOffset(){return function(t){var e;const s=t&&Qt(t),i={left:0,top:0};if(!s)return i;const r=(null===(e=Zt(t))||void 0===e?void 0:e.getComputedStyle(t,null))||{};i.left+=parseInt(r.borderLeftWidth,10)||0,i.top+=parseInt(r.borderTopWidth,10)||0,i.left+=parseInt(r.paddingLeft,10)||0,i.top+=parseInt(r.paddingTop,10)||0;let n={left:0,top:0};const o=s.documentElement;void 0!==t.getBoundingClientRect&&(n=t.getBoundingClientRect());const a=Jt(t);return{left:n.left+a.left-(o.clientLeft||0)+i.left,top:n.top+a.top-(o.clientTop||0)+i.top}}(this.lower.el)}dispose(){f().dispose(this.lower.el),delete this.lower}}const re={backgroundVpt:!0,backgroundColor:"",overlayVpt:!0,overlayColor:"",includeDefaultValues:!0,svgViewportTransformation:!0,renderOnAddRemove:!0,skipOffscreen:!0,enableRetinaScaling:!0,imageSmoothingEnabled:!0,controlsAboveOverlay:!1,allowTouchScrolling:!1,viewportTransform:[...T],patternQuality:"best"},ne=t=>t.toString().replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/'/g,"&apos;").replace(/</g,"&lt;").replace(/>/g,"&gt;");let oe;const ae=t=>{if(oe||oe||(oe="Intl"in m()&&"Segmenter"in Intl&&new Intl.Segmenter(void 0,{granularity:"grapheme"})),oe){const e=oe.segment(t);return Array.from(e).map((t=>{let{segment:e}=t;return e}))}return he(t)},he=t=>{const e=[];for(let s,i=0;i<t.length;i++)!1!==(s=le(t,i))&&e.push(s);return e},le=(t,e)=>{const s=t.charCodeAt(e);if(isNaN(s))return"";if(s<55296||s>57343)return t.charAt(e);if(55296<=s&&s<=56319){if(t.length<=e+1)throw"High surrogate without following low surrogate";const s=t.charCodeAt(e+1);if(56320>s||s>57343)throw"High surrogate without following low surrogate";return t.charAt(e)+t.charAt(e+1)}if(0===e)throw"Low surrogate without preceding high surrogate";const i=t.charCodeAt(e-1);if(55296>i||i>56319)throw"Low surrogate without preceding high surrogate";return!1};var ce=Object.freeze({__proto__:null,capitalize:function(t){let e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return`${t.charAt(0).toUpperCase()}${e?t.slice(1):t.slice(1).toLowerCase()}`},escapeXml:ne,graphemeSplit:ae});class ue extends(dt(gt)){get lowerCanvasEl(){var t;return null===(t=this.elements.lower)||void 0===t?void 0:t.el}get contextContainer(){var t;return null===(t=this.elements.lower)||void 0===t?void 0:t.ctx}static getDefaults(){return ue.ownDefaults}constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(),Object.assign(this,this.constructor.getDefaults()),this.set(e),this.initElements(t),this._setDimensionsImpl({width:this.width||this.elements.lower.el.width||0,height:this.height||this.elements.lower.el.height||0}),this.skipControlsDrawing=!1,this.viewportTransform=[...this.viewportTransform],this.calcViewportBoundaries()}initElements(t){this.elements=new ie(t)}add(){const t=super.add(...arguments);return arguments.length>0&&this.renderOnAddRemove&&this.requestRenderAll(),t}insertAt(t){for(var e=arguments.length,s=new Array(e>1?e-1:0),i=1;i<e;i++)s[i-1]=arguments[i];const r=super.insertAt(t,...s);return s.length>0&&this.renderOnAddRemove&&this.requestRenderAll(),r}remove(){const t=super.remove(...arguments);return t.length>0&&this.renderOnAddRemove&&this.requestRenderAll(),t}_onObjectAdded(t){t.canvas&&t.canvas!==this&&(o("warn","Canvas is trying to add an object that belongs to a different canvas.\nResulting to default behavior: removing object from previous canvas and adding to new canvas"),t.canvas.remove(t)),t._set("canvas",this),t.setCoords(),this.fire("object:added",{target:t}),t.fire("added",{target:this})}_onObjectRemoved(t){t._set("canvas",void 0),this.fire("object:removed",{target:t}),t.fire("removed",{target:this})}_onStackOrderChanged(){this.renderOnAddRemove&&this.requestRenderAll()}getRetinaScaling(){return this.enableRetinaScaling?v():1}calcOffset(){return this._offset=this.elements.calcOffset()}getWidth(){return this.width}getHeight(){return this.height}_setDimensionsImpl(t){let{cssOnly:e=!1,backstoreOnly:s=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e){const e={width:this.width,height:this.height,...t};this.elements.setDimensions(e,this.getRetinaScaling()),this.hasLostContext=!0,this.width=e.width,this.height=e.height}s||this.elements.setCSSDimensions(t),this.calcOffset()}setDimensions(t,e){this._setDimensionsImpl(t,e),e&&e.cssOnly||this.requestRenderAll()}getZoom(){return this.viewportTransform[0]}setViewportTransform(t){this.viewportTransform=t,this.calcViewportBoundaries(),this.renderOnAddRemove&&this.requestRenderAll()}zoomToPoint(t,e){const s=t,i=[...this.viewportTransform],r=Ot(t,kt(i));i[0]=e,i[3]=e;const n=Ot(r,i);i[4]+=s.x-n.x,i[5]+=s.y-n.y,this.setViewportTransform(i)}setZoom(t){this.zoomToPoint(new lt(0,0),t)}absolutePan(t){const e=[...this.viewportTransform];return e[4]=-t.x,e[5]=-t.y,this.setViewportTransform(e)}relativePan(t){return this.absolutePan(new lt(-t.x-this.viewportTransform[4],-t.y-this.viewportTransform[5]))}getElement(){return this.elements.lower.el}clearContext(t){t.clearRect(0,0,this.width,this.height)}getContext(){return this.elements.lower.ctx}clear(){this.remove(...this.getObjects()),this.backgroundImage=void 0,this.overlayImage=void 0,this.backgroundColor="",this.overlayColor="",this.clearContext(this.getContext()),this.fire("canvas:cleared"),this.renderOnAddRemove&&this.requestRenderAll()}renderAll(){this.cancelRequestedRender(),this.destroyed||this.renderCanvas(this.getContext(),this._objects)}renderAndReset(){this.nextRenderHandle=0,this.renderAll()}requestRenderAll(){this.nextRenderHandle||this.disposed||this.destroyed||(this.nextRenderHandle=ft((()=>this.renderAndReset())))}calcViewportBoundaries(){const t=this.width,e=this.height,s=kt(this.viewportTransform),i=Ot({x:0,y:0},s),r=Ot({x:t,y:e},s),n=i.min(r),o=i.max(r);return this.vptCoords={tl:n,tr:new lt(o.x,n.y),bl:new lt(n.x,o.y),br:o}}cancelRequestedRender(){this.nextRenderHandle&&(pt(this.nextRenderHandle),this.nextRenderHandle=0)}drawControls(t){}renderCanvas(t,e){if(this.destroyed)return;const s=this.viewportTransform,i=this.clipPath;this.calcViewportBoundaries(),this.clearContext(t),t.imageSmoothingEnabled=this.imageSmoothingEnabled,t.patternQuality=this.patternQuality,this.fire("before:render",{ctx:t}),this._renderBackground(t),t.save(),t.transform(s[0],s[1],s[2],s[3],s[4],s[5]),this._renderObjects(t,e),t.restore(),this.controlsAboveOverlay||this.skipControlsDrawing||this.drawControls(t),i&&(i._set("canvas",this),i.shouldCache(),i._transformDone=!0,i.renderCache({forClipping:!0}),this.drawClipPathOnCanvas(t,i)),this._renderOverlay(t),this.controlsAboveOverlay&&!this.skipControlsDrawing&&this.drawControls(t),this.fire("after:render",{ctx:t}),this.__cleanupTask&&(this.__cleanupTask(),this.__cleanupTask=void 0)}drawClipPathOnCanvas(t,e){const s=this.viewportTransform;t.save(),t.transform(...s),t.globalCompositeOperation="destination-in",e.transform(t),t.scale(1/e.zoomX,1/e.zoomY),t.drawImage(e._cacheCanvas,-e.cacheTranslationX,-e.cacheTranslationY),t.restore()}_renderObjects(t,e){for(let s=0,i=e.length;s<i;++s)e[s]&&e[s].render(t)}_renderBackgroundOrOverlay(t,e){const s=this[`${e}Color`],i=this[`${e}Image`],r=this.viewportTransform,n=this[`${e}Vpt`];if(!s&&!i)return;const o=Nt(s);if(s){if(t.save(),t.beginPath(),t.moveTo(0,0),t.lineTo(this.width,0),t.lineTo(this.width,this.height),t.lineTo(0,this.height),t.closePath(),t.fillStyle=o?s.toLive(t):s,n&&t.transform(...r),o){t.transform(1,0,0,1,s.offsetX||0,s.offsetY||0);const e=s.gradientTransform||s.patternTransform;e&&t.transform(...e)}t.fill(),t.restore()}if(i){t.save();const{skipOffscreen:e}=this;this.skipOffscreen=n,n&&t.transform(...r),i.render(t),this.skipOffscreen=e,t.restore()}}_renderBackground(t){this._renderBackgroundOrOverlay(t,"background")}_renderOverlay(t){this._renderBackgroundOrOverlay(t,"overlay")}getCenterPoint(){return new lt(this.width/2,this.height/2)}centerObjectH(t){return this._centerObject(t,new lt(this.getCenterPoint().x,t.getCenterPoint().y))}centerObjectV(t){return this._centerObject(t,new lt(t.getCenterPoint().x,this.getCenterPoint().y))}centerObject(t){return this._centerObject(t,this.getCenterPoint())}viewportCenterObject(t){return this._centerObject(t,this.getVpCenter())}viewportCenterObjectH(t){return this._centerObject(t,new lt(this.getVpCenter().x,t.getCenterPoint().y))}viewportCenterObjectV(t){return this._centerObject(t,new lt(t.getCenterPoint().x,this.getVpCenter().y))}getVpCenter(){return Ot(this.getCenterPoint(),kt(this.viewportTransform))}_centerObject(t,e){t.setXY(e,D,D),t.setCoords(),this.renderOnAddRemove&&this.requestRenderAll()}toDatalessJSON(t){return this.toDatalessObject(t)}toObject(t){return this._toObjectMethod("toObject",t)}toJSON(){return this.toObject()}toDatalessObject(t){return this._toObjectMethod("toDatalessObject",t)}_toObjectMethod(t,e){const s=this.clipPath,i=s&&!s.excludeFromExport?this._toObject(s,t,e):null;return{version:_,...Vt(this,e),objects:this._objects.filter((t=>!t.excludeFromExport)).map((s=>this._toObject(s,t,e))),...this.__serializeBgOverlay(t,e),...i?{clipPath:i}:null}}_toObject(t,e,s){let i;this.includeDefaultValues||(i=t.includeDefaultValues,t.includeDefaultValues=!1);const r=t[e](s);return this.includeDefaultValues||(t.includeDefaultValues=!!i),r}__serializeBgOverlay(t,e){const s={},i=this.backgroundImage,r=this.overlayImage,n=this.backgroundColor,o=this.overlayColor;return Nt(n)?n.excludeFromExport||(s.background=n.toObject(e)):n&&(s.background=n),Nt(o)?o.excludeFromExport||(s.overlay=o.toObject(e)):o&&(s.overlay=o),i&&!i.excludeFromExport&&(s.backgroundImage=this._toObject(i,t,e)),r&&!r.excludeFromExport&&(s.overlayImage=this._toObject(r,t,e)),s}toSVG(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1?arguments[1]:void 0;t.reviver=e;const s=[];var i;return this._setSVGPreamble(s,t),this._setSVGHeader(s,t),this.clipPath&&s.push(`<g clip-path="url(#${ne(null!==(i=this.clipPath.clipPathId)&&void 0!==i?i:"")})" >\n`),this._setSVGBgOverlayColor(s,"background"),this._setSVGBgOverlayImage(s,"backgroundImage",e),this._setSVGObjects(s,e),this.clipPath&&s.push("</g>\n"),this._setSVGBgOverlayColor(s,"overlay"),this._setSVGBgOverlayImage(s,"overlayImage",e),s.push("</svg>"),s.join("")}_setSVGPreamble(t,e){e.suppressPreamble||t.push('<?xml version="1.0" encoding="',e.encoding||"UTF-8",'" standalone="no" ?>\n','<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" ','"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n')}_setSVGHeader(t,e){const s=e.width||`${this.width}`,i=e.height||`${this.height}`,r=n.NUM_FRACTION_DIGITS,o=e.viewBox;let a;if(o)a=`viewBox="${o.x} ${o.y} ${o.width} ${o.height}" `;else if(this.svgViewportTransformation){const t=this.viewportTransform;a=`viewBox="${zt(-t[4]/t[0],r)} ${zt(-t[5]/t[3],r)} ${zt(this.width/t[0],r)} ${zt(this.height/t[3],r)}" `}else a=`viewBox="0 0 ${this.width} ${this.height}" `;t.push("<svg ",'xmlns="http://www.w3.org/2000/svg" ','xmlns:xlink="http://www.w3.org/1999/xlink" ','version="1.1" ','width="',s,'" ','height="',i,'" ',a,'xml:space="preserve">\n',"<desc>Created with Fabric.js ",_,"</desc>\n","<defs>\n",this.createSVGFontFacesMarkup(),this.createSVGRefElementsMarkup(),this.createSVGClipPathMarkup(e),"</defs>\n")}createSVGClipPathMarkup(t){const e=this.clipPath;return e?(e.clipPathId=`CLIPPATH_${vt()}`,`<clipPath id="${e.clipPathId}" >\n${e.toClipPathSVG(t.reviver)}</clipPath>\n`):""}createSVGRefElementsMarkup(){return["background","overlay"].map((t=>{const e=this[`${t}Color`];if(Nt(e)){const s=this[`${t}Vpt`],i=this.viewportTransform,r={isType:()=>!1,width:this.width/(s?i[0]:1),height:this.height/(s?i[3]:1)};return e.toSVG(r,{additionalTransform:s?Ht(i):""})}})).join("")}createSVGFontFacesMarkup(){const t=[],e={},s=n.fontPaths;this._objects.forEach((function e(s){t.push(s),ut(s)&&s._objects.forEach(e)})),t.forEach((t=>{if(!(i=t)||"function"!=typeof i._renderText)return;var i;const{styles:r,fontFamily:n}=t;!e[n]&&s[n]&&(e[n]=!0,r&&Object.values(r).forEach((t=>{Object.values(t).forEach((t=>{let{fontFamily:i=""}=t;!e[i]&&s[i]&&(e[i]=!0)}))})))}));const i=Object.keys(e).map((t=>`\t\t@font-face {\n\t\t\tfont-family: '${t}';\n\t\t\tsrc: url('${s[t]}');\n\t\t}\n`)).join("");return i?`\t<style type="text/css"><![CDATA[\n${i}]]></style>\n`:""}_setSVGObjects(t,e){this.forEachObject((s=>{s.excludeFromExport||this._setSVGObject(t,s,e)}))}_setSVGObject(t,e,s){t.push(e.toSVG(s))}_setSVGBgOverlayImage(t,e,s){const i=this[e];i&&!i.excludeFromExport&&i.toSVG&&t.push(i.toSVG(s))}_setSVGBgOverlayColor(t,e){const s=this[`${e}Color`];if(s)if(Nt(s)){const i=s.repeat||"",r=this.width,n=this.height,o=this[`${e}Vpt`]?Ht(kt(this.viewportTransform)):"";t.push(`<rect transform="${o} translate(${r/2},${n/2})" x="${s.offsetX-r/2}" y="${s.offsetY-n/2}" width="${"repeat-y"!==i&&"no-repeat"!==i||!qt(s)?r:s.source.width}" height="${"repeat-x"!==i&&"no-repeat"!==i||!qt(s)?n:s.source.height}" fill="url(#SVGID_${s.id})"></rect>\n`)}else t.push('<rect x="0" y="0" width="100%" height="100%" ','fill="',s,'"',"></rect>\n")}loadFromJSON(t,e){let{signal:s}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!t)return Promise.reject(new a("`json` is undefined"));const{objects:i=[],...r}="string"==typeof t?JSON.parse(t):t,{backgroundImage:n,background:o,overlayImage:h,overlay:l,clipPath:c}=r,u=this.renderOnAddRemove;return this.renderOnAddRemove=!1,Promise.all([Yt(i,{reviver:e,signal:s}),Wt({backgroundImage:n,backgroundColor:o,overlayImage:h,overlayColor:l,clipPath:c},{signal:s})]).then((t=>{let[e,s]=t;return this.clear(),this.add(...e),this.set(r),this.set(s),this.renderOnAddRemove=u,this}))}clone(t){const e=this.toObject(t);return this.cloneWithoutData().loadFromJSON(e)}cloneWithoutData(){const t=xt(this);return new this.constructor(t)}toDataURL(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{format:e="png",quality:s=1,multiplier:i=1,enableRetinaScaling:r=!1}=t,n=i*(r?this.getRetinaScaling():1);return Ct(this.toCanvasElement(n,t),e,s)}toBlob(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{format:e="png",quality:s=1,multiplier:i=1,enableRetinaScaling:r=!1}=t,n=i*(r?this.getRetinaScaling():1);return bt(this.toCanvasElement(n,t),e,s)}toCanvasElement(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,{width:e,height:s,left:i,top:r,filter:n}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const o=(e||this.width)*t,a=(s||this.height)*t,h=this.getZoom(),l=this.width,c=this.height,u=this.skipControlsDrawing,d=h*t,g=this.viewportTransform,f=[d,0,0,d,(g[4]-(i||0))*t,(g[5]-(r||0))*t],p=this.enableRetinaScaling,m=xt({width:o,height:a}),v=n?this._objects.filter((t=>n(t))):this._objects;return this.enableRetinaScaling=!1,this.viewportTransform=f,this.width=o,this.height=a,this.skipControlsDrawing=!0,this.calcViewportBoundaries(),this.renderCanvas(m.getContext("2d"),v),this.viewportTransform=g,this.width=l,this.height=c,this.calcViewportBoundaries(),this.enableRetinaScaling=p,this.skipControlsDrawing=u,m}dispose(){return!this.disposed&&this.elements.cleanupDOM({width:this.width,height:this.height}),rt.cancelByCanvas(this),this.disposed=!0,new Promise(((t,e)=>{const s=()=>{this.destroy(),t(!0)};s.kill=e,this.__cleanupTask&&this.__cleanupTask.kill("aborted"),this.destroyed?t(!1):this.nextRenderHandle?this.__cleanupTask=s:s()}))}destroy(){this.destroyed=!0,this.cancelRequestedRender(),this.forEachObject((t=>t.dispose())),this._objects=[],this.backgroundImage&&this.backgroundImage.dispose(),this.backgroundImage=void 0,this.overlayImage&&this.overlayImage.dispose(),this.overlayImage=void 0,this.elements.dispose()}toString(){return`#<Canvas (${this.complexity()}): { objects: ${this._objects.length} }>`}}i(ue,"ownDefaults",re);const de=["touchstart","touchmove","touchend"],ge=t=>{const e=Jt(t.target),s=function(t){const e=t.changedTouches;return e&&e[0]?e[0]:t}(t);return new lt(s.clientX+e.left,s.clientY+e.top)},fe=t=>de.includes(t.type)||"touch"===t.pointerType,pe=t=>{t.preventDefault(),t.stopPropagation()},me=t=>{let e=0,s=0,i=0,r=0;for(let n=0,o=t.length;n<o;n++){const{x:o,y:a}=t[n];(o>i||!n)&&(i=o),(o<e||!n)&&(e=o),(a>r||!n)&&(r=a),(a<s||!n)&&(s=a)}return{left:e,top:s,width:i-e,height:r-s}},ve=(t,e)=>ye(t,Dt(e,t.calcOwnMatrix())),ye=(t,e)=>{const{translateX:s,translateY:i,scaleX:r,scaleY:n,...o}=Et(e),a=new lt(s,i);t.flipX=!1,t.flipY=!1,Object.assign(t,o),t.set({scaleX:r,scaleY:n}),t.setPositionByOrigin(a,D,D)},_e=t=>{t.scaleX=1,t.scaleY=1,t.skewX=0,t.skewY=0,t.flipX=!1,t.flipY=!1,t.rotate(0)},xe=t=>({scaleX:t.scaleX,scaleY:t.scaleY,skewX:t.skewX,skewY:t.skewY,angle:t.angle,left:t.left,flipX:t.flipX,flipY:t.flipY,top:t.top}),Ce=(t,e,s)=>{const i=t/2,r=e/2,n=[new lt(-i,-r),new lt(i,-r),new lt(-i,r),new lt(i,r)].map((t=>t.transform(s))),o=me(n);return new lt(o.width,o.height)},be=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:T;return Dt(kt(arguments.length>1&&void 0!==arguments[1]?arguments[1]:T),t)},Se=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:T,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:T;return t.transform(be(e,s))},we=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:T,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:T;return t.transform(be(e,s),!0)},Te=(t,e,s)=>{const i=be(e,s);return ye(t,Dt(i,t.calcOwnMatrix())),i},Oe={left:-.5,top:-.5,center:0,bottom:.5,right:.5},ke=t=>"string"==typeof t?Oe[t]:t-.5,De=new lt(1,0),Me=new lt,Pe=(t,e)=>t.rotate(e),Ee=(t,e)=>new lt(e).subtract(t),Ae=t=>t.distanceFrom(Me),je=(t,e)=>Math.atan2(Re(t,e),Ie(t,e)),Fe=t=>je(De,t),Le=t=>t.eq(Me)?t:t.scalarDivide(Ae(t)),Be=function(t){let e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return Le(new lt(-t.y,t.x).scalarMultiply(e?1:-1))},Re=(t,e)=>t.x*e.y-t.y*e.x,Ie=(t,e)=>t.x*e.x+t.y*e.y,$e=(t,e,s)=>{if(t.eq(e)||t.eq(s))return!0;const i=Re(e,s),r=Re(e,t),n=Re(s,t);return i>=0?r>=0&&n<=0:!(r<=0&&n>=0)},Xe="not-allowed";function Ye(t){return ke(t.originX)===ke(D)&&ke(t.originY)===ke(D)}function We(t){return.5-ke(t)}const Ve=(t,e)=>t[e],Ge=(t,e,s,i)=>({e:t,transform:e,pointer:new lt(s,i)});function ze(t,e,s){const i=s,r=Se(t.getCenterPoint(),t.canvas.viewportTransform,void 0),n=Fe(Ee(r,i))+S;return Math.round(n%S/b)}function He(t,e,s,i,r){var n;let{target:o,corner:a}=t;const h=o.controls[a],l=(null===(n=o.canvas)||void 0===n?void 0:n.getZoom())||1,c=o.padding/l,u=function(t,e,s,i){const r=t.getRelativeCenterPoint(),n=void 0!==s&&void 0!==i?t.translateToGivenOrigin(r,D,D,s,i):new lt(t.left,t.top);return(t.angle?e.rotate(-St(t.angle),r):e).subtract(n)}(o,new lt(i,r),e,s);return u.x>=c&&(u.x-=c),u.x<=-c&&(u.x+=c),u.y>=c&&(u.y-=c),u.y<=c&&(u.y+=c),u.x-=h.offsetX,u.y-=h.offsetY,u}const Ne=t=>t.replace(/\s+/g," "),Ue={aliceblue:"#F0F8FF",antiquewhite:"#FAEBD7",aqua:"#0FF",aquamarine:"#7FFFD4",azure:"#F0FFFF",beige:"#F5F5DC",bisque:"#FFE4C4",black:"#000",blanchedalmond:"#FFEBCD",blue:"#00F",blueviolet:"#8A2BE2",brown:"#A52A2A",burlywood:"#DEB887",cadetblue:"#5F9EA0",chartreuse:"#7FFF00",chocolate:"#D2691E",coral:"#FF7F50",cornflowerblue:"#6495ED",cornsilk:"#FFF8DC",crimson:"#DC143C",cyan:"#0FF",darkblue:"#00008B",darkcyan:"#008B8B",darkgoldenrod:"#B8860B",darkgray:"#A9A9A9",darkgrey:"#A9A9A9",darkgreen:"#006400",darkkhaki:"#BDB76B",darkmagenta:"#8B008B",darkolivegreen:"#556B2F",darkorange:"#FF8C00",darkorchid:"#9932CC",darkred:"#8B0000",darksalmon:"#E9967A",darkseagreen:"#8FBC8F",darkslateblue:"#483D8B",darkslategray:"#2F4F4F",darkslategrey:"#2F4F4F",darkturquoise:"#00CED1",darkviolet:"#9400D3",deeppink:"#FF1493",deepskyblue:"#00BFFF",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1E90FF",firebrick:"#B22222",floralwhite:"#FFFAF0",forestgreen:"#228B22",fuchsia:"#F0F",gainsboro:"#DCDCDC",ghostwhite:"#F8F8FF",gold:"#FFD700",goldenrod:"#DAA520",gray:"#808080",grey:"#808080",green:"#008000",greenyellow:"#ADFF2F",honeydew:"#F0FFF0",hotpink:"#FF69B4",indianred:"#CD5C5C",indigo:"#4B0082",ivory:"#FFFFF0",khaki:"#F0E68C",lavender:"#E6E6FA",lavenderblush:"#FFF0F5",lawngreen:"#7CFC00",lemonchiffon:"#FFFACD",lightblue:"#ADD8E6",lightcoral:"#F08080",lightcyan:"#E0FFFF",lightgoldenrodyellow:"#FAFAD2",lightgray:"#D3D3D3",lightgrey:"#D3D3D3",lightgreen:"#90EE90",lightpink:"#FFB6C1",lightsalmon:"#FFA07A",lightseagreen:"#20B2AA",lightskyblue:"#87CEFA",lightslategray:"#789",lightslategrey:"#789",lightsteelblue:"#B0C4DE",lightyellow:"#FFFFE0",lime:"#0F0",limegreen:"#32CD32",linen:"#FAF0E6",magenta:"#F0F",maroon:"#800000",mediumaquamarine:"#66CDAA",mediumblue:"#0000CD",mediumorchid:"#BA55D3",mediumpurple:"#9370DB",mediumseagreen:"#3CB371",mediumslateblue:"#7B68EE",mediumspringgreen:"#00FA9A",mediumturquoise:"#48D1CC",mediumvioletred:"#C71585",midnightblue:"#191970",mintcream:"#F5FFFA",mistyrose:"#FFE4E1",moccasin:"#FFE4B5",navajowhite:"#FFDEAD",navy:"#000080",oldlace:"#FDF5E6",olive:"#808000",olivedrab:"#6B8E23",orange:"#FFA500",orangered:"#FF4500",orchid:"#DA70D6",palegoldenrod:"#EEE8AA",palegreen:"#98FB98",paleturquoise:"#AFEEEE",palevioletred:"#DB7093",papayawhip:"#FFEFD5",peachpuff:"#FFDAB9",peru:"#CD853F",pink:"#FFC0CB",plum:"#DDA0DD",powderblue:"#B0E0E6",purple:"#800080",rebeccapurple:"#639",red:"#F00",rosybrown:"#BC8F8F",royalblue:"#4169E1",saddlebrown:"#8B4513",salmon:"#FA8072",sandybrown:"#F4A460",seagreen:"#2E8B57",seashell:"#FFF5EE",sienna:"#A0522D",silver:"#C0C0C0",skyblue:"#87CEEB",slateblue:"#6A5ACD",slategray:"#708090",slategrey:"#708090",snow:"#FFFAFA",springgreen:"#00FF7F",steelblue:"#4682B4",tan:"#D2B48C",teal:"#008080",thistle:"#D8BFD8",tomato:"#FF6347",turquoise:"#40E0D0",violet:"#EE82EE",wheat:"#F5DEB3",white:"#FFF",whitesmoke:"#F5F5F5",yellow:"#FF0",yellowgreen:"#9ACD32"},qe=(t,e,s)=>(s<0&&(s+=1),s>1&&(s-=1),s<1/6?t+6*(e-t)*s:s<.5?e:s<2/3?t+(e-t)*(2/3-s)*6:t),Ke=(t,e,s,i)=>{t/=255,e/=255,s/=255;const r=Math.max(t,e,s),n=Math.min(t,e,s);let o,a;const h=(r+n)/2;if(r===n)o=a=0;else{const i=r-n;switch(a=h>.5?i/(2-r-n):i/(r+n),r){case t:o=(e-s)/i+(e<s?6:0);break;case e:o=(s-t)/i+2;break;case s:o=(t-e)/i+4}o/=6}return[Math.round(360*o),Math.round(100*a),Math.round(100*h),i]},Je=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"1";return parseFloat(t)/(t.endsWith("%")?100:1)},Qe=t=>Math.min(Math.round(t),255).toString(16).toUpperCase().padStart(2,"0"),Ze=t=>{let[e,s,i,r=1]=t;const n=Math.round(.3*e+.59*s+.11*i);return[n,n,n,r]};class ts{constructor(t){if(i(this,"isUnrecognised",!1),t)if(t instanceof ts)this.setSource([...t._source]);else if(Array.isArray(t)){const[e,s,i,r=1]=t;this.setSource([e,s,i,r])}else this.setSource(this._tryParsingColor(t));else this.setSource([0,0,0,1])}_tryParsingColor(t){return(t=t.toLowerCase())in Ue&&(t=Ue[t]),"transparent"===t?[255,255,255,0]:ts.sourceFromHex(t)||ts.sourceFromRgb(t)||ts.sourceFromHsl(t)||(this.isUnrecognised=!0)&&[0,0,0,1]}getSource(){return this._source}setSource(t){this._source=t}toRgb(){const[t,e,s]=this.getSource();return`rgb(${t},${e},${s})`}toRgba(){return`rgba(${this.getSource().join(",")})`}toHsl(){const[t,e,s]=Ke(...this.getSource());return`hsl(${t},${e}%,${s}%)`}toHsla(){const[t,e,s,i]=Ke(...this.getSource());return`hsla(${t},${e}%,${s}%,${i})`}toHex(){return this.toHexa().slice(0,6)}toHexa(){const[t,e,s,i]=this.getSource();return`${Qe(t)}${Qe(e)}${Qe(s)}${Qe(Math.round(255*i))}`}getAlpha(){return this.getSource()[3]}setAlpha(t){return this._source[3]=t,this}toGrayscale(){return this.setSource(Ze(this.getSource())),this}toBlackWhite(t){const[e,,,s]=Ze(this.getSource()),i=e<(t||127)?0:255;return this.setSource([i,i,i,s]),this}overlayWith(t){t instanceof ts||(t=new ts(t));const e=this.getSource(),s=t.getSource(),[i,r,n]=e.map(((t,e)=>Math.round(.5*t+.5*s[e])));return this.setSource([i,r,n,e[3]]),this}static fromRgb(t){return ts.fromRgba(t)}static fromRgba(t){return new ts(ts.sourceFromRgb(t))}static sourceFromRgb(t){const e=Ne(t).match(/^rgba?\(\s?(\d{0,3}(?:\.\d+)?%?)\s?[\s|,]\s?(\d{0,3}(?:\.\d+)?%?)\s?[\s|,]\s?(\d{0,3}(?:\.\d+)?%?)\s?(?:\s?[,/]\s?(\d{0,3}(?:\.\d+)?%?)\s?)?\)$/i);if(e){const[t,s,i]=e.slice(1,4).map((t=>{const e=parseFloat(t);return t.endsWith("%")?Math.round(2.55*e):e}));return[t,s,i,Je(e[4])]}}static fromHsl(t){return ts.fromHsla(t)}static fromHsla(t){return new ts(ts.sourceFromHsl(t))}static sourceFromHsl(t){const e=Ne(t).match(/^hsla?\(\s?([+-]?\d{0,3}(?:\.\d+)?(?:deg|turn|rad)?)\s?[\s|,]\s?(\d{0,3}(?:\.\d+)?%?)\s?[\s|,]\s?(\d{0,3}(?:\.\d+)?%?)\s?(?:\s?[,/]\s?(\d*(?:\.\d+)?%?)\s?)?\)$/i);if(!e)return;const s=(ts.parseAngletoDegrees(e[1])%360+360)%360/360,i=parseFloat(e[2])/100,r=parseFloat(e[3])/100;let n,o,a;if(0===i)n=o=a=r;else{const t=r<=.5?r*(i+1):r+i-r*i,e=2*r-t;n=qe(e,t,s+1/3),o=qe(e,t,s),a=qe(e,t,s-1/3)}return[Math.round(255*n),Math.round(255*o),Math.round(255*a),Je(e[4])]}static fromHex(t){return new ts(ts.sourceFromHex(t))}static sourceFromHex(t){if(t.match(/^#?(([0-9a-f]){3,4}|([0-9a-f]{2}){3,4})$/i)){const e=t.slice(t.indexOf("#")+1);let s;s=e.length<=4?e.split("").map((t=>t+t)):e.match(/.{2}/g);const[i,r,n,o=255]=s.map((t=>parseInt(t,16)));return[i,r,n,o/255]}}static parseAngletoDegrees(t){const e=t.toLowerCase(),s=parseFloat(e);return e.includes("rad")?wt(s):e.includes("turn")?360*s:s}}const es=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:O;const s=/\D{0,2}$/.exec(t),i=parseFloat(t),r=n.DPI;switch(null==s?void 0:s[0]){case"mm":return i*r/25.4;case"cm":return i*r/2.54;case"in":return i*r;case"pt":return i*r/72;case"pc":return i*r/72*12;case"em":return i*e;default:return i}},ss=t=>{const[e,s]=t.trim().split(" "),[i,r]=(n=e)&&n!==j?[n.slice(1,4),n.slice(5,8)]:n===j?[n,n]:["Mid","Mid"];var n;return{meetOrSlice:s||"meet",alignX:i,alignY:r}},is=function(t,e){let s,i,r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(e)if(e.toLive)s=`url(#SVGID_${ne(e.id)})`;else{const t=new ts(e),r=t.getAlpha();s=t.toRgb(),1!==r&&(i=r.toString())}else s="none";return r?`${t}: ${s}; ${i?`${t}-opacity: ${i}; `:""}`:`${t}="${s}" ${i?`${t}-opacity="${i}" `:""}`};class rs{getSvgStyles(t){const e=this.fillRule?this.fillRule:"nonzero",s=this.strokeWidth?this.strokeWidth:"0",i=this.strokeDashArray?this.strokeDashArray.join(" "):j,r=this.strokeDashOffset?this.strokeDashOffset:"0",n=this.strokeLineCap?this.strokeLineCap:"butt",o=this.strokeLineJoin?this.strokeLineJoin:"miter",a=this.strokeMiterLimit?this.strokeMiterLimit:"4",h=void 0!==this.opacity?this.opacity:"1",l=this.visible?"":" visibility: hidden;",c=t?"":this.getSvgFilter(),u=is(q,this.fill);return[is(K,this.stroke),"stroke-width: ",s,"; ","stroke-dasharray: ",i,"; ","stroke-linecap: ",n,"; ","stroke-dashoffset: ",r,"; ","stroke-linejoin: ",o,"; ","stroke-miterlimit: ",a,"; ",u,"fill-rule: ",e,"; ","opacity: ",h,";",c,l].map((t=>ne(t))).join("")}getSvgFilter(){return this.shadow?`filter: url(#SVGID_${ne(this.shadow.id)});`:""}getSvgCommons(){return[this.id?`id="${ne(String(this.id))}" `:"",this.clipPath?`clip-path="url(#${this.clipPath.clipPathId})" `:""].join("")}getSvgTransform(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";const s=t?this.calcTransformMatrix():this.calcOwnMatrix();return`transform="${Ht(s)}${e}" `}_toSVG(t){return[""]}toSVG(t){return this._createBaseSVGMarkup(this._toSVG(t),{reviver:t})}toClipPathSVG(t){return"\t"+this._createBaseClipPathSVGMarkup(this._toSVG(t),{reviver:t})}_createBaseClipPathSVGMarkup(t){let{reviver:e,additionalTransform:s=""}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const i=[this.getSvgTransform(!0,s),this.getSvgCommons()].join(""),r=t.indexOf("COMMON_PARTS");return t[r]=i,e?e(t.join("")):t.join("")}_createBaseSVGMarkup(t){let{noStyle:e,reviver:s,withShadow:i,additionalTransform:r}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=e?"":`style="${this.getSvgStyles()}" `,o=i?`style="${this.getSvgFilter()}" `:"",a=this.clipPath,h=this.strokeUniform?'vector-effect="non-scaling-stroke" ':"",l=a&&a.absolutePositioned,c=this.stroke,u=this.fill,d=this.shadow,g=[],f=t.indexOf("COMMON_PARTS");let p;a&&(a.clipPathId=`CLIPPATH_${vt()}`,p=`<clipPath id="${a.clipPathId}" >\n${a.toClipPathSVG(s)}</clipPath>\n`),l&&g.push("<g ",o,this.getSvgCommons()," >\n"),g.push("<g ",this.getSvgTransform(!1),l?"":o+this.getSvgCommons()," >\n");const m=[n,h,e?"":this.addPaintOrder()," ",r?`transform="${r}" `:""].join("");return t[f]=m,Nt(u)&&g.push(u.toSVG(this)),Nt(c)&&g.push(c.toSVG(this)),d&&g.push(d.toSVG(this)),a&&g.push(p),g.push(t.join("")),g.push("</g>\n"),l&&g.push("</g>\n"),s?s(g.join("")):g.join("")}addPaintOrder(){return this.paintFirst!==q?` paint-order="${ne(this.paintFirst)}" `:""}}function ns(t){return new RegExp("^("+t.join("|")+")\\b","i")}const os="textDecorationThickness",as=["fontSize","fontWeight","fontFamily","fontStyle"],hs=["underline","overline","linethrough"],ls=[...as,"lineHeight","text","charSpacing","textAlign","styles","path","pathStartOffset","pathSide","pathAlign"],cs=[...ls,...hs,"textBackgroundColor","direction",os],us=[...as,...hs,K,"strokeWidth",q,"deltaY","textBackgroundColor",os],ds={_reNewline:F,_reSpacesAndTabs:/[ \t\r]/g,_reSpaceAndTab:/[ \t\r]/,_reWords:/\S+/g,fontSize:40,fontWeight:tt,fontFamily:"Times New Roman",underline:!1,overline:!1,linethrough:!1,textAlign:M,fontStyle:tt,lineHeight:1.16,textBackgroundColor:"",stroke:null,shadow:null,path:void 0,pathStartOffset:0,pathSide:M,pathAlign:"baseline",charSpacing:0,deltaY:0,direction:Q,CACHE_FONT_SIZE:400,MIN_TEXT_WIDTH:2,superscript:{size:.6,baseline:-.35},subscript:{size:.6,baseline:.11},_fontSizeFraction:.222,offsets:{underline:.1,linethrough:-.28167,overline:-.81333},_fontSizeMult:1.13,[os]:66.667},gs="justify",fs="justify-left",ps="justify-right",ms="justify-center",vs=String.raw`[-+]?(?:\d*\.\d+|\d+\.?)(?:[eE][-+]?\d+)?`,ys=String.raw`(?:\s*,?\s+|\s*,\s*)`,_s="http://www.w3.org/2000/svg",xs=new RegExp("(normal|italic)?\\s*(normal|small-caps)?\\s*(normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900)?\\s*("+vs+"(?:px|cm|mm|em|pt|pc|in)*)(?:\\/(normal|"+vs+"))?\\s+(.*)"),Cs={cx:M,x:M,r:"radius",cy:P,y:P,display:"visible",visibility:"visible",transform:"transformMatrix","fill-opacity":"fillOpacity","fill-rule":"fillRule","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight","letter-spacing":"charSpacing","paint-order":"paintFirst","stroke-dasharray":"strokeDashArray","stroke-dashoffset":"strokeDashOffset","stroke-linecap":"strokeLineCap","stroke-linejoin":"strokeLineJoin","stroke-miterlimit":"strokeMiterLimit","stroke-opacity":"strokeOpacity","stroke-width":"strokeWidth","text-decoration":"textDecoration","text-anchor":"textAnchor",opacity:"opacity","clip-path":"clipPath","clip-rule":"clipRule","vector-effect":"strokeUniform","image-rendering":"imageSmoothing","text-decoration-thickness":os},bs="font-size",Ss="clip-path",ws=ns(["path","circle","polygon","polyline","ellipse","rect","line","image","text"]),Ts=ns(["symbol","image","marker","pattern","view","svg"]),Os=ns(["symbol","g","a","svg","clipPath","defs"]),ks=new RegExp(String.raw`^\s*(${vs})${ys}(${vs})${ys}(${vs})${ys}(${vs})\s*$`),Ds="(-?\\d+(?:\\.\\d*)?(?:px)?(?:\\s?|$))?",Ms=new RegExp("(?:\\s|^)"+Ds+Ds+"("+vs+"?(?:px)?)?(?:\\s?|$)(?:$|\\s)");class Ps{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const e="string"==typeof t?Ps.parseShadow(t):t;Object.assign(this,Ps.ownDefaults,e),this.id=vt()}static parseShadow(t){const e=t.trim(),[,s=0,i=0,r=0]=(Ms.exec(e)||[]).map((t=>parseFloat(t)||0));return{color:(e.replace(Ms,