@digital-blueprint/esign-app
Version:
[GitHub Repository](https://github.com/digital-blueprint/esign-app) | [npmjs package](https://www.npmjs.com/package/@digital-blueprint/esign-app) | [Unpkg CDN](https://unpkg.com/browse/@digital-blueprint/esign-app/) | [Esign Bundle](https://gitlab.tugraz.
53 lines • 290 kB
JavaScript
/*!
* License: LGPL-2.1-or-later
* Dependencies:
*
* @webcomponents/scoped-custom-element-registry: BSD-3-Clause
* @dbp-toolkit/app-shell: LGPL-2.1-or-later
* @dbp-toolkit/language-select: LGPL-2.1-or-later
* @dbp-toolkit/auth: LGPL-2.1-or-later
* @dbp-toolkit/notification: LGPL-2.1-or-later
* @dbp-toolkit/theme-switcher: LGPL-2.1-or-later
* universal-router: MIT
* @dbp-toolkit/matomo: LGPL-2.1-or-later
* @tugraz/web-components: LGPL-2.1-or-later
* exceljs: MIT
* fabric: MIT
*/
function e(e,t,n){return(t=function(e){var t=function(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}(e,`string`);return typeof t==`symbol`?t:t+``}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function t(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function n(n){for(var r=1;r<arguments.length;r++){var i=arguments[r]==null?{}:arguments[r];r%2?t(Object(i),!0).forEach(function(t){e(n,t,i[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(i)):t(Object(i)).forEach(function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(i,e))})}return n}function r(e,t){if(e==null)return{};var n,r,i=function(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||{}.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function i(e,t){return t||=e.slice(0),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}var a=class{constructor(){e(this,`browserShadowBlurConstant`,1),e(this,`DPI`,96),e(this,`devicePixelRatio`,typeof window<`u`?window.devicePixelRatio:1),e(this,`perfLimitSizeTotal`,2097152),e(this,`maxCacheSideLimit`,4096),e(this,`minCacheSideLimit`,256),e(this,`disableStyleCopyPaste`,!1),e(this,`enableGLFiltering`,!0),e(this,`textureSize`,4096),e(this,`forceGLPutImageData`,!1),e(this,`cachesBoundsOfCurve`,!1),e(this,`fontPaths`,{}),e(this,`NUM_FRACTION_DIGITS`,4)}};const o=new class extends a{constructor(e){super(),this.configure(e)}configure(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Object.assign(this,e)}addFonts(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.fontPaths=n(n({},this.fontPaths),e)}removeFonts(){(arguments.length>0&&arguments[0]!==void 0?arguments[0]:[]).forEach(e=>{delete this.fontPaths[e]})}clearFonts(){this.fontPaths={}}restoreDefaults(e){let t=new a,n=e?.reduce((e,n)=>(e[n]=t[n],e),{})||t;this.configure(n)}},s=function(e){var t=[...arguments].slice(1);return console[e](`fabric`,...t)};var c=class extends Error{constructor(e,t){super(`fabric: ${e}`,t)}},l=class extends c{constructor(e){super(`${e} 'options.signal' is in 'aborted' state`)}},u=class{},d=class extends u{testPrecision(e,t){let n=`precision ${t} float;
void main(){}`,r=e.createShader(e.FRAGMENT_SHADER);return!!r&&(e.shaderSource(r,n),e.compileShader(r),!!e.getShaderParameter(r,e.COMPILE_STATUS))}queryWebGL(e){let t=e.getContext(`webgl`);t&&(this.maxTextureSize=t.getParameter(t.MAX_TEXTURE_SIZE),this.GLPrecision=[`highp`,`mediump`,`lowp`].find(e=>this.testPrecision(t,e)),t.getExtension(`WEBGL_lose_context`).loseContext(),s(`log`,`WebGL: max texture size ${this.maxTextureSize}`))}isSupported(e){return!!this.maxTextureSize&&this.maxTextureSize>=e}};const f={};let p;const m=()=>p||={document,window,isTouchSupported:`ontouchstart`in window||`ontouchstart`in document||window&&window.navigator&&window.navigator.maxTouchPoints>0,WebGLProbe:new d,dispose(){},copyPasteData:f},h=()=>m().document,g=()=>m().window,_=()=>Math.max(o.devicePixelRatio??g().devicePixelRatio,1),v=new class{constructor(){e(this,`charWidthsCache`,{}),e(this,`boundsOfCurveCache`,{})}getFontCache(e){let{fontFamily:t,fontStyle:n,fontWeight:r}=e;t=t.toLowerCase(),this.charWidthsCache[t]||(this.charWidthsCache[t]={});let i=this.charWidthsCache[t],a=`${n.toLowerCase()}_${(r+``).toLowerCase()}`;return i[a]||(i[a]={}),i[a]}clearFontCache(e){(e=(e||``).toLowerCase())?this.charWidthsCache[e]&&delete this.charWidthsCache[e]:this.charWidthsCache={}}limitDimsByArea(e){let{perfLimitSizeTotal:t}=o,n=Math.sqrt(t*e);return[Math.floor(n),Math.floor(t/n)]}},y=`6.7.1`;function b(){}const x=Math.PI/2,S=2*Math.PI,C=Math.PI/180,w=Object.freeze([1,0,0,1,0,0]),T=.4477152502,E=`center`,D=`left`,O=`bottom`,k=`right`,A=`none`,ee=/\r?\n/,te=`moving`,ne=`scaling`,re=`rotating`,ie=`rotate`,ae=`skewing`,j=`resizing`,oe=`modifyPoly`,se=`changed`,ce=`scale`,M=`scaleX`,N=`scaleY`,le=`skewX`,ue=`skewY`,P=`fill`,F=`stroke`,de=`modified`,fe=`json`,I=new class{constructor(){this[fe]=new Map,this.svg=new Map}has(e){return this[fe].has(e)}getClass(e){let t=this[fe].get(e);if(!t)throw new c(`No class registered for ${e}`);return t}setClass(e,t){t?this[fe].set(t,e):(this[fe].set(e.type,e),this[fe].set(e.type.toLowerCase(),e))}getSVGClass(e){return this.svg.get(e)}setSVGClass(e,t){this.svg.set(t??e.type.toLowerCase(),e)}},pe=new class extends Array{remove(e){let t=this.indexOf(e);t>-1&&this.splice(t,1)}cancelAll(){let e=this.splice(0);return e.forEach(e=>e.abort()),e}cancelByCanvas(e){if(!e)return[];let t=this.filter(t=>t.target===e||typeof t.target==`object`&&t.target?.canvas===e);return t.forEach(e=>e.abort()),t}cancelByTarget(e){if(!e)return[];let t=this.filter(t=>t.target===e);return t.forEach(e=>e.abort()),t}};var me=class{constructor(){e(this,`__eventListeners`,{})}on(e,t){if(this.__eventListeners||={},typeof e==`object`)return Object.entries(e).forEach(e=>{let[t,n]=e;this.on(t,n)}),()=>this.off(e);if(t){let n=e;return this.__eventListeners[n]||(this.__eventListeners[n]=[]),this.__eventListeners[n].push(t),()=>this.off(n,t)}return()=>!1}once(e,t){if(typeof e==`object`){let t=[];return Object.entries(e).forEach(e=>{let[n,r]=e;t.push(this.once(n,r))}),()=>t.forEach(e=>e())}if(t){let n=this.on(e,function(){var e=[...arguments];t.call(this,...e),n()});return n}return()=>!1}_removeEventListener(e,t){if(this.__eventListeners[e])if(t){let n=this.__eventListeners[e],r=n.indexOf(t);r>-1&&n.splice(r,1)}else this.__eventListeners[e]=[]}off(e,t){if(this.__eventListeners)if(e===void 0)for(let e in this.__eventListeners)this._removeEventListener(e);else typeof e==`object`?Object.entries(e).forEach(e=>{let[t,n]=e;this._removeEventListener(t,n)}):this._removeEventListener(e,t)}fire(e,t){if(!this.__eventListeners)return;let n=this.__eventListeners[e]?.concat();if(n)for(let e=0;e<n.length;e++)n[e].call(this,t||{})}};const he=(e,t)=>{let n=e.indexOf(t);return n!==-1&&e.splice(n,1),e},ge=e=>{if(e===0)return 1;switch(Math.abs(e)/x){case 1:case 3:return 0;case 2:return-1}return Math.cos(e)},_e=e=>{if(e===0)return 0;let t=e/x,n=Math.sign(e);switch(t){case 1:return n;case 2:return 0;case 3:return-n}return Math.sin(e)};var L=class e{constructor(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;typeof e==`object`?(this.x=e.x,this.y=e.y):(this.x=e,this.y=t)}add(t){return new e(this.x+t.x,this.y+t.y)}addEquals(e){return this.x+=e.x,this.y+=e.y,this}scalarAdd(t){return new e(this.x+t,this.y+t)}scalarAddEquals(e){return this.x+=e,this.y+=e,this}subtract(t){return new e(this.x-t.x,this.y-t.y)}subtractEquals(e){return this.x-=e.x,this.y-=e.y,this}scalarSubtract(t){return new e(this.x-t,this.y-t)}scalarSubtractEquals(e){return this.x-=e,this.y-=e,this}multiply(t){return new e(this.x*t.x,this.y*t.y)}scalarMultiply(t){return new e(this.x*t,this.y*t)}scalarMultiplyEquals(e){return this.x*=e,this.y*=e,this}divide(t){return new e(this.x/t.x,this.y/t.y)}scalarDivide(t){return new e(this.x/t,this.y/t)}scalarDivideEquals(e){return this.x/=e,this.y/=e,this}eq(e){return this.x===e.x&&this.y===e.y}lt(e){return this.x<e.x&&this.y<e.y}lte(e){return this.x<=e.x&&this.y<=e.y}gt(e){return this.x>e.x&&this.y>e.y}gte(e){return this.x>=e.x&&this.y>=e.y}lerp(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:.5;return n=Math.max(Math.min(1,n),0),new e(this.x+(t.x-this.x)*n,this.y+(t.y-this.y)*n)}distanceFrom(e){let t=this.x-e.x,n=this.y-e.y;return Math.sqrt(t*t+n*n)}midPointFrom(e){return this.lerp(e)}min(t){return new e(Math.min(this.x,t.x),Math.min(this.y,t.y))}max(t){return new e(Math.max(this.x,t.x),Math.max(this.y,t.y))}toString(){return`${this.x},${this.y}`}setXY(e,t){return this.x=e,this.y=t,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setFromPoint(e){return this.x=e.x,this.y=e.y,this}swap(e){let t=this.x,n=this.y;this.x=e.x,this.y=e.y,e.x=t,e.y=n}clone(){return new e(this.x,this.y)}rotate(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:ve,r=_e(t),i=ge(t),a=this.subtract(n);return new e(a.x*i-a.y*r,a.x*r+a.y*i).add(n)}transform(t){let n=arguments.length>1&&arguments[1]!==void 0&&arguments[1];return new e(t[0]*this.x+t[2]*this.y+(n?0:t[4]),t[1]*this.x+t[3]*this.y+(n?0:t[5]))}};const ve=new L(0,0),ye=e=>!!e&&Array.isArray(e._objects);function be(t){class n extends t{constructor(){super(...arguments),e(this,`_objects`,[])}_onObjectAdded(e){}_onObjectRemoved(e){}_onStackOrderChanged(e){}add(){var e=[...arguments];let t=this._objects.push(...e);return e.forEach(e=>this._onObjectAdded(e)),t}insertAt(e){var t=[...arguments].slice(1);return this._objects.splice(e,0,...t),t.forEach(e=>this._onObjectAdded(e)),this._objects.length}remove(){let e=this._objects,t=[];return[...arguments].forEach(n=>{let r=e.indexOf(n);r!==-1&&(e.splice(r,1),t.push(n),this._onObjectRemoved(n))}),t}forEachObject(e){this.getObjects().forEach((t,n,r)=>e(t,n,r))}getObjects(){var e=[...arguments];return e.length===0?[...this._objects]:this._objects.filter(t=>t.isType(...e))}item(e){return this._objects[e]}isEmpty(){return this._objects.length===0}size(){return this._objects.length}contains(e,t){return!!this._objects.includes(e)||!!t&&this._objects.some(t=>t instanceof n&&t.contains(e,!0))}complexity(){return this._objects.reduce((e,t)=>e+=t.complexity?t.complexity():0,0)}sendObjectToBack(e){return!(!e||e===this._objects[0])&&(he(this._objects,e),this._objects.unshift(e),this._onStackOrderChanged(e),!0)}bringObjectToFront(e){return!(!e||e===this._objects[this._objects.length-1])&&(he(this._objects,e),this._objects.push(e),this._onStackOrderChanged(e),!0)}sendObjectBackwards(e,t){if(!e)return!1;let n=this._objects.indexOf(e);if(n!==0){let r=this.findNewLowerIndex(e,n,t);return he(this._objects,e),this._objects.splice(r,0,e),this._onStackOrderChanged(e),!0}return!1}bringObjectForward(e,t){if(!e)return!1;let n=this._objects.indexOf(e);if(n!==this._objects.length-1){let r=this.findNewUpperIndex(e,n,t);return he(this._objects,e),this._objects.splice(r,0,e),this._onStackOrderChanged(e),!0}return!1}moveObjectTo(e,t){return e!==this._objects[t]&&(he(this._objects,e),this._objects.splice(t,0,e),this._onStackOrderChanged(e),!0)}findNewLowerIndex(e,t,n){let r;if(n){r=t;for(let n=t-1;n>=0;--n)if(e.isOverlapping(this._objects[n])){r=n;break}}else r=t-1;return r}findNewUpperIndex(e,t,n){let r;if(n){r=t;for(let n=t+1;n<this._objects.length;++n)if(e.isOverlapping(this._objects[n])){r=n;break}}else r=t+1;return r}collectObjects(e){let{left:t,top:n,width:r,height:i}=e,{includeIntersecting:a=!0}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},o=[],s=new L(t,n),c=s.add(new L(r,i));for(let e=this._objects.length-1;e>=0;e--){let t=this._objects[e];t.selectable&&t.visible&&(a&&t.intersectsWithRect(s,c)||t.isContainedWithinRect(s,c)||a&&t.containsPoint(s)||a&&t.containsPoint(c))&&o.push(t)}return o}}return n}var xe=class extends me{_setOptions(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};for(let t in e)this.set(t,e[t])}_setObject(e){for(let t in e)this._set(t,e[t])}set(e,t){return typeof e==`object`?this._setObject(e):this._set(e,t),this}_set(e,t){this[e]=t}toggle(e){let t=this.get(e);return typeof t==`boolean`&&this.set(e,!t),this}get(e){return this[e]}};function Se(e){return g().requestAnimationFrame(e)}function Ce(e){return g().cancelAnimationFrame(e)}let we=0;const Te=()=>we++,Ee=()=>{let e=h().createElement(`canvas`);if(!e||e.getContext===void 0)throw new c("Failed to create `canvas` element");return e},De=()=>h().createElement(`img`),R=e=>{let t=Ee();return t.width=e.width,t.height=e.height,t},Oe=(e,t,n)=>e.toDataURL(`image/${t}`,n),ke=(e,t,n)=>new Promise((r,i)=>{e.toBlob(r,`image/${t}`,n)}),z=e=>e*C,Ae=e=>e/C,je=e=>e.every((e,t)=>e===w[t]),B=(e,t,n)=>new L(e).transform(t,n),V=e=>{let t=1/(e[0]*e[3]-e[1]*e[2]),n=[t*e[3],-t*e[1],-t*e[2],t*e[0],0,0],{x:r,y:i}=new L(e[4],e[5]).transform(n,!0);return n[4]=-r,n[5]=-i,n},H=(e,t,n)=>[e[0]*t[0]+e[2]*t[1],e[1]*t[0]+e[3]*t[1],e[0]*t[2]+e[2]*t[3],e[1]*t[2]+e[3]*t[3],n?0:e[0]*t[4]+e[2]*t[5]+e[4],n?0:e[1]*t[4]+e[3]*t[5]+e[5]],Me=(e,t)=>e.reduceRight((e,n)=>n&&e?H(n,e,t):n||e,void 0)||w.concat(),Ne=e=>{let[t,n]=e;return Math.atan2(n,t)},Pe=e=>{let t=Ne(e),n=e[0]**2+e[1]**2,r=Math.sqrt(n),i=(e[0]*e[3]-e[2]*e[1])/r,a=Math.atan2(e[0]*e[2]+e[1]*e[3],n);return{angle:Ae(t),scaleX:r,scaleY:i,skewX:Ae(a),skewY:0,translateX:e[4]||0,translateY:e[5]||0}},Fe=function(e){return[1,0,0,1,e,arguments.length>1&&arguments[1]!==void 0?arguments[1]:0]};function Ie(){let{angle:e=0}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{x:t=0,y:n=0}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=z(e),i=ge(r),a=_e(r);return[i,a,-a,i,t?t-(i*t-a*n):0,n?n-(a*t+i*n):0]}const Le=function(e){return[e,0,0,arguments.length>1&&arguments[1]!==void 0?arguments[1]:e,0,0]},Re=e=>Math.tan(z(e)),ze=e=>[1,0,Re(e),1,0,0],Be=e=>[1,Re(e),0,1,0,0],Ve=e=>{let{scaleX:t=1,scaleY:n=1,flipX:r=!1,flipY:i=!1,skewX:a=0,skewY:o=0}=e,s=Le(r?-t:t,i?-n:n);return a&&(s=H(s,ze(a),!0)),o&&(s=H(s,Be(o),!0)),s},He=e=>{let{translateX:t=0,translateY:n=0,angle:r=0}=e,i=Fe(t,n);r&&(i=H(i,Ie({angle:r})));let a=Ve(e);return je(a)||(i=H(i,a)),i},Ue=function(e){let{signal:t,crossOrigin:n=null}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return new Promise(function(r,i){if(t&&t.aborted)return i(new l(`loadImage`));let a=De(),o;t&&(o=function(e){a.src=``,i(e)},t.addEventListener(`abort`,o,{once:!0}));let s=function(){a.onload=a.onerror=null,o&&t?.removeEventListener(`abort`,o),r(a)};e?(a.onload=s,a.onerror=function(){o&&t?.removeEventListener(`abort`,o),i(new c(`Error loading ${a.src}`))},n&&(a.crossOrigin=n),a.src=e):s()})},We=function(e){let{signal:t,reviver:n=b}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return new Promise((r,i)=>{let a=[];t&&t.addEventListener(`abort`,i,{once:!0}),Promise.all(e.map(e=>I.getClass(e.type).fromObject(e,{signal:t}).then(t=>(n(e,t),a.push(t),t)))).then(r).catch(e=>{a.forEach(e=>{e.dispose&&e.dispose()}),i(e)}).finally(()=>{t&&t.removeEventListener(`abort`,i)})})},Ge=function(e){let{signal:t}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return new Promise((n,r)=>{let i=[];t&&t.addEventListener(`abort`,r,{once:!0});let a=Object.values(e).map(e=>e&&e.type&&I.has(e.type)?We([e],{signal:t}).then(e=>{let[t]=e;return i.push(t),t}):e),o=Object.keys(e);Promise.all(a).then(e=>e.reduce((e,t,n)=>(e[o[n]]=t,e),{})).then(n).catch(e=>{i.forEach(e=>{e.dispose&&e.dispose()}),r(e)}).finally(()=>{t&&t.removeEventListener(`abort`,r)})})},Ke=function(e){return(arguments.length>1&&arguments[1]!==void 0?arguments[1]:[]).reduce((t,n)=>(n in e&&(t[n]=e[n]),t),{})},qe=(e,t)=>Object.keys(e).reduce((n,r)=>(t(e[r],r,e)&&(n[r]=e[r]),n),{}),U=(e,t)=>parseFloat(Number(e).toFixed(t)),Je=e=>`matrix(`+e.map(e=>U(e,o.NUM_FRACTION_DIGITS)).join(` `)+`)`,W=e=>!!e&&e.toLive!==void 0,Ye=e=>!!e&&typeof e.toObject==`function`,Xe=e=>!!e&&e.offsetX!==void 0&&`source`in e,Ze=e=>!!e&&`multiSelectionStacking`in e;function Qe(e){let t=e&&$e(e),n=0,r=0;if(!e||!t)return{left:n,top:r};let i=e,a=t.documentElement,o=t.body||{scrollLeft:0,scrollTop:0};for(;i&&(i.parentNode||i.host)&&(i=i.parentNode||i.host,i===t?(n=o.scrollLeft||a.scrollLeft||0,r=o.scrollTop||a.scrollTop||0):(n+=i.scrollLeft||0,r+=i.scrollTop||0),i.nodeType!==1||i.style.position!==`fixed`););return{left:n,top:r}}const $e=e=>e.ownerDocument||null,et=e=>e.ownerDocument?.defaultView||null,tt=function(e,t,n){let{width:r,height:i}=n,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:1;e.width=r,e.height=i,a>1&&(e.setAttribute(`width`,(r*a).toString()),e.setAttribute(`height`,(i*a).toString()),t.scale(a,a))},nt=(e,t)=>{let{width:n,height:r}=t;n&&(e.style.width=typeof n==`number`?`${n}px`:n),r&&(e.style.height=typeof r==`number`?`${r}px`:r)};function rt(e){return e.onselectstart!==void 0&&(e.onselectstart=()=>!1),e.style.userSelect=A,e}var it=class{constructor(t){e(this,`_originalCanvasStyle`,void 0),e(this,`lower`,void 0);let n=this.createLowerCanvas(t);this.lower={el:n,ctx:n.getContext(`2d`)}}createLowerCanvas(e){let t=(n=e)&&n.getContext!==void 0?e:e&&h().getElementById(e)||Ee();var n;if(t.hasAttribute(`data-fabric`))throw new c(`Trying to initialize a canvas that has already been initialized. Did you forget to dispose the canvas?`);return this._originalCanvasStyle=t.style.cssText,t.setAttribute(`data-fabric`,`main`),t.classList.add(`lower-canvas`),t}cleanupDOM(e){let{width:t,height:n}=e,{el:r}=this.lower;r.classList.remove(`lower-canvas`),r.removeAttribute(`data-fabric`),r.setAttribute(`width`,`${t}`),r.setAttribute(`height`,`${n}`),r.style.cssText=this._originalCanvasStyle||``,this._originalCanvasStyle=void 0}setDimensions(e,t){let{el:n,ctx:r}=this.lower;tt(n,r,e,t)}setCSSDimensions(e){nt(this.lower.el,e)}calcOffset(){return function(e){let t=e&&$e(e),n={left:0,top:0};if(!t)return n;let r=et(e)?.getComputedStyle(e,null)||{};n.left+=parseInt(r.borderLeftWidth,10)||0,n.top+=parseInt(r.borderTopWidth,10)||0,n.left+=parseInt(r.paddingLeft,10)||0,n.top+=parseInt(r.paddingTop,10)||0;let i={left:0,top:0},a=t.documentElement;e.getBoundingClientRect!==void 0&&(i=e.getBoundingClientRect());let o=Qe(e);return{left:i.left+o.left-(a.clientLeft||0)+n.left,top:i.top+o.top-(a.clientTop||0)+n.top}}(this.lower.el)}dispose(){m().dispose(this.lower.el),delete this.lower}};const at={backgroundVpt:!0,backgroundColor:``,overlayVpt:!0,overlayColor:``,includeDefaultValues:!0,svgViewportTransformation:!0,renderOnAddRemove:!0,skipOffscreen:!0,enableRetinaScaling:!0,imageSmoothingEnabled:!0,controlsAboveOverlay:!1,allowTouchScrolling:!1,viewportTransform:[...w]};var ot=class e extends be(xe){get lowerCanvasEl(){return this.elements.lower?.el}get contextContainer(){return this.elements.lower?.ctx}static getDefaults(){return e.ownDefaults}constructor(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};super(),Object.assign(this,this.constructor.getDefaults()),this.set(t),this.initElements(e),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(e){this.elements=new it(e)}add(){let e=super.add(...arguments);return arguments.length>0&&this.renderOnAddRemove&&this.requestRenderAll(),e}insertAt(e){var t=[...arguments].slice(1);let n=super.insertAt(e,...t);return t.length>0&&this.renderOnAddRemove&&this.requestRenderAll(),n}remove(){let e=super.remove(...arguments);return e.length>0&&this.renderOnAddRemove&&this.requestRenderAll(),e}_onObjectAdded(e){e.canvas&&e.canvas!==this&&(s(`warn`,`Canvas is trying to add an object that belongs to a different canvas.
Resulting to default behavior: removing object from previous canvas and adding to new canvas`),e.canvas.remove(e)),e._set(`canvas`,this),e.setCoords(),this.fire(`object:added`,{target:e}),e.fire(`added`,{target:this})}_onObjectRemoved(e){e._set(`canvas`,void 0),this.fire(`object:removed`,{target:e}),e.fire(`removed`,{target:this})}_onStackOrderChanged(){this.renderOnAddRemove&&this.requestRenderAll()}getRetinaScaling(){return this.enableRetinaScaling?_():1}calcOffset(){return this._offset=this.elements.calcOffset()}getWidth(){return this.width}getHeight(){return this.height}setWidth(e,t){return this.setDimensions({width:e},t)}setHeight(e,t){return this.setDimensions({height:e},t)}_setDimensionsImpl(e){let{cssOnly:t=!1,backstoreOnly:r=!1}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!t){let t=n({width:this.width,height:this.height},e);this.elements.setDimensions(t,this.getRetinaScaling()),this.hasLostContext=!0,this.width=t.width,this.height=t.height}r||this.elements.setCSSDimensions(e),this.calcOffset()}setDimensions(e,t){this._setDimensionsImpl(e,t),t&&t.cssOnly||this.requestRenderAll()}getZoom(){return this.viewportTransform[0]}setViewportTransform(e){this.viewportTransform=e,this.calcViewportBoundaries(),this.renderOnAddRemove&&this.requestRenderAll()}zoomToPoint(e,t){let n=e,r=[...this.viewportTransform],i=B(e,V(r));r[0]=t,r[3]=t;let a=B(i,r);r[4]+=n.x-a.x,r[5]+=n.y-a.y,this.setViewportTransform(r)}setZoom(e){this.zoomToPoint(new L(0,0),e)}absolutePan(e){let t=[...this.viewportTransform];return t[4]=-e.x,t[5]=-e.y,this.setViewportTransform(t)}relativePan(e){return this.absolutePan(new L(-e.x-this.viewportTransform[4],-e.y-this.viewportTransform[5]))}getElement(){return this.elements.lower.el}clearContext(e){e.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=Se(()=>this.renderAndReset()))}calcViewportBoundaries(){let e=this.width,t=this.height,n=V(this.viewportTransform),r=B({x:0,y:0},n),i=B({x:e,y:t},n),a=r.min(i),o=r.max(i);return this.vptCoords={tl:a,tr:new L(o.x,a.y),bl:new L(a.x,o.y),br:o}}cancelRequestedRender(){this.nextRenderHandle&&=(Ce(this.nextRenderHandle),0)}drawControls(e){}renderCanvas(e,t){if(this.destroyed)return;let n=this.viewportTransform,r=this.clipPath;this.calcViewportBoundaries(),this.clearContext(e),e.imageSmoothingEnabled=this.imageSmoothingEnabled,e.patternQuality=`best`,this.fire(`before:render`,{ctx:e}),this._renderBackground(e),e.save(),e.transform(n[0],n[1],n[2],n[3],n[4],n[5]),this._renderObjects(e,t),e.restore(),this.controlsAboveOverlay||this.skipControlsDrawing||this.drawControls(e),r&&(r._set(`canvas`,this),r.shouldCache(),r._transformDone=!0,r.renderCache({forClipping:!0}),this.drawClipPathOnCanvas(e,r)),this._renderOverlay(e),this.controlsAboveOverlay&&!this.skipControlsDrawing&&this.drawControls(e),this.fire(`after:render`,{ctx:e}),this.__cleanupTask&&=(this.__cleanupTask(),void 0)}drawClipPathOnCanvas(e,t){let n=this.viewportTransform;e.save(),e.transform(...n),e.globalCompositeOperation=`destination-in`,t.transform(e),e.scale(1/t.zoomX,1/t.zoomY),e.drawImage(t._cacheCanvas,-t.cacheTranslationX,-t.cacheTranslationY),e.restore()}_renderObjects(e,t){for(let n=0,r=t.length;n<r;++n)t[n]&&t[n].render(e)}_renderBackgroundOrOverlay(e,t){let n=this[`${t}Color`],r=this[`${t}Image`],i=this.viewportTransform,a=this[`${t}Vpt`];if(!n&&!r)return;let o=W(n);if(n){if(e.save(),e.beginPath(),e.moveTo(0,0),e.lineTo(this.width,0),e.lineTo(this.width,this.height),e.lineTo(0,this.height),e.closePath(),e.fillStyle=o?n.toLive(e):n,a&&e.transform(...i),o){e.transform(1,0,0,1,n.offsetX||0,n.offsetY||0);let t=n.gradientTransform||n.patternTransform;t&&e.transform(...t)}e.fill(),e.restore()}if(r){e.save();let{skipOffscreen:t}=this;this.skipOffscreen=a,a&&e.transform(...i),r.render(e),this.skipOffscreen=t,e.restore()}}_renderBackground(e){this._renderBackgroundOrOverlay(e,`background`)}_renderOverlay(e){this._renderBackgroundOrOverlay(e,`overlay`)}getCenter(){return{top:this.height/2,left:this.width/2}}getCenterPoint(){return new L(this.width/2,this.height/2)}centerObjectH(e){return this._centerObject(e,new L(this.getCenterPoint().x,e.getCenterPoint().y))}centerObjectV(e){return this._centerObject(e,new L(e.getCenterPoint().x,this.getCenterPoint().y))}centerObject(e){return this._centerObject(e,this.getCenterPoint())}viewportCenterObject(e){return this._centerObject(e,this.getVpCenter())}viewportCenterObjectH(e){return this._centerObject(e,new L(this.getVpCenter().x,e.getCenterPoint().y))}viewportCenterObjectV(e){return this._centerObject(e,new L(e.getCenterPoint().x,this.getVpCenter().y))}getVpCenter(){return B(this.getCenterPoint(),V(this.viewportTransform))}_centerObject(e,t){e.setXY(t,E,E),e.setCoords(),this.renderOnAddRemove&&this.requestRenderAll()}toDatalessJSON(e){return this.toDatalessObject(e)}toObject(e){return this._toObjectMethod(`toObject`,e)}toJSON(){return this.toObject()}toDatalessObject(e){return this._toObjectMethod(`toDatalessObject`,e)}_toObjectMethod(e,t){let r=this.clipPath,i=r&&!r.excludeFromExport?this._toObject(r,e,t):null;return n(n(n({version:y},Ke(this,t)),{},{objects:this._objects.filter(e=>!e.excludeFromExport).map(n=>this._toObject(n,e,t))},this.__serializeBgOverlay(e,t)),i?{clipPath:i}:null)}_toObject(e,t,n){let r;this.includeDefaultValues||(r=e.includeDefaultValues,e.includeDefaultValues=!1);let i=e[t](n);return this.includeDefaultValues||(e.includeDefaultValues=!!r),i}__serializeBgOverlay(e,t){let n={},r=this.backgroundImage,i=this.overlayImage,a=this.backgroundColor,o=this.overlayColor;return W(a)?a.excludeFromExport||(n.background=a.toObject(t)):a&&(n.background=a),W(o)?o.excludeFromExport||(n.overlay=o.toObject(t)):o&&(n.overlay=o),r&&!r.excludeFromExport&&(n.backgroundImage=this._toObject(r,e,t)),i&&!i.excludeFromExport&&(n.overlayImage=this._toObject(i,e,t)),n}toSVG(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;e.reviver=t;let n=[];return this._setSVGPreamble(n,e),this._setSVGHeader(n,e),this.clipPath&&n.push(`<g clip-path="url(#${this.clipPath.clipPathId})" >
`),this._setSVGBgOverlayColor(n,`background`),this._setSVGBgOverlayImage(n,`backgroundImage`,t),this._setSVGObjects(n,t),this.clipPath&&n.push(`</g>
`),this._setSVGBgOverlayColor(n,`overlay`),this._setSVGBgOverlayImage(n,`overlayImage`,t),n.push(`</svg>`),n.join(``)}_setSVGPreamble(e,t){t.suppressPreamble||e.push(`<?xml version="1.0" encoding="`,t.encoding||`UTF-8`,`" standalone="no" ?>
`,`<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" `,`"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
`)}_setSVGHeader(e,t){let n=t.width||`${this.width}`,r=t.height||`${this.height}`,i=o.NUM_FRACTION_DIGITS,a=t.viewBox,s;if(a)s=`viewBox="${a.x} ${a.y} ${a.width} ${a.height}" `;else if(this.svgViewportTransformation){let e=this.viewportTransform;s=`viewBox="${U(-e[4]/e[0],i)} ${U(-e[5]/e[3],i)} ${U(this.width/e[0],i)} ${U(this.height/e[3],i)}" `}else s=`viewBox="0 0 ${this.width} ${this.height}" `;e.push(`<svg `,`xmlns="http://www.w3.org/2000/svg" `,`xmlns:xlink="http://www.w3.org/1999/xlink" `,`version="1.1" `,`width="`,n,`" `,`height="`,r,`" `,s,`xml:space="preserve">
`,`<desc>Created with Fabric.js `,y,`</desc>
`,`<defs>
`,this.createSVGFontFacesMarkup(),this.createSVGRefElementsMarkup(),this.createSVGClipPathMarkup(t),`</defs>
`)}createSVGClipPathMarkup(e){let t=this.clipPath;return t?(t.clipPathId=`CLIPPATH_${Te()}`,`<clipPath id="${t.clipPathId}" >
${t.toClipPathSVG(e.reviver)}</clipPath>
`):``}createSVGRefElementsMarkup(){return[`background`,`overlay`].map(e=>{let t=this[`${e}Color`];if(W(t)){let n=this[`${e}Vpt`],r=this.viewportTransform,i={isType:()=>!1,width:this.width/(n?r[0]:1),height:this.height/(n?r[3]:1)};return t.toSVG(i,{additionalTransform:n?Je(r):``})}}).join(``)}createSVGFontFacesMarkup(){let e=[],t={},n=o.fontPaths;this._objects.forEach(function t(n){e.push(n),ye(n)&&n._objects.forEach(t)}),e.forEach(e=>{if(!(r=e)||typeof r._renderText!=`function`)return;var r;let{styles:i,fontFamily:a}=e;!t[a]&&n[a]&&(t[a]=!0,i&&Object.values(i).forEach(e=>{Object.values(e).forEach(e=>{let{fontFamily:r=``}=e;!t[r]&&n[r]&&(t[r]=!0)})}))});let r=Object.keys(t).map(e=>` @font-face {
font-family: '${e}';
src: url('${n[e]}');
}
`).join(``);return r?` <style type="text/css"><![CDATA[
${r}]]></style>
`:``}_setSVGObjects(e,t){this.forEachObject(n=>{n.excludeFromExport||this._setSVGObject(e,n,t)})}_setSVGObject(e,t,n){e.push(t.toSVG(n))}_setSVGBgOverlayImage(e,t,n){let r=this[t];r&&!r.excludeFromExport&&r.toSVG&&e.push(r.toSVG(n))}_setSVGBgOverlayColor(e,t){let n=this[`${t}Color`];if(n)if(W(n)){let r=n.repeat||``,i=this.width,a=this.height,o=this[`${t}Vpt`]?Je(V(this.viewportTransform)):``;e.push(`<rect transform="${o} translate(${i/2},${a/2})" x="${n.offsetX-i/2}" y="${n.offsetY-a/2}" width="${r!==`repeat-y`&&r!==`no-repeat`||!Xe(n)?i:n.source.width}" height="${r!==`repeat-x`&&r!==`no-repeat`||!Xe(n)?a:n.source.height}" fill="url(#SVGID_${n.id})"></rect>
`)}else e.push(`<rect x="0" y="0" width="100%" height="100%" `,`fill="`,n,`"`,`></rect>
`)}loadFromJSON(e,t){let{signal:n}=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(!e)return Promise.reject(new c("`json` is undefined"));let r=typeof e==`string`?JSON.parse(e):e,{objects:i=[],backgroundImage:a,background:o,overlayImage:s,overlay:l,clipPath:u}=r,d=this.renderOnAddRemove;return this.renderOnAddRemove=!1,Promise.all([We(i,{reviver:t,signal:n}),Ge({backgroundImage:a,backgroundColor:o,overlayImage:s,overlayColor:l,clipPath:u},{signal:n})]).then(e=>{let[t,n]=e;return this.clear(),this.add(...t),this.set(r),this.set(n),this.renderOnAddRemove=d,this})}clone(e){let t=this.toObject(e);return this.cloneWithoutData().loadFromJSON(t)}cloneWithoutData(){let e=R(this);return new this.constructor(e)}toDataURL(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{format:t=`png`,quality:n=1,multiplier:r=1,enableRetinaScaling:i=!1}=e,a=r*(i?this.getRetinaScaling():1);return Oe(this.toCanvasElement(a,e),t,n)}toBlob(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},{format:t=`png`,quality:n=1,multiplier:r=1,enableRetinaScaling:i=!1}=e,a=r*(i?this.getRetinaScaling():1);return ke(this.toCanvasElement(a,e),t,n)}toCanvasElement(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:1,{width:t,height:n,left:r,top:i,filter:a}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},o=(t||this.width)*e,s=(n||this.height)*e,c=this.getZoom(),l=this.width,u=this.height,d=this.skipControlsDrawing,f=c*e,p=this.viewportTransform,m=[f,0,0,f,(p[4]-(r||0))*e,(p[5]-(i||0))*e],h=this.enableRetinaScaling,g=R({width:o,height:s}),_=a?this._objects.filter(e=>a(e)):this._objects;return this.enableRetinaScaling=!1,this.viewportTransform=m,this.width=o,this.height=s,this.skipControlsDrawing=!0,this.calcViewportBoundaries(),this.renderCanvas(g.getContext(`2d`),_),this.viewportTransform=p,this.width=l,this.height=u,this.calcViewportBoundaries(),this.enableRetinaScaling=h,this.skipControlsDrawing=d,g}dispose(){return!this.disposed&&this.elements.cleanupDOM({width:this.width,height:this.height}),pe.cancelByCanvas(this),this.disposed=!0,new Promise((e,t)=>{let n=()=>{this.destroy(),e(!0)};n.kill=t,this.__cleanupTask&&this.__cleanupTask.kill(`aborted`),this.destroyed?e(!1):this.nextRenderHandle?this.__cleanupTask=n:n()})}destroy(){this.destroyed=!0,this.cancelRequestedRender(),this.forEachObject(e=>e.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} }>`}};e(ot,`ownDefaults`,at);const st=[`touchstart`,`touchmove`,`touchend`],ct=e=>{let t=Qe(e.target),n=function(e){let t=e.changedTouches;return t&&t[0]?t[0]:e}(e);return new L(n.clientX+t.left,n.clientY+t.top)},lt=e=>st.includes(e.type)||e.pointerType===`touch`,ut=e=>{e.preventDefault(),e.stopPropagation()},dt=e=>{let t=0,n=0,r=0,i=0;for(let a=0,o=e.length;a<o;a++){let{x:o,y:s}=e[a];(o>r||!a)&&(r=o),(o<t||!a)&&(t=o),(s>i||!a)&&(i=s),(s<n||!a)&&(n=s)}return{left:t,top:n,width:r-t,height:i-n}},ft=[`translateX`,`translateY`,`scaleX`,`scaleY`],pt=(e,t)=>mt(e,H(t,e.calcOwnMatrix())),mt=(e,t)=>{let n=Pe(t),{translateX:i,translateY:a,scaleX:o,scaleY:s}=n,c=r(n,ft),l=new L(i,a);e.flipX=!1,e.flipY=!1,Object.assign(e,c),e.set({scaleX:o,scaleY:s}),e.setPositionByOrigin(l,E,E)},ht=e=>{e.scaleX=1,e.scaleY=1,e.skewX=0,e.skewY=0,e.flipX=!1,e.flipY=!1,e.rotate(0)},gt=e=>({scaleX:e.scaleX,scaleY:e.scaleY,skewX:e.skewX,skewY:e.skewY,angle:e.angle,left:e.left,flipX:e.flipX,flipY:e.flipY,top:e.top}),_t=(e,t,n)=>{let r=e/2,i=t/2,a=dt([new L(-r,-i),new L(r,-i),new L(-r,i),new L(r,i)].map(e=>e.transform(n)));return new L(a.width,a.height)},vt=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:w;return H(V(arguments.length>1&&arguments[1]!==void 0?arguments[1]:w),e)},yt=function(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:w,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:w;return e.transform(vt(t,n))},bt=function(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:w,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:w;return e.transform(vt(t,n),!0)},xt=(e,t,n)=>{let r=vt(t,n);return mt(e,H(r,e.calcOwnMatrix())),r},St=(e,t)=>{var r;let{transform:{target:i}}=t;(r=i.canvas)==null||r.fire(`object:${e}`,n(n({},t),{},{target:i})),i.fire(e,t)},Ct={left:-.5,top:-.5,center:0,bottom:.5,right:.5},G=e=>typeof e==`string`?Ct[e]:e-.5,wt=`not-allowed`;function Tt(e){return G(e.originX)===G(E)&&G(e.originY)===G(E)}function Et(e){return .5-G(e)}const Dt=(e,t)=>e[t],Ot=(e,t,n,r)=>({e,transform:t,pointer:new L(n,r)});function kt(e,t){let n=e.getTotalAngle()+Ae(Math.atan2(t.y,t.x))+360;return Math.round(n%360/45)}function At(e,t,n,r,i){let{target:a,corner:o}=e,s=a.controls[o],c=a.canvas?.getZoom()||1,l=a.padding/c,u=function(e,t,n,r){let i=e.getRelativeCenterPoint(),a=n!==void 0&&r!==void 0?e.translateToGivenOrigin(i,E,E,n,r):new L(e.left,e.top);return(e.angle?t.rotate(-z(e.angle),i):t).subtract(a)}(a,new L(r,i),t,n);return u.x>=l&&(u.x-=l),u.x<=-l&&(u.x+=l),u.y>=l&&(u.y-=l),u.y<=l&&(u.y+=l),u.x-=s.offsetX,u.y-=s.offsetY,u}const jt=(e,t,n,r)=>{let{target:i,offsetX:a,offsetY:o}=t,s=n-a,c=r-o,l=!Dt(i,`lockMovementX`)&&i.left!==s,u=!Dt(i,`lockMovementY`)&&i.top!==c;return l&&i.set(D,s),u&&i.set(`top`,c),(l||u)&&St(te,Ot(e,t,n,r)),l||u},Mt={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`},Nt=(e,t,n)=>(n<0&&(n+=1),n>1&&--n,n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e),Pt=(e,t,n,r)=>{e/=255,t/=255,n/=255;let i=Math.max(e,t,n),a=Math.min(e,t,n),o,s,c=(i+a)/2;if(i===a)o=s=0;else{let r=i-a;switch(s=c>.5?r/(2-i-a):r/(i+a),i){case e:o=(t-n)/r+(t<n?6:0);break;case t:o=(n-e)/r+2;break;case n:o=(e-t)/r+4}o/=6}return[Math.round(360*o),Math.round(100*s),Math.round(100*c),r]},Ft=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:`1`;return parseFloat(e)/(e.endsWith(`%`)?100:1)},It=e=>Math.min(Math.round(e),255).toString(16).toUpperCase().padStart(2,`0`),Lt=e=>{let[t,n,r,i=1]=e,a=Math.round(.3*t+.59*n+.11*r);return[a,a,a,i]};var K=class t{constructor(n){if(e(this,`isUnrecognised`,!1),n)if(n instanceof t)this.setSource([...n._source]);else if(Array.isArray(n)){let[e,t,r,i=1]=n;this.setSource([e,t,r,i])}else this.setSource(this._tryParsingColor(n));else this.setSource([0,0,0,1])}_tryParsingColor(e){return(e=e.toLowerCase())in Mt&&(e=Mt[e]),e===`transparent`?[255,255,255,0]:t.sourceFromHex(e)||t.sourceFromRgb(e)||t.sourceFromHsl(e)||(this.isUnrecognised=!0)&&[0,0,0,1]}getSource(){return this._source}setSource(e){this._source=e}toRgb(){let[e,t,n]=this.getSource();return`rgb(${e},${t},${n})`}toRgba(){return`rgba(${this.getSource().join(`,`)})`}toHsl(){let[e,t,n]=Pt(...this.getSource());return`hsl(${e},${t}%,${n}%)`}toHsla(){let[e,t,n,r]=Pt(...this.getSource());return`hsla(${e},${t}%,${n}%,${r})`}toHex(){return this.toHexa().slice(0,6)}toHexa(){let[e,t,n,r]=this.getSource();return`${It(e)}${It(t)}${It(n)}${It(Math.round(255*r))}`}getAlpha(){return this.getSource()[3]}setAlpha(e){return this._source[3]=e,this}toGrayscale(){return this.setSource(Lt(this.getSource())),this}toBlackWhite(e){let[t,,,n]=Lt(this.getSource()),r=t<(e||127)?0:255;return this.setSource([r,r,r,n]),this}overlayWith(e){e instanceof t||(e=new t(e));let n=this.getSource(),r=e.getSource(),[i,a,o]=n.map((e,t)=>Math.round(.5*e+.5*r[t]));return this.setSource([i,a,o,n[3]]),this}static fromRgb(e){return t.fromRgba(e)}static fromRgba(e){return new t(t.sourceFromRgb(e))}static sourceFromRgb(e){let t=e.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(t){let[e,n,r]=t.slice(1,4).map(e=>{let t=parseFloat(e);return e.endsWith(`%`)?Math.round(2.55*t):t});return[e,n,r,Ft(t[4])]}}static fromHsl(e){return t.fromHsla(e)}static fromHsla(e){return new t(t.sourceFromHsl(e))}static sourceFromHsl(e){let n=e.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(!n)return;let r=(t.parseAngletoDegrees(n[1])%360+360)%360/360,i=parseFloat(n[2])/100,a=parseFloat(n[3])/100,o,s,c;if(i===0)o=s=c=a;else{let e=a<=.5?a*(i+1):a+i-a*i,t=2*a-e;o=Nt(t,e,r+1/3),s=Nt(t,e,r),c=Nt(t,e,r-1/3)}return[Math.round(255*o),Math.round(255*s),Math.round(255*c),Ft(n[4])]}static fromHex(e){return new t(t.sourceFromHex(e))}static sourceFromHex(e){if(e.match(/^#?(([0-9a-f]){3,4}|([0-9a-f]{2}){3,4})$/i)){let t=e.slice(e.indexOf(`#`)+1),n;n=t.length<=4?t.split(``).map(e=>e+e):t.match(/.{2}/g);let[r,i,a,o=255]=n.map(e=>parseInt(e,16));return[r,i,a,o/255]}}static parseAngletoDegrees(e){let t=e.toLowerCase(),n=parseFloat(t);return t.includes(`rad`)?Ae(n):t.includes(`turn`)?360*n:n}};const Rt=function(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:16,n=/\D{0,2}$/.exec(e),r=parseFloat(e),i=o.DPI;switch(n?.[0]){case`mm`:return r*i/25.4;case`cm`:return r*i/2.54;case`in`:return r*i;case`pt`:return r*i/72;case`pc`:return r*i/72*12;case`em`:return r*t;default:return r}},zt=e=>{let[t,n]=e.trim().split(` `),[r,i]=(a=t)&&a!==A?[a.slice(1,4),a.slice(5,8)]:a===A?[a,a]:[`Mid`,`Mid`];var a;return{meetOrSlice:n||`meet`,alignX:r,alignY:i}},Bt=function(e,t){let n,r,i=!(arguments.length>2&&arguments[2]!==void 0)||arguments[2];if(t)if(t.toLive)n=`url(#SVGID_${t.id})`;else{let e=new K(t),i=e.getAlpha();n=e.toRgb(),i!==1&&(r=i.toString())}else n=`none`;return i?`${e}: ${n}; ${r?`${e}-opacity: ${r}; `:``}`:`${e}="${n}" ${r?`${e}-opacity="${r}" `:``}`};var Vt=class{getSvgStyles(e){let t=this.fillRule?this.fillRule:`nonzero`,n=this.strokeWidth?this.strokeWidth:`0`,r=this.strokeDashArray?this.strokeDashArray.join(` `):A,i=this.strokeDashOffset?this.strokeDashOffset:`0`,a=this.strokeLineCap?this.strokeLineCap:`butt`,o=this.strokeLineJoin?this.strokeLineJoin:`miter`,s=this.strokeMiterLimit?this.strokeMiterLimit:`4`,c=this.opacity===void 0?`1`:this.opacity,l=this.visible?``:` visibility: hidden;`,u=e?``:this.getSvgFilter(),d=Bt(P,this.fill);return[Bt(F,this.stroke),`stroke-width: `,n,`; `,`stroke-dasharray: `,r,`; `,`stroke-linecap: `,a,`; `,`stroke-dashoffset: `,i,`; `,`stroke-linejoin: `,o,`; `,`stroke-miterlimit: `,s,`; `,d,`fill-rule: `,t,`; `,`opacity: `,c,`;`,u,l].join(``)}getSvgFilter(){return this.shadow?`filter: url(#SVGID_${this.shadow.id});`:``}getSvgCommons(){return[this.id?`id="${this.id}" `:``,this.clipPath?`clip-path="url(#${this.clipPath.clipPathId})" `:``].join(``)}getSvgTransform(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:``;return`${`transform="${Je(e?this.calcTransformMatrix():this.calcOwnMatrix())}`}${t}" `}_toSVG(e){return[``]}toSVG(e){return this._createBaseSVGMarkup(this._toSVG(e),{reviver:e})}toClipPathSVG(e){return` `+this._createBaseClipPathSVGMarkup(this._toSVG(e),{reviver:e})}_createBaseClipPathSVGMarkup(e){let{reviver:t,additionalTransform:n=``}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=[this.getSvgTransform(!0,n),this.getSvgCommons()].join(``),i=e.indexOf(`COMMON_PARTS`);return e[i]=r,t?t(e.join(``)):e.join(``)}_createBaseSVGMarkup(e){let{noStyle:t,reviver:n,withShadow:r,additionalTransform:i}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},a=t?``:`style="${this.getSvgStyles()}" `,o=r?`style="${this.getSvgFilter()}" `:``,s=this.clipPath,c=this.strokeUniform?`vector-effect="non-scaling-stroke" `:``,l=s&&s.absolutePositioned,u=this.stroke,d=this.fill,f=this.shadow,p=[],m=e.indexOf(`COMMON_PARTS`),h;return s&&(s.clipPathId=`CLIPPATH_${Te()}`,h=`<clipPath id="${s.clipPathId}" >
${s.toClipPathSVG(n)}</clipPath>
`),l&&p.push(`<g `,o,this.getSvgCommons(),` >
`),p.push(`<g `,this.getSvgTransform(!1),l?``:o+this.getSvgCommons(),` >
`),e[m]=[a,c,t?``:this.addPaintOrder(),` `,i?`transform="${i}" `:``].join(``),W(d)&&p.push(d.toSVG(this)),W(u)&&p.push(u.toSVG(this)),f&&p.push(f.toSVG(this)),s&&p.push(h),p.push(e.join(``)),p.push(`</g>
`),l&&p.push(`</g>
`),n?n(p.join(``)):p.join(``)}addPaintOrder(){return this.paintFirst===P?``:` paint-order="${this.paintFirst}" `}};function Ht(e){return RegExp(`^(`+e.join(`|`)+`)\\b`,`i`)}const Ut=`textDecorationThickness`,Wt=[`fontSize`,`fontWeight`,`fontFamily`,`fontStyle`],Gt=[`underline`,`overline`,`linethrough`],Kt=[...Wt,`lineHeight`,`text`,`charSpacing`,`textAlign`,`styles`,`path`,`pathStartOffset`,`pathSide`,`pathAlign`],qt=[...Kt,...Gt,`textBackgroundColor`,`direction`,Ut],Jt=[...Wt,...Gt,F,`strokeWidth`,P,`deltaY`,`textBackgroundColor`,Ut],Yt={_reNewline:ee,_reSpacesAndTabs:/[ \t\r]/g,_reSpaceAndTab:/[ \t\r]/,_reWords:/\S+/g,fontSize:40,fontWeight:`normal`,fontFamily:`Times New Roman`,underline:!1,overline:!1,linethrough:!1,textAlign:D,fontStyle:`normal`,lineHeight:1.16,textBackgroundColor:``,stroke:null,shadow:null,path:void 0,pathStartOffset:0,pathSide:D,pathAlign:`baseline`,charSpacing:0,deltaY:0,direction:`ltr`,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,[Ut]:66.667},Xt=`justify`,Zt=`justify-left`,Qt=`justify-right`,$t=`justify-center`;var en,tn,nn;const rn=String.raw(en||=i([`[-+]?(?:d*.d+|d+.?)(?:[eE][-+]?d+)?`],[`[-+]?(?:\\d*\\.\\d+|\\d+\\.?)(?:[eE][-+]?\\d+)?`])),an=String.raw(tn||=i([`(?:s*,?s+|s*,s*)`],[`(?:\\s*,?\\s+|\\s*,\\s*)`])),on=RegExp(`(normal|italic)?\\s*(normal|small-caps)?\\s*(normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900)?\\s*(`+rn+`(?:px|cm|mm|em|pt|pc|in)*)(?:\\/(normal|`+rn+`))?\\s+(.*)`),sn={cx:D,x:D,r:`radius`,cy:`top`,y:`top`,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":Ut},cn=`font-size`,ln=`clip-path`;Ht([`path`,`circle`,`polygon`,`polyline`,`ellipse`,`rect`,`line`,`image`,`text`]),Ht([`symbol`,`image`,`marker`,`pattern`,`view`,`svg`]);const un=Ht([`symbol`,`g`,`a`,`svg`,`clipPath`,`defs`]);new RegExp(String.raw(nn||=i([`^s*(`,`)`,`(`,`)`,`(`,`)`,`(`,`)s*$`],[`^\\s*(`,`)`,`(`,`)`,`(`,`)`,`(`,`)\\s*$`]),rn,an,rn,an,rn,an,rn));const dn=new L(1,0),fn=new L,pn=(e,t)=>e.rotate(t),mn=(e,t)=>new L(t).subtract(e),hn=e=>e.distanceFrom(fn),gn=(e,t)=>Math.atan2(bn(e,t),xn(e,t)),_n=e=>gn(dn,e),vn=e=>e.eq(fn)?e:e.scalarDivide(hn(e)),yn=function(e){let t=!(arguments.length>1&&arguments[1]!==void 0)||arguments[1];return vn(new L(-e.y,e.x).scalarMultiply(t?1:-1))},bn=(e,t)=>e.x*t.y-e.y*t.x,xn=(e,t)=>e.x*t.x+e.y*t.y,Sn=(e,t,n)=>{if(e.eq(t)||e.eq(n))return!0;let r=bn(t,n),i=bn(t,e),a=bn(n,e);return r>=0?i>=0&&a<=0:!(i<=0&&a>=0)},Cn=`(-?\\d+(?:\\.\\d*)?(?:px)?(?:\\s?|$))?`,wn=RegExp(`(?:\\s|^)`+Cn+Cn+`(`+rn+`?(?:px)?)?(?:\\s?|$)(?:$|\\s)`);var Tn=class e{constructor(t){let n=typeof t==`string`?e.parseShadow(t):t;Object.assign(this,e.ownDefaults,n),this.id=Te()}static parseShadow(e){let t=e.trim(),[,n=0,r=0,i=0]=(wn.exec(t)||[]).map(e=>parseFloat(e)||0);return{color:(t.replace(wn,``)||`rgb(0,0,0)`).trim(),offsetX:n,offsetY:r,blur:i}}toString(){return[this.offsetX,this.offsetY,this.blur,this.color].join(`px `)}toSVG(e){let t=pn(new L(this.offsetX,this.offsetY),z(-e.angle)),n=new K(this.color),r=40,i=40;return e.width&&e.height&&(r=100*U((Math.abs(t.x)+this.blur)/e.width,o.NUM_FRACTION_DIGITS)+20,i=100*U((Math.abs(t.y)+this.blur)/e.height,o.NUM_FRACTION_DIGITS)+20),e.flipX&&(t.x*=-1),e.flipY&&(t.y*=-1),`<filter id="SVGID_${this.id}" y="-${i}%" height="${100+2*i}%" x="-${r}%" width="${100+2*r}%" >
<feGaussianBlur in="SourceAlpha" stdDeviation="${U(this.blur?this.blur/2:0,o.NUM_FRACTION_DIGITS)}"></feGaussianBlur>
<feOffset dx="${U(t.x,o.NUM_FRACTION_DIGITS)}" dy="${U(t.y,o.NUM_FRACTION_DIGITS)}" result="oBlur" ></feOffset>
<feFlood flood-color="${n.toRgb()}" flood-opacity="${n.getAlpha()}"/>
<feComposite in2="oBlur" operator="in" />
<feMerge>
<feMergeNode></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
</feMerge>
</filter>
`}toObject(){let t={color:this.color,blur:this.blur,offsetX:this.offsetX,offsetY:this.offsetY,affectStroke:this.affectStroke,nonScaling:this.nonScaling,type:this.constructor.type},n=e.ownDefaults;return this.includeDefaultValues?t:qe(t,(e,t)=>e!==n[t])}static async fromObject(e){return new this(e)}};e(Tn,`ownDefaults`,{color:`rgb(0,0,0)`,blur:0,offsetX:0,offsetY:0,affectStroke:!1,includeDefaultValues:!0,nonScaling:!1}),e(Tn,`type`,`shadow`),I.setClass(Tn,`shadow`);const En=(e,t,n)=>Math.max(e,Math.min(t,n)),Dn=[`top`,D,M,N,`flipX`,`flipY`,`originX`,`originY`,`angle`,`opacity`,`globalCompositeOperation`,`shadow`,`visible`,le,ue],On=[P,F,`strokeWidth`,`strokeDashArray`,`width`,`height`,`paintFirst`,`strokeUniform`,`strokeLineCap`,`strokeDashOffset`,`strokeLineJoin`,`strokeMiterLimit`,`backgroundColor`,`clipPath`],kn={top:0,left:0,width:0,height:0,angle:0,flipX:!1,flipY:!1,scaleX:1,scaleY:1,minScaleLimit:0,skewX:0,skewY:0,originX:D,originY:`top`,strokeWidth:1,strokeUnif