polotno-node 2.10.4 → 2.10.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -105,7 +105,7 @@ For more info see: https://github.com/konvajs/react-konva/issues/194
105
105
  `:case" ":case"\r":case"\f":switch(v()){case"value":case"value-paren":case"at-group":case"comment":case"single-string":case"double-string":case"selector":i+=a;break;case"at-value":a===`
106
106
  `&&(w.value=i.trim(),S(),_());break}break;case":":switch(v()){case"name":w.name=i.trim(),i="",x("before-value");break;case"before-selector":i+=a,P("selector"),k("selector");break;case"before-value":x("value"),i+=a;break;default:i+=a;break}break;case";":switch(v()){case"name":case"before-value":case"value":i.trim().length>0&&(w.value=i.trim(),S()),x("before-name");break;case"value-paren":i+=a;break;case"at-value":w.value=i.trim(),S(),_();break;case"before-name":break;default:i+=a;break}break;case"{":switch(v()){case"selector":if(m(-1)==="\\"){i+=a;break}w.text=i.trim(),S(),x("before-name"),u=u+1;break;case"at-group":switch(w.name=i.trim(),w.type){case"font-face":case"viewport":case"page":k("before-name");break;default:k("before-selector")}S(),u=u+1;break;case"name":case"at-rule":w.name=i.trim(),S(),k("before-name"),u=u+1;break;case"comment":case"double-string":case"single-string":i+=a;break;case"before-value":x("value"),i+=a;break}break;case"}":switch(v()){case"before-name":case"name":case"before-value":case"value":i&&(w.value=i.trim()),w.name&&w.value&&S(),P("end"),S(),_(),v()==="at-group"&&(P("at-group-end"),S(),_()),u>0&&(u=u-1);break;case"at-group":case"before-selector":case"selector":if(m(-1)==="\\"){i+=a;break}u>0&&v(1)==="at-group"&&(P("at-group-end"),S()),u>1&&_(),u>0&&(u=u-1);break;case"double-string":case"single-string":case"comment":i+=a;break}break;case'"':case"'":switch(v()){case"double-string":a==='"'&&m(-1)!=="\\"&&_();break;case"single-string":a==="'"&&m(-1)!=="\\"&&_();break;case"before-at-value":x("at-value"),k(a==='"'?"double-string":"single-string");break;case"before-value":x("value"),k(a==='"'?"double-string":"single-string");break;case"comment":break;default:m(-1)!=="\\"&&k(a==='"'?"double-string":"single-string")}i+=a;break;case"/":switch(v()){case"comment":case"double-string":case"single-string":i+=a;break;case"before-value":case"selector":case"name":case"value":if(d("*")){var C=y("*/");C&&A(C+1)}else v()=="before-value"&&x("value"),i+=a;break;default:d("*")?(P("comment"),k("comment"),A()):i+=a;break}break;case"*":switch(v()){case"comment":d("/")?(w.text=i,A(),S(),_()):i+=a;break;case"before-selector":i+=a,P("selector"),k("selector");break;case"before-value":x("value"),i+=a;break;default:i+=a}break;case"@":switch(v()){case"comment":case"double-string":case"single-string":i+=a;break;case"before-value":x("value"),i+=a;break;default:for(var R=!1,N,U,G=0,Z=E.length;!R&&G<Z;++G)U=E[G],N=U.name||U,g(N)&&(R=!0,P(N),k(U.state||"at-group"),A(N.length),U.prefix&&(w.prefix=U.prefix),U.type&&(w.type=U.type));R||(i+=a);break}break;case"(":switch(v()){case"value":k("value-paren");break;case"before-value":x("value");break}i+=a;break;case")":switch(v()){case"value-paren":_();break;case"before-value":x("value");break}i+=a;break;default:switch(v()){case"before-selector":P("selector"),k("selector");break;case"before-name":P("property"),x("name");break;case"before-value":x("value");break;case"before-at-value":x("at-value");break}i+=a;break}return b}})(J7);var tS=J7.exports,rS={exports:{}};(function(e,t){h2("parse");var r=tS;e.exports=l;var n,i,a,o;function l(_,k){k||(k={}),n=!!k.comments,a=!!k.position,i=0,o=Array.isArray(_)?_.slice():r(_);for(var x,A=[],S;S=f();)x=g(S),x&&A.push(x);return{type:"stylesheet",stylesheet:{rules:A}}}function u(_,k){k||(k={});for(var x,A=["type","name","value"],S={},P=0;P<A.length;++P)x=A[P],_[x]&&(S[x]=k[x]||_[x]);for(A=Object.keys(k),P=0;P<A.length;++P)x=A[P],S[x]||(S[x]=k[x]);return a&&(S.position={start:_.start,end:_.end}),S}function f(){var _=o.shift();return _}function h(_){i=i+1;var k={};switch(_.type){case"font-face":case"viewport":k.declarations=d();break;case"page":k.prefix=_.prefix,k.declarations=d();break;default:k.prefix=_.prefix,k.rules=m()}return u(_,k)}function O(_){return u(_)}function w(_){return u(_)}function b(_){return u(_,{text:_.text})}function E(_){return u(_)}function p(_){return u(_)}function v(_){function k(x){return x.trim()}return u(_,{type:"rule",selectors:_.text.split(",").map(k),declarations:d()})}function g(_){switch(_.type){case"property":return p(_);case"selector":return v(_);case"at-group-end":i=i-1;return;case"media":case"keyframes":return h(_);case"comment":if(n)return b(_);break;case"charset":return w(_);case"import":return O(_);case"namespace":return E(_);case"font-face":case"supports":case"viewport":case"document":case"page":return h(_)}}function y(_){for(var k,x=[],A;(A=f())&&_&&_(A);)k=g(A),k&&x.push(k);return A&&A.type!=="end"&&o.unshift(A),x}function d(){return y(function(_){return _.type==="property"||_.type==="comment"})}function m(){return y(function(){return i})}})(rS);var xD=rS.exports,nS={exports:{}};(function(e,t){h2("stringify");var r,n,i,a,o,l;e.exports=u;function u(m,_){_||(_={}),i=_.indentation||"",n=!!_.compress,r=!!_.comments,a=1,n?o=l="":(o=`
107
107
  `,l=" ");var k=E(m.stylesheet.rules,y).join(`
