diff --git a/build/two.js b/build/two.js index bbc69ef50..9459b8fa3 100644 --- a/build/two.js +++ b/build/two.js @@ -1578,13 +1578,13 @@ SOFTWARE. * @name Two.Version * @property {String} - The current working version of the library. */ - Version: 'v0.7.10', + Version: 'v0.7.11', /** * @name Two.PublishDate * @property {String} - The automatically generated publish date in the build process to verify version release candidates. */ - PublishDate: '2021-11-20T15:57:25.534Z', + PublishDate: '2021-11-24T18:02:03.466Z', /** * @name Two.Identifier @@ -3478,9 +3478,12 @@ SOFTWARE. }, set: function(v) { + if (this._mask) { + this._mask.clip = false; + } this._mask = v; this._flagMask = true; - if (!v.clip) { + if (v && !v.clip) { v.clip = true; } } @@ -3804,6 +3807,11 @@ SOFTWARE. child.translation.y -= rect.top; } + if (this.mask) { + this.mask.translation.x -= rect.left; + this.mask.translation.y -= rect.top; + } + return this; }, @@ -3827,6 +3835,11 @@ SOFTWARE. } } + if (this.mask) { + this.mask.translation.x -= cx; + this.mask.translation.y -= cy; + } + return this; }, @@ -7440,9 +7453,12 @@ SOFTWARE. }, set: function(v) { + if (this._mask) { + this._mask.clip = false; + } this._mask = v; this._flagMask = true; - if (!v.clip) { + if (v && !v.clip) { v.clip = true; } } @@ -7814,6 +7830,13 @@ SOFTWARE. v.y += hh; } + if (this.mask) { + this.mask.translation.x -= cx; + this.mask.translation.x += hw; + this.mask.translation.y -= cy; + this.mask.translation.y += hh; + } + return this; }, @@ -7836,6 +7859,11 @@ SOFTWARE. v.y -= cy; } + if (this.mask) { + this.mask.translation.x -= cx; + this.mask.translation.y -= cy; + } + return this; }, @@ -10156,9 +10184,12 @@ SOFTWARE. }, set: function(v) { + if (this._mask) { + this._mask.clip = false; + } this._mask = v; this._flagMask = true; - if (!v.clip) { + if (v && !v.clip) { v.clip = true; } } diff --git a/build/two.min.js b/build/two.min.js index 97c6a9e43..584057963 100644 --- a/build/two.min.js +++ b/build/two.min.js @@ -21,4 +21,4 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Two=t()}(this,(function(){"use strict";var e,t={move:"M",line:"L",curve:"C",arc:"A",close:"Z"};"undefined"!=typeof window?e=window:"undefined"!=typeof global?e=global:"undefined"!=typeof self&&(e=self);var i,r=e,s=2*Math.PI,n=.5*Math.PI,a=function(e,t,i,r,s,n){var a;return arguments.length<=1?(a=e.a,t=e.b,i=e.c,r=e.d,s=e.e,n=e.f):a=e,{translateX:s,translateY:n,scaleX:Math.sqrt(a*a+t*t),scaleY:Math.sqrt(i*i+r*r),rotation:180*Math.atan2(t,a)/Math.PI}},o=function(e){i=e},h=function(e,t){t=t&&t.identity()||new i;for(var r=e,s=[];r&&r._matrix;)s.push(r._matrix),r=r.parent;s.reverse();for(var n=0;n=0&&t<4294967296}(e)&&Object.keys(e),n=(s||e).length,a=0;a=4?(i=arguments[0]-arguments[2],r=arguments[1]-arguments[3],Math.atan2(r,i)):(i=e.x-t.x,r=e.y-t.y,Math.atan2(r,i))},distanceBetween:function(e,t){return Math.sqrt(w.distanceBetweenSquared(e,t))},distanceBetweenSquared:function(e,t){var i=e.x-t.x,r=e.y-t.y;return i*i+r*r},MakeObservable:function(e){e.bind=e.on=function(){return this._bound||(this._x=this.x,this._y=this.y,Object.defineProperty(this,"x",S),Object.defineProperty(this,"y",R),y.extend(this,A),this._bound=!0),v.bind.apply(this,arguments),this}}}),y.extend(w.prototype,v,{constructor:w,set:function(e,t){return this.x=e,this.y=t,this},copy:function(e){return this.x=e.x,this.y=e.y,this},clear:function(){return this.x=0,this.y=0,this},clone:function(){return new w(this.x,this.y)},add:function(e,t){return arguments.length<=0||(arguments.length<=1?"number"==typeof e?(this.x+=e,this.y+=e):e&&"number"==typeof e.x&&"number"==typeof e.y&&(this.x+=e.x,this.y+=e.y):(this.x+=e,this.y+=t)),this},addSelf:function(e){return this.add.apply(this,arguments)},sub:function(e,t){return arguments.length<=0||(arguments.length<=1?"number"==typeof e?(this.x-=e,this.y-=e):e&&"number"==typeof e.x&&"number"==typeof e.y&&(this.x-=e.x,this.y-=e.y):(this.x-=e,this.y-=t)),this},subtract:function(){return this.sub.apply(this,arguments)},subSelf:function(e){return this.sub.apply(this,arguments)},subtractSelf:function(e){return this.sub.apply(this,arguments)},multiply:function(e,t){return arguments.length<=0||(arguments.length<=1?"number"==typeof e?(this.x*=e,this.y*=e):e&&"number"==typeof e.x&&"number"==typeof e.y&&(this.x*=e.x,this.y*=e.y):(this.x*=e,this.y*=t)),this},multiplySelf:function(e){return this.multiply.apply(this,arguments)},multiplyScalar:function(e){return this.multiply(e)},divide:function(e,t){return arguments.length<=0||(arguments.length<=1?"number"==typeof e?(this.x/=e,this.y/=e):e&&"number"==typeof e.x&&"number"==typeof e.y&&(this.x/=e.x,this.y/=e.y):(this.x/=e,this.y/=t),y.isNaN(this.x)&&(this.x=0),y.isNaN(this.y)&&(this.y=0)),this},divideSelf:function(e){return this.divide.apply(this,arguments)},divideScalar:function(e){return this.divide(e)},negate:function(){return this.multiply(-1)},dot:function(e){return this.x*e.x+this.y*e.y},length:function(){return Math.sqrt(this.lengthSquared())},lengthSquared:function(){return this.x*this.x+this.y*this.y},normalize:function(){return this.divideScalar(this.length())},distanceTo:function(e){return Math.sqrt(this.distanceToSquared(e))},distanceToSquared:function(e){var t=this.x-e.x,i=this.y-e.y;return t*t+i*i},setLength:function(e){return this.normalize().multiplyScalar(e)},equals:function(e,t){return t=void 0===t?1e-4:t,this.distanceTo(e)>1,c=1&r?n[h++]*e(o):0;h0&&this.set(a)}function q(){this.renderer={},this._renderer.flagMatrix=q.FlagMatrix.bind(this),this.isShape=!0,this.id=F.Identifier+F.uniqueId(),this.classList=[],this.matrix=new G,this.translation=new w,this.rotation=0,this.scale=1,this.skewX=0,this.skewY=0}function K(){Array.call(this),arguments[0]&&Array.isArray(arguments[0])?arguments[0].length>0&&Array.prototype.push.apply(this,arguments[0]):arguments.length>0&&Array.prototype.push.apply(this,arguments)}function J(e){K.apply(this,arguments),Object.defineProperty(this,"_events",{value:{},enumerable:!1}),this.ids={},this.attach(Array.isArray(e)?e:Array.prototype.slice.call(arguments)),this.on(v.Types.insert,this.attach),this.on(v.Types.remove,this.detach)}o(G),y.extend(G,{Identity:[1,0,0,0,1,0,0,0,1],Multiply:function(e,t,i){if(t.length<=3){var r=e,s=t[0]||0,n=t[1]||0,a=t[2]||0;return{x:r[0]*s+r[1]*n+r[2]*a,y:r[3]*s+r[4]*n+r[5]*a,z:r[6]*s+r[7]*n+r[8]*a}}var o=e[0],h=e[1],l=e[2],c=e[3],f=e[4],d=e[5],u=e[6],g=e[7],p=e[8],m=t[0],y=t[1],v=t[2],b=t[3],x=t[4],k=t[5],w=t[6],A=t[7],S=t[8];return(i=i||new _(9))[0]=o*m+h*b+l*w,i[1]=o*y+h*x+l*A,i[2]=o*v+h*k+l*S,i[3]=c*m+f*b+d*w,i[4]=c*y+f*x+d*A,i[5]=c*v+f*k+d*S,i[6]=u*m+g*b+p*w,i[7]=u*y+g*x+p*A,i[8]=u*v+g*k+p*S,i}}),y.extend(G.prototype,v,{constructor:G,manual:!1,set:function(e,t,i,r,s,n,a,o,h){var l;return void 0===t&&(e=(l=e)[0],t=l[1],i=l[2],r=l[3],s=l[4],n=l[5],a=l[6],o=l[7],h=l[8]),this.elements[0]=e,this.elements[1]=t,this.elements[2]=i,this.elements[3]=r,this.elements[4]=s,this.elements[5]=n,this.elements[6]=a,this.elements[7]=o,this.elements[8]=h,this.trigger(v.Types.change)},copy:function(e){return this.elements[0]=e.elements[0],this.elements[1]=e.elements[1],this.elements[2]=e.elements[2],this.elements[3]=e.elements[3],this.elements[4]=e.elements[4],this.elements[5]=e.elements[5],this.elements[6]=e.elements[6],this.elements[7]=e.elements[7],this.elements[8]=e.elements[8],this.manual=e.manual,this.trigger(v.Types.change)},identity:function(){return this.elements[0]=G.Identity[0],this.elements[1]=G.Identity[1],this.elements[2]=G.Identity[2],this.elements[3]=G.Identity[3],this.elements[4]=G.Identity[4],this.elements[5]=G.Identity[5],this.elements[6]=G.Identity[6],this.elements[7]=G.Identity[7],this.elements[8]=G.Identity[8],this.trigger(v.Types.change)},multiply:function(e,t,i,r,s,n,a,o,h){if(void 0===t)return this.elements[0]*=e,this.elements[1]*=e,this.elements[2]*=e,this.elements[3]*=e,this.elements[4]*=e,this.elements[5]*=e,this.elements[6]*=e,this.elements[7]*=e,this.elements[8]*=e,this.trigger(v.Types.change);if(void 0===r)return e=e||0,t=t||0,i=i||0,{x:(s=this.elements)[0]*e+s[1]*t+s[2]*i,y:s[3]*e+s[4]*t+s[5]*i,z:s[6]*e+s[7]*t+s[8]*i};var l=this.elements,c=[e,t,i,r,s,n,a,o,h],f=l[0],d=l[1],_=l[2],u=l[3],g=l[4],p=l[5],m=l[6],y=l[7],b=l[8],x=c[0],k=c[1],w=c[2],A=c[3],S=c[4],R=c[5],M=c[6],O=c[7],T=c[8];return this.elements[0]=f*x+d*A+_*M,this.elements[1]=f*k+d*S+_*O,this.elements[2]=f*w+d*R+_*T,this.elements[3]=u*x+g*A+p*M,this.elements[4]=u*k+g*S+p*O,this.elements[5]=u*w+g*R+p*T,this.elements[6]=m*x+y*A+b*M,this.elements[7]=m*k+y*S+b*O,this.elements[8]=m*w+y*R+b*T,this.trigger(v.Types.change)},inverse:function(e){var t=this.elements;e=e||new G;var i=t[0],r=t[1],s=t[2],n=t[3],a=t[4],o=t[5],h=t[6],l=t[7],c=t[8],f=c*a-o*l,d=-c*n+o*h,_=l*n-a*h,u=i*f+r*d+s*_;return u?(u=1/u,e.elements[0]=f*u,e.elements[1]=(-c*r+s*l)*u,e.elements[2]=(o*r-s*a)*u,e.elements[3]=d*u,e.elements[4]=(c*i-s*h)*u,e.elements[5]=(-o*i+s*n)*u,e.elements[6]=_*u,e.elements[7]=(-l*i+r*h)*u,e.elements[8]=(a*i-r*n)*u,e):null},scale:function(e,t){var i=arguments.length;return i<=1&&(t=e),this.multiply(e,0,0,0,t,0,0,0,1)},rotate:function(e){var t=X(e),i=Y(e);return this.multiply(t,-i,0,i,t,0,0,0,1)},translate:function(e,t){return this.multiply(1,0,e,0,1,t,0,0,1)},skewX:function(e){var t=H(e);return this.multiply(1,t,0,0,1,0,0,0,1)},skewY:function(e){var t=H(e);return this.multiply(1,0,0,t,1,0,0,0,1)},toString:function(e){return W.length=0,this.toTransformArray(e,W),W.map(g).join(" ")},toTransformArray:function(e,t){var i=this.elements,r=!!t,s=i[0],n=i[1],a=i[2],o=i[3],h=i[4],l=i[5];if(e){var c=i[6],f=i[7],d=i[8];return r?(t[0]=s,t[1]=o,t[2]=c,t[3]=n,t[4]=h,t[5]=f,t[6]=a,t[7]=l,void(t[8]=d)):[s,o,c,n,h,f,a,l,d]}return r?(t[0]=s,t[1]=o,t[2]=n,t[3]=h,t[4]=a,void(t[5]=l)):[s,o,n,h,a,l]},toArray:function(e,t){var i=this.elements,r=!!t,s=i[0],n=i[1],a=i[2],o=i[3],h=i[4],l=i[5];if(e){var c=i[6],f=i[7],d=i[8];return r?(t[0]=s,t[1]=n,t[2]=a,t[3]=o,t[4]=h,t[5]=l,t[6]=c,t[7]=f,void(t[8]=d)):[s,n,a,o,h,l,c,f,d]}return r?(t[0]=s,t[1]=n,t[2]=a,t[3]=o,t[4]=h,void(t[5]=l)):[s,n,a,o,h,l]},toObject:function(){return{elements:this.toArray(!0),manual:!!this.manual}},clone:function(){return(new G).copy(this)}}),y.extend(q,{FlagMatrix:function(){this._flagMatrix=!0},MakeObservable:function(e){var t={enumerable:!1,get:function(){return this._translation},set:function(e){this._translation&&this._translation.unbind(v.Types.change,this._renderer.flagMatrix),this._translation=e,this._translation.bind(v.Types.change,this._renderer.flagMatrix),q.FlagMatrix.call(this)}};Object.defineProperty(e,"translation",t),Object.defineProperty(e,"position",t),Object.defineProperty(e,"rotation",{enumerable:!0,get:function(){return this._rotation},set:function(e){this._rotation=e,this._flagMatrix=!0}}),Object.defineProperty(e,"scale",{enumerable:!0,get:function(){return this._scale},set:function(e){this._scale instanceof w&&this._scale.unbind(v.Types.change,this._renderer.flagMatrix),this._scale=e,this._scale instanceof w&&this._scale.bind(v.Types.change,this._renderer.flagMatrix),this._flagMatrix=!0,this._flagScale=!0}}),Object.defineProperty(e,"skewX",{enumerable:!0,get:function(){return this._skewX},set:function(e){this._skewX=e,this._flagMatrix=!0}}),Object.defineProperty(e,"skewY",{enumerable:!0,get:function(){return this._skewY},set:function(e){this._skewY=e,this._flagMatrix=!0}}),Object.defineProperty(e,"matrix",{enumerable:!0,get:function(){return this._matrix},set:function(e){this._matrix=e,this._flagMatrix=!0}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return this._id},set:function(e){var t=this._id;e!==this._id&&(this._id=e,this._flagId=!0,this.parent&&(delete this.parent.children.ids[t],this.parent.children.ids[this._id]=this))}}),Object.defineProperty(e,"className",{enumerable:!0,get:function(){return this._className},set:function(e){if(this._flagClassName=this._className!==e,this._flagClassName){for(var t=this._className.split(/\s+?/),i=e.split(/\s+?/),r=0;r=0&&this.classList.splice(n,1)}this.classList=this.classList.concat(i)}this._className=e}}),Object.defineProperty(e,"renderer",{enumerable:!1,get:function(){return this._renderer},set:function(e){this._renderer=e}})}}),y.extend(q.prototype,v,{constructor:q,_flagId:!0,_flagMatrix:!0,_flagScale:!1,_flagClassName:!1,_id:"",_translation:null,_rotation:0,_scale:1,_skewX:0,_skewY:0,_className:"",addTo:function(e){return e.add(this),this},clone:function(e){var t=new q;return t.translation.copy(this.translation),t.rotation=this.rotation,t.scale=this.scale,t.skewX=this.skewX,t.skewY=this.skewY,this.matrix.manual&&t.matrix.copy(this.matrix),e&&e.add(t),t._update()},_update:function(e){return!this._matrix.manual&&this._flagMatrix&&(this._matrix.identity().translate(this.translation.x,this.translation.y),this._scale instanceof w?this._matrix.scale(this._scale.x,this._scale.y):this._matrix.scale(this._scale),this._matrix.rotate(this.rotation),this._matrix.skewX(this.skewX),this._matrix.skewY(this.skewY)),e&&this.parent&&this.parent._update&&this.parent._update(),this},flagReset:function(){return this._flagId=this._flagMatrix=this._flagScale=this._flagClassName=!1,this}}),q.MakeObservable(q.prototype),K.prototype=new Array,y.extend(K.prototype,v,{constructor:K,pop:function(){var e=Array.prototype.pop.apply(this,arguments);return this.trigger(v.Types.remove,[e]),e},shift:function(){var e=Array.prototype.shift.apply(this,arguments);return this.trigger(v.Types.remove,[e]),e},push:function(){var e=Array.prototype.push.apply(this,arguments);return this.trigger(v.Types.insert,arguments),e},unshift:function(){var e=Array.prototype.unshift.apply(this,arguments);return this.trigger(v.Types.insert,arguments),e},splice:function(){var e,t=Array.prototype.splice.apply(this,arguments);return this.trigger(v.Types.remove,t),arguments.length>2&&(e=this.slice(arguments[0],arguments[0]+arguments.length-2),this.trigger(v.Types.insert,e),this.trigger(v.Types.order)),t},sort:function(){return Array.prototype.sort.apply(this,arguments),this.trigger(v.Types.order),this},reverse:function(){return Array.prototype.reverse.apply(this,arguments),this.trigger(v.Types.order),this},indexOf:function(){return Array.prototype.indexOf.apply(this,arguments)}}),J.prototype=new K,y.extend(J.prototype,{constructor:J,attach:function(e){for(var t=0;t0&&(i=Array.prototype.indexOf.call(t.subtractions,e))>=0&&t.subtractions.splice(i,1),t.additions.length>0&&(i=Array.prototype.indexOf.call(t.additions,e))>=0&&t.additions.splice(i,1),e.parent=t,t.additions.push(e),t._flagAdditions=!0}function n(){(i=Array.prototype.indexOf.call(r.additions,e))>=0&&r.additions.splice(i,1),(i=Array.prototype.indexOf.call(r.subtractions,e))<0&&(r.subtractions.push(e),r._flagSubtractions=!0)}r!==t?(r&&r.children.ids[e.id]&&(i=Array.prototype.indexOf.call(r.children,e),r.children.splice(i,1),n()),t?s():(n(),r._flagAdditions&&0===r.additions.length&&(r._flagAdditions=!1),r._flagSubtractions&&0===r.subtractions.length&&(r._flagSubtractions=!1),delete e.parent)):s()}y.extend(Q,{Children:J,InsertChildren:function(e){for(var t=0;t0&&i(this._children)),this._children=new J(e),this._children.bind(v.Types.insert,t),this._children.bind(v.Types.remove,i),this._children.bind(v.Types.order,r),e.length>0&&t(e)}}),Object.defineProperty(e,"mask",{enumerable:!0,get:function(){return this._mask},set:function(e){this._mask=e,this._flagMask=!0,e.clip||(e.clip=!0)}})},MakeGetterSetters:function(e,t){Array.isArray(t)||(t=[t]),y.each(t,(function(t){Q.MakeGetterSetter(e,t)}))},MakeGetterSetter:function(e,t){var i="_"+t;Object.defineProperty(e,t,{enumerable:!0,get:function(){return this[i]},set:function(e){this[i]=e;for(var r=0;r=0&&t.push(r),r.children)for(var s=0;s=0&&this.children.splice(r,1),this.children.push(i)}}return this},remove:function(e){var t=arguments.length,i=this.parent;if(t<=0&&i)return i.remove(this),this;e=e instanceof Array?e.slice():Array.prototype.slice.call(arguments);for(var r=0;r=0&&this.children.splice(n,1)}}return this},getBoundingClientRect:function(e){var t,i,r,s,n,a,o,l,c,f;this._update(!0);var d=1/0,_=-1/0,u=1/0,g=-1/0,p=/texture|gradient/i;i=e?this._matrix:h(this);for(var m=0;ma+(t=(i=this.children[e]).length)?(i.beginning=1,i.ending=1):ha&&oa&&h0&&0!==this._scale)for(var a=0;a0&&(e.lineDashOffset=V.offset||0,e.setLineDash(V)),e.beginPath();for(var U=0;U=m&&u&&(k=A,P=x.controls&&x.controls.right||w.zero,E=k.controls&&k.controls.left||w.zero,x._relative?(M=P.x+x.x,O=P.y+x.y):(M=P.x,O=P.y),k._relative?(S=E.x+k.x,R=E.y+k.y):(S=E.x,R=E.y),C=k.x,L=k.y,e.bezierCurveTo(M,O,S,R,C,L));break;case t.line:e.lineTo(C,L);break;case t.move:A=x,e.moveTo(C,L)}return u&&e.closePath(),I||r||(fe.isHidden.test(o)||((B=o._renderer&&o._renderer.offset)&&(e.save(),e.translate(-o._renderer.offset.x,-o._renderer.offset.y),e.scale(o._renderer.scale.x,o._renderer.scale.y)),e.fill(),B&&e.restore()),fe.isHidden.test(n)||((B=n._renderer&&n._renderer.offset)&&(e.save(),e.translate(-n._renderer.offset.x,-n._renderer.offset.y),e.scale(n._renderer.scale.x,n._renderer.scale.y),e.lineWidth=a/n._renderer.scale.x),e.stroke(),B&&e.restore())),N||e.restore(),I&&!r&&e.clip(),V&&V.length>0&&e.setLineDash(ie),this.flagReset()}},points:{render:function(e,t,i){var r,n,o,l,c,f,d,_,u,g,p,m,y,v,b,x;if(x=this.parent&&this.parent._renderer?this.parent._renderer.opacity:1,c=this._opacity*(x||1),f=this._visible,!(t||f&&0!==c))return this;this._update(),r=this._matrix.elements,n=this._stroke,o=this._linewidth,l=this._fill,u=(_=this._renderer.collection).length,y=ce(r),b=this.dashes,d=this._size,y||(e.save(),e.transform(r[0],r[3],r[1],r[4],r[2],r[5])),l&&("string"==typeof l?e.fillStyle=l:(fe[l._renderer.type].render.call(l,e),e.fillStyle=l._renderer.effect)),n&&("string"==typeof n?e.strokeStyle=n:(fe[n._renderer.type].render.call(n,e),e.strokeStyle=n._renderer.effect),o&&(e.lineWidth=o)),"number"==typeof c&&(e.globalAlpha=c),b&&b.length>0&&(e.lineDashOffset=b.offset||0,e.setLineDash(b)),e.beginPath();var k,w=.5*d;this._sizeAttenuation||(h(this,te),k=te.elements,k=a(k[0],k[3],k[1],k[4],k[2],k[5]),w/=Math.max(k.scaleX,k.scaleY));for(var A=0;A0&&e.setLineDash(ie),this.flagReset()}},text:{render:function(e,t,i){var r=this.parent&&this.parent._renderer?this.parent._renderer.opacity:1,s=this._opacity*r,n=this._visible,a=this._mask,o=this._clip;if(!t&&(!n||o||0===s))return this;this._update();var h,l,c,f,d,_,u,g,p,m,y,v=this._matrix.elements,b=this._stroke,x=this._linewidth,k=this._fill,w=this._decoration,A=ce(v),S=k._renderer&&k._renderer.offset&&b._renderer&&b._renderer.offset,R=this.dashes,M=fe.alignments[this._alignment]||this._alignment,O=this._baseline;if(A||(e.save(),e.transform(v[0],v[3],v[1],v[4],v[2],v[5])),a&&fe[a._renderer.type].render.call(a,e,!0),S||(e.font=[this._style,this._weight,this._size+"px/"+this._leading+"px",this._family].join(" ")),e.textAlign=M,e.textBaseline=O,k&&("string"==typeof k?e.fillStyle=k:(fe[k._renderer.type].render.call(k,e),e.fillStyle=k._renderer.effect)),b&&("string"==typeof b?e.strokeStyle=b:(fe[b._renderer.type].render.call(b,e),e.strokeStyle=b._renderer.effect),x&&(e.lineWidth=x)),"number"==typeof s&&(e.globalAlpha=s),R&&R.length>0&&(e.lineDashOffset=R.offset||0,e.setLineDash(R)),o||i||(fe.isHidden.test(k)||(k._renderer&&k._renderer.offset?(_=k._renderer.scale.x,u=k._renderer.scale.y,e.save(),e.translate(-k._renderer.offset.x,-k._renderer.offset.y),e.scale(_,u),h=this._size/k._renderer.scale.y,l=this._leading/k._renderer.scale.y,e.font=[this._style,this._weight,h+"px/",l+"px",this._family].join(" "),c=k._renderer.offset.x/k._renderer.scale.x,f=k._renderer.offset.y/k._renderer.scale.y,e.fillText(this.value,c,f),e.restore()):e.fillText(this.value,0,0)),fe.isHidden.test(b)||(b._renderer&&b._renderer.offset?(_=b._renderer.scale.x,u=b._renderer.scale.y,e.save(),e.translate(-b._renderer.offset.x,-b._renderer.offset.y),e.scale(_,u),h=this._size/b._renderer.scale.y,l=this._leading/b._renderer.scale.y,e.font=[this._style,this._weight,h+"px/",l+"px",this._family].join(" "),c=b._renderer.offset.x/b._renderer.scale.x,f=b._renderer.offset.y/b._renderer.scale.y,d=x/b._renderer.scale.x,e.lineWidth=d,e.strokeText(this.value,c,f),e.restore()):e.strokeText(this.value,0,0))),/(underline|strikethrough)/i.test(w)){var T=e.measureText(this.value),F=1;switch(w){case"underline":p=T.actualBoundingBoxAscent,y=T.actualBoundingBoxAscent;break;case"strikethrough":p=0,y=0,F=.5}switch(O){case"top":p+=this._size*F,y+=this._size*F;break;case"baseline":case"bottom":p-=this._size*F,y-=this._size*F}switch(M){case"left":case"start":g=0,m=T.width;break;case"right":case"end":g=-T.width,m=0;break;default:g=-T.width/2,m=T.width/2}e.lineWidth=Math.max(Math.floor(this._size/15),1),e.strokeStyle=e.fillStyle,e.beginPath(),e.moveTo(g,p),e.lineTo(m,y),e.stroke()}return A||e.restore(),o&&!i&&e.clip(),R&&R.length>0&&e.setLineDash(ie),this.flagReset()}},"linear-gradient":{render:function(e){if(this._update(),!this._renderer.effect||this._flagEndPoints||this._flagStops){this._renderer.effect=e.createLinearGradient(this.left._x,this.left._y,this.right._x,this.right._y);for(var t=0;t1){var x=le(b);p=(r*=x)*r,m=(n*=x)*n}var k=p*v+m*y,w=le(re(0,(p*m-k)/k));a===o&&(w=-w);var A=w*r*g/n,S=-w*n*u/r,R=oe(h)*A-ae(h)*S+(t+l)/2,M=ae(h)*A+oe(h)*S+(i+c)/2,O=_e(1,0,(u-A)/r,(g-S)/n);!function(e,t,i,r,n,a,o,h,l){var c=P.Tolerance.epsilon,f=o-a,_=Math.abs(f)0&&"number"==typeof i.height&&i.height>0?r():ue.isHeadless||"function"!=typeof i.addEventListener||(i.addEventListener("load",r,!1),i.addEventListener("error",s,!1)),e._src=Re.getAbsoluteURL(e._src),!ue.isHeadless&&i&&i.getAttribute("two-src")||(ue.isHeadless||i.setAttribute("two-src",e.src),Re.ImageRegistry.add(e.src,i),ue.isHeadless?Re.loadHeadlessBuffer(e,r):e.image.src=e.src)},video:function(e,t){if(ue.isHeadless)throw new me("video textures are not implemented in headless environments.");var i=function(s){e.image.removeEventListener("canplaythrough",i,!1),e.image.removeEventListener("error",r,!1),e.image.width=e.image.videoWidth,e.image.height=e.image.videoHeight,"function"==typeof t&&t()},r=function(t){throw e.image.removeEventListener("canplaythrough",i,!1),e.image.removeEventListener("error",r,!1),new me("unable to load "+e.src)};e._src=Re.getAbsoluteURL(e._src),e.image.getAttribute("two-src")||(e.image.setAttribute("two-src",e.src),Re.ImageRegistry.add(e.src,e.image)),e.image.readyState>=4?i():(e.image.addEventListener("canplaythrough",i,!1),e.image.addEventListener("error",r,!1),e.image.src=e.src,e.image.load())}},load:function(e,t){var i=e.image,r=Re.getTag(i);e._flagImage&&(/canvas/i.test(r)?Re.Register.canvas(e,t):(e._src=!ue.isHeadless&&i.getAttribute("two-src")||i.src,Re.Register[r](e,t))),e._flagSrc&&(i||(i=Re.getImage(e.src),e.image=i),r=Re.getTag(i),Re.Register[r](e,t))},FlagOffset:function(){this._flagOffset=!0},FlagScale:function(){this._flagScale=!0},MakeObservable:function(e){y.each(Re.Properties,ve,e),Object.defineProperty(e,"image",{enumerable:!0,get:function(){return this._image},set:function(e){var t;switch(Re.getTag(e)){case"canvas":t="#"+e.id;break;default:t=e.src}Re.ImageRegistry.contains(t)?this._image=Re.ImageRegistry.get(e.src):this._image=e,this._flagImage=!0}}),Object.defineProperty(e,"offset",{enumerable:!0,get:function(){return this._offset},set:function(e){this._offset&&this._offset.unbind(v.Types.change,this._renderer.flagOffset),this._offset=e,this._offset.bind(v.Types.change,this._renderer.flagOffset),this._flagOffset=!0}}),Object.defineProperty(e,"scale",{enumerable:!0,get:function(){return this._scale},set:function(e){this._scale instanceof w&&this._scale.unbind(v.Types.change,this._renderer.flagScale),this._scale=e,this._scale instanceof w&&this._scale.bind(v.Types.change,this._renderer.flagScale),this._flagScale=!0}}),Object.defineProperty(e,"renderer",{enumerable:!1,get:function(){return this._renderer},set:function(e){this._renderer=e}})}}),y.extend(Re.prototype,v,q.prototype,{constructor:Re,_flagId:!1,_flagSrc:!1,_flagImage:!1,_flagVideo:!1,_flagLoaded:!1,_flagRepeat:!1,_flagOffset:!1,_flagScale:!1,_id:"",_src:"",_image:null,_loaded:!1,_repeat:"no-repeat",_scale:1,_offset:null,clone:function(){var e=new Re(this.src);return e.repeat=this.repeat,e.offset.copy(this.origin),e.scale=this.scale,e},toObject:function(){return{src:this.src,repeat:this.repeat,origin:this.origin.toObject(),scale:"number"==typeof this.scale?this.scale:this.scale.toObject()}},_update:function(){return(this._flagSrc||this._flagImage)&&(this.trigger(v.Types.change),(this._flagSrc||this._flagImage)&&(this.loaded=!1,Re.load(this,function(){this.loaded=!0,this.trigger(v.Types.change).trigger(v.Types.load)}.bind(this)))),this._image&&this._image.readyState>=4&&(this._flagVideo=!0),this},flagReset:function(){return this._flagSrc=this._flagImage=this._flagLoaded=this._flagVideo=this._flagScale=this._flagOffset=!1,this}}),Re.MakeObservable(Re.prototype);var Me=Math.min,Oe=Math.max,Te=Math.ceil,Fe=Math.floor;function Pe(e,t,i,r){q.call(this),this._renderer.type="path",this._renderer.flagVertices=Pe.FlagVertices.bind(this),this._renderer.bindVertices=Pe.BindVertices.bind(this),this._renderer.unbindVertices=Pe.UnbindVertices.bind(this),this._renderer.flagFill=Pe.FlagFill.bind(this),this._renderer.flagStroke=Pe.FlagStroke.bind(this),this._renderer.vertices=[],this._renderer.collection=[],this._closed=!!t,this._curved=!!i,this.beginning=0,this.ending=1,this.fill="#fff",this.stroke="#000",this.linewidth=1,this.opacity=1,this.className="",this.visible=!0,this.cap="butt",this.join="miter",this.miter=4,this.vertices=e,this.automatic=!r,this.dashes=[],this.dashes.offset=0}function Ee(e,t){if(0===t||1===t)return!0;for(var i=e._length*t,r=0,s=0;s=i)return i-r>=0;r+=n}return!1}function Ce(e,t){var i=e._length;if(t<=0)return 0;if(t>=i)return e._lengths.length-1;for(var r=0,s=0;r=t)return t-=s,Math.max(r-1,0)+t/e._lengths[r];s+=e._lengths[r]}return-1}function Le(e,t,i){var r,s,n,a,o,h,l,c,f=t.controls&&t.controls.right,d=e.controls&&e.controls.left;return r=t.x,o=t.y,s=(f||t).x,h=(f||t).y,n=(d||e).x,l=(d||e).y,a=e.x,c=e.y,f&&t._relative&&(s+=t.x,h+=t.y),d&&e._relative&&(n+=e.x,l+=e.y),L(r,o,s,h,n,l,a,c,i)}function je(e,t,i){var r,s,n,a,o,h,l,c,f=t.controls&&t.controls.right,d=e.controls&&e.controls.left;return r=t.x,o=t.y,s=(f||t).x,h=(f||t).y,n=(d||e).x,l=(d||e).y,a=e.x,c=e.y,f&&t._relative&&(s+=t.x,h+=t.y),d&&e._relative&&(n+=e.x,l+=e.y),C(r,o,s,h,n,l,a,c,i)}function Ie(e,t,i,r){Pe.call(this,[new M,new M,new M,new M],!0,!1,!0),this.width=i,this.height=r,this.origin=new w,this.translation.set(e,t),this._update()}function Ne(e,t,i,r,s,n){Pe.call(this,[new M,new M,new M,new M],!0),this.noStroke(),this.noFill(),e instanceof Re?this.texture=e:"string"==typeof e&&(this.texture=new Re(e)),this.origin=new w,this._update(),this.translation.set(t||0,i||0),"number"==typeof r&&(this.columns=r),"number"==typeof s&&(this.rows=s),"number"==typeof n&&(this.frameRate=n),this.index=0}y.extend(Pe,{Properties:["fill","stroke","linewidth","opacity","visible","cap","join","miter","closed","curved","automatic","beginning","ending"],Utils:{getCurveLength:Le},FlagVertices:function(){this._flagVertices=!0,this._flagLength=!0,this.parent&&(this.parent._flagLength=!0)},BindVertices:function(e){for(var t=e.length;t--;)e[t].bind(v.Types.change,this._renderer.flagVertices);this._renderer.flagVertices()},UnbindVertices:function(e){for(var t=e.length;t--;)e[t].unbind(v.Types.change,this._renderer.flagVertices);this._renderer.flagVertices()},FlagFill:function(){this._flagFill=!0},FlagStroke:function(){this._flagStroke=!0},MakeObservable:function(e){q.MakeObservable(e),y.each(Pe.Properties.slice(2,8),ve,e),Object.defineProperty(e,"fill",{enumerable:!0,get:function(){return this._fill},set:function(e){(this._fill instanceof ke||this._fill instanceof we||this._fill instanceof Ae||this._fill instanceof Re)&&this._fill.unbind(v.Types.change,this._renderer.flagFill),this._fill=e,this._flagFill=!0,(this._fill instanceof ke||this._fill instanceof we||this._fill instanceof Ae||this._fill instanceof Re)&&this._fill.bind(v.Types.change,this._renderer.flagFill)}}),Object.defineProperty(e,"stroke",{enumerable:!0,get:function(){return this._stroke},set:function(e){(this._stroke instanceof ke||this._stroke instanceof we||this._stroke instanceof Ae||this._stroke instanceof Re)&&this._stroke.unbind(v.Types.change,this._renderer.flagStroke),this._stroke=e,this._flagStroke=!0,(this._stroke instanceof ke||this._stroke instanceof we||this._stroke instanceof Ae||this._stroke instanceof Re)&&this._stroke.bind(v.Types.change,this._renderer.flagStroke)}}),Object.defineProperty(e,"length",{get:function(){return this._flagLength&&this._updateLength(),this._length}}),Object.defineProperty(e,"closed",{enumerable:!0,get:function(){return this._closed},set:function(e){this._closed=!!e,this._flagVertices=!0}}),Object.defineProperty(e,"curved",{enumerable:!0,get:function(){return this._curved},set:function(e){this._curved=!!e,this._flagVertices=!0}}),Object.defineProperty(e,"automatic",{enumerable:!0,get:function(){return this._automatic},set:function(e){if(e!==this._automatic){this._automatic=!!e;var t=this._automatic?"ignore":"listen";y.each(this.vertices,(function(e){e[t]()}))}}}),Object.defineProperty(e,"beginning",{enumerable:!0,get:function(){return this._beginning},set:function(e){this._beginning=e,this._flagVertices=!0}}),Object.defineProperty(e,"ending",{enumerable:!0,get:function(){return this._ending},set:function(e){this._ending=e,this._flagVertices=!0}}),Object.defineProperty(e,"vertices",{enumerable:!0,get:function(){return this._collection},set:function(e){var t=this._renderer.bindVertices,i=this._renderer.unbindVertices;this._collection&&this._collection.unbind(v.Types.insert,t).unbind(v.Types.remove,i),this._collection=e instanceof K?e:new K(e||[]),this._collection.bind(v.Types.insert,t).bind(v.Types.remove,i),t(this._collection)}}),Object.defineProperty(e,"mask",{enumerable:!0,get:function(){return this._mask},set:function(e){this._mask=e,this._flagMask=!0,e.clip||(e.clip=!0)}}),Object.defineProperty(e,"clip",{enumerable:!0,get:function(){return this._clip},set:function(e){this._clip=e,this._flagClip=!0}}),Object.defineProperty(e,"dashes",{enumerable:!0,get:function(){return this._dashes},set:function(e){"number"!=typeof e.offset&&(e.offset=this.dashes&&this._dashes.offset||0),this._dashes=e}})}}),y.extend(Pe.prototype,q.prototype,{constructor:Pe,_flagVertices:!0,_flagLength:!0,_flagFill:!0,_flagStroke:!0,_flagLinewidth:!0,_flagOpacity:!0,_flagVisible:!0,_flagCap:!0,_flagJoin:!0,_flagMiter:!0,_flagMask:!1,_flagClip:!1,_length:0,_fill:"#fff",_stroke:"#000",_linewidth:1,_opacity:1,_visible:!0,_cap:"round",_join:"round",_miter:4,_closed:!0,_curved:!1,_automatic:!0,_beginning:0,_ending:1,_mask:null,_clip:!1,_dashes:null,clone:function(e){for(var t=new Pe,i=0;i=x){this._closed?(r=d(R,k),s=d(R-1,k),0===R&&(r=s,s=R)):(r=R,s=Math.min(Math.max(R-1,0),w)),A=this.vertices[r],S=this.vertices[s],x-=T,e=0!==this._lengths[R]?x/this._lengths[R]:0;break}T+=this._lengths[R]}if(null===A||null===S)return null;if(!A)return S;if(!S)return A;b=S.controls&&S.controls.right,v=A.controls&&A.controls.left,o=S.x,u=S.y,h=(b||S).x,g=(b||S).y,c=(v||A).x,p=(v||A).y,f=A.x,m=A.y,b&&S.relative&&(h+=S.x,g+=S.y),v&&A.relative&&(c+=A.x,p+=A.y),a=E(e,o,h,c,f),_=E(e,u,g,p,m);var F=l(o,h,e),P=l(u,g,e),C=l(h,c,e),L=l(g,p,e),j=l(c,f,e),I=l(p,m,e),N=l(F,C,e),B=l(P,L,e),V=l(C,j,e),z=l(L,I,e);return y.isObject(i)?(i.x=a,i.y=_,y.isObject(i.controls)||M.AppendCurveProperties(i),i.controls.left.x=N,i.controls.left.y=B,i.controls.right.x=V,i.controls.right.y=z,("boolean"===(i.relative,!1)||i.relative)&&(i.controls.left.x-=a,i.controls.left.y-=_,i.controls.right.x-=a,i.controls.right.y-=_),i.t=e,i):((n=new M(a,_,N-a,B-_,V-a,z-_,this._curved?t.curve:t.line)).t=e,n)},plot:function(){if(this.curved)return N(this._collection,this.closed),this;for(var e=0;e0&&(n[n.length-1].command=t.line),void(r=a);var h=je(a,r,e);n=n.concat(h),y.each(h,(function(e,i){i<=0&&r.command===t.move?e.command=t.move:e.command=t.line})),o>=i&&(this._closed&&this._automatic?(h=je(a,r=a,e),n=n.concat(h),y.each(h,(function(e,i){i<=0&&r.command===t.move?e.command=t.move:e.command=t.line}))):s&&n.push(new M(a.x,a.y)),n[n.length-1].command=s?t.close:t.line),r=a}}),this),this._automatic=!1,this._curved=!1,this.vertices=n,this},_updateLength:function(e,i){i||this._update();var r=this.vertices.length,s=r-1,n=this.vertices[s],a=0;return void 0===this._lengths&&(this._lengths=[]),y.each(this.vertices,(function(i,r){if(r<=0||i.command===t.move)return n=i,void(this._lengths[r]=0);this._lengths[r]=Le(i,n,e),a+=this._lengths[r],n=i}),this),this._length=a,this._flagLength=!1,this},_update:function(){if(this._flagVertices){this._automatic&&this.plot(),this._flagLength&&this._updateLength(void 0,!0);var e,i,r,s,n,a=this._collection.length,o=this._closed,h=Math.min(this._beginning,this._ending),l=Math.max(this._beginning,this._ending),c=Ce(this,h*this._length),f=Ce(this,l*this._length),d=Te(c),_=Fe(f);this._renderer.vertices.length=0;for(var u=0;u_&&!i?((n=this._renderer.collection[u]).copy(this._collection[u]),this.getPointAt(l,n),n.command=this._renderer.collection[u].command,this._renderer.vertices.push(n),i=n,(r=this._collection[u-1])&&r.controls&&(n.controls.right.clear(),this._renderer.collection[u-1].controls.right.clear().lerp(r.controls.right,n.t))):u>=d&&u<=_&&(n=this._renderer.collection[u].copy(this._collection[u]),this._renderer.vertices.push(n),u===_&&Ee(this,l)?(i=n,!o&&i.controls&&i.controls.right.clear()):u===d&&Ee(this,h)&&((e=n).command=t.move,!o&&e.controls&&e.controls.left.clear()));d>0&&!e&&(u=d-1,(n=this._renderer.collection[u]).copy(this._collection[u]),this.getPointAt(h,n),n.command=t.move,this._renderer.vertices.unshift(n),e=n,(s=this._collection[u+1])&&s.controls&&(n.controls.left.clear(),this._renderer.collection[u+1].controls.left.copy(s.controls.left).lerp(w.zero,n.t)))}return q.prototype._update.apply(this,arguments),this},flagReset:function(){return this._flagVertices=this._flagLength=this._flagFill=this._flagStroke=this._flagLinewidth=this._flagOpacity=this._flagVisible=this._flagCap=this._flagJoin=this._flagMiter=this._flagClip=!1,q.prototype.flagReset.call(this),this}}),Pe.MakeObservable(Pe.prototype),y.extend(Ie,{Properties:["width","height"],MakeObservable:function(e){Pe.MakeObservable(e),y.each(Ie.Properties,ve,e),Object.defineProperty(e,"origin",{enumerable:!0,get:function(){return this._origin},set:function(e){this._origin&&this._origin.unbind(v.Types.change,this._renderer.flagVertices),this._origin=e,this._origin.bind(v.Types.change,this._renderer.flagVertices),this._renderer.flagVertices()}})}}),y.extend(Ie.prototype,Pe.prototype,{constructor:Ie,_flagWidth:0,_flagHeight:0,_width:0,_height:0,_origin:null,_update:function(){if(this._flagVertices||this._flagWidth||this._flagHeight){var e=this._width/2,i=this._height/2;this._closed||4!==this.vertices.length||this.vertices.push(new M),this.vertices[0].set(-e,-i).sub(this._origin).command=t.move,this.vertices[1].set(e,-i).sub(this._origin).command=t.line,this.vertices[2].set(e,i).sub(this._origin).command=t.line,this.vertices[3].set(-e,i).sub(this._origin).command=t.line,this.vertices[4]&&(this.vertices[4].set(-e,-i).sub(this._origin).command=t.line)}return Pe.prototype._update.call(this),this},flagReset:function(){return this._flagWidth=this._flagHeight=!1,Pe.prototype.flagReset.call(this),this},clone:function(e){var t=new Ie(0,0,this.width,this.height);return t.translation.copy(this.translation),t.rotation=this.rotation,t.scale=this.scale,t.skewX=this.skewX,t.skewY=this.skewY,this.matrix.manual&&t.matrix.copy(this.matrix),y.each(Pe.Properties,(function(e){t[e]=this[e]}),this),e&&e.add(t),t},toObject:function(){var e=Pe.prototype.toObject.call(this);return e.width=this.width,e.height=this.height,e.origin=this.origin.toObject(),e}}),Ie.MakeObservable(Ie.prototype),y.extend(Ne,{Properties:["texture","columns","rows","frameRate","index"],MakeObservable:function(e){Ie.MakeObservable(e),y.each(Ne.Properties,ve,e)}}),y.extend(Ne.prototype,Ie.prototype,{constructor:Ne,_flagTexture:!1,_flagColumns:!1,_flagRows:!1,_flagFrameRate:!1,flagIndex:!1,_amount:1,_duration:0,_startTime:0,_playing:!1,_firstFrame:0,_lastFrame:0,_loop:!0,_texture:null,_columns:1,_rows:1,_frameRate:0,_index:0,_origin:null,play:function(e,t,i){return this._playing=!0,this._firstFrame=0,this._lastFrame=this.amount-1,this._startTime=y.performance.now(),"number"==typeof e&&(this._firstFrame=e),"number"==typeof t&&(this._lastFrame=t),"function"==typeof i?this._onLastFrame=i:delete this._onLastFrame,this._index!==this._firstFrame&&(this._startTime-=1e3*Math.abs(this._index-this._firstFrame)/this._frameRate),this},pause:function(){return this._playing=!1,this},stop:function(){return this._playing=!1,this._index=0,this},clone:function(e){var t=new Ne(this.texture,this.translation.x,this.translation.y,this.columns,this.rows,this.frameRate);return this.playing&&(t.play(this._firstFrame,this._lastFrame),t._loop=this._loop),e&&e.add(t),t},toObject:function(){var e=Ie.prototype.toObject.call(this);return e.texture=this.texture.toObject(),e.columns=this.columns,e.rows=this.rows,e.frameRate=this.frameRate,e.index=this.index,e._firstFrame=this._firstFrame,e._lastFrame=this._lastFrame,e._loop=this._loop,e},_update:function(){var e,t,i,r,s,n,a,o,h,c=this._texture,f=this._columns,d=this._rows;if((this._flagColumns||this._flagRows)&&(this._amount=this._columns*this._rows),this._flagFrameRate&&(this._duration=1e3*this._amount/this._frameRate),this._flagTexture&&(this.fill=this._texture),this._texture.loaded){e=(a=c.image.width)/f,t=(o=c.image.height)/d,r=this._amount,this.width!==e&&(this.width=e),this.height!==t&&(this.height=t),this._playing&&this._frameRate>0&&(y.isNaN(this._lastFrame)&&(this._lastFrame=r-1),i=y.performance.now()-this._startTime,s=1e3*((h=this._lastFrame+1)-this._firstFrame)/this._frameRate,this._loop?i%=s:i=Math.min(i,s),n=l(this._firstFrame,h,i/s),(n=Math.floor(n))!==this._index&&(this._index=n,n>=this._lastFrame-1&&this._onLastFrame&&this._onLastFrame()));var _=-e*(this._index%f)+(a-e)/2,u=-t*Math.floor(this._index/f)+(o-t)/2;_!==c.offset.x&&(c.offset.x=_),u!==c.offset.y&&(c.offset.y=u)}return Ie.prototype._update.call(this),this},flagReset:function(){return this._flagTexture=this._flagColumns=this._flagRows=this._flagFrameRate=!1,Ie.prototype.flagReset.call(this),this}}),Ne.MakeObservable(Ne.prototype);var Be=Math.cos,Ve=Math.sin;function ze(e,t,i,r){for(var s=r?Math.max(r,2):4,n=[],a=0;a2&&(e-=1);for(var i=4/3*Math.tan(Math.PI/(2*e)),r=this._radius,a=r*i,o=0;o2&&(e-=1);for(var i=4/3*Math.tan(Math.PI/(2*this.vertices.length)),r=this._width/2,a=this._height/2,o=0;o=0&&t.splice(n,1)}return t},rt=function(e,t,i){var s,n,o,h,l,c,f,d,_,u,g,p,m={},v={},b={};if(r.getComputedStyle){var x=r.getComputedStyle(e);for(s=x.length;s--;)void 0!==(h=x[o=x[s]])&&(m[o]=h)}for(s=0;s0?e.gradientTransform.baseVal[0].matrix:e.getCTM?e.getCTM():null))break;switch(f=a(n),t._renderer.type){case"linear-gradient":Qe(f,t.left),Qe(f,t.right);break;case"radial-gradient":t.center.x+=f.translateX,t.center.y+=f.translateY,t.focal.x+=f.translateX,t.focal.y+=f.translateY,t.radius*=Math.max(f.scaleX,f.scaleY)}break;case"transform":if(/none/i.test(h))break;if(null===(n=e.transform&&e.transform.baseVal&&e.transform.baseVal.length>0?e.transform.baseVal[0].matrix:e.getCTM?e.getCTM():null))break;F.AutoCalculateImportedMatrices?(f=a(n),t.translation.set(f.translateX,f.translateY),t.rotation=Math.PI*(f.rotation/180),t.scale=new w(f.scaleX,f.scaleY),d=parseFloat((m.x+"").replace("px")),_=parseFloat((m.y+"").replace("px")),d&&(t.translation.x=d),_&&(t.translation.y=_)):(n=e.getCTM(),t._matrix.manual=!0,t._matrix.set(n.a,n.b,n.c,n.d,n.e,n.f));break;case"visible":if(t instanceof Q){t._visible=h;break}t.visible=h;break;case"stroke-linecap":if(t instanceof Q){t._cap=h;break}t.cap=h;break;case"stroke-linejoin":if(t instanceof Q){t._join=h;break}t.join=h;break;case"stroke-miterlimit":if(t instanceof Q){t._miter=h;break}t.miter=h;break;case"stroke-width":if(t instanceof Q){t._linewidth=parseFloat(h);break}t.linewidth=parseFloat(h);break;case"opacity":case"stroke-opacity":case"fill-opacity":if(t instanceof Q){t._opacity=parseFloat(h);break}t.opacity=parseFloat(h);break;case"clip-path":if(/url\(#.*\)/i.test(h)&&(u=h.replace(/url\(#(.*)\)/i,"$1"),at.defs.current&&at.defs.current.contains(u)&&(g=at.defs.current.get(u))&&g.childNodes.length>0))switch(g=g.childNodes[0],p=Ze(g.nodeName),t.mask=at[p].call(this,g,{}),t._renderer.type){case"text":case"path":t.position.add(t.mask.position),t.mask.position.clear()}break;case"fill":case"stroke":l=(t instanceof Q?"_":"")+o,/url\(#.*\)/i.test(h)?(u=h.replace(/url\(#(.*)\)/i,"$1"),e.setAttribute(o,h.replace(/\)/i,"-"+F.Identifier+"applied)")),at.defs.current&&at.defs.current.contains(u)?(g=at.defs.current.get(u),p=Ze(g.nodeName),g=at[p].call(this,g,{})):g=nt(this).getById(u),t[l]=g):t[l]=/none/i.test(h)?"transparent":h;break;case"id":t.id=h,e.id=h+"-"+F.Identifier+"applied";break;case"class":case"className":t.classList=h.split(" ");break;case"x":case"y":if(t instanceof ke||t instanceof we||t instanceof Ae)break;if(h.match("[a-z%]$")&&!h.endsWith("px")){var k=new me("only pixel values are supported with the "+o+" attribute.");console.warn(k.name,k.message)}t.translation[o]=parseFloat(h);break;case"font-family":t instanceof qe&&(t.family=h);break;case"font-size":t instanceof qe&&(t.size=h);break;case"font-weight":t instanceof qe&&(t.weight=h);break;case"font-style":t instanceof qe&&(t.style=h);break;case"text-decoration":t instanceof qe&&(t.decoration=h);break;case"line-height":t instanceof qe&&(t.leading=h)}return m},st=function(e,t){for(var i=0,r=e.childNodes.length;i with no href."),console.warn(i.name,i.message),null;var s=r.slice(1);if(!at.defs.current.contains(s))return i=new me("unable to find element for reference "+r+"."),console.warn(i.name,i.message),null;for(var n=at.defs.current.get(s).cloneNode(!0),a=["x","y","width","height","href","xlink:href"],o=0;o1&&(i=1);break;case"m":case"l":case"t":o.length>2&&(i=2);break;case"s":case"q":o.length>4&&(i=4);break;case"c":o.length>6&&(i=6);break;case"a":o.length>7&&(i=7)}if(i){for(r=0,s=o.length,a=0;r0)switch(h){case"m":n="l";break;case"M":n="L"}f.push(n+o.slice(r,r+i).join(" ")),a++}c=Array.prototype.concat.apply(c,f)}else c.push(e)})),y.each(c,(function(e,i){var r,c,d,_,u,g,p,m,v,b,x=e[0],k=x.toLowerCase();switch(h=e.slice(1).trim().match(Ke),a=x===k,k){case"z":if(i>=f)n=!0;else{r=new M(l.x,l.y,void 0,void 0,void 0,void 0,t.close);for(var A=s.length-1;A>=0;A--){var S=s[A];if(/m/i.test(S.command)){l=S;break}}}break;case"m":case"l":o=void 0,r=new M(parseFloat(h[0]),parseFloat(h[1]),void 0,void 0,void 0,void 0,/m/i.test(k)?t.move:t.line),a&&r.addSelf(l),l=r;break;case"h":case"v":var R=/h/i.test(k)?"x":"y",O=/x/i.test(R)?"y":"x";(r=new M(void 0,void 0,void 0,void 0,void 0,void 0,t.line))[R]=parseFloat(h[0]),r[O]=l[O],a&&(r[R]+=l[R]),l=r;break;case"c":case"s":c=l.x,d=l.y,o||(o=new w),/c/i.test(k)?(_=parseFloat(h[0]),u=parseFloat(h[1]),g=parseFloat(h[2]),p=parseFloat(h[3]),m=parseFloat(h[4]),v=parseFloat(h[5])):(_=(b=V(l,o,a)).x,u=b.y,g=parseFloat(h[0]),p=parseFloat(h[1]),m=parseFloat(h[2]),v=parseFloat(h[3])),a&&(_+=c,u+=d,g+=c,p+=d,m+=c,v+=d),y.isObject(l.controls)||M.AppendCurveProperties(l),l.controls.right.set(_-l.x,u-l.y),r=new M(m,v,g-m,p-v,void 0,void 0,t.curve),l=r,o=r.controls.left;break;case"t":case"q":c=l.x,d=l.y,o||(o=new w),/q/i.test(k)?(_=parseFloat(h[0]),u=parseFloat(h[1]),g=parseFloat(h[0]),p=parseFloat(h[1]),m=parseFloat(h[2]),v=parseFloat(h[3])):(_=(b=V(l,o,a)).x,u=b.y,g=b.x,p=b.y,m=parseFloat(h[0]),v=parseFloat(h[1])),a&&(_+=c,u+=d,g+=c,p+=d,m+=c,v+=d),y.isObject(l.controls)||M.AppendCurveProperties(l),l.controls.right.set(.33*(_-l.x),.33*(u-l.y)),r=new M(m,v,g-m,p-v,void 0,void 0,t.curve),l=r,o=r.controls.left;break;case"a":c=l.x,d=l.y;var T=parseFloat(h[0]),F=parseFloat(h[1]),P=parseFloat(h[2]),E=parseFloat(h[3]),C=parseFloat(h[4]);m=parseFloat(h[5]),v=parseFloat(h[6]),a&&(m+=c,v+=d);var L=new M(m,v);L.command=t.arc,L.rx=T,L.ry=F,L.xAxisRotation=P,L.largeArcFlag=E,L.sweepFlag=C,r=L,l=L,o=void 0}r&&(Array.isArray(r)?s=s.concat(r):s.push(r))}))}(r=new Pe(s,n,void 0,!0).noStroke()).fill="black";var d=r.getBoundingClientRect(!0);return d.centroid={x:d.left+d.width/2,y:d.top+d.height/2},y.each(r.vertices,(function(e){e.subSelf(d.centroid)})),rt.call(this,e,r,i),r.translation.addSelf(d.centroid),r},circle:function(e,t){var i=parseFloat(e.getAttribute("cx")),r=parseFloat(e.getAttribute("cy")),s=new ze(0,0,parseFloat(e.getAttribute("r"))).noStroke();return s.fill="black",rt.call(this,e,s,t),s.translation.x=i,s.translation.y=r,s},ellipse:function(e,t){var i=parseFloat(e.getAttribute("cx")),r=parseFloat(e.getAttribute("cy")),s=new Xe(0,0,parseFloat(e.getAttribute("rx")),parseFloat(e.getAttribute("ry"))).noStroke();return s.fill="black",rt.call(this,e,s,t),s.translation.x=i,s.translation.y=r,s},rect:function(e,t){var i=parseFloat(e.getAttribute("rx")),r=parseFloat(e.getAttribute("ry"));if(!y.isNaN(i)||!y.isNaN(r))return at["rounded-rect"](e);var s=parseFloat(e.getAttribute("width")),n=parseFloat(e.getAttribute("height")),a=s/2,o=n/2,h=new Ie(0,0,s,n).noStroke();return h.fill="black",rt.call(this,e,h,t),h.translation.x+=a,h.translation.y+=o,h},"rounded-rect":function(e,t){var i=parseFloat(e.getAttribute("rx"))||0,r=parseFloat(e.getAttribute("ry"))||0,s=parseFloat(e.getAttribute("width")),n=parseFloat(e.getAttribute("height")),a=s/2,o=n/2,h=new He(0,0,s,n,new w(i,r)).noStroke();return h.fill="black",rt.call(this,e,h,t),h.translation.x+=a,h.translation.y+=o,h},line:function(e,t){var i=new Ye(parseFloat(e.getAttribute("x1")),parseFloat(e.getAttribute("y1")),parseFloat(e.getAttribute("x2")),parseFloat(e.getAttribute("y2"))).noFill();return rt.call(this,e,i,t),i},lineargradient:function(e,t){for(var i=parseFloat(e.getAttribute("x1")),r=parseFloat(e.getAttribute("y1")),s=parseFloat(e.getAttribute("x2")),n=parseFloat(e.getAttribute("y2")),a=(s+i)/2,o=(n+r)/2,h=[],l=0;l1?d[1]:void 0),u=null===u?(d=!!g&&g.match(/stop-opacity:\s?([0-9.-]*)/))&&d.length>1?parseFloat(d[1]):1:parseFloat(u),h.push(new xe(f,_,u))}var p=new we(i-a,r-o,s-a,n-o,h);return rt.call(this,e,p,t),p},radialgradient:function(e,t){var i=parseFloat(e.getAttribute("cx"))||0,r=parseFloat(e.getAttribute("cy"))||0,s=parseFloat(e.getAttribute("r")),n=parseFloat(e.getAttribute("fx")),a=parseFloat(e.getAttribute("fy"));y.isNaN(n)&&(n=i),y.isNaN(a)&&(a=r);for(var o=Math.abs(i+n)/2,h=Math.abs(r+a)/2,l=[],c=0;c1?_[1]:void 0),g=null===g?(_=!!p&&p.match(/stop-opacity:\s?([0-9.-]*)/))&&_.length>1?parseFloat(_[1]):1:parseFloat(g),l.push(new xe(d,u,g))}var m=new Ae(i-o,r-h,s,l,n-o,a-h);return rt.call(this,e,m,t),m},text:function(e,t){var i=function(e){return $e[e]}(e.getAttribute("text-anchor"))||"left",r=function(e){var t=e.getAttribute("dominant-baseline"),i=e.getAttribute("alignment-baseline");return t||i}(e)||"baseline",s=new qe(e.textContent);return rt.call(this,e,s,t),s.alignment=i,s.baseline=r,s},clippath:function(e,t){return at.defs.current&&!at.defs.current.contains(e.id)&&at.defs.current.add(e.id,e),null},image:function(e,t){var i=e.getAttribute("href")||e.getAttribute("xlink:href");if(!i){var r=new me("encountered with no href.");return console.warn(r.name,r.message),null}var s=parseFloat(e.getAttribute("x"))||0,n=parseFloat(e.getAttribute("y"))||0,a=parseFloat(e.getAttribute("width")),o=parseFloat(e.getAttribute("height")),h=new Ne(i,s,n);return y.isNaN(a)||(h.width=a),y.isNaN(o)||(h.height=o),rt.call(this,e,h,t),h}};function ot(e,t){var i=new XMLHttpRequest;return i.open("GET",e),i.onreadystatechange=function(){4===i.readyState&&200===i.status&&t(i.responseText)},i.send(),i}function ht(e,t,i,r){Pe.call(this,[new M,new M,new M,new M],!0),this._renderer.flagTextures=ht.FlagTextures.bind(this),this._renderer.bindTextures=ht.BindTextures.bind(this),this._renderer.unbindTextures=ht.UnbindTextures.bind(this),this.noStroke(),this.noFill(),Array.isArray(e)?this.textures=e.map(ht.GenerateTexture.bind(this)):this.textures=[ht.GenerateTexture(e)],this.origin=new w,this._update(),this.translation.set(t||0,i||0),this.frameRate="number"==typeof r?r:ht.DefaultFrameRate,this.index=0}function lt(e,t,i,r,s,n,a){for(var o=a||3*F.Resolution,h=[],l=0;l0?(r=this._amount,y.isNaN(this._lastFrame)&&(this._lastFrame=r-1),i=y.performance.now()-this._startTime,s=1e3*((o=this._lastFrame+1)-this._firstFrame)/this._frameRate,this._loop?i%=s:i=Math.min(i,s),a=l(this._firstFrame,o,i/s),(a=Math.floor(a))!==this._index&&(this._index=a,(n=h[this._index]).loaded&&(e=n.image.width,t=n.image.height,this.width!==e&&(this.width=e),this.height!==t&&(this.height=t),this.fill=n,a>=this._lastFrame-1&&this._onLastFrame&&this._onLastFrame()))):!this._flagIndex&&this.fill instanceof Re||((n=h[this._index]).loaded&&(e=n.image.width,t=n.image.height,this.width!==e&&(this.width=e),this.height!==t&&(this.height=t)),this.fill=n),Ie.prototype._update.call(this),this},flagReset:function(){return this._flagTextures=this._flagFrameRate=!1,Ie.prototype.flagReset.call(this),this}}),ht.MakeObservable(ht.prototype),y.extend(lt,{Properties:["startAngle","endAngle","innerRadius","outerRadius"],MakeObservable:function(e){Pe.MakeObservable(e),y.each(lt.Properties,ve,e)}}),y.extend(lt.prototype,Pe.prototype,{constructor:lt,_flagStartAngle:!1,_flagEndAngle:!1,_flagInnerRadius:!1,_flagOuterRadius:!1,_startAngle:0,_endAngle:s,_innerRadius:0,_outerRadius:0,_update:function(){if(this._flagVertices||this._flagStartAngle||this._flagEndAngle||this._flagInnerRadius||this._flagOuterRadius){var e,i=this._startAngle,r=this._endAngle,a=this._innerRadius,o=this._outerRadius,h=d(i,s)===d(r,s),l=a>0,c=this.vertices,f=l?c.length/2:c.length,_=0;h?f--:l||(f-=2);for(var u=0,g=f-1;ue&&(this.vertices.splice(e-1,r-e),r=e);for(var n=0;n=r?this.vertices.push(new M(o,h)):this.vertices[n].set(o,h),this.vertices[n].command=0===n?t.move:t.line}}return Pe.prototype._update.call(this),this},flagReset:function(){return this._flagWidth=this._flagHeight=this._flagSides=!1,Pe.prototype.flagReset.call(this),this},clone:function(e){var t=new gt(0,0,this.radius,this.sides);return t.translation.copy(this.translation),t.rotation=this.rotation,t.scale=this.scale,t.skewX=this.skewX,t.skewY=this.skewY,this.matrix.manual&&t.matrix.copy(this.matrix),y.each(Pe.Properties,(function(e){t[e]=this[e]}),this),e&&e.add(t),t},toObject:function(){var e=Pe.prototype.toObject.call(this);return y.each(gt.Properties,(function(t){e[t]=this[t]}),this),e}}),gt.MakeObservable(gt.prototype);var pt=Math.cos,mt=Math.sin;function yt(e,t,i,r,s){arguments.length<=3&&(i=(r=i)/2),("number"!=typeof s||s<=0)&&(s=5),Pe.call(this),this.closed=!0,this.automatic=!1,"number"==typeof i&&(this.innerRadius=i),"number"==typeof r&&(this.outerRadius=r),"number"==typeof s&&(this.sides=s),this._update(),"number"==typeof e&&(this.translation.x=e),"number"==typeof t&&(this.translation.y=t)}y.extend(yt,{Properties:["innerRadius","outerRadius","sides"],MakeObservable:function(e){Pe.MakeObservable(e),y.each(yt.Properties,ve,e)}}),y.extend(yt.prototype,Pe.prototype,{constructor:yt,_flagInnerRadius:!1,_flagOuterRadius:!1,_flagSides:!1,_innerRadius:0,_outerRadius:0,_sides:0,_update:function(){if(this._flagVertices||this._flagInnerRadius||this._flagOuterRadius||this._flagSides){var e=2*this._sides,i=e+1,r=this.vertices.length;r>e&&(this.vertices.splice(e-1,r-e),r=e);for(var n=0;n=r?this.vertices.push(new M(h,l)):this.vertices[n].set(h,l),this.vertices[n].command=0===n?t.move:t.line}}return Pe.prototype._update.call(this),this},flagReset:function(){return this._flagInnerRadius=this._flagOuterRadius=this._flagSides=!1,Pe.prototype.flagReset.call(this),this},clone:function(e){var t=new yt(0,0,this.innerRadius,this.outerRadius,this.sides);return t.translation.copy(this.translation),t.rotation=this.rotation,t.scale=this.scale,t.skewX=this.skewX,t.skewY=this.skewY,this.matrix.manual&&t.matrix.copy(this.matrix),y.each(Pe.Properties,(function(e){t[e]=this[e]}),this),e&&e.add(t),t},toObject:function(){var e=Pe.prototype.toObject.call(this);return y.each(yt.Properties,(function(t){e[t]=this[t]}),this),e}}),yt.MakeObservable(yt.prototype);var vt=new G,bt={version:1.1,ns:"http://www.w3.org/2000/svg",xlink:"http://www.w3.org/1999/xlink",alignments:{left:"start",center:"middle",right:"end"},createElement:function(e,t){var i=e,r=document.createElementNS(bt.ns,i);return"svg"===i&&(t=y.defaults(t||{},{version:bt.version})),t&&Object.keys(t).length>0&&bt.setAttributes(r,t),r},setAttributes:function(e,t){for(var i=Object.keys(t),r=0;r=n&&i&&(S.command===t.curve&&(T=r,m=S.controls&&S.controls.right||S,y=T.controls&&T.controls.left||T,S.relative?(l=g(m.x+S.x),c=g(m.y+S.y)):(l=g(m.x),c=g(m.y)),T.relative?(f=g(y.x+T.x),_=g(y.y+T.y)):(f=g(y.x),_=g(y.y)),h+=" C "+l+" "+c+" "+f+" "+_+" "+(F=g(T.x))+" "+(P=g(T.y))),S.command!==t.close&&(h+=" Z")),a+=h+" "}return a},pointsToString:function(e,i){for(var r="",s=.5*i,n=0;n0&&(t["stroke-dasharray"]=this.dashes.join(" "),t["stroke-dashoffset"]=this.dashes.offset||0),this._renderer.elem?bt.setAttributes(this._renderer.elem,t):(t.id=this._id,this._renderer.elem=bt.createElement("path",t),e.appendChild(this._renderer.elem)),this._flagClip){var r=bt.getClip(this,e),s=this._renderer.elem;this._clip?(s.removeAttribute("id"),r.setAttribute("id",this.id),r.appendChild(s)):(r.removeAttribute("id"),s.setAttribute("id",this.id),this.parent._renderer.elem.appendChild(s))}return this._flagMask&&(this._mask?(bt[this._mask._renderer.type].render.call(this._mask,e),this._renderer.elem.setAttribute("clip-path","url(#"+this._mask.id+")")):this._renderer.elem.removeAttribute("clip-path")),this.flagReset()}},points:{render:function(e){if(0===this._opacity&&!this._flagOpacity)return this;this._update();var t={};if((this._matrix.manual||this._flagMatrix)&&(t.transform="matrix("+this._matrix.toString()+")"),this._flagId&&(t.id=this._id),this._flagVertices||this._flagSize||this._flagSizeAttenuation){var i=this._size;if(!this._sizeAttenuation){h(this,vt);var r=vt.elements,s=a(r[0],r[3],r[1],r[4],r[2],r[5]);i/=Math.max(s.scaleX,s.scaleY)}var n=bt.pointsToString(this._renderer.collection,i);t.d=n}return this._fill&&this._fill._renderer&&(this._fill._update(),bt[this._fill._renderer.type].render.call(this._fill,e,!0)),this._flagFill&&(t.fill=this._fill&&this._fill.id?"url(#"+this._fill.id+")":this._fill),this._stroke&&this._stroke._renderer&&(this._stroke._update(),bt[this._stroke._renderer.type].render.call(this._stroke,e,!0)),this._flagStroke&&(t.stroke=this._stroke&&this._stroke.id?"url(#"+this._stroke.id+")":this._stroke),this._flagLinewidth&&(t["stroke-width"]=this._linewidth),this._flagOpacity&&(t["stroke-opacity"]=this._opacity,t["fill-opacity"]=this._opacity),this._flagClassName&&(t.class=this.classList.join(" ")),this._flagVisible&&(t.visibility=this._visible?"visible":"hidden"),this.dashes&&this.dashes.length>0&&(t["stroke-dasharray"]=this.dashes.join(" "),t["stroke-dashoffset"]=this.dashes.offset||0),this._renderer.elem?bt.setAttributes(this._renderer.elem,t):(t.id=this._id,this._renderer.elem=bt.createElement("path",t),e.appendChild(this._renderer.elem)),this.flagReset()}},text:{render:function(e){this._update();var t={};if((this._matrix.manual||this._flagMatrix)&&(t.transform="matrix("+this._matrix.toString()+")"),this._flagId&&(t.id=this._id),this._flagFamily&&(t["font-family"]=this._family),this._flagSize&&(t["font-size"]=this._size),this._flagLeading&&(t["line-height"]=this._leading),this._flagAlignment&&(t["text-anchor"]=bt.alignments[this._alignment]||this._alignment),this._flagBaseline&&(t["alignment-baseline"]=t["dominant-baseline"]=this._baseline),this._flagStyle&&(t["font-style"]=this._style),this._flagWeight&&(t["font-weight"]=this._weight),this._flagDecoration&&(t["text-decoration"]=this._decoration),this._fill&&this._fill._renderer&&(this._fill._update(),bt[this._fill._renderer.type].render.call(this._fill,e,!0)),this._flagFill&&(t.fill=this._fill&&this._fill.id?"url(#"+this._fill.id+")":this._fill),this._stroke&&this._stroke._renderer&&(this._stroke._update(),bt[this._stroke._renderer.type].render.call(this._stroke,e,!0)),this._flagStroke&&(t.stroke=this._stroke&&this._stroke.id?"url(#"+this._stroke.id+")":this._stroke),this._flagLinewidth&&(t["stroke-width"]=this._linewidth),this._flagOpacity&&(t.opacity=this._opacity),this._flagClassName&&(t.class=this.classList.join(" ")),this._flagVisible&&(t.visibility=this._visible?"visible":"hidden"),this.dashes&&this.dashes.length>0&&(t["stroke-dasharray"]=this.dashes.join(" "),t["stroke-dashoffset"]=this.dashes.offset||0),this._renderer.elem?bt.setAttributes(this._renderer.elem,t):(t.id=this._id,this._renderer.elem=bt.createElement("text",t),e.defs.appendChild(this._renderer.elem)),this._flagClip){var i=bt.getClip(this,e),r=this._renderer.elem;this._clip?(r.removeAttribute("id"),i.setAttribute("id",this.id),i.appendChild(r)):(i.removeAttribute("id"),r.setAttribute("id",this.id),this.parent._renderer.elem.appendChild(r))}return this._flagMask&&(this._mask?(bt[this._mask._renderer.type].render.call(this._mask,e),this._renderer.elem.setAttribute("clip-path","url(#"+this._mask.id+")")):this._renderer.elem.removeAttribute("clip-path")),this._flagValue&&(this._renderer.elem.textContent=this._value),this.flagReset()}},"linear-gradient":{render:function(e,t){t||this._update();var i={};if(this._flagId&&(i.id=this._id),this._flagEndPoints&&(i.x1=this.left._x,i.y1=this.left._y,i.x2=this.right._x,i.y2=this.right._y),this._flagSpread&&(i.spreadMethod=this._spread),this._renderer.elem?bt.setAttributes(this._renderer.elem,i):(i.id=this._id,i.gradientUnits="userSpaceOnUse",this._renderer.elem=bt.createElement("linearGradient",i),e.defs.appendChild(this._renderer.elem)),this._flagStops){var r=this._renderer.elem.childNodes.length!==this.stops.length;if(r)for(;this._renderer.elem.lastChild;)this._renderer.elem.removeChild(this._renderer.elem.lastChild);for(var s=0;s0&&(i.x*=-1),i.y>0&&(i.y*=-1)),(this._flagScale||this._flagLoaded||this._flagRepeat)&&(i.width=0,i.height=0,s)){switch(r.width=i.width=s.width,r.height=i.height=s.height,this._repeat){case"no-repeat":i.width+=1,i.height+=1}this._scale instanceof w?(i.width*=this._scale.x,i.height*=this._scale.y):(i.width*=this._scale,i.height*=this._scale)}return(this._flagScale||this._flagLoaded)&&(this._renderer.image?bt.setAttributes(this._renderer.image,r):this._renderer.image=bt.createElement("image",r)),this._renderer.elem?0!==Object.keys(i).length&&bt.setAttributes(this._renderer.elem,i):(i.id=this._id,i.patternUnits="userSpaceOnUse",this._renderer.elem=bt.createElement("pattern",i),e.defs.appendChild(this._renderer.elem)),this._renderer.elem&&this._renderer.image&&!this._renderer.appended&&(this._renderer.elem.appendChild(this._renderer.image),this._renderer.appended=!0),this.flagReset()}}};function xt(e){this.domElement=e.domElement||bt.createElement("svg"),this.scene=new Q,this.scene.parent=this,this.defs=bt.createElement("defs"),this.domElement.appendChild(this.defs),this.domElement.defs=this.defs,this.domElement.style.overflow="hidden"}y.extend(xt,{Utils:bt}),y.extend(xt.prototype,v,{constructor:xt,setSize:function(e,t){return this.width=e,this.height=t,bt.setAttributes(this.domElement,{width:e,height:t}),this.trigger(v.Types.resize,e,t)},render:function(){return bt.group.render.call(this.scene,this.domElement),this}});var kt={create:function(e,t,i){var r,s;if(r=e.createShader(e[i]),e.shaderSource(r,t),e.compileShader(r),!e.getShaderParameter(r,e.COMPILE_STATUS))throw s=e.getShaderInfoLog(r),e.deleteShader(r),new me("unable to compile shader "+r+": "+s);return r},types:{vertex:"VERTEX_SHADER",fragment:"FRAGMENT_SHADER"},path:{vertex:"\n precision mediump float;\n attribute vec2 a_position;\n\n uniform mat3 u_matrix;\n uniform vec2 u_resolution;\n uniform vec4 u_rect;\n\n varying vec2 v_textureCoords;\n\n void main() {\n vec2 rectCoords = (a_position * (u_rect.zw - u_rect.xy)) + u_rect.xy;\n vec2 projected = (u_matrix * vec3(rectCoords, 1.0)).xy;\n vec2 normal = projected / u_resolution;\n vec2 clipspace = (normal * 2.0) - 1.0;\n\n gl_Position = vec4(clipspace * vec2(1.0, -1.0), 0.0, 1.0);\n v_textureCoords = a_position;\n }\n ",fragment:"\n precision mediump float;\n\n uniform sampler2D u_image;\n varying vec2 v_textureCoords;\n\n void main() {\n vec4 texel = texture2D(u_image, v_textureCoords);\n if (texel.a == 0.0) {\n discard;\n }\n gl_FragColor = texel;\n }\n "},points:{vertex:"\n precision mediump float;\n attribute vec2 a_position;\n\n uniform float u_size;\n uniform mat3 u_matrix;\n uniform vec2 u_resolution;\n\n varying vec2 v_textureCoords;\n\n void main() {\n vec2 projected = (u_matrix * vec3(a_position, 1.0)).xy;\n vec2 normal = projected / u_resolution;\n vec2 clipspace = (normal * 2.0) - 1.0;\n\n gl_PointSize = u_size;\n gl_Position = vec4(clipspace * vec2(1.0, -1.0), 0.0, 1.0);\n v_textureCoords = a_position;\n }\n ",fragment:"\n precision mediump float;\n\n uniform sampler2D u_image;\n\n void main() {\n vec4 texel = texture2D(u_image, gl_PointCoord);\n if (texel.a == 0.0) {\n discard;\n }\n gl_FragColor = texel;\n }\n "}},wt=G.Multiply,At=[1,0,0,0,1,0,0,0,1],St=new _(9),Rt=de.Utils,Mt=new _([0,0,1,0,0,1,0,1,1,0,1,1]),Ot={precision:.9,isHidden:/(undefined|none|transparent)/i,canvas:r.document?r.document.createElement("canvas"):{getContext:function(){}},alignments:{left:"start",middle:"center",right:"end"},matrix:new G,group:{removeChild:function(e,t){if(e.children)for(var i=0;i0&&(b.lineDashOffset=P.offset||0,b.setLineDash(P)),b.save(),b.scale(x.x,x.y),b.translate(I,N),b.beginPath();for(var B=0;B=C&&F&&(n=L,_=V.controls&&V.controls.right||w.zero,u=n.controls&&n.controls.left||w.zero,V._relative?(h=_.x+V.x,l=_.y+V.y):(h=_.x,l=_.y),n._relative?(a=u.x+n.x,o=u.y+n.y):(a=u.x,o=u.y),g=n.x,p=n.y,b.bezierCurveTo(h,l,a,o,g,p));break;case t.line:b.lineTo(g,p);break;case t.move:L=V,b.moveTo(g,p)}}F&&b.closePath(),Ot.isHidden.test(S)||((m=S._renderer&&S._renderer.offset)&&(b.save(),b.translate(-S._renderer.offset.x,-S._renderer.offset.y),b.scale(S._renderer.scale.x,S._renderer.scale.y)),b.fill(),m&&b.restore()),Ot.isHidden.test(k)||((m=k._renderer&&k._renderer.offset)&&(b.save(),b.translate(-k._renderer.offset.x,-k._renderer.offset.y),b.scale(k._renderer.scale.x,k._renderer.scale.y),b.lineWidth=A/k._renderer.scale.x),b.stroke(),m&&b.restore()),b.restore()},getBoundingClientRect:function(e,t,i){var r,s,n=1/0,a=-1/0,o=1/0,h=-1/0;e.forEach((function(e){var t,i,r,s,l,c,f=e.x,d=e.y,_=e.controls;o=Math.min(d,o),n=Math.min(f,n),a=Math.max(f,a),h=Math.max(d,h),e.controls&&(l=_.left,c=_.right,l&&c&&(t=e._relative?l.x+f:l.x,i=e._relative?l.y+d:l.y,r=e._relative?c.x+f:c.x,s=e._relative?c.y+d:c.y,t&&i&&r&&s&&(o=Math.min(i,s,o),n=Math.min(t,r,n),a=Math.max(t,r,a),h=Math.max(i,s,h))))})),"number"==typeof t&&(o-=t,n-=t,a+=t,h+=t),r=a-n,s=h-o,i.top=o,i.left=n,i.right=a,i.bottom=h,i.width=r,i.height=s,i.centroid||(i.centroid={}),i.centroid.x=-n,i.centroid.y=-o},render:function(e,t,i){if(!this._visible||!this._opacity)return this;this._update();var r=i||this.parent,s=t[this._renderer.type],n=r._matrix.manual||r._flagMatrix,a=this._matrix.manual||this._flagMatrix,o=this._renderer.parent!==r,h=this._flagVertices||this._flagFill||this._fill instanceof we&&(this._fill._flagSpread||this._fill._flagStops||this._fill._flagEndPoints)||this._fill instanceof Ae&&(this._fill._flagSpread||this._fill._flagStops||this._fill._flagRadius||this._fill._flagCenter||this._fill._flagFocal)||this._fill instanceof Re&&(this._fill._flagLoaded&&this._fill.loaded||this._fill._flagImage||this._fill._flagVideo||this._fill._flagRepeat||this._fill._flagOffset||this._fill._flagScale)||this._stroke instanceof we&&(this._stroke._flagSpread||this._stroke._flagStops||this._stroke._flagEndPoints)||this._stroke instanceof Ae&&(this._stroke._flagSpread||this._stroke._flagStops||this._stroke._flagRadius||this._stroke._flagCenter||this._stroke._flagFocal)||this._stroke instanceof Re&&(this._stroke._flagLoaded&&this._stroke.loaded||this._stroke._flagImage||this._stroke._flagVideo||this._stroke._flagRepeat||this._stroke._flagOffset||this._fill._flagScale)||this._flagStroke||this._flagLinewidth||this._flagOpacity||r._flagOpacity||this._flagVisible||this._flagCap||this._flagJoin||this._flagMiter||this._flagScale||this.dashes&&this.dashes.length>0||!this._renderer.texture;if((n||a||o)&&(this._renderer.matrix||(this._renderer.matrix=new _(9)),this._matrix.toTransformArray(!0,St),wt(St,r._renderer.matrix,this._renderer.matrix),this._renderer.scale instanceof w||(this._renderer.scale=new w),this._scale instanceof w?(this._renderer.scale.x=this._scale.x*r._renderer.scale.x,this._renderer.scale.y=this._scale.y*r._renderer.scale.y):(this._renderer.scale.x=this._scale*r._renderer.scale.x,this._renderer.scale.y=this._scale*r._renderer.scale.y),o&&(this._renderer.parent=r)),this._mask&&(e.clear(e.STENCIL_BUFFER_BIT),e.enable(e.STENCIL_TEST),e.stencilFunc(e.ALWAYS,1,0),e.stencilOp(e.KEEP,e.KEEP,e.REPLACE),e.colorMask(!1,!1,!1,!1),Ot[this._mask._renderer.type].render.call(this._mask,e,t,this),e.stencilFunc(e.EQUAL,1,255),e.stencilOp(e.KEEP,e.KEEP,e.KEEP),e.colorMask(!0,!0,!0,!0)),h?(this._renderer.rect||(this._renderer.rect={}),this._renderer.opacity=this._opacity*r._renderer.opacity,Ot.path.getBoundingClientRect(this._renderer.vertices,this._linewidth,this._renderer.rect),Ot.updateTexture.call(Ot,e,this)):(this._fill&&this._fill._update&&this._fill._update(),this._stroke&&this._stroke._update&&this._stroke._update()),this._clip&&!i||!this._renderer.texture)return this;t.current!==s&&(e.useProgram(s),e.bindBuffer(e.ARRAY_BUFFER,t.buffers.position),e.vertexAttribPointer(s.position,2,e.FLOAT,!1,0,0),e.enableVertexAttribArray(s.position),e.bufferData(e.ARRAY_BUFFER,Mt,e.STATIC_DRAW),t.resolution.flagged||e.uniform2f(e.getUniformLocation(s,"u_resolution"),t.resolution.width,t.resolution.height),t.current=s),t.resolution.flagged&&e.uniform2f(e.getUniformLocation(s,"u_resolution"),t.resolution.width,t.resolution.height),e.bindTexture(e.TEXTURE_2D,this._renderer.texture);var l=this._renderer.rect;return e.uniformMatrix3fv(s.matrix,!1,this._renderer.matrix),e.uniform4f(s.rect,l.left,l.top,l.right,l.bottom),e.drawArrays(e.TRIANGLES,0,6),this._mask&&e.disable(e.STENCIL_TEST),this.flagReset()}},points:{updateCanvas:function(e){var t,i=this.canvas,r=this.ctx,n=e._stroke,a=e._linewidth,o=e._fill,h=e._renderer.opacity||e._opacity,l=e.dashes,c=e._size,d=c;Ot.isHidden.test(n)||(d+=a),i.width=f(d),i.height=i.width;var _=d/i.width,u=i.width/2,g=i.height/2;r.clearRect(0,0,i.width,i.height),o&&("string"==typeof o?r.fillStyle=o:(Ot[o._renderer.type].render.call(o,r,e),r.fillStyle=o._renderer.effect)),n&&("string"==typeof n?r.strokeStyle=n:(Ot[n._renderer.type].render.call(n,r,e),r.strokeStyle=n._renderer.effect),a&&(r.lineWidth=a/_)),"number"==typeof h&&(r.globalAlpha=h),l&&l.length>0&&(r.lineDashOffset=l.offset||0,r.setLineDash(l)),r.save(),r.translate(u,g),r.scale(Ot.precision,Ot.precision),r.beginPath(),r.arc(0,0,c/_*.5,0,s),r.restore(),closed&&r.closePath(),Ot.isHidden.test(o)||((t=o._renderer&&o._renderer.offset)&&(r.save(),r.translate(-o._renderer.offset.x,-o._renderer.offset.y),r.scale(o._renderer.scale.x,o._renderer.scale.y)),r.fill(),t&&r.restore()),Ot.isHidden.test(n)||((t=n._renderer&&n._renderer.offset)&&(r.save(),r.translate(-n._renderer.offset.x,-n._renderer.offset.y),r.scale(n._renderer.scale.x,n._renderer.scale.y),r.lineWidth=a/n._renderer.scale.x),r.stroke(),t&&r.restore())},render:function(e,t,i){if(!this._visible||!this._opacity)return this;this._update();var r=i||this.parent,s=t[this._renderer.type],n=this._size,a=this._sizeAttenuation,o=this._stroke,h=this._linewidth,l=r._matrix.manual||r._flagMatrix,c=this._matrix.manual||this._flagMatrix,f=this._renderer.parent!==r,d=this._renderer.vertices,u=this._renderer.collection.length,g=this._flagVertices,p=this._flagFill||this._fill instanceof we&&(this._fill._flagSpread||this._fill._flagStops||this._fill._flagEndPoints)||this._fill instanceof Ae&&(this._fill._flagSpread||this._fill._flagStops||this._fill._flagRadius||this._fill._flagCenter||this._fill._flagFocal)||this._fill instanceof Re&&(this._fill._flagLoaded&&this._fill.loaded||this._fill._flagImage||this._fill._flagVideo||this._fill._flagRepeat||this._fill._flagOffset||this._fill._flagScale)||this._stroke instanceof we&&(this._stroke._flagSpread||this._stroke._flagStops||this._stroke._flagEndPoints)||this._stroke instanceof Ae&&(this._stroke._flagSpread||this._stroke._flagStops||this._stroke._flagRadius||this._stroke._flagCenter||this._stroke._flagFocal)||this._stroke instanceof Re&&(this._stroke._flagLoaded&&this._stroke.loaded||this._stroke._flagImage||this._stroke._flagVideo||this._stroke._flagRepeat||this._stroke._flagOffset||this._fill._flagScale)||this._flagStroke||this._flagLinewidth||this._flagOpacity||r._flagOpacity||this._flagVisible||this._flagScale||this.dashes&&this.dashes.length>0||!this._renderer.texture;if((l||c||f)&&(this._renderer.matrix||(this._renderer.matrix=new _(9)),this._matrix.toTransformArray(!0,St),wt(St,r._renderer.matrix,this._renderer.matrix),this._renderer.scale instanceof w||(this._renderer.scale=new w),this._scale instanceof w?(this._renderer.scale.x=this._scale.x*r._renderer.scale.x,this._renderer.scale.y=this._scale.y*r._renderer.scale.y):(this._renderer.scale.x=this._scale*r._renderer.scale.x,this._renderer.scale.y=this._scale*r._renderer.scale.y),f&&(this._renderer.parent=r)),g){var m=this._renderer.positionBuffer;m&&e.deleteBuffer(m),this._renderer.positionBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,this._renderer.positionBuffer),e.vertexAttribPointer(s.position,2,e.FLOAT,!1,0,0),e.enableVertexAttribArray(s.position),e.bufferData(e.ARRAY_BUFFER,d,e.STATIC_DRAW)}return p?(this._renderer.opacity=this._opacity*r._renderer.opacity,Ot.updateTexture.call(Ot,e,this)):(this._fill&&this._fill._update&&this._fill._update(),this._stroke&&this._stroke._update&&this._stroke._update()),this._clip&&!i||!this._renderer.texture?this:(Ot.isHidden.test(o)||(n+=h),n/=Ot.precision,a&&(n*=Math.max(this._renderer.scale.x,this._renderer.scale.y)),t.current!==s&&(e.useProgram(s),t.resolution.flagged||e.uniform2f(e.getUniformLocation(s,"u_resolution"),t.resolution.width,t.resolution.height),t.current=s),t.resolution.flagged&&e.uniform2f(e.getUniformLocation(s,"u_resolution"),t.resolution.width,t.resolution.height),e.bindTexture(e.TEXTURE_2D,this._renderer.texture),e.uniformMatrix3fv(s.matrix,!1,this._renderer.matrix),e.uniform1f(s.size,n*t.resolution.ratio),e.drawArrays(e.POINTS,0,u),this.flagReset())}},text:{updateCanvas:function(e){var t=this.canvas,i=this.ctx,r=e._renderer.scale,s=e._stroke,n=e._linewidth*r,a=e._fill,o=e._renderer.opacity||e._opacity,h=e.dashes,l=e._decoration;t.width=Math.max(Math.ceil(e._renderer.rect.width*r.x),1),t.height=Math.max(Math.ceil(e._renderer.rect.height*r.y),1);var c,f,d,_,u,g,p,m,y,v,b,x=e._renderer.rect.centroid,k=x.x,w=x.y,A=a._renderer&&a._renderer.offset&&s._renderer&&s._renderer.offset;if(i.clearRect(0,0,t.width,t.height),A||(i.font=[e._style,e._weight,e._size+"px/"+e._leading+"px",e._family].join(" ")),i.textAlign="center",i.textBaseline="middle",a&&("string"==typeof a?i.fillStyle=a:(Ot[a._renderer.type].render.call(a,i,e),i.fillStyle=a._renderer.effect)),s&&("string"==typeof s?i.strokeStyle=s:(Ot[s._renderer.type].render.call(s,i,e),i.strokeStyle=s._renderer.effect),n&&(i.lineWidth=n)),"number"==typeof o&&(i.globalAlpha=o),h&&h.length>0&&(i.lineDashOffset=h.offset||0,i.setLineDash(h)),i.save(),i.scale(r.x,r.y),i.translate(k,w),Ot.isHidden.test(a)||(a._renderer&&a._renderer.offset?(g=a._renderer.scale.x,p=a._renderer.scale.y,i.save(),i.translate(-a._renderer.offset.x,-a._renderer.offset.y),i.scale(g,p),c=e._size/a._renderer.scale.y,f=e._leading/a._renderer.scale.y,i.font=[e._style,e._weight,c+"px/",f+"px",e._family].join(" "),d=a._renderer.offset.x/a._renderer.scale.x,_=a._renderer.offset.y/a._renderer.scale.y,i.fillText(e.value,d,_),i.restore()):i.fillText(e.value,0,0)),Ot.isHidden.test(s)||(s._renderer&&s._renderer.offset?(g=s._renderer.scale.x,p=s._renderer.scale.y,i.save(),i.translate(-s._renderer.offset.x,-s._renderer.offset.y),i.scale(g,p),c=e._size/s._renderer.scale.y,f=e._leading/s._renderer.scale.y,i.font=[e._style,e._weight,c+"px/",f+"px",e._family].join(" "),d=s._renderer.offset.x/s._renderer.scale.x,_=s._renderer.offset.y/s._renderer.scale.y,u=n/s._renderer.scale.x,i.lineWidth=u,i.strokeText(e.value,d,_),i.restore()):i.strokeText(e.value,0,0)),/(underline|strikethrough)/i.test(l)){var S=i.measureText(e.value);switch(l){case"underline":y=S.actualBoundingBoxAscent,b=S.actualBoundingBoxAscent;break;case"strikethrough":y=0,b=0}m=-S.width/2,v=S.width/2,i.lineWidth=Math.max(Math.floor(e._size/15),1),i.strokeStyle=i.fillStyle,i.beginPath(),i.moveTo(m,y),i.lineTo(v,b),i.stroke()}i.restore()},getBoundingClientRect:function(e,t){var i=Ot.ctx;i.font=[e._style,e._weight,e._size+"px/"+e._leading+"px",e._family].join(" "),i.textAlign="center",i.textBaseline=e._baseline;var r=1.25*i.measureText(e._value).width,s=1.25*Math.max(e._size,e._leading);this._linewidth&&!Ot.isHidden.test(this._stroke)&&(r+=2*this._linewidth,s+=2*this._linewidth);var n=r/2,a=s/2;switch(Ot.alignments[e._alignment]||e._alignment){case Ot.alignments.left:t.left=0,t.right=r;break;case Ot.alignments.right:t.left=-r,t.right=0;break;default:t.left=-n,t.right=n}switch(e._baseline){case"bottom":t.top=-s,t.bottom=0;break;case"top":t.top=0,t.bottom=s;break;default:t.top=-a,t.bottom=a}t.width=r,t.height=s,t.centroid||(t.centroid={}),t.centroid.x=n,t.centroid.y=a},render:function(e,t,i){if(!this._visible||!this._opacity)return this;this._update();var r=i||this.parent,s=t[this._renderer.type],n=r._matrix.manual||r._flagMatrix,a=this._matrix.manual||this._flagMatrix,o=this._renderer.parent!==r,h=this._flagVertices||this._flagFill||this._fill instanceof we&&(this._fill._flagSpread||this._fill._flagStops||this._fill._flagEndPoints)||this._fill instanceof Ae&&(this._fill._flagSpread||this._fill._flagStops||this._fill._flagRadius||this._fill._flagCenter||this._fill._flagFocal)||this._fill instanceof Re&&(this._fill._flagLoaded&&this._fill.loaded||this._fill._flagImage||this._fill._flagVideo||this._fill._flagRepeat||this._fill._flagOffset||this._fill._flagScale)||this._stroke instanceof we&&(this._stroke._flagSpread||this._stroke._flagStops||this._stroke._flagEndPoints)||this._stroke instanceof Ae&&(this._stroke._flagSpread||this._stroke._flagStops||this._stroke._flagRadius||this._stroke._flagCenter||this._stroke._flagFocal)||this._stroke instanceof Re&&(this._stroke._flagLoaded&&this._stroke.loaded||this._stroke._flagImage||this._stroke._flagVideo||this._stroke._flagRepeat||this._stroke._flagOffset||this._fill._flagScale)||this._flagStroke||this._flagLinewidth||this._flagOpacity||r._flagOpacity||this._flagVisible||this._flagScale||this._flagValue||this._flagFamily||this._flagSize||this._flagLeading||this._flagAlignment||this._flagBaseline||this._flagStyle||this._flagWeight||this._flagDecoration||this.dashes&&this.dashes.length>0||!this._renderer.texture;if((n||a||o)&&(this._renderer.matrix||(this._renderer.matrix=new _(9)),this._matrix.toTransformArray(!0,St),wt(St,r._renderer.matrix,this._renderer.matrix),this._renderer.scale instanceof w||(this._renderer.scale=new w),this._scale instanceof w?(this._renderer.scale.x=this._scale.x*r._renderer.scale.x,this._renderer.scale.y=this._scale.y*r._renderer.scale.y):(this._renderer.scale.x=this._scale*r._renderer.scale.x,this._renderer.scale.y=this._scale*r._renderer.scale.y),o&&(this._renderer.parent=r)),this._mask&&(e.clear(e.STENCIL_BUFFER_BIT),e.enable(e.STENCIL_TEST),e.stencilFunc(e.ALWAYS,1,0),e.stencilOp(e.KEEP,e.KEEP,e.REPLACE),e.colorMask(!1,!1,!1,!1),Ot[this._mask._renderer.type].render.call(this._mask,e,t,this),e.stencilFunc(e.EQUAL,1,255),e.stencilOp(e.KEEP,e.KEEP,e.KEEP),e.colorMask(!0,!0,!0,!0)),h?(this._renderer.rect||(this._renderer.rect={}),this._renderer.opacity=this._opacity*r._renderer.opacity,Ot.text.getBoundingClientRect(this,this._renderer.rect),Ot.updateTexture.call(Ot,e,this)):(this._fill&&this._fill._update&&this._fill._update(),this._stroke&&this._stroke._update&&this._stroke._update()),this._clip&&!i||!this._renderer.texture)return this;t.current!==s&&(e.useProgram(s),e.bindBuffer(e.ARRAY_BUFFER,t.buffers.position),e.vertexAttribPointer(s.position,2,e.FLOAT,!1,0,0),e.enableVertexAttribArray(s.position),e.bufferData(e.ARRAY_BUFFER,Mt,e.STATIC_DRAW),t.resolution.flagged||e.uniform2f(e.getUniformLocation(s,"u_resolution"),t.resolution.width,t.resolution.height),t.current=s),t.resolution.flagged&&e.uniform2f(e.getUniformLocation(s,"u_resolution"),t.resolution.width,t.resolution.height),e.bindTexture(e.TEXTURE_2D,this._renderer.texture);var l=this._renderer.rect;return e.uniformMatrix3fv(s.matrix,!1,this._renderer.matrix),e.uniform4f(s.rect,l.left,l.top,l.right,l.bottom),e.drawArrays(e.TRIANGLES,0,6),this._mask&&e.disable(e.STENCIL_TEST),this.flagReset()}},"linear-gradient":{render:function(e,t){if(e.canvas.getContext("2d")){if(this._update(),!this._renderer.effect||this._flagEndPoints||this._flagStops){this._renderer.effect=e.createLinearGradient(this.left._x,this.left._y,this.right._x,this.right._y);for(var i=0;i=0&&t<4294967296}(e)&&Object.keys(e),n=(s||e).length,a=0;a=4?(i=arguments[0]-arguments[2],r=arguments[1]-arguments[3],Math.atan2(r,i)):(i=e.x-t.x,r=e.y-t.y,Math.atan2(r,i))},distanceBetween:function(e,t){return Math.sqrt(w.distanceBetweenSquared(e,t))},distanceBetweenSquared:function(e,t){var i=e.x-t.x,r=e.y-t.y;return i*i+r*r},MakeObservable:function(e){e.bind=e.on=function(){return this._bound||(this._x=this.x,this._y=this.y,Object.defineProperty(this,"x",S),Object.defineProperty(this,"y",R),y.extend(this,A),this._bound=!0),v.bind.apply(this,arguments),this}}}),y.extend(w.prototype,v,{constructor:w,set:function(e,t){return this.x=e,this.y=t,this},copy:function(e){return this.x=e.x,this.y=e.y,this},clear:function(){return this.x=0,this.y=0,this},clone:function(){return new w(this.x,this.y)},add:function(e,t){return arguments.length<=0||(arguments.length<=1?"number"==typeof e?(this.x+=e,this.y+=e):e&&"number"==typeof e.x&&"number"==typeof e.y&&(this.x+=e.x,this.y+=e.y):(this.x+=e,this.y+=t)),this},addSelf:function(e){return this.add.apply(this,arguments)},sub:function(e,t){return arguments.length<=0||(arguments.length<=1?"number"==typeof e?(this.x-=e,this.y-=e):e&&"number"==typeof e.x&&"number"==typeof e.y&&(this.x-=e.x,this.y-=e.y):(this.x-=e,this.y-=t)),this},subtract:function(){return this.sub.apply(this,arguments)},subSelf:function(e){return this.sub.apply(this,arguments)},subtractSelf:function(e){return this.sub.apply(this,arguments)},multiply:function(e,t){return arguments.length<=0||(arguments.length<=1?"number"==typeof e?(this.x*=e,this.y*=e):e&&"number"==typeof e.x&&"number"==typeof e.y&&(this.x*=e.x,this.y*=e.y):(this.x*=e,this.y*=t)),this},multiplySelf:function(e){return this.multiply.apply(this,arguments)},multiplyScalar:function(e){return this.multiply(e)},divide:function(e,t){return arguments.length<=0||(arguments.length<=1?"number"==typeof e?(this.x/=e,this.y/=e):e&&"number"==typeof e.x&&"number"==typeof e.y&&(this.x/=e.x,this.y/=e.y):(this.x/=e,this.y/=t),y.isNaN(this.x)&&(this.x=0),y.isNaN(this.y)&&(this.y=0)),this},divideSelf:function(e){return this.divide.apply(this,arguments)},divideScalar:function(e){return this.divide(e)},negate:function(){return this.multiply(-1)},dot:function(e){return this.x*e.x+this.y*e.y},length:function(){return Math.sqrt(this.lengthSquared())},lengthSquared:function(){return this.x*this.x+this.y*this.y},normalize:function(){return this.divideScalar(this.length())},distanceTo:function(e){return Math.sqrt(this.distanceToSquared(e))},distanceToSquared:function(e){var t=this.x-e.x,i=this.y-e.y;return t*t+i*i},setLength:function(e){return this.normalize().multiplyScalar(e)},equals:function(e,t){return t=void 0===t?1e-4:t,this.distanceTo(e)>1,c=1&r?n[h++]*e(o):0;h0&&this.set(a)}function q(){this.renderer={},this._renderer.flagMatrix=q.FlagMatrix.bind(this),this.isShape=!0,this.id=F.Identifier+F.uniqueId(),this.classList=[],this.matrix=new G,this.translation=new w,this.rotation=0,this.scale=1,this.skewX=0,this.skewY=0}function K(){Array.call(this),arguments[0]&&Array.isArray(arguments[0])?arguments[0].length>0&&Array.prototype.push.apply(this,arguments[0]):arguments.length>0&&Array.prototype.push.apply(this,arguments)}function J(e){K.apply(this,arguments),Object.defineProperty(this,"_events",{value:{},enumerable:!1}),this.ids={},this.attach(Array.isArray(e)?e:Array.prototype.slice.call(arguments)),this.on(v.Types.insert,this.attach),this.on(v.Types.remove,this.detach)}o(G),y.extend(G,{Identity:[1,0,0,0,1,0,0,0,1],Multiply:function(e,t,i){if(t.length<=3){var r=e,s=t[0]||0,n=t[1]||0,a=t[2]||0;return{x:r[0]*s+r[1]*n+r[2]*a,y:r[3]*s+r[4]*n+r[5]*a,z:r[6]*s+r[7]*n+r[8]*a}}var o=e[0],h=e[1],l=e[2],c=e[3],f=e[4],d=e[5],u=e[6],g=e[7],p=e[8],m=t[0],y=t[1],v=t[2],b=t[3],x=t[4],k=t[5],w=t[6],A=t[7],S=t[8];return(i=i||new _(9))[0]=o*m+h*b+l*w,i[1]=o*y+h*x+l*A,i[2]=o*v+h*k+l*S,i[3]=c*m+f*b+d*w,i[4]=c*y+f*x+d*A,i[5]=c*v+f*k+d*S,i[6]=u*m+g*b+p*w,i[7]=u*y+g*x+p*A,i[8]=u*v+g*k+p*S,i}}),y.extend(G.prototype,v,{constructor:G,manual:!1,set:function(e,t,i,r,s,n,a,o,h){var l;return void 0===t&&(e=(l=e)[0],t=l[1],i=l[2],r=l[3],s=l[4],n=l[5],a=l[6],o=l[7],h=l[8]),this.elements[0]=e,this.elements[1]=t,this.elements[2]=i,this.elements[3]=r,this.elements[4]=s,this.elements[5]=n,this.elements[6]=a,this.elements[7]=o,this.elements[8]=h,this.trigger(v.Types.change)},copy:function(e){return this.elements[0]=e.elements[0],this.elements[1]=e.elements[1],this.elements[2]=e.elements[2],this.elements[3]=e.elements[3],this.elements[4]=e.elements[4],this.elements[5]=e.elements[5],this.elements[6]=e.elements[6],this.elements[7]=e.elements[7],this.elements[8]=e.elements[8],this.manual=e.manual,this.trigger(v.Types.change)},identity:function(){return this.elements[0]=G.Identity[0],this.elements[1]=G.Identity[1],this.elements[2]=G.Identity[2],this.elements[3]=G.Identity[3],this.elements[4]=G.Identity[4],this.elements[5]=G.Identity[5],this.elements[6]=G.Identity[6],this.elements[7]=G.Identity[7],this.elements[8]=G.Identity[8],this.trigger(v.Types.change)},multiply:function(e,t,i,r,s,n,a,o,h){if(void 0===t)return this.elements[0]*=e,this.elements[1]*=e,this.elements[2]*=e,this.elements[3]*=e,this.elements[4]*=e,this.elements[5]*=e,this.elements[6]*=e,this.elements[7]*=e,this.elements[8]*=e,this.trigger(v.Types.change);if(void 0===r)return e=e||0,t=t||0,i=i||0,{x:(s=this.elements)[0]*e+s[1]*t+s[2]*i,y:s[3]*e+s[4]*t+s[5]*i,z:s[6]*e+s[7]*t+s[8]*i};var l=this.elements,c=[e,t,i,r,s,n,a,o,h],f=l[0],d=l[1],_=l[2],u=l[3],g=l[4],p=l[5],m=l[6],y=l[7],b=l[8],x=c[0],k=c[1],w=c[2],A=c[3],S=c[4],R=c[5],M=c[6],O=c[7],T=c[8];return this.elements[0]=f*x+d*A+_*M,this.elements[1]=f*k+d*S+_*O,this.elements[2]=f*w+d*R+_*T,this.elements[3]=u*x+g*A+p*M,this.elements[4]=u*k+g*S+p*O,this.elements[5]=u*w+g*R+p*T,this.elements[6]=m*x+y*A+b*M,this.elements[7]=m*k+y*S+b*O,this.elements[8]=m*w+y*R+b*T,this.trigger(v.Types.change)},inverse:function(e){var t=this.elements;e=e||new G;var i=t[0],r=t[1],s=t[2],n=t[3],a=t[4],o=t[5],h=t[6],l=t[7],c=t[8],f=c*a-o*l,d=-c*n+o*h,_=l*n-a*h,u=i*f+r*d+s*_;return u?(u=1/u,e.elements[0]=f*u,e.elements[1]=(-c*r+s*l)*u,e.elements[2]=(o*r-s*a)*u,e.elements[3]=d*u,e.elements[4]=(c*i-s*h)*u,e.elements[5]=(-o*i+s*n)*u,e.elements[6]=_*u,e.elements[7]=(-l*i+r*h)*u,e.elements[8]=(a*i-r*n)*u,e):null},scale:function(e,t){var i=arguments.length;return i<=1&&(t=e),this.multiply(e,0,0,0,t,0,0,0,1)},rotate:function(e){var t=X(e),i=Y(e);return this.multiply(t,-i,0,i,t,0,0,0,1)},translate:function(e,t){return this.multiply(1,0,e,0,1,t,0,0,1)},skewX:function(e){var t=H(e);return this.multiply(1,t,0,0,1,0,0,0,1)},skewY:function(e){var t=H(e);return this.multiply(1,0,0,t,1,0,0,0,1)},toString:function(e){return W.length=0,this.toTransformArray(e,W),W.map(g).join(" ")},toTransformArray:function(e,t){var i=this.elements,r=!!t,s=i[0],n=i[1],a=i[2],o=i[3],h=i[4],l=i[5];if(e){var c=i[6],f=i[7],d=i[8];return r?(t[0]=s,t[1]=o,t[2]=c,t[3]=n,t[4]=h,t[5]=f,t[6]=a,t[7]=l,void(t[8]=d)):[s,o,c,n,h,f,a,l,d]}return r?(t[0]=s,t[1]=o,t[2]=n,t[3]=h,t[4]=a,void(t[5]=l)):[s,o,n,h,a,l]},toArray:function(e,t){var i=this.elements,r=!!t,s=i[0],n=i[1],a=i[2],o=i[3],h=i[4],l=i[5];if(e){var c=i[6],f=i[7],d=i[8];return r?(t[0]=s,t[1]=n,t[2]=a,t[3]=o,t[4]=h,t[5]=l,t[6]=c,t[7]=f,void(t[8]=d)):[s,n,a,o,h,l,c,f,d]}return r?(t[0]=s,t[1]=n,t[2]=a,t[3]=o,t[4]=h,void(t[5]=l)):[s,n,a,o,h,l]},toObject:function(){return{elements:this.toArray(!0),manual:!!this.manual}},clone:function(){return(new G).copy(this)}}),y.extend(q,{FlagMatrix:function(){this._flagMatrix=!0},MakeObservable:function(e){var t={enumerable:!1,get:function(){return this._translation},set:function(e){this._translation&&this._translation.unbind(v.Types.change,this._renderer.flagMatrix),this._translation=e,this._translation.bind(v.Types.change,this._renderer.flagMatrix),q.FlagMatrix.call(this)}};Object.defineProperty(e,"translation",t),Object.defineProperty(e,"position",t),Object.defineProperty(e,"rotation",{enumerable:!0,get:function(){return this._rotation},set:function(e){this._rotation=e,this._flagMatrix=!0}}),Object.defineProperty(e,"scale",{enumerable:!0,get:function(){return this._scale},set:function(e){this._scale instanceof w&&this._scale.unbind(v.Types.change,this._renderer.flagMatrix),this._scale=e,this._scale instanceof w&&this._scale.bind(v.Types.change,this._renderer.flagMatrix),this._flagMatrix=!0,this._flagScale=!0}}),Object.defineProperty(e,"skewX",{enumerable:!0,get:function(){return this._skewX},set:function(e){this._skewX=e,this._flagMatrix=!0}}),Object.defineProperty(e,"skewY",{enumerable:!0,get:function(){return this._skewY},set:function(e){this._skewY=e,this._flagMatrix=!0}}),Object.defineProperty(e,"matrix",{enumerable:!0,get:function(){return this._matrix},set:function(e){this._matrix=e,this._flagMatrix=!0}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return this._id},set:function(e){var t=this._id;e!==this._id&&(this._id=e,this._flagId=!0,this.parent&&(delete this.parent.children.ids[t],this.parent.children.ids[this._id]=this))}}),Object.defineProperty(e,"className",{enumerable:!0,get:function(){return this._className},set:function(e){if(this._flagClassName=this._className!==e,this._flagClassName){for(var t=this._className.split(/\s+?/),i=e.split(/\s+?/),r=0;r=0&&this.classList.splice(n,1)}this.classList=this.classList.concat(i)}this._className=e}}),Object.defineProperty(e,"renderer",{enumerable:!1,get:function(){return this._renderer},set:function(e){this._renderer=e}})}}),y.extend(q.prototype,v,{constructor:q,_flagId:!0,_flagMatrix:!0,_flagScale:!1,_flagClassName:!1,_id:"",_translation:null,_rotation:0,_scale:1,_skewX:0,_skewY:0,_className:"",addTo:function(e){return e.add(this),this},clone:function(e){var t=new q;return t.translation.copy(this.translation),t.rotation=this.rotation,t.scale=this.scale,t.skewX=this.skewX,t.skewY=this.skewY,this.matrix.manual&&t.matrix.copy(this.matrix),e&&e.add(t),t._update()},_update:function(e){return!this._matrix.manual&&this._flagMatrix&&(this._matrix.identity().translate(this.translation.x,this.translation.y),this._scale instanceof w?this._matrix.scale(this._scale.x,this._scale.y):this._matrix.scale(this._scale),this._matrix.rotate(this.rotation),this._matrix.skewX(this.skewX),this._matrix.skewY(this.skewY)),e&&this.parent&&this.parent._update&&this.parent._update(),this},flagReset:function(){return this._flagId=this._flagMatrix=this._flagScale=this._flagClassName=!1,this}}),q.MakeObservable(q.prototype),K.prototype=new Array,y.extend(K.prototype,v,{constructor:K,pop:function(){var e=Array.prototype.pop.apply(this,arguments);return this.trigger(v.Types.remove,[e]),e},shift:function(){var e=Array.prototype.shift.apply(this,arguments);return this.trigger(v.Types.remove,[e]),e},push:function(){var e=Array.prototype.push.apply(this,arguments);return this.trigger(v.Types.insert,arguments),e},unshift:function(){var e=Array.prototype.unshift.apply(this,arguments);return this.trigger(v.Types.insert,arguments),e},splice:function(){var e,t=Array.prototype.splice.apply(this,arguments);return this.trigger(v.Types.remove,t),arguments.length>2&&(e=this.slice(arguments[0],arguments[0]+arguments.length-2),this.trigger(v.Types.insert,e),this.trigger(v.Types.order)),t},sort:function(){return Array.prototype.sort.apply(this,arguments),this.trigger(v.Types.order),this},reverse:function(){return Array.prototype.reverse.apply(this,arguments),this.trigger(v.Types.order),this},indexOf:function(){return Array.prototype.indexOf.apply(this,arguments)}}),J.prototype=new K,y.extend(J.prototype,{constructor:J,attach:function(e){for(var t=0;t0&&(i=Array.prototype.indexOf.call(t.subtractions,e))>=0&&t.subtractions.splice(i,1),t.additions.length>0&&(i=Array.prototype.indexOf.call(t.additions,e))>=0&&t.additions.splice(i,1),e.parent=t,t.additions.push(e),t._flagAdditions=!0}function n(){(i=Array.prototype.indexOf.call(r.additions,e))>=0&&r.additions.splice(i,1),(i=Array.prototype.indexOf.call(r.subtractions,e))<0&&(r.subtractions.push(e),r._flagSubtractions=!0)}r!==t?(r&&r.children.ids[e.id]&&(i=Array.prototype.indexOf.call(r.children,e),r.children.splice(i,1),n()),t?s():(n(),r._flagAdditions&&0===r.additions.length&&(r._flagAdditions=!1),r._flagSubtractions&&0===r.subtractions.length&&(r._flagSubtractions=!1),delete e.parent)):s()}y.extend(Q,{Children:J,InsertChildren:function(e){for(var t=0;t0&&i(this._children)),this._children=new J(e),this._children.bind(v.Types.insert,t),this._children.bind(v.Types.remove,i),this._children.bind(v.Types.order,r),e.length>0&&t(e)}}),Object.defineProperty(e,"mask",{enumerable:!0,get:function(){return this._mask},set:function(e){this._mask&&(this._mask.clip=!1),this._mask=e,this._flagMask=!0,e&&!e.clip&&(e.clip=!0)}})},MakeGetterSetters:function(e,t){Array.isArray(t)||(t=[t]),y.each(t,(function(t){Q.MakeGetterSetter(e,t)}))},MakeGetterSetter:function(e,t){var i="_"+t;Object.defineProperty(e,t,{enumerable:!0,get:function(){return this[i]},set:function(e){this[i]=e;for(var r=0;r=0&&t.push(r),r.children)for(var s=0;s=0&&this.children.splice(r,1),this.children.push(i)}}return this},remove:function(e){var t=arguments.length,i=this.parent;if(t<=0&&i)return i.remove(this),this;e=e instanceof Array?e.slice():Array.prototype.slice.call(arguments);for(var r=0;r=0&&this.children.splice(n,1)}}return this},getBoundingClientRect:function(e){var t,i,r,s,n,a,o,l,c,f;this._update(!0);var d=1/0,_=-1/0,u=1/0,g=-1/0,p=/texture|gradient/i;i=e?this._matrix:h(this);for(var m=0;ma+(t=(i=this.children[e]).length)?(i.beginning=1,i.ending=1):ha&&oa&&h0&&0!==this._scale)for(var a=0;a0&&(e.lineDashOffset=V.offset||0,e.setLineDash(V)),e.beginPath();for(var U=0;U=m&&u&&(k=A,P=x.controls&&x.controls.right||w.zero,E=k.controls&&k.controls.left||w.zero,x._relative?(M=P.x+x.x,O=P.y+x.y):(M=P.x,O=P.y),k._relative?(S=E.x+k.x,R=E.y+k.y):(S=E.x,R=E.y),C=k.x,L=k.y,e.bezierCurveTo(M,O,S,R,C,L));break;case t.line:e.lineTo(C,L);break;case t.move:A=x,e.moveTo(C,L)}return u&&e.closePath(),I||r||(fe.isHidden.test(o)||((B=o._renderer&&o._renderer.offset)&&(e.save(),e.translate(-o._renderer.offset.x,-o._renderer.offset.y),e.scale(o._renderer.scale.x,o._renderer.scale.y)),e.fill(),B&&e.restore()),fe.isHidden.test(n)||((B=n._renderer&&n._renderer.offset)&&(e.save(),e.translate(-n._renderer.offset.x,-n._renderer.offset.y),e.scale(n._renderer.scale.x,n._renderer.scale.y),e.lineWidth=a/n._renderer.scale.x),e.stroke(),B&&e.restore())),N||e.restore(),I&&!r&&e.clip(),V&&V.length>0&&e.setLineDash(ie),this.flagReset()}},points:{render:function(e,t,i){var r,n,o,l,c,f,d,_,u,g,p,m,y,v,b,x;if(x=this.parent&&this.parent._renderer?this.parent._renderer.opacity:1,c=this._opacity*(x||1),f=this._visible,!(t||f&&0!==c))return this;this._update(),r=this._matrix.elements,n=this._stroke,o=this._linewidth,l=this._fill,u=(_=this._renderer.collection).length,y=ce(r),b=this.dashes,d=this._size,y||(e.save(),e.transform(r[0],r[3],r[1],r[4],r[2],r[5])),l&&("string"==typeof l?e.fillStyle=l:(fe[l._renderer.type].render.call(l,e),e.fillStyle=l._renderer.effect)),n&&("string"==typeof n?e.strokeStyle=n:(fe[n._renderer.type].render.call(n,e),e.strokeStyle=n._renderer.effect),o&&(e.lineWidth=o)),"number"==typeof c&&(e.globalAlpha=c),b&&b.length>0&&(e.lineDashOffset=b.offset||0,e.setLineDash(b)),e.beginPath();var k,w=.5*d;this._sizeAttenuation||(h(this,te),k=te.elements,k=a(k[0],k[3],k[1],k[4],k[2],k[5]),w/=Math.max(k.scaleX,k.scaleY));for(var A=0;A0&&e.setLineDash(ie),this.flagReset()}},text:{render:function(e,t,i){var r=this.parent&&this.parent._renderer?this.parent._renderer.opacity:1,s=this._opacity*r,n=this._visible,a=this._mask,o=this._clip;if(!t&&(!n||o||0===s))return this;this._update();var h,l,c,f,d,_,u,g,p,m,y,v=this._matrix.elements,b=this._stroke,x=this._linewidth,k=this._fill,w=this._decoration,A=ce(v),S=k._renderer&&k._renderer.offset&&b._renderer&&b._renderer.offset,R=this.dashes,M=fe.alignments[this._alignment]||this._alignment,O=this._baseline;if(A||(e.save(),e.transform(v[0],v[3],v[1],v[4],v[2],v[5])),a&&fe[a._renderer.type].render.call(a,e,!0),S||(e.font=[this._style,this._weight,this._size+"px/"+this._leading+"px",this._family].join(" ")),e.textAlign=M,e.textBaseline=O,k&&("string"==typeof k?e.fillStyle=k:(fe[k._renderer.type].render.call(k,e),e.fillStyle=k._renderer.effect)),b&&("string"==typeof b?e.strokeStyle=b:(fe[b._renderer.type].render.call(b,e),e.strokeStyle=b._renderer.effect),x&&(e.lineWidth=x)),"number"==typeof s&&(e.globalAlpha=s),R&&R.length>0&&(e.lineDashOffset=R.offset||0,e.setLineDash(R)),o||i||(fe.isHidden.test(k)||(k._renderer&&k._renderer.offset?(_=k._renderer.scale.x,u=k._renderer.scale.y,e.save(),e.translate(-k._renderer.offset.x,-k._renderer.offset.y),e.scale(_,u),h=this._size/k._renderer.scale.y,l=this._leading/k._renderer.scale.y,e.font=[this._style,this._weight,h+"px/",l+"px",this._family].join(" "),c=k._renderer.offset.x/k._renderer.scale.x,f=k._renderer.offset.y/k._renderer.scale.y,e.fillText(this.value,c,f),e.restore()):e.fillText(this.value,0,0)),fe.isHidden.test(b)||(b._renderer&&b._renderer.offset?(_=b._renderer.scale.x,u=b._renderer.scale.y,e.save(),e.translate(-b._renderer.offset.x,-b._renderer.offset.y),e.scale(_,u),h=this._size/b._renderer.scale.y,l=this._leading/b._renderer.scale.y,e.font=[this._style,this._weight,h+"px/",l+"px",this._family].join(" "),c=b._renderer.offset.x/b._renderer.scale.x,f=b._renderer.offset.y/b._renderer.scale.y,d=x/b._renderer.scale.x,e.lineWidth=d,e.strokeText(this.value,c,f),e.restore()):e.strokeText(this.value,0,0))),/(underline|strikethrough)/i.test(w)){var T=e.measureText(this.value),F=1;switch(w){case"underline":p=T.actualBoundingBoxAscent,y=T.actualBoundingBoxAscent;break;case"strikethrough":p=0,y=0,F=.5}switch(O){case"top":p+=this._size*F,y+=this._size*F;break;case"baseline":case"bottom":p-=this._size*F,y-=this._size*F}switch(M){case"left":case"start":g=0,m=T.width;break;case"right":case"end":g=-T.width,m=0;break;default:g=-T.width/2,m=T.width/2}e.lineWidth=Math.max(Math.floor(this._size/15),1),e.strokeStyle=e.fillStyle,e.beginPath(),e.moveTo(g,p),e.lineTo(m,y),e.stroke()}return A||e.restore(),o&&!i&&e.clip(),R&&R.length>0&&e.setLineDash(ie),this.flagReset()}},"linear-gradient":{render:function(e){if(this._update(),!this._renderer.effect||this._flagEndPoints||this._flagStops){this._renderer.effect=e.createLinearGradient(this.left._x,this.left._y,this.right._x,this.right._y);for(var t=0;t1){var x=le(b);p=(r*=x)*r,m=(n*=x)*n}var k=p*v+m*y,w=le(re(0,(p*m-k)/k));a===o&&(w=-w);var A=w*r*g/n,S=-w*n*u/r,R=oe(h)*A-ae(h)*S+(t+l)/2,M=ae(h)*A+oe(h)*S+(i+c)/2,O=_e(1,0,(u-A)/r,(g-S)/n);!function(e,t,i,r,n,a,o,h,l){var c=P.Tolerance.epsilon,f=o-a,_=Math.abs(f)0&&"number"==typeof i.height&&i.height>0?r():ue.isHeadless||"function"!=typeof i.addEventListener||(i.addEventListener("load",r,!1),i.addEventListener("error",s,!1)),e._src=Re.getAbsoluteURL(e._src),!ue.isHeadless&&i&&i.getAttribute("two-src")||(ue.isHeadless||i.setAttribute("two-src",e.src),Re.ImageRegistry.add(e.src,i),ue.isHeadless?Re.loadHeadlessBuffer(e,r):e.image.src=e.src)},video:function(e,t){if(ue.isHeadless)throw new me("video textures are not implemented in headless environments.");var i=function(s){e.image.removeEventListener("canplaythrough",i,!1),e.image.removeEventListener("error",r,!1),e.image.width=e.image.videoWidth,e.image.height=e.image.videoHeight,"function"==typeof t&&t()},r=function(t){throw e.image.removeEventListener("canplaythrough",i,!1),e.image.removeEventListener("error",r,!1),new me("unable to load "+e.src)};e._src=Re.getAbsoluteURL(e._src),e.image.getAttribute("two-src")||(e.image.setAttribute("two-src",e.src),Re.ImageRegistry.add(e.src,e.image)),e.image.readyState>=4?i():(e.image.addEventListener("canplaythrough",i,!1),e.image.addEventListener("error",r,!1),e.image.src=e.src,e.image.load())}},load:function(e,t){var i=e.image,r=Re.getTag(i);e._flagImage&&(/canvas/i.test(r)?Re.Register.canvas(e,t):(e._src=!ue.isHeadless&&i.getAttribute("two-src")||i.src,Re.Register[r](e,t))),e._flagSrc&&(i||(i=Re.getImage(e.src),e.image=i),r=Re.getTag(i),Re.Register[r](e,t))},FlagOffset:function(){this._flagOffset=!0},FlagScale:function(){this._flagScale=!0},MakeObservable:function(e){y.each(Re.Properties,ve,e),Object.defineProperty(e,"image",{enumerable:!0,get:function(){return this._image},set:function(e){var t;switch(Re.getTag(e)){case"canvas":t="#"+e.id;break;default:t=e.src}Re.ImageRegistry.contains(t)?this._image=Re.ImageRegistry.get(e.src):this._image=e,this._flagImage=!0}}),Object.defineProperty(e,"offset",{enumerable:!0,get:function(){return this._offset},set:function(e){this._offset&&this._offset.unbind(v.Types.change,this._renderer.flagOffset),this._offset=e,this._offset.bind(v.Types.change,this._renderer.flagOffset),this._flagOffset=!0}}),Object.defineProperty(e,"scale",{enumerable:!0,get:function(){return this._scale},set:function(e){this._scale instanceof w&&this._scale.unbind(v.Types.change,this._renderer.flagScale),this._scale=e,this._scale instanceof w&&this._scale.bind(v.Types.change,this._renderer.flagScale),this._flagScale=!0}}),Object.defineProperty(e,"renderer",{enumerable:!1,get:function(){return this._renderer},set:function(e){this._renderer=e}})}}),y.extend(Re.prototype,v,q.prototype,{constructor:Re,_flagId:!1,_flagSrc:!1,_flagImage:!1,_flagVideo:!1,_flagLoaded:!1,_flagRepeat:!1,_flagOffset:!1,_flagScale:!1,_id:"",_src:"",_image:null,_loaded:!1,_repeat:"no-repeat",_scale:1,_offset:null,clone:function(){var e=new Re(this.src);return e.repeat=this.repeat,e.offset.copy(this.origin),e.scale=this.scale,e},toObject:function(){return{src:this.src,repeat:this.repeat,origin:this.origin.toObject(),scale:"number"==typeof this.scale?this.scale:this.scale.toObject()}},_update:function(){return(this._flagSrc||this._flagImage)&&(this.trigger(v.Types.change),(this._flagSrc||this._flagImage)&&(this.loaded=!1,Re.load(this,function(){this.loaded=!0,this.trigger(v.Types.change).trigger(v.Types.load)}.bind(this)))),this._image&&this._image.readyState>=4&&(this._flagVideo=!0),this},flagReset:function(){return this._flagSrc=this._flagImage=this._flagLoaded=this._flagVideo=this._flagScale=this._flagOffset=!1,this}}),Re.MakeObservable(Re.prototype);var Me=Math.min,Oe=Math.max,Te=Math.ceil,Fe=Math.floor;function Pe(e,t,i,r){q.call(this),this._renderer.type="path",this._renderer.flagVertices=Pe.FlagVertices.bind(this),this._renderer.bindVertices=Pe.BindVertices.bind(this),this._renderer.unbindVertices=Pe.UnbindVertices.bind(this),this._renderer.flagFill=Pe.FlagFill.bind(this),this._renderer.flagStroke=Pe.FlagStroke.bind(this),this._renderer.vertices=[],this._renderer.collection=[],this._closed=!!t,this._curved=!!i,this.beginning=0,this.ending=1,this.fill="#fff",this.stroke="#000",this.linewidth=1,this.opacity=1,this.className="",this.visible=!0,this.cap="butt",this.join="miter",this.miter=4,this.vertices=e,this.automatic=!r,this.dashes=[],this.dashes.offset=0}function Ee(e,t){if(0===t||1===t)return!0;for(var i=e._length*t,r=0,s=0;s=i)return i-r>=0;r+=n}return!1}function Ce(e,t){var i=e._length;if(t<=0)return 0;if(t>=i)return e._lengths.length-1;for(var r=0,s=0;r=t)return t-=s,Math.max(r-1,0)+t/e._lengths[r];s+=e._lengths[r]}return-1}function Le(e,t,i){var r,s,n,a,o,h,l,c,f=t.controls&&t.controls.right,d=e.controls&&e.controls.left;return r=t.x,o=t.y,s=(f||t).x,h=(f||t).y,n=(d||e).x,l=(d||e).y,a=e.x,c=e.y,f&&t._relative&&(s+=t.x,h+=t.y),d&&e._relative&&(n+=e.x,l+=e.y),L(r,o,s,h,n,l,a,c,i)}function je(e,t,i){var r,s,n,a,o,h,l,c,f=t.controls&&t.controls.right,d=e.controls&&e.controls.left;return r=t.x,o=t.y,s=(f||t).x,h=(f||t).y,n=(d||e).x,l=(d||e).y,a=e.x,c=e.y,f&&t._relative&&(s+=t.x,h+=t.y),d&&e._relative&&(n+=e.x,l+=e.y),C(r,o,s,h,n,l,a,c,i)}function Ie(e,t,i,r){Pe.call(this,[new M,new M,new M,new M],!0,!1,!0),this.width=i,this.height=r,this.origin=new w,this.translation.set(e,t),this._update()}function Ne(e,t,i,r,s,n){Pe.call(this,[new M,new M,new M,new M],!0),this.noStroke(),this.noFill(),e instanceof Re?this.texture=e:"string"==typeof e&&(this.texture=new Re(e)),this.origin=new w,this._update(),this.translation.set(t||0,i||0),"number"==typeof r&&(this.columns=r),"number"==typeof s&&(this.rows=s),"number"==typeof n&&(this.frameRate=n),this.index=0}y.extend(Pe,{Properties:["fill","stroke","linewidth","opacity","visible","cap","join","miter","closed","curved","automatic","beginning","ending"],Utils:{getCurveLength:Le},FlagVertices:function(){this._flagVertices=!0,this._flagLength=!0,this.parent&&(this.parent._flagLength=!0)},BindVertices:function(e){for(var t=e.length;t--;)e[t].bind(v.Types.change,this._renderer.flagVertices);this._renderer.flagVertices()},UnbindVertices:function(e){for(var t=e.length;t--;)e[t].unbind(v.Types.change,this._renderer.flagVertices);this._renderer.flagVertices()},FlagFill:function(){this._flagFill=!0},FlagStroke:function(){this._flagStroke=!0},MakeObservable:function(e){q.MakeObservable(e),y.each(Pe.Properties.slice(2,8),ve,e),Object.defineProperty(e,"fill",{enumerable:!0,get:function(){return this._fill},set:function(e){(this._fill instanceof ke||this._fill instanceof we||this._fill instanceof Ae||this._fill instanceof Re)&&this._fill.unbind(v.Types.change,this._renderer.flagFill),this._fill=e,this._flagFill=!0,(this._fill instanceof ke||this._fill instanceof we||this._fill instanceof Ae||this._fill instanceof Re)&&this._fill.bind(v.Types.change,this._renderer.flagFill)}}),Object.defineProperty(e,"stroke",{enumerable:!0,get:function(){return this._stroke},set:function(e){(this._stroke instanceof ke||this._stroke instanceof we||this._stroke instanceof Ae||this._stroke instanceof Re)&&this._stroke.unbind(v.Types.change,this._renderer.flagStroke),this._stroke=e,this._flagStroke=!0,(this._stroke instanceof ke||this._stroke instanceof we||this._stroke instanceof Ae||this._stroke instanceof Re)&&this._stroke.bind(v.Types.change,this._renderer.flagStroke)}}),Object.defineProperty(e,"length",{get:function(){return this._flagLength&&this._updateLength(),this._length}}),Object.defineProperty(e,"closed",{enumerable:!0,get:function(){return this._closed},set:function(e){this._closed=!!e,this._flagVertices=!0}}),Object.defineProperty(e,"curved",{enumerable:!0,get:function(){return this._curved},set:function(e){this._curved=!!e,this._flagVertices=!0}}),Object.defineProperty(e,"automatic",{enumerable:!0,get:function(){return this._automatic},set:function(e){if(e!==this._automatic){this._automatic=!!e;var t=this._automatic?"ignore":"listen";y.each(this.vertices,(function(e){e[t]()}))}}}),Object.defineProperty(e,"beginning",{enumerable:!0,get:function(){return this._beginning},set:function(e){this._beginning=e,this._flagVertices=!0}}),Object.defineProperty(e,"ending",{enumerable:!0,get:function(){return this._ending},set:function(e){this._ending=e,this._flagVertices=!0}}),Object.defineProperty(e,"vertices",{enumerable:!0,get:function(){return this._collection},set:function(e){var t=this._renderer.bindVertices,i=this._renderer.unbindVertices;this._collection&&this._collection.unbind(v.Types.insert,t).unbind(v.Types.remove,i),this._collection=e instanceof K?e:new K(e||[]),this._collection.bind(v.Types.insert,t).bind(v.Types.remove,i),t(this._collection)}}),Object.defineProperty(e,"mask",{enumerable:!0,get:function(){return this._mask},set:function(e){this._mask&&(this._mask.clip=!1),this._mask=e,this._flagMask=!0,e&&!e.clip&&(e.clip=!0)}}),Object.defineProperty(e,"clip",{enumerable:!0,get:function(){return this._clip},set:function(e){this._clip=e,this._flagClip=!0}}),Object.defineProperty(e,"dashes",{enumerable:!0,get:function(){return this._dashes},set:function(e){"number"!=typeof e.offset&&(e.offset=this.dashes&&this._dashes.offset||0),this._dashes=e}})}}),y.extend(Pe.prototype,q.prototype,{constructor:Pe,_flagVertices:!0,_flagLength:!0,_flagFill:!0,_flagStroke:!0,_flagLinewidth:!0,_flagOpacity:!0,_flagVisible:!0,_flagCap:!0,_flagJoin:!0,_flagMiter:!0,_flagMask:!1,_flagClip:!1,_length:0,_fill:"#fff",_stroke:"#000",_linewidth:1,_opacity:1,_visible:!0,_cap:"round",_join:"round",_miter:4,_closed:!0,_curved:!1,_automatic:!0,_beginning:0,_ending:1,_mask:null,_clip:!1,_dashes:null,clone:function(e){for(var t=new Pe,i=0;i=x){this._closed?(r=d(R,k),s=d(R-1,k),0===R&&(r=s,s=R)):(r=R,s=Math.min(Math.max(R-1,0),w)),A=this.vertices[r],S=this.vertices[s],x-=T,e=0!==this._lengths[R]?x/this._lengths[R]:0;break}T+=this._lengths[R]}if(null===A||null===S)return null;if(!A)return S;if(!S)return A;b=S.controls&&S.controls.right,v=A.controls&&A.controls.left,o=S.x,u=S.y,h=(b||S).x,g=(b||S).y,c=(v||A).x,p=(v||A).y,f=A.x,m=A.y,b&&S.relative&&(h+=S.x,g+=S.y),v&&A.relative&&(c+=A.x,p+=A.y),a=E(e,o,h,c,f),_=E(e,u,g,p,m);var F=l(o,h,e),P=l(u,g,e),C=l(h,c,e),L=l(g,p,e),j=l(c,f,e),I=l(p,m,e),N=l(F,C,e),B=l(P,L,e),V=l(C,j,e),z=l(L,I,e);return y.isObject(i)?(i.x=a,i.y=_,y.isObject(i.controls)||M.AppendCurveProperties(i),i.controls.left.x=N,i.controls.left.y=B,i.controls.right.x=V,i.controls.right.y=z,("boolean"===(i.relative,!1)||i.relative)&&(i.controls.left.x-=a,i.controls.left.y-=_,i.controls.right.x-=a,i.controls.right.y-=_),i.t=e,i):((n=new M(a,_,N-a,B-_,V-a,z-_,this._curved?t.curve:t.line)).t=e,n)},plot:function(){if(this.curved)return N(this._collection,this.closed),this;for(var e=0;e0&&(n[n.length-1].command=t.line),void(r=a);var h=je(a,r,e);n=n.concat(h),y.each(h,(function(e,i){i<=0&&r.command===t.move?e.command=t.move:e.command=t.line})),o>=i&&(this._closed&&this._automatic?(h=je(a,r=a,e),n=n.concat(h),y.each(h,(function(e,i){i<=0&&r.command===t.move?e.command=t.move:e.command=t.line}))):s&&n.push(new M(a.x,a.y)),n[n.length-1].command=s?t.close:t.line),r=a}}),this),this._automatic=!1,this._curved=!1,this.vertices=n,this},_updateLength:function(e,i){i||this._update();var r=this.vertices.length,s=r-1,n=this.vertices[s],a=0;return void 0===this._lengths&&(this._lengths=[]),y.each(this.vertices,(function(i,r){if(r<=0||i.command===t.move)return n=i,void(this._lengths[r]=0);this._lengths[r]=Le(i,n,e),a+=this._lengths[r],n=i}),this),this._length=a,this._flagLength=!1,this},_update:function(){if(this._flagVertices){this._automatic&&this.plot(),this._flagLength&&this._updateLength(void 0,!0);var e,i,r,s,n,a=this._collection.length,o=this._closed,h=Math.min(this._beginning,this._ending),l=Math.max(this._beginning,this._ending),c=Ce(this,h*this._length),f=Ce(this,l*this._length),d=Te(c),_=Fe(f);this._renderer.vertices.length=0;for(var u=0;u_&&!i?((n=this._renderer.collection[u]).copy(this._collection[u]),this.getPointAt(l,n),n.command=this._renderer.collection[u].command,this._renderer.vertices.push(n),i=n,(r=this._collection[u-1])&&r.controls&&(n.controls.right.clear(),this._renderer.collection[u-1].controls.right.clear().lerp(r.controls.right,n.t))):u>=d&&u<=_&&(n=this._renderer.collection[u].copy(this._collection[u]),this._renderer.vertices.push(n),u===_&&Ee(this,l)?(i=n,!o&&i.controls&&i.controls.right.clear()):u===d&&Ee(this,h)&&((e=n).command=t.move,!o&&e.controls&&e.controls.left.clear()));d>0&&!e&&(u=d-1,(n=this._renderer.collection[u]).copy(this._collection[u]),this.getPointAt(h,n),n.command=t.move,this._renderer.vertices.unshift(n),e=n,(s=this._collection[u+1])&&s.controls&&(n.controls.left.clear(),this._renderer.collection[u+1].controls.left.copy(s.controls.left).lerp(w.zero,n.t)))}return q.prototype._update.apply(this,arguments),this},flagReset:function(){return this._flagVertices=this._flagLength=this._flagFill=this._flagStroke=this._flagLinewidth=this._flagOpacity=this._flagVisible=this._flagCap=this._flagJoin=this._flagMiter=this._flagClip=!1,q.prototype.flagReset.call(this),this}}),Pe.MakeObservable(Pe.prototype),y.extend(Ie,{Properties:["width","height"],MakeObservable:function(e){Pe.MakeObservable(e),y.each(Ie.Properties,ve,e),Object.defineProperty(e,"origin",{enumerable:!0,get:function(){return this._origin},set:function(e){this._origin&&this._origin.unbind(v.Types.change,this._renderer.flagVertices),this._origin=e,this._origin.bind(v.Types.change,this._renderer.flagVertices),this._renderer.flagVertices()}})}}),y.extend(Ie.prototype,Pe.prototype,{constructor:Ie,_flagWidth:0,_flagHeight:0,_width:0,_height:0,_origin:null,_update:function(){if(this._flagVertices||this._flagWidth||this._flagHeight){var e=this._width/2,i=this._height/2;this._closed||4!==this.vertices.length||this.vertices.push(new M),this.vertices[0].set(-e,-i).sub(this._origin).command=t.move,this.vertices[1].set(e,-i).sub(this._origin).command=t.line,this.vertices[2].set(e,i).sub(this._origin).command=t.line,this.vertices[3].set(-e,i).sub(this._origin).command=t.line,this.vertices[4]&&(this.vertices[4].set(-e,-i).sub(this._origin).command=t.line)}return Pe.prototype._update.call(this),this},flagReset:function(){return this._flagWidth=this._flagHeight=!1,Pe.prototype.flagReset.call(this),this},clone:function(e){var t=new Ie(0,0,this.width,this.height);return t.translation.copy(this.translation),t.rotation=this.rotation,t.scale=this.scale,t.skewX=this.skewX,t.skewY=this.skewY,this.matrix.manual&&t.matrix.copy(this.matrix),y.each(Pe.Properties,(function(e){t[e]=this[e]}),this),e&&e.add(t),t},toObject:function(){var e=Pe.prototype.toObject.call(this);return e.width=this.width,e.height=this.height,e.origin=this.origin.toObject(),e}}),Ie.MakeObservable(Ie.prototype),y.extend(Ne,{Properties:["texture","columns","rows","frameRate","index"],MakeObservable:function(e){Ie.MakeObservable(e),y.each(Ne.Properties,ve,e)}}),y.extend(Ne.prototype,Ie.prototype,{constructor:Ne,_flagTexture:!1,_flagColumns:!1,_flagRows:!1,_flagFrameRate:!1,flagIndex:!1,_amount:1,_duration:0,_startTime:0,_playing:!1,_firstFrame:0,_lastFrame:0,_loop:!0,_texture:null,_columns:1,_rows:1,_frameRate:0,_index:0,_origin:null,play:function(e,t,i){return this._playing=!0,this._firstFrame=0,this._lastFrame=this.amount-1,this._startTime=y.performance.now(),"number"==typeof e&&(this._firstFrame=e),"number"==typeof t&&(this._lastFrame=t),"function"==typeof i?this._onLastFrame=i:delete this._onLastFrame,this._index!==this._firstFrame&&(this._startTime-=1e3*Math.abs(this._index-this._firstFrame)/this._frameRate),this},pause:function(){return this._playing=!1,this},stop:function(){return this._playing=!1,this._index=0,this},clone:function(e){var t=new Ne(this.texture,this.translation.x,this.translation.y,this.columns,this.rows,this.frameRate);return this.playing&&(t.play(this._firstFrame,this._lastFrame),t._loop=this._loop),e&&e.add(t),t},toObject:function(){var e=Ie.prototype.toObject.call(this);return e.texture=this.texture.toObject(),e.columns=this.columns,e.rows=this.rows,e.frameRate=this.frameRate,e.index=this.index,e._firstFrame=this._firstFrame,e._lastFrame=this._lastFrame,e._loop=this._loop,e},_update:function(){var e,t,i,r,s,n,a,o,h,c=this._texture,f=this._columns,d=this._rows;if((this._flagColumns||this._flagRows)&&(this._amount=this._columns*this._rows),this._flagFrameRate&&(this._duration=1e3*this._amount/this._frameRate),this._flagTexture&&(this.fill=this._texture),this._texture.loaded){e=(a=c.image.width)/f,t=(o=c.image.height)/d,r=this._amount,this.width!==e&&(this.width=e),this.height!==t&&(this.height=t),this._playing&&this._frameRate>0&&(y.isNaN(this._lastFrame)&&(this._lastFrame=r-1),i=y.performance.now()-this._startTime,s=1e3*((h=this._lastFrame+1)-this._firstFrame)/this._frameRate,this._loop?i%=s:i=Math.min(i,s),n=l(this._firstFrame,h,i/s),(n=Math.floor(n))!==this._index&&(this._index=n,n>=this._lastFrame-1&&this._onLastFrame&&this._onLastFrame()));var _=-e*(this._index%f)+(a-e)/2,u=-t*Math.floor(this._index/f)+(o-t)/2;_!==c.offset.x&&(c.offset.x=_),u!==c.offset.y&&(c.offset.y=u)}return Ie.prototype._update.call(this),this},flagReset:function(){return this._flagTexture=this._flagColumns=this._flagRows=this._flagFrameRate=!1,Ie.prototype.flagReset.call(this),this}}),Ne.MakeObservable(Ne.prototype);var Be=Math.cos,Ve=Math.sin;function ze(e,t,i,r){for(var s=r?Math.max(r,2):4,n=[],a=0;a2&&(e-=1);for(var i=4/3*Math.tan(Math.PI/(2*e)),r=this._radius,a=r*i,o=0;o2&&(e-=1);for(var i=4/3*Math.tan(Math.PI/(2*this.vertices.length)),r=this._width/2,a=this._height/2,o=0;o=0&&t.splice(n,1)}return t},rt=function(e,t,i){var s,n,o,h,l,c,f,d,_,u,g,p,m={},v={},b={};if(r.getComputedStyle){var x=r.getComputedStyle(e);for(s=x.length;s--;)void 0!==(h=x[o=x[s]])&&(m[o]=h)}for(s=0;s0?e.gradientTransform.baseVal[0].matrix:e.getCTM?e.getCTM():null))break;switch(f=a(n),t._renderer.type){case"linear-gradient":Qe(f,t.left),Qe(f,t.right);break;case"radial-gradient":t.center.x+=f.translateX,t.center.y+=f.translateY,t.focal.x+=f.translateX,t.focal.y+=f.translateY,t.radius*=Math.max(f.scaleX,f.scaleY)}break;case"transform":if(/none/i.test(h))break;if(null===(n=e.transform&&e.transform.baseVal&&e.transform.baseVal.length>0?e.transform.baseVal[0].matrix:e.getCTM?e.getCTM():null))break;F.AutoCalculateImportedMatrices?(f=a(n),t.translation.set(f.translateX,f.translateY),t.rotation=Math.PI*(f.rotation/180),t.scale=new w(f.scaleX,f.scaleY),d=parseFloat((m.x+"").replace("px")),_=parseFloat((m.y+"").replace("px")),d&&(t.translation.x=d),_&&(t.translation.y=_)):(n=e.getCTM(),t._matrix.manual=!0,t._matrix.set(n.a,n.b,n.c,n.d,n.e,n.f));break;case"visible":if(t instanceof Q){t._visible=h;break}t.visible=h;break;case"stroke-linecap":if(t instanceof Q){t._cap=h;break}t.cap=h;break;case"stroke-linejoin":if(t instanceof Q){t._join=h;break}t.join=h;break;case"stroke-miterlimit":if(t instanceof Q){t._miter=h;break}t.miter=h;break;case"stroke-width":if(t instanceof Q){t._linewidth=parseFloat(h);break}t.linewidth=parseFloat(h);break;case"opacity":case"stroke-opacity":case"fill-opacity":if(t instanceof Q){t._opacity=parseFloat(h);break}t.opacity=parseFloat(h);break;case"clip-path":if(/url\(#.*\)/i.test(h)&&(u=h.replace(/url\(#(.*)\)/i,"$1"),at.defs.current&&at.defs.current.contains(u)&&(g=at.defs.current.get(u))&&g.childNodes.length>0))switch(g=g.childNodes[0],p=Ze(g.nodeName),t.mask=at[p].call(this,g,{}),t._renderer.type){case"text":case"path":t.position.add(t.mask.position),t.mask.position.clear()}break;case"fill":case"stroke":l=(t instanceof Q?"_":"")+o,/url\(#.*\)/i.test(h)?(u=h.replace(/url\(#(.*)\)/i,"$1"),e.setAttribute(o,h.replace(/\)/i,"-"+F.Identifier+"applied)")),at.defs.current&&at.defs.current.contains(u)?(g=at.defs.current.get(u),p=Ze(g.nodeName),g=at[p].call(this,g,{})):g=nt(this).getById(u),t[l]=g):t[l]=/none/i.test(h)?"transparent":h;break;case"id":t.id=h,e.id=h+"-"+F.Identifier+"applied";break;case"class":case"className":t.classList=h.split(" ");break;case"x":case"y":if(t instanceof ke||t instanceof we||t instanceof Ae)break;if(h.match("[a-z%]$")&&!h.endsWith("px")){var k=new me("only pixel values are supported with the "+o+" attribute.");console.warn(k.name,k.message)}t.translation[o]=parseFloat(h);break;case"font-family":t instanceof qe&&(t.family=h);break;case"font-size":t instanceof qe&&(t.size=h);break;case"font-weight":t instanceof qe&&(t.weight=h);break;case"font-style":t instanceof qe&&(t.style=h);break;case"text-decoration":t instanceof qe&&(t.decoration=h);break;case"line-height":t instanceof qe&&(t.leading=h)}return m},st=function(e,t){for(var i=0,r=e.childNodes.length;i with no href."),console.warn(i.name,i.message),null;var s=r.slice(1);if(!at.defs.current.contains(s))return i=new me("unable to find element for reference "+r+"."),console.warn(i.name,i.message),null;for(var n=at.defs.current.get(s).cloneNode(!0),a=["x","y","width","height","href","xlink:href"],o=0;o1&&(i=1);break;case"m":case"l":case"t":o.length>2&&(i=2);break;case"s":case"q":o.length>4&&(i=4);break;case"c":o.length>6&&(i=6);break;case"a":o.length>7&&(i=7)}if(i){for(r=0,s=o.length,a=0;r0)switch(h){case"m":n="l";break;case"M":n="L"}f.push(n+o.slice(r,r+i).join(" ")),a++}c=Array.prototype.concat.apply(c,f)}else c.push(e)})),y.each(c,(function(e,i){var r,c,d,_,u,g,p,m,v,b,x=e[0],k=x.toLowerCase();switch(h=e.slice(1).trim().match(Ke),a=x===k,k){case"z":if(i>=f)n=!0;else{r=new M(l.x,l.y,void 0,void 0,void 0,void 0,t.close);for(var A=s.length-1;A>=0;A--){var S=s[A];if(/m/i.test(S.command)){l=S;break}}}break;case"m":case"l":o=void 0,r=new M(parseFloat(h[0]),parseFloat(h[1]),void 0,void 0,void 0,void 0,/m/i.test(k)?t.move:t.line),a&&r.addSelf(l),l=r;break;case"h":case"v":var R=/h/i.test(k)?"x":"y",O=/x/i.test(R)?"y":"x";(r=new M(void 0,void 0,void 0,void 0,void 0,void 0,t.line))[R]=parseFloat(h[0]),r[O]=l[O],a&&(r[R]+=l[R]),l=r;break;case"c":case"s":c=l.x,d=l.y,o||(o=new w),/c/i.test(k)?(_=parseFloat(h[0]),u=parseFloat(h[1]),g=parseFloat(h[2]),p=parseFloat(h[3]),m=parseFloat(h[4]),v=parseFloat(h[5])):(_=(b=V(l,o,a)).x,u=b.y,g=parseFloat(h[0]),p=parseFloat(h[1]),m=parseFloat(h[2]),v=parseFloat(h[3])),a&&(_+=c,u+=d,g+=c,p+=d,m+=c,v+=d),y.isObject(l.controls)||M.AppendCurveProperties(l),l.controls.right.set(_-l.x,u-l.y),r=new M(m,v,g-m,p-v,void 0,void 0,t.curve),l=r,o=r.controls.left;break;case"t":case"q":c=l.x,d=l.y,o||(o=new w),/q/i.test(k)?(_=parseFloat(h[0]),u=parseFloat(h[1]),g=parseFloat(h[0]),p=parseFloat(h[1]),m=parseFloat(h[2]),v=parseFloat(h[3])):(_=(b=V(l,o,a)).x,u=b.y,g=b.x,p=b.y,m=parseFloat(h[0]),v=parseFloat(h[1])),a&&(_+=c,u+=d,g+=c,p+=d,m+=c,v+=d),y.isObject(l.controls)||M.AppendCurveProperties(l),l.controls.right.set(.33*(_-l.x),.33*(u-l.y)),r=new M(m,v,g-m,p-v,void 0,void 0,t.curve),l=r,o=r.controls.left;break;case"a":c=l.x,d=l.y;var T=parseFloat(h[0]),F=parseFloat(h[1]),P=parseFloat(h[2]),E=parseFloat(h[3]),C=parseFloat(h[4]);m=parseFloat(h[5]),v=parseFloat(h[6]),a&&(m+=c,v+=d);var L=new M(m,v);L.command=t.arc,L.rx=T,L.ry=F,L.xAxisRotation=P,L.largeArcFlag=E,L.sweepFlag=C,r=L,l=L,o=void 0}r&&(Array.isArray(r)?s=s.concat(r):s.push(r))}))}(r=new Pe(s,n,void 0,!0).noStroke()).fill="black";var d=r.getBoundingClientRect(!0);return d.centroid={x:d.left+d.width/2,y:d.top+d.height/2},y.each(r.vertices,(function(e){e.subSelf(d.centroid)})),rt.call(this,e,r,i),r.translation.addSelf(d.centroid),r},circle:function(e,t){var i=parseFloat(e.getAttribute("cx")),r=parseFloat(e.getAttribute("cy")),s=new ze(0,0,parseFloat(e.getAttribute("r"))).noStroke();return s.fill="black",rt.call(this,e,s,t),s.translation.x=i,s.translation.y=r,s},ellipse:function(e,t){var i=parseFloat(e.getAttribute("cx")),r=parseFloat(e.getAttribute("cy")),s=new Xe(0,0,parseFloat(e.getAttribute("rx")),parseFloat(e.getAttribute("ry"))).noStroke();return s.fill="black",rt.call(this,e,s,t),s.translation.x=i,s.translation.y=r,s},rect:function(e,t){var i=parseFloat(e.getAttribute("rx")),r=parseFloat(e.getAttribute("ry"));if(!y.isNaN(i)||!y.isNaN(r))return at["rounded-rect"](e);var s=parseFloat(e.getAttribute("width")),n=parseFloat(e.getAttribute("height")),a=s/2,o=n/2,h=new Ie(0,0,s,n).noStroke();return h.fill="black",rt.call(this,e,h,t),h.translation.x+=a,h.translation.y+=o,h},"rounded-rect":function(e,t){var i=parseFloat(e.getAttribute("rx"))||0,r=parseFloat(e.getAttribute("ry"))||0,s=parseFloat(e.getAttribute("width")),n=parseFloat(e.getAttribute("height")),a=s/2,o=n/2,h=new He(0,0,s,n,new w(i,r)).noStroke();return h.fill="black",rt.call(this,e,h,t),h.translation.x+=a,h.translation.y+=o,h},line:function(e,t){var i=new Ye(parseFloat(e.getAttribute("x1")),parseFloat(e.getAttribute("y1")),parseFloat(e.getAttribute("x2")),parseFloat(e.getAttribute("y2"))).noFill();return rt.call(this,e,i,t),i},lineargradient:function(e,t){for(var i=parseFloat(e.getAttribute("x1")),r=parseFloat(e.getAttribute("y1")),s=parseFloat(e.getAttribute("x2")),n=parseFloat(e.getAttribute("y2")),a=(s+i)/2,o=(n+r)/2,h=[],l=0;l1?d[1]:void 0),u=null===u?(d=!!g&&g.match(/stop-opacity:\s?([0-9.-]*)/))&&d.length>1?parseFloat(d[1]):1:parseFloat(u),h.push(new xe(f,_,u))}var p=new we(i-a,r-o,s-a,n-o,h);return rt.call(this,e,p,t),p},radialgradient:function(e,t){var i=parseFloat(e.getAttribute("cx"))||0,r=parseFloat(e.getAttribute("cy"))||0,s=parseFloat(e.getAttribute("r")),n=parseFloat(e.getAttribute("fx")),a=parseFloat(e.getAttribute("fy"));y.isNaN(n)&&(n=i),y.isNaN(a)&&(a=r);for(var o=Math.abs(i+n)/2,h=Math.abs(r+a)/2,l=[],c=0;c1?_[1]:void 0),g=null===g?(_=!!p&&p.match(/stop-opacity:\s?([0-9.-]*)/))&&_.length>1?parseFloat(_[1]):1:parseFloat(g),l.push(new xe(d,u,g))}var m=new Ae(i-o,r-h,s,l,n-o,a-h);return rt.call(this,e,m,t),m},text:function(e,t){var i=function(e){return $e[e]}(e.getAttribute("text-anchor"))||"left",r=function(e){var t=e.getAttribute("dominant-baseline"),i=e.getAttribute("alignment-baseline");return t||i}(e)||"baseline",s=new qe(e.textContent);return rt.call(this,e,s,t),s.alignment=i,s.baseline=r,s},clippath:function(e,t){return at.defs.current&&!at.defs.current.contains(e.id)&&at.defs.current.add(e.id,e),null},image:function(e,t){var i=e.getAttribute("href")||e.getAttribute("xlink:href");if(!i){var r=new me("encountered with no href.");return console.warn(r.name,r.message),null}var s=parseFloat(e.getAttribute("x"))||0,n=parseFloat(e.getAttribute("y"))||0,a=parseFloat(e.getAttribute("width")),o=parseFloat(e.getAttribute("height")),h=new Ne(i,s,n);return y.isNaN(a)||(h.width=a),y.isNaN(o)||(h.height=o),rt.call(this,e,h,t),h}};function ot(e,t){var i=new XMLHttpRequest;return i.open("GET",e),i.onreadystatechange=function(){4===i.readyState&&200===i.status&&t(i.responseText)},i.send(),i}function ht(e,t,i,r){Pe.call(this,[new M,new M,new M,new M],!0),this._renderer.flagTextures=ht.FlagTextures.bind(this),this._renderer.bindTextures=ht.BindTextures.bind(this),this._renderer.unbindTextures=ht.UnbindTextures.bind(this),this.noStroke(),this.noFill(),Array.isArray(e)?this.textures=e.map(ht.GenerateTexture.bind(this)):this.textures=[ht.GenerateTexture(e)],this.origin=new w,this._update(),this.translation.set(t||0,i||0),this.frameRate="number"==typeof r?r:ht.DefaultFrameRate,this.index=0}function lt(e,t,i,r,s,n,a){for(var o=a||3*F.Resolution,h=[],l=0;l0?(r=this._amount,y.isNaN(this._lastFrame)&&(this._lastFrame=r-1),i=y.performance.now()-this._startTime,s=1e3*((o=this._lastFrame+1)-this._firstFrame)/this._frameRate,this._loop?i%=s:i=Math.min(i,s),a=l(this._firstFrame,o,i/s),(a=Math.floor(a))!==this._index&&(this._index=a,(n=h[this._index]).loaded&&(e=n.image.width,t=n.image.height,this.width!==e&&(this.width=e),this.height!==t&&(this.height=t),this.fill=n,a>=this._lastFrame-1&&this._onLastFrame&&this._onLastFrame()))):!this._flagIndex&&this.fill instanceof Re||((n=h[this._index]).loaded&&(e=n.image.width,t=n.image.height,this.width!==e&&(this.width=e),this.height!==t&&(this.height=t)),this.fill=n),Ie.prototype._update.call(this),this},flagReset:function(){return this._flagTextures=this._flagFrameRate=!1,Ie.prototype.flagReset.call(this),this}}),ht.MakeObservable(ht.prototype),y.extend(lt,{Properties:["startAngle","endAngle","innerRadius","outerRadius"],MakeObservable:function(e){Pe.MakeObservable(e),y.each(lt.Properties,ve,e)}}),y.extend(lt.prototype,Pe.prototype,{constructor:lt,_flagStartAngle:!1,_flagEndAngle:!1,_flagInnerRadius:!1,_flagOuterRadius:!1,_startAngle:0,_endAngle:s,_innerRadius:0,_outerRadius:0,_update:function(){if(this._flagVertices||this._flagStartAngle||this._flagEndAngle||this._flagInnerRadius||this._flagOuterRadius){var e,i=this._startAngle,r=this._endAngle,a=this._innerRadius,o=this._outerRadius,h=d(i,s)===d(r,s),l=a>0,c=this.vertices,f=l?c.length/2:c.length,_=0;h?f--:l||(f-=2);for(var u=0,g=f-1;ue&&(this.vertices.splice(e-1,r-e),r=e);for(var n=0;n=r?this.vertices.push(new M(o,h)):this.vertices[n].set(o,h),this.vertices[n].command=0===n?t.move:t.line}}return Pe.prototype._update.call(this),this},flagReset:function(){return this._flagWidth=this._flagHeight=this._flagSides=!1,Pe.prototype.flagReset.call(this),this},clone:function(e){var t=new gt(0,0,this.radius,this.sides);return t.translation.copy(this.translation),t.rotation=this.rotation,t.scale=this.scale,t.skewX=this.skewX,t.skewY=this.skewY,this.matrix.manual&&t.matrix.copy(this.matrix),y.each(Pe.Properties,(function(e){t[e]=this[e]}),this),e&&e.add(t),t},toObject:function(){var e=Pe.prototype.toObject.call(this);return y.each(gt.Properties,(function(t){e[t]=this[t]}),this),e}}),gt.MakeObservable(gt.prototype);var pt=Math.cos,mt=Math.sin;function yt(e,t,i,r,s){arguments.length<=3&&(i=(r=i)/2),("number"!=typeof s||s<=0)&&(s=5),Pe.call(this),this.closed=!0,this.automatic=!1,"number"==typeof i&&(this.innerRadius=i),"number"==typeof r&&(this.outerRadius=r),"number"==typeof s&&(this.sides=s),this._update(),"number"==typeof e&&(this.translation.x=e),"number"==typeof t&&(this.translation.y=t)}y.extend(yt,{Properties:["innerRadius","outerRadius","sides"],MakeObservable:function(e){Pe.MakeObservable(e),y.each(yt.Properties,ve,e)}}),y.extend(yt.prototype,Pe.prototype,{constructor:yt,_flagInnerRadius:!1,_flagOuterRadius:!1,_flagSides:!1,_innerRadius:0,_outerRadius:0,_sides:0,_update:function(){if(this._flagVertices||this._flagInnerRadius||this._flagOuterRadius||this._flagSides){var e=2*this._sides,i=e+1,r=this.vertices.length;r>e&&(this.vertices.splice(e-1,r-e),r=e);for(var n=0;n=r?this.vertices.push(new M(h,l)):this.vertices[n].set(h,l),this.vertices[n].command=0===n?t.move:t.line}}return Pe.prototype._update.call(this),this},flagReset:function(){return this._flagInnerRadius=this._flagOuterRadius=this._flagSides=!1,Pe.prototype.flagReset.call(this),this},clone:function(e){var t=new yt(0,0,this.innerRadius,this.outerRadius,this.sides);return t.translation.copy(this.translation),t.rotation=this.rotation,t.scale=this.scale,t.skewX=this.skewX,t.skewY=this.skewY,this.matrix.manual&&t.matrix.copy(this.matrix),y.each(Pe.Properties,(function(e){t[e]=this[e]}),this),e&&e.add(t),t},toObject:function(){var e=Pe.prototype.toObject.call(this);return y.each(yt.Properties,(function(t){e[t]=this[t]}),this),e}}),yt.MakeObservable(yt.prototype);var vt=new G,bt={version:1.1,ns:"http://www.w3.org/2000/svg",xlink:"http://www.w3.org/1999/xlink",alignments:{left:"start",center:"middle",right:"end"},createElement:function(e,t){var i=e,r=document.createElementNS(bt.ns,i);return"svg"===i&&(t=y.defaults(t||{},{version:bt.version})),t&&Object.keys(t).length>0&&bt.setAttributes(r,t),r},setAttributes:function(e,t){for(var i=Object.keys(t),r=0;r=n&&i&&(S.command===t.curve&&(T=r,m=S.controls&&S.controls.right||S,y=T.controls&&T.controls.left||T,S.relative?(l=g(m.x+S.x),c=g(m.y+S.y)):(l=g(m.x),c=g(m.y)),T.relative?(f=g(y.x+T.x),_=g(y.y+T.y)):(f=g(y.x),_=g(y.y)),h+=" C "+l+" "+c+" "+f+" "+_+" "+(F=g(T.x))+" "+(P=g(T.y))),S.command!==t.close&&(h+=" Z")),a+=h+" "}return a},pointsToString:function(e,i){for(var r="",s=.5*i,n=0;n0&&(t["stroke-dasharray"]=this.dashes.join(" "),t["stroke-dashoffset"]=this.dashes.offset||0),this._renderer.elem?bt.setAttributes(this._renderer.elem,t):(t.id=this._id,this._renderer.elem=bt.createElement("path",t),e.appendChild(this._renderer.elem)),this._flagClip){var r=bt.getClip(this,e),s=this._renderer.elem;this._clip?(s.removeAttribute("id"),r.setAttribute("id",this.id),r.appendChild(s)):(r.removeAttribute("id"),s.setAttribute("id",this.id),this.parent._renderer.elem.appendChild(s))}return this._flagMask&&(this._mask?(bt[this._mask._renderer.type].render.call(this._mask,e),this._renderer.elem.setAttribute("clip-path","url(#"+this._mask.id+")")):this._renderer.elem.removeAttribute("clip-path")),this.flagReset()}},points:{render:function(e){if(0===this._opacity&&!this._flagOpacity)return this;this._update();var t={};if((this._matrix.manual||this._flagMatrix)&&(t.transform="matrix("+this._matrix.toString()+")"),this._flagId&&(t.id=this._id),this._flagVertices||this._flagSize||this._flagSizeAttenuation){var i=this._size;if(!this._sizeAttenuation){h(this,vt);var r=vt.elements,s=a(r[0],r[3],r[1],r[4],r[2],r[5]);i/=Math.max(s.scaleX,s.scaleY)}var n=bt.pointsToString(this._renderer.collection,i);t.d=n}return this._fill&&this._fill._renderer&&(this._fill._update(),bt[this._fill._renderer.type].render.call(this._fill,e,!0)),this._flagFill&&(t.fill=this._fill&&this._fill.id?"url(#"+this._fill.id+")":this._fill),this._stroke&&this._stroke._renderer&&(this._stroke._update(),bt[this._stroke._renderer.type].render.call(this._stroke,e,!0)),this._flagStroke&&(t.stroke=this._stroke&&this._stroke.id?"url(#"+this._stroke.id+")":this._stroke),this._flagLinewidth&&(t["stroke-width"]=this._linewidth),this._flagOpacity&&(t["stroke-opacity"]=this._opacity,t["fill-opacity"]=this._opacity),this._flagClassName&&(t.class=this.classList.join(" ")),this._flagVisible&&(t.visibility=this._visible?"visible":"hidden"),this.dashes&&this.dashes.length>0&&(t["stroke-dasharray"]=this.dashes.join(" "),t["stroke-dashoffset"]=this.dashes.offset||0),this._renderer.elem?bt.setAttributes(this._renderer.elem,t):(t.id=this._id,this._renderer.elem=bt.createElement("path",t),e.appendChild(this._renderer.elem)),this.flagReset()}},text:{render:function(e){this._update();var t={};if((this._matrix.manual||this._flagMatrix)&&(t.transform="matrix("+this._matrix.toString()+")"),this._flagId&&(t.id=this._id),this._flagFamily&&(t["font-family"]=this._family),this._flagSize&&(t["font-size"]=this._size),this._flagLeading&&(t["line-height"]=this._leading),this._flagAlignment&&(t["text-anchor"]=bt.alignments[this._alignment]||this._alignment),this._flagBaseline&&(t["alignment-baseline"]=t["dominant-baseline"]=this._baseline),this._flagStyle&&(t["font-style"]=this._style),this._flagWeight&&(t["font-weight"]=this._weight),this._flagDecoration&&(t["text-decoration"]=this._decoration),this._fill&&this._fill._renderer&&(this._fill._update(),bt[this._fill._renderer.type].render.call(this._fill,e,!0)),this._flagFill&&(t.fill=this._fill&&this._fill.id?"url(#"+this._fill.id+")":this._fill),this._stroke&&this._stroke._renderer&&(this._stroke._update(),bt[this._stroke._renderer.type].render.call(this._stroke,e,!0)),this._flagStroke&&(t.stroke=this._stroke&&this._stroke.id?"url(#"+this._stroke.id+")":this._stroke),this._flagLinewidth&&(t["stroke-width"]=this._linewidth),this._flagOpacity&&(t.opacity=this._opacity),this._flagClassName&&(t.class=this.classList.join(" ")),this._flagVisible&&(t.visibility=this._visible?"visible":"hidden"),this.dashes&&this.dashes.length>0&&(t["stroke-dasharray"]=this.dashes.join(" "),t["stroke-dashoffset"]=this.dashes.offset||0),this._renderer.elem?bt.setAttributes(this._renderer.elem,t):(t.id=this._id,this._renderer.elem=bt.createElement("text",t),e.defs.appendChild(this._renderer.elem)),this._flagClip){var i=bt.getClip(this,e),r=this._renderer.elem;this._clip?(r.removeAttribute("id"),i.setAttribute("id",this.id),i.appendChild(r)):(i.removeAttribute("id"),r.setAttribute("id",this.id),this.parent._renderer.elem.appendChild(r))}return this._flagMask&&(this._mask?(bt[this._mask._renderer.type].render.call(this._mask,e),this._renderer.elem.setAttribute("clip-path","url(#"+this._mask.id+")")):this._renderer.elem.removeAttribute("clip-path")),this._flagValue&&(this._renderer.elem.textContent=this._value),this.flagReset()}},"linear-gradient":{render:function(e,t){t||this._update();var i={};if(this._flagId&&(i.id=this._id),this._flagEndPoints&&(i.x1=this.left._x,i.y1=this.left._y,i.x2=this.right._x,i.y2=this.right._y),this._flagSpread&&(i.spreadMethod=this._spread),this._renderer.elem?bt.setAttributes(this._renderer.elem,i):(i.id=this._id,i.gradientUnits="userSpaceOnUse",this._renderer.elem=bt.createElement("linearGradient",i),e.defs.appendChild(this._renderer.elem)),this._flagStops){var r=this._renderer.elem.childNodes.length!==this.stops.length;if(r)for(;this._renderer.elem.lastChild;)this._renderer.elem.removeChild(this._renderer.elem.lastChild);for(var s=0;s0&&(i.x*=-1),i.y>0&&(i.y*=-1)),(this._flagScale||this._flagLoaded||this._flagRepeat)&&(i.width=0,i.height=0,s)){switch(r.width=i.width=s.width,r.height=i.height=s.height,this._repeat){case"no-repeat":i.width+=1,i.height+=1}this._scale instanceof w?(i.width*=this._scale.x,i.height*=this._scale.y):(i.width*=this._scale,i.height*=this._scale)}return(this._flagScale||this._flagLoaded)&&(this._renderer.image?bt.setAttributes(this._renderer.image,r):this._renderer.image=bt.createElement("image",r)),this._renderer.elem?0!==Object.keys(i).length&&bt.setAttributes(this._renderer.elem,i):(i.id=this._id,i.patternUnits="userSpaceOnUse",this._renderer.elem=bt.createElement("pattern",i),e.defs.appendChild(this._renderer.elem)),this._renderer.elem&&this._renderer.image&&!this._renderer.appended&&(this._renderer.elem.appendChild(this._renderer.image),this._renderer.appended=!0),this.flagReset()}}};function xt(e){this.domElement=e.domElement||bt.createElement("svg"),this.scene=new Q,this.scene.parent=this,this.defs=bt.createElement("defs"),this.domElement.appendChild(this.defs),this.domElement.defs=this.defs,this.domElement.style.overflow="hidden"}y.extend(xt,{Utils:bt}),y.extend(xt.prototype,v,{constructor:xt,setSize:function(e,t){return this.width=e,this.height=t,bt.setAttributes(this.domElement,{width:e,height:t}),this.trigger(v.Types.resize,e,t)},render:function(){return bt.group.render.call(this.scene,this.domElement),this}});var kt={create:function(e,t,i){var r,s;if(r=e.createShader(e[i]),e.shaderSource(r,t),e.compileShader(r),!e.getShaderParameter(r,e.COMPILE_STATUS))throw s=e.getShaderInfoLog(r),e.deleteShader(r),new me("unable to compile shader "+r+": "+s);return r},types:{vertex:"VERTEX_SHADER",fragment:"FRAGMENT_SHADER"},path:{vertex:"\n precision mediump float;\n attribute vec2 a_position;\n\n uniform mat3 u_matrix;\n uniform vec2 u_resolution;\n uniform vec4 u_rect;\n\n varying vec2 v_textureCoords;\n\n void main() {\n vec2 rectCoords = (a_position * (u_rect.zw - u_rect.xy)) + u_rect.xy;\n vec2 projected = (u_matrix * vec3(rectCoords, 1.0)).xy;\n vec2 normal = projected / u_resolution;\n vec2 clipspace = (normal * 2.0) - 1.0;\n\n gl_Position = vec4(clipspace * vec2(1.0, -1.0), 0.0, 1.0);\n v_textureCoords = a_position;\n }\n ",fragment:"\n precision mediump float;\n\n uniform sampler2D u_image;\n varying vec2 v_textureCoords;\n\n void main() {\n vec4 texel = texture2D(u_image, v_textureCoords);\n if (texel.a == 0.0) {\n discard;\n }\n gl_FragColor = texel;\n }\n "},points:{vertex:"\n precision mediump float;\n attribute vec2 a_position;\n\n uniform float u_size;\n uniform mat3 u_matrix;\n uniform vec2 u_resolution;\n\n varying vec2 v_textureCoords;\n\n void main() {\n vec2 projected = (u_matrix * vec3(a_position, 1.0)).xy;\n vec2 normal = projected / u_resolution;\n vec2 clipspace = (normal * 2.0) - 1.0;\n\n gl_PointSize = u_size;\n gl_Position = vec4(clipspace * vec2(1.0, -1.0), 0.0, 1.0);\n v_textureCoords = a_position;\n }\n ",fragment:"\n precision mediump float;\n\n uniform sampler2D u_image;\n\n void main() {\n vec4 texel = texture2D(u_image, gl_PointCoord);\n if (texel.a == 0.0) {\n discard;\n }\n gl_FragColor = texel;\n }\n "}},wt=G.Multiply,At=[1,0,0,0,1,0,0,0,1],St=new _(9),Rt=de.Utils,Mt=new _([0,0,1,0,0,1,0,1,1,0,1,1]),Ot={precision:.9,isHidden:/(undefined|none|transparent)/i,canvas:r.document?r.document.createElement("canvas"):{getContext:function(){}},alignments:{left:"start",middle:"center",right:"end"},matrix:new G,group:{removeChild:function(e,t){if(e.children)for(var i=0;i0&&(b.lineDashOffset=P.offset||0,b.setLineDash(P)),b.save(),b.scale(x.x,x.y),b.translate(I,N),b.beginPath();for(var B=0;B=C&&F&&(n=L,_=V.controls&&V.controls.right||w.zero,u=n.controls&&n.controls.left||w.zero,V._relative?(h=_.x+V.x,l=_.y+V.y):(h=_.x,l=_.y),n._relative?(a=u.x+n.x,o=u.y+n.y):(a=u.x,o=u.y),g=n.x,p=n.y,b.bezierCurveTo(h,l,a,o,g,p));break;case t.line:b.lineTo(g,p);break;case t.move:L=V,b.moveTo(g,p)}}F&&b.closePath(),Ot.isHidden.test(S)||((m=S._renderer&&S._renderer.offset)&&(b.save(),b.translate(-S._renderer.offset.x,-S._renderer.offset.y),b.scale(S._renderer.scale.x,S._renderer.scale.y)),b.fill(),m&&b.restore()),Ot.isHidden.test(k)||((m=k._renderer&&k._renderer.offset)&&(b.save(),b.translate(-k._renderer.offset.x,-k._renderer.offset.y),b.scale(k._renderer.scale.x,k._renderer.scale.y),b.lineWidth=A/k._renderer.scale.x),b.stroke(),m&&b.restore()),b.restore()},getBoundingClientRect:function(e,t,i){var r,s,n=1/0,a=-1/0,o=1/0,h=-1/0;e.forEach((function(e){var t,i,r,s,l,c,f=e.x,d=e.y,_=e.controls;o=Math.min(d,o),n=Math.min(f,n),a=Math.max(f,a),h=Math.max(d,h),e.controls&&(l=_.left,c=_.right,l&&c&&(t=e._relative?l.x+f:l.x,i=e._relative?l.y+d:l.y,r=e._relative?c.x+f:c.x,s=e._relative?c.y+d:c.y,t&&i&&r&&s&&(o=Math.min(i,s,o),n=Math.min(t,r,n),a=Math.max(t,r,a),h=Math.max(i,s,h))))})),"number"==typeof t&&(o-=t,n-=t,a+=t,h+=t),r=a-n,s=h-o,i.top=o,i.left=n,i.right=a,i.bottom=h,i.width=r,i.height=s,i.centroid||(i.centroid={}),i.centroid.x=-n,i.centroid.y=-o},render:function(e,t,i){if(!this._visible||!this._opacity)return this;this._update();var r=i||this.parent,s=t[this._renderer.type],n=r._matrix.manual||r._flagMatrix,a=this._matrix.manual||this._flagMatrix,o=this._renderer.parent!==r,h=this._flagVertices||this._flagFill||this._fill instanceof we&&(this._fill._flagSpread||this._fill._flagStops||this._fill._flagEndPoints)||this._fill instanceof Ae&&(this._fill._flagSpread||this._fill._flagStops||this._fill._flagRadius||this._fill._flagCenter||this._fill._flagFocal)||this._fill instanceof Re&&(this._fill._flagLoaded&&this._fill.loaded||this._fill._flagImage||this._fill._flagVideo||this._fill._flagRepeat||this._fill._flagOffset||this._fill._flagScale)||this._stroke instanceof we&&(this._stroke._flagSpread||this._stroke._flagStops||this._stroke._flagEndPoints)||this._stroke instanceof Ae&&(this._stroke._flagSpread||this._stroke._flagStops||this._stroke._flagRadius||this._stroke._flagCenter||this._stroke._flagFocal)||this._stroke instanceof Re&&(this._stroke._flagLoaded&&this._stroke.loaded||this._stroke._flagImage||this._stroke._flagVideo||this._stroke._flagRepeat||this._stroke._flagOffset||this._fill._flagScale)||this._flagStroke||this._flagLinewidth||this._flagOpacity||r._flagOpacity||this._flagVisible||this._flagCap||this._flagJoin||this._flagMiter||this._flagScale||this.dashes&&this.dashes.length>0||!this._renderer.texture;if((n||a||o)&&(this._renderer.matrix||(this._renderer.matrix=new _(9)),this._matrix.toTransformArray(!0,St),wt(St,r._renderer.matrix,this._renderer.matrix),this._renderer.scale instanceof w||(this._renderer.scale=new w),this._scale instanceof w?(this._renderer.scale.x=this._scale.x*r._renderer.scale.x,this._renderer.scale.y=this._scale.y*r._renderer.scale.y):(this._renderer.scale.x=this._scale*r._renderer.scale.x,this._renderer.scale.y=this._scale*r._renderer.scale.y),o&&(this._renderer.parent=r)),this._mask&&(e.clear(e.STENCIL_BUFFER_BIT),e.enable(e.STENCIL_TEST),e.stencilFunc(e.ALWAYS,1,0),e.stencilOp(e.KEEP,e.KEEP,e.REPLACE),e.colorMask(!1,!1,!1,!1),Ot[this._mask._renderer.type].render.call(this._mask,e,t,this),e.stencilFunc(e.EQUAL,1,255),e.stencilOp(e.KEEP,e.KEEP,e.KEEP),e.colorMask(!0,!0,!0,!0)),h?(this._renderer.rect||(this._renderer.rect={}),this._renderer.opacity=this._opacity*r._renderer.opacity,Ot.path.getBoundingClientRect(this._renderer.vertices,this._linewidth,this._renderer.rect),Ot.updateTexture.call(Ot,e,this)):(this._fill&&this._fill._update&&this._fill._update(),this._stroke&&this._stroke._update&&this._stroke._update()),this._clip&&!i||!this._renderer.texture)return this;t.current!==s&&(e.useProgram(s),e.bindBuffer(e.ARRAY_BUFFER,t.buffers.position),e.vertexAttribPointer(s.position,2,e.FLOAT,!1,0,0),e.enableVertexAttribArray(s.position),e.bufferData(e.ARRAY_BUFFER,Mt,e.STATIC_DRAW),t.resolution.flagged||e.uniform2f(e.getUniformLocation(s,"u_resolution"),t.resolution.width,t.resolution.height),t.current=s),t.resolution.flagged&&e.uniform2f(e.getUniformLocation(s,"u_resolution"),t.resolution.width,t.resolution.height),e.bindTexture(e.TEXTURE_2D,this._renderer.texture);var l=this._renderer.rect;return e.uniformMatrix3fv(s.matrix,!1,this._renderer.matrix),e.uniform4f(s.rect,l.left,l.top,l.right,l.bottom),e.drawArrays(e.TRIANGLES,0,6),this._mask&&e.disable(e.STENCIL_TEST),this.flagReset()}},points:{updateCanvas:function(e){var t,i=this.canvas,r=this.ctx,n=e._stroke,a=e._linewidth,o=e._fill,h=e._renderer.opacity||e._opacity,l=e.dashes,c=e._size,d=c;Ot.isHidden.test(n)||(d+=a),i.width=f(d),i.height=i.width;var _=d/i.width,u=i.width/2,g=i.height/2;r.clearRect(0,0,i.width,i.height),o&&("string"==typeof o?r.fillStyle=o:(Ot[o._renderer.type].render.call(o,r,e),r.fillStyle=o._renderer.effect)),n&&("string"==typeof n?r.strokeStyle=n:(Ot[n._renderer.type].render.call(n,r,e),r.strokeStyle=n._renderer.effect),a&&(r.lineWidth=a/_)),"number"==typeof h&&(r.globalAlpha=h),l&&l.length>0&&(r.lineDashOffset=l.offset||0,r.setLineDash(l)),r.save(),r.translate(u,g),r.scale(Ot.precision,Ot.precision),r.beginPath(),r.arc(0,0,c/_*.5,0,s),r.restore(),closed&&r.closePath(),Ot.isHidden.test(o)||((t=o._renderer&&o._renderer.offset)&&(r.save(),r.translate(-o._renderer.offset.x,-o._renderer.offset.y),r.scale(o._renderer.scale.x,o._renderer.scale.y)),r.fill(),t&&r.restore()),Ot.isHidden.test(n)||((t=n._renderer&&n._renderer.offset)&&(r.save(),r.translate(-n._renderer.offset.x,-n._renderer.offset.y),r.scale(n._renderer.scale.x,n._renderer.scale.y),r.lineWidth=a/n._renderer.scale.x),r.stroke(),t&&r.restore())},render:function(e,t,i){if(!this._visible||!this._opacity)return this;this._update();var r=i||this.parent,s=t[this._renderer.type],n=this._size,a=this._sizeAttenuation,o=this._stroke,h=this._linewidth,l=r._matrix.manual||r._flagMatrix,c=this._matrix.manual||this._flagMatrix,f=this._renderer.parent!==r,d=this._renderer.vertices,u=this._renderer.collection.length,g=this._flagVertices,p=this._flagFill||this._fill instanceof we&&(this._fill._flagSpread||this._fill._flagStops||this._fill._flagEndPoints)||this._fill instanceof Ae&&(this._fill._flagSpread||this._fill._flagStops||this._fill._flagRadius||this._fill._flagCenter||this._fill._flagFocal)||this._fill instanceof Re&&(this._fill._flagLoaded&&this._fill.loaded||this._fill._flagImage||this._fill._flagVideo||this._fill._flagRepeat||this._fill._flagOffset||this._fill._flagScale)||this._stroke instanceof we&&(this._stroke._flagSpread||this._stroke._flagStops||this._stroke._flagEndPoints)||this._stroke instanceof Ae&&(this._stroke._flagSpread||this._stroke._flagStops||this._stroke._flagRadius||this._stroke._flagCenter||this._stroke._flagFocal)||this._stroke instanceof Re&&(this._stroke._flagLoaded&&this._stroke.loaded||this._stroke._flagImage||this._stroke._flagVideo||this._stroke._flagRepeat||this._stroke._flagOffset||this._fill._flagScale)||this._flagStroke||this._flagLinewidth||this._flagOpacity||r._flagOpacity||this._flagVisible||this._flagScale||this.dashes&&this.dashes.length>0||!this._renderer.texture;if((l||c||f)&&(this._renderer.matrix||(this._renderer.matrix=new _(9)),this._matrix.toTransformArray(!0,St),wt(St,r._renderer.matrix,this._renderer.matrix),this._renderer.scale instanceof w||(this._renderer.scale=new w),this._scale instanceof w?(this._renderer.scale.x=this._scale.x*r._renderer.scale.x,this._renderer.scale.y=this._scale.y*r._renderer.scale.y):(this._renderer.scale.x=this._scale*r._renderer.scale.x,this._renderer.scale.y=this._scale*r._renderer.scale.y),f&&(this._renderer.parent=r)),g){var m=this._renderer.positionBuffer;m&&e.deleteBuffer(m),this._renderer.positionBuffer=e.createBuffer(),e.bindBuffer(e.ARRAY_BUFFER,this._renderer.positionBuffer),e.vertexAttribPointer(s.position,2,e.FLOAT,!1,0,0),e.enableVertexAttribArray(s.position),e.bufferData(e.ARRAY_BUFFER,d,e.STATIC_DRAW)}return p?(this._renderer.opacity=this._opacity*r._renderer.opacity,Ot.updateTexture.call(Ot,e,this)):(this._fill&&this._fill._update&&this._fill._update(),this._stroke&&this._stroke._update&&this._stroke._update()),this._clip&&!i||!this._renderer.texture?this:(Ot.isHidden.test(o)||(n+=h),n/=Ot.precision,a&&(n*=Math.max(this._renderer.scale.x,this._renderer.scale.y)),t.current!==s&&(e.useProgram(s),t.resolution.flagged||e.uniform2f(e.getUniformLocation(s,"u_resolution"),t.resolution.width,t.resolution.height),t.current=s),t.resolution.flagged&&e.uniform2f(e.getUniformLocation(s,"u_resolution"),t.resolution.width,t.resolution.height),e.bindTexture(e.TEXTURE_2D,this._renderer.texture),e.uniformMatrix3fv(s.matrix,!1,this._renderer.matrix),e.uniform1f(s.size,n*t.resolution.ratio),e.drawArrays(e.POINTS,0,u),this.flagReset())}},text:{updateCanvas:function(e){var t=this.canvas,i=this.ctx,r=e._renderer.scale,s=e._stroke,n=e._linewidth*r,a=e._fill,o=e._renderer.opacity||e._opacity,h=e.dashes,l=e._decoration;t.width=Math.max(Math.ceil(e._renderer.rect.width*r.x),1),t.height=Math.max(Math.ceil(e._renderer.rect.height*r.y),1);var c,f,d,_,u,g,p,m,y,v,b,x=e._renderer.rect.centroid,k=x.x,w=x.y,A=a._renderer&&a._renderer.offset&&s._renderer&&s._renderer.offset;if(i.clearRect(0,0,t.width,t.height),A||(i.font=[e._style,e._weight,e._size+"px/"+e._leading+"px",e._family].join(" ")),i.textAlign="center",i.textBaseline="middle",a&&("string"==typeof a?i.fillStyle=a:(Ot[a._renderer.type].render.call(a,i,e),i.fillStyle=a._renderer.effect)),s&&("string"==typeof s?i.strokeStyle=s:(Ot[s._renderer.type].render.call(s,i,e),i.strokeStyle=s._renderer.effect),n&&(i.lineWidth=n)),"number"==typeof o&&(i.globalAlpha=o),h&&h.length>0&&(i.lineDashOffset=h.offset||0,i.setLineDash(h)),i.save(),i.scale(r.x,r.y),i.translate(k,w),Ot.isHidden.test(a)||(a._renderer&&a._renderer.offset?(g=a._renderer.scale.x,p=a._renderer.scale.y,i.save(),i.translate(-a._renderer.offset.x,-a._renderer.offset.y),i.scale(g,p),c=e._size/a._renderer.scale.y,f=e._leading/a._renderer.scale.y,i.font=[e._style,e._weight,c+"px/",f+"px",e._family].join(" "),d=a._renderer.offset.x/a._renderer.scale.x,_=a._renderer.offset.y/a._renderer.scale.y,i.fillText(e.value,d,_),i.restore()):i.fillText(e.value,0,0)),Ot.isHidden.test(s)||(s._renderer&&s._renderer.offset?(g=s._renderer.scale.x,p=s._renderer.scale.y,i.save(),i.translate(-s._renderer.offset.x,-s._renderer.offset.y),i.scale(g,p),c=e._size/s._renderer.scale.y,f=e._leading/s._renderer.scale.y,i.font=[e._style,e._weight,c+"px/",f+"px",e._family].join(" "),d=s._renderer.offset.x/s._renderer.scale.x,_=s._renderer.offset.y/s._renderer.scale.y,u=n/s._renderer.scale.x,i.lineWidth=u,i.strokeText(e.value,d,_),i.restore()):i.strokeText(e.value,0,0)),/(underline|strikethrough)/i.test(l)){var S=i.measureText(e.value);switch(l){case"underline":y=S.actualBoundingBoxAscent,b=S.actualBoundingBoxAscent;break;case"strikethrough":y=0,b=0}m=-S.width/2,v=S.width/2,i.lineWidth=Math.max(Math.floor(e._size/15),1),i.strokeStyle=i.fillStyle,i.beginPath(),i.moveTo(m,y),i.lineTo(v,b),i.stroke()}i.restore()},getBoundingClientRect:function(e,t){var i=Ot.ctx;i.font=[e._style,e._weight,e._size+"px/"+e._leading+"px",e._family].join(" "),i.textAlign="center",i.textBaseline=e._baseline;var r=1.25*i.measureText(e._value).width,s=1.25*Math.max(e._size,e._leading);this._linewidth&&!Ot.isHidden.test(this._stroke)&&(r+=2*this._linewidth,s+=2*this._linewidth);var n=r/2,a=s/2;switch(Ot.alignments[e._alignment]||e._alignment){case Ot.alignments.left:t.left=0,t.right=r;break;case Ot.alignments.right:t.left=-r,t.right=0;break;default:t.left=-n,t.right=n}switch(e._baseline){case"bottom":t.top=-s,t.bottom=0;break;case"top":t.top=0,t.bottom=s;break;default:t.top=-a,t.bottom=a}t.width=r,t.height=s,t.centroid||(t.centroid={}),t.centroid.x=n,t.centroid.y=a},render:function(e,t,i){if(!this._visible||!this._opacity)return this;this._update();var r=i||this.parent,s=t[this._renderer.type],n=r._matrix.manual||r._flagMatrix,a=this._matrix.manual||this._flagMatrix,o=this._renderer.parent!==r,h=this._flagVertices||this._flagFill||this._fill instanceof we&&(this._fill._flagSpread||this._fill._flagStops||this._fill._flagEndPoints)||this._fill instanceof Ae&&(this._fill._flagSpread||this._fill._flagStops||this._fill._flagRadius||this._fill._flagCenter||this._fill._flagFocal)||this._fill instanceof Re&&(this._fill._flagLoaded&&this._fill.loaded||this._fill._flagImage||this._fill._flagVideo||this._fill._flagRepeat||this._fill._flagOffset||this._fill._flagScale)||this._stroke instanceof we&&(this._stroke._flagSpread||this._stroke._flagStops||this._stroke._flagEndPoints)||this._stroke instanceof Ae&&(this._stroke._flagSpread||this._stroke._flagStops||this._stroke._flagRadius||this._stroke._flagCenter||this._stroke._flagFocal)||this._stroke instanceof Re&&(this._stroke._flagLoaded&&this._stroke.loaded||this._stroke._flagImage||this._stroke._flagVideo||this._stroke._flagRepeat||this._stroke._flagOffset||this._fill._flagScale)||this._flagStroke||this._flagLinewidth||this._flagOpacity||r._flagOpacity||this._flagVisible||this._flagScale||this._flagValue||this._flagFamily||this._flagSize||this._flagLeading||this._flagAlignment||this._flagBaseline||this._flagStyle||this._flagWeight||this._flagDecoration||this.dashes&&this.dashes.length>0||!this._renderer.texture;if((n||a||o)&&(this._renderer.matrix||(this._renderer.matrix=new _(9)),this._matrix.toTransformArray(!0,St),wt(St,r._renderer.matrix,this._renderer.matrix),this._renderer.scale instanceof w||(this._renderer.scale=new w),this._scale instanceof w?(this._renderer.scale.x=this._scale.x*r._renderer.scale.x,this._renderer.scale.y=this._scale.y*r._renderer.scale.y):(this._renderer.scale.x=this._scale*r._renderer.scale.x,this._renderer.scale.y=this._scale*r._renderer.scale.y),o&&(this._renderer.parent=r)),this._mask&&(e.clear(e.STENCIL_BUFFER_BIT),e.enable(e.STENCIL_TEST),e.stencilFunc(e.ALWAYS,1,0),e.stencilOp(e.KEEP,e.KEEP,e.REPLACE),e.colorMask(!1,!1,!1,!1),Ot[this._mask._renderer.type].render.call(this._mask,e,t,this),e.stencilFunc(e.EQUAL,1,255),e.stencilOp(e.KEEP,e.KEEP,e.KEEP),e.colorMask(!0,!0,!0,!0)),h?(this._renderer.rect||(this._renderer.rect={}),this._renderer.opacity=this._opacity*r._renderer.opacity,Ot.text.getBoundingClientRect(this,this._renderer.rect),Ot.updateTexture.call(Ot,e,this)):(this._fill&&this._fill._update&&this._fill._update(),this._stroke&&this._stroke._update&&this._stroke._update()),this._clip&&!i||!this._renderer.texture)return this;t.current!==s&&(e.useProgram(s),e.bindBuffer(e.ARRAY_BUFFER,t.buffers.position),e.vertexAttribPointer(s.position,2,e.FLOAT,!1,0,0),e.enableVertexAttribArray(s.position),e.bufferData(e.ARRAY_BUFFER,Mt,e.STATIC_DRAW),t.resolution.flagged||e.uniform2f(e.getUniformLocation(s,"u_resolution"),t.resolution.width,t.resolution.height),t.current=s),t.resolution.flagged&&e.uniform2f(e.getUniformLocation(s,"u_resolution"),t.resolution.width,t.resolution.height),e.bindTexture(e.TEXTURE_2D,this._renderer.texture);var l=this._renderer.rect;return e.uniformMatrix3fv(s.matrix,!1,this._renderer.matrix),e.uniform4f(s.rect,l.left,l.top,l.right,l.bottom),e.drawArrays(e.TRIANGLES,0,6),this._mask&&e.disable(e.STENCIL_TEST),this.flagReset()}},"linear-gradient":{render:function(e,t){if(e.canvas.getContext("2d")){if(this._update(),!this._renderer.effect||this._flagEndPoints||this._flagStops){this._renderer.effect=e.createLinearGradient(this.left._x,this.left._y,this.right._x,this.right._y);for(var i=0;iNov 24, 2021 + ++ Made mask removal possible on `Two.Group`s, `Two.Path`s, and `Two.Points`' + ## Nov 20, 2021 v0.7.10

Nov 20, 2021