108
- `).trim();return k}function f(m){if(m){a+=m;return}return n?"":Array(a).join(i||"")}function h(m){return"@"+m.type+" "+m.value+";"+o}function O(m){var _="",k=m.prefix||"";m.name&&(_=" "+m.name);var x=m.type!=="page";return"@"+k+m.type+_+l+p(m,x)+o}function w(m){return r?"/*"+(m.text||"")+"*/"+o:""}function b(m){var _;return m.selectors?_=m.selectors.join(","+o):(_="@"+m.type,_+=m.name?" "+m.name:""),f()+_+l+p(m)+o}function E(m,_){return m.reduce(function(k,x){var A=x.type==="comment"?w(x):_(x);return A&&k.push(A),k},[])}function p(m,_){var k=m.declarations,x=g;return m.rules&&(k=m.rules,x=b),k=v(k,x),k&&(k=o+k+(_?"":o)),"{"+k+f()+"}"}function v(m,_){if(!m)return"";f(1);var k=E(m,_);return f(-1),k.length?k.join(o):""}function g(m){if(m.type==="property")return d(m)}function y(m){switch(m.type){case"rule":return b(m);case"media":case"keyframes":return O(m);case"comment":return w(m);case"import":case"charset":case"namespace":return h(m);case"font-face":case"supports":case"viewport":case"document":case"page":return O(m)}}function d(m){var _=m.name?m.name+":"+l:"";return f()+_+m.value+";"}})(nS);var CD=nS.exports,kD={lex:tS,parse:xD,stringify:CD};(function(e){var t=ye&&ye.__importDefault||function(_){return _&&_.__esModule?_:{default:_}};Object.defineProperty(e,"__esModule",{value:!0}),e.useSvgColors=e.replaceColors=e.sameColors=e.fixSize=e.getSvgSize=e.svgToURL=e.getColors=e.urlToString=e.urlToBase64=void 0;const r=t(Ci),n=t(et),i=Qy,a=t(kD);function o(_){for(;_.parentNode;){if(_.nodeName==="defs")return!0;_=_.parentNode}return!1}function l(_){const k={};return _.querySelectorAll("style").forEach(x=>{const A=a.default.parse(x.textContent).stylesheet.rules;for(let S of A)S.selectors&&S.selectors.forEach(P=>{const C=k[P]||{};S.declarations.forEach(R=>{C[R.name]=R.value}),k[P]=C})}),k}function u(_,k){var x;const A={fill:"",stroke:""},S=((x=_.getAttribute("class"))===null||x===void 0?void 0:x.split(" "))||[],P=_.getAttribute("id");let C={};if(P&&k[`#${P}`]?C=k[`#${P}`]:S.forEach(R=>{k[`.${R}`]&&(C=Object.assign(Object.assign({},C),k[`.${R}`]))}),k[_.nodeName]&&(C=Object.assign(Object.assign({},C),k[_.nodeName])),_.getAttribute("fill")&&_.getAttribute("fill")!=="none"?A.fill=_.getAttribute("fill"):C.fill&&C.fill!=="none"&&(A.fill=C.fill),_.getAttribute("stroke")&&_.getAttribute("stroke")!=="none"?A.stroke=_.getAttribute("stroke"):C.stroke&&C.stroke!=="none"&&(A.stroke=C.stroke),!A.fill&&_.style.fill&&_.style.fill!=="none"&&(A.fill=_.style.fill),!A.stroke&&_.style.stroke&&_.style.stroke!=="none"&&(A.stroke=_.style.stroke),!A.stroke&&!A.fill){const R=_.ownerSVGElement,N=R&&R!==_&&u(R,k);(N==null?void 0:N.fill)==="currentColor"||(N==null?void 0:N.stroke)==="currentColor"||(A.fill="black")}return A}const f=["path","rect","circle","line","polygon","polyline","ellipse","text"];function h(_){for(var k=[],x=_.getElementsByTagName("*"),A=0,S=x.length;A<S;A++){const P=x[A];o(P)||(P.getAttribute("fill")!==null&&k.push(P),(P.getAttribute("stroke")!==null||P.style&&P.style.fill||f.indexOf(P.nodeName)>=0)&&k.push(P))}return k}async function O(_){const k=await fetch(_);return E(await k.text())}async function w(_){return await(await fetch(_,{mode:"cors"})).text()}function b(_){var k=new DOMParser().parseFromString(_,"image/svg+xml");const x=l(k),A=h(k),S=[];return A.forEach(P=>{const{fill:C,stroke:R}=u(P,x);[C,R].forEach(N=>{N&&(N==="currentColor"&&(N="black"),r.default.Util.colorToRGBA(N)&&S.indexOf(N)===-1&&S.push(N))})}),S}function E(_){return"data:image/svg+xml;base64,"+window.btoa(unescape(encodeURIComponent(_)))}async function p(_){const k=await w(_),x=new DOMParser().parseFromString(k,"image/svg+xml").documentElement.getAttribute("viewBox"),[A,S,P,C]=(x==null?void 0:x.split(" "))||[];return{width:parseFloat(P),height:parseFloat(C)}}function v(_){var k=new DOMParser().parseFromString(_,"image/svg+xml");const x=k.documentElement.getAttribute("viewBox"),[A,S,P,C]=(x==null?void 0:x.split(" "))||[],R=k.documentElement.getAttribute("width");!R&&k.documentElement.setAttribute("width",P+"px");const N=k.documentElement.getAttribute("height");if((!N||N.indexOf("%")>=0)&&k.documentElement.setAttribute("height",C+"px"),R&&R.indexOf("%")>=0&&N&&N.indexOf("%")===-1){const U=parseFloat(N)/parseFloat(C);k.documentElement.setAttribute("width",U*parseFloat(P)+"px")}if(N&&N.indexOf("%")>=0&&R&&R.indexOf("%")===-1){const U=parseFloat(R)/parseFloat(P);k.documentElement.setAttribute("height",U*parseFloat(C)+"px")}return R==="100%"&&N==="100%"&&(k.documentElement.setAttribute("width",P+"px"),k.documentElement.setAttribute("height",C+"px")),new XMLSerializer().serializeToString(k)}e.urlToBase64=O,e.urlToString=w,e.getColors=b,e.svgToURL=E,e.getSvgSize=p,e.fixSize=v;const g=(_,k)=>{if(!_||!k)return!1;if(k==="currentColor"&&_==="black")return!0;const x=r.default.Util.colorToRGBA(_),A=r.default.Util.colorToRGBA(k);return x&&A?x.r===A.r&&x.g===A.g&&x.b===A.b&&x.a===A.a:void 0};function y(_,k,x,A){var S=_.namespaceURI,P=document.createElementNS(S,"linearGradient");const C=r.default.Util.degToRad(x+90),R=(Math.cos(C)+1)/2,N=(Math.sin(C)+1)/2,U=(Math.cos(C+Math.PI)+1)/2,G=(Math.sin(C+Math.PI)+1)/2;P.setAttribute("x1",100*R+"%"),P.setAttribute("y1",100*N+"%"),P.setAttribute("x2",100*U+"%"),P.setAttribute("y2",100*G+"%"),P.setAttribute("gradientUnits","userSpaceOnUse"),P.setAttribute("id",k);for(var Z=0;Z<A.length;Z++){var W=A[Z],H=document.createElementNS(S,"stop");for(var M in W)W.hasOwnProperty(M)&&H.setAttribute(M,W[M]);P.appendChild(H)}return(_.querySelector("defs")||_.insertBefore(document.createElementNS(S,"defs"),_.firstChild)).appendChild(P)}function d(_,k){var x=new DOMParser().parseFromString(_,"image/svg+xml");const A=h(x),S=Array.from(k.keys()),P=l(x);return A.forEach(C=>{const{fill:R,stroke:N}=u(C,P);[{prop:"fill",color:R},{prop:"stroke",color:N}].forEach(({prop:U,color:G})=>{const Z=S.find(W=>(0,e.sameColors)(W,G));if(Z){const W=k.get(Z);if((0,i.isGradient)(W)){const{rotation:H,stops:M}=(0,i.parseColor)(W),L=M.map(B=>({offset:100*B.offset+"%","stop-color":B.color})),D="color"+Math.round(1e8*Math.random());y(x.children[0],D,H,L),C.style[U]=null,C.setAttribute(U,`url('#${D}')`)}else C.style[U]=k.get(Z)}})}),E(new XMLSerializer().serializeToString(x))}e.sameColors=g,e.replaceColors=d;const m=_=>{const[k,x]=n.default.useState([]);return n.default.useEffect(()=>{let A=!1;return(async()=>{x([]);const S=b(await w(_));A||x(S)})(),()=>{A=!0}},[_]),k};e.useSvgColors=m})(ou);var p2={};(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.trySetCanvasSize=void 0;const t=(r,n,i)=>{let a=n,o=i,l=1;for(;a>0&&o>0;){r.width=a,r.height=o;const u=r.getContext("2d");if(!u)return;if(u.fillStyle="rgba(0,0,0,0.1)",u.fillRect(0,0,1,1),u.getImageData(0,0,1,1).data[3]!==0)return void u.clearRect(0,0,r.width,r.height);if(l*=.9,a=Math.floor(n*l),o=Math.floor(i*l),a=Math.max(a,1),o=Math.max(o,1),a<=1&&o<=1)return r.width=1,void(r.height=1)}};e.trySetCanvasSize=t})(p2);(function(e){var t=ye&&ye.__createBinding||(Object.create?function(F,$,z,Y){Y===void 0&&(Y=z);var X=Object.getOwnPropertyDescriptor($,z);X&&!("get"in X?!$.__esModule:X.writable||X.configurable)||(X={enumerable:!0,get:function(){return $[z]}}),Object.defineProperty(F,Y,X)}:function(F,$,z,Y){Y===void 0&&(Y=z),F[Y]=$[z]}),r=ye&&ye.__setModuleDefault||(Object.create?function(F,$){Object.defineProperty(F,"default",{enumerable:!0,value:$})}:function(F,$){F.default=$}),n=ye&&ye.__importStar||function(F){if(F&&F.__esModule)return F;var $={};if(F!=null)for(var z in F)z!=="default"&&Object.prototype.hasOwnProperty.call(F,z)&&t($,F,z);return r($,F),$},i=ye&&ye.__importDefault||function(F){return F&&F.__esModule?F:{default:F}};Object.defineProperty(e,"__esModule",{value:!0}),e.ImageElement=e.useImageLoader=e.setImageLoaderHook=void 0;const a=i(et),o=ti,l=Ji,u=Ia,f=i(Kp),h=i(Ci),O=Qc,w=Ll,b=Yi,E=n(ou),p=Qn,v=p2,g=ef,y=Ml,d=No;function m(){return document.createElement("canvas")}async function _(F){if(!(F.indexOf("data:image/svg+xml")>=0||F.indexOf(".svg")>=0))return F;const $=await E.urlToString(F),z=E.fixSize($);return E.svgToURL(z)}const k=F=>{const[$,z]=a.default.useState(F);return a.default.useEffect(()=>{(async()=>{const Y=await _(F);Y!==$&&z(Y)})()},[F]),$};function x(F,$){return Math.sqrt(Math.pow($.x-F.x,2)+Math.pow($.y-F.y,2))}function A(F,$){return{x:(F.x+$.x)/2,y:(F.y+$.y)/2}}const S=(F,$,z)=>{const Y=a.default.useMemo(()=>{var X,Q;const{flipX:J,flipY:re}=F,oe=F.type==="svg"||F.src.indexOf("data:image/svg+xml")>=0||F.src.indexOf(".svg")>=0,ae=navigator.userAgent.toLowerCase().indexOf("firefox")>-1,ie=(/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||ae)&&oe||F.maskSrc;if(!J&&!re&&!ie)return $;if(!$||!$.width||!$.height)return null;const Re=m();let Me=1;F.type==="svg"&&(Me=Math.max(F.a.width/$.width*z,F.a.height/$.height*z)),(0,v.trySetCanvasSize)(Re,Math.max($.width*Me,1),Math.max($.height*Me,1));let ne=J?-Re.width:0,le=re?-Re.height:0;return(X=Re.getContext("2d"))===null||X===void 0||X.scale(J?-1:1,re?-1:1),(Q=Re.getContext("2d"))===null||Q===void 0||Q.drawImage($,ne,le,Re.width,Re.height),Re},[F.maskSrc,F.flipX,F.flipY,$,F.a.width,F.a.height,z]);return a.default.useEffect(()=>()=>{Y&&Y.nodeName==="CANVAS"&&h.default.Util.releaseCanvas(Y)},[Y]),Y};function P(F,$){const z=$.width/$.height;let Y,X;return z>=F.width/F.height?(Y=F.width,X=F.width/z):(Y=F.height*z,X=F.height),{x:(F.width-Y)/2,y:(F.height-X)/2,width:Y,height:X}}function C(F,$,z,Y,X,Q,J){for(var re=new ImageData($,z),oe=new Int32Array(F.data.buffer),ae=F.width,ie=new Int32Array(re.data.buffer),Re=re.width,Me=$/Q,ne=z/J,le=Math.round(1/Me),be=Math.round(1/ne),me=le*be,te=0;te<re.height;te++)for(var de=0;de<Re;de++){for(var he=Y+Math.round(de/Me)+(X+Math.round(te/ne))*ae,Se=0,$e=0,tt=0,Ae=0,Ce=0;Ce<be;Ce++)for(var Oe=0;Oe<le;Oe++){var Fe=oe[he+Oe+Ce*ae];Se+=Fe<<24>>>24,$e+=Fe<<16>>>24,tt+=Fe<<8>>>24,Ae+=Fe>>>24}Se=Math.round(Se/me),$e=Math.round($e/me),tt=Math.round(tt/me),Ae=Math.round(Ae/me),ie[de+te*Re]=Ae<<24|tt<<16|$e<<8|Se}return re}function R(F,$){var z,Y;const X=m();X.width=F.width,X.height=F.height;const Q=Math.max(1,Math.floor(X.width*$)),J=Math.max(1,Math.floor(X.height*$));(z=X.getContext("2d"))===null||z===void 0||z.drawImage(F,0,0,X.width,X.height);const re=C(X.getContext("2d").getImageData(0,0,X.width,X.height),Q,J,0,0,X.width,X.height);return X.width=Q,X.height=J,(Y=X.getContext("2d"))===null||Y===void 0||Y.putImageData(re,0,0),X}const N=(F,$)=>{const[z,Y]=L(F.maskSrc,"anonymous"),X=F.maskSrc?Y:"loaded";return(0,e.useImageLoader)(X,F.maskSrc||"",F.id),a.default.useMemo(()=>{if(!z||!$||!$.width||!$.height)return $;const Q=m();Q.width=Math.max($.width,1),Q.height=Math.max($.height,1);const J=Q.getContext("2d");if(!J)return $;J.drawImage($,0,0),J.globalCompositeOperation="source-in";const re=P(z,F);return J.drawImage(z,re.x,re.y,re.width,re.height,0,0,$.width,$.height),Q},[$,z,F.a.width,F.a.height])},U=(F,$,z)=>Math.max($,Math.min(z,F)),G=(F,$,z,Y,X=0,Q=!1,J=!0)=>{const re=Math.floor(U(F.a.width*Y,1,1e4)),oe=Math.floor(U(F.a.height*Y,1,1e4)),ae=Math.min(X*Y,re/2,oe/2),ie=Math.max(F.a.width/z.width,F.a.height/z.height)*Y,Re=F.page._exportingOrRendering&&p.flags.imageDownScalingEnabled&&ie<1&&!Q,Me=z.x===0&&z.y===0&&z.width===($==null?void 0:$.width)&&z.height===($==null?void 0:$.height),ne=a.default.useMemo(()=>{if(!(!$||!$.width||!$.height))return Me&&ae===0&&!Re?void 0:m()},[$,ae,Re,Me]);return a.default.useLayoutEffect(()=>{if(!ne||!$)return;(0,v.trySetCanvasSize)(ne,re,oe);const le=ne.getContext("2d");if(!le)return;ae&&(le.beginPath(),le.moveTo(ae,0),le.lineTo(re-ae,0),le.arc(re-ae,ae,ae,3*Math.PI/2,0,!1),le.lineTo(re,oe-ae),le.arc(re-ae,oe-ae,ae,0,Math.PI/2,!1),le.lineTo(ae,oe),le.arc(ae,oe-ae,ae,Math.PI/2,Math.PI,!1),le.lineTo(0,ae),le.arc(ae,ae,ae,Math.PI,3*Math.PI/2,!1),le.clip());const be=Re?R($,ie):$,me=Re?{x:Math.floor(z.x*ie),y:Math.floor(z.y*ie),width:Math.floor(z.width*ie),height:Math.floor(z.height*ie)}:z;le.drawImage(be,me.x,me.y,me.width,me.height,0,0,ne.width,ne.height)},[ne,F.a.width,F.a.height,z.x,z.y,z.width,z.height,X,Y,Q,F.page._exportingOrRendering,Re]),a.default.useEffect(()=>()=>{ne&&ne.nodeName==="CANVAS"&&h.default.Util.releaseCanvas(ne)},[ne]),ne||$},Z=(F,$,z,Y)=>{const X=k(F.clipSrc||""),[Q,J]=L(X,"anonymous"),re=F.clipSrc?J:"loaded";(0,e.useImageLoader)(re,F.clipSrc,F.id);const oe=a.default.useMemo(()=>{if($&&Q)return m()},[$,Q]);return a.default.useLayoutEffect(()=>{var ae;if(!Q||!$||!$.width||!$.height||!Q||!Q.width||!Q.height||!oe)return;const ie=m(),Re=Math.max(F.a.width/Q.width*z,F.a.height/Q.height*z);ie.width=Q.width*Re,ie.height=Q.height*Re,(ae=ie.getContext("2d"))===null||ae===void 0||ae.drawImage(Q,0,0,ie.width,ie.height),oe.width=Math.max($.width,1),oe.height=Math.max($.height,1);const Me=oe.getContext("2d");Me&&(Me.save(),Me.drawImage(ie,0,0,$.width,$.height),h.default.Util.releaseCanvas(ie),Me.globalCompositeOperation="source-in",Me.drawImage($,0,0,oe.width,oe.height),Me.restore())},[oe,$,Q,F.a.width,F.a.height,z,...Y]),F.clipSrc&&Q?oe:$},W=m(),H=(0,o.observer)(({element:F})=>{const $=Math.min(30,F.a.width/4,F.a.height/4),z=a.default.useRef(null);return a.default.useEffect(()=>{const Y=z.current;if(!Y)return;const X=new h.default.Animation(Q=>{Y.rotate(((Q==null?void 0:Q.timeDiff)||0)/2)},Y.getLayer());return X.start(),()=>{X.stop()}}),a.default.createElement(u.Group,{x:F.x,y:F.y,rotation:F.rotation,listening:!1,opacity:F.a.opacity,hideInExport:!F.showInExport},a.default.createElement(u.Rect,{width:F.a.width,height:F.a.height,fill:"rgba(124, 173, 212, 0.8)"}),a.default.createElement(u.Arc,{ref:z,x:F.a.width/2,y:F.a.height/2,fill:"white",outerRadius:Math.abs($),innerRadius:Math.max(1,$-5),angle:270}))}),M=(0,o.observer)(({element:F})=>{const $="Can not load the image...",z=Math.max(10,Math.min(30,F.a.width/25));return a.default.createElement(u.Group,{x:F.x,y:F.y,rotation:F.rotation,listening:!1,opacity:F.a.opacity,hideInExport:!F.showInExport},a.default.createElement(u.Rect,{width:F.a.width,height:F.a.height,fill:"rgba(223, 102, 102, 0.8)"}),a.default.createElement(u.Text,{text:$,fontSize:z,width:F.a.width,height:F.a.height,align:"center",fill:"white",verticalAlign:"middle",padding:5}))});let L=f.default;const D=F=>{L=F};e.setImageLoaderHook=D;const B=(F,$="",z="")=>{const Y=a.default.useRef(),X=()=>{var Q;(Q=Y.current)===null||Q===void 0||Q.call(Y),Y.current=void 0};a.default.useEffect(()=>X,[]),a.default.useLayoutEffect(()=>{const Q=$.slice(0,100),J=`image with id ${z} url: ${Q}`;F!=="loading"||Y.current||(Y.current=(0,b.incrementLoader)(J)),F!=="loading"&&X(),F==="failed"&&(0,b.triggerLoadError)(J)},[F])};e.useImageLoader=B;const q=({image:F,status:$,type:z})=>{const Y=a.default.useRef();return a.default.useEffect(()=>{Y.current=F||Y.current},[F]),$!=="failed"||$!=="failed"&&z==="svg"?Y.current:void 0},K=F=>{const[$,z]=a.default.useReducer(J=>J+1,0),Y=a.default.useRef("loading"),X=a.default.useRef(F.src),Q=a.default.useRef(F.src);return Q.current!==F.src&&(Q.current=F.src,Y.current="loading"),a.default.useEffect(()=>{if(F.type!=="svg"||!F.src)return;let J=!1;return(async()=>{Y.current="loading",z();const re=await E.urlToString(F.src),oe=E.fixSize(re),ae=E.replaceColors(oe,F.colorsReplace);J||(X.current=ae,Y.current="loaded",z())})(),()=>{J=!0}},[F.src,JSON.stringify(F.colorsReplace)]),F.type!=="svg"?[F.src,"loaded"]:[X.current,Y.current]};e.ImageElement=(0,o.observer)(({element:F,store:$})=>{var z;const[Y,X]=a.default.useState(!1),Q=a.default.useRef(null),J=a.default.useRef(null),[re,oe]=a.default.useState(!1),ae=$.selectedShapes.indexOf(F)>=0,[ie,Re]=K(F),[Me,ne]=L(ie,"anonymous"),le=F.type!=="svg"||Re==="loaded"?ne:"loading";(0,e.useImageLoader)(le,F.src,F.id);const be=F.page._exportingOrRendering?1:Math.max(1,$.scale),me=$._elementsPixelRatio*be,te=q({image:Me,status:ne,type:F.type}),de=S(F,Me||te,me),he=N(F,de)||W;let{cropX:Se,cropY:$e,cropWidth:tt,cropHeight:Ae}=F;ne!=="loaded"&&(Se=$e=0,tt=Ae=1);const Ce=he.width*tt,Oe=he.height*Ae,Fe=F.a.width/F.a.height;let Qe,se;const fe=Ce/Oe,Ze=F.type==="svg";Ze?(Qe=Ce,se=Oe):Fe>=fe?(Qe=Ce,se=Ce/Fe):(Qe=Oe*Fe,se=Oe);const Je={x:he.width*Se,y:he.height*$e,width:Qe,height:se},_e=(z=F.cornerRadius)!==null&&z!==void 0?z:0,xe=F.page._exportingOrRendering?1:Math.min(2,$.scale),qe=$._elementsPixelRatio*xe;let we=Z(F,G(F,he,Je,qe,_e,Y||F._cropModeEnabled||F.type==="svg",!0),qe,[Je,_e,qe]);const We=Math.max(F.a.width/Qe,F.a.height/se);a.default.useEffect(()=>{var Ne;if(!F._cropModeEnabled)return;const nt=(Ne=Q.current)===null||Ne===void 0?void 0:Ne.getStage();function mt(yt){F._cropModeEnabled&&yt.target!==J.current&&F.toggleCropMode(!1)}function Nt(yt){F._cropModeEnabled&&yt.target.parentNode!==nt.content&&F.toggleCropMode(!1)}return document.body.addEventListener("click",Nt),nt==null||nt.on("click",mt),nt==null||nt.on("tap",mt),()=>{document.body.removeEventListener("click",Nt),document.body.removeEventListener("touchstart",Nt),nt==null||nt.off("click",mt),nt==null||nt.off("click",mt)}},[F._cropModeEnabled]),a.default.useLayoutEffect(()=>{if(!(Y||F._cropModeEnabled))return(0,g.applyFilter)(Q.current,F),(0,l.autorun)(()=>{(0,g.applyFilter)(Q.current,F)},{delay:100})},[we,F.page._exportingOrRendering,Y,tt,Ae,F._cropModeEnabled]),a.default.useLayoutEffect(()=>{var Ne;Y||F._cropModeEnabled?(Ne=Q.current)===null||Ne===void 0||Ne.clearCache():(0,g.applyFilter)(Q.current,F)},[Y,F.a.width,F.a.height,F._cropModeEnabled]),a.default.useEffect(()=>{(0,g.applyFilter)(Q.current,F)},[F.shadowEnabled,F.shadowBlur,F.cornerRadius,F.shadowColor,F.shadowOffsetX,F.shadowOffsetY,F.shadowOpacity]);const Ee=a.default.useRef(null),Ke=a.default.useRef(null),rr=a.default.useRef(null);a.default.useLayoutEffect(()=>{F._cropModeEnabled&&(Ke.current.nodes([Ee.current]),rr.current.nodes([J.current]))},[F._cropModeEnabled]);var gt=a.default.useRef(null),cr=a.default.useRef(0),Le=a.default.useRef(!1);const Ye=Ne=>{var nt;((nt=Ne.evt.touches)===null||nt===void 0?void 0:nt.length)>2&&Ne.target.stopDrag(),Math.round(Ne.target.x())>0&&(Ne.target.x(0),Ne.target.scaleX(1)),Math.round(Ne.target.y())>0&&(Ne.target.y(0),Ne.target.scaleY(1));const mt=Ne.target.width()*Ne.target.scaleX(),Nt=Ne.target.height()*Ne.target.scaleY(),yt=Math.min(1,Qe/mt),Tr=Math.min(1,se/Nt),wn=1-yt,or=Math.min(wn,Math.max(0,Math.round(-Ne.target.x())/mt)),ra=1-Tr,Ti=Math.min(ra,Math.max(0,Math.round(-Ne.target.y())/Nt));Ne.target.setAttrs({x:-or*he.width,y:-Ti*he.height,scaleX:1,scaleY:1}),F.set({cropX:or,cropY:Ti,cropWidth:yt,cropHeight:Tr})},rt=()=>{F.type!=="svg"&&F.contentEditable&&setTimeout(()=>{F.toggleCropMode(!0)})},Pt=F.type==="svg"&&te,Ct=ne==="loading"&&!Pt,en=ne==="failed",Wr=!Ct&&!en,wr=a.default.useRef({cropX:0,cropY:0,cropWidth:0,cropHeight:0}),bn=Wr?F.a.opacity:0;(0,y.useFadeIn)(Q,bn);const ki=F.selectable||$.role==="admin",_n=(0,d.isTouchDevice)();return a.default.createElement(a.default.Fragment,null,Ct&&a.default.createElement(H,{element:F}),en&&a.default.createElement(M,{element:F}),a.default.createElement(u.Image,{ref:Q,name:"element",id:F.id,image:we,x:F.a.x,y:F.a.y,width:F.a.width||1,height:F.a.height||1,rotation:F.a.rotation,opacity:bn,shadowEnabled:F.shadowEnabled,shadowBlur:F.shadowBlur,shadowOffsetX:F.shadowOffsetX,shadowOffsetY:F.shadowOffsetY,shadowColor:F.shadowColor,shadowOpacity:F.shadowOpacity,customCrop:Je,listening:ki,draggable:_n?F.draggable&&ae:F.draggable,preventDefault:!_n||ae,hideInExport:!F.showInExport,onMouseEnter:()=>{oe(!0)},onMouseLeave:()=>{oe(!1)},onDragMove:Ne=>{F.set({x:Ne.target.x(),y:Ne.target.y()})},onDragEnd:Ne=>{F.set({x:Ne.target.x(),y:Ne.target.y()})},onDblClick:rt,onDblTap:rt,onTransformStart:()=>{X(!0),wr.current={cropX:F.cropX,cropY:F.cropY,cropWidth:F.cropWidth,cropHeight:F.cropHeight}},onTransform:Ne=>{var nt;const mt=Ne.currentTarget,Nt=Math.abs(mt.scaleX()-1)<1e-7?1:mt.scaleX(),yt=Math.abs(mt.scaleY()-1)<1e-7?1:mt.scaleY();mt.scaleX(1),mt.scaleY(1);const Tr=(nt=Ne.target.getStage())===null||nt===void 0?void 0:nt.findOne("Transformer"),wn=1-Qe/he.width,or=Math.min(wn,Math.max(0,F.cropX)),ra=1-se/he.height,Ti=Math.min(ra,Math.max(0,F.cropY)),na=Tr.getActiveAnchor(),ja=!(na.indexOf("middle")>=0||na.indexOf("center")>=0),cu=!ja&&Nt<1&&wr.current.cropHeight>se/he.height;let Do=ja?F.cropWidth:F.cropWidth*Nt;cu&&(Do=F.cropWidth);const ia=!ja&&yt<1&&wr.current.cropWidth>Qe/he.width;let Dn=ja?F.cropHeight:F.cropHeight*yt;ia&&(Dn=F.cropHeight),Ze&&(Do=F.cropWidth,Dn=F.cropHeight),F.set({cropX:or,cropY:Ti,x:mt.x(),y:mt.y(),width:mt.width()*Nt,height:mt.height()*yt,rotation:Ne.target.rotation(),cropWidth:Math.min(Do,1-or),cropHeight:Math.min(Dn,1-Ti)})},onTransformEnd:Ne=>{const nt=Ne.currentTarget;F.set({width:nt.width(),height:nt.height(),x:nt.x(),y:nt.y(),rotation:Ne.target.rotation(),cropWidth:Qe/he.width,cropHeight:se/he.height}),X(!1)}}),a.default.createElement(u.Rect,{x:F.x,y:F.y,width:Math.max(F.a.width-F.borderSize,0),height:Math.max(F.a.height-F.borderSize,0),opacity:bn,offsetX:-F.borderSize/2,offsetY:-F.borderSize/2,stroke:F.borderColor,strokeWidth:F.borderSize,listening:!1,visible:!!F.borderSize,rotation:F.rotation,cornerRadius:Math.max(0,_e-F.borderSize),hideInExport:!F.showInExport}),F._cropModeEnabled&&a.default.createElement(O.Portal,{selector:".page-abs-container",enabled:!0},a.default.createElement(u.Rect,{x:-window.innerWidth/$.scale,y:-window.innerWidth/$.scale,width:window.innerWidth/$.scale*3,height:window.innerWidth/$.scale*3,fill:"rgba(0,0,0,0.3)"}),a.default.createElement(u.Image,{listening:!1,image:we,x:F.x,y:F.y,width:F.a.width,height:F.a.height,rotation:F.rotation,shadowEnabled:F.shadowEnabled,shadowBlur:F.shadowBlur}),a.default.createElement(u.Group,{x:F.x,y:F.y,rotation:F.rotation,scaleX:We,scaleY:We},a.default.createElement(u.Image,{image:he,ref:J,opacity:.4,draggable:!0,x:-F.cropX*he.width,y:-F.cropY*he.height,onDragMove:Ye,onTransform:Ye,onTouchMove:Ne=>{Ne.evt.preventDefault();const nt=Ne.target.getStage().getPointersPositions();var mt=nt[0],Nt=nt[1];const yt=Ne.target;if(mt&&!Nt&&!yt.isDragging()&&Le.current&&(yt.startDrag(),Le.current=!1),mt&&Nt){h.default.hitOnDragEnabled=!0,yt.isDragging()&&(Le.current=!0,yt.stopDrag());const ia=Ne.target.getAbsoluteTransform().copy();ia.invert();var Tr={x:mt.x,y:mt.y},wn={x:Nt.x,y:Nt.y};if(!gt.current)return void(gt.current=A(Tr,wn));var or=A(Tr,wn),ra=x(Tr,wn);cr.current||(cr.current=ra);const Dn=yt.position();var Ti={x:or.x-Dn.x,y:or.y-Dn.y},na=ra/cr.current;yt.scaleX(na),yt.scaleY(na);const Il=ia.point(or),Dl=ia.point(gt.current);var ja=Il.x-Dl.x,cu=Il.y-Dl.y,Do={x:Math.min(0,or.x-Ti.x*na+ja),y:Math.min(0,or.y-Ti.y*na+cu)};yt.position(Do),cr.current=ra,gt.current=or,Ye(Ne)}},onTouchEnd:Ne=>{cr.current=0,gt.current=null,h.default.hitOnDragEnabled=!1}}),a.default.createElement(u.Transformer,{ref:rr,anchorSize:20,enabledAnchors:["top-left","top-right","bottom-left","bottom-right"],boundBoxFunc:(Ne,nt)=>nt.width<5||nt.height<5?Ne:nt,rotateEnabled:!1,borderEnabled:!1,anchorCornerRadius:10,anchorStrokeWidth:2,borderStrokeWidth:2}),a.default.createElement(u.Rect,{width:Qe,height:se,ref:Ee,listening:!1,onTransform:Ne=>{Ne.target.x()<-F.cropX*he.width-1e-9&&(Ne.target.x(-F.cropX*he.width),Ne.target.scaleX(1)),Ne.target.y()<-F.cropY*he.height-1e-9&&(Ne.target.y(-F.cropY*he.height),Ne.target.scaleY(1));const nt=Math.min(1,Math.max(0,F.cropX+Ne.target.x()/he.width)),mt=Math.min(1,Math.max(0,Ne.target.y()/he.height+F.cropY)),Nt=Ne.target.width()*Ne.target.scaleX(),yt=Ne.target.height()*Ne.target.scaleY(),Tr=Math.min(1-nt,Nt/he.width),wn=Math.min(1-mt,yt/he.height),or=Ne.target.getAbsolutePosition(Ne.target.getParent().getParent());Ne.target.scale({x:1,y:1}),Ne.target.position({x:0,y:0}),F.set({x:or.x,y:or.y,cropX:nt,cropY:mt,cropWidth:Tr,cropHeight:wn,width:Math.min(Nt*We,he.width*(1-nt)*We),height:Math.min(yt*We,he.height*(1-mt)*We)})}}),a.default.createElement(u.Transformer,{ref:Ke,enabledAnchors:["top-left","top-right","bottom-left","bottom-right"],boundBoxFunc:(Ne,nt)=>nt.width<5||nt.height<5?Ne:nt,visible:F.resizable,keepRatio:!1,rotateEnabled:!1,anchorFill:"rgb(240, 240, 240)",anchorStrokeWidth:2,borderStrokeWidth:2}))),(re||ae)&&a.default.createElement(w.Highlighter,{element:F}))})})(d2);var iS={},aS={exports:{}};/*!
108
+ `).trim();return k}function f(m){if(m){a+=m;return}return n?"":Array(a).join(i||"")}function h(m){return"@"+m.type+" "+m.value+";"+o}function O(m){var _="",k=m.prefix||"";m.name&&(_=" "+m.name);var x=m.type!=="page";return"@"+k+m.type+_+l+p(m,x)+o}function w(m){return r?"/*"+(m.text||"")+"*/"+o:""}function b(m){var _;return m.selectors?_=m.selectors.join(","+o):(_="@"+m.type,_+=m.name?" "+m.name:""),f()+_+l+p(m)+o}function E(m,_){return m.reduce(function(k,x){var A=x.type==="comment"?w(x):_(x);return A&&k.push(A),k},[])}function p(m,_){var k=m.declarations,x=g;return m.rules&&(k=m.rules,x=b),k=v(k,x),k&&(k=o+k+(_?"":o)),"{"+k+f()+"}"}function v(m,_){if(!m)return"";f(1);var k=E(m,_);return f(-1),k.length?k.join(o):""}function g(m){if(m.type==="property")return d(m)}function y(m){switch(m.type){case"rule":return b(m);case"media":case"keyframes":return O(m);case"comment":return w(m);case"import":case"charset":case"namespace":return h(m);case"font-face":case"supports":case"viewport":case"document":case"page":return O(m)}}function d(m){var _=m.name?m.name+":"+l:"";return f()+_+m.value+";"}})(nS);var CD=nS.exports,kD={lex:tS,parse:xD,stringify:CD};(function(e){var t=ye&&ye.__importDefault||function(_){return _&&_.__esModule?_:{default:_}};Object.defineProperty(e,"__esModule",{value:!0}),e.useSvgColors=e.replaceColors=e.sameColors=e.fixSize=e.getSvgSize=e.svgToURL=e.getColors=e.urlToString=e.urlToBase64=void 0;const r=t(Ci),n=t(et),i=Qy,a=t(kD);function o(_){for(;_.parentNode;){if(_.nodeName==="defs")return!0;_=_.parentNode}return!1}function l(_){const k={};return _.querySelectorAll("style").forEach(x=>{const A=a.default.parse(x.textContent).stylesheet.rules;for(let S of A)S.selectors&&S.selectors.forEach(P=>{const C=k[P]||{};S.declarations.forEach(R=>{C[R.name]=R.value}),k[P]=C})}),k}function u(_,k){var x;const A={fill:"",stroke:""},S=((x=_.getAttribute("class"))===null||x===void 0?void 0:x.split(" "))||[],P=_.getAttribute("id");let C={};if(P&&k[`#${P}`]?C=k[`#${P}`]:S.forEach(R=>{k[`.${R}`]&&(C=Object.assign(Object.assign({},C),k[`.${R}`]))}),k[_.nodeName]&&(C=Object.assign(Object.assign({},C),k[_.nodeName])),_.getAttribute("fill")&&_.getAttribute("fill")!=="none"?A.fill=_.getAttribute("fill"):C.fill&&C.fill!=="none"&&(A.fill=C.fill),_.getAttribute("stroke")&&_.getAttribute("stroke")!=="none"?A.stroke=_.getAttribute("stroke"):C.stroke&&C.stroke!=="none"&&(A.stroke=C.stroke),!A.fill&&_.style.fill&&_.style.fill!=="none"&&(A.fill=_.style.fill),!A.stroke&&_.style.stroke&&_.style.stroke!=="none"&&(A.stroke=_.style.stroke),!A.stroke&&!A.fill){const R=_.ownerSVGElement,N=R&&R!==_&&u(R,k);(N==null?void 0:N.fill)==="currentColor"||(N==null?void 0:N.stroke)==="currentColor"||(A.fill="black")}return A}const f=["path","rect","circle","line","polygon","polyline","ellipse","text"];function h(_){for(var k=[],x=_.getElementsByTagName("*"),A=0,S=x.length;A<S;A++){const P=x[A];o(P)||(P.getAttribute("fill")!==null&&k.push(P),(P.getAttribute("stroke")!==null||P.style&&P.style.fill||f.indexOf(P.nodeName)>=0)&&k.push(P))}return k}async function O(_){const k=await fetch(_);return E(await k.text())}async function w(_){return await(await fetch(_,{mode:"cors"})).text()}function b(_){var k=new DOMParser().parseFromString(_,"image/svg+xml");const x=l(k),A=h(k),S=[];return A.forEach(P=>{const{fill:C,stroke:R}=u(P,x);[C,R].forEach(N=>{N&&(N==="currentColor"&&(N="black"),r.default.Util.colorToRGBA(N)&&S.indexOf(N)===-1&&S.push(N))})}),S}function E(_){return"data:image/svg+xml;base64,"+window.btoa(unescape(encodeURIComponent(_)))}async function p(_){const k=await w(_),x=new DOMParser().parseFromString(k,"image/svg+xml").documentElement.getAttribute("viewBox"),[A,S,P,C]=(x==null?void 0:x.split(" "))||[];return{width:parseFloat(P),height:parseFloat(C)}}function v(_){var k=new DOMParser().parseFromString(_,"image/svg+xml");const x=k.documentElement.getAttribute("viewBox"),[A,S,P,C]=(x==null?void 0:x.split(" "))||[],R=k.documentElement.getAttribute("width");!R&&k.documentElement.setAttribute("width",P+"px");const N=k.documentElement.getAttribute("height");if((!N||N.indexOf("%")>=0)&&k.documentElement.setAttribute("height",C+"px"),R&&R.indexOf("%")>=0&&N&&N.indexOf("%")===-1){const U=parseFloat(N)/parseFloat(C);k.documentElement.setAttribute("width",U*parseFloat(P)+"px")}if(N&&N.indexOf("%")>=0&&R&&R.indexOf("%")===-1){const U=parseFloat(R)/parseFloat(P);k.documentElement.setAttribute("height",U*parseFloat(C)+"px")}return R==="100%"&&N==="100%"&&(k.documentElement.setAttribute("width",P+"px"),k.documentElement.setAttribute("height",C+"px")),new XMLSerializer().serializeToString(k)}e.urlToBase64=O,e.urlToString=w,e.getColors=b,e.svgToURL=E,e.getSvgSize=p,e.fixSize=v;const g=(_,k)=>{if(!_||!k)return!1;if(k==="currentColor"&&_==="black")return!0;const x=r.default.Util.colorToRGBA(_),A=r.default.Util.colorToRGBA(k);return x&&A?x.r===A.r&&x.g===A.g&&x.b===A.b&&x.a===A.a:void 0};function y(_,k,x,A){var S=_.namespaceURI,P=document.createElementNS(S,"linearGradient");const C=r.default.Util.degToRad(x+90),R=(Math.cos(C)+1)/2,N=(Math.sin(C)+1)/2,U=(Math.cos(C+Math.PI)+1)/2,G=(Math.sin(C+Math.PI)+1)/2;P.setAttribute("x1",100*R+"%"),P.setAttribute("y1",100*N+"%"),P.setAttribute("x2",100*U+"%"),P.setAttribute("y2",100*G+"%"),P.setAttribute("gradientUnits","userSpaceOnUse"),P.setAttribute("id",k);for(var Z=0;Z<A.length;Z++){var W=A[Z],H=document.createElementNS(S,"stop");for(var M in W)W.hasOwnProperty(M)&&H.setAttribute(M,W[M]);P.appendChild(H)}return(_.querySelector("defs")||_.insertBefore(document.createElementNS(S,"defs"),_.firstChild)).appendChild(P)}function d(_,k){var x=new DOMParser().parseFromString(_,"image/svg+xml");const A=h(x),S=Array.from(k.keys()),P=l(x);return A.forEach(C=>{const{fill:R,stroke:N}=u(C,P);[{prop:"fill",color:R},{prop:"stroke",color:N}].forEach(({prop:U,color:G})=>{const Z=S.find(W=>(0,e.sameColors)(W,G));if(Z){const W=k.get(Z);if((0,i.isGradient)(W)){const{rotation:H,stops:M}=(0,i.parseColor)(W),L=M.map(B=>({offset:100*B.offset+"%","stop-color":B.color})),D="color"+Math.round(1e8*Math.random());y(x.children[0],D,H,L),C.style[U]=null,C.setAttribute(U,`url('#${D}')`)}else C.style[U]=k.get(Z)}})}),E(new XMLSerializer().serializeToString(x))}e.sameColors=g,e.replaceColors=d;const m=_=>{const[k,x]=n.default.useState([]);return n.default.useEffect(()=>{let A=!1;return(async()=>{x([]);const S=b(await w(_));A||x(S)})(),()=>{A=!0}},[_]),k};e.useSvgColors=m})(ou);var p2={};(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.trySetCanvasSize=void 0;const t=(r,n,i)=>{let a=n,o=i,l=1;for(;a>0&&o>0;){r.width=a,r.height=o;const u=r.getContext("2d");if(!u)return;if(u.fillStyle="rgba(0,0,0,0.1)",u.fillRect(0,0,1,1),u.getImageData(0,0,1,1).data[3]!==0)return void u.clearRect(0,0,r.width,r.height);if(l*=.9,a=Math.floor(n*l),o=Math.floor(i*l),a=Math.max(a,1),o=Math.max(o,1),a<=1&&o<=1)return r.width=1,void(r.height=1)}};e.trySetCanvasSize=t})(p2);(function(e){var t=ye&&ye.__createBinding||(Object.create?function(F,$,z,Y){Y===void 0&&(Y=z);var X=Object.getOwnPropertyDescriptor($,z);X&&!("get"in X?!$.__esModule:X.writable||X.configurable)||(X={enumerable:!0,get:function(){return $[z]}}),Object.defineProperty(F,Y,X)}:function(F,$,z,Y){Y===void 0&&(Y=z),F[Y]=$[z]}),r=ye&&ye.__setModuleDefault||(Object.create?function(F,$){Object.defineProperty(F,"default",{enumerable:!0,value:$})}:function(F,$){F.default=$}),n=ye&&ye.__importStar||function(F){if(F&&F.__esModule)return F;var $={};if(F!=null)for(var z in F)z!=="default"&&Object.prototype.hasOwnProperty.call(F,z)&&t($,F,z);return r($,F),$},i=ye&&ye.__importDefault||function(F){return F&&F.__esModule?F:{default:F}};Object.defineProperty(e,"__esModule",{value:!0}),e.ImageElement=e.useImageLoader=e.setImageLoaderHook=void 0;const a=i(et),o=ti,l=Ji,u=Ia,f=i(Kp),h=i(Ci),O=Qc,w=Ll,b=Yi,E=n(ou),p=Qn,v=p2,g=ef,y=Ml,d=No;function m(){return document.createElement("canvas")}async function _(F){if(!(F.indexOf("data:image/svg+xml")>=0||F.indexOf(".svg")>=0))return F;const $=await E.urlToString(F),z=E.fixSize($);return E.svgToURL(z)}const k=F=>{const[$,z]=a.default.useState(F);return a.default.useEffect(()=>{(async()=>{const Y=await _(F);Y!==$&&z(Y)})()},[F]),$};function x(F,$){return Math.sqrt(Math.pow($.x-F.x,2)+Math.pow($.y-F.y,2))}function A(F,$){return{x:(F.x+$.x)/2,y:(F.y+$.y)/2}}const S=(F,$,z)=>{const Y=a.default.useMemo(()=>{var X,Q;const{flipX:J,flipY:re}=F,oe=F.type==="svg"||F.src.indexOf("data:image/svg+xml")>=0||F.src.indexOf(".svg")>=0,ae=navigator.userAgent.toLowerCase().indexOf("firefox")>-1,ie=(/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||ae)&&oe||F.maskSrc;if(!J&&!re&&!ie)return $;if(!$||!$.width||!$.height)return null;const Re=m();let Me=1;F.type==="svg"&&(Me=Math.max(F.a.width/$.width*z,F.a.height/$.height*z)),(0,v.trySetCanvasSize)(Re,Math.max($.width*Me,1),Math.max($.height*Me,1));let ne=J?-Re.width:0,le=re?-Re.height:0;return(X=Re.getContext("2d"))===null||X===void 0||X.scale(J?-1:1,re?-1:1),(Q=Re.getContext("2d"))===null||Q===void 0||Q.drawImage($,ne,le,Re.width,Re.height),Re},[F.maskSrc,F.flipX,F.flipY,$,F.a.width,F.a.height,z]);return a.default.useEffect(()=>()=>{Y&&Y.nodeName==="CANVAS"&&h.default.Util.releaseCanvas(Y)},[Y]),Y};function P(F,$){const z=$.width/$.height;let Y,X;return z>=F.width/F.height?(Y=F.width,X=F.width/z):(Y=F.height*z,X=F.height),{x:(F.width-Y)/2,y:(F.height-X)/2,width:Y,height:X}}function C(F,$,z,Y,X,Q,J){for(var re=new ImageData($,z),oe=new Int32Array(F.data.buffer),ae=F.width,ie=new Int32Array(re.data.buffer),Re=re.width,Me=$/Q,ne=z/J,le=Math.round(1/Me),be=Math.round(1/ne),me=le*be,te=0;te<re.height;te++)for(var de=0;de<Re;de++){for(var he=Y+Math.round(de/Me)+(X+Math.round(te/ne))*ae,Se=0,$e=0,tt=0,Ae=0,Ce=0;Ce<be;Ce++)for(var Oe=0;Oe<le;Oe++){var Fe=oe[he+Oe+Ce*ae];Se+=Fe<<24>>>24,$e+=Fe<<16>>>24,tt+=Fe<<8>>>24,Ae+=Fe>>>24}Se=Math.round(Se/me),$e=Math.round($e/me),tt=Math.round(tt/me),Ae=Math.round(Ae/me),ie[de+te*Re]=Ae<<24|tt<<16|$e<<8|Se}return re}function R(F,$){var z,Y;const X=m();X.width=F.width,X.height=F.height;const Q=Math.max(1,Math.floor(X.width*$)),J=Math.max(1,Math.floor(X.height*$));(z=X.getContext("2d"))===null||z===void 0||z.drawImage(F,0,0,X.width,X.height);const re=C(X.getContext("2d").getImageData(0,0,X.width,X.height),Q,J,0,0,X.width,X.height);return X.width=Q,X.height=J,(Y=X.getContext("2d"))===null||Y===void 0||Y.putImageData(re,0,0),X}const N=(F,$)=>{const[z,Y]=L(F.maskSrc,"anonymous"),X=F.maskSrc?Y:"loaded";return(0,e.useImageLoader)(X,F.maskSrc||"",F.id),a.default.useMemo(()=>{if(!z||!$||!$.width||!$.height)return $;const Q=m();Q.width=Math.max($.width,1),Q.height=Math.max($.height,1);const J=Q.getContext("2d");if(!J)return $;J.drawImage($,0,0),J.globalCompositeOperation="source-in";const re=P(z,F);return J.drawImage(z,re.x,re.y,re.width,re.height,0,0,$.width,$.height),Q},[$,z,F.a.width,F.a.height])},U=(F,$,z)=>Math.max($,Math.min(z,F)),G=(F,$,z,Y,X=0,Q=!1,J=!0)=>{const re=Math.floor(U(F.a.width*Y,1,1e4)),oe=Math.floor(U(F.a.height*Y,1,1e4)),ae=Math.min(X*Y,re/2,oe/2),ie=Math.max(F.a.width/z.width,F.a.height/z.height)*Y,Re=F.page._exportingOrRendering&&p.flags.imageDownScalingEnabled&&ie<1&&!Q,Me=z.x===0&&z.y===0&&z.width===($==null?void 0:$.width)&&z.height===($==null?void 0:$.height),ne=a.default.useMemo(()=>{if(!(!$||!$.width||!$.height))return Me&&ae===0&&!Re?void 0:m()},[$,ae,Re,Me]);return a.default.useLayoutEffect(()=>{if(!ne||!$)return;(0,v.trySetCanvasSize)(ne,re,oe);const le=ne.getContext("2d");if(!le)return;ae&&(le.beginPath(),le.moveTo(ae,0),le.lineTo(re-ae,0),le.arc(re-ae,ae,ae,3*Math.PI/2,0,!1),le.lineTo(re,oe-ae),le.arc(re-ae,oe-ae,ae,0,Math.PI/2,!1),le.lineTo(ae,oe),le.arc(ae,oe-ae,ae,Math.PI/2,Math.PI,!1),le.lineTo(0,ae),le.arc(ae,ae,ae,Math.PI,3*Math.PI/2,!1),le.clip());const be=Re?R($,ie):$,me=Re?{x:Math.floor(z.x*ie),y:Math.floor(z.y*ie),width:Math.floor(z.width*ie),height:Math.floor(z.height*ie)}:z;le.drawImage(be,me.x,me.y,me.width,me.height,0,0,ne.width,ne.height)},[ne,F.a.width,F.a.height,z.x,z.y,z.width,z.height,X,Y,Q,F.page._exportingOrRendering,Re]),a.default.useEffect(()=>()=>{ne&&ne.nodeName==="CANVAS"&&h.default.Util.releaseCanvas(ne)},[ne]),ne||$},Z=(F,$,z,Y)=>{const X=k(F.clipSrc||""),[Q,J]=L(X,"anonymous"),re=F.clipSrc?J:"loaded";(0,e.useImageLoader)(re,F.clipSrc,F.id);const oe=a.default.useMemo(()=>{if($&&Q)return m()},[$,Q]);return a.default.useLayoutEffect(()=>{var ae;if(!Q||!$||!$.width||!$.height||!Q||!Q.width||!Q.height||!oe)return;const ie=m(),Re=Math.max(F.a.width/Q.width*z,F.a.height/Q.height*z);ie.width=Q.width*Re,ie.height=Q.height*Re,(ae=ie.getContext("2d"))===null||ae===void 0||ae.drawImage(Q,0,0,ie.width,ie.height),oe.width=Math.max($.width,1),oe.height=Math.max($.height,1);const Me=oe.getContext("2d");Me&&(Me.save(),Me.drawImage(ie,0,0,$.width,$.height),h.default.Util.releaseCanvas(ie),Me.globalCompositeOperation="source-in",Me.drawImage($,0,0,oe.width,oe.height),Me.restore())},[oe,$,Q,F.a.width,F.a.height,z,...Y]),F.clipSrc&&Q?oe:$},W=m(),H=(0,o.observer)(({element:F})=>{const $=Math.min(30,F.a.width/4,F.a.height/4),z=a.default.useRef(null);return a.default.useEffect(()=>{const Y=z.current;if(!Y)return;const X=new h.default.Animation(Q=>{Y.rotate(((Q==null?void 0:Q.timeDiff)||0)/2)},Y.getLayer());return X.start(),()=>{X.stop()}}),a.default.createElement(u.Group,{x:F.x,y:F.y,rotation:F.rotation,listening:!1,opacity:F.a.opacity,hideInExport:!F.showInExport},a.default.createElement(u.Rect,{width:F.a.width,height:F.a.height,fill:"rgba(124, 173, 212, 0.8)"}),a.default.createElement(u.Arc,{ref:z,x:F.a.width/2,y:F.a.height/2,fill:"white",outerRadius:Math.abs($),innerRadius:Math.max(1,$-5),angle:270}))}),M=(0,o.observer)(({element:F})=>{const $="Can not load the image...",z=Math.max(10,Math.min(30,F.a.width/25));return a.default.createElement(u.Group,{x:F.x,y:F.y,rotation:F.rotation,listening:!1,opacity:F.a.opacity,hideInExport:!F.showInExport},a.default.createElement(u.Rect,{width:F.a.width,height:F.a.height,fill:"rgba(223, 102, 102, 0.8)"}),a.default.createElement(u.Text,{text:$,fontSize:z,width:F.a.width,height:F.a.height,align:"center",fill:"white",verticalAlign:"middle",padding:5}))});let L=f.default;const D=F=>{L=F};e.setImageLoaderHook=D;const B=(F,$="",z="")=>{const Y=a.default.useRef(),X=()=>{var Q;(Q=Y.current)===null||Q===void 0||Q.call(Y),Y.current=void 0};a.default.useEffect(()=>X,[]),a.default.useLayoutEffect(()=>{const Q=$.slice(0,200),J=`image with id ${z} url: ${Q}`;F!=="loading"||Y.current||(Y.current=(0,b.incrementLoader)(J)),F!=="loading"&&X(),F==="failed"&&(0,b.triggerLoadError)(J)},[F])};e.useImageLoader=B;const q=({image:F,status:$,type:z})=>{const Y=a.default.useRef();return a.default.useEffect(()=>{Y.current=F||Y.current},[F]),$!=="failed"||$!=="failed"&&z==="svg"?Y.current:void 0},K=F=>{const[$,z]=a.default.useReducer(J=>J+1,0),Y=a.default.useRef("loading"),X=a.default.useRef(F.src),Q=a.default.useRef(F.src);return Q.current!==F.src&&(Q.current=F.src,Y.current="loading"),a.default.useEffect(()=>{if(F.type!=="svg"||!F.src)return;let J=!1;return(async()=>{Y.current="loading",z();const re=await E.urlToString(F.src),oe=E.fixSize(re),ae=E.replaceColors(oe,F.colorsReplace);J||(X.current=ae,Y.current="loaded",z())})(),()=>{J=!0}},[F.src,JSON.stringify(F.colorsReplace)]),F.type!=="svg"?[F.src,"loaded"]:[X.current,Y.current]};e.ImageElement=(0,o.observer)(({element:F,store:$})=>{var z;const[Y,X]=a.default.useState(!1),Q=a.default.useRef(null),J=a.default.useRef(null),[re,oe]=a.default.useState(!1),ae=$.selectedShapes.indexOf(F)>=0,[ie,Re]=K(F),[Me,ne]=L(ie,"anonymous"),le=F.type!=="svg"||Re==="loaded"?ne:"loading";(0,e.useImageLoader)(le,F.src,F.id);const be=F.page._exportingOrRendering?1:Math.max(1,$.scale),me=$._elementsPixelRatio*be,te=q({image:Me,status:ne,type:F.type}),de=S(F,Me||te,me),he=N(F,de)||W;let{cropX:Se,cropY:$e,cropWidth:tt,cropHeight:Ae}=F;ne!=="loaded"&&(Se=$e=0,tt=Ae=1);const Ce=he.width*tt,Oe=he.height*Ae,Fe=F.a.width/F.a.height;let Qe,se;const fe=Ce/Oe,Ze=F.type==="svg";Ze?(Qe=Ce,se=Oe):Fe>=fe?(Qe=Ce,se=Ce/Fe):(Qe=Oe*Fe,se=Oe);const Je={x:he.width*Se,y:he.height*$e,width:Qe,height:se},_e=(z=F.cornerRadius)!==null&&z!==void 0?z:0,xe=F.page._exportingOrRendering?1:Math.min(2,$.scale),qe=$._elementsPixelRatio*xe;let we=Z(F,G(F,he,Je,qe,_e,Y||F._cropModeEnabled||F.type==="svg",!0),qe,[Je,_e,qe]);const We=Math.max(F.a.width/Qe,F.a.height/se);a.default.useEffect(()=>{var Ne;if(!F._cropModeEnabled)return;const nt=(Ne=Q.current)===null||Ne===void 0?void 0:Ne.getStage();function mt(yt){F._cropModeEnabled&&yt.target!==J.current&&F.toggleCropMode(!1)}function Nt(yt){F._cropModeEnabled&&yt.target.parentNode!==nt.content&&F.toggleCropMode(!1)}return document.body.addEventListener("click",Nt),nt==null||nt.on("click",mt),nt==null||nt.on("tap",mt),()=>{document.body.removeEventListener("click",Nt),document.body.removeEventListener("touchstart",Nt),nt==null||nt.off("click",mt),nt==null||nt.off("click",mt)}},[F._cropModeEnabled]),a.default.useLayoutEffect(()=>{if(!(Y||F._cropModeEnabled))return(0,g.applyFilter)(Q.current,F),(0,l.autorun)(()=>{(0,g.applyFilter)(Q.current,F)},{delay:100})},[we,F.page._exportingOrRendering,Y,tt,Ae,F._cropModeEnabled]),a.default.useLayoutEffect(()=>{var Ne;Y||F._cropModeEnabled?(Ne=Q.current)===null||Ne===void 0||Ne.clearCache():(0,g.applyFilter)(Q.current,F)},[Y,F.a.width,F.a.height,F._cropModeEnabled]),a.default.useEffect(()=>{(0,g.applyFilter)(Q.current,F)},[F.shadowEnabled,F.shadowBlur,F.cornerRadius,F.shadowColor,F.shadowOffsetX,F.shadowOffsetY,F.shadowOpacity]);const Ee=a.default.useRef(null),Ke=a.default.useRef(null),rr=a.default.useRef(null);a.default.useLayoutEffect(()=>{F._cropModeEnabled&&(Ke.current.nodes([Ee.current]),rr.current.nodes([J.current]))},[F._cropModeEnabled]);var gt=a.default.useRef(null),cr=a.default.useRef(0),Le=a.default.useRef(!1);const Ye=Ne=>{var nt;((nt=Ne.evt.touches)===null||nt===void 0?void 0:nt.length)>2&&Ne.target.stopDrag(),Math.round(Ne.target.x())>0&&(Ne.target.x(0),Ne.target.scaleX(1)),Math.round(Ne.target.y())>0&&(Ne.target.y(0),Ne.target.scaleY(1));const mt=Ne.target.width()*Ne.target.scaleX(),Nt=Ne.target.height()*Ne.target.scaleY(),yt=Math.min(1,Qe/mt),Tr=Math.min(1,se/Nt),wn=1-yt,or=Math.min(wn,Math.max(0,Math.round(-Ne.target.x())/mt)),ra=1-Tr,Ti=Math.min(ra,Math.max(0,Math.round(-Ne.target.y())/Nt));Ne.target.setAttrs({x:-or*he.width,y:-Ti*he.height,scaleX:1,scaleY:1}),F.set({cropX:or,cropY:Ti,cropWidth:yt,cropHeight:Tr})},rt=()=>{F.type!=="svg"&&F.contentEditable&&setTimeout(()=>{F.toggleCropMode(!0)})},Pt=F.type==="svg"&&te,Ct=ne==="loading"&&!Pt,en=ne==="failed",Wr=!Ct&&!en,wr=a.default.useRef({cropX:0,cropY:0,cropWidth:0,cropHeight:0}),bn=Wr?F.a.opacity:0;(0,y.useFadeIn)(Q,bn);const ki=F.selectable||$.role==="admin",_n=(0,d.isTouchDevice)();return a.default.createElement(a.default.Fragment,null,Ct&&a.default.createElement(H,{element:F}),en&&a.default.createElement(M,{element:F}),a.default.createElement(u.Image,{ref:Q,name:"element",id:F.id,image:we,x:F.a.x,y:F.a.y,width:F.a.width||1,height:F.a.height||1,rotation:F.a.rotation,opacity:bn,shadowEnabled:F.shadowEnabled,shadowBlur:F.shadowBlur,shadowOffsetX:F.shadowOffsetX,shadowOffsetY:F.shadowOffsetY,shadowColor:F.shadowColor,shadowOpacity:F.shadowOpacity,customCrop:Je,listening:ki,draggable:_n?F.draggable&&ae:F.draggable,preventDefault:!_n||ae,hideInExport:!F.showInExport,onMouseEnter:()=>{oe(!0)},onMouseLeave:()=>{oe(!1)},onDragMove:Ne=>{F.set({x:Ne.target.x(),y:Ne.target.y()})},onDragEnd:Ne=>{F.set({x:Ne.target.x(),y:Ne.target.y()})},onDblClick:rt,onDblTap:rt,onTransformStart:()=>{X(!0),wr.current={cropX:F.cropX,cropY:F.cropY,cropWidth:F.cropWidth,cropHeight:F.cropHeight}},onTransform:Ne=>{var nt;const mt=Ne.currentTarget,Nt=Math.abs(mt.scaleX()-1)<1e-7?1:mt.scaleX(),yt=Math.abs(mt.scaleY()-1)<1e-7?1:mt.scaleY();mt.scaleX(1),mt.scaleY(1);const Tr=(nt=Ne.target.getStage())===null||nt===void 0?void 0:nt.findOne("Transformer"),wn=1-Qe/he.width,or=Math.min(wn,Math.max(0,F.cropX)),ra=1-se/he.height,Ti=Math.min(ra,Math.max(0,F.cropY)),na=Tr.getActiveAnchor(),ja=!(na.indexOf("middle")>=0||na.indexOf("center")>=0),cu=!ja&&Nt<1&&wr.current.cropHeight>se/he.height;let Do=ja?F.cropWidth:F.cropWidth*Nt;cu&&(Do=F.cropWidth);const ia=!ja&&yt<1&&wr.current.cropWidth>Qe/he.width;let Dn=ja?F.cropHeight:F.cropHeight*yt;ia&&(Dn=F.cropHeight),Ze&&(Do=F.cropWidth,Dn=F.cropHeight),F.set({cropX:or,cropY:Ti,x:mt.x(),y:mt.y(),width:mt.width()*Nt,height:mt.height()*yt,rotation:Ne.target.rotation(),cropWidth:Math.min(Do,1-or),cropHeight:Math.min(Dn,1-Ti)})},onTransformEnd:Ne=>{const nt=Ne.currentTarget;F.set({width:nt.width(),height:nt.height(),x:nt.x(),y:nt.y(),rotation:Ne.target.rotation(),cropWidth:Qe/he.width,cropHeight:se/he.height}),X(!1)}}),a.default.createElement(u.Rect,{x:F.x,y:F.y,width:Math.max(F.a.width-F.borderSize,0),height:Math.max(F.a.height-F.borderSize,0),opacity:bn,offsetX:-F.borderSize/2,offsetY:-F.borderSize/2,stroke:F.borderColor,strokeWidth:F.borderSize,listening:!1,visible:!!F.borderSize,rotation:F.rotation,cornerRadius:Math.max(0,_e-F.borderSize),hideInExport:!F.showInExport}),F._cropModeEnabled&&a.default.createElement(O.Portal,{selector:".page-abs-container",enabled:!0},a.default.createElement(u.Rect,{x:-window.innerWidth/$.scale,y:-window.innerWidth/$.scale,width:window.innerWidth/$.scale*3,height:window.innerWidth/$.scale*3,fill:"rgba(0,0,0,0.3)"}),a.default.createElement(u.Image,{listening:!1,image:we,x:F.x,y:F.y,width:F.a.width,height:F.a.height,rotation:F.rotation,shadowEnabled:F.shadowEnabled,shadowBlur:F.shadowBlur}),a.default.createElement(u.Group,{x:F.x,y:F.y,rotation:F.rotation,scaleX:We,scaleY:We},a.default.createElement(u.Image,{image:he,ref:J,opacity:.4,draggable:!0,x:-F.cropX*he.width,y:-F.cropY*he.height,onDragMove:Ye,onTransform:Ye,onTouchMove:Ne=>{Ne.evt.preventDefault();const nt=Ne.target.getStage().getPointersPositions();var mt=nt[0],Nt=nt[1];const yt=Ne.target;if(mt&&!Nt&&!yt.isDragging()&&Le.current&&(yt.startDrag(),Le.current=!1),mt&&Nt){h.default.hitOnDragEnabled=!0,yt.isDragging()&&(Le.current=!0,yt.stopDrag());const ia=Ne.target.getAbsoluteTransform().copy();ia.invert();var Tr={x:mt.x,y:mt.y},wn={x:Nt.x,y:Nt.y};if(!gt.current)return void(gt.current=A(Tr,wn));var or=A(Tr,wn),ra=x(Tr,wn);cr.current||(cr.current=ra);const Dn=yt.position();var Ti={x:or.x-Dn.x,y:or.y-Dn.y},na=ra/cr.current;yt.scaleX(na),yt.scaleY(na);const Il=ia.point(or),Dl=ia.point(gt.current);var ja=Il.x-Dl.x,cu=Il.y-Dl.y,Do={x:Math.min(0,or.x-Ti.x*na+ja),y:Math.min(0,or.y-Ti.y*na+cu)};yt.position(Do),cr.current=ra,gt.current=or,Ye(Ne)}},onTouchEnd:Ne=>{cr.current=0,gt.current=null,h.default.hitOnDragEnabled=!1}}),a.default.createElement(u.Transformer,{ref:rr,anchorSize:20,enabledAnchors:["top-left","top-right","bottom-left","bottom-right"],boundBoxFunc:(Ne,nt)=>nt.width<5||nt.height<5?Ne:nt,rotateEnabled:!1,borderEnabled:!1,anchorCornerRadius:10,anchorStrokeWidth:2,borderStrokeWidth:2}),a.default.createElement(u.Rect,{width:Qe,height:se,ref:Ee,listening:!1,onTransform:Ne=>{Ne.target.x()<-F.cropX*he.width-1e-9&&(Ne.target.x(-F.cropX*he.width),Ne.target.scaleX(1)),Ne.target.y()<-F.cropY*he.height-1e-9&&(Ne.target.y(-F.cropY*he.height),Ne.target.scaleY(1));const nt=Math.min(1,Math.max(0,F.cropX+Ne.target.x()/he.width)),mt=Math.min(1,Math.max(0,Ne.target.y()/he.height+F.cropY)),Nt=Ne.target.width()*Ne.target.scaleX(),yt=Ne.target.height()*Ne.target.scaleY(),Tr=Math.min(1-nt,Nt/he.width),wn=Math.min(1-mt,yt/he.height),or=Ne.target.getAbsolutePosition(Ne.target.getParent().getParent());Ne.target.scale({x:1,y:1}),Ne.target.position({x:0,y:0}),F.set({x:or.x,y:or.y,cropX:nt,cropY:mt,cropWidth:Tr,cropHeight:wn,width:Math.min(Nt*We,he.width*(1-nt)*We),height:Math.min(yt*We,he.height*(1-mt)*We)})}}),a.default.createElement(u.Transformer,{ref:Ke,enabledAnchors:["top-left","top-right","bottom-left","bottom-right"],boundBoxFunc:(Ne,nt)=>nt.width<5||nt.height<5?Ne:nt,visible:F.resizable,keepRatio:!1,rotateEnabled:!1,anchorFill:"rgb(240, 240, 240)",anchorStrokeWidth:2,borderStrokeWidth:2}))),(re||ae)&&a.default.createElement(w.Highlighter,{element:F}))})})(d2);var iS={},aS={exports:{}};/*!
109
109
  * Quill Editor v1.3.7
110
110
  * https://quilljs.com/
111
111
  * Copyright (c) 2014, Jason Chen
@@ -231,7 +231,7 @@ For more info see: https://github.com/konvajs/react-konva/issues/194
231
231
  <path d="M14 19L14 5C14 3.89543 14.8954 3 16 3L17 3C18.1046 3 19 3.89543 19 5L19 19C19 20.1046 18.1046 21 17 21L16 21C14.8954 21 14 20.1046 14 19Z" stroke="#323232" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
232
232
  <path d="M10 19L10 5C10 3.89543 9.10457 3 8 3L7 3C5.89543 3 5 3.89543 5 5L5 19C5 20.1046 5.89543 21 7 21L8 21C9.10457 21 10 20.1046 10 19Z" stroke="#323232" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
233
233
  </svg>
234
- `);function A(M,L,D,B,q,K,F){for(var $=new ImageData(L,D),z=new Int32Array(M.data.buffer),Y=M.width,X=new Int32Array($.data.buffer),Q=$.width,J=L/K,re=D/F,oe=Math.round(1/J),ae=Math.round(1/re),ie=oe*ae,Re=0;Re<$.height;Re++)for(var Me=0;Me<Q;Me++){for(var ne=B+Math.round(Me/J)+(q+Math.round(Re/re))*Y,le=0,be=0,me=0,te=0,de=0;de<ae;de++)for(var he=0;he<oe;he++){var Se=z[ne+he+de*Y];le+=Se<<24>>>24,be+=Se<<16>>>24,me+=Se<<8>>>24,te+=Se>>>24}le=Math.round(le/ie),be=Math.round(be/ie),me=Math.round(me/ie),te=Math.round(te/ie),X[Me+Re*Q]=te<<24|me<<16|be<<8|le}return $}function S(M,L){var D,B;const q=d();q.width=M.width,q.height=M.height,(D=q.getContext("2d"))===null||D===void 0||D.drawImage(M,0,0,q.width,q.height);const K=A(q.getContext("2d").getImageData(0,0,q.width,q.height),Math.floor(q.width*L),Math.floor(q.height*L),0,0,q.width,q.height);return q.width=Math.floor(q.width*L),q.height=Math.floor(q.height*L),(B=q.getContext("2d"))===null||B===void 0||B.putImageData(K,0,0),q}const P=(M,L,D,B,q=0,K=!1)=>{const F=Math.floor(Math.max(M.width*B,1)),$=Math.floor(Math.max(M.height*B,1)),z=Math.min(q*B,F/2,$/2),Y=Math.max(M.width/D.width,M.height/D.height)*B,X=M.page._exportingOrRendering&&p.flags.imageDownScalingEnabled&&Y<1&&!K,Q=D.x===0&&D.y===0&&D.width===(L==null?void 0:L.width)&&D.height===(L==null?void 0:L.height),J=a.default.useMemo(()=>{if(!(!L||!L.width||!L.height))return Q&&z===0&&!X?void 0:d()},[L,z,X,Q]),re=()=>{if(!J||!L)return;J.width=F,J.height=$;const oe=J.getContext("2d");if(!oe)return;z&&(oe.beginPath(),oe.moveTo(z,0),oe.lineTo(F-z,0),oe.arc(F-z,z,z,3*Math.PI/2,0,!1),oe.lineTo(F,$-z),oe.arc(F-z,$-z,z,0,Math.PI/2,!1),oe.lineTo(z,$),oe.arc(z,$-z,z,Math.PI/2,Math.PI,!1),oe.lineTo(0,z),oe.arc(z,z,z,Math.PI,3*Math.PI/2,!1),oe.clip());const ae=X?S(L,Y):L,ie=X?{x:Math.floor(D.x*Y),y:Math.floor(D.y*Y),width:Math.floor(D.width*Y),height:Math.floor(D.height*Y)}:D;oe.drawImage(ae,ie.x,ie.y,ie.width,ie.height,0,0,J.width,J.height)};return a.default.useLayoutEffect(()=>{re()},[J,M.width,M.height,D.x,D.y,D.width,D.height,q,B,K,M.page._exportingOrRendering,X]),a.default.useEffect(()=>()=>{J&&J.nodeName==="CANVAS"&&h.default.Util.releaseCanvas(J)},[J]),[J||L,re]},C=(M,L,D,B)=>{const q=_(M.clipSrc||""),[K,F]=G(q,"anonymous"),$=M.clipSrc?F:"loaded";(0,e.useImageLoader)($,M.clipSrc,M.id);const z=a.default.useMemo(()=>{if(L&&K)return d()},[L,K]);function Y(){var X;if(!K||!L||!L.width||!L.height||!K||!K.width||!K.height||!z)return;const Q=d(),J=Math.max(M.width/K.width*D,M.height/K.height*D);Q.width=K.width*J,Q.height=K.height*J,(X=Q.getContext("2d"))===null||X===void 0||X.drawImage(K,0,0,Q.width,Q.height),z.width=Math.max(L.width,1),z.height=Math.max(L.height,1);const re=z.getContext("2d");re&&(re.save(),re.drawImage(Q,0,0,L.width,L.height),h.default.Util.releaseCanvas(Q),re.globalCompositeOperation="source-in",re.drawImage(L,0,0,z.width,z.height),re.restore())}return a.default.useLayoutEffect(()=>{Y()},[z,L,K,M.width,M.height,D,...B]),[M.clipSrc&&K?z:L,Y]},R=d(),N=(0,o.observer)(({element:M})=>{const L=Math.min(30,M.width/4,M.height/4),D=a.default.useRef(null);return a.default.useEffect(()=>{const B=D.current;if(!B)return;const q=new h.default.Animation(K=>{B.rotate(((K==null?void 0:K.timeDiff)||0)/2)},B.getLayer());return q.start(),()=>{q.stop()}}),a.default.createElement(u.Group,{x:M.a.x,y:M.a.y,rotation:M.a.rotation,listening:!1,opacity:M.a.opacity,hideInExport:!M.showInExport},a.default.createElement(u.Rect,{width:M.width,height:M.height,fill:"rgba(124, 173, 212, 0.8)"}),a.default.createElement(u.Arc,{ref:D,x:M.width/2,y:M.height/2,fill:"white",outerRadius:Math.abs(L),innerRadius:Math.max(1,L-5),angle:270}))}),U=(0,o.observer)(({element:M})=>{const L="Can not load the video...",D=Math.max(10,Math.min(30,M.width/25));return a.default.createElement(u.Group,{x:M.a.x,y:M.a.y,rotation:M.a.rotation,listening:!1,opacity:M.a.opacity,hideInExport:!M.showInExport},a.default.createElement(u.Rect,{width:M.width,height:M.height,fill:"rgba(223, 102, 102, 0.8)"}),a.default.createElement(u.Text,{text:L,fontSize:D,width:M.width,height:M.height,align:"center",fill:"white",verticalAlign:"middle",padding:5}))});let G=f.default;const Z=M=>{G=M};e.setImageLoaderHook=Z;const W=(M,L,D)=>{const B=a.default.useRef(),q=()=>{var K;(K=B.current)===null||K===void 0||K.call(B),B.current=void 0};a.default.useEffect(()=>q,[]),a.default.useLayoutEffect(()=>{const K=L.slice(0,100),F=`video with id ${D} url: ${K}`;M!=="loading"||B.current||(B.current=(0,b.incrementLoader)(F)),M!=="loading"&&q(),M==="failed"&&(0,b.triggerLoadError)(F)},[M])};e.useImageLoader=W;function H(M,L,D){const B=a.default.useRef("loading"),q=a.default.useRef(null),[K,F]=a.default.useState(0),$=a.default.useRef(),z=a.default.useRef(),Y=a.default.useRef();return $.current===M&&z.current===L&&Y.current===D||(B.current="loading",q.current=void 0,$.current=M,z.current=L,Y.current=D),a.default.useLayoutEffect(function(){if(M){var X=document.createElement("video");return X.addEventListener("canplay",Q),X.addEventListener("error",J),X.crossOrigin=L,X.src=M,function(){X.removeEventListener("canplay",Q),X.removeEventListener("error",J)}}function Q(){B.current="loaded",q.current=X,q.current.currentTime=0,F(Math.random()),q.current.removeEventListener("canplay",Q)}function J(re){B.current="failed",q.current=void 0,F(Math.random())}},[M,L,D]),[q.current,B.current]}e.VideoElement=(0,o.observer)(({element:M,store:L})=>{var D;const[B,q]=a.default.useState(!1),K=a.default.useRef(null),F=a.default.useRef(null),[$,z]=a.default.useState(!1),Y=L.selectedShapes.indexOf(M)>=0,[X,Q]=a.default.useState(!1),[J,re]=H(M.src,"anonymous"),oe=L.activePage===M.page;(0,e.useImageLoader)(re,M.src,M.id),J&&(J.width=J.videoWidth,J.height=J.videoHeight);const ae=J||R;a.default.useEffect(()=>{J&&L.history.ignore(()=>{M.set({duration:1e3*J.duration})})},[J]),a.default.useEffect(()=>{var Le;if(!J)return;const Ye=oe&&(L.isPlaying||X);if(!Ye)return void J.pause();Ye&&(J.currentTime=M.startTime*J.duration,J.play());const rt=new h.default.Animation(()=>{se()},(Le=K.current)===null||Le===void 0?void 0:Le.getLayer());rt.start();const Pt=()=>{Q(!1),J.currentTime=M.startTime*J.duration},Ct=()=>{J.currentTime>=M.endTime*J.duration&&(J.pause(),J.currentTime=M.startTime*J.duration,Q(!1))};return J.addEventListener("ended",Pt),J.addEventListener("timeupdate",Ct),()=>{rt.stop(),J.removeEventListener("ended",Pt),J.removeEventListener("timeupdate",Ct)}},[J,X,L.isPlaying,oe]),a.default.useEffect(()=>{J&&(J.volume=M.volume)},[J,M.volume]);const ie=a.default.useRef();a.default.useEffect(()=>{const Le=(0,l.autorun)(()=>{var Ye,rt;if(J){const Pt=(L.currentTime-M.page.startTime)%M.duration;if(Math.abs(1e3*J.currentTime-Pt)>500||!L.isPlaying){const Ct=Pt/1e3;Ct!==J.currentTime&&(J.currentTime=Ct),J.readyState!==4&&!L.isPlaying&&!ie.current&&(ie.current=(0,b.incrementLoader)(`video ${M.id}`))}se(),(rt=(Ye=K.current)===null||Ye===void 0?void 0:Ye.getLayer())===null||rt===void 0||rt.batchDraw()}});return()=>{Le(),ie.current&&(ie.current(),ie.current=null)}},[L,J]),a.default.useEffect(()=>{if(!J)return;const Le=()=>{var rt,Pt;J.readyState!==4&&M.page._exportingOrRendering||ie.current&&(se(),(Pt=(rt=K.current)===null||rt===void 0?void 0:rt.getLayer())===null||Pt===void 0||Pt.batchDraw(),ie.current(),ie.current=null)};let Ye;return M.page._exportingOrRendering&&(Ye=setInterval(Le,50)),J.addEventListener("timeupdate",Le),J.addEventListener("canplay",Le),()=>{clearInterval(Ye),J.removeEventListener("timeupdate",Le),J.removeEventListener("canplay",Le)}},[M.page._exportingOrRendering,J,M.id,b.incrementLoader]);let{cropX:Re,cropY:Me,cropWidth:ne,cropHeight:le}=M;re!=="loaded"&&(Re=Me=0,ne=le=1);const be=ae.width*ne,me=ae.height*le,te=M.width/M.height;let de,he;const Se=be/me,$e=M.type==="svg";$e?(de=be,he=me):te>=Se?(de=be,he=be/te):(de=me*te,he=me);const tt={x:ae.width*Re,y:ae.height*Me,width:de,height:he},Ae=(D=M.cornerRadius)!==null&&D!==void 0?D:0,[Ce,Oe]=P(M,ae,tt,L._elementsPixelRatio,Ae,B||M._cropModeEnabled||M.type==="svg");let[Fe,Qe]=C(M,Ce,L._elementsPixelRatio,[tt,Ae,L._elementsPixelRatio]);function se(){Oe(),Qe()}const fe=Math.max(M.width/de,M.height/he);a.default.useEffect(()=>{var Le;if(!M._cropModeEnabled)return;const Ye=(Le=K.current)===null||Le===void 0?void 0:Le.getStage();function rt(Ct){M._cropModeEnabled&&Ct.target!==F.current&&M.toggleCropMode(!1)}function Pt(Ct){M._cropModeEnabled&&Ct.target.parentNode!==Ye.content&&M.toggleCropMode(!1)}return document.body.addEventListener("click",Pt),Ye==null||Ye.on("click",rt),Ye==null||Ye.on("tap",rt),()=>{document.body.removeEventListener("click",Pt),document.body.removeEventListener("touchstart",Pt),Ye==null||Ye.off("click",rt),Ye==null||Ye.off("click",rt)}},[M._cropModeEnabled]),a.default.useLayoutEffect(()=>{if(!(B||M._cropModeEnabled))return(0,v.applyFilter)(K.current,M),(0,l.autorun)(()=>{(0,v.applyFilter)(K.current,M)},{delay:100})},[ae,B,ne,le,M._cropModeEnabled]),a.default.useLayoutEffect(()=>{var Le;B||M._cropModeEnabled?(Le=K.current)===null||Le===void 0||Le.clearCache():(0,v.applyFilter)(K.current,M)},[B,M.width,M.height,M._cropModeEnabled]),a.default.useEffect(()=>{(0,v.applyFilter)(K.current,M)},[M.shadowEnabled,M.shadowBlur,M.cornerRadius,M.shadowColor,M.shadowOffsetX,M.shadowOffsetY,M.shadowOpacity]);const Ze=a.default.useRef(null),Je=a.default.useRef(null),_e=a.default.useRef(null);a.default.useLayoutEffect(()=>{M._cropModeEnabled&&(Je.current.nodes([Ze.current]),_e.current.nodes([F.current]))},[M._cropModeEnabled]);const xe=Le=>{Math.round(Le.target.x())>0&&(Le.target.x(0),Le.target.scaleX(1)),Math.round(Le.target.y())>0&&(Le.target.y(0),Le.target.scaleY(1));const Ye=Le.target.width()*Le.target.scaleX(),rt=Le.target.height()*Le.target.scaleY(),Pt=Math.min(1,de/Ye),Ct=Math.min(1,he/rt),en=1-Pt,Wr=Math.min(en,Math.max(0,Math.round(-Le.target.x())/Ye)),wr=1-Ct,bn=Math.min(wr,Math.max(0,Math.round(-Le.target.y())/rt));Le.target.setAttrs({x:-Wr*ae.width,y:-bn*ae.height,scaleX:1,scaleY:1}),M.set({cropX:Wr,cropY:bn,cropWidth:Pt,cropHeight:Ct})},qe=()=>{M.type!=="svg"&&M.contentEditable&&setTimeout(()=>{M.toggleCropMode(!0)})},we=re==="loading",We=re==="failed",Ee=!we&&!We,Ke=a.default.useRef({cropX:0,cropY:0,cropWidth:0,cropHeight:0}),rr=Ee?M.a.opacity:0;(0,g.useFadeIn)(K,rr);const gt=M.selectable||L.role==="admin",cr=(0,y.isTouchDevice)();return a.default.createElement(a.default.Fragment,null,we&&a.default.createElement(N,{element:M}),We&&a.default.createElement(U,{element:M}),a.default.createElement(u.Image,{ref:K,name:"element",id:M.id,image:Fe,x:M.a.x,y:M.a.y,width:M.a.width||1,height:M.a.height||1,rotation:M.a.rotation,opacity:rr,shadowEnabled:M.shadowEnabled,shadowBlur:M.shadowBlur,shadowOffsetX:M.shadowOffsetX,shadowOffsetY:M.shadowOffsetY,shadowColor:M.shadowColor,shadowOpacity:M.shadowOpacity,customCrop:tt,listening:gt,draggable:cr?M.draggable&&Y:M.draggable,preventDefault:!cr||Y,hideInExport:!M.showInExport,onMouseEnter:()=>{z(!0)},onMouseLeave:()=>{z(!1)},onDragMove:Le=>{M.set({x:Le.target.x(),y:Le.target.y()})},onDragEnd:Le=>{M.set({x:Le.target.x(),y:Le.target.y()})},onDblClick:qe,onDblTap:qe,onTransformStart:()=>{q(!0),Ke.current={cropX:M.cropX,cropY:M.cropY,cropWidth:M.cropWidth,cropHeight:M.cropHeight}},onTransform:Le=>{var Ye;const rt=Le.currentTarget,Pt=Math.abs(rt.scaleX()-1)<1e-7?1:rt.scaleX(),Ct=Math.abs(rt.scaleY()-1)<1e-7?1:rt.scaleY();rt.scaleX(1),rt.scaleY(1);const en=(Ye=Le.target.getStage())===null||Ye===void 0?void 0:Ye.findOne("Transformer"),Wr=1-de/ae.width,wr=Math.min(Wr,Math.max(0,M.cropX)),bn=1-he/ae.height,ki=Math.min(bn,Math.max(0,M.cropY)),_n=en.getActiveAnchor(),Ne=!(_n.indexOf("middle")>=0||_n.indexOf("center")>=0),nt=!Ne&&Pt<1&&Ke.current.cropHeight>he/ae.height;let mt=Ne?M.cropWidth:M.cropWidth*Pt;nt&&(mt=M.cropWidth);const Nt=!Ne&&Ct<1&&Ke.current.cropWidth>de/ae.width;let yt=Ne?M.cropHeight:M.cropHeight*Ct;Nt&&(yt=M.cropHeight),$e&&(mt=M.cropWidth,yt=M.cropHeight),M.set({cropX:wr,cropY:ki,x:rt.x(),y:rt.y(),width:rt.width()*Pt,height:rt.height()*Ct,rotation:Le.target.rotation(),cropWidth:Math.min(mt,1-wr),cropHeight:Math.min(yt,1-ki)})},onTransformEnd:Le=>{const Ye=Le.currentTarget;M.set({width:Ye.width(),height:Ye.height(),x:Ye.x(),y:Ye.y(),rotation:Le.target.rotation(),cropWidth:de/ae.width,cropHeight:he/ae.height}),q(!1)}}),a.default.createElement(u.Rect,{x:M.a.x,y:M.a.y,width:Math.max(M.a.width-M.borderSize,0),height:Math.max(M.a.height-M.borderSize,0),opacity:rr,offsetX:-M.borderSize/2,offsetY:-M.borderSize/2,stroke:M.borderColor,strokeWidth:M.borderSize,listening:!1,visible:!!M.borderSize,rotation:M.rotation,cornerRadius:Math.max(0,Ae-M.borderSize),hideInExport:!M.showInExport}),!X&&!L.isPlaying&&a.default.createElement(u.Image,{image:k,x:M.a.x+M.a.width/2-15/L.scale,y:M.a.y+M.a.height/2-15/L.scale,width:30/L.scale,height:30/L.scale,hideInExport:!0,onClick:()=>{Q(!0)}}),X&&!L.isPlaying&&a.default.createElement(u.Image,{image:x,x:M.a.x+M.a.width/2-15/L.scale,y:M.a.y+M.a.height/2-15/L.scale,width:30/L.scale,height:30/L.scale,hideInExport:!0,onClick:()=>{Q(!1)}}),M._cropModeEnabled&&a.default.createElement(O.Portal,{selector:".page-abs-container",enabled:!0},a.default.createElement(u.Rect,{x:-window.innerWidth/L.scale,y:-window.innerWidth/L.scale,width:window.innerWidth/L.scale*3,height:window.innerWidth/L.scale*3,fill:"rgba(0,0,0,0.3)"}),a.default.createElement(u.Image,{listening:!1,image:Fe,x:M.a.x,y:M.a.y,width:M.a.width,height:M.a.height,rotation:M.a.rotation,shadowEnabled:M.shadowEnabled,shadowBlur:M.shadowBlur}),a.default.createElement(u.Group,{x:M.a.x,y:M.a.y,rotation:M.a.rotation,scaleX:fe,scaleY:fe},a.default.createElement(u.Image,{image:ae,ref:F,opacity:.4,draggable:!0,x:-M.cropX*ae.width,y:-M.cropY*ae.height,onDragMove:xe,onTransform:xe}),a.default.createElement(u.Transformer,{ref:_e,anchorSize:20,enabledAnchors:["top-left","top-right","bottom-left","bottom-right"],boundBoxFunc:(Le,Ye)=>Ye.width<5||Ye.height<5?Le:Ye,rotateEnabled:!1,borderEnabled:!1,anchorCornerRadius:10,anchorStrokeWidth:2,borderStrokeWidth:2}),a.default.createElement(u.Rect,{width:de,height:he,ref:Ze,listening:!1,onTransform:Le=>{Le.target.x()<-M.cropX*ae.width-1e-9&&(Le.target.x(-M.cropX*ae.width),Le.target.scaleX(1)),Le.target.y()<-M.cropY*ae.height-1e-9&&(Le.target.y(-M.cropY*ae.height),Le.target.scaleY(1));const Ye=Math.min(1,Math.max(0,M.cropX+Le.target.x()/ae.width)),rt=Math.min(1,Math.max(0,Le.target.y()/ae.height+M.cropY)),Pt=Le.target.width()*Le.target.scaleX(),Ct=Le.target.height()*Le.target.scaleY(),en=Math.min(1-Ye,Pt/ae.width),Wr=Math.min(1-rt,Ct/ae.height),wr=Le.target.getAbsolutePosition(Le.target.getParent().getParent());Le.target.scale({x:1,y:1}),Le.target.position({x:0,y:0}),M.set({x:wr.x,y:wr.y,cropX:Ye,cropY:rt,cropWidth:en,cropHeight:Wr,width:Math.min(Pt*fe,ae.width*(1-Ye)*fe),height:Math.min(Ct*fe,ae.height*(1-rt)*fe)})}}),a.default.createElement(u.Transformer,{ref:Je,enabledAnchors:["top-left","top-right","bottom-left","bottom-right"],boundBoxFunc:(Le,Ye)=>Ye.width<5||Ye.height<5?Le:Ye,keepRatio:!1,rotateEnabled:!1,anchorFill:"rgb(240, 240, 240)",anchorStrokeWidth:2,borderStrokeWidth:2}))),($||Y)&&a.default.createElement(w.Highlighter,{element:M}))})})(dS);var hS={},Jp={};(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.figureToSvg=e.subTypeToPathDataFunc=e.TYPES=e.crossPath=e.speechBubblePath=e.hexagonPath=e.pentagonPath=e.diamondPath=e.starPath=e.circleData=e.rightTriangleData=e.triangleData=e.rectData=void 0;const t=({width:p,height:v,cornerRadius:g})=>{if(g>0){const y=Math.min(g,p/2,v/2);return`M 0 ${y} A ${y} ${y} 0 0 1 ${y} 0 L ${p-y} 0 A ${y} ${y} 0 0 1 ${p} ${y} L ${p} ${v-y} A ${y} ${y} 0 0 1 ${p-y} ${v} L ${y} ${v} A ${y} ${y} 0 0 1 0 ${v-y} Z`}return`M 0 0 L ${p} 0 L ${p} ${v} L 0 ${v} Z`};e.rectData=t;const r=({width:p,height:v})=>`M ${p/2} 0 L ${p} ${v} L 0 ${v} Z`;e.triangleData=r;const n=({width:p,height:v})=>`M 0 0 L ${p} 0 L 0 ${v} Z`;e.rightTriangleData=n;const i=({width:p,height:v})=>`M ${p/2} ${v/2} m -${p/2}, 0 a ${p/2},${v/2} 0 1,0 ${p},0 a ${p/2},${v/2} 0 1,0 -${p},0`;function a({width:p,height:v}){const g=p/2,y=v/2,d=p/2,m=v/2,_=d/2,k=m/2;let x="",A=Math.PI/5;for(let S=0;S<10;S++){const P=S%2==0?m:k,C=g+(S%2==0?d:_)*Math.sin(S*A),R=y-P*Math.cos(S*A);S===0?x=`M ${C} ${R}`:x+=` L ${C} ${R}`}return x+" Z"}function o({width:p,height:v}){const g=p/2,y=v/2;return`M ${g} 0 L ${p} ${y} L ${g} ${v} L 0 ${y} Z`}function l({width:p,height:v}){const g=p/2,y=v/2,d=p/2,m=v/2;let _="",k=2*Math.PI/5;for(let x=0;x<5;x++){const A=m,S=g+d*Math.sin(x*k),P=y-A*Math.cos(x*k);x===0?_=`M ${S} ${P}`:_+=` L ${S} ${P}`}return _+" Z"}function u({width:p,height:v}){const g=p/2,y=v/2,d=p/2,m=v/2;let _="",k=2*Math.PI/6;for(let x=0;x<6;x++){const A=m,S=g+d*Math.sin(x*k),P=y-A*Math.cos(x*k);x===0?_=`M ${S} ${P}`:_+=` L ${S} ${P}`}return _+" Z"}function f({path:p,aspectRatio:v,width:g,height:y}){return{path:p,scaleX:g/v.width,scaleY:y/v.height}}function h({width:p,height:v}){const g=.1*Math.min(p,v),y=.2*p,d=.2*v,m=.5*p;let _=`M ${g},0`;return _+=" H "+(p-g),_+=` A ${g},${g} 0 0 1 ${p},${g}`,_+=" V "+(v-g-d),_+=` A ${g},${g} 0 0 1 ${p-g},${v-d}`,_+=` H ${m+y/2}`,_+=` L ${m},${v}`,_+=` L ${m-y/2},${v-d}`,_+=` H ${g}`,_+=` A ${g},${g} 0 0 1 0,${v-g-d}`,_+=` V ${g}`,_+=` A ${g},${g} 0 0 1 ${g},0`,_+=" Z",_}function O({width:p,height:v}){const g=.3*p,y=.3*v,d=p/2,m=v/2,_=d-g/2,k=d+g/2,x=m-y/2,A=m+y/2;let S=`M ${_},0 `;return S+=`H ${k} `,S+=`V ${x} `,S+=`H ${p} `,S+=`V ${A} `,S+=`H ${k} `,S+=`V ${v} `,S+=`H ${_} `,S+=`V ${A} `,S+="H 0 ",S+=`V ${x} `,S+=`H ${_} `,S+="V 0 ",S+="Z",S}function w(p){return e.TYPES[p]||e.rectData}function b(p,v){const{width:g,height:y,fill:d,stroke:m,strokeWidth:_,dash:k}=p,x=(k||[]).map(R=>R*_);let A=v(p),S=1,P=1;typeof A!="string"&&(S=A.scaleX,P=A.scaleY,A=A.path);const C=`clip-${p.id||Math.random()}`;return`
234
+ `);function A(M,L,D,B,q,K,F){for(var $=new ImageData(L,D),z=new Int32Array(M.data.buffer),Y=M.width,X=new Int32Array($.data.buffer),Q=$.width,J=L/K,re=D/F,oe=Math.round(1/J),ae=Math.round(1/re),ie=oe*ae,Re=0;Re<$.height;Re++)for(var Me=0;Me<Q;Me++){for(var ne=B+Math.round(Me/J)+(q+Math.round(Re/re))*Y,le=0,be=0,me=0,te=0,de=0;de<ae;de++)for(var he=0;he<oe;he++){var Se=z[ne+he+de*Y];le+=Se<<24>>>24,be+=Se<<16>>>24,me+=Se<<8>>>24,te+=Se>>>24}le=Math.round(le/ie),be=Math.round(be/ie),me=Math.round(me/ie),te=Math.round(te/ie),X[Me+Re*Q]=te<<24|me<<16|be<<8|le}return $}function S(M,L){var D,B;const q=d();q.width=M.width,q.height=M.height,(D=q.getContext("2d"))===null||D===void 0||D.drawImage(M,0,0,q.width,q.height);const K=A(q.getContext("2d").getImageData(0,0,q.width,q.height),Math.floor(q.width*L),Math.floor(q.height*L),0,0,q.width,q.height);return q.width=Math.floor(q.width*L),q.height=Math.floor(q.height*L),(B=q.getContext("2d"))===null||B===void 0||B.putImageData(K,0,0),q}const P=(M,L,D,B,q=0,K=!1)=>{const F=Math.floor(Math.max(M.width*B,1)),$=Math.floor(Math.max(M.height*B,1)),z=Math.min(q*B,F/2,$/2),Y=Math.max(M.width/D.width,M.height/D.height)*B,X=M.page._exportingOrRendering&&p.flags.imageDownScalingEnabled&&Y<1&&!K,Q=D.x===0&&D.y===0&&D.width===(L==null?void 0:L.width)&&D.height===(L==null?void 0:L.height),J=a.default.useMemo(()=>{if(!(!L||!L.width||!L.height))return Q&&z===0&&!X?void 0:d()},[L,z,X,Q]),re=()=>{if(!J||!L)return;J.width=F,J.height=$;const oe=J.getContext("2d");if(!oe)return;z&&(oe.beginPath(),oe.moveTo(z,0),oe.lineTo(F-z,0),oe.arc(F-z,z,z,3*Math.PI/2,0,!1),oe.lineTo(F,$-z),oe.arc(F-z,$-z,z,0,Math.PI/2,!1),oe.lineTo(z,$),oe.arc(z,$-z,z,Math.PI/2,Math.PI,!1),oe.lineTo(0,z),oe.arc(z,z,z,Math.PI,3*Math.PI/2,!1),oe.clip());const ae=X?S(L,Y):L,ie=X?{x:Math.floor(D.x*Y),y:Math.floor(D.y*Y),width:Math.floor(D.width*Y),height:Math.floor(D.height*Y)}:D;oe.drawImage(ae,ie.x,ie.y,ie.width,ie.height,0,0,J.width,J.height)};return a.default.useLayoutEffect(()=>{re()},[J,M.width,M.height,D.x,D.y,D.width,D.height,q,B,K,M.page._exportingOrRendering,X]),a.default.useEffect(()=>()=>{J&&J.nodeName==="CANVAS"&&h.default.Util.releaseCanvas(J)},[J]),[J||L,re]},C=(M,L,D,B)=>{const q=_(M.clipSrc||""),[K,F]=G(q,"anonymous"),$=M.clipSrc?F:"loaded";(0,e.useImageLoader)($,M.clipSrc,M.id);const z=a.default.useMemo(()=>{if(L&&K)return d()},[L,K]);function Y(){var X;if(!K||!L||!L.width||!L.height||!K||!K.width||!K.height||!z)return;const Q=d(),J=Math.max(M.width/K.width*D,M.height/K.height*D);Q.width=K.width*J,Q.height=K.height*J,(X=Q.getContext("2d"))===null||X===void 0||X.drawImage(K,0,0,Q.width,Q.height),z.width=Math.max(L.width,1),z.height=Math.max(L.height,1);const re=z.getContext("2d");re&&(re.save(),re.drawImage(Q,0,0,L.width,L.height),h.default.Util.releaseCanvas(Q),re.globalCompositeOperation="source-in",re.drawImage(L,0,0,z.width,z.height),re.restore())}return a.default.useLayoutEffect(()=>{Y()},[z,L,K,M.width,M.height,D,...B]),[M.clipSrc&&K?z:L,Y]},R=d(),N=(0,o.observer)(({element:M})=>{const L=Math.min(30,M.width/4,M.height/4),D=a.default.useRef(null);return a.default.useEffect(()=>{const B=D.current;if(!B)return;const q=new h.default.Animation(K=>{B.rotate(((K==null?void 0:K.timeDiff)||0)/2)},B.getLayer());return q.start(),()=>{q.stop()}}),a.default.createElement(u.Group,{x:M.a.x,y:M.a.y,rotation:M.a.rotation,listening:!1,opacity:M.a.opacity,hideInExport:!M.showInExport},a.default.createElement(u.Rect,{width:M.width,height:M.height,fill:"rgba(124, 173, 212, 0.8)"}),a.default.createElement(u.Arc,{ref:D,x:M.width/2,y:M.height/2,fill:"white",outerRadius:Math.abs(L),innerRadius:Math.max(1,L-5),angle:270}))}),U=(0,o.observer)(({element:M})=>{const L="Can not load the video...",D=Math.max(10,Math.min(30,M.width/25));return a.default.createElement(u.Group,{x:M.a.x,y:M.a.y,rotation:M.a.rotation,listening:!1,opacity:M.a.opacity,hideInExport:!M.showInExport},a.default.createElement(u.Rect,{width:M.width,height:M.height,fill:"rgba(223, 102, 102, 0.8)"}),a.default.createElement(u.Text,{text:L,fontSize:D,width:M.width,height:M.height,align:"center",fill:"white",verticalAlign:"middle",padding:5}))});let G=f.default;const Z=M=>{G=M};e.setImageLoaderHook=Z;const W=(M,L,D)=>{const B=a.default.useRef(),q=()=>{var K;(K=B.current)===null||K===void 0||K.call(B),B.current=void 0};a.default.useEffect(()=>q,[]),a.default.useLayoutEffect(()=>{const K=L.slice(0,200),F=`video with id ${D} url: ${K}`;M!=="loading"||B.current||(B.current=(0,b.incrementLoader)(F)),M!=="loading"&&q(),M==="failed"&&(0,b.triggerLoadError)(F)},[M])};e.useImageLoader=W;function H(M,L,D){const B=a.default.useRef("loading"),q=a.default.useRef(null),[K,F]=a.default.useState(0),$=a.default.useRef(),z=a.default.useRef(),Y=a.default.useRef();return $.current===M&&z.current===L&&Y.current===D||(B.current="loading",q.current=void 0,$.current=M,z.current=L,Y.current=D),a.default.useLayoutEffect(function(){if(M){var X=document.createElement("video");return X.addEventListener("canplay",Q),X.addEventListener("error",J),X.crossOrigin=L,X.src=M,X.load(),function(){X.removeEventListener("canplay",Q),X.removeEventListener("error",J)}}function Q(){B.current="loaded",q.current=X,q.current.currentTime=0,F(Math.random()),q.current.removeEventListener("canplay",Q)}function J(re){B.current="failed",q.current=void 0,F(Math.random())}},[M,L,D]),[q.current,B.current]}e.VideoElement=(0,o.observer)(({element:M,store:L})=>{var D;const[B,q]=a.default.useState(!1),K=a.default.useRef(null),F=a.default.useRef(null),[$,z]=a.default.useState(!1),Y=L.selectedShapes.indexOf(M)>=0,[X,Q]=a.default.useState(!1),[J,re]=H(M.src,"anonymous"),oe=L.activePage===M.page;(0,e.useImageLoader)(re,M.src,M.id),J&&(J.width=J.videoWidth,J.height=J.videoHeight,J.playsInline=!0);const ae=J||R;a.default.useEffect(()=>{J&&L.history.ignore(()=>{M.set({duration:1e3*J.duration})})},[J]),a.default.useEffect(()=>{var Le;if(!J)return;const Ye=oe&&(L.isPlaying||X);if(!Ye)return void J.pause();Ye&&(J.currentTime=M.startTime*J.duration,J.play());const rt=new h.default.Animation(()=>{se()},(Le=K.current)===null||Le===void 0?void 0:Le.getLayer());rt.start();const Pt=()=>{Q(!1),J.currentTime=M.startTime*J.duration},Ct=()=>{J.currentTime>=M.endTime*J.duration&&(J.pause(),J.currentTime=M.startTime*J.duration,Q(!1))};return J.addEventListener("ended",Pt),J.addEventListener("timeupdate",Ct),()=>{rt.stop(),J.removeEventListener("ended",Pt),J.removeEventListener("timeupdate",Ct)}},[J,X,L.isPlaying,oe]),a.default.useEffect(()=>{J&&(J.volume=M.volume)},[J,M.volume]);const ie=a.default.useRef();a.default.useEffect(()=>{const Le=(0,l.autorun)(()=>{var Ye,rt;if(J){const Pt=(L.currentTime-M.page.startTime)%M.duration;if(Math.abs(1e3*J.currentTime-Pt)>500||!L.isPlaying){const Ct=Pt/1e3;Ct!==J.currentTime&&(J.currentTime=Ct),J.readyState!==4&&!L.isPlaying&&!ie.current&&(ie.current=(0,b.incrementLoader)(`video ${M.id}`))}se(),(rt=(Ye=K.current)===null||Ye===void 0?void 0:Ye.getLayer())===null||rt===void 0||rt.batchDraw()}});return()=>{Le(),ie.current&&(ie.current(),ie.current=null)}},[L,J]),a.default.useEffect(()=>{if(!J)return;const Le=()=>{var rt,Pt;J.readyState!==4&&M.page._exportingOrRendering||ie.current&&(se(),(Pt=(rt=K.current)===null||rt===void 0?void 0:rt.getLayer())===null||Pt===void 0||Pt.batchDraw(),ie.current(),ie.current=null)};let Ye;return M.page._exportingOrRendering&&(Ye=setInterval(Le,50)),J.addEventListener("timeupdate",Le),J.addEventListener("canplay",Le),()=>{clearInterval(Ye),J.removeEventListener("timeupdate",Le),J.removeEventListener("canplay",Le)}},[M.page._exportingOrRendering,J,M.id,b.incrementLoader]);let{cropX:Re,cropY:Me,cropWidth:ne,cropHeight:le}=M;re!=="loaded"&&(Re=Me=0,ne=le=1);const be=ae.width*ne,me=ae.height*le,te=M.width/M.height;let de,he;const Se=be/me,$e=M.type==="svg";$e?(de=be,he=me):te>=Se?(de=be,he=be/te):(de=me*te,he=me);const tt={x:ae.width*Re,y:ae.height*Me,width:de,height:he},Ae=(D=M.cornerRadius)!==null&&D!==void 0?D:0,[Ce,Oe]=P(M,ae,tt,L._elementsPixelRatio,Ae,B||M._cropModeEnabled||M.type==="svg");let[Fe,Qe]=C(M,Ce,L._elementsPixelRatio,[tt,Ae,L._elementsPixelRatio]);function se(){Oe(),Qe()}const fe=Math.max(M.width/de,M.height/he);a.default.useEffect(()=>{var Le;if(!M._cropModeEnabled)return;const Ye=(Le=K.current)===null||Le===void 0?void 0:Le.getStage();function rt(Ct){M._cropModeEnabled&&Ct.target!==F.current&&M.toggleCropMode(!1)}function Pt(Ct){M._cropModeEnabled&&Ct.target.parentNode!==Ye.content&&M.toggleCropMode(!1)}return document.body.addEventListener("click",Pt),Ye==null||Ye.on("click",rt),Ye==null||Ye.on("tap",rt),()=>{document.body.removeEventListener("click",Pt),document.body.removeEventListener("touchstart",Pt),Ye==null||Ye.off("click",rt),Ye==null||Ye.off("click",rt)}},[M._cropModeEnabled]),a.default.useLayoutEffect(()=>{if(!(B||M._cropModeEnabled))return(0,v.applyFilter)(K.current,M),(0,l.autorun)(()=>{(0,v.applyFilter)(K.current,M)},{delay:100})},[ae,B,ne,le,M._cropModeEnabled]),a.default.useLayoutEffect(()=>{var Le;B||M._cropModeEnabled?(Le=K.current)===null||Le===void 0||Le.clearCache():(0,v.applyFilter)(K.current,M)},[B,M.width,M.height,M._cropModeEnabled]),a.default.useEffect(()=>{(0,v.applyFilter)(K.current,M)},[M.shadowEnabled,M.shadowBlur,M.cornerRadius,M.shadowColor,M.shadowOffsetX,M.shadowOffsetY,M.shadowOpacity]);const Ze=a.default.useRef(null),Je=a.default.useRef(null),_e=a.default.useRef(null);a.default.useLayoutEffect(()=>{M._cropModeEnabled&&(Je.current.nodes([Ze.current]),_e.current.nodes([F.current]))},[M._cropModeEnabled]);const xe=Le=>{Math.round(Le.target.x())>0&&(Le.target.x(0),Le.target.scaleX(1)),Math.round(Le.target.y())>0&&(Le.target.y(0),Le.target.scaleY(1));const Ye=Le.target.width()*Le.target.scaleX(),rt=Le.target.height()*Le.target.scaleY(),Pt=Math.min(1,de/Ye),Ct=Math.min(1,he/rt),en=1-Pt,Wr=Math.min(en,Math.max(0,Math.round(-Le.target.x())/Ye)),wr=1-Ct,bn=Math.min(wr,Math.max(0,Math.round(-Le.target.y())/rt));Le.target.setAttrs({x:-Wr*ae.width,y:-bn*ae.height,scaleX:1,scaleY:1}),M.set({cropX:Wr,cropY:bn,cropWidth:Pt,cropHeight:Ct})},qe=()=>{M.type!=="svg"&&M.contentEditable&&setTimeout(()=>{M.toggleCropMode(!0)})},we=re==="loading",We=re==="failed",Ee=!we&&!We,Ke=a.default.useRef({cropX:0,cropY:0,cropWidth:0,cropHeight:0}),rr=Ee?M.a.opacity:0;(0,g.useFadeIn)(K,rr);const gt=M.selectable||L.role==="admin",cr=(0,y.isTouchDevice)();return a.default.createElement(a.default.Fragment,null,we&&a.default.createElement(N,{element:M}),We&&a.default.createElement(U,{element:M}),a.default.createElement(u.Image,{ref:K,name:"element",id:M.id,image:Fe,x:M.a.x,y:M.a.y,width:M.a.width||1,height:M.a.height||1,rotation:M.a.rotation,opacity:rr,shadowEnabled:M.shadowEnabled,shadowBlur:M.shadowBlur,shadowOffsetX:M.shadowOffsetX,shadowOffsetY:M.shadowOffsetY,shadowColor:M.shadowColor,shadowOpacity:M.shadowOpacity,customCrop:tt,listening:gt,draggable:cr?M.draggable&&Y:M.draggable,preventDefault:!cr||Y,hideInExport:!M.showInExport,onMouseEnter:()=>{z(!0)},onMouseLeave:()=>{z(!1)},onDragMove:Le=>{M.set({x:Le.target.x(),y:Le.target.y()})},onDragEnd:Le=>{M.set({x:Le.target.x(),y:Le.target.y()})},onDblClick:qe,onDblTap:qe,onTransformStart:()=>{q(!0),Ke.current={cropX:M.cropX,cropY:M.cropY,cropWidth:M.cropWidth,cropHeight:M.cropHeight}},onTransform:Le=>{var Ye;const rt=Le.currentTarget,Pt=Math.abs(rt.scaleX()-1)<1e-7?1:rt.scaleX(),Ct=Math.abs(rt.scaleY()-1)<1e-7?1:rt.scaleY();rt.scaleX(1),rt.scaleY(1);const en=(Ye=Le.target.getStage())===null||Ye===void 0?void 0:Ye.findOne("Transformer"),Wr=1-de/ae.width,wr=Math.min(Wr,Math.max(0,M.cropX)),bn=1-he/ae.height,ki=Math.min(bn,Math.max(0,M.cropY)),_n=en.getActiveAnchor(),Ne=!(_n.indexOf("middle")>=0||_n.indexOf("center")>=0),nt=!Ne&&Pt<1&&Ke.current.cropHeight>he/ae.height;let mt=Ne?M.cropWidth:M.cropWidth*Pt;nt&&(mt=M.cropWidth);const Nt=!Ne&&Ct<1&&Ke.current.cropWidth>de/ae.width;let yt=Ne?M.cropHeight:M.cropHeight*Ct;Nt&&(yt=M.cropHeight),$e&&(mt=M.cropWidth,yt=M.cropHeight),M.set({cropX:wr,cropY:ki,x:rt.x(),y:rt.y(),width:rt.width()*Pt,height:rt.height()*Ct,rotation:Le.target.rotation(),cropWidth:Math.min(mt,1-wr),cropHeight:Math.min(yt,1-ki)})},onTransformEnd:Le=>{const Ye=Le.currentTarget;M.set({width:Ye.width(),height:Ye.height(),x:Ye.x(),y:Ye.y(),rotation:Le.target.rotation(),cropWidth:de/ae.width,cropHeight:he/ae.height}),q(!1)}}),a.default.createElement(u.Rect,{x:M.a.x,y:M.a.y,width:Math.max(M.a.width-M.borderSize,0),height:Math.max(M.a.height-M.borderSize,0),opacity:rr,offsetX:-M.borderSize/2,offsetY:-M.borderSize/2,stroke:M.borderColor,strokeWidth:M.borderSize,listening:!1,visible:!!M.borderSize,rotation:M.rotation,cornerRadius:Math.max(0,Ae-M.borderSize),hideInExport:!M.showInExport}),!X&&!L.isPlaying&&a.default.createElement(u.Image,{image:k,x:M.a.x+M.a.width/2-15/L.scale,y:M.a.y+M.a.height/2-15/L.scale,width:30/L.scale,height:30/L.scale,hideInExport:!0,onClick:()=>{Q(!0)},onTap:()=>{Q(!0)}}),X&&!L.isPlaying&&a.default.createElement(u.Image,{image:x,x:M.a.x+M.a.width/2-15/L.scale,y:M.a.y+M.a.height/2-15/L.scale,width:30/L.scale,height:30/L.scale,hideInExport:!0,onClick:()=>{Q(!1)},onTap:()=>{Q(!1)}}),M._cropModeEnabled&&a.default.createElement(O.Portal,{selector:".page-abs-container",enabled:!0},a.default.createElement(u.Rect,{x:-window.innerWidth/L.scale,y:-window.innerWidth/L.scale,width:window.innerWidth/L.scale*3,height:window.innerWidth/L.scale*3,fill:"rgba(0,0,0,0.3)"}),a.default.createElement(u.Image,{listening:!1,image:Fe,x:M.a.x,y:M.a.y,width:M.a.width,height:M.a.height,rotation:M.a.rotation,shadowEnabled:M.shadowEnabled,shadowBlur:M.shadowBlur}),a.default.createElement(u.Group,{x:M.a.x,y:M.a.y,rotation:M.a.rotation,scaleX:fe,scaleY:fe},a.default.createElement(u.Image,{image:ae,ref:F,opacity:.4,draggable:!0,x:-M.cropX*ae.width,y:-M.cropY*ae.height,onDragMove:xe,onTransform:xe}),a.default.createElement(u.Transformer,{ref:_e,anchorSize:20,enabledAnchors:["top-left","top-right","bottom-left","bottom-right"],boundBoxFunc:(Le,Ye)=>Ye.width<5||Ye.height<5?Le:Ye,rotateEnabled:!1,borderEnabled:!1,anchorCornerRadius:10,anchorStrokeWidth:2,borderStrokeWidth:2}),a.default.createElement(u.Rect,{width:de,height:he,ref:Ze,listening:!1,onTransform:Le=>{Le.target.x()<-M.cropX*ae.width-1e-9&&(Le.target.x(-M.cropX*ae.width),Le.target.scaleX(1)),Le.target.y()<-M.cropY*ae.height-1e-9&&(Le.target.y(-M.cropY*ae.height),Le.target.scaleY(1));const Ye=Math.min(1,Math.max(0,M.cropX+Le.target.x()/ae.width)),rt=Math.min(1,Math.max(0,Le.target.y()/ae.height+M.cropY)),Pt=Le.target.width()*Le.target.scaleX(),Ct=Le.target.height()*Le.target.scaleY(),en=Math.min(1-Ye,Pt/ae.width),Wr=Math.min(1-rt,Ct/ae.height),wr=Le.target.getAbsolutePosition(Le.target.getParent().getParent());Le.target.scale({x:1,y:1}),Le.target.position({x:0,y:0}),M.set({x:wr.x,y:wr.y,cropX:Ye,cropY:rt,cropWidth:en,cropHeight:Wr,width:Math.min(Pt*fe,ae.width*(1-Ye)*fe),height:Math.min(Ct*fe,ae.height*(1-rt)*fe)})}}),a.default.createElement(u.Transformer,{ref:Je,enabledAnchors:["top-left","top-right","bottom-left","bottom-right"],boundBoxFunc:(Le,Ye)=>Ye.width<5||Ye.height<5?Le:Ye,keepRatio:!1,rotateEnabled:!1,anchorFill:"rgb(240, 240, 240)",anchorStrokeWidth:2,borderStrokeWidth:2}))),($||Y)&&a.default.createElement(w.Highlighter,{element:M}))})})(dS);var hS={},Jp={};(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.figureToSvg=e.subTypeToPathDataFunc=e.TYPES=e.crossPath=e.speechBubblePath=e.hexagonPath=e.pentagonPath=e.diamondPath=e.starPath=e.circleData=e.rightTriangleData=e.triangleData=e.rectData=void 0;const t=({width:p,height:v,cornerRadius:g})=>{if(g>0){const y=Math.min(g,p/2,v/2);return`M 0 ${y} A ${y} ${y} 0 0 1 ${y} 0 L ${p-y} 0 A ${y} ${y} 0 0 1 ${p} ${y} L ${p} ${v-y} A ${y} ${y} 0 0 1 ${p-y} ${v} L ${y} ${v} A ${y} ${y} 0 0 1 0 ${v-y} Z`}return`M 0 0 L ${p} 0 L ${p} ${v} L 0 ${v} Z`};e.rectData=t;const r=({width:p,height:v})=>`M ${p/2} 0 L ${p} ${v} L 0 ${v} Z`;e.triangleData=r;const n=({width:p,height:v})=>`M 0 0 L ${p} 0 L 0 ${v} Z`;e.rightTriangleData=n;const i=({width:p,height:v})=>`M ${p/2} ${v/2} m -${p/2}, 0 a ${p/2},${v/2} 0 1,0 ${p},0 a ${p/2},${v/2} 0 1,0 -${p},0`;function a({width:p,height:v}){const g=p/2,y=v/2,d=p/2,m=v/2,_=d/2,k=m/2;let x="",A=Math.PI/5;for(let S=0;S<10;S++){const P=S%2==0?m:k,C=g+(S%2==0?d:_)*Math.sin(S*A),R=y-P*Math.cos(S*A);S===0?x=`M ${C} ${R}`:x+=` L ${C} ${R}`}return x+" Z"}function o({width:p,height:v}){const g=p/2,y=v/2;return`M ${g} 0 L ${p} ${y} L ${g} ${v} L 0 ${y} Z`}function l({width:p,height:v}){const g=p/2,y=v/2,d=p/2,m=v/2;let _="",k=2*Math.PI/5;for(let x=0;x<5;x++){const A=m,S=g+d*Math.sin(x*k),P=y-A*Math.cos(x*k);x===0?_=`M ${S} ${P}`:_+=` L ${S} ${P}`}return _+" Z"}function u({width:p,height:v}){const g=p/2,y=v/2,d=p/2,m=v/2;let _="",k=2*Math.PI/6;for(let x=0;x<6;x++){const A=m,S=g+d*Math.sin(x*k),P=y-A*Math.cos(x*k);x===0?_=`M ${S} ${P}`:_+=` L ${S} ${P}`}return _+" Z"}function f({path:p,aspectRatio:v,width:g,height:y}){return{path:p,scaleX:g/v.width,scaleY:y/v.height}}function h({width:p,height:v}){const g=.1*Math.min(p,v),y=.2*p,d=.2*v,m=.5*p;let _=`M ${g},0`;return _+=" H "+(p-g),_+=` A ${g},${g} 0 0 1 ${p},${g}`,_+=" V "+(v-g-d),_+=` A ${g},${g} 0 0 1 ${p-g},${v-d}`,_+=` H ${m+y/2}`,_+=` L ${m},${v}`,_+=` L ${m-y/2},${v-d}`,_+=` H ${g}`,_+=` A ${g},${g} 0 0 1 0,${v-g-d}`,_+=` V ${g}`,_+=` A ${g},${g} 0 0 1 ${g},0`,_+=" Z",_}function O({width:p,height:v}){const g=.3*p,y=.3*v,d=p/2,m=v/2,_=d-g/2,k=d+g/2,x=m-y/2,A=m+y/2;let S=`M ${_},0 `;return S+=`H ${k} `,S+=`V ${x} `,S+=`H ${p} `,S+=`V ${A} `,S+=`H ${k} `,S+=`V ${v} `,S+=`H ${_} `,S+=`V ${A} `,S+="H 0 ",S+=`V ${x} `,S+=`H ${_} `,S+="V 0 ",S+="Z",S}function w(p){return e.TYPES[p]||e.rectData}function b(p,v){const{width:g,height:y,fill:d,stroke:m,strokeWidth:_,dash:k}=p,x=(k||[]).map(R=>R*_);let A=v(p),S=1,P=1;typeof A!="string"&&(S=A.scaleX,P=A.scaleY,A=A.path);const C=`clip-${p.id||Math.random()}`;return`
235
235
  <svg xmlns="http://www.w3.org/2000/svg" width="${g}" height="${y}">
236
236
  <defs>
237
237
  <clipPath id="${C}">
@@ -292,7 +292,7 @@ https://polotno.com/docs/server-api`;e.URLS={unsplashList:({query:d,page:m=1})=>
292
292
  `).join("<br />")}));return h("div",{style:{position:"relative",width:"100%",height:"100%"}},U,L)},E=({element:S,type:P})=>{const C={"stroke-width":S.height,stroke:S.color,"line-cap":"round","stroke-linejoin":"round",opacity:S.opacity};return P==="arrow"||P==="triangle"?h("polyline",Object.assign({points:`${3*S.height},${2*-S.height} 0,0 ${3*S.height},${2*S.height}`},C)):P==="bar"?h("polyline",Object.assign({points:`0,${2*-S.height} 0,${2*S.height}`},C)):P==="circle"?h("circle",Object.assign({r:S.height},C)):P==="square"?h("polyline",Object.assign({points:`${-S.height},${-S.height} ${-S.height},${S.height} ${S.height},${S.height} ${S.height},${-S.height}`},C)):null},p=async({element:S,page:P,store:C})=>h("svg",{style:{width:"100%",height:"100%",contain:"layout style size",overflow:"visible"}},h("rect",{x:0,y:0,width:S.width,height:S.height,fill:S.color}),h("g",{transform:`translate(0 ${S.height/2})`},E({element:S,type:S.startHead})),h("g",{transform:`translate(${S.width} ${S.height/2}) rotate(180)`},E({element:S,type:S.endHead}))),v=async({element:S,page:P,store:C,elementHook:R})=>{const N=await Promise.all(S.children.map(G=>d({element:G,page:P,store:C,elementHook:R}))),U=h("div",{style:{"transform-origin":"top left",opacity:S.opacity}},...N);return R&&R({dom:U,element:S})||U},g=async({element:S,page:P,store:C,elementHook:R})=>{const N=(0,u.figureToSvg)(S),U=h("div",{innerHTML:N});return R&&R({dom:U,element:S})||U},y={image:w,svg:w,text:b,line:p,figure:g,group:v};async function d({element:S,page:P,store:C,elementHook:R}){let N=await y[S.type];N||(N=()=>h("div",{}),console.error(`HTML export does not support ${S.type} type...`));const U=await N({element:S,page:P,store:C}),G=[];S.blurEnabled&&G.push(`blur(${S.blurRadius/2}px)`),S.brightnessEnabled&&G.push(`brightness(${100*S.brightness+100}%)`),S.sepiaEnabled&&G.push("sepia()"),S.grayscaleEnabled&&G.push("grayscale()"),S.shadowEnabled&&G.push(`drop-shadow(${S.shadowOffsetX}px ${S.shadowOffsetY}px ${S.shadowBlur}px ${S.shadowColor})`);const Z=h("div",{id:S.id,style:{position:"absolute",left:S.x+"px",top:S.y+"px",width:S.width+"px",height:S.height+"px",transform:`rotate(${S.rotation}deg)`,"transform-origin":"top left",opacity:S.opacity,display:S.visible&&S.showInExport?"block":"none",filter:G.join(" ")||"none"}},U);return R&&R({dom:Z,element:S})||Z}async function m({page:S,store:P,elementHook:C}){const R=await Promise.all(S.children.map(Z=>d({element:Z,page:S,store:P,elementHook:C}))),N=S.width==="auto"?P.width:S.width,U=S.height==="auto"?P.height:S.height;let G={};if(S.background.indexOf("url")>=0||S.background.indexOf("http")>=0||S.background.indexOf(".jpg")>=0||S.background.indexOf(".png")>=0||S.background.indexOf(".jpeg")>=0){const{width:Z,height:W}=await(0,l.loadImage)(S.background),H=await w({element:Object.assign({x:0,y:0,width:Z,height:W,src:S.background,cornerRadius:0},(0,a.getCrop)({width:Z,height:W},{width:Z,height:W})),page:S,store:P});R.unshift(H)}else G=Object.assign(Object.assign({},G),{"background-color":S.background});return h("div",{className:"page",id:S.id,style:Object.assign(Object.assign({},G),{width:N+"px",height:U+"px",border:"1px solid grey",overflow:"hidden",position:"relative"})},...R)}async function _({json:S,elementHook:P}){const C=await Promise.all(S.pages.map(U=>m({page:U,store:S,elementHook:P}))),R=[];S.pages.forEach(U=>{U.children.forEach(G=>{G.type==="text"&&R.indexOf(G.fontFamily)===-1&&R.push(G.fontFamily)})});const N=R.map(U=>S.fonts.find(G=>G.fontFamily===U)?h("style",{},""):h("link",{href:`https://fonts.googleapis.com/css?family=${U}`,rel:"stylesheet"}));return h("div",{className:"design"},...N,...C)}e.jsonToDOM=_;const k=(S,P)=>typeof P=="object"?`${S}="${Object.keys(P).map(C=>`${C}:${P[C]};`).join(" ")}"`:`${S}="${P}"`,x=({dom:S})=>{if(typeof S=="string")return S;if(!S)return"";const P=S.props,{innerHTML:C}=P,R=i(P,["innerHTML"]);return`<${S.type} ${Object.keys(R).map(N=>k(N,S.props[N])).join(" ")}>${C||S.children.map(N=>x({dom:N})).join("")}</${S.type}>`};async function A({json:S,elementHook:P}){const C=await _({json:S,elementHook:P});return x({dom:C})}e.jsonToHTML=A})(PS);var xS={};(function(e){var t=ye&&ye.__createBinding||(Object.create?function(S,P,C,R){R===void 0&&(R=C);var N=Object.getOwnPropertyDescriptor(P,C);N&&!("get"in N?!P.__esModule:N.writable||N.configurable)||(N={enumerable:!0,get:function(){return P[C]}}),Object.defineProperty(S,R,N)}:function(S,P,C,R){R===void 0&&(R=C),S[R]=P[C]}),r=ye&&ye.__setModuleDefault||(Object.create?function(S,P){Object.defineProperty(S,"default",{enumerable:!0,value:P})}:function(S,P){S.default=P}),n=ye&&ye.__importStar||function(S){if(S&&S.__esModule)return S;var P={};if(S!=null)for(var C in S)C!=="default"&&Object.prototype.hasOwnProperty.call(S,C)&&t(P,S,C);return r(P,S),P},i=ye&&ye.__rest||function(S,P){var C={};for(var R in S)Object.prototype.hasOwnProperty.call(S,R)&&P.indexOf(R)<0&&(C[R]=S[R]);if(S!=null&&typeof Object.getOwnPropertySymbols=="function"){var N=0;for(R=Object.getOwnPropertySymbols(S);N<R.length;N++)P.indexOf(R[N])<0&&Object.prototype.propertyIsEnumerable.call(S,R[N])&&(C[R[N]]=S[R[N]])}return C};Object.defineProperty(e,"__esModule",{value:!0}),e.jsonToSVG=e.jsonToDOM=e.fixRatio=void 0;const a=Mc,o=n(ou),l=Mc,u=Jp,f=(S,P,...C)=>({type:S,props:P,children:C||[]});function h(S){var P=new DOMParser().parseFromString(S,"image/svg+xml");return P.documentElement.setAttribute("preserveAspectRatio","none"),new XMLSerializer().serializeToString(P)}e.fixRatio=h;const O=async({element:S,page:P,store:C})=>{let{src:R}=S;if(S.type==="svg"){const Q=await o.urlToString(R);R=o.replaceColors(Q,new Map(Object.entries(S.colorsReplace)))}let N="";S.flipX&&(N+="scaleX(-1)"),S.flipY&&(N+="scaleY(-1)"),S.clipSrc&&await o.urlToBase64(S.clipSrc);const U=await(0,l.loadImage)(R),G=U.width*S.cropWidth,Z=U.height*S.cropHeight,W=S.width/S.height;let H,M;const L=G/Z;S.type==="svg"?(H=G,M=Z):W>=L?(H=G,M=G/W):(H=Z*W,M=Z);const D=H/U.width,B=M/U.height,q=H/M>S.width/S.height?S.height/M:S.width/H,K=H*q/D,F=M*q/B,$=S.cropX*U.width*q,z=S.cropY*U.height*q,Y=`clip-${S.id}`,X=R.replace(/&/g,"&amp;");return f("g",{style:{transform:N}},f("defs",{},f("clipPath",{id:Y},f("rect",{x:0,y:0,width:S.width,height:S.height}))),f("image",{"xlink:href":X,x:-$,y:-z,width:K,height:F,preserveAspectRatio:"none","clip-path":`url(#${Y})`}))},w=async({element:S,page:P,store:C})=>{const R=(W,H,M,L,D)=>{const B=document.createElement("canvas").getContext("2d");return B.font=`${D} ${L} ${H}px ${M}`,B.measureText(W).width},N=((W,H,M,L,D,B)=>{const q=[];return W.split(`
293
293
  `).forEach(K=>{const F=K.split(" ");let $="";for(let z=0;z<F.length;z++){const Y=$+F[z]+" ";R(Y,M,L,D,B)>H&&z>0?(q.push($.trim()),$=F[z]+" "):$=Y}q.push($.trim())}),q})(S.text,S.width,S.fontSize,S.fontFamily,S.fontWeight,S.fontStyle),U=S.fontSize*S.lineHeight,G=S.align==="center"?"middle":S.align==="right"?"end":"start",Z=N.map((W,H)=>f("tspan",{x:S.align==="center"?S.width/2:S.align==="right"?S.width:0,dy:H===0?0:U,innerHTML:W}));return f("g",{},f("text",{fill:S.fill,y:S.fontSize,"font-size":S.fontSize+"px","text-anchor":G,"font-family":S.fontFamily,"font-style":S.fontStyle,"font-weight":S.fontWeight,"text-decoration":S.textDecoration,"line-height":S.lineHeight,"letter-spacing":S.letterSpacing+"em","stroke-width":S.strokeWidth,stroke:S.stroke},...Z))},b=({element:S,type:P})=>{const C={"stroke-width":S.height,stroke:S.color,"line-cap":"round","stroke-linejoin":"round",opacity:S.opacity};return P==="arrow"||P==="triangle"?f("polyline",Object.assign({points:`${3*S.height},${2*-S.height} 0,0 ${3*S.height},${2*S.height}`},C)):P==="bar"?f("polyline",Object.assign({points:`0,${2*-S.height} 0,${2*S.height}`},C)):P==="circle"?f("circle",Object.assign({r:S.height},C)):P==="square"?f("polyline",Object.assign({points:`${-S.height},${-S.height} ${-S.height},${S.height} ${S.height},${S.height} ${S.height},${-S.height}`},C)):null},E=async({element:S,page:P,store:C})=>f("g",{},f("line",{x1:0,y1:S.height/2,x2:S.width,y2:S.height/2,stroke:S.color,"stroke-width":S.height}),f("g",{transform:`translate(0 ${S.height/2})`},b({element:S,type:S.startHead})),f("g",{transform:`translate(${S.width} ${S.height/2}) rotate(180)`},b({element:S,type:S.endHead}))),p=async({element:S,page:P,store:C,elementHook:R})=>{const N=await Promise.all(S.children.map(G=>d({element:G,page:P,store:C,elementHook:R}))),U=f("g",{opacity:S.opacity,transform:`translate(${S.x}, ${S.y}) rotate(${S.rotation})`,style:{"transform-origin":"top left"}},...N);return R&&R({dom:U,element:S})||U};function v(S){let P=S.replace(/<svg[^>]*>/,"");return P=P.replace(/<\/svg>/,""),P}const g=async({element:S,page:P,store:C,elementHook:R})=>{const N=v((0,u.figureToSvg)(S)),U=f("g",{innerHTML:N});return R&&R({dom:U,element:S})||U},y={image:O,svg:O,text:w,line:E,figure:g,group:p};async function d({element:S,page:P,store:C,elementHook:R}){let N=await y[S.type];N||(N=()=>f("g",{}),console.error(`SVG export does not support ${S.type} type...`));const U=await N({element:S,page:P,store:C}),G=[];S.blurEnabled&&G.push(`blur(${S.blurRadius/2}px)`),S.brightnessEnabled&&G.push(`brightness(${100*S.brightness+100}%)`),S.sepiaEnabled&&G.push("sepia()"),S.grayscaleEnabled&&G.push("grayscale()"),S.shadowEnabled&&G.push(`drop-shadow(${S.shadowOffsetX}px ${S.shadowOffsetY}px ${S.shadowBlur}px ${S.shadowColor})`);const Z=f("g",{className:"element",id:S.id,transform:`translate(${S.x}, ${S.y}) rotate(${S.rotation})`,display:S.visible?void 0:"none",style:{"transform-origin":"top left",filter:G.join(" ")}},U);return R&&R({dom:Z,element:S})||Z}async function m({page:S,store:P,elementHook:C}){const R=await Promise.all(S.children.map(G=>d({element:G,page:S,store:P,elementHook:C}))),N=S.background.indexOf("url")>=0||S.background.indexOf("http")>=0||S.background.indexOf(".jpg")>=0||S.background.indexOf(".png")>=0||S.background.indexOf(".jpeg")>=0;let U;if(N){const G=await(0,l.loadImage)(S.background);U=await(0,l.cropImage)(S.background,Object.assign({width:P.width,height:P.height,x:0,y:0},(0,a.getCrop)({width:P.width,height:P.height},{width:G.width,height:G.height})))}return f("g",{className:"page",style:{}},N?f("image",{"xlink:href":U,x:0,y:0,width:P.width,height:P.height,preserveAspectRatio:"none"}):f("rect",{x:0,y:0,width:P.width,height:P.height,fill:N?void 0:S.background}),...R)}async function _({json:S,elementHook:P}){const C=await Promise.all(S.pages.map(U=>m({page:U,store:S,elementHook:P}))),R=[];S.pages.forEach(U=>{U.children.forEach(G=>{G.type==="text"&&R.indexOf(G.fontFamily)===-1&&R.push(G.fontFamily)})});const N=R.map(U=>S.fonts.find(G=>G.fontFamily===U)?f("style",{},""):f("defs",{},f("style",{type:"text/css",innerHTML:`@import url('https://fonts.googleapis.com/css?family=${U}:bi,normal,i,b');`.replace(/&/g,"&amp;")})));return f("svg",{xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:`0 0 ${S.width} ${S.height}`},...N,...C)}e.jsonToDOM=_;const k=(S,P)=>typeof P=="object"?`${S}="${Object.keys(P).map(C=>`${C}:${P[C]};`).join(" ")}"`:P==null||P===""?"":`${S}="${P}"`,x=({dom:S,nestLevel:P=0})=>{if(typeof S=="string")return S;if(!S)return"";const C=S.props,{innerHTML:R}=C,N=i(C,["innerHTML"]),U=" ".repeat(P);return`${U}<${S.type} ${Object.keys(N).map(G=>k(G,N[G])).join(" ")}>${R||`
294
294
  `+S.children.map(G=>x({dom:G,nestLevel:P+1})).join("")}${U}</${S.type}>
295
- `};async function A({json:S,elementHook:P}){const C=await _({json:S,elementHook:P});return x({dom:C})}e.jsonToSVG=A})(xS);var Kg={},O_;function CS(){return O_||(O_=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Page=void 0;const t=ri,r=t0,n=Lc(),i=P2(),a=Lc(),o=su;e.Page=t.types.model("Page",{id:t.types.identifier,children:t.types.array(t.types.late(()=>n.ElementTypes)),width:t.types.optional(t.types.union(t.types.number,t.types.literal("auto")),"auto"),height:t.types.optional(t.types.union(t.types.number,t.types.literal("auto")),"auto"),background:"white",bleed:0,custom:t.types.frozen(),duration:5e3,_exporting:!1,_rendering:!1}).postProcessSnapshot(l=>{const u=Object.assign({},l),f={};for(var h in u)h[0]!=="_"&&(f[h]=l[h]);return f}).views(l=>({get store(){return(0,t.getParentOfType)(l,i.Store)}})).views(l=>({get startTime(){let u=0;for(const f of l.store.pages){if(f.id===l.id)return u;u+=f.duration}return u},get _exportingOrRendering(){return l._exporting||l._rendering}})).views(l=>({get computedWidth(){return l.width==="auto"?l.store.width:l.width},get computedHeight(){return l.height==="auto"?l.store.height:l.height}})).actions(l=>({toJSON:()=>JSON.parse(JSON.stringify((0,t.getSnapshot)(l))),_forEachElementUp(u,f){const h=u.map(O=>({id:O,index:l.children.findIndex(w=>w.id===O)}));h.sort((O,w)=>w.index-O.index);for(const{index:O}of h){if(O==-1)continue;const w=O<l.children.length-1&&l.children[O+1],b=u.indexOf(w==null?void 0:w.id)>=0;O===l.children.length-1||b||f(O)}},_forEachElementDown(u,f){const h=u.map(O=>({id:O,index:l.children.findIndex(w=>w.id===O)}));h.sort((O,w)=>O.index-w.index);for(const{index:O}of h){if(O==-1)continue;const w=O>0&&l.children[O-1],b=u.indexOf(w==null?void 0:w.id)>=0;O===0||b||f(O)}return!1}})).actions(l=>({clone(u={}){const f=l.toJSON();f.children.forEach(b=>{b.id=(0,r.nanoid)(10),(0,a.forEveryChild)(b,E=>{E.id=(0,r.nanoid)(10)})});const h=Object.assign(Object.assign(Object.assign({},f),{id:(0,r.nanoid)(10)}),u),O=l.store.addPage(h),w=l.store.pages.indexOf(l);O.setZIndex(w+1),O.select()},setZIndex(u){l.store.setPageZIndex(l.id,u)},set(u){Object.assign(l,u)},select(){l.store.selectPage(l.id)},addElement(u,{skipSelect:f=!1}={}){const h=a.TYPES_MAP[u.type];if(!h)return void console.error("Can not find model with type "+u.type);u.children&&u.children.forEach(w=>{w.id=(0,r.nanoid)(10)});const O=h.create(Object.assign({id:(0,r.nanoid)(10)},u));return l.children.push(O),O.selectable&&!f&&l.store.selectElements([O.id]),O},canMoveElementsUp(u){let f=!1;return l._forEachElementUp(u,()=>{f=f||!0}),f},moveElementsUp(u){l._forEachElementUp(u,f=>{const h=l.children[f];(0,t.detach)(h),l.children.splice(f+1,0,h)})},canMoveElementsTop(u){return this.canMoveElementsUp(u)},moveElementsTop(u){const f=[],h=[];l.children.forEach(O=>{u.indexOf(O.id)>=0?f.push(O):h.push(O)}),l.children.replace(h.concat(f))},canMoveElementsDown(u){let f=!1;return l._forEachElementDown(u,()=>{f=f||!0}),f},moveElementsDown(u){l._forEachElementDown(u,f=>{const h=l.children[f];(0,t.detach)(h),l.children.splice(f-1,0,h)})},canMoveElementsBottom(u){return this.canMoveElementsDown(u)},moveElementsBottom(u){const f=[],h=[];l.children.forEach(O=>{u.indexOf(O.id)>=0?f.push(O):h.push(O)}),l.children.replace(f.concat(h))},setElementZIndex(u,f){const h=l.children.find(O=>O.id===u);h&&((0,t.detach)(h),l.children.remove(h),l.children.splice(f,0,h))},setSize({width:u,height:f,useMagic:h,softChange:O}){if(h){const w=[],b=N=>N.type==="image"&&N.x<1&&N.y<1&&N.width>=l.computedWidth-2&&N.height>=l.computedHeight-2;(0,a.forEveryChild)(l,N=>{N.type!=="group"&&(b(N)||w.push(N))});const E=w.length?(0,o.getTotalClientRect)(w):{x:0,y:0,width:l.computedWidth,height:l.computedHeight},p=1/4,v=Math.max(0,Math.min(E.x,l.computedWidth-E.x-E.width)),g=l.computedWidth*p,y=Math.max(0,v-g),d=Math.max(0,Math.min(E.y,l.computedHeight-E.y-E.height)),m=l.computedHeight*p,_=Math.max(0,d-m),k=l.computedWidth-2*y,x=l.computedHeight-2*_,A=u/k,S=f/x,P=Math.min(A,S),C=(u-k*P)/2-y*P,R=(f-x*P)/2-_*P;(0,a.forEveryChild)(l,N=>{N.type!=="group"&&(b(N)?N.set({x:N.x*P,y:N.y*P,width:N.width*A,height:N.height*S,cropX:0,cropY:0,cropWidth:1,cropHeight:1}):(N.set({x:C+N.x*P,y:R+N.y*P,width:N.width*P,height:N.height*P}),N.type==="text"?N.set({fontSize:N.fontSize*P}):N.type==="figure"&&N.set({strokeWidth:N.strokeWidth*P})))})}O||(l.width=u),O||(l.height=f)}})).actions(l=>({moveElementUp(u){console.warn("page.moveElementUp(id) is deprecated. Please use page.moveElementsUp([id1, id2]) instead."),l.moveElementsUp([u])},moveElementDown(u){console.warn("page.moveElementDown(id) is deprecated. Please use page.moveElementsDown([id1, id2]) instead."),l.moveElementsDown([u])},moveElementTop(u){console.warn("page.moveElementTop(id) is deprecated. Please use page.moveElementsTop([id1, id2]) instead."),l.moveElementsTop([u])},moveElementBottom(u){console.warn("page.moveElementBottom(id) is deprecated. Please use page.moveElementsBottom([id1, id2]) instead."),l.moveElementsBottom([u])},play(){l.store.play({startTime:l.startTime,endTime:l.startTime+l.duration})}}))}(Kg)),Kg}var kS={};(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Audio=void 0;const t=ri;e.Audio=t.types.model("Audio",{id:t.types.identifier,src:"",duration:0,startTime:0,endTime:1,volume:1,delay:0}).actions(r=>({toJSON:()=>Object.assign({},(0,t.getSnapshot)(r))})).actions(r=>({set(n){Object.assign(r,n)}}))})(kS);var P_;function P2(){return P_||(P_=1,function(e){var t=ye&&ye.__createBinding||(Object.create?function(S,P,C,R){R===void 0&&(R=C);var N=Object.getOwnPropertyDescriptor(P,C);N&&!("get"in N?!P.__esModule:N.writable||N.configurable)||(N={enumerable:!0,get:function(){return P[C]}}),Object.defineProperty(S,R,N)}:function(S,P,C,R){R===void 0&&(R=C),S[R]=P[C]}),r=ye&&ye.__setModuleDefault||(Object.create?function(S,P){Object.defineProperty(S,"default",{enumerable:!0,value:P})}:function(S,P){S.default=P}),n=ye&&ye.__importStar||function(S){if(S&&S.__esModule)return S;var P={};if(S!=null)for(var C in S)C!=="default"&&Object.prototype.hasOwnProperty.call(S,C)&&t(P,S,C);return r(P,S),P},i=ye&&ye.__rest||function(S,P){var C={};for(var R in S)Object.prototype.hasOwnProperty.call(S,R)&&P.indexOf(R)<0&&(C[R]=S[R]);if(S!=null&&typeof Object.getOwnPropertySymbols=="function"){var N=0;for(R=Object.getOwnPropertySymbols(S);N<R.length;N++)P.indexOf(R[N])<0&&Object.prototype.propertyIsEnumerable.call(S,R[N])&&(C[R[N]]=S[R[N]])}return C},a=ye&&ye.__importDefault||function(S){return S&&S.__esModule?S:{default:S}};Object.defineProperty(e,"__esModule",{value:!0}),e.createStore=e.Store=e.Font=void 0;const o=ri,l=_S,u=t0,f=a(Ci),h=wS,O=SS,w=ES,b=E2(),E=n(iu),p=Yi,v=e0,g=O2,y=OS,d=PS,m=xS,_=CS(),k=Lc(),x=kS;function A({key:S,showCredit:P}={key:"",showCredit:!1}){const C=e.Store.create();return(0,b.validateKey)(S,P),C}(0,o.setLivelinessChecking)("ignore"),e.Font=o.types.model("Font",{fontFamily:o.types.string,url:o.types.optional(o.types.string,""),styles:o.types.frozen()}).preProcessSnapshot(S=>Object.assign(Object.assign({},S),{fontFamily:S.fontFamily||S.name})),e.Store=o.types.model("Store",{role:"",pages:o.types.array(_.Page),fonts:o.types.array(e.Font),audios:o.types.array(x.Audio),width:1080,height:1080,currentTime:0,isPlaying:!1,scale:1,scaleToFit:1,unit:"px",dpi:72,bleedVisible:!1,rulesVisible:!1,openedSidePanel:"",previousOpenedSidePanel:"",custom:o.types.frozen(),selectedElementsIds:o.types.array(o.types.string),animatedElementsIds:o.types.array(o.types.string),history:o.types.optional(l.UndoManager,{targetPath:"../pages"}),_elementsPixelRatio:Math.min(2,window.devicePixelRatio||1),_activePageId:""}).views(S=>({get _bleedVisible(){return console.warn("store._bleedVisible is deprecated. Please use store.bleedVisible instead."),S.bleedVisible},get selectedElements(){return S.selectedElementsIds.map(P=>{for(const C of S.pages)for(const R of C.children)if(R.id===P)return R}).filter(P=>!!P)},get children(){return S.pages},get selectedShapes(){const P=[];return(0,k.forEveryChild)({children:S.selectedElements},C=>{C.type!=="group"&&P.push(C)}),P},get activePage(){return S.pages.slice().find(P=>P.id===S._activePageId)||(S.pages.length?S.pages[0]:null)},get duration(){let P=0;return S.pages.forEach(C=>{P+=C.duration}),P},get _hasCroppedImages(){return S.find(P=>P.type==="image"&&P._cropModeEnabled)},find(P){let C;return(0,k.forEveryChild)({children:S.pages},R=>{if(!C&&P(R))return C=R,!0}),C},getElementById:P=>S.find(C=>C.id===P)})).actions(S=>{let P=0,C=null,R=!1;return{afterCreate(){S.history.canUndo},setCurrentTime(N){S.currentTime=N},play({animatedElementsIds:N=[],startTime:U=0,currentTime:G=0,endTime:Z=S.duration,repeat:W=!1}={}){G&&(console.warn("currentTime property of store.play() is deprecated. Please use startTime instead."),U=G),S.animatedElementsIds=(0,o.cast)(N),S.currentTime=U,S.isPlaying=!0,P=Date.now(),C=Z,R=W,requestAnimationFrame(S.seek)},checkActivePage(){let N=0;for(const U of S.pages){if(S.currentTime>=U.startTime&&S.currentTime<U.startTime+U.duration){S.selectPage(U.id);break}N+=U.duration}},seek(){if(!S.isPlaying)return;const N=Date.now(),U=N-P;P=N,S.currentTime+=U,S.checkActivePage();const G=C||S.duration;S.isPlaying&&S.currentTime<G?requestAnimationFrame(S.seek):S.isPlaying&&R?(S.currentTime=0,requestAnimationFrame(S.seek)):S.stop()},stop(){S.isPlaying=!1,S.currentTime=0,S.animatedElementsIds=(0,o.cast)([]),S.checkActivePage()}}}).actions(S=>({set(P){Object.assign(S,P)},setUnit({unit:P,dpi:C}){S.unit=P||S.unit,S.dpi=C||S.dpi},setRole(P){S.role=P},addPage(P){const C=_.Page.create(Object.assign({id:(0,u.nanoid)(10)},P));return S.pages.push(C),S._activePageId=C.id,C},selectPage(P){S._activePageId=P},selectElements(P){const C=P.map(R=>S.getElementById(R)).sort((R,N)=>R.page.children.indexOf(R)-R.page.children.indexOf(N)).filter(R=>!!R).map(R=>R.id);S.selectedElementsIds=(0,o.cast)(C)},toggleBleed(P){S.bleedVisible=P??!S.bleedVisible},toggleRulers(P){S.rulesVisible=P??!S.rulesVisible},openSidePanel(P){S.openedSidePanel!==P&&(S.previousOpenedSidePanel=S.openedSidePanel,S.openedSidePanel=P)},setScale(P){S.scale=P},_setScaleToFit(P){S.scaleToFit=P},setElementsPixelRatio(P){S._elementsPixelRatio=P},setSize(P,C,R){S.pages.forEach(N=>{N.setSize({width:P,height:C,useMagic:R,softChange:!0})}),S.width=P,S.height=C},setPageZIndex(P,C){const R=S.pages.find(N=>N.id===P);R&&((0,o.detach)(R),S.pages.remove(R),S.pages.splice(C,0,R))},deletePages(P){const C=S.pages.indexOf(S.activePage);P.forEach(U=>{const G=S.pages.find(Z=>Z.id===U);(0,o.destroy)(G)});const R=Math.min(S.pages.length-1,C),N=S.pages[R];N&&(S._activePageId=N.id),S.selectedElementsIds=(0,o.cast)(S.selectedElementsIds.filter(U=>S.getElementById(U)))},groupElements(P){const C=P.map(U=>S.getElementById(U));C.forEach(U=>{U&&(0,o.detach)(U)});const R=S.activePage,N={id:(0,u.nanoid)(10),children:C,type:"group"};return R.children.push(N),S.selectedElementsIds=(0,o.cast)([N.id]),N},ungroupElements(P){const C=P.map(N=>S.getElementById(N)),R=[];C.forEach(N=>{if(N&&N.type==="group"){const U=N.page,G=U.children.indexOf(N);N.children.forEach(Z=>{R.push(Z.id)}),N.children.forEach(Z=>{(0,o.detach)(Z),U.children.push(Z)}),U.children.splice(G,1)}}),S.selectedElementsIds=(0,o.cast)(R)},deleteElements(P){const C=[];S.find(R=>(P.includes(R.id)&&C.push(R),!1)),C.forEach(R=>{(0,o.destroy)(R)}),S.selectedElementsIds=(0,o.cast)(S.selectedElementsIds.filter(R=>S.getElementById(R)))},on(P,C){if(P==="change"){let R=S.toJSON();return(0,o.onSnapshot)(S,N=>{const U=S.toJSON();!(0,g.deepEqual)(R,U)&&(R=U,C(U))})}},async _toCanvas({pixelRatio:P,ignoreBackground:C,pageId:R,mimeType:N,includeBleed:U,_skipTimeout:G}={}){var Z;const W=P||1;R=R||((Z=S.pages[0])===null||Z===void 0?void 0:Z.id);const H=S.pages.find(ie=>ie.id===R);if(!H)throw new Error(`No page for export with id ${R}`);H==null||H.set({_exporting:!0});const M=await(0,y.waitTillAvailable)(()=>f.default.stages.find(ie=>ie.getAttr("pageId")===R));if(!M)throw new Error(`Export is failed. Can not find stage for page ${R}. Looks like <Workspace /> component is not mounted, but it is required in order to process the export.`);const L=!!M.findOne(".page-container"),D=S._elementsPixelRatio;W>S._elementsPixelRatio&&S.setElementsPixelRatio(W),await S.waitLoading({_skipTimeout:G});const B=M.findOne(".page-container");if(!B)throw S.setElementsPixelRatio(D),new Error(`Export is failed. Can't find page container. ${L}`);M.find("Transformer").forEach(ie=>ie.visible(!1)),B.find(".page-background").forEach(ie=>ie.shadowEnabled(!1)),B.find(".page-background").forEach(ie=>ie.strokeEnabled(!1)),B.find(".highlighter").forEach(ie=>ie.visible(!1));const q=B.findOne(".page-background-group"),K=q.clip();q.clip({x:null,y:null,width:null,height:null});const F=B.findOne(".elements-container"),$=F.clip();F.clip({x:null,y:null,width:null,height:null});const z=B.find(ie=>ie.getAttr("hideInExport"));z.forEach(ie=>{ie.setAttr("oldVisible",ie.visible()),ie.hide()});const Y=B.find(ie=>!ie.visible()&&ie.getAttr("editModeEnabled"));Y.forEach(ie=>{ie.setAttr("oldVisible",ie.visible()),ie.show()}),C&&B.find(".page-background").forEach(ie=>ie.hide());const X=U?H.bleed:0;let Q=X;!S.bleedVisible&&U||(S.bleedVisible||U?S.bleedVisible&&U?Q=0:S.bleedVisible&&!U&&(Q=-H.bleed):Q=0);const J=document.createElement("canvas");J.width=Math.round((H.computedWidth+2*X)*W),J.height=Math.round((H.computedHeight+2*X)*W);const re=J.getContext("2d");N==="image/jpeg"&&(re.fillStyle="white",re.fillRect(0,0,J.width,J.height));const oe=B.scale();B.scale({x:1,y:1});const ae=B.toCanvas({x:B.x()-Q,y:B.y()-Q,width:H.computedWidth+2*X,height:H.computedHeight+2*X,pixelRatio:W});return B.scale(oe),re.drawImage(ae,0,0,J.width,J.height),f.default.Util.releaseCanvas(ae),C&&B.find(".page-background").forEach(ie=>ie.show()),z.forEach(ie=>{ie.visible(ie.getAttr("oldVisible"))}),Y.forEach(ie=>{ie.visible(ie.getAttr("oldVisible"))}),B.find(".page-background").forEach(ie=>ie.shadowEnabled(!0)),B.find(".page-background").forEach(ie=>ie.strokeEnabled(!0)),M.find("Transformer").forEach(ie=>ie.visible(!0)),B.find(".highlighter").forEach(ie=>ie.visible(!0)),q.clip(K),F.clip($),S.setElementsPixelRatio(D),H==null||H.set({_exporting:!1}),J},async toDataURL(P={}){var{mimeType:C,quality:R}=P,N=i(P,["mimeType","quality"]);const U=await S._toCanvas(Object.assign({mimeType:C},N)),G=U.toDataURL(C,R);return f.default.Util.releaseCanvas(U),G},async toBlob(P={}){var{mimeType:C,quality:R}=P,N=i(P,["mimeType","quality"]);const U=await S._toCanvas(Object.assign({mimeType:C},N)),G=new Promise(Z=>{U.toBlob(Z,C,R)});return f.default.Util.releaseCanvas(U),G},async saveAsImage(P={}){var{fileName:C}=P,R=i(P,["fileName"]);const N=R.mimeType||"image/png",U=N.split("/")[1];(0,h.downloadFile)(await S.toDataURL(R),C||"polotno."+U,N)},async _toPDF(P){const C=P.dpi||S.dpi,R=P.parallel||1,N=P.unit||(S.unit==="px"?"mm":S.unit),U=P.pixelRatio||1,G=P.pageIds||S.pages.map(z=>z.id),Z=S.pages.filter(z=>G.includes(z.id)),W=await(0,O.getJsPDF)(),H=z=>(0,v.pxToUnit)({px:z,unit:N,dpi:C}),M=H(P.cropMarkSize||0),L=Z[0]||{},D=P.includeBleed?L.bleed:0,B=H(L.computedWidth+2*D)+2*M,q=H(L.computedHeight+2*D)+2*M;var K=new W({unit:N,orientation:B>q?"landscape":"portrait",format:[B,q],compress:!0,putOnlyUsedFonts:!0});K.deletePage(1);const F=((z,Y)=>{for(var X=[],Q=0;Q<z.length;Q+=Y)X.push(z.slice(Q,Q+Y));return X})(Z,R);let $=0;for(const z of F){const Y=z.map(async X=>{const Q=P.includeBleed?X.bleed:0,J=H(X.computedWidth+2*Q)+2*M,re=H(X.computedHeight+2*Q)+2*M;let oe=0,ae=U;for(;oe<10;){oe+=1,oe===2&&console.error("Polotno can not export PDF with current settings. Quality is automatically reduced.");const ie=await S.toDataURL(Object.assign(Object.assign({},P),{pageId:X.id,pixelRatio:ae}));if(ie.length>20)return P.onProgress&&P.onProgress(++$/G.length*.9),{url:ie,width:J,height:re};ae*=.8}});(await Promise.all(Y)).forEach(({url:X,width:Q,height:J})=>{K.addPage([Q,J],Q>J?"landscape":"portrait"),M&&(K.setLineWidth(H(1)),K.line(2*M,0,2*M,M),K.line(0,2*M,M,2*M),K.line(Q-2*M,0,Q-2*M,M),K.line(Q,2*M,Q-M,2*M),K.line(0,J-2*M,M,J-2*M),K.line(2*M,J,2*M,J-M),K.line(Q,J-2*M,Q-M,J-2*M),K.line(Q-2*M,J,Q-2*M,J-M)),K.addImage(X,M,M,Q-2*M,J-2*M,void 0,"FAST")})}return K},toPDFDataURL:async P=>(await S._toPDF(Object.assign({mimeType:"image/jpeg"},P))).output("datauristring"),async toGIFDataURL(P={}){const C=P.pixelRatio||1,R=await(0,w.createGIF)({width:S.width*C,height:S.height*C}),N=1e3/(P.fps||10),U=S.duration/N;for(let G=0;G<U-1;G++){const Z=G*N||1;S.setCurrentTime(Z);let W=0,H="";for(const L of S.pages)if(W+=L.duration,L.set({_rendering:W>Z}),W>Z){H=L.id;break}const M=await S._toCanvas({pixelRatio:C,pageId:H,_skipTimeout:!0});R.addFrame(M.getContext("2d"),{delay:N,copy:!0})}for(const G of S.pages)G.set({_rendering:!1});return S.stop(),R.render(),new Promise(G=>{R.on("finished",function(Z){(function(W,H){var M=new FileReader;M.onload=function(L){H(L.target.result)},M.readAsDataURL(W)})(Z,G)})})},async saveAsGIF(P={}){var{fileName:C}=P,R=i(P,["fileName"]);const N=await S.toGIFDataURL(R);(0,h.downloadFile)(N,C||"polotno.gif")},async toHTML({elementHook:P}={elementHook:void 0}){const C=S.toJSON();return(0,d.jsonToHTML)({json:C,elementHook:P})},async saveAsHTML({fileName:P}={}){const C=await S.toHTML(),R="data:text/html;base64,"+window.btoa(unescape(encodeURIComponent(C)));(0,h.downloadFile)(R,P||"polotno.html")},async toSVG({elementHook:P}={elementHook:void 0}){const C=S.toJSON();return(0,m.jsonToSVG)({json:C,elementHook:P})},async saveAsSVG({fileName:P,elementHook:C}={}){const R=await S.toSVG({elementHook:C}),N="data:text/svg;base64,"+window.btoa(unescape(encodeURIComponent(R)));(0,h.downloadFile)(N,P||"polotno.svg")},async saveAsPDF(P={}){var{fileName:C}=P,R=i(P,["fileName"]);(await S._toPDF(Object.assign({mimeType:"image/jpeg"},R))).save(C||"polotno.pdf")},async waitLoading({_skipTimeout:P=!1}={}){P||await new Promise(C=>setTimeout(C,50)),await(0,p.whenLoaded)()},toJSON:()=>({width:S.width,height:S.height,fonts:(0,o.getSnapshot)(S.fonts),pages:(0,o.getSnapshot)(S.pages),audios:(0,o.getSnapshot)(S.audios),unit:S.unit,dpi:S.dpi,custom:S.custom}),loadJSON(P,C=!1){var R;const N=Object.assign({},P),U=S.pages.indexOf(S.activePage);let G=(R=N.pages[U]||N.pages[0])===null||R===void 0?void 0:R.id;N._activePageId=G;const Z=Object.assign({},(0,o.getSnapshot)(S));Object.assign(Z,N),Z.history=C?S.history.toJSON():{history:[],undoIdx:-1},(0,o.applySnapshot)(S,Z)},clear({keepHistory:P=!1}={}){const C=S.pages.map(R=>R.id);S.deletePages(C),P||S.history.clear()},addFont(P){S.removeFont(P.fontFamily),S.fonts.push(P),S.loadFont(P.fontFamily)},removeFont(P){S.fonts.filter(C=>C.fontFamily===P).forEach(C=>(0,o.destroy)(C))},addAudio(P){const C=x.Audio.create(Object.assign({id:(0,u.nanoid)(10)},P));S.audios.push(C)},removeAudio(P){const C=S.audios.find(R=>R.id===P);C&&S.audios.remove(C)},async loadFont(P){const C=S.fonts.find(N=>N.fontFamily===P)||E.globalFonts.find(N=>N.fontFamily===P);let R=[{fontStyle:"normal",fontWeight:"normal"}];return C?(C.styles&&(R=C.styles.map(N=>({fontStyle:N.fontStyle||"normal",fontWeight:N.fontWeight||"normal"}))),E.injectCustomFont(C)):E.injectGoogleFont(P),Promise.all(R.map(N=>E.loadFont(P,N.fontStyle,N.fontWeight)))},validate:P=>e.Store.validate(P,[{path:"",type:e.Store}]).map(C=>({path:"store"+C.context.map(R=>R.path).join("."),message:C.message}))})),e.createStore=A,e.default=A}(Wg)),Wg}var x_;function TS(){return x_||(x_=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Node=void 0;const t=ri,r=t0,n=P2(),i=CS(),a=Lc();e.Node=t.types.model("Node",{id:t.types.identifier,type:"none",name:"",opacity:1,custom:t.types.frozen(),visible:!0,selectable:!0,removable:!0,alwaysOnTop:!1,showInExport:!0}).preProcessSnapshot(o=>{for(var l in o)o[l]===null&&(o[l]=void 0);return o}).postProcessSnapshot(o=>{const l=Object.assign({},o),u={};for(var f in l)f[0]!=="_"&&(u[f]=o[f]);return u}).views(o=>({get locked(){return!(o.draggable||o.contentEditable||o.styleEditable||o.resizable)},get page(){return(0,t.getParentOfType)(o,i.Page)},get store(){return(0,t.getParentOfType)(o,n.Store)},get top(){let l=o;for(;;){if(!(0,t.hasParentOfType)(l,a.GroupElement))return l;l=(0,t.getParentOfType)(l,a.GroupElement)}},get parent(){return(0,t.hasParentOfType)(o,a.GroupElement)?(0,t.getParentOfType)(o,a.GroupElement):(0,t.hasParentOfType)(o,i.Page)?(0,t.getParentOfType)(o,i.Page):(0,t.hasParentOfType)(o,n.Store)?(0,t.getParentOfType)(o,n.Store):null},get zIndex(){return o.parent.children.indexOf(o)}})).actions(o=>({toJSON:()=>Object.assign({},(0,t.getSnapshot)(o))})).actions(o=>({clone(l={},{skipSelect:u=!1}={}){const f=JSON.parse(JSON.stringify(o.toJSON()));return l.id=l.id||(0,r.nanoid)(10),(0,a.forEveryChild)(f,h=>{h.id=(0,r.nanoid)(10)}),Object.assign(f,l),o.page.addElement(f,{skipSelect:u})},set(l){Object.assign(o,l)},moveUp(){o.page.moveElementsUp([o.id])},moveTop(){o.page.moveElementsTop([o.id])},moveDown(){o.page.moveElementsDown([o.id])},moveBottom(){o.page.moveElementsBottom([o.id])},setZIndex(l){o.parent.setElementZIndex(o.id,l)},beforeDestroy(){}}))}(qg)),qg}var Yg={},AS={};(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.registerAnimation=e.animate=e.animations=void 0;const t=su,r={right:{from:{x:-200},to:{x:0}},left:{from:{x:200},to:{x:0}},up:{from:{y:200},to:{y:0}},down:{from:{y:-200},to:{y:0}},"bottom-right":{from:{x:-200,y:-200},to:{x:0,y:0}},"bottom-left":{from:{x:200,y:-200},to:{x:0,y:0}},"top-right":{from:{x:-200,y:200},to:{x:0,y:0}},"top-left":{from:{x:200,y:200},to:{x:0,y:0}}};e.animations={fade:({dTime:a,element:o,animation:l})=>{const u=a/l.duration;return l.type==="enter"?{opacity:u*o.opacity}:{opacity:(1-u)*o.opacity}},rotate:({dTime:a,element:o,animation:l})=>{const u=a/l.duration*360;return(0,t.rotateAroundCenter)({x:o.x,y:o.y,width:o.width,height:o.height,rotation:o.rotation},u)},blink:({dTime:a,element:o,animation:l})=>{const u=l.duration,f=a%u/(u/2),h=f<=1?f:2-f;return{opacity:o.opacity*h}},bounce:({dTime:a,element:o,animation:l})=>{const u=l.duration,f=u/2,h={},O={x:o.x+o.width/3,y:o.y+o.height/3,width:o.width/3,height:o.height/3,fontSize:o.fontSize/3},w={x:o.x,y:o.y,width:o.width,height:o.height,fontSize:o.fontSize},b=a%u/f,E=b<=1?b:2-b;for(let p in O){const v=O[p],g=w[p]-v;h[p]=v+E*g}return h},move:({dTime:a,element:o,animation:l})=>{const u=r[l.data.direction]||r.right,f={};for(var h in u.from){let O=u.from[h],w=u.to[h];l.type==="exit"&&(O=u.to[h],w=-u.from[h]);const b=o[h]+O,E=o[h]+w-b;f[h]=b+a/l.duration*E}return f},zoom:({dTime:a,element:o,animation:l})=>{const u={},f={x:o.x+o.width/3,y:o.y+o.height/3,width:o.width/3,height:o.height/3,fontSize:o.fontSize/3},h={x:o.x,y:o.y,width:o.width,height:o.height,fontSize:o.fontSize};for(var O in f){let w=f[O],b=h[O];if(l.type==="exit"){const p=w;w=b,b=p}const E=b-w;u[O]=w+a/l.duration*E}return u}};const n=({element:a,dTime:o,animation:l})=>{const u=e.animations[l.name];return u?u({element:a,dTime:o,animation:l}):(console.error("Can not find animation type: "+l.name),{})};e.animate=n;const i=(a,o)=>{};e.registerAnimation=i})(AS);var C_;function uu(){return C_||(C_=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Shape=e.Animation=void 0;const t=ri,r=AS,n=Ji,i=TS();e.Animation=t.types.model("Animation",{delay:0,duration:500,enabled:!0,type:t.types.enumeration("Type",["enter","exit","loop"]),name:"none",data:t.types.frozen({})}),e.Shape=i.Node.named("Shape").props({x:0,y:0,width:100,height:100,rotation:0,opacity:1,animations:t.types.array(e.Animation),blurEnabled:!1,blurRadius:10,brightnessEnabled:!1,brightness:0,sepiaEnabled:!1,grayscaleEnabled:!1,shadowEnabled:!1,shadowBlur:5,shadowOffsetX:0,shadowOffsetY:0,shadowColor:"black",shadowOpacity:1,visible:!0,draggable:!0,resizable:!0,selectable:!0,contentEditable:!0,styleEditable:!0,alwaysOnTop:!1,showInExport:!0}).preProcessSnapshot(a=>{const o=Object.assign(Object.assign({},a),{x:a.x||0,y:a.y||0});return"width"in a&&(o.width=o.width||1),"height"in a&&(o.height=o.height||1),a.locked&&(o.draggable=!1,o.contentEditable=!1,o.styleEditable=!1,o.resizable=!1,o.removable=!1),o}).views(a=>{const o=(0,n.observable)({x:a.x,y:a.y,width:a.width,height:a.height,rotation:a.rotation,opacity:a.opacity,color:a.color,fontSize:a.fontSize}),l=(0,n.action)(u=>{Object.assign(o,u)});return{get a(){const{currentTime:u}=a.store;if(l({x:a.x,y:a.y,width:a.width,height:a.height,rotation:a.rotation,opacity:a.opacity,color:a.color,fontSize:a.fontSize}),u===0)return o;const f=u-a.page.startTime;if(f>a.page.duration||f<0)return o;const h=a.store.animatedElementsIds;if(h.length&&!h.includes(a.id))return o;const O=a.animations.find(E=>E.type==="enter");if(O!=null&&O.enabled&&f<O.delay&&l({opacity:0}),O!=null&&O.enabled&&f>=O.delay&&f<=O.delay+O.duration){const E=f-O.delay,p=(0,r.animate)({element:a,animation:O,dTime:E});l(p)}const w=a.animations.find(E=>E.type==="exit");if(w!=null&&w.enabled&&f>=a.page.duration-w.duration-w.delay&&f<=a.page.duration-w.delay){const E=f-(a.page.duration-w.duration-w.delay),p=(0,r.animate)({element:a,animation:w,dTime:E});l(p)}w!=null&&w.enabled&&f>=a.page.duration-w.delay&&l({opacity:0});const b=a.animations.find(E=>E.type==="loop");if(b!=null&&b.enabled){const E=f,p=(0,r.animate)({element:a,animation:b,dTime:E});l(p)}return o},animated:u=>a.a[u]}}).actions(a=>({setAnimation(o,l){const u=a.animations.find(f=>f.type===o);u?Object.assign(u,l):a.animations.push(Object.assign({type:o},l))}}))}(Yg)),Yg}var Xg={},k_;function vj(){return k_||(k_=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.TextElement=void 0;const t=ri,r=uu();e.TextElement=r.Shape.named("Text").props({type:"text",text:"",placeholder:"",fontSize:14,fontFamily:"Roboto",fontStyle:"normal",fontWeight:"normal",textDecoration:"",fill:"black",align:"center",width:100,height:0,verticalAlign:"top",strokeWidth:0,stroke:"black",lineHeight:t.types.optional(t.types.union(t.types.number,t.types.string),1.2),letterSpacing:0,_editModeEnabled:!1,backgroundEnabled:!1,backgroundColor:"#7ED321",backgroundOpacity:1,backgroundCornerRadius:.5,backgroundPadding:.5}).preProcessSnapshot(n=>Object.assign({},n)).actions(n=>({toggleEditMode(i){n._editModeEnabled=i??!n._editModeEnabled,n._editModeEnabled?n.store.history.startTransaction():n.store.history.endTransaction()}}))}(Xg)),Xg}var Zg={},T_;function RS(){return T_||(T_=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ImageElement=void 0;const t=uu();e.ImageElement=t.Shape.named("Image").props({type:"image",width:100,height:100,src:"",cropX:0,cropY:0,cropWidth:1,cropHeight:1,cornerRadius:0,flipX:!1,flipY:!1,clipSrc:"",borderColor:"black",borderSize:0,keepRatio:!1,_cropModeEnabled:!1}).actions(r=>({toggleCropMode(n){r._cropModeEnabled=n??!r._cropModeEnabled,r._cropModeEnabled?r.store.history.startTransaction():r.store.history.endTransaction()},beforeDestroy(){r._cropModeEnabled&&r.store.history.endTransaction()}}))}(Zg)),Zg}var Qg={},A_;function mj(){return A_||(A_=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.VideoElement=void 0;const t=RS();e.VideoElement=t.ImageElement.named("Video").props({type:"video",duration:0,startTime:0,endTime:1,volume:1})}(Qg)),Qg}var Jg={},R_;function yj(){return R_||(R_=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.LineElement=void 0;const t=ri,r=uu();e.LineElement=r.Shape.named("Line").props({type:"line",width:400,height:10,color:"black",dash:t.types.array(t.types.number),startHead:"",endHead:""}).actions(n=>({}))}(Jg)),Jg}var ev={},M_;function bj(){return M_||(M_=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.SVGElement=void 0;const t=ri,r=uu();e.SVGElement=r.Shape.named("SVG").props({type:"svg",src:"",maskSrc:"",cropX:0,cropY:0,cropWidth:1,cropHeight:1,keepRatio:!0,flipX:!1,flipY:!1,width:100,height:100,borderColor:"black",borderSize:0,cornerRadius:0,colorsReplace:t.types.map(t.types.string)}).preProcessSnapshot(n=>Object.assign(Object.assign({},n),{src:n.src||n.svgSource})).actions(n=>({replaceColor(i,a){n.colorsReplace.set(i,a)}}))}(ev)),ev}var tv={},L_;function _j(){return L_||(L_=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.FigureElement=void 0;const t=ri,r=uu();e.FigureElement=r.Shape.named("Figure").props({type:"figure",subType:"rect",fill:"rgb(0, 161, 255)",dash:t.types.array(t.types.number),strokeWidth:0,stroke:"rgba(98, 197, 255, 1)",cornerRadius:0})}(tv)),tv}var N_;function Lc(){return N_||(N_=1,function(e){var t=ye&&ye.__rest||function(v,g){var y={};for(var d in v)Object.prototype.hasOwnProperty.call(v,d)&&g.indexOf(d)<0&&(y[d]=v[d]);if(v!=null&&typeof Object.getOwnPropertySymbols=="function"){var m=0;for(d=Object.getOwnPropertySymbols(v);m<d.length;m++)g.indexOf(d[m])<0&&Object.prototype.propertyIsEnumerable.call(v,d[m])&&(y[d[m]]=v[d[m]])}return y};Object.defineProperty(e,"__esModule",{value:!0}),e.registerShapeModel=e.TYPES_MAP=e.GroupElement=e.ElementTypes=e.forEveryChild=void 0;const r=ri,n=t0,i=TS(),a=uu(),o=vj(),l=RS(),u=mj(),f=yj(),h=bj(),O=_j(),w=(v,g)=>{if(v.children)for(const y of v.children){if(g(y)===!0)break;(0,e.forEveryChild)(y,g)}};e.forEveryChild=w;const b=[...new Array(20)].map((v,g)=>r.types.late(()=>E[g]));e.ElementTypes=r.types.union({dispatcher:v=>{const g=e.TYPES_MAP[v.type];if(!g)throw new Error(`Unknown element type: "${v.type}"`);return g}},h.SVGElement,o.TextElement,l.ImageElement,f.LineElement,u.VideoElement,O.FigureElement,r.types.late(()=>e.GroupElement),...b),e.GroupElement=i.Node.named("Group").props({type:"group",children:r.types.array(e.ElementTypes)}).views(v=>({get draggable(){let g=!0;return(0,e.forEveryChild)(v,y=>{y.draggable||(g=!1)}),g},get resizable(){let g=!0;return(0,e.forEveryChild)(v,y=>{y.resizable||(g=!1)}),g},get contentEditable(){let g=!0;return(0,e.forEveryChild)(v,y=>{y.contentEditable||(g=!1)}),g},get styleEditable(){let g=!0;return(0,e.forEveryChild)(v,y=>{y.styleEditable||(g=!1)}),g},get locked(){let g=!0;return(0,e.forEveryChild)(v,y=>{y.locked||(g=!1)}),g}})).actions(v=>({set(g){var{draggable:y,contentEditable:d,styleEditable:m,resizable:_}=g,k=t(g,["draggable","contentEditable","styleEditable","resizable"]);y!==void 0&&(0,e.forEveryChild)(v,x=>{x.set({draggable:y})}),d!==void 0&&(0,e.forEveryChild)(v,x=>{x.set({contentEditable:d})}),m!==void 0&&(0,e.forEveryChild)(v,x=>{x.set({styleEditable:m})}),_!==void 0&&(0,e.forEveryChild)(v,x=>{x.set({resizable:_})}),Object.assign(v,k)},addElement(g,{skipSelect:y=!1}={}){const d=e.TYPES_MAP[g.type];if(!d)return void console.error("Can not find model with type "+g.type);g.children&&g.children.forEach(_=>{_.id=(0,n.nanoid)(10)});const m=d.create(Object.assign({id:(0,n.nanoid)(10)},g));return v.children.push(m),m.selectable&&!y&&v.store.selectElements([m.id]),m},setElementZIndex(g,y){const d=v.children.find(m=>m.id===g);d&&((0,r.detach)(d),v.children.remove(d),v.children.splice(y,0,d))}}));const E=[];function p(v,g){const y=v.type;if(!y)throw new Error('You must pass "type" attribute to custom model.');let d=a.Shape.named(y).props(v);g&&(d=g(d)),e.TYPES_MAP[y]=d,E.push(d)}e.TYPES_MAP={svg:h.SVGElement,text:o.TextElement,image:l.ImageElement,group:e.GroupElement,line:f.LineElement,video:u.VideoElement,figure:O.FigureElement},e.registerShapeModel=p}(Vg)),Vg}(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.handleHotkey=void 0;const t=Lc();let r=[],n="";const i="polotno_clipboard",a=u=>{r=JSON.parse(JSON.stringify(u));try{localStorage.setItem(i,JSON.stringify(u))}catch{}},o=()=>{try{const u=localStorage.getItem(i);if(u)return JSON.parse(u)}catch{}return r};function l(u,f){var h,O,w,b,E,p,v,g;if(((h=document.activeElement)===null||h===void 0?void 0:h.tagName)==="INPUT"||((O=document.activeElement)===null||O===void 0?void 0:O.tagName)==="TEXTAREA"||((w=document.activeElement)===null||w===void 0?void 0:w.contentEditable)==="true")return;const y=f.selectedElements.filter(k=>k.removable),d=y.map(k=>k.id);u.keyCode!==46&&u.keyCode!==8||f.deleteElements(d);const m=u.ctrlKey||u.metaKey,_=u.shiftKey;if(m&&!_&&u.code==="KeyZ"&&(u.preventDefault(),f.history.undo()),m&&_&&u.code==="KeyZ"&&(u.preventDefault(),f.history.redo()),m&&u.code==="KeyA"){u.preventDefault();const k=(b=f.activePage)===null||b===void 0?void 0:b.children.filter(A=>A.selectable),x=(k==null?void 0:k.map(A=>A.id))||[];f.selectElements(x)}if(m&&u.code==="KeyC"&&(u.preventDefault(),n=(E=f.activePage)===null||E===void 0?void 0:E.id,a(f.selectedElements.map(k=>k.toJSON()))),m&&u.code==="KeyX"&&(u.preventDefault(),n=(p=f.activePage)===null||p===void 0?void 0:p.id,a(f.selectedElements.map(k=>k.toJSON())),f.deleteElements(y)),m&&u.code==="KeyV"){u.preventDefault();let k=0;n===((v=f.activePage)===null||v===void 0?void 0:v.id)&&(k=f.width/20),n=(g=f.activePage)===null||g===void 0?void 0:g.id,f.history.transaction(()=>{const x=[],A=o();(0,t.forEveryChild)({children:A},S=>{delete S.id,S.type!=="group"&&(S.x+=k,S.y+=k)}),A.forEach(S=>{var P;const C=(P=f.activePage)===null||P===void 0?void 0:P.addElement(S);C&&x.push(C.id)}),a(A),f.selectElements(x)})}u.code==="ArrowDown"&&(u.preventDefault(),f.selectedElements.forEach(k=>{k.set({y:k.y+1})})),u.code==="ArrowUp"&&(u.preventDefault(),f.selectedElements.forEach(k=>{k.set({y:k.y-1})})),u.code==="ArrowLeft"&&(u.preventDefault(),f.selectedElements.forEach(k=>{k.set({x:k.x-1})})),u.code==="ArrowRight"&&(u.preventDefault(),f.selectedElements.forEach(k=>{k.set({x:k.x+1})}))}e.handleHotkey=l})(mS);var MS={};(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.t=e.getTranslations=e.setTranslations=void 0;const t=Ji,r=(0,t.observable)({toolbar:{duration:"Duration",opacity:"Opacity",effects:"Effects",blur:"Blur",textBackground:"Background",backgroundCornerRadius:"Corner radius",backgroundOpacity:"Opacity",backgroundPadding:"Padding",brightness:"Brightness",sepia:"Sepia",grayscale:"Grayscale",textStroke:"Text Stroke",shadow:"Shadow",border:"Border",cornerRadius:"Corner Radius",position:"Position",layering:"Layering",toForward:"To forward",up:"Up",down:"Down",toBottom:"To bottom",alignLeft:"Align left",alignCenter:"Align center",alignRight:"Align right",alignTop:"Align top",alignMiddle:"Align middle",alignBottom:"Align bottom",flip:"Flip",flipHorizontally:"Flip horizontally",flipVertically:"Flip vertically",fitToBackground:"Fit to page",removeBackground:"Remove background",removeBackgroundTitle:"Remove background from image",cancelRemoveBackground:"Cancel",confirmRemoveBackground:"Confirm",crop:"Crop",cropDone:"Done",cropCancel:"Cancel",clip:"Apply mask",removeClip:"Remove mask",removeMask:"Remove mask",transparency:"Transparency",lockedDescription:"Object is locked. Unlock it to allow changes from canvas.",unlockedDescription:"Object is unlocked. Lock it to prevent changes from canvas.",removeElements:"Remove elements",duplicateElements:"Duplicate elements",download:"Download",saveAsImage:"Save as image",saveAsPDF:"Save as PDF",lineHeight:"Line height",letterSpacing:"Letter spacing",offsetX:"Offset X",offsetY:"Offset Y",color:"Color",selectable:"Selectable",draggable:"Draggable",removable:"Removable",resizable:"Resizable",contentEditable:"Can change content",styleEditable:"Can change style",alwaysOnTop:"Always on top",showInExport:"Show in export",ungroupElements:"Ungroup",groupElements:"Group",lineSize:"Line size",fade:"Fade",move:"Move",zoom:"Zoom",animate:"Animate",rotate:"Rotate",none:"None",bounce:"Bounce",blink:"Blink",spaceEvenly:"Space evenly",horizontalDistribution:"Horizontally",verticalDistribution:"Vertically",strokeWidth:"Stroke Width",colorPicker:{solid:"Solid",linear:"Linear"}},workspace:{noPages:"There are no pages yet...",addPage:"Add page",removePage:"Remove page",duplicatePage:"Duplicate page",moveUp:"Move up",moveDown:"Move down"},scale:{reset:"Reset"},error:{removeBackground:"Ops! Something went wrong. Background can not be removed."},sidePanel:{templates:"Templates",searchTemplatesWithSameSize:"Show templates with the same size",searchPlaceholder:"Search...",otherFormats:"Other formats",noResults:"No results",error:"Loading is failed...",text:"Text",uploadFont:"Upload font",myFonts:"My fonts",photos:"Photos",videos:"Videos",animations:"Animations",effects:"Effects",elements:"Elements",shapes:"Shapes",lines:"Lines",upload:"Upload",uploadImage:"Upload Image",uploadTip:"Do you want to upload your own images?",background:"Background",resize:"Resize",layers:"Layers",layerTypes:{image:"Image",text:"Text",svg:"SVG",line:"Line",figure:"Figure",group:"Group"},layersTip:"Elements on your active page:",noLayers:"No elements on the page...",namePlaceholder:"Type element name...",useMagicResize:"Use magic resize",clipImage:"Mask image",width:"Width",height:"Height",magicResizeDescription:"Magic resize will automatically resize and move all elements on the canvas",headerText:"Header",createHeader:"Create header",subHeaderText:"Sub Header",createSubHeader:"Create sub header",bodyText:"Body text",createBody:"Create body text"},pagesTimeline:{pages:"Pages",removePage:"Remove page",addPage:"Add page",duplicatePage:"Duplicate page",removeAudio:"Remove audio"}});function n(h,O){var w,b=O.split("."),E=h;for(w=0;w<b.length;++w){if(E[b[w]]==null)return;E=E[b[w]]}return E}const i=h=>h&&typeof h=="object";function a(h,O){Object.keys(O).forEach(w=>{const b=h[w],E=O[w];i(E)&&i(b)?a(b,E):h[w]=E})}function o(h,O,w=""){Object.keys(O).forEach(b=>{const E=O[b],p=w?`${w}.${b}`:b;i(E)?i(h[b])?o(h[b],E,p):console.warn(`Missing nested translation object at '${p}'`):h[b]===void 0&&console.warn(`Missing translation '${p}'`)})}e.setTranslations=(0,t.action)((h,{validate:O=!1}={})=>{O&&o(h,r),a(r,h)});const l=()=>(0,t.toJS)(r);e.getTranslations=l;const u={},f=h=>{const O=n(r,h);if(O!==void 0)return O;u[h]||(u[h]=!0,console.warn(`Missing translation '${h}'`));const w=h.split("."),b=w[w.length-1]||" ";return b.charAt(0).toUpperCase()+b.slice(1)};e.t=f})(MS);(function(e){var t=ye&&ye.__importDefault||function(p){return p&&p.__esModule?p:{default:p}};Object.defineProperty(e,"__esModule",{value:!0}),e.WorkspaceCanvas=void 0;const r=t(et),n=ti,i=t(r9),a=gS,o=vS,l=mS,u=MS,f=`Polotno warning: <Workspace /> component can not automatically detect its size.
295
+ `};async function A({json:S,elementHook:P}){const C=await _({json:S,elementHook:P});return x({dom:C})}e.jsonToSVG=A})(xS);var Kg={},O_;function CS(){return O_||(O_=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Page=void 0;const t=ri,r=t0,n=Lc(),i=P2(),a=Lc(),o=su;e.Page=t.types.model("Page",{id:t.types.identifier,children:t.types.array(t.types.late(()=>n.ElementTypes)),width:t.types.optional(t.types.union(t.types.number,t.types.literal("auto")),"auto"),height:t.types.optional(t.types.union(t.types.number,t.types.literal("auto")),"auto"),background:"white",bleed:0,custom:t.types.frozen(),duration:5e3,_exporting:!1,_rendering:!1}).postProcessSnapshot(l=>{const u=Object.assign({},l),f={};for(var h in u)h[0]!=="_"&&(f[h]=l[h]);return f}).views(l=>({get store(){return(0,t.getParentOfType)(l,i.Store)}})).views(l=>({get startTime(){let u=0;for(const f of l.store.pages){if(f.id===l.id)return u;u+=f.duration}return u},get _exportingOrRendering(){return l._exporting||l._rendering}})).views(l=>({get computedWidth(){return l.width==="auto"?l.store.width:l.width},get computedHeight(){return l.height==="auto"?l.store.height:l.height}})).actions(l=>({toJSON:()=>JSON.parse(JSON.stringify((0,t.getSnapshot)(l))),_forEachElementUp(u,f){const h=u.map(O=>({id:O,index:l.children.findIndex(w=>w.id===O)}));h.sort((O,w)=>w.index-O.index);for(const{index:O}of h){if(O==-1)continue;const w=O<l.children.length-1&&l.children[O+1],b=u.indexOf(w==null?void 0:w.id)>=0;O===l.children.length-1||b||f(O)}},_forEachElementDown(u,f){const h=u.map(O=>({id:O,index:l.children.findIndex(w=>w.id===O)}));h.sort((O,w)=>O.index-w.index);for(const{index:O}of h){if(O==-1)continue;const w=O>0&&l.children[O-1],b=u.indexOf(w==null?void 0:w.id)>=0;O===0||b||f(O)}return!1}})).actions(l=>({clone(u={}){const f=l.toJSON();f.children.forEach(b=>{b.id=(0,r.nanoid)(10),(0,a.forEveryChild)(b,E=>{E.id=(0,r.nanoid)(10)})});const h=Object.assign(Object.assign(Object.assign({},f),{id:(0,r.nanoid)(10)}),u),O=l.store.addPage(h),w=l.store.pages.indexOf(l);O.setZIndex(w+1),O.select()},setZIndex(u){l.store.setPageZIndex(l.id,u)},set(u){Object.assign(l,u)},select(){l.store.selectPage(l.id)},addElement(u,{skipSelect:f=!1}={}){const h=a.TYPES_MAP[u.type];if(!h)return void console.error("Can not find model with type "+u.type);u.children&&u.children.forEach(w=>{w.id=(0,r.nanoid)(10)});const O=h.create(Object.assign({id:(0,r.nanoid)(10)},u));return l.children.push(O),O.selectable&&!f&&l.store.selectElements([O.id]),O},canMoveElementsUp(u){let f=!1;return l._forEachElementUp(u,()=>{f=f||!0}),f},moveElementsUp(u){l._forEachElementUp(u,f=>{const h=l.children[f];(0,t.detach)(h),l.children.splice(f+1,0,h)})},canMoveElementsTop(u){return this.canMoveElementsUp(u)},moveElementsTop(u){const f=[],h=[];l.children.forEach(O=>{u.indexOf(O.id)>=0?f.push(O):h.push(O)}),l.children.replace(h.concat(f))},canMoveElementsDown(u){let f=!1;return l._forEachElementDown(u,()=>{f=f||!0}),f},moveElementsDown(u){l._forEachElementDown(u,f=>{const h=l.children[f];(0,t.detach)(h),l.children.splice(f-1,0,h)})},canMoveElementsBottom(u){return this.canMoveElementsDown(u)},moveElementsBottom(u){const f=[],h=[];l.children.forEach(O=>{u.indexOf(O.id)>=0?f.push(O):h.push(O)}),l.children.replace(f.concat(h))},setElementZIndex(u,f){const h=l.children.find(O=>O.id===u);h&&((0,t.detach)(h),l.children.remove(h),l.children.splice(f,0,h))},setSize({width:u,height:f,useMagic:h,softChange:O}){if(h){const w=[],b=N=>N.type==="image"&&N.x<1&&N.y<1&&N.width>=l.computedWidth-2&&N.height>=l.computedHeight-2;(0,a.forEveryChild)(l,N=>{N.type!=="group"&&(b(N)||w.push(N))});const E=w.length?(0,o.getTotalClientRect)(w):{x:0,y:0,width:l.computedWidth,height:l.computedHeight},p=1/4,v=Math.max(0,Math.min(E.x,l.computedWidth-E.x-E.width)),g=l.computedWidth*p,y=Math.max(0,v-g),d=Math.max(0,Math.min(E.y,l.computedHeight-E.y-E.height)),m=l.computedHeight*p,_=Math.max(0,d-m),k=l.computedWidth-2*y,x=l.computedHeight-2*_,A=u/k,S=f/x,P=Math.min(A,S),C=(u-k*P)/2-y*P,R=(f-x*P)/2-_*P;(0,a.forEveryChild)(l,N=>{N.type!=="group"&&(b(N)?N.set({x:N.x*P,y:N.y*P,width:N.width*A,height:N.height*S,cropX:0,cropY:0,cropWidth:1,cropHeight:1}):(N.set({x:C+N.x*P,y:R+N.y*P,width:N.width*P,height:N.height*P}),N.type==="text"?N.set({fontSize:N.fontSize*P}):N.type==="figure"&&N.set({strokeWidth:N.strokeWidth*P})))})}O||(l.width=u),O||(l.height=f)}})).actions(l=>({moveElementUp(u){console.warn("page.moveElementUp(id) is deprecated. Please use page.moveElementsUp([id1, id2]) instead."),l.moveElementsUp([u])},moveElementDown(u){console.warn("page.moveElementDown(id) is deprecated. Please use page.moveElementsDown([id1, id2]) instead."),l.moveElementsDown([u])},moveElementTop(u){console.warn("page.moveElementTop(id) is deprecated. Please use page.moveElementsTop([id1, id2]) instead."),l.moveElementsTop([u])},moveElementBottom(u){console.warn("page.moveElementBottom(id) is deprecated. Please use page.moveElementsBottom([id1, id2]) instead."),l.moveElementsBottom([u])},play(){l.store.play({startTime:l.startTime,endTime:l.startTime+l.duration})}}))}(Kg)),Kg}var kS={};(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Audio=void 0;const t=ri;e.Audio=t.types.model("Audio",{id:t.types.identifier,src:"",duration:0,startTime:0,endTime:1,volume:1,delay:0}).actions(r=>({toJSON:()=>Object.assign({},(0,t.getSnapshot)(r))})).actions(r=>({set(n){Object.assign(r,n)}}))})(kS);var P_;function P2(){return P_||(P_=1,function(e){var t=ye&&ye.__createBinding||(Object.create?function(S,P,C,R){R===void 0&&(R=C);var N=Object.getOwnPropertyDescriptor(P,C);N&&!("get"in N?!P.__esModule:N.writable||N.configurable)||(N={enumerable:!0,get:function(){return P[C]}}),Object.defineProperty(S,R,N)}:function(S,P,C,R){R===void 0&&(R=C),S[R]=P[C]}),r=ye&&ye.__setModuleDefault||(Object.create?function(S,P){Object.defineProperty(S,"default",{enumerable:!0,value:P})}:function(S,P){S.default=P}),n=ye&&ye.__importStar||function(S){if(S&&S.__esModule)return S;var P={};if(S!=null)for(var C in S)C!=="default"&&Object.prototype.hasOwnProperty.call(S,C)&&t(P,S,C);return r(P,S),P},i=ye&&ye.__rest||function(S,P){var C={};for(var R in S)Object.prototype.hasOwnProperty.call(S,R)&&P.indexOf(R)<0&&(C[R]=S[R]);if(S!=null&&typeof Object.getOwnPropertySymbols=="function"){var N=0;for(R=Object.getOwnPropertySymbols(S);N<R.length;N++)P.indexOf(R[N])<0&&Object.prototype.propertyIsEnumerable.call(S,R[N])&&(C[R[N]]=S[R[N]])}return C},a=ye&&ye.__importDefault||function(S){return S&&S.__esModule?S:{default:S}};Object.defineProperty(e,"__esModule",{value:!0}),e.createStore=e.Store=e.Font=void 0;const o=ri,l=_S,u=t0,f=a(Ci),h=wS,O=SS,w=ES,b=E2(),E=n(iu),p=Yi,v=e0,g=O2,y=OS,d=PS,m=xS,_=CS(),k=Lc(),x=kS;function A({key:S,showCredit:P}={key:"",showCredit:!1}){const C=e.Store.create();return(0,b.validateKey)(S,P),C}(0,o.setLivelinessChecking)("ignore"),e.Font=o.types.model("Font",{fontFamily:o.types.string,url:o.types.optional(o.types.string,""),styles:o.types.frozen()}).preProcessSnapshot(S=>Object.assign(Object.assign({},S),{fontFamily:S.fontFamily||S.name})),e.Store=o.types.model("Store",{role:"",pages:o.types.array(_.Page),fonts:o.types.array(e.Font),audios:o.types.array(x.Audio),width:1080,height:1080,currentTime:0,isPlaying:!1,scale:1,scaleToFit:1,unit:"px",dpi:72,bleedVisible:!1,rulesVisible:!1,openedSidePanel:"",previousOpenedSidePanel:"",custom:o.types.frozen(),selectedElementsIds:o.types.array(o.types.string),animatedElementsIds:o.types.array(o.types.string),history:o.types.optional(l.UndoManager,{targetPath:"../pages"}),_elementsPixelRatio:Math.min(2,window.devicePixelRatio||1),_activePageId:""}).views(S=>({get _bleedVisible(){return console.warn("store._bleedVisible is deprecated. Please use store.bleedVisible instead."),S.bleedVisible},get selectedElements(){return S.selectedElementsIds.map(P=>{for(const C of S.pages)for(const R of C.children)if(R.id===P)return R}).filter(P=>!!P)},get children(){return S.pages},get selectedShapes(){const P=[];return(0,k.forEveryChild)({children:S.selectedElements},C=>{C.type!=="group"&&P.push(C)}),P},get activePage(){return S.pages.slice().find(P=>P.id===S._activePageId)||(S.pages.length?S.pages[0]:null)},get duration(){let P=0;return S.pages.forEach(C=>{P+=C.duration}),P},get _hasCroppedImages(){return S.find(P=>P.type==="image"&&P._cropModeEnabled)},find(P){let C;return(0,k.forEveryChild)({children:S.pages},R=>{if(!C&&P(R))return C=R,!0}),C},getElementById:P=>S.find(C=>C.id===P)})).actions(S=>{let P=0,C=null,R=!1;return{afterCreate(){S.history.canUndo},setCurrentTime(N){S.currentTime=N},play({animatedElementsIds:N=[],startTime:U=0,currentTime:G=0,endTime:Z=S.duration,repeat:W=!1}={}){G&&(console.warn("currentTime property of store.play() is deprecated. Please use startTime instead."),U=G),S.animatedElementsIds=(0,o.cast)(N),S.currentTime=U,S.isPlaying=!0,P=Date.now(),C=Z,R=W,requestAnimationFrame(S.seek)},checkActivePage(){let N=0;for(const U of S.pages){if(S.currentTime>=U.startTime&&S.currentTime<U.startTime+U.duration){S.selectPage(U.id);break}N+=U.duration}},seek(){if(!S.isPlaying)return;const N=Date.now(),U=N-P;P=N,S.currentTime+=U,S.checkActivePage();const G=C||S.duration;S.isPlaying&&S.currentTime<G?requestAnimationFrame(S.seek):S.isPlaying&&R?(S.currentTime=0,requestAnimationFrame(S.seek)):S.stop()},stop(){S.isPlaying=!1,S.currentTime=0,S.animatedElementsIds=(0,o.cast)([]),S.checkActivePage()}}}).actions(S=>({set(P){Object.assign(S,P)},setUnit({unit:P,dpi:C}){S.unit=P||S.unit,S.dpi=C||S.dpi},setRole(P){S.role=P},addPage(P){const C=_.Page.create(Object.assign({id:(0,u.nanoid)(10)},P));return S.pages.push(C),S._activePageId=C.id,C},selectPage(P){S._activePageId=P},selectElements(P){const C=P.map(R=>S.getElementById(R)).sort((R,N)=>R.page.children.indexOf(R)-R.page.children.indexOf(N)).filter(R=>!!R).map(R=>R.id);S.selectedElementsIds=(0,o.cast)(C)},toggleBleed(P){S.bleedVisible=P??!S.bleedVisible},toggleRulers(P){S.rulesVisible=P??!S.rulesVisible},openSidePanel(P){S.openedSidePanel!==P&&(S.previousOpenedSidePanel=S.openedSidePanel,S.openedSidePanel=P)},setScale(P){S.scale=P},_setScaleToFit(P){S.scaleToFit=P},setElementsPixelRatio(P){S._elementsPixelRatio=P},setSize(P,C,R){S.pages.forEach(N=>{N.setSize({width:P,height:C,useMagic:R,softChange:!0})}),S.width=P,S.height=C},setPageZIndex(P,C){const R=S.pages.find(N=>N.id===P);R&&((0,o.detach)(R),S.pages.remove(R),S.pages.splice(C,0,R))},deletePages(P){const C=S.pages.indexOf(S.activePage);P.forEach(U=>{const G=S.pages.find(Z=>Z.id===U);(0,o.destroy)(G)});const R=Math.min(S.pages.length-1,C),N=S.pages[R];N&&(S._activePageId=N.id),S.selectedElementsIds=(0,o.cast)(S.selectedElementsIds.filter(U=>S.getElementById(U)))},groupElements(P){const C=P.map(U=>S.getElementById(U));C.forEach(U=>{U&&(0,o.detach)(U)});const R=S.activePage,N={id:(0,u.nanoid)(10),children:C,type:"group"};return R.children.push(N),S.selectedElementsIds=(0,o.cast)([N.id]),N},ungroupElements(P){const C=P.map(N=>S.getElementById(N)),R=[];C.forEach(N=>{if(N&&N.type==="group"){const U=N.page,G=U.children.indexOf(N);N.children.forEach(Z=>{R.push(Z.id)}),N.children.forEach(Z=>{(0,o.detach)(Z),U.children.push(Z)}),U.children.splice(G,1)}}),S.selectedElementsIds=(0,o.cast)(R)},deleteElements(P){const C=[];S.find(R=>(P.includes(R.id)&&C.push(R),!1)),C.forEach(R=>{(0,o.destroy)(R)}),S.selectedElementsIds=(0,o.cast)(S.selectedElementsIds.filter(R=>S.getElementById(R)))},on(P,C){if(P==="change"){let R=S.toJSON();return(0,o.onSnapshot)(S,N=>{const U=S.toJSON();!(0,g.deepEqual)(R,U)&&(R=U,C(U))})}},async _toCanvas({pixelRatio:P,ignoreBackground:C,pageId:R,mimeType:N,includeBleed:U,_skipTimeout:G}={}){var Z;const W=P||1;R=R||((Z=S.pages[0])===null||Z===void 0?void 0:Z.id);const H=S.pages.find(ie=>ie.id===R);if(!H)throw new Error(`No page for export with id ${R}`);H==null||H.set({_exporting:!0});const M=await(0,y.waitTillAvailable)(()=>f.default.stages.find(ie=>ie.getAttr("pageId")===R));if(!M)throw new Error(`Export is failed. Can not find stage for page ${R}. Looks like <Workspace /> component is not mounted, but it is required in order to process the export.`);const L=!!M.findOne(".page-container"),D=S._elementsPixelRatio;W>S._elementsPixelRatio&&S.setElementsPixelRatio(W),await S.waitLoading({_skipTimeout:G});const B=M.findOne(".page-container");if(!B)throw S.setElementsPixelRatio(D),new Error(`Export is failed. Can't find page container. ${L}`);M.find("Transformer").forEach(ie=>ie.visible(!1)),B.find(".page-background").forEach(ie=>ie.shadowEnabled(!1)),B.find(".page-background").forEach(ie=>ie.strokeEnabled(!1)),B.find(".highlighter").forEach(ie=>ie.visible(!1));const q=B.findOne(".page-background-group"),K=q.clip();q.clip({x:null,y:null,width:null,height:null});const F=B.findOne(".elements-container"),$=F.clip();F.clip({x:null,y:null,width:null,height:null});const z=B.find(ie=>ie.getAttr("hideInExport"));z.forEach(ie=>{ie.setAttr("oldVisible",ie.visible()),ie.hide()});const Y=B.find(ie=>!ie.visible()&&ie.getAttr("editModeEnabled"));Y.forEach(ie=>{ie.setAttr("oldVisible",ie.visible()),ie.show()}),C&&B.find(".page-background").forEach(ie=>ie.hide());const X=U?H.bleed:0;let Q=X;!S.bleedVisible&&U||(S.bleedVisible||U?S.bleedVisible&&U?Q=0:S.bleedVisible&&!U&&(Q=-H.bleed):Q=0);const J=document.createElement("canvas");J.width=Math.round((H.computedWidth+2*X)*W),J.height=Math.round((H.computedHeight+2*X)*W);const re=J.getContext("2d");N==="image/jpeg"&&(re.fillStyle="white",re.fillRect(0,0,J.width,J.height));const oe=B.scale();B.scale({x:1,y:1});const ae=B.toCanvas({x:B.x()-Q,y:B.y()-Q,width:H.computedWidth+2*X,height:H.computedHeight+2*X,pixelRatio:W});return B.scale(oe),re.drawImage(ae,0,0,J.width,J.height),f.default.Util.releaseCanvas(ae),C&&B.find(".page-background").forEach(ie=>ie.show()),z.forEach(ie=>{ie.visible(ie.getAttr("oldVisible"))}),Y.forEach(ie=>{ie.visible(ie.getAttr("oldVisible"))}),B.find(".page-background").forEach(ie=>ie.shadowEnabled(!0)),B.find(".page-background").forEach(ie=>ie.strokeEnabled(!0)),M.find("Transformer").forEach(ie=>ie.visible(!0)),B.find(".highlighter").forEach(ie=>ie.visible(!0)),q.clip(K),F.clip($),S.setElementsPixelRatio(D),H==null||H.set({_exporting:!1}),J},async toDataURL(P={}){var{mimeType:C,quality:R}=P,N=i(P,["mimeType","quality"]);const U=await S._toCanvas(Object.assign({mimeType:C},N)),G=U.toDataURL(C,R);return f.default.Util.releaseCanvas(U),G},async toBlob(P={}){var{mimeType:C,quality:R}=P,N=i(P,["mimeType","quality"]);const U=await S._toCanvas(Object.assign({mimeType:C},N)),G=new Promise(Z=>{U.toBlob(Z,C,R)});return f.default.Util.releaseCanvas(U),G},async saveAsImage(P={}){var{fileName:C}=P,R=i(P,["fileName"]);const N=R.mimeType||"image/png",U=N.split("/")[1];(0,h.downloadFile)(await S.toDataURL(R),C||"polotno."+U,N)},async _toPDF(P){const C=P.dpi||S.dpi,R=P.parallel||1,N=P.unit||(S.unit==="px"?"mm":S.unit),U=P.pixelRatio||1,G=P.pageIds||S.pages.map(z=>z.id),Z=S.pages.filter(z=>G.includes(z.id)),W=await(0,O.getJsPDF)(),H=z=>(0,v.pxToUnit)({px:z,unit:N,dpi:C}),M=H(P.cropMarkSize||0),L=Z[0]||{},D=P.includeBleed?L.bleed:0,B=H(L.computedWidth+2*D)+2*M,q=H(L.computedHeight+2*D)+2*M;var K=new W({unit:N,orientation:B>q?"landscape":"portrait",format:[B,q],compress:!0,putOnlyUsedFonts:!0});K.deletePage(1);const F=((z,Y)=>{for(var X=[],Q=0;Q<z.length;Q+=Y)X.push(z.slice(Q,Q+Y));return X})(Z,R);let $=0;for(const z of F){const Y=z.map(async X=>{const Q=P.includeBleed?X.bleed:0,J=H(X.computedWidth+2*Q)+2*M,re=H(X.computedHeight+2*Q)+2*M;let oe=0,ae=U;for(;oe<10;){oe+=1,oe===2&&console.error("Polotno can not export PDF with current settings. Quality is automatically reduced.");const ie=await S.toDataURL(Object.assign(Object.assign({},P),{pageId:X.id,pixelRatio:ae}));if(ie.length>20)return P.onProgress&&P.onProgress(++$/G.length*.9),{url:ie,width:J,height:re};ae*=.8}});(await Promise.all(Y)).forEach(({url:X,width:Q,height:J})=>{K.addPage([Q,J],Q>J?"landscape":"portrait"),M&&(K.setLineWidth(H(1)),K.line(2*M,0,2*M,M),K.line(0,2*M,M,2*M),K.line(Q-2*M,0,Q-2*M,M),K.line(Q,2*M,Q-M,2*M),K.line(0,J-2*M,M,J-2*M),K.line(2*M,J,2*M,J-M),K.line(Q,J-2*M,Q-M,J-2*M),K.line(Q-2*M,J,Q-2*M,J-M)),K.addImage(X,M,M,Q-2*M,J-2*M,void 0,"FAST")})}return K},toPDFDataURL:async P=>(await S._toPDF(Object.assign({mimeType:"image/jpeg"},P))).output("datauristring"),async toGIFDataURL(P={}){const C=P.pixelRatio||1,R=await(0,w.createGIF)({width:S.width*C,height:S.height*C}),N=1e3/(P.fps||10),U=S.duration/N;for(let G=0;G<U-1;G++){const Z=G*N||1;S.setCurrentTime(Z);let W=0,H="";for(const L of S.pages)if(W+=L.duration,L.set({_rendering:W>Z}),W>Z){H=L.id;break}const M=await S._toCanvas({pixelRatio:C,pageId:H,_skipTimeout:!0});R.addFrame(M.getContext("2d"),{delay:N,copy:!0})}for(const G of S.pages)G.set({_rendering:!1});return S.stop(),R.render(),new Promise(G=>{R.on("finished",function(Z){(function(W,H){var M=new FileReader;M.onload=function(L){H(L.target.result)},M.readAsDataURL(W)})(Z,G)})})},async saveAsGIF(P={}){var{fileName:C}=P,R=i(P,["fileName"]);const N=await S.toGIFDataURL(R);(0,h.downloadFile)(N,C||"polotno.gif")},async toHTML({elementHook:P}={elementHook:void 0}){const C=S.toJSON();return(0,d.jsonToHTML)({json:C,elementHook:P})},async saveAsHTML({fileName:P}={}){const C=await S.toHTML(),R="data:text/html;base64,"+window.btoa(unescape(encodeURIComponent(C)));(0,h.downloadFile)(R,P||"polotno.html")},async toSVG({elementHook:P}={elementHook:void 0}){const C=S.toJSON();return(0,m.jsonToSVG)({json:C,elementHook:P})},async saveAsSVG({fileName:P,elementHook:C}={}){const R=await S.toSVG({elementHook:C}),N="data:text/svg;base64,"+window.btoa(unescape(encodeURIComponent(R)));(0,h.downloadFile)(N,P||"polotno.svg")},async saveAsPDF(P={}){var{fileName:C}=P,R=i(P,["fileName"]);(await S._toPDF(Object.assign({mimeType:"image/jpeg"},R))).save(C||"polotno.pdf")},async waitLoading({_skipTimeout:P=!1}={}){P||await new Promise(C=>setTimeout(C,50)),await(0,p.whenLoaded)()},toJSON:()=>({width:S.width,height:S.height,fonts:(0,o.getSnapshot)(S.fonts),pages:(0,o.getSnapshot)(S.pages),audios:(0,o.getSnapshot)(S.audios),unit:S.unit,dpi:S.dpi,custom:S.custom}),loadJSON(P,C=!1){var R;const N=Object.assign({},P),U=S.pages.indexOf(S.activePage);let G=(R=N.pages[U]||N.pages[0])===null||R===void 0?void 0:R.id;N._activePageId=G;const Z=Object.assign({},(0,o.getSnapshot)(S));Object.assign(Z,N),Z.history=C?S.history.toJSON():{history:[],undoIdx:-1},(0,o.applySnapshot)(S,Z)},clear({keepHistory:P=!1}={}){const C=S.pages.map(R=>R.id);S.deletePages(C),P||S.history.clear()},addFont(P){S.removeFont(P.fontFamily),S.fonts.push(P),S.loadFont(P.fontFamily)},removeFont(P){S.fonts.filter(C=>C.fontFamily===P).forEach(C=>(0,o.destroy)(C))},addAudio(P){const C=x.Audio.create(Object.assign({id:(0,u.nanoid)(10)},P));S.audios.push(C)},removeAudio(P){const C=S.audios.find(R=>R.id===P);C&&S.audios.remove(C)},async loadFont(P){const C=S.fonts.find(N=>N.fontFamily===P)||E.globalFonts.find(N=>N.fontFamily===P);let R=[{fontStyle:"normal",fontWeight:"normal"}];return C?(C.styles&&(R=C.styles.map(N=>({fontStyle:N.fontStyle||"normal",fontWeight:N.fontWeight||"normal"}))),E.injectCustomFont(C)):E.injectGoogleFont(P),Promise.all(R.map(N=>E.loadFont(P,N.fontStyle,N.fontWeight)))},validate:P=>e.Store.validate(P,[{path:"",type:e.Store}]).map(C=>({path:"store"+C.context.map(R=>R.path).join("."),message:C.message}))})),e.createStore=A,e.default=A}(Wg)),Wg}var x_;function TS(){return x_||(x_=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Node=void 0;const t=ri,r=t0,n=P2(),i=CS(),a=Lc();e.Node=t.types.model("Node",{id:t.types.identifier,type:"none",name:"",opacity:1,custom:t.types.frozen(),visible:!0,selectable:!0,removable:!0,alwaysOnTop:!1,showInExport:!0}).preProcessSnapshot(o=>{for(var l in o)o[l]===null&&(o[l]=void 0);return o}).postProcessSnapshot(o=>{const l=Object.assign({},o),u={};for(var f in l)f[0]!=="_"&&(u[f]=o[f]);return u}).views(o=>({get locked(){return!(o.draggable||o.contentEditable||o.styleEditable||o.resizable)},get page(){return(0,t.getParentOfType)(o,i.Page)},get store(){return(0,t.getParentOfType)(o,n.Store)},get top(){let l=o;for(;;){if(!(0,t.hasParentOfType)(l,a.GroupElement))return l;l=(0,t.getParentOfType)(l,a.GroupElement)}},get parent(){return(0,t.hasParentOfType)(o,a.GroupElement)?(0,t.getParentOfType)(o,a.GroupElement):(0,t.hasParentOfType)(o,i.Page)?(0,t.getParentOfType)(o,i.Page):(0,t.hasParentOfType)(o,n.Store)?(0,t.getParentOfType)(o,n.Store):null},get zIndex(){return o.parent.children.indexOf(o)}})).actions(o=>({toJSON:()=>Object.assign({},(0,t.getSnapshot)(o))})).actions(o=>({clone(l={},{skipSelect:u=!1}={}){const f=JSON.parse(JSON.stringify(o.toJSON()));return l.id=l.id||(0,r.nanoid)(10),(0,a.forEveryChild)(f,h=>{h.id=(0,r.nanoid)(10)}),Object.assign(f,l),o.page.addElement(f,{skipSelect:u})},set(l){Object.assign(o,l)},moveUp(){o.page.moveElementsUp([o.id])},moveTop(){o.page.moveElementsTop([o.id])},moveDown(){o.page.moveElementsDown([o.id])},moveBottom(){o.page.moveElementsBottom([o.id])},setZIndex(l){o.parent.setElementZIndex(o.id,l)},beforeDestroy(){}}))}(qg)),qg}var Yg={},AS={};(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.registerAnimation=e.animate=e.animations=void 0;const t=su,r={right:{from:{x:-200},to:{x:0}},left:{from:{x:200},to:{x:0}},up:{from:{y:200},to:{y:0}},down:{from:{y:-200},to:{y:0}},"bottom-right":{from:{x:-200,y:-200},to:{x:0,y:0}},"bottom-left":{from:{x:200,y:-200},to:{x:0,y:0}},"top-right":{from:{x:-200,y:200},to:{x:0,y:0}},"top-left":{from:{x:200,y:200},to:{x:0,y:0}}};e.animations={fade:({dTime:a,element:o,animation:l})=>{const u=a/l.duration;return l.type==="enter"?{opacity:u*o.opacity}:{opacity:(1-u)*o.opacity}},rotate:({dTime:a,element:o,animation:l})=>{const u=a/l.duration*360;return(0,t.rotateAroundCenter)({x:o.x,y:o.y,width:o.width,height:o.height,rotation:o.rotation},u)},blink:({dTime:a,element:o,animation:l})=>{const u=l.duration,f=a%u/(u/2),h=f<=1?f:2-f;return{opacity:o.opacity*h}},bounce:({dTime:a,element:o,animation:l})=>{const u=l.duration,f=u/2,h={},O={x:o.x+o.width/3,y:o.y+o.height/3,width:o.width/3,height:o.height/3,fontSize:o.fontSize/3},w={x:o.x,y:o.y,width:o.width,height:o.height,fontSize:o.fontSize},b=a%u/f,E=b<=1?b:2-b;for(let p in O){const v=O[p],g=w[p]-v;h[p]=v+E*g}return h},move:({dTime:a,element:o,animation:l})=>{const u=r[l.data.direction]||r.right,f={};for(var h in u.from){let O=u.from[h],w=u.to[h];l.type==="exit"&&(O=u.to[h],w=-u.from[h]);const b=o[h]+O,E=o[h]+w-b;f[h]=b+a/l.duration*E}return f},zoom:({dTime:a,element:o,animation:l})=>{const u={},f={x:o.x+o.width/3,y:o.y+o.height/3,width:o.width/3,height:o.height/3,fontSize:o.fontSize/3},h={x:o.x,y:o.y,width:o.width,height:o.height,fontSize:o.fontSize};for(var O in f){let w=f[O],b=h[O];if(l.type==="exit"){const p=w;w=b,b=p}const E=b-w;u[O]=w+a/l.duration*E}return u}};const n=({element:a,dTime:o,animation:l})=>{const u=e.animations[l.name];return u?u({element:a,dTime:o,animation:l}):(console.error("Can not find animation type: "+l.name),{})};e.animate=n;const i=(a,o)=>{};e.registerAnimation=i})(AS);var C_;function uu(){return C_||(C_=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.Shape=e.Animation=void 0;const t=ri,r=AS,n=Ji,i=TS();e.Animation=t.types.model("Animation",{delay:0,duration:500,enabled:!0,type:t.types.enumeration("Type",["enter","exit","loop"]),name:"none",data:t.types.frozen({})}),e.Shape=i.Node.named("Shape").props({x:0,y:0,width:100,height:100,rotation:0,opacity:1,animations:t.types.array(e.Animation),blurEnabled:!1,blurRadius:10,brightnessEnabled:!1,brightness:0,sepiaEnabled:!1,grayscaleEnabled:!1,shadowEnabled:!1,shadowBlur:5,shadowOffsetX:0,shadowOffsetY:0,shadowColor:"black",shadowOpacity:1,visible:!0,draggable:!0,resizable:!0,selectable:!0,contentEditable:!0,styleEditable:!0,alwaysOnTop:!1,showInExport:!0}).preProcessSnapshot(a=>{const o=Object.assign(Object.assign({},a),{x:a.x||0,y:a.y||0});return"width"in a&&(o.width=o.width||1),"height"in a&&(o.height=o.height||1),a.locked&&(o.draggable=!1,o.contentEditable=!1,o.styleEditable=!1,o.resizable=!1,o.removable=!1),o}).views(a=>{const o=(0,n.observable)({x:a.x,y:a.y,width:a.width,height:a.height,rotation:a.rotation,opacity:a.opacity,color:a.color,fontSize:a.fontSize}),l=(0,n.action)(u=>{Object.assign(o,u)});return{get a(){const{currentTime:u}=a.store;if(l({x:a.x,y:a.y,width:a.width,height:a.height,rotation:a.rotation,opacity:a.opacity,color:a.color,fontSize:a.fontSize}),u===0)return o;const f=u-a.page.startTime;if(f>a.page.duration||f<0)return o;const h=a.store.animatedElementsIds;if(h.length&&!h.includes(a.id))return o;const O=a.animations.find(E=>E.type==="enter");if(O!=null&&O.enabled&&f<O.delay&&l({opacity:0}),O!=null&&O.enabled&&f>=O.delay&&f<=O.delay+O.duration){const E=f-O.delay,p=(0,r.animate)({element:a,animation:O,dTime:E});l(p)}const w=a.animations.find(E=>E.type==="exit");if(w!=null&&w.enabled&&f>=a.page.duration-w.duration-w.delay&&f<=a.page.duration-w.delay){const E=f-(a.page.duration-w.duration-w.delay),p=(0,r.animate)({element:a,animation:w,dTime:E});l(p)}w!=null&&w.enabled&&f>=a.page.duration-w.delay&&l({opacity:0});const b=a.animations.find(E=>E.type==="loop");if(b!=null&&b.enabled){const E=f,p=(0,r.animate)({element:a,animation:b,dTime:E});l(p)}return o},animated:u=>a.a[u]}}).actions(a=>({setAnimation(o,l){const u=a.animations.find(f=>f.type===o);u?Object.assign(u,l):a.animations.push(Object.assign({type:o},l))}}))}(Yg)),Yg}var Xg={},k_;function vj(){return k_||(k_=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.TextElement=void 0;const t=ri,r=uu();e.TextElement=r.Shape.named("Text").props({type:"text",text:"",placeholder:"",fontSize:14,fontFamily:"Roboto",fontStyle:"normal",fontWeight:"normal",textDecoration:"",fill:"black",align:"center",width:100,height:0,verticalAlign:"top",strokeWidth:0,stroke:"black",lineHeight:t.types.optional(t.types.union(t.types.number,t.types.string),1.2),letterSpacing:0,_editModeEnabled:!1,backgroundEnabled:!1,backgroundColor:"#7ED321",backgroundOpacity:1,backgroundCornerRadius:.5,backgroundPadding:.5}).preProcessSnapshot(n=>Object.assign({},n)).actions(n=>({toggleEditMode(i){n._editModeEnabled=i??!n._editModeEnabled,n._editModeEnabled?n.store.history.startTransaction():n.store.history.endTransaction()}}))}(Xg)),Xg}var Zg={},T_;function RS(){return T_||(T_=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ImageElement=void 0;const t=uu();e.ImageElement=t.Shape.named("Image").props({type:"image",width:100,height:100,src:"",cropX:0,cropY:0,cropWidth:1,cropHeight:1,cornerRadius:0,flipX:!1,flipY:!1,clipSrc:"",borderColor:"black",borderSize:0,keepRatio:!1,_cropModeEnabled:!1}).actions(r=>({toggleCropMode(n){r._cropModeEnabled=n??!r._cropModeEnabled,r._cropModeEnabled?r.store.history.startTransaction():r.store.history.endTransaction()},beforeDestroy(){r._cropModeEnabled&&r.store.history.endTransaction()}}))}(Zg)),Zg}var Qg={},A_;function mj(){return A_||(A_=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.VideoElement=void 0;const t=RS();e.VideoElement=t.ImageElement.named("Video").props({type:"video",duration:0,startTime:0,endTime:1,volume:1})}(Qg)),Qg}var Jg={},R_;function yj(){return R_||(R_=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.LineElement=void 0;const t=ri,r=uu();e.LineElement=r.Shape.named("Line").props({type:"line",width:400,height:10,color:"black",dash:t.types.array(t.types.number),startHead:"",endHead:""}).actions(n=>({}))}(Jg)),Jg}var ev={},M_;function bj(){return M_||(M_=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.SVGElement=void 0;const t=ri,r=uu();e.SVGElement=r.Shape.named("SVG").props({type:"svg",src:"",maskSrc:"",cropX:0,cropY:0,cropWidth:1,cropHeight:1,keepRatio:!0,flipX:!1,flipY:!1,width:100,height:100,borderColor:"black",borderSize:0,cornerRadius:0,colorsReplace:t.types.map(t.types.string)}).preProcessSnapshot(n=>Object.assign(Object.assign({},n),{src:n.src||n.svgSource})).actions(n=>({replaceColor(i,a){n.colorsReplace.set(i,a)}}))}(ev)),ev}var tv={},L_;function _j(){return L_||(L_=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.FigureElement=void 0;const t=ri,r=uu();e.FigureElement=r.Shape.named("Figure").props({type:"figure",subType:"rect",fill:"rgb(0, 161, 255)",dash:t.types.array(t.types.number),strokeWidth:0,stroke:"rgba(98, 197, 255, 1)",cornerRadius:0})}(tv)),tv}var N_;function Lc(){return N_||(N_=1,function(e){var t=ye&&ye.__rest||function(v,g){var y={};for(var d in v)Object.prototype.hasOwnProperty.call(v,d)&&g.indexOf(d)<0&&(y[d]=v[d]);if(v!=null&&typeof Object.getOwnPropertySymbols=="function"){var m=0;for(d=Object.getOwnPropertySymbols(v);m<d.length;m++)g.indexOf(d[m])<0&&Object.prototype.propertyIsEnumerable.call(v,d[m])&&(y[d[m]]=v[d[m]])}return y};Object.defineProperty(e,"__esModule",{value:!0}),e.registerShapeModel=e.TYPES_MAP=e.GroupElement=e.ElementTypes=e.forEveryChild=void 0;const r=ri,n=t0,i=TS(),a=uu(),o=vj(),l=RS(),u=mj(),f=yj(),h=bj(),O=_j(),w=(v,g)=>{if(v.children)for(const y of v.children){if(g(y)===!0)break;(0,e.forEveryChild)(y,g)}};e.forEveryChild=w;const b=[...new Array(20)].map((v,g)=>r.types.late(()=>E[g]));e.ElementTypes=r.types.union({dispatcher:v=>{const g=e.TYPES_MAP[v.type];if(!g)throw new Error(`Unknown element type: "${v.type}"`);return g}},h.SVGElement,o.TextElement,l.ImageElement,f.LineElement,u.VideoElement,O.FigureElement,r.types.late(()=>e.GroupElement),...b),e.GroupElement=i.Node.named("Group").props({type:"group",children:r.types.array(e.ElementTypes)}).views(v=>({get draggable(){let g=!0;return(0,e.forEveryChild)(v,y=>{y.draggable||(g=!1)}),g},get resizable(){let g=!0;return(0,e.forEveryChild)(v,y=>{y.resizable||(g=!1)}),g},get contentEditable(){let g=!0;return(0,e.forEveryChild)(v,y=>{y.contentEditable||(g=!1)}),g},get styleEditable(){let g=!0;return(0,e.forEveryChild)(v,y=>{y.styleEditable||(g=!1)}),g},get locked(){let g=!0;return(0,e.forEveryChild)(v,y=>{y.locked||(g=!1)}),g}})).actions(v=>({set(g){var{draggable:y,contentEditable:d,styleEditable:m,resizable:_}=g,k=t(g,["draggable","contentEditable","styleEditable","resizable"]);y!==void 0&&(0,e.forEveryChild)(v,x=>{x.set({draggable:y})}),d!==void 0&&(0,e.forEveryChild)(v,x=>{x.set({contentEditable:d})}),m!==void 0&&(0,e.forEveryChild)(v,x=>{x.set({styleEditable:m})}),_!==void 0&&(0,e.forEveryChild)(v,x=>{x.set({resizable:_})}),Object.assign(v,k)},addElement(g,{skipSelect:y=!1}={}){const d=e.TYPES_MAP[g.type];if(!d)return void console.error("Can not find model with type "+g.type);g.children&&g.children.forEach(_=>{_.id=(0,n.nanoid)(10)});const m=d.create(Object.assign({id:(0,n.nanoid)(10)},g));return v.children.push(m),m.selectable&&!y&&v.store.selectElements([m.id]),m},setElementZIndex(g,y){const d=v.children.find(m=>m.id===g);d&&((0,r.detach)(d),v.children.remove(d),v.children.splice(y,0,d))}}));const E=[];function p(v,g){const y=v.type;if(!y)throw new Error('You must pass "type" attribute to custom model.');let d=a.Shape.named(y).props(v);g&&(d=g(d)),e.TYPES_MAP[y]=d,E.push(d)}e.TYPES_MAP={svg:h.SVGElement,text:o.TextElement,image:l.ImageElement,group:e.GroupElement,line:f.LineElement,video:u.VideoElement,figure:O.FigureElement},e.registerShapeModel=p}(Vg)),Vg}(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.handleHotkey=void 0;const t=Lc();let r=[],n="";const i="polotno_clipboard",a=u=>{r=JSON.parse(JSON.stringify(u));try{localStorage.setItem(i,JSON.stringify(u))}catch{}},o=()=>{try{const u=localStorage.getItem(i);if(u)return JSON.parse(u)}catch{}return r};function l(u,f){var h,O,w,b,E,p,v,g;if(((h=document.activeElement)===null||h===void 0?void 0:h.tagName)==="INPUT"||((O=document.activeElement)===null||O===void 0?void 0:O.tagName)==="TEXTAREA"||((w=document.activeElement)===null||w===void 0?void 0:w.contentEditable)==="true")return;const y=f.selectedElements.filter(k=>k.removable),d=y.map(k=>k.id);u.keyCode!==46&&u.keyCode!==8||f.deleteElements(d);const m=u.ctrlKey||u.metaKey,_=u.shiftKey;if(m&&!_&&u.code==="KeyZ"&&(u.preventDefault(),f.history.undo()),m&&_&&u.code==="KeyZ"&&(u.preventDefault(),f.history.redo()),m&&u.code==="KeyA"){u.preventDefault();const k=(b=f.activePage)===null||b===void 0?void 0:b.children.filter(A=>A.selectable),x=(k==null?void 0:k.map(A=>A.id))||[];f.selectElements(x)}if(m&&u.code==="KeyC"&&(u.preventDefault(),n=(E=f.activePage)===null||E===void 0?void 0:E.id,a(f.selectedElements.map(k=>k.toJSON()))),m&&u.code==="KeyX"&&(u.preventDefault(),n=(p=f.activePage)===null||p===void 0?void 0:p.id,a(f.selectedElements.map(k=>k.toJSON())),f.deleteElements(y)),m&&u.code==="KeyV"){u.preventDefault();let k=0;n===((v=f.activePage)===null||v===void 0?void 0:v.id)&&(k=f.width/20),n=(g=f.activePage)===null||g===void 0?void 0:g.id,f.history.transaction(()=>{const x=[],A=o();(0,t.forEveryChild)({children:A},S=>{delete S.id,S.type!=="group"&&(S.x+=k,S.y+=k)}),A.forEach(S=>{var P;const C=(P=f.activePage)===null||P===void 0?void 0:P.addElement(S);C&&x.push(C.id)}),a(A),f.selectElements(x)})}u.code==="ArrowDown"&&(u.preventDefault(),f.selectedElements.forEach(k=>{k.set({y:k.y+1})})),u.code==="ArrowUp"&&(u.preventDefault(),f.selectedElements.forEach(k=>{k.set({y:k.y-1})})),u.code==="ArrowLeft"&&(u.preventDefault(),f.selectedElements.forEach(k=>{k.set({x:k.x-1})})),u.code==="ArrowRight"&&(u.preventDefault(),f.selectedElements.forEach(k=>{k.set({x:k.x+1})}))}e.handleHotkey=l})(mS);var MS={};(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.t=e.getTranslations=e.setTranslations=void 0;const t=Ji,r=(0,t.observable)({toolbar:{duration:"Duration",opacity:"Opacity",effects:"Effects",blur:"Blur",textBackground:"Background",backgroundCornerRadius:"Corner radius",backgroundOpacity:"Opacity",backgroundPadding:"Padding",brightness:"Brightness",sepia:"Sepia",grayscale:"Grayscale",textStroke:"Text Stroke",shadow:"Shadow",border:"Border",cornerRadius:"Corner Radius",position:"Position",layering:"Layering",toForward:"To forward",up:"Up",down:"Down",toBottom:"To bottom",alignLeft:"Align left",alignCenter:"Align center",alignRight:"Align right",alignTop:"Align top",alignMiddle:"Align middle",alignBottom:"Align bottom",flip:"Flip",flipHorizontally:"Flip horizontally",flipVertically:"Flip vertically",fitToBackground:"Fit to page",removeBackground:"Remove background",removeBackgroundTitle:"Remove background from image",cancelRemoveBackground:"Cancel",confirmRemoveBackground:"Confirm",crop:"Crop",cropDone:"Done",cropCancel:"Cancel",clip:"Apply mask",removeClip:"Remove mask",removeMask:"Remove mask",transparency:"Transparency",lockedDescription:"Object is locked. Unlock it to allow changes from canvas.",unlockedDescription:"Object is unlocked. Lock it to prevent changes from canvas.",removeElements:"Remove elements",duplicateElements:"Duplicate elements",download:"Download",saveAsImage:"Save as image",saveAsPDF:"Save as PDF",lineHeight:"Line height",letterSpacing:"Letter spacing",offsetX:"Offset X",offsetY:"Offset Y",color:"Color",selectable:"Selectable",draggable:"Draggable",removable:"Removable",resizable:"Resizable",contentEditable:"Can change content",styleEditable:"Can change style",alwaysOnTop:"Always on top",showInExport:"Show in export",ungroupElements:"Ungroup",groupElements:"Group",lineSize:"Line size",fade:"Fade",move:"Move",zoom:"Zoom",animate:"Animate",rotate:"Rotate",none:"None",bounce:"Bounce",blink:"Blink",spaceEvenly:"Space evenly",horizontalDistribution:"Horizontally",verticalDistribution:"Vertically",strokeWidth:"Stroke Width",colorPicker:{solid:"Solid",linear:"Linear"},aiText:{rewrite:"Rewrite",shorten:"Shorten",continue:"Continue writing",proofread:"Proofread",tones:"Tones",friendly:"Friendly",professional:"Professional",humorous:"Humorous",formal:"Formal"}},workspace:{noPages:"There are no pages yet...",addPage:"Add page",removePage:"Remove page",duplicatePage:"Duplicate page",moveUp:"Move up",moveDown:"Move down"},scale:{reset:"Reset"},error:{removeBackground:"Ops! Something went wrong. Background can not be removed."},sidePanel:{templates:"Templates",searchTemplatesWithSameSize:"Show templates with the same size",searchPlaceholder:"Search...",otherFormats:"Other formats",noResults:"No results",error:"Loading is failed...",text:"Text",uploadFont:"Upload font",myFonts:"My fonts",photos:"Photos",videos:"Videos",animations:"Animations",effects:"Effects",elements:"Elements",shapes:"Shapes",lines:"Lines",upload:"Upload",uploadImage:"Upload Image",uploadTip:"Do you want to upload your own images?",background:"Background",resize:"Resize",layers:"Layers",layerTypes:{image:"Image",text:"Text",svg:"SVG",line:"Line",figure:"Figure",group:"Group"},layersTip:"Elements on your active page:",noLayers:"No elements on the page...",namePlaceholder:"Type element name...",useMagicResize:"Use magic resize",clipImage:"Mask image",width:"Width",height:"Height",magicResizeDescription:"Magic resize will automatically resize and move all elements on the canvas",headerText:"Header",createHeader:"Create header",subHeaderText:"Sub Header",createSubHeader:"Create sub header",bodyText:"Body text",createBody:"Create body text"},pagesTimeline:{pages:"Pages",removePage:"Remove page",addPage:"Add page",duplicatePage:"Duplicate page",removeAudio:"Remove audio"}});function n(h,O){var w,b=O.split("."),E=h;for(w=0;w<b.length;++w){if(E[b[w]]==null)return;E=E[b[w]]}return E}const i=h=>h&&typeof h=="object";function a(h,O){Object.keys(O).forEach(w=>{const b=h[w],E=O[w];i(E)&&i(b)?a(b,E):h[w]=E})}function o(h,O,w=""){Object.keys(O).forEach(b=>{const E=O[b],p=w?`${w}.${b}`:b;i(E)?i(h[b])?o(h[b],E,p):console.warn(`Missing nested translation object at '${p}'`):h[b]===void 0&&console.warn(`Missing translation '${p}'`)})}e.setTranslations=(0,t.action)((h,{validate:O=!1}={})=>{O&&o(h,r),a(r,h)});const l=()=>(0,t.toJS)(r);e.getTranslations=l;const u={},f=h=>{const O=n(r,h);if(O!==void 0)return O;u[h]||(u[h]=!0,console.warn(`Missing translation '${h}'`));const w=h.split("."),b=w[w.length-1]||" ";return b.charAt(0).toUpperCase()+b.slice(1)};e.t=f})(MS);(function(e){var t=ye&&ye.__importDefault||function(p){return p&&p.__esModule?p:{default:p}};Object.defineProperty(e,"__esModule",{value:!0}),e.WorkspaceCanvas=void 0;const r=t(et),n=ti,i=t(r9),a=gS,o=vS,l=mS,u=MS,f=`Polotno warning: <Workspace /> component can not automatically detect its size.
296
296
  Width or height of parent elements is equal 0.
297
297
  Please make sure it has non-zero size. You may need to adjust it with your styles. <Workspace /> will automatically fit into parent container.
298
298
  For simpler debugging here is the log of the parent element:`,h=(p,v,g,y,d,m)=>{const _=r.default.useRef({width:v,height:g}),k=r.default.useRef({top:0,left:0}),x=r.default.useRef(!1),A=r.default.useRef(d.pages.length);x.current=A.current!==d.pages.length,A.current=d.pages.length,r.default.useEffect(()=>{const S=p.current,P=C=>{k.current={top:S.scrollTop,left:S.scrollLeft}};return S.addEventListener("scroll",P),()=>{S.removeEventListener("scroll",P)}},[]),r.default.useLayoutEffect(()=>{if(!p.current||x.current)return;const S=p.current,P=(k.current.left+S.offsetWidth/2)/_.current.width,C=(k.current.top+S.offsetHeight/2)/_.current.height;m.current=!0,S.scrollLeft=P*v-S.offsetWidth/2,S.scrollTop=C*g-S.offsetHeight/2,_.current={width:v,height:g}},[y,v,g])},O=({element:p,scrollTop:v=0,duration:g=300,onFinish:y=()=>{}})=>{const d=p.scrollTop,m=v-d;let _=0,k=!1;const x=()=>{if(k)return;_+=20;const S=A(_,d,m,g);p.scrollTop=S,_<g?setTimeout(x,20):y()},A=(S,P,C,R)=>(S/=R/2)<1?C/2*S*S+P:-C/2*(--S*(S-2)-1)+P;return x(),()=>{k=!0}},w=(p,v,g,y,d)=>{const m=r.default.useRef(!1),_=r.default.useRef(null),k=r.default.useRef(!1);r.default.useEffect(()=>{const A=p.current,S=()=>{d.current};return A.addEventListener("scroll",S),()=>{A.removeEventListener("scroll",S)}},[]);const x=g.pages.indexOf(g.activePage);return r.default.useLayoutEffect(()=>{if(!g.activePage||!p.current||m.current)return;const A=p.current,S=g.pages.indexOf(g.activePage)*v;let P=()=>{};return(Math.abs(S-A.scrollTop)>.5*v||k.current)&&(k.current=!0,P=O({element:A,scrollTop:S,onFinish:()=>{k.current=!1}})),P},[g.activePage,x]),{handleScroll:A=>{if(k.current)return;m.current=!0,clearTimeout(_.current),_.current=setTimeout(()=>{m.current=!1},300);const S=A.currentTarget.childNodes[0].offsetHeight,P=A.currentTarget.scrollTop,C=Math.floor((P+y.height/3)/S),R=g.pages[C];R&&g.activePage!==R&&R.select()}}},b=({store:p})=>r.default.createElement("div",{style:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",textAlign:"center"}},r.default.createElement("p",null,(0,u.t)("workspace.noPages")),r.default.createElement("button",{onClick:()=>{p.addPage()}},(0,u.t)("workspace.addPage"))),E=({width:p,height:v,xPadding:g,yPadding:y,backgroundColor:d})=>r.default.createElement("div",{style:{width:p+"px",height:v+"px",backgroundColor:d,paddingLeft:g+"px",paddingRight:g+"px",paddingTop:y+"px",paddingBottom:y+"px"}},r.default.createElement("div",{style:{width:" 100%",height:"100%",backgroundColor:"white"}}));e.WorkspaceCanvas=(0,n.observer)(({store:p,pageControlsEnabled:v,backgroundColor:g,pageBorderColor:y,activePageBorderColor:d,bleedColor:m,components:_,onKeyDown:k,paddingX:x,paddingY:A,altCloneEnabled:S=!0,visiblePagesOffset:P,renderOnlyActivePage:C})=>{var R;const N=x??20,U=A??55,[G,Z]=r.default.useState({width:100,height:100}),W=r.default.useRef(G),H=r.default.useRef(null),M=r.default.useRef(null),L=p.bleedVisible?Math.max(0,...p.pages.map(ne=>ne.bleed)):0,D=Math.max(...p.pages.map(ne=>ne.computedWidth)),B=Math.max(...p.pages.map(ne=>ne.computedHeight)),q=((R=p.activePage)===null||R===void 0?void 0:R.computedHeight)||0,K=D+2*L,F=(C?q:B)+2*L,$=async({skipTimeout:ne}={skipTimeout:!1})=>{if(ne||await new Promise(Se=>setTimeout(Se,50)),H.current===null)return;const le=H.current.getBoundingClientRect();le.width!==0&&le.height!==0||(console.warn(f),console.log(H.current));const be=M.current.clientWidth||le.width,me={width:be,height:le.height};(W.current.width!==me.width||W.current.height!==me.height)&&(Z(me),W.current=me);const te=(be-2*N)/K,de=(le.height-2*U)/F,he=Math.max(Math.min(te,de),.01);p.scaleToFit!==he&&(p.setScale(he),p._setScaleToFit(he))};r.default.useLayoutEffect(()=>{$({skipTimeout:!0})},[]),r.default.useEffect(()=>{$()},[K,F]),r.default.useEffect(()=>{const ne=H.current;if(window.ResizeObserver){const le=new ResizeObserver(()=>{$({skipTimeout:!0})});return le.observe(ne),()=>le.unobserve(ne)}{const le=setInterval(()=>{$({skipTimeout:!0})},100);return()=>clearInterval(le)}},[K,F]);const z=Math.max(N,(G.width-K*p.scale)/2),Y=C?1:p.pages.length,X=F*p.scale*Y,Q=Math.max(U,(G.height-X)/Y/2);r.default.useEffect(()=>{const ne=le=>{(k||l.handleHotkey)(le,p)};return window.addEventListener("keydown",ne),()=>window.removeEventListener("keydown",ne)},[]),r.default.useEffect(()=>{var ne;const le=be=>{if(be.ctrlKey||be.metaKey){be.preventDefault();const he=Math.max(3,p.scaleToFit),Se=Math.min(.1,p.scaleToFit),$e=(me=be.deltaY<0?1.05*p.scale:p.scale/1.05,te=Se,de=he,Math.max(te,Math.min(de,me)));p.setScale($e)}else var me,te,de};return(ne=M.current)===null||ne===void 0||ne.addEventListener("wheel",le),()=>{var be;return(be=M.current)===null||be===void 0?void 0:be.removeEventListener("wheel",le)}},[]);const J=r.default.useRef(!1);h(M,K*p.scale+2*z,F*p.scale+2*Q,p.scale,p,J);const{handleScroll:re}=w(M,F*p.scale+2*Q,p,G,J),oe=G.width>=K*p.scale+2*z,ae=g||"rgba(232, 232, 232, 0.9)",ie=p.pages.indexOf(p.activePage),Re=(_==null?void 0:_.NoPages)||b,Me=P??Math.min(3,Math.max(1,Math.ceil(G.height/2/(F*p.scale))));return r.default.createElement("div",{ref:H,style:{width:"100%",height:"100%",position:"relative",outline:"none",flex:1,backgroundColor:ae},tabIndex:0,className:"polotno-workspace-container"},r.default.createElement("div",{ref:M,onScroll:re,style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",overflow:"auto",overflowX:oe?"hidden":"auto"},className:"polotno-workspace-inner"},p.pages.map((ne,le)=>{const be=ne===p.activePage;if(C&&!be&&!ne._exportingOrRendering)return null;if(!(Math.abs(le-ie)<=Me||ne._exportingOrRendering))return r.default.createElement(E,{key:ne.id,width:K*p.scale+2*z,height:F*p.scale+2*Q,backgroundColor:ae,xPadding:z,yPadding:Q});const me=r.default.createElement(i.default,{key:ne.id,page:ne,xPadding:z,yPadding:Q,width:K*p.scale+2*z,height:F*p.scale+2*Q,store:p,pageControlsEnabled:v,backColor:ae,pageBorderColor:y||"lightgrey",activePageBorderColor:d||"rgb(0, 161, 255)",altCloneEnabled:S,bleedColor:m||"rgba(255, 0, 0, 0.1)",components:_});return ne._exportingOrRendering&&!be&&C?r.default.createElement("div",{style:{display:"none"},key:ne.id},me):me}),p.rulesVisible&&r.default.createElement(a.TopRules,{store:p,xPadding:z,yPadding:Q,width:K*p.scale+2*z,height:F*p.scale+2*Q}),p.pages.length===0&&r.default.createElement(Re,{store:p}),p.audios.map(ne=>r.default.createElement(o.AudioElement,{key:ne.id,audio:ne,store:p}))))}),e.default=e.WorkspaceCanvas})(qw);var wj=P2();Ml.toggleFadeInAnimation(!1);Qn.setTextOverflow("change-font-size");const Sj=new URLSearchParams(location.search).get("key"),LS=wj.createStore({key:Sj});window.store=LS;window.config={addGlobalFont:iu.addGlobalFont,unstable_useHtmlTextRender:Qn.useHtmlTextRender,unstable_setTextVerticalResizeEnabled:Qn.setTextVerticalResizeEnabled,unstable_setTextOverflow:Qn.setTextOverflow,onLoadError:Yi.onLoadError,setAssetLoadTimeout:Yi.setAssetLoadTimeout,setFontLoadTimeout:Yi.setFontLoadTimeout};const Ej=zd.createRoot(document.getElementById("root"));Ej.render(ht.createElement(qw.WorkspaceCanvas,{visiblePagesOffset:0,store:LS,components:{PageControls:()=>null,Tooltip:()=>null}}));
package/dist/index.html CHANGED
@@ -8,7 +8,7 @@
8
8
  }
9
9
  </style>
10
10
  <meta name="viewport" content="width=device-width, initial-scale=1" />
11
- <script type="module" crossorigin src="./assets/index-D88dPP8F.js"></script>
11
+ <script type="module" crossorigin src="./assets/index-BCjnOI-a.js"></script>
12
12
  </head>
13
13
  <body>
14
14
  <div id="root"></div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "polotno-node",
3
- "version": "2.10.4",
3
+ "version": "2.10.5",
4
4
  "description": "Polotno workflow from NodeJS",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -25,17 +25,17 @@
25
25
  "gifencoder": "^2.0.1",
26
26
  "pixelmatch": "^6.0.0",
27
27
  "pngjs": "^7.0.0",
28
- "polotno": "^2.13.9",
28
+ "polotno": "^2.14.0",
29
29
  "react": "^18.3.1",
30
30
  "react-dom": "^18.3.1",
31
- "vite": "^5.4.6"
31
+ "vite": "^5.4.7"
32
32
  },
33
33
  "author": "Anton Lavrenov",
34
34
  "license": "MIT",
35
35
  "dependencies": {
36
36
  "@sparticuz/chromium": "127.0.0",
37
- "puppeteer": "23.3.1",
38
- "puppeteer-core": "23.3.1",
37
+ "puppeteer": "23.4.0",
38
+ "puppeteer-core": "23.4.0",
39
39
  "tmp": "^0.2.3"
40
40
  },
41
41
  "bugs": {