{"version":3,"file":"svguitar.umd.js","sources":["../src/constants.ts","../node_modules/roughjs/bundled/rough.esm.js","../src/renderer/roughjs/defs.ts","../src/renderer/renderer.ts","../src/renderer/roughjs/roughjs-renderer.ts","../node_modules/@svgdotjs/svg.js/src/utils/methods.js","../node_modules/@svgdotjs/svg.js/src/utils/utils.js","../node_modules/@svgdotjs/svg.js/src/modules/core/namespaces.js","../node_modules/@svgdotjs/svg.js/src/utils/window.js","../node_modules/@svgdotjs/svg.js/src/types/Base.js","../node_modules/@svgdotjs/svg.js/src/utils/adopter.js","../node_modules/@svgdotjs/svg.js/src/modules/optional/arrange.js","../node_modules/@svgdotjs/svg.js/src/modules/core/regex.js","../node_modules/@svgdotjs/svg.js/src/modules/optional/class.js","../node_modules/@svgdotjs/svg.js/src/modules/optional/css.js","../node_modules/@svgdotjs/svg.js/src/modules/optional/data.js","../node_modules/@svgdotjs/svg.js/src/modules/optional/memory.js","../node_modules/@svgdotjs/svg.js/src/modules/core/event.js","../node_modules/@svgdotjs/svg.js/src/types/Color.js","../node_modules/@svgdotjs/svg.js/src/types/Point.js","../node_modules/@svgdotjs/svg.js/src/types/Matrix.js","../node_modules/@svgdotjs/svg.js/src/modules/core/parser.js","../node_modules/@svgdotjs/svg.js/src/types/Box.js","../node_modules/@svgdotjs/svg.js/src/types/ArrayPolyfill.js","../node_modules/@svgdotjs/svg.js/src/types/List.js","../node_modules/@svgdotjs/svg.js/src/modules/core/selector.js","../node_modules/@svgdotjs/svg.js/src/types/EventTarget.js","../node_modules/@svgdotjs/svg.js/src/modules/core/defaults.js","../node_modules/@svgdotjs/svg.js/src/types/SVGArray.js","../node_modules/@svgdotjs/svg.js/src/types/SVGNumber.js","../node_modules/@svgdotjs/svg.js/src/modules/core/attr.js","../node_modules/@svgdotjs/svg.js/src/elements/Dom.js","../node_modules/@svgdotjs/svg.js/src/elements/Element.js","../node_modules/@svgdotjs/svg.js/src/modules/optional/sugar.js","../node_modules/@svgdotjs/svg.js/src/modules/optional/transform.js","../node_modules/@svgdotjs/svg.js/src/modules/core/circled.js","../node_modules/@svgdotjs/svg.js/src/elements/Shape.js","../node_modules/@svgdotjs/svg.js/src/elements/Circle.js","../node_modules/@svgdotjs/svg.js/src/elements/Container.js","../node_modules/@svgdotjs/svg.js/src/elements/Defs.js","../node_modules/@svgdotjs/svg.js/src/elements/Ellipse.js","../node_modules/@svgdotjs/svg.js/src/elements/Stop.js","../node_modules/@svgdotjs/svg.js/src/modules/core/gradiented.js","../node_modules/@svgdotjs/svg.js/src/elements/Gradient.js","../node_modules/@svgdotjs/svg.js/src/elements/Pattern.js","../node_modules/@svgdotjs/svg.js/src/elements/Image.js","../node_modules/@svgdotjs/svg.js/src/types/PointArray.js","../node_modules/@svgdotjs/svg.js/src/modules/core/pointed.js","../node_modules/@svgdotjs/svg.js/src/elements/Line.js","../node_modules/@svgdotjs/svg.js/src/elements/Marker.js","../node_modules/@svgdotjs/svg.js/src/animation/Controller.js","../node_modules/@svgdotjs/svg.js/src/types/PathArray.js","../node_modules/@svgdotjs/svg.js/src/animation/Morphable.js","../node_modules/@svgdotjs/svg.js/src/elements/Path.js","../node_modules/@svgdotjs/svg.js/src/modules/core/poly.js","../node_modules/@svgdotjs/svg.js/src/elements/Polygon.js","../node_modules/@svgdotjs/svg.js/src/elements/Polyline.js","../node_modules/@svgdotjs/svg.js/src/elements/Rect.js","../node_modules/@svgdotjs/svg.js/src/animation/Queue.js","../node_modules/@svgdotjs/svg.js/src/animation/Animator.js","../node_modules/@svgdotjs/svg.js/src/animation/Timeline.js","../node_modules/@svgdotjs/svg.js/src/animation/Runner.js","../node_modules/@svgdotjs/svg.js/src/elements/Svg.js","../node_modules/@svgdotjs/svg.js/src/elements/Symbol.js","../node_modules/@svgdotjs/svg.js/src/modules/core/textable.js","../node_modules/@svgdotjs/svg.js/src/elements/Text.js","../node_modules/@svgdotjs/svg.js/src/elements/Tspan.js","../node_modules/@svgdotjs/svg.js/src/elements/ClipPath.js","../node_modules/@svgdotjs/svg.js/src/elements/ForeignObject.js","../node_modules/@svgdotjs/svg.js/src/elements/G.js","../node_modules/@svgdotjs/svg.js/src/elements/A.js","../node_modules/@svgdotjs/svg.js/src/elements/Mask.js","../node_modules/@svgdotjs/svg.js/src/elements/Style.js","../node_modules/@svgdotjs/svg.js/src/elements/TextPath.js","../node_modules/@svgdotjs/svg.js/src/elements/Use.js","../node_modules/@svgdotjs/svg.js/src/main.js","../src/utils/is-node.ts","../src/renderer/svgjs/svg-js-renderer.ts","../src/utils/range.ts","../src/svguitar.ts"],"sourcesContent":["interface ChartConstants {\n width: number\n}\n\nexport const constants: ChartConstants = {\n /**\n * The viewbox width of the svg\n */\n width: 400,\n}\n\nexport default constants\n","function t(t,e,s){if(t&&t.length){const[n,a]=e,o=Math.PI/180*s,h=Math.cos(o),r=Math.sin(o);t.forEach((t=>{const[e,s]=t;t[0]=(e-n)*h-(s-a)*r+n,t[1]=(e-n)*r+(s-a)*h+a}))}}function e(t){const e=t[0],s=t[1];return Math.sqrt(Math.pow(e[0]-s[0],2)+Math.pow(e[1]-s[1],2))}function s(e,s){const n=s.hachureAngle+90;let a=s.hachureGap;a<0&&(a=4*s.strokeWidth),a=Math.max(a,.1);const o=[0,0];if(n)for(const s of e)t(s,o,n);const h=function(t,e){const s=[];for(const e of t){const t=[...e];t[0].join(\",\")!==t[t.length-1].join(\",\")&&t.push([t[0][0],t[0][1]]),t.length>2&&s.push(t)}const n=[];e=Math.max(e,.1);const a=[];for(const t of s)for(let e=0;et.ymine.ymin?1:t.xe.x?1:t.ymax===e.ymax?0:(t.ymax-e.ymax)/Math.abs(t.ymax-e.ymax))),!a.length)return n;let o=[],h=a[0].ymin;for(;o.length||a.length;){if(a.length){let t=-1;for(let e=0;eh);e++)t=e;a.splice(0,t+1).forEach((t=>{o.push({s:h,edge:t})}))}if(o=o.filter((t=>!(t.edge.ymax<=h))),o.sort(((t,e)=>t.edge.x===e.edge.x?0:(t.edge.x-e.edge.x)/Math.abs(t.edge.x-e.edge.x))),o.length>1)for(let t=0;t=o.length)break;const s=o[t].edge,a=o[e].edge;n.push([[Math.round(s.x),h],[Math.round(a.x),h]])}h+=e,o.forEach((t=>{t.edge.x=t.edge.x+e*t.edge.islope}))}return n}(e,a);if(n){for(const s of e)t(s,o,-n);!function(e,s,n){const a=[];e.forEach((t=>a.push(...t))),t(a,s,n)}(h,o,-n)}return h}class n{constructor(t){this.helper=t}fillPolygons(t,e){return this._fillPolygons(t,e)}_fillPolygons(t,e){const n=s(t,e);return{type:\"fillSketch\",ops:this.renderLines(n,e)}}renderLines(t,e){const s=[];for(const n of t)s.push(...this.helper.doubleLineOps(n[0][0],n[0][1],n[1][0],n[1][1],e));return s}}class a extends n{fillPolygons(t,n){let a=n.hachureGap;a<0&&(a=4*n.strokeWidth),a=Math.max(a,.1);const o=s(t,Object.assign({},n,{hachureGap:a})),h=Math.PI/180*n.hachureAngle,r=[],i=.5*a*Math.cos(h),c=.5*a*Math.sin(h);for(const[t,s]of o)e([t,s])&&r.push([[t[0]-i,t[1]+c],[...s]],[[t[0]+i,t[1]-c],[...s]]);return{type:\"fillSketch\",ops:this.renderLines(r,n)}}}class o extends n{fillPolygons(t,e){const s=this._fillPolygons(t,e),n=Object.assign({},e,{hachureAngle:e.hachureAngle+90}),a=this._fillPolygons(t,n);return s.ops=s.ops.concat(a.ops),s}}class h{constructor(t){this.helper=t}fillPolygons(t,e){const n=s(t,e=Object.assign({},e,{hachureAngle:0}));return this.dotsOnLines(n,e)}dotsOnLines(t,s){const n=[];let a=s.hachureGap;a<0&&(a=4*s.strokeWidth),a=Math.max(a,.1);let o=s.fillWeight;o<0&&(o=s.strokeWidth/2);const h=a/4;for(const r of t){const t=e(r),i=t/a,c=Math.ceil(i)-1,l=t-c*a,u=(r[0][0]+r[1][0])/2-a/4,p=Math.min(r[0][1],r[1][1]);for(let t=0;t{const h=e(t),r=Math.floor(h/(n+a)),i=(h+a-r*(n+a))/2;let c=t[0],l=t[1];c[0]>l[0]&&(c=t[1],l=t[0]);const u=Math.atan((l[1]-c[1])/(l[0]-c[0]));for(let t=0;t{const o=e(t),h=Math.round(o/(2*s));let r=t[0],i=t[1];r[0]>i[0]&&(r=t[1],i=t[0]);const c=Math.atan((i[1]-r[1])/(i[0]-r[0]));for(let t=0;tn%2?t+s:t+e));o.push({key:\"C\",data:t}),e=t[4],s=t[5];break}case\"Q\":o.push({key:\"Q\",data:[...r]}),e=r[2],s=r[3];break;case\"q\":{const t=r.map(((t,n)=>n%2?t+s:t+e));o.push({key:\"Q\",data:t}),e=t[2],s=t[3];break}case\"A\":o.push({key:\"A\",data:[...r]}),e=r[5],s=r[6];break;case\"a\":e+=r[5],s+=r[6],o.push({key:\"A\",data:[r[0],r[1],r[2],r[3],r[4],e,s]});break;case\"H\":o.push({key:\"H\",data:[...r]}),e=r[0];break;case\"h\":e+=r[0],o.push({key:\"H\",data:[e]});break;case\"V\":o.push({key:\"V\",data:[...r]}),s=r[0];break;case\"v\":s+=r[0],o.push({key:\"V\",data:[s]});break;case\"S\":o.push({key:\"S\",data:[...r]}),e=r[2],s=r[3];break;case\"s\":{const t=r.map(((t,n)=>n%2?t+s:t+e));o.push({key:\"S\",data:t}),e=t[2],s=t[3];break}case\"T\":o.push({key:\"T\",data:[...r]}),e=r[0],s=r[1];break;case\"t\":e+=r[0],s+=r[1],o.push({key:\"T\",data:[e,s]});break;case\"Z\":case\"z\":o.push({key:\"Z\",data:[]}),e=n,s=a}return o}function g(t){const e=[];let s=\"\",n=0,a=0,o=0,h=0,r=0,i=0;for(const{key:c,data:l}of t){switch(c){case\"M\":e.push({key:\"M\",data:[...l]}),[n,a]=l,[o,h]=l;break;case\"C\":e.push({key:\"C\",data:[...l]}),n=l[4],a=l[5],r=l[2],i=l[3];break;case\"L\":e.push({key:\"L\",data:[...l]}),[n,a]=l;break;case\"H\":n=l[0],e.push({key:\"L\",data:[n,a]});break;case\"V\":a=l[0],e.push({key:\"L\",data:[n,a]});break;case\"S\":{let t=0,o=0;\"C\"===s||\"S\"===s?(t=n+(n-r),o=a+(a-i)):(t=n,o=a),e.push({key:\"C\",data:[t,o,...l]}),r=l[0],i=l[1],n=l[2],a=l[3];break}case\"T\":{const[t,o]=l;let h=0,c=0;\"Q\"===s||\"T\"===s?(h=n+(n-r),c=a+(a-i)):(h=n,c=a);const u=n+2*(h-n)/3,p=a+2*(c-a)/3,f=t+2*(h-t)/3,d=o+2*(c-o)/3;e.push({key:\"C\",data:[u,p,f,d,t,o]}),r=h,i=c,n=t,a=o;break}case\"Q\":{const[t,s,o,h]=l,c=n+2*(t-n)/3,u=a+2*(s-a)/3,p=o+2*(t-o)/3,f=h+2*(s-h)/3;e.push({key:\"C\",data:[c,u,p,f,o,h]}),r=t,i=s,n=o,a=h;break}case\"A\":{const t=Math.abs(l[0]),s=Math.abs(l[1]),o=l[2],h=l[3],r=l[4],i=l[5],c=l[6];if(0===t||0===s)e.push({key:\"C\",data:[n,a,i,c,i,c]}),n=i,a=c;else if(n!==i||a!==c){k(n,a,i,c,t,s,o,h,r).forEach((function(t){e.push({key:\"C\",data:t})})),n=i,a=c}break}case\"Z\":e.push({key:\"Z\",data:[]}),n=o,a=h}s=c}return e}function M(t,e,s){return[t*Math.cos(s)-e*Math.sin(s),t*Math.sin(s)+e*Math.cos(s)]}function k(t,e,s,n,a,o,h,r,i,c){const l=(u=h,Math.PI*u/180);var u;let p=[],f=0,d=0,g=0,b=0;if(c)[f,d,g,b]=c;else{[t,e]=M(t,e,-l),[s,n]=M(s,n,-l);const h=(t-s)/2,c=(e-n)/2;let u=h*h/(a*a)+c*c/(o*o);u>1&&(u=Math.sqrt(u),a*=u,o*=u);const p=a*a,k=o*o,y=p*k-p*c*c-k*h*h,m=p*c*c+k*h*h,w=(r===i?-1:1)*Math.sqrt(Math.abs(y/m));g=w*a*c/o+(t+s)/2,b=w*-o*h/a+(e+n)/2,f=Math.asin(parseFloat(((e-b)/o).toFixed(9))),d=Math.asin(parseFloat(((n-b)/o).toFixed(9))),td&&(f-=2*Math.PI),!i&&d>f&&(d-=2*Math.PI)}let y=d-f;if(Math.abs(y)>120*Math.PI/180){const t=d,e=s,r=n;d=i&&d>f?f+120*Math.PI/180*1:f+120*Math.PI/180*-1,p=k(s=g+a*Math.cos(d),n=b+o*Math.sin(d),e,r,a,o,h,0,i,[d,t,g,b])}y=d-f;const m=Math.cos(f),w=Math.sin(f),x=Math.cos(d),P=Math.sin(d),v=Math.tan(y/4),O=4/3*a*v,S=4/3*o*v,L=[t,e],T=[t+O*w,e-S*m],D=[s+O*P,n-S*x],A=[s,n];if(T[0]=2*L[0]-T[0],T[1]=2*L[1]-T[1],c)return[T,D,A].concat(p);{p=[T,D,A].concat(p);const t=[];for(let e=0;e2){const a=[];for(let e=0;e2*Math.PI&&(f=0,d=2*Math.PI);const g=2*Math.PI/i.curveStepCount,M=Math.min(g/2,(d-f)/2),k=E(M,c,l,u,p,f,d,1,i);if(!i.disableMultiStroke){const t=E(M,c,l,u,p,f,d,1.5,i);k.push(...t)}return h&&(r?k.push(...I(c,l,c+u*Math.cos(f),l+p*Math.sin(f),i),...I(c,l,c+u*Math.cos(d),l+p*Math.sin(d),i)):k.push({op:\"lineTo\",data:[c,l]},{op:\"lineTo\",data:[c+u*Math.cos(f),l+p*Math.sin(f)]})),{type:\"path\",ops:k}}function S(t,e){const s=[];for(const n of t)if(n.length){const t=e.maxRandomnessOffset||0,a=n.length;if(a>2){s.push({op:\"move\",data:[n[0][0]+A(t,e),n[0][1]+A(t,e)]});for(let o=1;o500?.4:-.0016668*i+1.233334;let l=a.maxRandomnessOffset||0;l*l*100>r&&(l=i/10);const u=l/2,p=.2+.2*T(a);let f=a.bowing*a.maxRandomnessOffset*(n-e)/200,d=a.bowing*a.maxRandomnessOffset*(t-s)/200;f=A(f,a,c),d=A(d,a,c);const g=[],M=()=>A(u,a,c),k=()=>A(l,a,c),b=a.preserveVertices;return o&&(h?g.push({op:\"move\",data:[t+(b?0:M()),e+(b?0:M())]}):g.push({op:\"move\",data:[t+(b?0:A(l,a,c)),e+(b?0:A(l,a,c))]})),h?g.push({op:\"bcurveTo\",data:[f+t+(s-t)*p+M(),d+e+(n-e)*p+M(),f+t+2*(s-t)*p+M(),d+e+2*(n-e)*p+M(),s+(b?0:M()),n+(b?0:M())]}):g.push({op:\"bcurveTo\",data:[f+t+(s-t)*p+k(),d+e+(n-e)*p+k(),f+t+2*(s-t)*p+k(),d+e+2*(n-e)*p+k(),s+(b?0:k()),n+(b?0:k())]}),g}function _(t,e,s){const n=[];n.push([t[0][0]+A(e,s),t[0][1]+A(e,s)]),n.push([t[0][0]+A(e,s),t[0][1]+A(e,s)]);for(let a=1;a3){const o=[],h=1-s.curveTightness;a.push({op:\"move\",data:[t[1][0],t[1][1]]});for(let e=1;e+21&&a.push(s)}else a.push(s);a.push(t[e+3])}else{const n=.5,o=t[e+0],h=t[e+1],r=t[e+2],i=t[e+3],c=j(o,h,n),l=j(h,r,n),u=j(r,i,n),p=j(c,l,n),f=j(l,u,n),d=j(p,f,n);F([o,c,p,d],0,s,a),F([d,f,u,i],0,s,a)}var o,h;return a}function V(t,e){return Z(t,0,t.length,e)}function Z(t,e,s,n,a){const o=a||[],h=t[e],r=t[s-1];let i=0,c=1;for(let n=e+1;ni&&(i=e,c=n)}return Math.sqrt(i)>n?(Z(t,e,c+1,n,o),Z(t,c,s,n,o)):(o.length||o.push(h),o.push(r)),o}function Q(t,e=.15,s){const n=[],a=(t.length-1)/3;for(let s=0;s0?Z(n,0,n.length,s):n}const H=\"none\";class N{constructor(t){this.defaultOptions={maxRandomnessOffset:2,roughness:1,bowing:1,stroke:\"#000\",strokeWidth:1,curveTightness:0,curveFitting:.95,curveStepCount:9,fillStyle:\"hachure\",fillWeight:-1,hachureAngle:-41,hachureGap:-1,dashOffset:-1,dashGap:-1,zigzagOffset:-1,seed:0,disableMultiStroke:!1,disableMultiStrokeFill:!1,preserveVertices:!1},this.config=t||{},this.config.options&&(this.defaultOptions=this._o(this.config.options))}static newSeed(){return Math.floor(Math.random()*2**31)}_o(t){return t?Object.assign({},this.defaultOptions,t):this.defaultOptions}_d(t,e,s){return{shape:t,sets:e||[],options:s||this.defaultOptions}}line(t,e,s,n,a){const o=this._o(a);return this._d(\"line\",[y(t,e,s,n,o)],o)}rectangle(t,e,s,n,a){const o=this._o(a),h=[],r=w(t,e,s,n,o);if(o.fill){const a=[[t,e],[t+s,e],[t+s,e+n],[t,e+n]];\"solid\"===o.fillStyle?h.push(S([a],o)):h.push(L([a],o))}return o.stroke!==H&&h.push(r),this._d(\"rectangle\",h,o)}ellipse(t,e,s,n,a){const o=this._o(a),h=[],r=P(s,n,o),i=v(t,e,o,r);if(o.fill)if(\"solid\"===o.fillStyle){const s=v(t,e,o,r).opset;s.type=\"fillPath\",h.push(s)}else h.push(L([i.estimatedPoints],o));return o.stroke!==H&&h.push(i.opset),this._d(\"ellipse\",h,o)}circle(t,e,s,n){const a=this.ellipse(t,e,s,s,n);return a.shape=\"circle\",a}linearPath(t,e){const s=this._o(e);return this._d(\"linearPath\",[m(t,!1,s)],s)}arc(t,e,s,n,a,o,h=!1,r){const i=this._o(r),c=[],l=O(t,e,s,n,a,o,h,!0,i);if(h&&i.fill)if(\"solid\"===i.fillStyle){const h=Object.assign({},i);h.disableMultiStroke=!0;const r=O(t,e,s,n,a,o,!0,!1,h);r.type=\"fillPath\",c.push(r)}else c.push(function(t,e,s,n,a,o,h){const r=t,i=e;let c=Math.abs(s/2),l=Math.abs(n/2);c+=A(.01*c,h),l+=A(.01*l,h);let u=a,p=o;for(;u<0;)u+=2*Math.PI,p+=2*Math.PI;p-u>2*Math.PI&&(u=0,p=2*Math.PI);const f=(p-u)/h.curveStepCount,d=[];for(let t=u;t<=p;t+=f)d.push([r+c*Math.cos(t),i+l*Math.sin(t)]);return d.push([r+c*Math.cos(p),i+l*Math.sin(p)]),d.push([r,i]),L([d],h)}(t,e,s,n,a,o,i));return i.stroke!==H&&c.push(l),this._d(\"arc\",c,i)}curve(t,e){const s=this._o(e),n=[],a=x(t,s);if(s.fill&&s.fill!==H&&t.length>=3){const e=Q(function(t,e=0){const s=t.length;if(s<3)throw new Error(\"A curve must have at least three points.\");const n=[];if(3===s)n.push(G(t[0]),G(t[1]),G(t[2]),G(t[2]));else{const s=[];s.push(t[0],t[0]);for(let e=1;e{r.length>=4&&o.push(...Q(r,e)),r=[]},c=()=>{i(),o.length&&(a.push(o),o=[])};for(const{key:t,data:e}of n)switch(t){case\"M\":c(),h=[e[0],e[1]],o.push(h);break;case\"L\":i(),o.push([e[0],e[1]]);break;case\"C\":if(!r.length){const t=o.length?o[o.length-1]:h;r.push([t[0],t[1]])}r.push([e[0],e[1]]),r.push([e[2],e[3]]),r.push([e[4],e[5]]);break;case\"Z\":i(),o.push([h[0],h[1]])}if(c(),!s)return a;const l=[];for(const t of a){const e=V(t,s);e.length&&l.push(e)}return l}(t,1,h?4-4*s.simplification:(1+s.roughness)/2);return a&&(\"solid\"===s.fillStyle?n.push(S(r,s)):n.push(L(r,s))),o&&(h?r.forEach((t=>{n.push(m(t,!1,s))})):n.push(function(t,e){const s=g(d(f(t))),n=[];let a=[0,0],o=[0,0];for(const{key:t,data:h}of s)switch(t){case\"M\":{const t=1*(e.maxRandomnessOffset||0),s=e.preserveVertices;n.push({op:\"move\",data:h.map((n=>n+(s?0:A(t,e))))}),o=[h[0],h[1]],a=[h[0],h[1]];break}case\"L\":n.push(...I(o[0],o[1],h[0],h[1],e)),o=[h[0],h[1]];break;case\"C\":{const[t,s,a,r,i,c]=h;n.push(...$(t,s,a,r,i,c,o,e)),o=[i,c];break}case\"Z\":n.push(...I(o[0],o[1],a[0],a[1],e)),o=[a[0],a[1]]}return{type:\"path\",ops:n}}(t,s))),this._d(\"path\",n,s)}opsToPath(t,e){let s=\"\";for(const n of t.ops){const t=\"number\"==typeof e&&e>=0?n.data.map((t=>+t.toFixed(e))):n.data;switch(n.op){case\"move\":s+=`M${t[0]} ${t[1]} `;break;case\"bcurveTo\":s+=`C${t[0]} ${t[1]}, ${t[2]} ${t[3]}, ${t[4]} ${t[5]} `;break;case\"lineTo\":s+=`L${t[0]} ${t[1]} `}}return s.trim()}toPaths(t){const e=t.sets||[],s=t.options||this.defaultOptions,n=[];for(const t of e){let e=null;switch(t.type){case\"path\":e={d:this.opsToPath(t),stroke:s.stroke,strokeWidth:s.strokeWidth,fill:H};break;case\"fillPath\":e={d:this.opsToPath(t),stroke:H,strokeWidth:0,fill:s.fill||H};break;case\"fillSketch\":e=this.fillSketch(t,s)}e&&n.push(e)}return n}fillSketch(t,e){let s=e.fillWeight;return s<0&&(s=e.strokeWidth/2),{d:this.opsToPath(t),stroke:e.fill||H,strokeWidth:s,fill:H}}}class B{constructor(t,e){this.canvas=t,this.ctx=this.canvas.getContext(\"2d\"),this.gen=new N(e)}draw(t){const e=t.sets||[],s=t.options||this.getDefaultOptions(),n=this.ctx,a=t.options.fixedDecimalPlaceDigits;for(const o of e)switch(o.type){case\"path\":n.save(),n.strokeStyle=\"none\"===s.stroke?\"transparent\":s.stroke,n.lineWidth=s.strokeWidth,s.strokeLineDash&&n.setLineDash(s.strokeLineDash),s.strokeLineDashOffset&&(n.lineDashOffset=s.strokeLineDashOffset),this._drawToContext(n,o,a),n.restore();break;case\"fillPath\":{n.save(),n.fillStyle=s.fill||\"\";const e=\"curve\"===t.shape||\"polygon\"===t.shape||\"path\"===t.shape?\"evenodd\":\"nonzero\";this._drawToContext(n,o,a,e),n.restore();break}case\"fillSketch\":this.fillSketch(n,o,s)}}fillSketch(t,e,s){let n=s.fillWeight;n<0&&(n=s.strokeWidth/2),t.save(),s.fillLineDash&&t.setLineDash(s.fillLineDash),s.fillLineDashOffset&&(t.lineDashOffset=s.fillLineDashOffset),t.strokeStyle=s.fill||\"\",t.lineWidth=n,this._drawToContext(t,e,s.fixedDecimalPlaceDigits),t.restore()}_drawToContext(t,e,s,n=\"nonzero\"){t.beginPath();for(const n of e.ops){const e=\"number\"==typeof s&&s>=0?n.data.map((t=>+t.toFixed(s))):n.data;switch(n.op){case\"move\":t.moveTo(e[0],e[1]);break;case\"bcurveTo\":t.bezierCurveTo(e[0],e[1],e[2],e[3],e[4],e[5]);break;case\"lineTo\":t.lineTo(e[0],e[1])}}\"fillPath\"===e.type?t.fill(n):t.stroke()}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}line(t,e,s,n,a){const o=this.gen.line(t,e,s,n,a);return this.draw(o),o}rectangle(t,e,s,n,a){const o=this.gen.rectangle(t,e,s,n,a);return this.draw(o),o}ellipse(t,e,s,n,a){const o=this.gen.ellipse(t,e,s,n,a);return this.draw(o),o}circle(t,e,s,n){const a=this.gen.circle(t,e,s,n);return this.draw(a),a}linearPath(t,e){const s=this.gen.linearPath(t,e);return this.draw(s),s}polygon(t,e){const s=this.gen.polygon(t,e);return this.draw(s),s}arc(t,e,s,n,a,o,h=!1,r){const i=this.gen.arc(t,e,s,n,a,o,h,r);return this.draw(i),i}curve(t,e){const s=this.gen.curve(t,e);return this.draw(s),s}path(t,e){const s=this.gen.path(t,e);return this.draw(s),s}}const J=\"http://www.w3.org/2000/svg\";class K{constructor(t,e){this.svg=t,this.gen=new N(e)}draw(t){const e=t.sets||[],s=t.options||this.getDefaultOptions(),n=this.svg.ownerDocument||window.document,a=n.createElementNS(J,\"g\"),o=t.options.fixedDecimalPlaceDigits;for(const h of e){let e=null;switch(h.type){case\"path\":e=n.createElementNS(J,\"path\"),e.setAttribute(\"d\",this.opsToPath(h,o)),e.setAttribute(\"stroke\",s.stroke),e.setAttribute(\"stroke-width\",s.strokeWidth+\"\"),e.setAttribute(\"fill\",\"none\"),s.strokeLineDash&&e.setAttribute(\"stroke-dasharray\",s.strokeLineDash.join(\" \").trim()),s.strokeLineDashOffset&&e.setAttribute(\"stroke-dashoffset\",`${s.strokeLineDashOffset}`);break;case\"fillPath\":e=n.createElementNS(J,\"path\"),e.setAttribute(\"d\",this.opsToPath(h,o)),e.setAttribute(\"stroke\",\"none\"),e.setAttribute(\"stroke-width\",\"0\"),e.setAttribute(\"fill\",s.fill||\"\"),\"curve\"!==t.shape&&\"polygon\"!==t.shape||e.setAttribute(\"fill-rule\",\"evenodd\");break;case\"fillSketch\":e=this.fillSketch(n,h,s)}e&&a.appendChild(e)}return a}fillSketch(t,e,s){let n=s.fillWeight;n<0&&(n=s.strokeWidth/2);const a=t.createElementNS(J,\"path\");return a.setAttribute(\"d\",this.opsToPath(e,s.fixedDecimalPlaceDigits)),a.setAttribute(\"stroke\",s.fill||\"\"),a.setAttribute(\"stroke-width\",n+\"\"),a.setAttribute(\"fill\",\"none\"),s.fillLineDash&&a.setAttribute(\"stroke-dasharray\",s.fillLineDash.join(\" \").trim()),s.fillLineDashOffset&&a.setAttribute(\"stroke-dashoffset\",`${s.fillLineDashOffset}`),a}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}opsToPath(t,e){return this.gen.opsToPath(t,e)}line(t,e,s,n,a){const o=this.gen.line(t,e,s,n,a);return this.draw(o)}rectangle(t,e,s,n,a){const o=this.gen.rectangle(t,e,s,n,a);return this.draw(o)}ellipse(t,e,s,n,a){const o=this.gen.ellipse(t,e,s,n,a);return this.draw(o)}circle(t,e,s,n){const a=this.gen.circle(t,e,s,n);return this.draw(a)}linearPath(t,e){const s=this.gen.linearPath(t,e);return this.draw(s)}polygon(t,e){const s=this.gen.polygon(t,e);return this.draw(s)}arc(t,e,s,n,a,o,h=!1,r){const i=this.gen.arc(t,e,s,n,a,o,h,r);return this.draw(i)}curve(t,e){const s=this.gen.curve(t,e);return this.draw(s)}path(t,e){const s=this.gen.path(t,e);return this.draw(s)}}var U={canvas:(t,e)=>new B(t,e),svg:(t,e)=>new K(t,e),generator:t=>new N(t),newSeed:()=>N.newSeed()};export{U as default};\n","export default `\n\n \n\n`\n","import { QuerySelector } from '@svgdotjs/svg.js'\n\nexport enum Alignment {\n LEFT = 'left',\n MIDDLE = 'middle',\n RIGHT = 'right',\n}\n\nexport interface GraphcisElement {\n width: number\n height: number\n x: number\n y: number\n remove: () => void\n}\n\nexport abstract class Renderer {\n protected constructor(protected container: QuerySelector | HTMLElement) {}\n\n abstract line(\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n strokeWidth: number,\n color: string,\n classes?: string | string[],\n ): void\n\n abstract size(width: number, height: number): void\n\n abstract clear(): void\n\n abstract remove(): void\n\n abstract background(color: string): void\n\n abstract title(title: string): void\n\n abstract text(\n text: string,\n x: number,\n y: number,\n fontSize: number,\n color: string,\n fontFamily: string,\n alignment: Alignment,\n classes?: string | string[],\n plain?: boolean,\n ): GraphcisElement\n\n abstract circle(\n x: number,\n y: number,\n diameter: number,\n strokeWidth: number,\n strokeColor: string,\n fill?: string,\n classes?: string | string[],\n ): GraphcisElement\n\n abstract rect(\n x: number,\n y: number,\n width: number,\n height: number,\n strokeWidth: number,\n strokeColor: string,\n classes?: string | string[],\n fill?: string,\n radius?: number,\n ): GraphcisElement\n\n abstract triangle(\n x: number,\n y: number,\n size: number,\n strokeWidth: number,\n strokeColor: string,\n classes?: string | string[],\n fill?: string,\n ): GraphcisElement\n\n abstract pentagon(\n x: number,\n y: number,\n size: number,\n strokeWidth: number,\n strokeColor: string,\n fill?: string,\n classes?: string | string[],\n ): GraphcisElement\n\n protected static trianglePath(x: number, y: number, size: number): string {\n return `M${x + size / 2} ${y} L${x + size} ${y + size} L${x} ${y + size}`\n }\n\n protected static ngonPath(x: number, y: number, size: number, edges: number): string {\n let i: number\n let a: number\n const degrees = 360 / edges\n const radius = size / 2\n const points: [number, number][] = []\n\n let curX = x\n let curY = y\n\n for (i = 0; i < edges; i += 1) {\n a = i * degrees - 90\n\n curX = radius + radius * Math.cos((a * Math.PI) / 180)\n curY = radius + radius * Math.sin((a * Math.PI) / 180)\n\n points.push([curX, curY])\n }\n\n const lines = points.reduce((acc, [posX, posY]) => `${acc} L${posX} ${posY}`, '')\n\n return `M${curX} ${curY} ${lines}`\n }\n\n protected static toClassName(classes?: string | string[]): string {\n if (!classes) {\n return ''\n }\n\n return Array.isArray(classes) ? classes.join(' ') : classes\n }\n}\n","/* istanbul ignore file */\n/*\nUnfortunately this roughjs implementation can't be tested with jsdom at the moment. The problem is\nthat there is no SVG implementation for JSDOM. If that changes at some point this class can be\ntested just like the svg.js implementation\n */\n\nimport { QuerySelector } from '@svgdotjs/svg.js'\nimport { RoughSVG } from 'roughjs/bin/svg'\nimport rough from 'roughjs'\nimport { Options } from 'roughjs/bin/core'\nimport defs from './defs'\nimport { Alignment, GraphcisElement, Renderer } from '../renderer'\n\n/**\n * Currently the font is hard-coded to 'Patrick Hand' when using the handdrawn chord diagram style.\n * The reason is that the font needs to be base64 encoded and embedded in the SVG. In theory a web-font\n * could be downloaded, base64 encoded and embedded in the SVG but that's too much of a hassle. But if the\n * need arises it should be possible.\n */\nconst FONT_FAMLILY = 'Patrick Hand'\n\nexport class RoughJsRenderer extends Renderer {\n private rc: RoughSVG\n\n private containerNode: HTMLElement\n\n private svgNode: SVGSVGElement\n\n constructor(container: QuerySelector | HTMLElement) {\n super(container)\n\n // initialize the container\n if (container instanceof HTMLElement) {\n this.containerNode = container\n } else {\n this.containerNode = container as unknown as HTMLElement\n const node = document.querySelector(container)\n\n if (!node) {\n throw new Error(`No element found with selector \"${container}\"`)\n }\n\n this.containerNode = node\n }\n\n // create an empty SVG element\n this.svgNode = document.createElementNS('http://www.w3.org/2000/svg', 'svg')\n this.svgNode.setAttribute('xmlns', 'http://www.w3.org/2000/svg')\n this.svgNode.setAttribute('version', '1.1')\n this.svgNode.setAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink')\n this.svgNode.setAttribute('xmlns:svgjs', 'http://svgjs.com/svgjs')\n\n this.svgNode.setAttribute('preserveAspectRatio', 'xMidYMid meet')\n this.svgNode.setAttribute('viewBox', '0 0 400 400')\n\n this.embedDefs()\n\n this.containerNode.appendChild(this.svgNode)\n\n this.rc = rough.svg(this.svgNode)\n }\n\n /**\n * This will embed all defs defined in the defs.html file. Specifically this is used to embed the base64\n * encoded font into the SVG so that the font always looks correct.\n */\n private embedDefs() {\n /*\n Embed the base64 encoded font. This is done in a timeout because roughjs also creates defs which will simply overwrite existing defs.\n By putting this in a timeout we make sure that the style tag is added after roughjs finished rendering.\n ATTENTION: This will only work as long as we're synchronously rendering the diagram! If we ever switch to asynchronous rendering a different\n solution must be found.\n */\n setTimeout(() => {\n // check if defs were already added\n if (this.svgNode.querySelector('defs [data-svguitar-def]')) {\n return\n }\n\n let currentDefs = this.svgNode.querySelector('defs')\n\n if (!currentDefs) {\n currentDefs = document.createElementNS('http://www.w3.org/2000/svg', 'defs')\n this.svgNode.prepend(currentDefs)\n }\n\n // create dom nodes from HTML string\n const template = document.createElement('template')\n template.innerHTML = defs.trim()\n\n // typescript is complaining when I access content.firstChild.children, therefore this ugly workaround.\n const defsToAdd = template.content.firstChild?.firstChild?.parentElement?.children\n\n if (defsToAdd) {\n Array.from(defsToAdd).forEach((def) => {\n def.setAttribute('data-svguitar-def', 'true')\n currentDefs?.appendChild(def)\n })\n }\n })\n }\n\n title(title: string): void {\n const titleEl = document.createElement('title')\n titleEl.textContent = title\n this.svgNode.appendChild(titleEl)\n }\n\n circle(\n x: number,\n y: number,\n diameter: number,\n strokeWidth: number,\n strokeColor: string,\n fill?: string,\n classes?: string | string[],\n ): GraphcisElement {\n const options: Options = {\n fill: fill || 'none',\n fillWeight: 2.5,\n stroke: strokeColor || fill || 'none',\n roughness: 1.5,\n }\n\n if (strokeWidth > 0) {\n options.strokeWidth = strokeWidth\n }\n\n const circle = this.rc.circle(x + diameter / 2, y + diameter / 2, diameter, options)\n circle.classList.add(...RoughJsRenderer.toClassArray(classes))\n\n this.svgNode.appendChild(circle)\n\n return RoughJsRenderer.boxToElement(circle.getBBox(), () =>\n circle ? circle.remove() : undefined,\n )\n }\n\n clear(): void {\n while (this.svgNode.firstChild) {\n this.svgNode.removeChild(this.svgNode.firstChild)\n }\n\n this.rc = rough.svg(this.svgNode)\n this.embedDefs()\n }\n\n remove(): void {\n this.svgNode.remove()\n }\n\n line(\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n strokeWidth: number,\n color: string,\n classes?: string | string[],\n ): void {\n if (strokeWidth > 5 && (x1 - x2 === 0 || y1 - y2 === 0)) {\n if (Math.abs(x1 - x2) > Math.abs(y1 - y2)) {\n this.rect(x1, y1, x2 - x1, strokeWidth, 0, color, color)\n } else {\n this.rect(x1 - strokeWidth / 2, y1, strokeWidth, y2 - y1, 0, color, color)\n }\n } else {\n const line = this.rc.line(x1, y1, x2, y2, {\n strokeWidth,\n stroke: color,\n })\n\n line.classList.add(...RoughJsRenderer.toClassArray(classes))\n this.svgNode.appendChild(line)\n }\n }\n\n rect(\n x: number,\n y: number,\n width: number,\n height: number,\n strokeWidth: number,\n strokeColor: string,\n classes?: string | string[],\n fill?: string,\n radius?: number,\n ): GraphcisElement {\n const rect2 = this.rc.rectangle(x, y, width, height, {\n // fill: fill || 'none',\n fill: 'none',\n fillWeight: 2,\n strokeWidth,\n stroke: strokeColor,\n roughness: 2.8,\n fillStyle: 'cross-hatch',\n hachureAngle: 60, // angle of hachure,\n hachureGap: 4,\n })\n\n const rectRadius = radius || 0\n const path = RoughJsRenderer.roundedRectData(\n width,\n height,\n rectRadius,\n rectRadius,\n rectRadius,\n rectRadius,\n )\n const rect = this.rc.path(path, {\n fill: fill || 'none',\n fillWeight: 2.5,\n stroke: strokeColor || fill || 'none',\n roughness: 1.5,\n })\n rect.setAttribute('transform', `translate(${x}, ${y})`)\n rect.classList.add(...RoughJsRenderer.toClassArray(classes))\n rect2.classList.add(...RoughJsRenderer.toClassArray(classes))\n this.svgNode.appendChild(rect)\n this.svgNode.appendChild(rect2)\n\n return RoughJsRenderer.boxToElement(rect.getBBox(), () => rect.remove())\n }\n\n triangle(\n x: number,\n y: number,\n size: number,\n strokeWidth: number,\n strokeColor: string,\n classes?: string | string[],\n fill?: string | undefined,\n ): GraphcisElement {\n const triangle = this.rc.path(Renderer.trianglePath(0, 0, size), {\n fill: fill || 'none',\n fillWeight: 2.5,\n stroke: strokeColor || fill || 'none',\n roughness: 1.5,\n })\n triangle.setAttribute('transform', `translate(${x}, ${y})`)\n triangle.classList.add(...RoughJsRenderer.toClassArray(classes))\n this.svgNode.appendChild(triangle)\n\n return RoughJsRenderer.boxToElement(triangle.getBBox(), () => triangle.remove())\n }\n\n pentagon(\n x: number,\n y: number,\n size: number,\n strokeWidth: number,\n strokeColor: string,\n fill?: string,\n classes?: string | string[],\n spikes = 5,\n ): GraphcisElement {\n const pentagon = this.rc.path(Renderer.ngonPath(0, 0, size, spikes), {\n fill: fill || 'none',\n fillWeight: 2.5,\n stroke: strokeColor || fill || 'none',\n roughness: 1.5,\n })\n pentagon.setAttribute('transform', `translate(${x}, ${y})`)\n pentagon.classList.add(...RoughJsRenderer.toClassArray(classes))\n this.svgNode.appendChild(pentagon)\n\n return RoughJsRenderer.boxToElement(pentagon.getBBox(), () => pentagon.remove())\n }\n\n size(width: number, height: number): void {\n this.svgNode.setAttribute('viewBox', `0 0 ${Math.ceil(width)} ${Math.ceil(height)}`)\n }\n\n background(color: string): void {\n const bg = document.createElementNS('http://www.w3.org/2000/svg', 'rect')\n\n bg.setAttributeNS(null, 'width', '100%')\n bg.setAttributeNS(null, 'height', '100%')\n bg.setAttributeNS(null, 'fill', color)\n\n this.svgNode.insertBefore(bg, this.svgNode.firstChild)\n }\n\n text(\n text: string,\n x: number,\n y: number,\n fontSize: number,\n color: string,\n fontFamily: string,\n alignment: Alignment,\n classes?: string | string[],\n plain?: boolean,\n ): GraphcisElement {\n // Place the SVG namespace in a variable to easily reference it.\n const txtElem = document.createElementNS('http://www.w3.org/2000/svg', 'text')\n\n txtElem.setAttributeNS(null, 'x', String(x))\n txtElem.setAttributeNS(null, 'y', String(y))\n txtElem.setAttributeNS(null, 'font-size', String(fontSize))\n txtElem.setAttributeNS(null, 'font-family', FONT_FAMLILY)\n txtElem.setAttributeNS(null, 'align', alignment)\n txtElem.setAttributeNS(null, 'fill', color)\n\n if (plain) {\n txtElem.setAttributeNS(null, 'dominant-baseline', 'central')\n }\n\n txtElem.appendChild(document.createTextNode(text))\n\n this.svgNode.appendChild(txtElem)\n\n const bbox = txtElem.getBBox()\n\n let xOffset: number\n\n switch (alignment) {\n case Alignment.MIDDLE:\n xOffset = -(bbox.width / 2)\n break\n case Alignment.LEFT:\n xOffset = 0\n break\n case Alignment.RIGHT:\n xOffset = -bbox.width\n break\n default:\n throw new Error(`Invalid alignment ${alignment}`)\n }\n\n txtElem.classList.add(...RoughJsRenderer.toClassArray(classes))\n txtElem.setAttributeNS(null, 'x', String(x + xOffset))\n txtElem.setAttributeNS(null, 'y', String(y + (plain ? 0 : bbox.height / 2)))\n\n return RoughJsRenderer.boxToElement(txtElem.getBBox(), txtElem.remove.bind(txtElem))\n }\n\n private static boxToElement(box: DOMRect, remove: () => void): GraphcisElement {\n return {\n width: box.width,\n height: box.height,\n x: box.x,\n y: box.y,\n remove,\n }\n }\n\n private static roundedRectData(\n w: number,\n h: number,\n tlr: number,\n trr: number,\n brr: number,\n blr: number,\n ): string {\n return (\n `M 0 ${tlr} A ${tlr} ${tlr} 0 0 1 ${tlr} 0` +\n ` L ${w - trr} 0` +\n ` A ${trr} ${trr} 0 0 1 ${w} ${trr} L ${w} ${h - brr} A ${brr} ${brr} 0 0 1 ${\n w - brr\n } ${h} L ${blr} ${h} A ${blr} ${blr} 0 0 1 0 ${h - blr} Z`\n )\n }\n\n private static toClassArray(classes?: string | string[]): string[] {\n if (!classes) {\n return []\n }\n\n return Renderer.toClassName(classes).split(' ')\n }\n}\n\nexport default RoughJsRenderer\n","const methods = {}\r\nconst names = []\r\n\r\nexport function registerMethods (name, m) {\r\n if (Array.isArray(name)) {\r\n for (const _name of name) {\r\n registerMethods(_name, m)\r\n }\r\n return\r\n }\r\n\r\n if (typeof name === 'object') {\r\n for (const _name in name) {\r\n registerMethods(_name, name[_name])\r\n }\r\n return\r\n }\r\n\r\n addMethodNames(Object.getOwnPropertyNames(m))\r\n methods[name] = Object.assign(methods[name] || {}, m)\r\n}\r\n\r\nexport function getMethodsFor (name) {\r\n return methods[name] || {}\r\n}\r\n\r\nexport function getMethodNames () {\r\n return [ ...new Set(names) ]\r\n}\r\n\r\nexport function addMethodNames (_names) {\r\n names.push(..._names)\r\n}\r\n","// Map function\r\nexport function map (array, block) {\r\n var i\r\n var il = array.length\r\n var result = []\r\n\r\n for (i = 0; i < il; i++) {\r\n result.push(block(array[i]))\r\n }\r\n\r\n return result\r\n}\r\n\r\n// Filter function\r\nexport function filter (array, block) {\r\n var i\r\n var il = array.length\r\n var result = []\r\n\r\n for (i = 0; i < il; i++) {\r\n if (block(array[i])) {\r\n result.push(array[i])\r\n }\r\n }\r\n\r\n return result\r\n}\r\n\r\n// Degrees to radians\r\nexport function radians (d) {\r\n return d % 360 * Math.PI / 180\r\n}\r\n\r\n// Radians to degrees\r\nexport function degrees (r) {\r\n return r * 180 / Math.PI % 360\r\n}\r\n\r\n// Convert dash-separated-string to camelCase\r\nexport function camelCase (s) {\r\n return s.toLowerCase().replace(/-(.)/g, function (m, g) {\r\n return g.toUpperCase()\r\n })\r\n}\r\n\r\n// Convert camel cased string to string seperated\r\nexport function unCamelCase (s) {\r\n return s.replace(/([A-Z])/g, function (m, g) {\r\n return '-' + g.toLowerCase()\r\n })\r\n}\r\n\r\n// Capitalize first letter of a string\r\nexport function capitalize (s) {\r\n return s.charAt(0).toUpperCase() + s.slice(1)\r\n}\r\n\r\n// Calculate proportional width and height values when necessary\r\nexport function proportionalSize (element, width, height, box) {\r\n if (width == null || height == null) {\r\n box = box || element.bbox()\r\n\r\n if (width == null) {\r\n width = box.width / box.height * height\r\n } else if (height == null) {\r\n height = box.height / box.width * width\r\n }\r\n }\r\n\r\n return {\r\n width: width,\r\n height: height\r\n }\r\n}\r\n\r\nexport function getOrigin (o, element) {\r\n // Allow origin or around as the names\r\n const origin = o.origin // o.around == null ? o.origin : o.around\r\n let ox, oy\r\n\r\n // Allow the user to pass a string to rotate around a given point\r\n if (typeof origin === 'string' || origin == null) {\r\n // Get the bounding box of the element with no transformations applied\r\n const string = (origin || 'center').toLowerCase().trim()\r\n const { height, width, x, y } = element.bbox()\r\n\r\n // Calculate the transformed x and y coordinates\r\n const bx = string.includes('left') ? x\r\n : string.includes('right') ? x + width\r\n : x + width / 2\r\n const by = string.includes('top') ? y\r\n : string.includes('bottom') ? y + height\r\n : y + height / 2\r\n\r\n // Set the bounds eg : \"bottom-left\", \"Top right\", \"middle\" etc...\r\n ox = o.ox != null ? o.ox : bx\r\n oy = o.oy != null ? o.oy : by\r\n } else {\r\n ox = origin[0]\r\n oy = origin[1]\r\n }\r\n\r\n // Return the origin as it is if it wasn't a string\r\n return [ ox, oy ]\r\n}\r\n","// Default namespaces\r\nexport const ns = 'http://www.w3.org/2000/svg'\r\nexport const xmlns = 'http://www.w3.org/2000/xmlns/'\r\nexport const xlink = 'http://www.w3.org/1999/xlink'\r\nexport const svgjs = 'http://svgjs.com/svgjs'\r\n","export const globals = {\r\n window: typeof window === 'undefined' ? null : window,\r\n document: typeof document === 'undefined' ? null : document\r\n}\r\n\r\nexport function registerWindow (win = null, doc = null) {\r\n globals.window = win\r\n globals.document = doc\r\n}\r\n\r\nconst save = {}\r\n\r\nexport function saveWindow () {\r\n save.window = globals.window\r\n save.document = globals.document\r\n}\r\n\r\nexport function restoreWindow () {\r\n globals.window = save.window\r\n globals.document = save.document\r\n}\r\n\r\nexport function withWindow (win, fn) {\r\n saveWindow()\r\n registerWindow(win, win.document)\r\n fn(win, win.document)\r\n restoreWindow()\r\n}\r\n\r\nexport function getWindow () {\r\n return globals.window\r\n}\r\n","export default class Base {\r\n // constructor (node/*, {extensions = []} */) {\r\n // // this.tags = []\r\n // //\r\n // // for (let extension of extensions) {\r\n // // extension.setup.call(this, node)\r\n // // this.tags.push(extension.name)\r\n // // }\r\n // }\r\n}\r\n","import { addMethodNames } from './methods.js'\r\nimport { capitalize } from './utils.js'\r\nimport { ns } from '../modules/core/namespaces.js'\r\nimport { globals } from '../utils/window.js'\r\nimport Base from '../types/Base.js'\r\n\r\nconst elements = {}\r\nexport const root = '___SYMBOL___ROOT___'\r\n\r\n// Method for element creation\r\nexport function create (name) {\r\n // create element\r\n return globals.document.createElementNS(ns, name)\r\n}\r\n\r\nexport function makeInstance (element) {\r\n if (element instanceof Base) return element\r\n\r\n if (typeof element === 'object') {\r\n return adopter(element)\r\n }\r\n\r\n if (element == null) {\r\n return new elements[root]()\r\n }\r\n\r\n if (typeof element === 'string' && element.charAt(0) !== '<') {\r\n return adopter(globals.document.querySelector(element))\r\n }\r\n\r\n var node = create('svg')\r\n node.innerHTML = element\r\n\r\n // We can use firstChild here because we know,\r\n // that the first char is < and thus an element\r\n element = adopter(node.firstChild)\r\n\r\n return element\r\n}\r\n\r\nexport function nodeOrNew (name, node) {\r\n return node instanceof globals.window.Node ? node : create(name)\r\n}\r\n\r\n// Adopt existing svg elements\r\nexport function adopt (node) {\r\n // check for presence of node\r\n if (!node) return null\r\n\r\n // make sure a node isn't already adopted\r\n if (node.instance instanceof Base) return node.instance\r\n\r\n // initialize variables\r\n var className = capitalize(node.nodeName || 'Dom')\r\n\r\n // Make sure that gradients are adopted correctly\r\n if (className === 'LinearGradient' || className === 'RadialGradient') {\r\n className = 'Gradient'\r\n\r\n // Fallback to Dom if element is not known\r\n } else if (!elements[className]) {\r\n className = 'Dom'\r\n }\r\n\r\n return new elements[className](node)\r\n}\r\n\r\nlet adopter = adopt\r\n\r\nexport function mockAdopt (mock = adopt) {\r\n adopter = mock\r\n}\r\n\r\nexport function register (element, name = element.name, asRoot = false) {\r\n elements[name] = element\r\n if (asRoot) elements[root] = element\r\n\r\n addMethodNames(Object.getOwnPropertyNames(element.prototype))\r\n\r\n return element\r\n}\r\n\r\nexport function getClass (name) {\r\n return elements[name]\r\n}\r\n\r\n// Element id sequence\r\nlet did = 1000\r\n\r\n// Get next named element id\r\nexport function eid (name) {\r\n return 'Svgjs' + capitalize(name) + (did++)\r\n}\r\n\r\n// Deep new id assignment\r\nexport function assignNewId (node) {\r\n // do the same for SVG child nodes as well\r\n for (var i = node.children.length - 1; i >= 0; i--) {\r\n assignNewId(node.children[i])\r\n }\r\n\r\n if (node.id) {\r\n return adopt(node).id(eid(node.nodeName))\r\n }\r\n\r\n return adopt(node)\r\n}\r\n\r\n// Method for extending objects\r\nexport function extend (modules, methods, attrCheck) {\r\n var key, i\r\n\r\n modules = Array.isArray(modules) ? modules : [ modules ]\r\n\r\n for (i = modules.length - 1; i >= 0; i--) {\r\n for (key in methods) {\r\n let method = methods[key]\r\n if (attrCheck) {\r\n method = wrapWithAttrCheck(methods[key])\r\n }\r\n modules[i].prototype[key] = method\r\n }\r\n }\r\n}\r\n\r\n// export function extendWithAttrCheck (...args) {\r\n// extend(...args, true)\r\n// }\r\n\r\nexport function wrapWithAttrCheck (fn) {\r\n return function (...args) {\r\n const o = args[args.length - 1]\r\n\r\n if (o && o.constructor === Object && !(o instanceof Array)) {\r\n return fn.apply(this, args.slice(0, -1)).attr(o)\r\n } else {\r\n return fn.apply(this, args)\r\n }\r\n }\r\n}\r\n\r\nexport function invent (config) {\r\n // Create element initializer\r\n var initializer = typeof config.create === 'function'\r\n ? config.create\r\n : function (node) {\r\n this.constructor(node || create(config.create))\r\n }\r\n\r\n // Inherit prototype\r\n if (config.inherit) {\r\n /* eslint new-cap: off */\r\n initializer.prototype = new config.inherit()\r\n initializer.prototype.constructor = initializer\r\n }\r\n\r\n // Extend with methods\r\n if (config.extend) { extend(initializer, config.extend) }\r\n\r\n // Attach construct method to parent\r\n if (config.construct) { extend(config.parent || elements.Container, config.construct) }\r\n\r\n return initializer\r\n}\r\n","import { makeInstance } from '../../utils/adopter.js'\r\nimport { registerMethods } from '../../utils/methods.js'\r\n\r\n// Get all siblings, including myself\r\nexport function siblings () {\r\n return this.parent().children()\r\n}\r\n\r\n// Get the curent position siblings\r\nexport function position () {\r\n return this.parent().index(this)\r\n}\r\n\r\n// Get the next element (will return null if there is none)\r\nexport function next () {\r\n return this.siblings()[this.position() + 1]\r\n}\r\n\r\n// Get the next element (will return null if there is none)\r\nexport function prev () {\r\n return this.siblings()[this.position() - 1]\r\n}\r\n\r\n// Send given element one step forward\r\nexport function forward () {\r\n var i = this.position() + 1\r\n var p = this.parent()\r\n\r\n // move node one step forward\r\n p.removeElement(this).add(this, i)\r\n\r\n // make sure defs node is always at the top\r\n if (typeof p.isRoot === 'function' && p.isRoot()) {\r\n p.node.appendChild(p.defs().node)\r\n }\r\n\r\n return this\r\n}\r\n\r\n// Send given element one step backward\r\nexport function backward () {\r\n var i = this.position()\r\n\r\n if (i > 0) {\r\n this.parent().removeElement(this).add(this, i - 1)\r\n }\r\n\r\n return this\r\n}\r\n\r\n// Send given element all the way to the front\r\nexport function front () {\r\n var p = this.parent()\r\n\r\n // Move node forward\r\n p.node.appendChild(this.node)\r\n\r\n // Make sure defs node is always at the top\r\n if (typeof p.isRoot === 'function' && p.isRoot()) {\r\n p.node.appendChild(p.defs().node)\r\n }\r\n\r\n return this\r\n}\r\n\r\n// Send given element all the way to the back\r\nexport function back () {\r\n if (this.position() > 0) {\r\n this.parent().removeElement(this).add(this, 0)\r\n }\r\n\r\n return this\r\n}\r\n\r\n// Inserts a given element before the targeted element\r\nexport function before (element) {\r\n element = makeInstance(element)\r\n element.remove()\r\n\r\n var i = this.position()\r\n\r\n this.parent().add(element, i)\r\n\r\n return this\r\n}\r\n\r\n// Inserts a given element after the targeted element\r\nexport function after (element) {\r\n element = makeInstance(element)\r\n element.remove()\r\n\r\n var i = this.position()\r\n\r\n this.parent().add(element, i + 1)\r\n\r\n return this\r\n}\r\n\r\nexport function insertBefore (element) {\r\n element = makeInstance(element)\r\n element.before(this)\r\n return this\r\n}\r\n\r\nexport function insertAfter (element) {\r\n element = makeInstance(element)\r\n element.after(this)\r\n return this\r\n}\r\n\r\nregisterMethods('Dom', {\r\n siblings,\r\n position,\r\n next,\r\n prev,\r\n forward,\r\n backward,\r\n front,\r\n back,\r\n before,\r\n after,\r\n insertBefore,\r\n insertAfter\r\n})\r\n","// Parse unit value\r\nexport const numberAndUnit = /^([+-]?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?)([a-z%]*)$/i\r\n\r\n// Parse hex value\r\nexport const hex = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i\r\n\r\n// Parse rgb value\r\nexport const rgb = /rgb\\((\\d+),(\\d+),(\\d+)\\)/\r\n\r\n// Parse reference id\r\nexport const reference = /(#[a-z0-9\\-_]+)/i\r\n\r\n// splits a transformation chain\r\nexport const transforms = /\\)\\s*,?\\s*/\r\n\r\n// Whitespace\r\nexport const whitespace = /\\s/g\r\n\r\n// Test hex value\r\nexport const isHex = /^#[a-f0-9]{3,6}$/i\r\n\r\n// Test rgb value\r\nexport const isRgb = /^rgb\\(/\r\n\r\n// Test css declaration\r\nexport const isCss = /[^:]+:[^;]+;?/\r\n\r\n// Test for blank string\r\nexport const isBlank = /^(\\s+)?$/\r\n\r\n// Test for numeric string\r\nexport const isNumber = /^[+-]?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i\r\n\r\n// Test for percent value\r\nexport const isPercent = /^-?[\\d.]+%$/\r\n\r\n// Test for image url\r\nexport const isImage = /\\.(jpg|jpeg|png|gif|svg)(\\?[^=]+.*)?/i\r\n\r\n// split at whitespace and comma\r\nexport const delimiter = /[\\s,]+/\r\n\r\n// The following regex are used to parse the d attribute of a path\r\n\r\n// Matches all hyphens which are not after an exponent\r\nexport const hyphen = /([^e])-/gi\r\n\r\n// Replaces and tests for all path letters\r\nexport const pathLetters = /[MLHVCSQTAZ]/gi\r\n\r\n// yes we need this one, too\r\nexport const isPathLetter = /[MLHVCSQTAZ]/i\r\n\r\n// matches 0.154.23.45\r\nexport const numbersWithDots = /((\\d?\\.\\d+(?:e[+-]?\\d+)?)((?:\\.\\d+(?:e[+-]?\\d+)?)+))+/gi\r\n\r\n// matches .\r\nexport const dots = /\\./g\r\n","import { delimiter } from '../core/regex.js'\r\nimport { registerMethods } from '../../utils/methods.js'\r\n\r\n// Return array of classes on the node\r\nexport function classes () {\r\n var attr = this.attr('class')\r\n return attr == null ? [] : attr.trim().split(delimiter)\r\n}\r\n\r\n// Return true if class exists on the node, false otherwise\r\nexport function hasClass (name) {\r\n return this.classes().indexOf(name) !== -1\r\n}\r\n\r\n// Add class to the node\r\nexport function addClass (name) {\r\n if (!this.hasClass(name)) {\r\n var array = this.classes()\r\n array.push(name)\r\n this.attr('class', array.join(' '))\r\n }\r\n\r\n return this\r\n}\r\n\r\n// Remove class from the node\r\nexport function removeClass (name) {\r\n if (this.hasClass(name)) {\r\n this.attr('class', this.classes().filter(function (c) {\r\n return c !== name\r\n }).join(' '))\r\n }\r\n\r\n return this\r\n}\r\n\r\n// Toggle the presence of a class on the node\r\nexport function toggleClass (name) {\r\n return this.hasClass(name) ? this.removeClass(name) : this.addClass(name)\r\n}\r\n\r\nregisterMethods('Dom', {\r\n classes, hasClass, addClass, removeClass, toggleClass\r\n})\r\n","import { camelCase } from '../../utils/utils.js'\r\nimport { isBlank } from '../core/regex.js'\r\nimport { registerMethods } from '../../utils/methods.js'\r\n\r\n// Dynamic style generator\r\nexport function css (style, val) {\r\n const ret = {}\r\n if (arguments.length === 0) {\r\n // get full style as object\r\n this.node.style.cssText.split(/\\s*;\\s*/)\r\n .filter(function (el) {\r\n return !!el.length\r\n })\r\n .forEach(function (el) {\r\n const t = el.split(/\\s*:\\s*/)\r\n ret[t[0]] = t[1]\r\n })\r\n return ret\r\n }\r\n\r\n if (arguments.length < 2) {\r\n // get style properties in the array\r\n if (Array.isArray(style)) {\r\n for (const name of style) {\r\n const cased = camelCase(name)\r\n ret[cased] = this.node.style[cased]\r\n }\r\n return ret\r\n }\r\n\r\n // get style for property\r\n if (typeof style === 'string') {\r\n return this.node.style[camelCase(style)]\r\n }\r\n\r\n // set styles in object\r\n if (typeof style === 'object') {\r\n for (const name in style) {\r\n // set empty string if null/undefined/'' was given\r\n this.node.style[camelCase(name)]\r\n = (style[name] == null || isBlank.test(style[name])) ? '' : style[name]\r\n }\r\n }\r\n }\r\n\r\n // set style for property\r\n if (arguments.length === 2) {\r\n this.node.style[camelCase(style)]\r\n = (val == null || isBlank.test(val)) ? '' : val\r\n }\r\n\r\n return this\r\n}\r\n\r\n// Show element\r\nexport function show () {\r\n return this.css('display', '')\r\n}\r\n\r\n// Hide element\r\nexport function hide () {\r\n return this.css('display', 'none')\r\n}\r\n\r\n// Is element visible?\r\nexport function visible () {\r\n return this.css('display') !== 'none'\r\n}\r\n\r\nregisterMethods('Dom', {\r\n css, show, hide, visible\r\n})\r\n","import { registerMethods } from '../../utils/methods.js'\r\n\r\n// Store data values on svg nodes\r\nexport function data (a, v, r) {\r\n if (typeof a === 'object') {\r\n for (v in a) {\r\n this.data(v, a[v])\r\n }\r\n } else if (arguments.length < 2) {\r\n try {\r\n return JSON.parse(this.attr('data-' + a))\r\n } catch (e) {\r\n return this.attr('data-' + a)\r\n }\r\n } else {\r\n this.attr('data-' + a,\r\n v === null ? null\r\n : r === true || typeof v === 'string' || typeof v === 'number' ? v\r\n : JSON.stringify(v)\r\n )\r\n }\r\n\r\n return this\r\n}\r\n\r\nregisterMethods('Dom', { data })\r\n","import { registerMethods } from '../../utils/methods.js'\r\n\r\n// Remember arbitrary data\r\nexport function remember (k, v) {\r\n // remember every item in an object individually\r\n if (typeof arguments[0] === 'object') {\r\n for (var key in k) {\r\n this.remember(key, k[key])\r\n }\r\n } else if (arguments.length === 1) {\r\n // retrieve memory\r\n return this.memory()[k]\r\n } else {\r\n // store memory\r\n this.memory()[k] = v\r\n }\r\n\r\n return this\r\n}\r\n\r\n// Erase a given memory\r\nexport function forget () {\r\n if (arguments.length === 0) {\r\n this._memory = {}\r\n } else {\r\n for (var i = arguments.length - 1; i >= 0; i--) {\r\n delete this.memory()[arguments[i]]\r\n }\r\n }\r\n return this\r\n}\r\n\r\n// This triggers creation of a new hidden class which is not performant\r\n// However, this function is not rarely used so it will not happen frequently\r\n// Return local memory object\r\nexport function memory () {\r\n return (this._memory = this._memory || {})\r\n}\r\n\r\nregisterMethods('Dom', { remember, forget, memory })\r\n","import { delimiter } from './regex.js'\r\nimport { makeInstance } from '../../utils/adopter.js'\r\nimport { globals } from '../../utils/window.js'\r\n\r\nlet listenerId = 0\r\nconst windowEvents = {}\r\n\r\nfunction getEvents (instance) {\r\n let n = instance.getEventHolder()\r\n\r\n // We dont want to save events in global space\r\n if (n === globals.window) n = windowEvents\r\n if (!n.events) n.events = {}\r\n return n.events\r\n}\r\n\r\nfunction getEventTarget (instance) {\r\n return instance.getEventTarget()\r\n}\r\n\r\nfunction clearEvents (instance) {\r\n const n = instance.getEventHolder()\r\n if (n.events) n.events = {}\r\n}\r\n\r\n// Add event binder in the SVG namespace\r\nexport function on (node, events, listener, binding, options) {\r\n var l = listener.bind(binding || node)\r\n var instance = makeInstance(node)\r\n var bag = getEvents(instance)\r\n var n = getEventTarget(instance)\r\n\r\n // events can be an array of events or a string of events\r\n events = Array.isArray(events) ? events : events.split(delimiter)\r\n\r\n // add id to listener\r\n if (!listener._svgjsListenerId) {\r\n listener._svgjsListenerId = ++listenerId\r\n }\r\n\r\n events.forEach(function (event) {\r\n var ev = event.split('.')[0]\r\n var ns = event.split('.')[1] || '*'\r\n\r\n // ensure valid object\r\n bag[ev] = bag[ev] || {}\r\n bag[ev][ns] = bag[ev][ns] || {}\r\n\r\n // reference listener\r\n bag[ev][ns][listener._svgjsListenerId] = l\r\n\r\n // add listener\r\n n.addEventListener(ev, l, options || false)\r\n })\r\n}\r\n\r\n// Add event unbinder in the SVG namespace\r\nexport function off (node, events, listener, options) {\r\n var instance = makeInstance(node)\r\n var bag = getEvents(instance)\r\n var n = getEventTarget(instance)\r\n\r\n // listener can be a function or a number\r\n if (typeof listener === 'function') {\r\n listener = listener._svgjsListenerId\r\n if (!listener) return\r\n }\r\n\r\n // events can be an array of events or a string or undefined\r\n events = Array.isArray(events) ? events : (events || '').split(delimiter)\r\n\r\n events.forEach(function (event) {\r\n var ev = event && event.split('.')[0]\r\n var ns = event && event.split('.')[1]\r\n var namespace, l\r\n\r\n if (listener) {\r\n // remove listener reference\r\n if (bag[ev] && bag[ev][ns || '*']) {\r\n // removeListener\r\n n.removeEventListener(ev, bag[ev][ns || '*'][listener], options || false)\r\n\r\n delete bag[ev][ns || '*'][listener]\r\n }\r\n } else if (ev && ns) {\r\n // remove all listeners for a namespaced event\r\n if (bag[ev] && bag[ev][ns]) {\r\n for (l in bag[ev][ns]) {\r\n off(n, [ ev, ns ].join('.'), l)\r\n }\r\n\r\n delete bag[ev][ns]\r\n }\r\n } else if (ns) {\r\n // remove all listeners for a specific namespace\r\n for (event in bag) {\r\n for (namespace in bag[event]) {\r\n if (ns === namespace) {\r\n off(n, [ event, ns ].join('.'))\r\n }\r\n }\r\n }\r\n } else if (ev) {\r\n // remove all listeners for the event\r\n if (bag[ev]) {\r\n for (namespace in bag[ev]) {\r\n off(n, [ ev, namespace ].join('.'))\r\n }\r\n\r\n delete bag[ev]\r\n }\r\n } else {\r\n // remove all listeners on a given node\r\n for (event in bag) {\r\n off(n, event)\r\n }\r\n\r\n clearEvents(instance)\r\n }\r\n })\r\n}\r\n\r\nexport function dispatch (node, event, data) {\r\n var n = getEventTarget(node)\r\n\r\n // Dispatch event\r\n if (event instanceof globals.window.Event) {\r\n n.dispatchEvent(event)\r\n } else {\r\n event = new globals.window.CustomEvent(event, { detail: data, cancelable: true })\r\n n.dispatchEvent(event)\r\n }\r\n return event\r\n}\r\n","\r\nimport { hex, isHex, isRgb, rgb, whitespace } from '../modules/core/regex.js'\r\n\r\nfunction sixDigitHex (hex) {\r\n return hex.length === 4\r\n ? [ '#',\r\n hex.substring(1, 2), hex.substring(1, 2),\r\n hex.substring(2, 3), hex.substring(2, 3),\r\n hex.substring(3, 4), hex.substring(3, 4)\r\n ].join('')\r\n : hex\r\n}\r\n\r\nfunction componentHex (component) {\r\n const integer = Math.round(component)\r\n const bounded = Math.max(0, Math.min(255, integer))\r\n const hex = bounded.toString(16)\r\n return hex.length === 1 ? '0' + hex : hex\r\n}\r\n\r\nfunction is (object, space) {\r\n for (let i = space.length; i--;) {\r\n if (object[space[i]] == null) {\r\n return false\r\n }\r\n }\r\n return true\r\n}\r\n\r\nfunction getParameters (a, b) {\r\n const params = is(a, 'rgb') ? { _a: a.r, _b: a.g, _c: a.b, space: 'rgb' }\r\n : is(a, 'xyz') ? { _a: a.x, _b: a.y, _c: a.z, _d: 0, space: 'xyz' }\r\n : is(a, 'hsl') ? { _a: a.h, _b: a.s, _c: a.l, _d: 0, space: 'hsl' }\r\n : is(a, 'lab') ? { _a: a.l, _b: a.a, _c: a.b, _d: 0, space: 'lab' }\r\n : is(a, 'lch') ? { _a: a.l, _b: a.c, _c: a.h, _d: 0, space: 'lch' }\r\n : is(a, 'cmyk') ? { _a: a.c, _b: a.m, _c: a.y, _d: a.k, space: 'cmyk' }\r\n : { _a: 0, _b: 0, _c: 0, space: 'rgb' }\r\n\r\n params.space = b || params.space\r\n return params\r\n}\r\n\r\nfunction cieSpace (space) {\r\n if (space === 'lab' || space === 'xyz' || space === 'lch') {\r\n return true\r\n } else {\r\n return false\r\n }\r\n}\r\n\r\nfunction hueToRgb (p, q, t) {\r\n if (t < 0) t += 1\r\n if (t > 1) t -= 1\r\n if (t < 1 / 6) return p + (q - p) * 6 * t\r\n if (t < 1 / 2) return q\r\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6\r\n return p\r\n}\r\n\r\nexport default class Color {\r\n constructor (...inputs) {\r\n this.init(...inputs)\r\n }\r\n\r\n init (a = 0, b = 0, c = 0, d = 0, space = 'rgb') {\r\n // This catches the case when a falsy value is passed like ''\r\n a = !a ? 0 : a\r\n\r\n // Reset all values in case the init function is rerun with new color space\r\n if (this.space) {\r\n for (const component in this.space) {\r\n delete this[this.space[component]]\r\n }\r\n }\r\n\r\n if (typeof a === 'number') {\r\n // Allow for the case that we don't need d...\r\n space = typeof d === 'string' ? d : space\r\n d = typeof d === 'string' ? 0 : d\r\n\r\n // Assign the values straight to the color\r\n Object.assign(this, { _a: a, _b: b, _c: c, _d: d, space })\r\n // If the user gave us an array, make the color from it\r\n } else if (a instanceof Array) {\r\n this.space = b || (typeof a[3] === 'string' ? a[3] : a[4]) || 'rgb'\r\n Object.assign(this, { _a: a[0], _b: a[1], _c: a[2], _d: a[3] || 0 })\r\n } else if (a instanceof Object) {\r\n // Set the object up and assign its values directly\r\n const values = getParameters(a, b)\r\n Object.assign(this, values)\r\n } else if (typeof a === 'string') {\r\n if (isRgb.test(a)) {\r\n const noWhitespace = a.replace(whitespace, '')\r\n const [ _a, _b, _c ] = rgb.exec(noWhitespace)\r\n .slice(1, 4).map(v => parseInt(v))\r\n Object.assign(this, { _a, _b, _c, _d: 0, space: 'rgb' })\r\n } else if (isHex.test(a)) {\r\n const hexParse = v => parseInt(v, 16)\r\n const [ , _a, _b, _c ] = hex.exec(sixDigitHex(a)).map(hexParse)\r\n Object.assign(this, { _a, _b, _c, _d: 0, space: 'rgb' })\r\n } else throw Error('Unsupported string format, can\\'t construct Color')\r\n }\r\n\r\n // Now add the components as a convenience\r\n const { _a, _b, _c, _d } = this\r\n const components = this.space === 'rgb' ? { r: _a, g: _b, b: _c }\r\n : this.space === 'xyz' ? { x: _a, y: _b, z: _c }\r\n : this.space === 'hsl' ? { h: _a, s: _b, l: _c }\r\n : this.space === 'lab' ? { l: _a, a: _b, b: _c }\r\n : this.space === 'lch' ? { l: _a, c: _b, h: _c }\r\n : this.space === 'cmyk' ? { c: _a, m: _b, y: _c, k: _d }\r\n : {}\r\n Object.assign(this, components)\r\n }\r\n\r\n /*\r\n Conversion Methods\r\n */\r\n\r\n rgb () {\r\n if (this.space === 'rgb') {\r\n return this\r\n } else if (cieSpace(this.space)) {\r\n // Convert to the xyz color space\r\n let { x, y, z } = this\r\n if (this.space === 'lab' || this.space === 'lch') {\r\n // Get the values in the lab space\r\n let { l, a, b } = this\r\n if (this.space === 'lch') {\r\n const { c, h } = this\r\n const dToR = Math.PI / 180\r\n a = c * Math.cos(dToR * h)\r\n b = c * Math.sin(dToR * h)\r\n }\r\n\r\n // Undo the nonlinear function\r\n const yL = (l + 16) / 116\r\n const xL = a / 500 + yL\r\n const zL = yL - b / 200\r\n\r\n // Get the xyz values\r\n const ct = 16 / 116\r\n const mx = 0.008856\r\n const nm = 7.787\r\n x = 0.95047 * ((xL ** 3 > mx) ? xL ** 3 : (xL - ct) / nm)\r\n y = 1.00000 * ((yL ** 3 > mx) ? yL ** 3 : (yL - ct) / nm)\r\n z = 1.08883 * ((zL ** 3 > mx) ? zL ** 3 : (zL - ct) / nm)\r\n }\r\n\r\n // Convert xyz to unbounded rgb values\r\n const rU = x * 3.2406 + y * -1.5372 + z * -0.4986\r\n const gU = x * -0.9689 + y * 1.8758 + z * 0.0415\r\n const bU = x * 0.0557 + y * -0.2040 + z * 1.0570\r\n\r\n // Convert the values to true rgb values\r\n const pow = Math.pow\r\n const bd = 0.0031308\r\n const r = (rU > bd) ? (1.055 * pow(rU, 1 / 2.4) - 0.055) : 12.92 * rU\r\n const g = (gU > bd) ? (1.055 * pow(gU, 1 / 2.4) - 0.055) : 12.92 * gU\r\n const b = (bU > bd) ? (1.055 * pow(bU, 1 / 2.4) - 0.055) : 12.92 * bU\r\n\r\n // Make and return the color\r\n const color = new Color(255 * r, 255 * g, 255 * b)\r\n return color\r\n } else if (this.space === 'hsl') {\r\n // https://bgrins.github.io/TinyColor/docs/tinycolor.html\r\n // Get the current hsl values\r\n let { h, s, l } = this\r\n h /= 360\r\n s /= 100\r\n l /= 100\r\n\r\n // If we are grey, then just make the color directly\r\n if (s === 0) {\r\n l *= 255\r\n const color = new Color(l, l, l)\r\n return color\r\n }\r\n\r\n // TODO I have no idea what this does :D If you figure it out, tell me!\r\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s\r\n const p = 2 * l - q\r\n\r\n // Get the rgb values\r\n const r = 255 * hueToRgb(p, q, h + 1 / 3)\r\n const g = 255 * hueToRgb(p, q, h)\r\n const b = 255 * hueToRgb(p, q, h - 1 / 3)\r\n\r\n // Make a new color\r\n const color = new Color(r, g, b)\r\n return color\r\n } else if (this.space === 'cmyk') {\r\n // https://gist.github.com/felipesabino/5066336\r\n // Get the normalised cmyk values\r\n const { c, m, y, k } = this\r\n\r\n // Get the rgb values\r\n const r = 255 * (1 - Math.min(1, c * (1 - k) + k))\r\n const g = 255 * (1 - Math.min(1, m * (1 - k) + k))\r\n const b = 255 * (1 - Math.min(1, y * (1 - k) + k))\r\n\r\n // Form the color and return it\r\n const color = new Color(r, g, b)\r\n return color\r\n } else {\r\n return this\r\n }\r\n }\r\n\r\n lab () {\r\n // Get the xyz color\r\n const { x, y, z } = this.xyz()\r\n\r\n // Get the lab components\r\n const l = (116 * y) - 16\r\n const a = 500 * (x - y)\r\n const b = 200 * (y - z)\r\n\r\n // Construct and return a new color\r\n const color = new Color(l, a, b, 'lab')\r\n return color\r\n }\r\n\r\n xyz () {\r\n\r\n // Normalise the red, green and blue values\r\n const { _a: r255, _b: g255, _c: b255 } = this.rgb()\r\n const [ r, g, b ] = [ r255, g255, b255 ].map(v => v / 255)\r\n\r\n // Convert to the lab rgb space\r\n const rL = (r > 0.04045) ? Math.pow((r + 0.055) / 1.055, 2.4) : r / 12.92\r\n const gL = (g > 0.04045) ? Math.pow((g + 0.055) / 1.055, 2.4) : g / 12.92\r\n const bL = (b > 0.04045) ? Math.pow((b + 0.055) / 1.055, 2.4) : b / 12.92\r\n\r\n // Convert to the xyz color space without bounding the values\r\n const xU = (rL * 0.4124 + gL * 0.3576 + bL * 0.1805) / 0.95047\r\n const yU = (rL * 0.2126 + gL * 0.7152 + bL * 0.0722) / 1.00000\r\n const zU = (rL * 0.0193 + gL * 0.1192 + bL * 0.9505) / 1.08883\r\n\r\n // Get the proper xyz values by applying the bounding\r\n const x = (xU > 0.008856) ? Math.pow(xU, 1 / 3) : (7.787 * xU) + 16 / 116\r\n const y = (yU > 0.008856) ? Math.pow(yU, 1 / 3) : (7.787 * yU) + 16 / 116\r\n const z = (zU > 0.008856) ? Math.pow(zU, 1 / 3) : (7.787 * zU) + 16 / 116\r\n\r\n // Make and return the color\r\n const color = new Color(x, y, z, 'xyz')\r\n return color\r\n }\r\n\r\n lch () {\r\n\r\n // Get the lab color directly\r\n const { l, a, b } = this.lab()\r\n\r\n // Get the chromaticity and the hue using polar coordinates\r\n const c = Math.sqrt(a ** 2 + b ** 2)\r\n let h = 180 * Math.atan2(b, a) / Math.PI\r\n if (h < 0) {\r\n h *= -1\r\n h = 360 - h\r\n }\r\n\r\n // Make a new color and return it\r\n const color = new Color(l, c, h, 'lch')\r\n return color\r\n }\r\n\r\n hsl () {\r\n\r\n // Get the rgb values\r\n const { _a, _b, _c } = this.rgb()\r\n const [ r, g, b ] = [ _a, _b, _c ].map(v => v / 255)\r\n\r\n // Find the maximum and minimum values to get the lightness\r\n const max = Math.max(r, g, b)\r\n const min = Math.min(r, g, b)\r\n const l = (max + min) / 2\r\n\r\n // If the r, g, v values are identical then we are grey\r\n const isGrey = max === min\r\n\r\n // Calculate the hue and saturation\r\n const delta = max - min\r\n const s = isGrey ? 0\r\n : l > 0.5 ? delta / (2 - max - min)\r\n : delta / (max + min)\r\n const h = isGrey ? 0\r\n : max === r ? ((g - b) / delta + (g < b ? 6 : 0)) / 6\r\n : max === g ? ((b - r) / delta + 2) / 6\r\n : max === b ? ((r - g) / delta + 4) / 6\r\n : 0\r\n\r\n // Construct and return the new color\r\n const color = new Color(360 * h, 100 * s, 100 * l, 'hsl')\r\n return color\r\n }\r\n\r\n cmyk () {\r\n\r\n // Get the rgb values for the current color\r\n const { _a, _b, _c } = this.rgb()\r\n const [ r, g, b ] = [ _a, _b, _c ].map(v => v / 255)\r\n\r\n // Get the cmyk values in an unbounded format\r\n const k = Math.min(1 - r, 1 - g, 1 - b)\r\n\r\n if (k === 1) {\r\n // Catch the black case\r\n return new Color(0, 0, 0, 1, 'cmyk')\r\n }\r\n\r\n const c = (1 - r - k) / (1 - k)\r\n const m = (1 - g - k) / (1 - k)\r\n const y = (1 - b - k) / (1 - k)\r\n\r\n // Construct the new color\r\n const color = new Color(c, m, y, k, 'cmyk')\r\n return color\r\n }\r\n\r\n /*\r\n Input and Output methods\r\n */\r\n\r\n _clamped () {\r\n const { _a, _b, _c } = this.rgb()\r\n const { max, min, round } = Math\r\n const format = v => max(0, min(round(v), 255))\r\n return [ _a, _b, _c ].map(format)\r\n }\r\n\r\n toHex () {\r\n const [ r, g, b ] = this._clamped().map(componentHex)\r\n return `#${r}${g}${b}`\r\n }\r\n\r\n toString () {\r\n return this.toHex()\r\n }\r\n\r\n toRgb () {\r\n const [ rV, gV, bV ] = this._clamped()\r\n const string = `rgb(${rV},${gV},${bV})`\r\n return string\r\n }\r\n\r\n toArray () {\r\n const { _a, _b, _c, _d, space } = this\r\n return [ _a, _b, _c, _d, space ]\r\n }\r\n\r\n /*\r\n Generating random colors\r\n */\r\n\r\n static random (mode = 'vibrant', t, u) {\r\n\r\n // Get the math modules\r\n const { random, round, sin, PI: pi } = Math\r\n\r\n // Run the correct generator\r\n if (mode === 'vibrant') {\r\n\r\n const l = (81 - 57) * random() + 57\r\n const c = (83 - 45) * random() + 45\r\n const h = 360 * random()\r\n const color = new Color(l, c, h, 'lch')\r\n return color\r\n\r\n } else if (mode === 'sine') {\r\n\r\n t = t == null ? random() : t\r\n const r = round(80 * sin(2 * pi * t / 0.5 + 0.01) + 150)\r\n const g = round(50 * sin(2 * pi * t / 0.5 + 4.6) + 200)\r\n const b = round(100 * sin(2 * pi * t / 0.5 + 2.3) + 150)\r\n const color = new Color(r, g, b)\r\n return color\r\n\r\n } else if (mode === 'pastel') {\r\n\r\n const l = (94 - 86) * random() + 86\r\n const c = (26 - 9) * random() + 9\r\n const h = 360 * random()\r\n const color = new Color(l, c, h, 'lch')\r\n return color\r\n\r\n } else if (mode === 'dark') {\r\n\r\n const l = 10 + 10 * random()\r\n const c = (125 - 75) * random() + 86\r\n const h = 360 * random()\r\n const color = new Color(l, c, h, 'lch')\r\n return color\r\n\r\n } else if (mode === 'rgb') {\r\n\r\n const r = 255 * random()\r\n const g = 255 * random()\r\n const b = 255 * random()\r\n const color = new Color(r, g, b)\r\n return color\r\n\r\n } else if (mode === 'lab') {\r\n\r\n const l = 100 * random()\r\n const a = 256 * random() - 128\r\n const b = 256 * random() - 128\r\n const color = new Color(l, a, b, 'lab')\r\n return color\r\n\r\n } else if (mode === 'grey') {\r\n\r\n const grey = 255 * random()\r\n const color = new Color(grey, grey, grey)\r\n return color\r\n\r\n }\r\n }\r\n\r\n /*\r\n Constructing colors\r\n */\r\n\r\n // Test if given value is a color string\r\n static test (color) {\r\n return (typeof color === 'string')\r\n && (isHex.test(color) || isRgb.test(color))\r\n }\r\n\r\n // Test if given value is an rgb object\r\n static isRgb (color) {\r\n return color && typeof color.r === 'number'\r\n && typeof color.g === 'number'\r\n && typeof color.b === 'number'\r\n }\r\n\r\n // Test if given value is a color\r\n static isColor (color) {\r\n return color && (\r\n color instanceof Color\r\n || this.isRgb(color)\r\n || this.test(color)\r\n )\r\n }\r\n}\r\n","import Matrix from './Matrix.js'\r\n\r\nexport default class Point {\r\n // Initialize\r\n constructor (...args) {\r\n this.init(...args)\r\n }\r\n\r\n init (x, y) {\r\n const base = { x: 0, y: 0 }\r\n\r\n // ensure source as object\r\n const source = Array.isArray(x) ? { x: x[0], y: x[1] }\r\n : typeof x === 'object' ? { x: x.x, y: x.y }\r\n : { x: x, y: y }\r\n\r\n // merge source\r\n this.x = source.x == null ? base.x : source.x\r\n this.y = source.y == null ? base.y : source.y\r\n\r\n return this\r\n }\r\n\r\n // Clone point\r\n clone () {\r\n return new Point(this)\r\n }\r\n\r\n transform (m) {\r\n return this.clone().transformO(m)\r\n }\r\n\r\n // Transform point with matrix\r\n transformO (m) {\r\n if (!Matrix.isMatrixLike(m)) {\r\n m = new Matrix(m)\r\n }\r\n\r\n const { x, y } = this\r\n\r\n // Perform the matrix multiplication\r\n this.x = m.a * x + m.c * y + m.e\r\n this.y = m.b * x + m.d * y + m.f\r\n\r\n return this\r\n }\r\n\r\n toArray () {\r\n return [ this.x, this.y ]\r\n }\r\n}\r\n\r\nexport function point (x, y) {\r\n return new Point(x, y).transform(this.screenCTM().inverse())\r\n}\r\n","import { delimiter } from '../modules/core/regex.js'\r\nimport { radians } from '../utils/utils.js'\r\nimport { register } from '../utils/adopter.js'\r\nimport Element from '../elements/Element.js'\r\nimport Point from './Point.js'\r\n\r\nfunction closeEnough (a, b, threshold) {\r\n return Math.abs(b - a) < (threshold || 1e-6)\r\n}\r\n\r\nexport default class Matrix {\r\n constructor (...args) {\r\n this.init(...args)\r\n }\r\n\r\n // Initialize\r\n init (source) {\r\n var base = Matrix.fromArray([ 1, 0, 0, 1, 0, 0 ])\r\n\r\n // ensure source as object\r\n source = source instanceof Element ? source.matrixify()\r\n : typeof source === 'string' ? Matrix.fromArray(source.split(delimiter).map(parseFloat))\r\n : Array.isArray(source) ? Matrix.fromArray(source)\r\n : (typeof source === 'object' && Matrix.isMatrixLike(source)) ? source\r\n : (typeof source === 'object') ? new Matrix().transform(source)\r\n : arguments.length === 6 ? Matrix.fromArray([].slice.call(arguments))\r\n : base\r\n\r\n // Merge the source matrix with the base matrix\r\n this.a = source.a != null ? source.a : base.a\r\n this.b = source.b != null ? source.b : base.b\r\n this.c = source.c != null ? source.c : base.c\r\n this.d = source.d != null ? source.d : base.d\r\n this.e = source.e != null ? source.e : base.e\r\n this.f = source.f != null ? source.f : base.f\r\n\r\n return this\r\n }\r\n\r\n // Clones this matrix\r\n clone () {\r\n return new Matrix(this)\r\n }\r\n\r\n // Transform a matrix into another matrix by manipulating the space\r\n transform (o) {\r\n // Check if o is a matrix and then left multiply it directly\r\n if (Matrix.isMatrixLike(o)) {\r\n var matrix = new Matrix(o)\r\n return matrix.multiplyO(this)\r\n }\r\n\r\n // Get the proposed transformations and the current transformations\r\n var t = Matrix.formatTransforms(o)\r\n var current = this\r\n const { x: ox, y: oy } = new Point(t.ox, t.oy).transform(current)\r\n\r\n // Construct the resulting matrix\r\n var transformer = new Matrix()\r\n .translateO(t.rx, t.ry)\r\n .lmultiplyO(current)\r\n .translateO(-ox, -oy)\r\n .scaleO(t.scaleX, t.scaleY)\r\n .skewO(t.skewX, t.skewY)\r\n .shearO(t.shear)\r\n .rotateO(t.theta)\r\n .translateO(ox, oy)\r\n\r\n // If we want the origin at a particular place, we force it there\r\n if (isFinite(t.px) || isFinite(t.py)) {\r\n const origin = new Point(ox, oy).transform(transformer)\r\n // TODO: Replace t.px with isFinite(t.px)\r\n const dx = t.px ? t.px - origin.x : 0\r\n const dy = t.py ? t.py - origin.y : 0\r\n transformer.translateO(dx, dy)\r\n }\r\n\r\n // Translate now after positioning\r\n transformer.translateO(t.tx, t.ty)\r\n return transformer\r\n }\r\n\r\n // Applies a matrix defined by its affine parameters\r\n compose (o) {\r\n if (o.origin) {\r\n o.originX = o.origin[0]\r\n o.originY = o.origin[1]\r\n }\r\n // Get the parameters\r\n var ox = o.originX || 0\r\n var oy = o.originY || 0\r\n var sx = o.scaleX || 1\r\n var sy = o.scaleY || 1\r\n var lam = o.shear || 0\r\n var theta = o.rotate || 0\r\n var tx = o.translateX || 0\r\n var ty = o.translateY || 0\r\n\r\n // Apply the standard matrix\r\n var result = new Matrix()\r\n .translateO(-ox, -oy)\r\n .scaleO(sx, sy)\r\n .shearO(lam)\r\n .rotateO(theta)\r\n .translateO(tx, ty)\r\n .lmultiplyO(this)\r\n .translateO(ox, oy)\r\n return result\r\n }\r\n\r\n // Decomposes this matrix into its affine parameters\r\n decompose (cx = 0, cy = 0) {\r\n // Get the parameters from the matrix\r\n var a = this.a\r\n var b = this.b\r\n var c = this.c\r\n var d = this.d\r\n var e = this.e\r\n var f = this.f\r\n\r\n // Figure out if the winding direction is clockwise or counterclockwise\r\n var determinant = a * d - b * c\r\n var ccw = determinant > 0 ? 1 : -1\r\n\r\n // Since we only shear in x, we can use the x basis to get the x scale\r\n // and the rotation of the resulting matrix\r\n var sx = ccw * Math.sqrt(a * a + b * b)\r\n var thetaRad = Math.atan2(ccw * b, ccw * a)\r\n var theta = 180 / Math.PI * thetaRad\r\n var ct = Math.cos(thetaRad)\r\n var st = Math.sin(thetaRad)\r\n\r\n // We can then solve the y basis vector simultaneously to get the other\r\n // two affine parameters directly from these parameters\r\n var lam = (a * c + b * d) / determinant\r\n var sy = ((c * sx) / (lam * a - b)) || ((d * sx) / (lam * b + a))\r\n\r\n // Use the translations\r\n const tx = e - cx + cx * ct * sx + cy * (lam * ct * sx - st * sy)\r\n const ty = f - cy + cx * st * sx + cy * (lam * st * sx + ct * sy)\r\n\r\n // Construct the decomposition and return it\r\n return {\r\n // Return the affine parameters\r\n scaleX: sx,\r\n scaleY: sy,\r\n shear: lam,\r\n rotate: theta,\r\n translateX: tx,\r\n translateY: ty,\r\n originX: cx,\r\n originY: cy,\r\n\r\n // Return the matrix parameters\r\n a: this.a,\r\n b: this.b,\r\n c: this.c,\r\n d: this.d,\r\n e: this.e,\r\n f: this.f\r\n }\r\n }\r\n\r\n // Left multiplies by the given matrix\r\n multiply (matrix) {\r\n return this.clone().multiplyO(matrix)\r\n }\r\n\r\n multiplyO (matrix) {\r\n // Get the matrices\r\n var l = this\r\n var r = matrix instanceof Matrix\r\n ? matrix\r\n : new Matrix(matrix)\r\n\r\n return Matrix.matrixMultiply(l, r, this)\r\n }\r\n\r\n lmultiply (matrix) {\r\n return this.clone().lmultiplyO(matrix)\r\n }\r\n\r\n lmultiplyO (matrix) {\r\n var r = this\r\n var l = matrix instanceof Matrix\r\n ? matrix\r\n : new Matrix(matrix)\r\n\r\n return Matrix.matrixMultiply(l, r, this)\r\n }\r\n\r\n // Inverses matrix\r\n inverseO () {\r\n // Get the current parameters out of the matrix\r\n var a = this.a\r\n var b = this.b\r\n var c = this.c\r\n var d = this.d\r\n var e = this.e\r\n var f = this.f\r\n\r\n // Invert the 2x2 matrix in the top left\r\n var det = a * d - b * c\r\n if (!det) throw new Error('Cannot invert ' + this)\r\n\r\n // Calculate the top 2x2 matrix\r\n var na = d / det\r\n var nb = -b / det\r\n var nc = -c / det\r\n var nd = a / det\r\n\r\n // Apply the inverted matrix to the top right\r\n var ne = -(na * e + nc * f)\r\n var nf = -(nb * e + nd * f)\r\n\r\n // Construct the inverted matrix\r\n this.a = na\r\n this.b = nb\r\n this.c = nc\r\n this.d = nd\r\n this.e = ne\r\n this.f = nf\r\n\r\n return this\r\n }\r\n\r\n inverse () {\r\n return this.clone().inverseO()\r\n }\r\n\r\n // Translate matrix\r\n translate (x, y) {\r\n return this.clone().translateO(x, y)\r\n }\r\n\r\n translateO (x, y) {\r\n this.e += x || 0\r\n this.f += y || 0\r\n return this\r\n }\r\n\r\n // Scale matrix\r\n scale (x, y, cx, cy) {\r\n return this.clone().scaleO(...arguments)\r\n }\r\n\r\n scaleO (x, y = x, cx = 0, cy = 0) {\r\n // Support uniform scaling\r\n if (arguments.length === 3) {\r\n cy = cx\r\n cx = y\r\n y = x\r\n }\r\n\r\n const { a, b, c, d, e, f } = this\r\n\r\n this.a = a * x\r\n this.b = b * y\r\n this.c = c * x\r\n this.d = d * y\r\n this.e = e * x - cx * x + cx\r\n this.f = f * y - cy * y + cy\r\n\r\n return this\r\n }\r\n\r\n // Rotate matrix\r\n rotate (r, cx, cy) {\r\n return this.clone().rotateO(r, cx, cy)\r\n }\r\n\r\n rotateO (r, cx = 0, cy = 0) {\r\n // Convert degrees to radians\r\n r = radians(r)\r\n\r\n const cos = Math.cos(r)\r\n const sin = Math.sin(r)\r\n\r\n const { a, b, c, d, e, f } = this\r\n\r\n this.a = a * cos - b * sin\r\n this.b = b * cos + a * sin\r\n this.c = c * cos - d * sin\r\n this.d = d * cos + c * sin\r\n this.e = e * cos - f * sin + cy * sin - cx * cos + cx\r\n this.f = f * cos + e * sin - cx * sin - cy * cos + cy\r\n\r\n return this\r\n }\r\n\r\n // Flip matrix on x or y, at a given offset\r\n flip (axis, around) {\r\n return this.clone().flipO(axis, around)\r\n }\r\n\r\n flipO (axis, around) {\r\n return axis === 'x' ? this.scaleO(-1, 1, around, 0)\r\n : axis === 'y' ? this.scaleO(1, -1, 0, around)\r\n : this.scaleO(-1, -1, axis, around || axis) // Define an x, y flip point\r\n }\r\n\r\n // Shear matrix\r\n shear (a, cx, cy) {\r\n return this.clone().shearO(a, cx, cy)\r\n }\r\n\r\n shearO (lx, cx = 0, cy = 0) {\r\n const { a, b, c, d, e, f } = this\r\n\r\n this.a = a + b * lx\r\n this.c = c + d * lx\r\n this.e = e + f * lx - cy * lx\r\n\r\n return this\r\n }\r\n\r\n // Skew Matrix\r\n skew (x, y, cx, cy) {\r\n return this.clone().skewO(...arguments)\r\n }\r\n\r\n skewO (x, y = x, cx = 0, cy = 0) {\r\n // support uniformal skew\r\n if (arguments.length === 3) {\r\n cy = cx\r\n cx = y\r\n y = x\r\n }\r\n\r\n // Convert degrees to radians\r\n x = radians(x)\r\n y = radians(y)\r\n\r\n const lx = Math.tan(x)\r\n const ly = Math.tan(y)\r\n\r\n const { a, b, c, d, e, f } = this\r\n\r\n this.a = a + b * lx\r\n this.b = b + a * ly\r\n this.c = c + d * lx\r\n this.d = d + c * ly\r\n this.e = e + f * lx - cy * lx\r\n this.f = f + e * ly - cx * ly\r\n\r\n return this\r\n }\r\n\r\n // SkewX\r\n skewX (x, cx, cy) {\r\n return this.skew(x, 0, cx, cy)\r\n }\r\n\r\n skewXO (x, cx, cy) {\r\n return this.skewO(x, 0, cx, cy)\r\n }\r\n\r\n // SkewY\r\n skewY (y, cx, cy) {\r\n return this.skew(0, y, cx, cy)\r\n }\r\n\r\n skewYO (y, cx, cy) {\r\n return this.skewO(0, y, cx, cy)\r\n }\r\n\r\n // Transform around a center point\r\n aroundO (cx, cy, matrix) {\r\n var dx = cx || 0\r\n var dy = cy || 0\r\n return this.translateO(-dx, -dy).lmultiplyO(matrix).translateO(dx, dy)\r\n }\r\n\r\n around (cx, cy, matrix) {\r\n return this.clone().aroundO(cx, cy, matrix)\r\n }\r\n\r\n // Check if two matrices are equal\r\n equals (other) {\r\n var comp = new Matrix(other)\r\n return closeEnough(this.a, comp.a) && closeEnough(this.b, comp.b)\r\n && closeEnough(this.c, comp.c) && closeEnough(this.d, comp.d)\r\n && closeEnough(this.e, comp.e) && closeEnough(this.f, comp.f)\r\n }\r\n\r\n // Convert matrix to string\r\n toString () {\r\n return 'matrix(' + this.a + ',' + this.b + ',' + this.c + ',' + this.d + ',' + this.e + ',' + this.f + ')'\r\n }\r\n\r\n toArray () {\r\n return [ this.a, this.b, this.c, this.d, this.e, this.f ]\r\n }\r\n\r\n valueOf () {\r\n return {\r\n a: this.a,\r\n b: this.b,\r\n c: this.c,\r\n d: this.d,\r\n e: this.e,\r\n f: this.f\r\n }\r\n }\r\n\r\n static fromArray (a) {\r\n return { a: a[0], b: a[1], c: a[2], d: a[3], e: a[4], f: a[5] }\r\n }\r\n\r\n static isMatrixLike (o) {\r\n return (\r\n o.a != null\r\n || o.b != null\r\n || o.c != null\r\n || o.d != null\r\n || o.e != null\r\n || o.f != null\r\n )\r\n }\r\n\r\n static formatTransforms (o) {\r\n // Get all of the parameters required to form the matrix\r\n var flipBoth = o.flip === 'both' || o.flip === true\r\n var flipX = o.flip && (flipBoth || o.flip === 'x') ? -1 : 1\r\n var flipY = o.flip && (flipBoth || o.flip === 'y') ? -1 : 1\r\n var skewX = o.skew && o.skew.length ? o.skew[0]\r\n : isFinite(o.skew) ? o.skew\r\n : isFinite(o.skewX) ? o.skewX\r\n : 0\r\n var skewY = o.skew && o.skew.length ? o.skew[1]\r\n : isFinite(o.skew) ? o.skew\r\n : isFinite(o.skewY) ? o.skewY\r\n : 0\r\n var scaleX = o.scale && o.scale.length ? o.scale[0] * flipX\r\n : isFinite(o.scale) ? o.scale * flipX\r\n : isFinite(o.scaleX) ? o.scaleX * flipX\r\n : flipX\r\n var scaleY = o.scale && o.scale.length ? o.scale[1] * flipY\r\n : isFinite(o.scale) ? o.scale * flipY\r\n : isFinite(o.scaleY) ? o.scaleY * flipY\r\n : flipY\r\n var shear = o.shear || 0\r\n var theta = o.rotate || o.theta || 0\r\n var origin = new Point(o.origin || o.around || o.ox || o.originX, o.oy || o.originY)\r\n var ox = origin.x\r\n var oy = origin.y\r\n var position = new Point(o.position || o.px || o.positionX, o.py || o.positionY)\r\n var px = position.x\r\n var py = position.y\r\n var translate = new Point(o.translate || o.tx || o.translateX, o.ty || o.translateY)\r\n var tx = translate.x\r\n var ty = translate.y\r\n var relative = new Point(o.relative || o.rx || o.relativeX, o.ry || o.relativeY)\r\n var rx = relative.x\r\n var ry = relative.y\r\n\r\n // Populate all of the values\r\n return {\r\n scaleX, scaleY, skewX, skewY, shear, theta, rx, ry, tx, ty, ox, oy, px, py\r\n }\r\n }\r\n\r\n // left matrix, right matrix, target matrix which is overwritten\r\n static matrixMultiply (l, r, o) {\r\n // Work out the product directly\r\n var a = l.a * r.a + l.c * r.b\r\n var b = l.b * r.a + l.d * r.b\r\n var c = l.a * r.c + l.c * r.d\r\n var d = l.b * r.c + l.d * r.d\r\n var e = l.e + l.a * r.e + l.c * r.f\r\n var f = l.f + l.b * r.e + l.d * r.f\r\n\r\n // make sure to use local variables because l/r and o could be the same\r\n o.a = a\r\n o.b = b\r\n o.c = c\r\n o.d = d\r\n o.e = e\r\n o.f = f\r\n\r\n return o\r\n }\r\n}\r\n\r\nexport function ctm () {\r\n return new Matrix(this.node.getCTM())\r\n}\r\n\r\nexport function screenCTM () {\r\n /* https://bugzilla.mozilla.org/show_bug.cgi?id=1344537\r\n This is needed because FF does not return the transformation matrix\r\n for the inner coordinate system when getScreenCTM() is called on nested svgs.\r\n However all other Browsers do that */\r\n if (typeof this.isRoot === 'function' && !this.isRoot()) {\r\n var rect = this.rect(1, 1)\r\n var m = rect.node.getScreenCTM()\r\n rect.remove()\r\n return new Matrix(m)\r\n }\r\n return new Matrix(this.node.getScreenCTM())\r\n}\r\n\r\nregister(Matrix, 'Matrix')\r\n","import { globals } from '../../utils/window.js'\r\nimport { makeInstance } from '../../utils/adopter.js'\r\n\r\nexport default function parser () {\r\n // Reuse cached element if possible\r\n if (!parser.nodes) {\r\n const svg = makeInstance().size(2, 0)\r\n svg.node.style.cssText = [\r\n 'opacity: 0',\r\n 'position: absolute',\r\n 'left: -100%',\r\n 'top: -100%',\r\n 'overflow: hidden'\r\n ].join(';')\r\n\r\n svg.attr('focusable', 'false')\r\n svg.attr('aria-hidden', 'true')\r\n\r\n const path = svg.path().node\r\n\r\n parser.nodes = { svg, path }\r\n }\r\n\r\n if (!parser.nodes.svg.node.parentNode) {\r\n const b = globals.document.body || globals.document.documentElement\r\n parser.nodes.svg.addTo(b)\r\n }\r\n\r\n return parser.nodes\r\n}\r\n","import { delimiter } from '../modules/core/regex.js'\r\nimport { globals } from '../utils/window.js'\r\nimport { register } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Matrix from './Matrix.js'\r\nimport Point from './Point.js'\r\nimport parser from '../modules/core/parser.js'\r\n\r\nfunction isNulledBox (box) {\r\n return !box.width && !box.height && !box.x && !box.y\r\n}\r\n\r\nfunction domContains (node) {\r\n return node === globals.document\r\n || (globals.document.documentElement.contains || function (node) {\r\n // This is IE - it does not support contains() for top-level SVGs\r\n while (node.parentNode) {\r\n node = node.parentNode\r\n }\r\n return node === globals.document\r\n }).call(globals.document.documentElement, node)\r\n}\r\n\r\nexport default class Box {\r\n constructor (...args) {\r\n this.init(...args)\r\n }\r\n\r\n init (source) {\r\n var base = [ 0, 0, 0, 0 ]\r\n source = typeof source === 'string' ? source.split(delimiter).map(parseFloat)\r\n : Array.isArray(source) ? source\r\n : typeof source === 'object' ? [ source.left != null ? source.left\r\n : source.x, source.top != null ? source.top : source.y, source.width, source.height ]\r\n : arguments.length === 4 ? [].slice.call(arguments)\r\n : base\r\n\r\n this.x = source[0] || 0\r\n this.y = source[1] || 0\r\n this.width = this.w = source[2] || 0\r\n this.height = this.h = source[3] || 0\r\n\r\n // Add more bounding box properties\r\n this.x2 = this.x + this.w\r\n this.y2 = this.y + this.h\r\n this.cx = this.x + this.w / 2\r\n this.cy = this.y + this.h / 2\r\n\r\n return this\r\n }\r\n\r\n // Merge rect box with another, return a new instance\r\n merge (box) {\r\n const x = Math.min(this.x, box.x)\r\n const y = Math.min(this.y, box.y)\r\n const width = Math.max(this.x + this.width, box.x + box.width) - x\r\n const height = Math.max(this.y + this.height, box.y + box.height) - y\r\n\r\n return new Box(x, y, width, height)\r\n }\r\n\r\n transform (m) {\r\n if (!(m instanceof Matrix)) {\r\n m = new Matrix(m)\r\n }\r\n\r\n let xMin = Infinity\r\n let xMax = -Infinity\r\n let yMin = Infinity\r\n let yMax = -Infinity\r\n\r\n const pts = [\r\n new Point(this.x, this.y),\r\n new Point(this.x2, this.y),\r\n new Point(this.x, this.y2),\r\n new Point(this.x2, this.y2)\r\n ]\r\n\r\n pts.forEach(function (p) {\r\n p = p.transform(m)\r\n xMin = Math.min(xMin, p.x)\r\n xMax = Math.max(xMax, p.x)\r\n yMin = Math.min(yMin, p.y)\r\n yMax = Math.max(yMax, p.y)\r\n })\r\n\r\n return new Box(\r\n xMin, yMin,\r\n xMax - xMin,\r\n yMax - yMin\r\n )\r\n }\r\n\r\n addOffset () {\r\n // offset by window scroll position, because getBoundingClientRect changes when window is scrolled\r\n this.x += globals.window.pageXOffset\r\n this.y += globals.window.pageYOffset\r\n return this\r\n }\r\n\r\n toString () {\r\n return this.x + ' ' + this.y + ' ' + this.width + ' ' + this.height\r\n }\r\n\r\n toArray () {\r\n return [ this.x, this.y, this.width, this.height ]\r\n }\r\n\r\n isNulled () {\r\n return isNulledBox(this)\r\n }\r\n}\r\n\r\nfunction getBox (cb, retry) {\r\n let box\r\n\r\n try {\r\n box = cb(this.node)\r\n\r\n if (isNulledBox(box) && !domContains(this.node)) {\r\n throw new Error('Element not in the dom')\r\n }\r\n } catch (e) {\r\n box = retry(this)\r\n }\r\n\r\n return box\r\n}\r\n\r\nexport function bbox () {\r\n return new Box(getBox.call(this, (node) => node.getBBox(), (el) => {\r\n try {\r\n const clone = el.clone().addTo(parser().svg).show()\r\n const box = clone.node.getBBox()\r\n clone.remove()\r\n return box\r\n } catch (e) {\r\n throw new Error('Getting bbox of element \"' + el.node.nodeName + '\" is not possible. ' + e.toString())\r\n }\r\n }))\r\n}\r\n\r\nexport function rbox (el) {\r\n const box = new Box(getBox.call(this, (node) => node.getBoundingClientRect(), (el) => {\r\n throw new Error('Getting rbox of element \"' + el.node.nodeName + '\" is not possible')\r\n }))\r\n if (el) return box.transform(el.screenCTM().inverse())\r\n return box.addOffset()\r\n}\r\n\r\nregisterMethods({\r\n viewbox: {\r\n viewbox (x, y, width, height) {\r\n // act as getter\r\n if (x == null) return new Box(this.attr('viewBox'))\r\n\r\n // act as setter\r\n return this.attr('viewBox', new Box(x, y, width, height))\r\n },\r\n\r\n zoom (level, point) {\r\n let width = this.node.clientWidth\r\n let height = this.node.clientHeight\r\n const v = this.viewbox()\r\n\r\n // Firefox does not support clientHeight and returns 0\r\n // https://bugzilla.mozilla.org/show_bug.cgi?id=874811\r\n if (!width && !height) {\r\n var style = window.getComputedStyle(this.node)\r\n width = parseFloat(style.getPropertyValue('width'))\r\n height = parseFloat(style.getPropertyValue('height'))\r\n }\r\n\r\n const zoomX = width / v.width\r\n const zoomY = height / v.height\r\n const zoom = Math.min(zoomX, zoomY)\r\n\r\n if (level == null) {\r\n return zoom\r\n }\r\n\r\n let zoomAmount = zoom / level\r\n if (zoomAmount === Infinity) zoomAmount = Number.MIN_VALUE\r\n\r\n point = point || new Point(width / 2 / zoomX + v.x, height / 2 / zoomY + v.y)\r\n\r\n const box = new Box(v).transform(\r\n new Matrix({ scale: zoomAmount, origin: point })\r\n )\r\n\r\n return this.viewbox(box)\r\n }\r\n }\r\n})\r\n\r\nregister(Box, 'Box')\r\n","/* eslint no-new-func: \"off\" */\r\nexport const subClassArray = (function () {\r\n try {\r\n // try es6 subclassing\r\n return Function('name', 'baseClass', '_constructor', [\r\n 'baseClass = baseClass || Array',\r\n 'return {',\r\n ' [name]: class extends baseClass {',\r\n ' constructor (...args) {',\r\n ' super(...args)',\r\n ' _constructor && _constructor.apply(this, args)',\r\n ' }',\r\n ' }',\r\n '}[name]'\r\n ].join('\\n'))\r\n } catch (e) {\r\n // Use es5 approach\r\n return (name, baseClass = Array, _constructor) => {\r\n const Arr = function () {\r\n baseClass.apply(this, arguments)\r\n _constructor && _constructor.apply(this, arguments)\r\n }\r\n\r\n Arr.prototype = Object.create(baseClass.prototype)\r\n Arr.prototype.constructor = Arr\r\n\r\n Arr.prototype.map = function (fn) {\r\n const arr = new Arr()\r\n arr.push.apply(arr, Array.prototype.map.call(this, fn))\r\n return arr\r\n }\r\n\r\n return Arr\r\n }\r\n }\r\n})()\r\n","import { extend } from '../utils/adopter.js'\r\nimport { subClassArray } from './ArrayPolyfill.js'\r\n\r\nconst List = subClassArray('List', Array, function (arr = []) {\r\n // This catches the case, that native map tries to create an array with new Array(1)\r\n if (typeof arr === 'number') return this\r\n this.length = 0\r\n this.push(...arr)\r\n})\r\n\r\nexport default List\r\n\r\nextend(List, {\r\n each (fnOrMethodName, ...args) {\r\n if (typeof fnOrMethodName === 'function') {\r\n return this.map((el) => {\r\n return fnOrMethodName.call(el, el)\r\n })\r\n } else {\r\n return this.map(el => {\r\n return el[fnOrMethodName](...args)\r\n })\r\n }\r\n },\r\n\r\n toArray () {\r\n return Array.prototype.concat.apply([], this)\r\n }\r\n})\r\n\r\nconst reserved = [ 'toArray', 'constructor', 'each' ]\r\n\r\nList.extend = function (methods) {\r\n methods = methods.reduce((obj, name) => {\r\n // Don't overwrite own methods\r\n if (reserved.includes(name)) return obj\r\n\r\n // Don't add private methods\r\n if (name[0] === '_') return obj\r\n\r\n // Relay every call to each()\r\n obj[name] = function (...attrs) {\r\n return this.each(name, ...attrs)\r\n }\r\n return obj\r\n }, {})\r\n\r\n extend(List, methods)\r\n}\r\n","import { adopt } from '../../utils/adopter.js'\r\nimport { globals } from '../../utils/window.js'\r\nimport { map } from '../../utils/utils.js'\r\nimport List from '../../types/List.js'\r\n\r\nexport default function baseFind (query, parent) {\r\n return new List(map((parent || globals.document).querySelectorAll(query), function (node) {\r\n return adopt(node)\r\n }))\r\n}\r\n\r\n// Scoped find method\r\nexport function find (query) {\r\n return baseFind(query, this.node)\r\n}\r\n\r\nexport function findOne (query) {\r\n return adopt(this.node.querySelector(query))\r\n}\r\n","import { dispatch, off, on } from '../modules/core/event.js'\r\nimport { register } from '../utils/adopter.js'\r\nimport Base from './Base.js'\r\n\r\nexport default class EventTarget extends Base {\r\n constructor ({ events = {} } = {}) {\r\n super()\r\n this.events = events\r\n }\r\n\r\n addEventListener () {}\r\n\r\n dispatch (event, data) {\r\n return dispatch(this, event, data)\r\n }\r\n\r\n dispatchEvent (event) {\r\n const bag = this.getEventHolder().events\r\n if (!bag) return true\r\n\r\n const events = bag[event.type]\r\n\r\n for (const i in events) {\r\n for (const j in events[i]) {\r\n events[i][j](event)\r\n }\r\n }\r\n\r\n return !event.defaultPrevented\r\n }\r\n\r\n // Fire given event\r\n fire (event, data) {\r\n this.dispatch(event, data)\r\n return this\r\n }\r\n\r\n getEventHolder () {\r\n return this\r\n }\r\n\r\n getEventTarget () {\r\n return this\r\n }\r\n\r\n // Unbind event from listener\r\n off (event, listener) {\r\n off(this, event, listener)\r\n return this\r\n }\r\n\r\n // Bind given event to listener\r\n on (event, listener, binding, options) {\r\n on(this, event, listener, binding, options)\r\n return this\r\n }\r\n\r\n removeEventListener () {}\r\n}\r\n\r\nregister(EventTarget, 'EventTarget')\r\n","\r\nexport function noop () {}\r\n\r\n// Default animation values\r\nexport const timeline = {\r\n duration: 400,\r\n ease: '>',\r\n delay: 0\r\n}\r\n\r\n// Default attribute values\r\nexport const attrs = {\r\n\r\n // fill and stroke\r\n 'fill-opacity': 1,\r\n 'stroke-opacity': 1,\r\n 'stroke-width': 0,\r\n 'stroke-linejoin': 'miter',\r\n 'stroke-linecap': 'butt',\r\n fill: '#000000',\r\n stroke: '#000000',\r\n opacity: 1,\r\n\r\n // position\r\n x: 0,\r\n y: 0,\r\n cx: 0,\r\n cy: 0,\r\n\r\n // size\r\n width: 0,\r\n height: 0,\r\n\r\n // radius\r\n r: 0,\r\n rx: 0,\r\n ry: 0,\r\n\r\n // gradient\r\n offset: 0,\r\n 'stop-opacity': 1,\r\n 'stop-color': '#000000',\r\n\r\n // text\r\n 'text-anchor': 'start'\r\n}\r\n","import { delimiter } from '../modules/core/regex.js'\r\nimport { extend } from '../utils/adopter.js'\r\nimport { subClassArray } from './ArrayPolyfill.js'\r\n\r\nconst SVGArray = subClassArray('SVGArray', Array, function (arr) {\r\n this.init(arr)\r\n})\r\n\r\nexport default SVGArray\r\n\r\nextend(SVGArray, {\r\n init (arr) {\r\n // This catches the case, that native map tries to create an array with new Array(1)\r\n if (typeof arr === 'number') return this\r\n this.length = 0\r\n this.push(...this.parse(arr))\r\n return this\r\n },\r\n\r\n toArray () {\r\n return Array.prototype.concat.apply([], this)\r\n },\r\n\r\n toString () {\r\n return this.join(' ')\r\n },\r\n\r\n // Flattens the array if needed\r\n valueOf () {\r\n const ret = []\r\n ret.push(...this)\r\n return ret\r\n },\r\n\r\n // Parse whitespace separated string\r\n parse (array = []) {\r\n // If already is an array, no need to parse it\r\n if (array instanceof Array) return array\r\n\r\n return array.trim().split(delimiter).map(parseFloat)\r\n },\r\n\r\n clone () {\r\n return new this.constructor(this)\r\n },\r\n\r\n toSet () {\r\n return new Set(this)\r\n }\r\n})\r\n","import { numberAndUnit } from '../modules/core/regex.js'\r\n\r\n// Module for unit convertions\r\nexport default class SVGNumber {\r\n // Initialize\r\n constructor (...args) {\r\n this.init(...args)\r\n }\r\n\r\n init (value, unit) {\r\n unit = Array.isArray(value) ? value[1] : unit\r\n value = Array.isArray(value) ? value[0] : value\r\n\r\n // initialize defaults\r\n this.value = 0\r\n this.unit = unit || ''\r\n\r\n // parse value\r\n if (typeof value === 'number') {\r\n // ensure a valid numeric value\r\n this.value = isNaN(value) ? 0 : !isFinite(value) ? (value < 0 ? -3.4e+38 : +3.4e+38) : value\r\n } else if (typeof value === 'string') {\r\n unit = value.match(numberAndUnit)\r\n\r\n if (unit) {\r\n // make value numeric\r\n this.value = parseFloat(unit[1])\r\n\r\n // normalize\r\n if (unit[5] === '%') {\r\n this.value /= 100\r\n } else if (unit[5] === 's') {\r\n this.value *= 1000\r\n }\r\n\r\n // store unit\r\n this.unit = unit[5]\r\n }\r\n } else {\r\n if (value instanceof SVGNumber) {\r\n this.value = value.valueOf()\r\n this.unit = value.unit\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n toString () {\r\n return (this.unit === '%' ? ~~(this.value * 1e8) / 1e6\r\n : this.unit === 's' ? this.value / 1e3\r\n : this.value\r\n ) + this.unit\r\n }\r\n\r\n toJSON () {\r\n return this.toString()\r\n }\r\n\r\n toArray () {\r\n return [ this.value, this.unit ]\r\n }\r\n\r\n valueOf () {\r\n return this.value\r\n }\r\n\r\n // Add number\r\n plus (number) {\r\n number = new SVGNumber(number)\r\n return new SVGNumber(this + number, this.unit || number.unit)\r\n }\r\n\r\n // Subtract number\r\n minus (number) {\r\n number = new SVGNumber(number)\r\n return new SVGNumber(this - number, this.unit || number.unit)\r\n }\r\n\r\n // Multiply number\r\n times (number) {\r\n number = new SVGNumber(number)\r\n return new SVGNumber(this * number, this.unit || number.unit)\r\n }\r\n\r\n // Divide number\r\n divide (number) {\r\n number = new SVGNumber(number)\r\n return new SVGNumber(this / number, this.unit || number.unit)\r\n }\r\n\r\n convert (unit) {\r\n return new SVGNumber(this.value, unit)\r\n }\r\n}\r\n","import { attrs as defaults } from './defaults.js'\r\nimport { isNumber } from './regex.js'\r\nimport Color from '../../types/Color.js'\r\nimport SVGArray from '../../types/SVGArray.js'\r\nimport SVGNumber from '../../types/SVGNumber.js'\r\n\r\nconst hooks = []\r\nexport function registerAttrHook (fn) {\r\n hooks.push(fn)\r\n}\r\n\r\n// Set svg element attribute\r\nexport default function attr (attr, val, ns) {\r\n // act as full getter\r\n if (attr == null) {\r\n // get an object of attributes\r\n attr = {}\r\n val = this.node.attributes\r\n\r\n for (const node of val) {\r\n attr[node.nodeName] = isNumber.test(node.nodeValue)\r\n ? parseFloat(node.nodeValue)\r\n : node.nodeValue\r\n }\r\n\r\n return attr\r\n } else if (attr instanceof Array) {\r\n // loop through array and get all values\r\n return attr.reduce((last, curr) => {\r\n last[curr] = this.attr(curr)\r\n return last\r\n }, {})\r\n } else if (typeof attr === 'object' && attr.constructor === Object) {\r\n // apply every attribute individually if an object is passed\r\n for (val in attr) this.attr(val, attr[val])\r\n } else if (val === null) {\r\n // remove value\r\n this.node.removeAttribute(attr)\r\n } else if (val == null) {\r\n // act as a getter if the first and only argument is not an object\r\n val = this.node.getAttribute(attr)\r\n return val == null ? defaults[attr]\r\n : isNumber.test(val) ? parseFloat(val)\r\n : val\r\n } else {\r\n // Loop through hooks and execute them to convert value\r\n val = hooks.reduce((_val, hook) => {\r\n return hook(attr, _val, this)\r\n }, val)\r\n\r\n // ensure correct numeric values (also accepts NaN and Infinity)\r\n if (typeof val === 'number') {\r\n val = new SVGNumber(val)\r\n } else if (Color.isColor(val)) {\r\n // ensure full hex color\r\n val = new Color(val)\r\n } else if (val.constructor === Array) {\r\n // Check for plain arrays and parse array values\r\n val = new SVGArray(val)\r\n }\r\n\r\n // if the passed attribute is leading...\r\n if (attr === 'leading') {\r\n // ... call the leading method instead\r\n if (this.leading) {\r\n this.leading(val)\r\n }\r\n } else {\r\n // set given attribute on node\r\n typeof ns === 'string' ? this.node.setAttributeNS(ns, attr, val.toString())\r\n : this.node.setAttribute(attr, val.toString())\r\n }\r\n\r\n // rebuild if required\r\n if (this.rebuild && (attr === 'font-size' || attr === 'x')) {\r\n this.rebuild()\r\n }\r\n }\r\n\r\n return this\r\n}\r\n","import {\r\n adopt,\r\n assignNewId,\r\n eid,\r\n extend,\r\n makeInstance,\r\n create,\r\n register\r\n} from '../utils/adopter.js'\r\nimport { find, findOne } from '../modules/core/selector.js'\r\nimport { globals } from '../utils/window.js'\r\nimport { map } from '../utils/utils.js'\r\nimport { ns } from '../modules/core/namespaces.js'\r\nimport EventTarget from '../types/EventTarget.js'\r\nimport List from '../types/List.js'\r\nimport attr from '../modules/core/attr.js'\r\n\r\nexport default class Dom extends EventTarget {\r\n constructor (node, attrs) {\r\n super(node)\r\n this.node = node\r\n this.type = node.nodeName\r\n\r\n if (attrs && node !== attrs) {\r\n this.attr(attrs)\r\n }\r\n }\r\n\r\n // Add given element at a position\r\n add (element, i) {\r\n element = makeInstance(element)\r\n\r\n if (i == null) {\r\n this.node.appendChild(element.node)\r\n } else if (element.node !== this.node.childNodes[i]) {\r\n this.node.insertBefore(element.node, this.node.childNodes[i])\r\n }\r\n\r\n return this\r\n }\r\n\r\n // Add element to given container and return self\r\n addTo (parent) {\r\n return makeInstance(parent).put(this)\r\n }\r\n\r\n // Returns all child elements\r\n children () {\r\n return new List(map(this.node.children, function (node) {\r\n return adopt(node)\r\n }))\r\n }\r\n\r\n // Remove all elements in this container\r\n clear () {\r\n // remove children\r\n while (this.node.hasChildNodes()) {\r\n this.node.removeChild(this.node.lastChild)\r\n }\r\n\r\n return this\r\n }\r\n\r\n // Clone element\r\n clone () {\r\n // write dom data to the dom so the clone can pickup the data\r\n this.writeDataToDom()\r\n\r\n // clone element and assign new id\r\n return assignNewId(this.node.cloneNode(true))\r\n }\r\n\r\n // Iterates over all children and invokes a given block\r\n each (block, deep) {\r\n var children = this.children()\r\n var i, il\r\n\r\n for (i = 0, il = children.length; i < il; i++) {\r\n block.apply(children[i], [ i, children ])\r\n\r\n if (deep) {\r\n children[i].each(block, deep)\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n element (nodeName) {\r\n return this.put(new Dom(create(nodeName)))\r\n }\r\n\r\n // Get first child\r\n first () {\r\n return adopt(this.node.firstChild)\r\n }\r\n\r\n // Get a element at the given index\r\n get (i) {\r\n return adopt(this.node.childNodes[i])\r\n }\r\n\r\n getEventHolder () {\r\n return this.node\r\n }\r\n\r\n getEventTarget () {\r\n return this.node\r\n }\r\n\r\n // Checks if the given element is a child\r\n has (element) {\r\n return this.index(element) >= 0\r\n }\r\n\r\n // Get / set id\r\n id (id) {\r\n // generate new id if no id set\r\n if (typeof id === 'undefined' && !this.node.id) {\r\n this.node.id = eid(this.type)\r\n }\r\n\r\n // dont't set directly width this.node.id to make `null` work correctly\r\n return this.attr('id', id)\r\n }\r\n\r\n // Gets index of given element\r\n index (element) {\r\n return [].slice.call(this.node.childNodes).indexOf(element.node)\r\n }\r\n\r\n // Get the last child\r\n last () {\r\n return adopt(this.node.lastChild)\r\n }\r\n\r\n // matches the element vs a css selector\r\n matches (selector) {\r\n const el = this.node\r\n return (el.matches || el.matchesSelector || el.msMatchesSelector || el.mozMatchesSelector || el.webkitMatchesSelector || el.oMatchesSelector).call(el, selector)\r\n }\r\n\r\n // Returns the parent element instance\r\n parent (type) {\r\n var parent = this\r\n\r\n // check for parent\r\n if (!parent.node.parentNode) return null\r\n\r\n // get parent element\r\n parent = adopt(parent.node.parentNode)\r\n\r\n if (!type) return parent\r\n\r\n // loop trough ancestors if type is given\r\n while (parent) {\r\n if (typeof type === 'string' ? parent.matches(type) : parent instanceof type) return parent\r\n if (!parent.node.parentNode || parent.node.parentNode.nodeName === '#document' || parent.node.parentNode.nodeName === '#document-fragment') return null // #759, #720\r\n parent = adopt(parent.node.parentNode)\r\n }\r\n }\r\n\r\n // Basically does the same as `add()` but returns the added element instead\r\n put (element, i) {\r\n this.add(element, i)\r\n return element\r\n }\r\n\r\n // Add element to given container and return container\r\n putIn (parent) {\r\n return makeInstance(parent).add(this)\r\n }\r\n\r\n // Remove element\r\n remove () {\r\n if (this.parent()) {\r\n this.parent().removeElement(this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n // Remove a given child\r\n removeElement (element) {\r\n this.node.removeChild(element.node)\r\n\r\n return this\r\n }\r\n\r\n // Replace this with element\r\n replace (element) {\r\n element = makeInstance(element)\r\n this.node.parentNode.replaceChild(element.node, this.node)\r\n return element\r\n }\r\n\r\n round (precision = 2, map) {\r\n const factor = 10 ** precision\r\n const attrs = this.attr()\r\n\r\n // If we have no map, build one from attrs\r\n if (!map) {\r\n map = Object.keys(attrs)\r\n }\r\n\r\n // Holds rounded attributes\r\n const newAttrs = {}\r\n map.forEach((key) => {\r\n newAttrs[key] = Math.round(attrs[key] * factor) / factor\r\n })\r\n\r\n this.attr(newAttrs)\r\n return this\r\n }\r\n\r\n // Return id on string conversion\r\n toString () {\r\n return this.id()\r\n }\r\n\r\n // Import raw svg\r\n svg (svgOrFn, outerHTML) {\r\n var well, len, fragment\r\n\r\n if (svgOrFn === false) {\r\n outerHTML = false\r\n svgOrFn = null\r\n }\r\n\r\n // act as getter if no svg string is given\r\n if (svgOrFn == null || typeof svgOrFn === 'function') {\r\n // The default for exports is, that the outerNode is included\r\n outerHTML = outerHTML == null ? true : outerHTML\r\n\r\n // write svgjs data to the dom\r\n this.writeDataToDom()\r\n let current = this\r\n\r\n // An export modifier was passed\r\n if (svgOrFn != null) {\r\n current = adopt(current.node.cloneNode(true))\r\n\r\n // If the user wants outerHTML we need to process this node, too\r\n if (outerHTML) {\r\n const result = svgOrFn(current)\r\n current = result || current\r\n\r\n // The user does not want this node? Well, then he gets nothing\r\n if (result === false) return ''\r\n }\r\n\r\n // Deep loop through all children and apply modifier\r\n current.each(function () {\r\n const result = svgOrFn(this)\r\n const _this = result || this\r\n\r\n // If modifier returns false, discard node\r\n if (result === false) {\r\n this.remove()\r\n\r\n // If modifier returns new node, use it\r\n } else if (result && this !== _this) {\r\n this.replace(_this)\r\n }\r\n }, true)\r\n }\r\n\r\n // Return outer or inner content\r\n return outerHTML\r\n ? current.node.outerHTML\r\n : current.node.innerHTML\r\n }\r\n\r\n // Act as setter if we got a string\r\n\r\n // The default for import is, that the current node is not replaced\r\n outerHTML = outerHTML == null ? false : outerHTML\r\n\r\n // Create temporary holder\r\n well = globals.document.createElementNS(ns, 'svg')\r\n fragment = globals.document.createDocumentFragment()\r\n\r\n // Dump raw svg\r\n well.innerHTML = svgOrFn\r\n\r\n // Transplant nodes into the fragment\r\n for (len = well.children.length; len--;) {\r\n fragment.appendChild(well.firstElementChild)\r\n }\r\n\r\n const parent = this.parent()\r\n\r\n // Add the whole fragment at once\r\n return outerHTML\r\n ? this.replace(fragment) && parent\r\n : this.add(fragment)\r\n }\r\n\r\n words (text) {\r\n // This is faster than removing all children and adding a new one\r\n this.node.textContent = text\r\n return this\r\n }\r\n\r\n // write svgjs data to the dom\r\n writeDataToDom () {\r\n // dump variables recursively\r\n this.each(function () {\r\n this.writeDataToDom()\r\n })\r\n\r\n return this\r\n }\r\n}\r\n\r\nextend(Dom, { attr, find, findOne })\r\nregister(Dom, 'Dom')\r\n","import { bbox, rbox } from '../types/Box.js'\r\nimport { ctm, screenCTM } from '../types/Matrix.js'\r\nimport {\r\n extend,\r\n getClass,\r\n makeInstance,\r\n register,\r\n root\r\n} from '../utils/adopter.js'\r\nimport { globals } from '../utils/window.js'\r\nimport { point } from '../types/Point.js'\r\nimport { proportionalSize } from '../utils/utils.js'\r\nimport { reference } from '../modules/core/regex.js'\r\nimport Dom from './Dom.js'\r\nimport List from '../types/List.js'\r\nimport SVGNumber from '../types/SVGNumber.js'\r\n\r\nexport default class Element extends Dom {\r\n constructor (node, attrs) {\r\n super(node, attrs)\r\n\r\n // initialize data object\r\n this.dom = {}\r\n\r\n // create circular reference\r\n this.node.instance = this\r\n\r\n if (node.hasAttribute('svgjs:data')) {\r\n // pull svgjs data from the dom (getAttributeNS doesn't work in html5)\r\n this.setData(JSON.parse(node.getAttribute('svgjs:data')) || {})\r\n }\r\n }\r\n\r\n // Move element by its center\r\n center (x, y) {\r\n return this.cx(x).cy(y)\r\n }\r\n\r\n // Move by center over x-axis\r\n cx (x) {\r\n return x == null ? this.x() + this.width() / 2 : this.x(x - this.width() / 2)\r\n }\r\n\r\n // Move by center over y-axis\r\n cy (y) {\r\n return y == null\r\n ? this.y() + this.height() / 2\r\n : this.y(y - this.height() / 2)\r\n }\r\n\r\n // Get defs\r\n defs () {\r\n return this.root().defs()\r\n }\r\n\r\n // Relative move over x and y axes\r\n dmove (x, y) {\r\n return this.dx(x).dy(y)\r\n }\r\n\r\n // Relative move over x axis\r\n dx (x = 0) {\r\n return this.x(new SVGNumber(x).plus(this.x()))\r\n }\r\n\r\n // Relative move over y axis\r\n dy (y = 0) {\r\n return this.y(new SVGNumber(y).plus(this.y()))\r\n }\r\n\r\n // Get parent document\r\n root () {\r\n const p = this.parent(getClass(root))\r\n return p && p.root()\r\n }\r\n\r\n getEventHolder () {\r\n return this\r\n }\r\n\r\n // Set height of element\r\n height (height) {\r\n return this.attr('height', height)\r\n }\r\n\r\n // Checks whether the given point inside the bounding box of the element\r\n inside (x, y) {\r\n const box = this.bbox()\r\n\r\n return x > box.x\r\n && y > box.y\r\n && x < box.x + box.width\r\n && y < box.y + box.height\r\n }\r\n\r\n // Move element to given x and y values\r\n move (x, y) {\r\n return this.x(x).y(y)\r\n }\r\n\r\n // return array of all ancestors of given type up to the root svg\r\n parents (until = globals.document) {\r\n until = makeInstance(until)\r\n const parents = new List()\r\n let parent = this\r\n\r\n while (\r\n (parent = parent.parent())\r\n && parent.node !== until.node\r\n && parent.node !== globals.document\r\n ) {\r\n parents.push(parent)\r\n }\r\n\r\n return parents\r\n }\r\n\r\n // Get referenced element form attribute value\r\n reference (attr) {\r\n attr = this.attr(attr)\r\n if (!attr) return null\r\n\r\n const m = attr.match(reference)\r\n return m ? makeInstance(m[1]) : null\r\n }\r\n\r\n // set given data to the elements data property\r\n setData (o) {\r\n this.dom = o\r\n return this\r\n }\r\n\r\n // Set element size to given width and height\r\n size (width, height) {\r\n const p = proportionalSize(this, width, height)\r\n\r\n return this\r\n .width(new SVGNumber(p.width))\r\n .height(new SVGNumber(p.height))\r\n }\r\n\r\n // Set width of element\r\n width (width) {\r\n return this.attr('width', width)\r\n }\r\n\r\n // write svgjs data to the dom\r\n writeDataToDom () {\r\n // remove previously set data\r\n this.node.removeAttribute('svgjs:data')\r\n\r\n if (Object.keys(this.dom).length) {\r\n this.node.setAttribute('svgjs:data', JSON.stringify(this.dom)) // see #428\r\n }\r\n\r\n return super.writeDataToDom()\r\n }\r\n\r\n // Move over x-axis\r\n x (x) {\r\n return this.attr('x', x)\r\n }\r\n\r\n // Move over y-axis\r\n y (y) {\r\n return this.attr('y', y)\r\n }\r\n}\r\n\r\nextend(Element, {\r\n bbox, rbox, point, ctm, screenCTM\r\n})\r\n\r\nregister(Element, 'Element')\r\n","import { on, off } from '../core/event.js'\r\nimport { registerMethods } from '../../utils/methods.js'\r\nimport Color from '../../types/Color.js'\r\nimport Element from '../../elements/Element.js'\r\nimport Matrix from '../../types/Matrix.js'\r\nimport Point from '../../types/Point.js'\r\nimport SVGNumber from '../../types/SVGNumber.js'\r\n\r\n// Define list of available attributes for stroke and fill\r\nvar sugar = {\r\n stroke: [ 'color', 'width', 'opacity', 'linecap', 'linejoin', 'miterlimit', 'dasharray', 'dashoffset' ],\r\n fill: [ 'color', 'opacity', 'rule' ],\r\n prefix: function (t, a) {\r\n return a === 'color' ? t : t + '-' + a\r\n }\r\n}\r\n\r\n// Add sugar for fill and stroke\r\n;[ 'fill', 'stroke' ].forEach(function (m) {\r\n var extension = {}\r\n var i\r\n\r\n extension[m] = function (o) {\r\n if (typeof o === 'undefined') {\r\n return this.attr(m)\r\n }\r\n if (typeof o === 'string' || o instanceof Color || Color.isRgb(o) || (o instanceof Element)) {\r\n this.attr(m, o)\r\n } else {\r\n // set all attributes from sugar.fill and sugar.stroke list\r\n for (i = sugar[m].length - 1; i >= 0; i--) {\r\n if (o[sugar[m][i]] != null) {\r\n this.attr(sugar.prefix(m, sugar[m][i]), o[sugar[m][i]])\r\n }\r\n }\r\n }\r\n\r\n return this\r\n }\r\n\r\n registerMethods([ 'Element', 'Runner' ], extension)\r\n})\r\n\r\nregisterMethods([ 'Element', 'Runner' ], {\r\n // Let the user set the matrix directly\r\n matrix: function (mat, b, c, d, e, f) {\r\n // Act as a getter\r\n if (mat == null) {\r\n return new Matrix(this)\r\n }\r\n\r\n // Act as a setter, the user can pass a matrix or a set of numbers\r\n return this.attr('transform', new Matrix(mat, b, c, d, e, f))\r\n },\r\n\r\n // Map rotation to transform\r\n rotate: function (angle, cx, cy) {\r\n return this.transform({ rotate: angle, ox: cx, oy: cy }, true)\r\n },\r\n\r\n // Map skew to transform\r\n skew: function (x, y, cx, cy) {\r\n return arguments.length === 1 || arguments.length === 3\r\n ? this.transform({ skew: x, ox: y, oy: cx }, true)\r\n : this.transform({ skew: [ x, y ], ox: cx, oy: cy }, true)\r\n },\r\n\r\n shear: function (lam, cx, cy) {\r\n return this.transform({ shear: lam, ox: cx, oy: cy }, true)\r\n },\r\n\r\n // Map scale to transform\r\n scale: function (x, y, cx, cy) {\r\n return arguments.length === 1 || arguments.length === 3\r\n ? this.transform({ scale: x, ox: y, oy: cx }, true)\r\n : this.transform({ scale: [ x, y ], ox: cx, oy: cy }, true)\r\n },\r\n\r\n // Map translate to transform\r\n translate: function (x, y) {\r\n return this.transform({ translate: [ x, y ] }, true)\r\n },\r\n\r\n // Map relative translations to transform\r\n relative: function (x, y) {\r\n return this.transform({ relative: [ x, y ] }, true)\r\n },\r\n\r\n // Map flip to transform\r\n flip: function (direction, around) {\r\n var directionString = typeof direction === 'string' ? direction\r\n : isFinite(direction) ? 'both'\r\n : 'both'\r\n var origin = (direction === 'both' && isFinite(around)) ? [ around, around ]\r\n : (direction === 'x') ? [ around, 0 ]\r\n : (direction === 'y') ? [ 0, around ]\r\n : isFinite(direction) ? [ direction, direction ]\r\n : [ 0, 0 ]\r\n return this.transform({ flip: directionString, origin: origin }, true)\r\n },\r\n\r\n // Opacity\r\n opacity: function (value) {\r\n return this.attr('opacity', value)\r\n }\r\n})\r\n\r\nregisterMethods('radius', {\r\n // Add x and y radius\r\n radius: function (x, y) {\r\n var type = (this._element || this).type\r\n return type === 'radialGradient' || type === 'radialGradient'\r\n ? this.attr('r', new SVGNumber(x))\r\n : this.rx(x).ry(y == null ? x : y)\r\n }\r\n})\r\n\r\nregisterMethods('Path', {\r\n // Get path length\r\n length: function () {\r\n return this.node.getTotalLength()\r\n },\r\n // Get point at length\r\n pointAt: function (length) {\r\n return new Point(this.node.getPointAtLength(length))\r\n }\r\n})\r\n\r\nregisterMethods([ 'Element', 'Runner' ], {\r\n // Set font\r\n font: function (a, v) {\r\n if (typeof a === 'object') {\r\n for (v in a) this.font(v, a[v])\r\n return this\r\n }\r\n\r\n return a === 'leading'\r\n ? this.leading(v)\r\n : a === 'anchor'\r\n ? this.attr('text-anchor', v)\r\n : a === 'size' || a === 'family' || a === 'weight' || a === 'stretch' || a === 'variant' || a === 'style'\r\n ? this.attr('font-' + a, v)\r\n : this.attr(a, v)\r\n }\r\n})\r\n\r\nregisterMethods('Text', {\r\n ax (x) {\r\n return this.attr('x', x)\r\n },\r\n ay (y) {\r\n return this.attr('y', y)\r\n },\r\n amove (x, y) {\r\n return this.ax(x).ay(y)\r\n }\r\n})\r\n\r\n// Add events to elements\r\nconst methods = [ 'click',\r\n 'dblclick',\r\n 'mousedown',\r\n 'mouseup',\r\n 'mouseover',\r\n 'mouseout',\r\n 'mousemove',\r\n 'mouseenter',\r\n 'mouseleave',\r\n 'touchstart',\r\n 'touchmove',\r\n 'touchleave',\r\n 'touchend',\r\n 'touchcancel' ].reduce(function (last, event) {\r\n // add event to Element\r\n const fn = function (f) {\r\n if (f === null) {\r\n off(this, event)\r\n } else {\r\n on(this, event, f)\r\n }\r\n return this\r\n }\r\n\r\n last[event] = fn\r\n return last\r\n}, {})\r\n\r\nregisterMethods('Element', methods)\r\n","import { getOrigin } from '../../utils/utils.js'\r\nimport { delimiter, transforms } from '../core/regex.js'\r\nimport { registerMethods } from '../../utils/methods.js'\r\nimport Matrix from '../../types/Matrix.js'\r\n\r\n// Reset all transformations\r\nexport function untransform () {\r\n return this.attr('transform', null)\r\n}\r\n\r\n// merge the whole transformation chain into one matrix and returns it\r\nexport function matrixify () {\r\n var matrix = (this.attr('transform') || '')\r\n // split transformations\r\n .split(transforms).slice(0, -1).map(function (str) {\r\n // generate key => value pairs\r\n var kv = str.trim().split('(')\r\n return [ kv[0],\r\n kv[1].split(delimiter)\r\n .map(function (str) {\r\n return parseFloat(str)\r\n })\r\n ]\r\n })\r\n .reverse()\r\n // merge every transformation into one matrix\r\n .reduce(function (matrix, transform) {\r\n if (transform[0] === 'matrix') {\r\n return matrix.lmultiply(Matrix.fromArray(transform[1]))\r\n }\r\n return matrix[transform[0]].apply(matrix, transform[1])\r\n }, new Matrix())\r\n\r\n return matrix\r\n}\r\n\r\n// add an element to another parent without changing the visual representation on the screen\r\nexport function toParent (parent) {\r\n if (this === parent) return this\r\n var ctm = this.screenCTM()\r\n var pCtm = parent.screenCTM().inverse()\r\n\r\n this.addTo(parent).untransform().transform(pCtm.multiply(ctm))\r\n\r\n return this\r\n}\r\n\r\n// same as above with parent equals root-svg\r\nexport function toRoot () {\r\n return this.toParent(this.root())\r\n}\r\n\r\n// Add transformations\r\nexport function transform (o, relative) {\r\n // Act as a getter if no object was passed\r\n if (o == null || typeof o === 'string') {\r\n var decomposed = new Matrix(this).decompose()\r\n return o == null ? decomposed : decomposed[o]\r\n }\r\n\r\n if (!Matrix.isMatrixLike(o)) {\r\n // Set the origin according to the defined transform\r\n o = { ...o, origin: getOrigin(o, this) }\r\n }\r\n\r\n // The user can pass a boolean, an Element or an Matrix or nothing\r\n var cleanRelative = relative === true ? this : (relative || false)\r\n var result = new Matrix(cleanRelative).transform(o)\r\n return this.attr('transform', result)\r\n}\r\n\r\nregisterMethods('Element', {\r\n untransform, matrixify, toParent, toRoot, transform\r\n})\r\n","import SVGNumber from '../../types/SVGNumber.js'\r\n\r\n// Radius x value\r\nexport function rx (rx) {\r\n return this.attr('rx', rx)\r\n}\r\n\r\n// Radius y value\r\nexport function ry (ry) {\r\n return this.attr('ry', ry)\r\n}\r\n\r\n// Move over x-axis\r\nexport function x (x) {\r\n return x == null\r\n ? this.cx() - this.rx()\r\n : this.cx(x + this.rx())\r\n}\r\n\r\n// Move over y-axis\r\nexport function y (y) {\r\n return y == null\r\n ? this.cy() - this.ry()\r\n : this.cy(y + this.ry())\r\n}\r\n\r\n// Move by center over x-axis\r\nexport function cx (x) {\r\n return x == null\r\n ? this.attr('cx')\r\n : this.attr('cx', x)\r\n}\r\n\r\n// Move by center over y-axis\r\nexport function cy (y) {\r\n return y == null\r\n ? this.attr('cy')\r\n : this.attr('cy', y)\r\n}\r\n\r\n// Set width of element\r\nexport function width (width) {\r\n return width == null\r\n ? this.rx() * 2\r\n : this.rx(new SVGNumber(width).divide(2))\r\n}\r\n\r\n// Set height of element\r\nexport function height (height) {\r\n return height == null\r\n ? this.ry() * 2\r\n : this.ry(new SVGNumber(height).divide(2))\r\n}\r\n","import { register } from '../utils/adopter.js'\r\nimport Element from './Element.js'\r\n\r\nexport default class Shape extends Element {}\r\n\r\nregister(Shape, 'Shape')\r\n","import { cx, cy, height, width, x, y } from '../modules/core/circled.js'\r\nimport {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport SVGNumber from '../types/SVGNumber.js'\r\nimport Shape from './Shape.js'\r\n\r\nexport default class Circle extends Shape {\r\n constructor (node) {\r\n super(nodeOrNew('circle', node), node)\r\n }\r\n\r\n radius (r) {\r\n return this.attr('r', r)\r\n }\r\n\r\n // Radius x value\r\n rx (rx) {\r\n return this.attr('r', rx)\r\n }\r\n\r\n // Alias radius x value\r\n ry (ry) {\r\n return this.rx(ry)\r\n }\r\n\r\n size (size) {\r\n return this.radius(new SVGNumber(size).divide(2))\r\n }\r\n}\r\n\r\nextend(Circle, { x, y, cx, cy, width, height })\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create circle element\r\n circle: wrapWithAttrCheck(function (size) {\r\n return this.put(new Circle())\r\n .size(size)\r\n .move(0, 0)\r\n })\r\n }\r\n})\r\n\r\nregister(Circle, 'Circle')\r\n","import { register } from '../utils/adopter.js'\r\nimport Element from './Element.js'\r\n\r\nexport default class Container extends Element {\r\n flatten (parent) {\r\n this.each(function () {\r\n if (this instanceof Container) return this.flatten(parent).ungroup(parent)\r\n return this.toParent(parent)\r\n })\r\n\r\n // we need this so that the root does not get removed\r\n this.node.firstElementChild || this.remove()\r\n\r\n return this\r\n }\r\n\r\n ungroup (parent) {\r\n parent = parent || this.parent()\r\n\r\n this.each(function () {\r\n return this.toParent(parent)\r\n })\r\n\r\n this.remove()\r\n\r\n return this\r\n }\r\n}\r\n\r\nregister(Container, 'Container')\r\n","import { nodeOrNew, register } from '../utils/adopter.js'\r\nimport Container from './Container.js'\r\n\r\nexport default class Defs extends Container {\r\n constructor (node) {\r\n super(nodeOrNew('defs', node), node)\r\n }\r\n\r\n flatten () {\r\n return this\r\n }\n\r\n ungroup () {\r\n return this\r\n }\r\n}\r\n\r\nregister(Defs, 'Defs')\r\n","import {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { proportionalSize } from '../utils/utils.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport SVGNumber from '../types/SVGNumber.js'\r\nimport Shape from './Shape.js'\r\nimport * as circled from '../modules/core/circled.js'\r\n\r\nexport default class Ellipse extends Shape {\r\n constructor (node) {\r\n super(nodeOrNew('ellipse', node), node)\r\n }\r\n\r\n size (width, height) {\r\n var p = proportionalSize(this, width, height)\r\n\r\n return this\r\n .rx(new SVGNumber(p.width).divide(2))\r\n .ry(new SVGNumber(p.height).divide(2))\r\n }\r\n}\r\n\r\nextend(Ellipse, circled)\r\n\r\nregisterMethods('Container', {\r\n // Create an ellipse\r\n ellipse: wrapWithAttrCheck(function (width = 0, height = width) {\r\n return this.put(new Ellipse()).size(width, height).move(0, 0)\r\n })\r\n})\r\n\r\nregister(Ellipse, 'Ellipse')\r\n","import { nodeOrNew, register } from '../utils/adopter.js'\r\nimport Element from './Element.js'\r\nimport SVGNumber from '../types/SVGNumber.js'\r\n\r\nexport default class Stop extends Element {\r\n constructor (node) {\r\n super(nodeOrNew('stop', node), node)\r\n }\r\n\r\n // add color stops\r\n update (o) {\r\n if (typeof o === 'number' || o instanceof SVGNumber) {\r\n o = {\r\n offset: arguments[0],\r\n color: arguments[1],\r\n opacity: arguments[2]\r\n }\r\n }\r\n\r\n // set attributes\r\n if (o.opacity != null) this.attr('stop-opacity', o.opacity)\r\n if (o.color != null) this.attr('stop-color', o.color)\r\n if (o.offset != null) this.attr('offset', new SVGNumber(o.offset))\r\n\r\n return this\r\n }\r\n}\r\n\r\nregister(Stop, 'Stop')\r\n","import SVGNumber from '../../types/SVGNumber.js'\r\n\r\nexport function from (x, y) {\r\n return (this._element || this).type === 'radialGradient'\r\n ? this.attr({ fx: new SVGNumber(x), fy: new SVGNumber(y) })\r\n : this.attr({ x1: new SVGNumber(x), y1: new SVGNumber(y) })\r\n}\r\n\r\nexport function to (x, y) {\r\n return (this._element || this).type === 'radialGradient'\r\n ? this.attr({ cx: new SVGNumber(x), cy: new SVGNumber(y) })\r\n : this.attr({ x2: new SVGNumber(x), y2: new SVGNumber(y) })\r\n}\r\n","import {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Box from '../types/Box.js'\r\nimport Container from './Container.js'\r\nimport Stop from './Stop.js'\r\nimport baseFind from '../modules/core/selector.js'\r\nimport * as gradiented from '../modules/core/gradiented.js'\r\n\r\nexport default class Gradient extends Container {\r\n constructor (type, attrs) {\r\n super(\r\n nodeOrNew(type + 'Gradient', typeof type === 'string' ? null : type),\r\n attrs\r\n )\r\n }\r\n\r\n // Add a color stop\r\n stop (offset, color, opacity) {\r\n return this.put(new Stop()).update(offset, color, opacity)\r\n }\r\n\r\n // Update gradient\r\n update (block) {\r\n // remove all stops\r\n this.clear()\r\n\r\n // invoke passed block\r\n if (typeof block === 'function') {\r\n block.call(this, this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n // Return the fill id\r\n url () {\r\n return 'url(#' + this.id() + ')'\r\n }\r\n\r\n // Alias string convertion to fill\r\n toString () {\r\n return this.url()\r\n }\r\n\r\n // custom attr to handle transform\r\n attr (a, b, c) {\r\n if (a === 'transform') a = 'gradientTransform'\r\n return super.attr(a, b, c)\r\n }\r\n\r\n targets () {\r\n return baseFind('svg [fill*=\"' + this.id() + '\"]')\r\n }\r\n\r\n bbox () {\r\n return new Box()\r\n }\r\n}\r\n\r\nextend(Gradient, gradiented)\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create gradient element in defs\r\n gradient: wrapWithAttrCheck(function (type, block) {\r\n return this.defs().gradient(type, block)\r\n })\r\n },\r\n // define gradient\r\n Defs: {\r\n gradient: wrapWithAttrCheck(function (type, block) {\r\n return this.put(new Gradient(type)).update(block)\r\n })\r\n }\r\n})\r\n\r\nregister(Gradient, 'Gradient')\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Box from '../types/Box.js'\r\nimport Container from './Container.js'\r\nimport baseFind from '../modules/core/selector.js'\r\n\r\nexport default class Pattern extends Container {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('pattern', node), node)\r\n }\r\n\r\n // Return the fill id\r\n url () {\r\n return 'url(#' + this.id() + ')'\r\n }\r\n\r\n // Update pattern by rebuilding\r\n update (block) {\r\n // remove content\r\n this.clear()\r\n\r\n // invoke passed block\r\n if (typeof block === 'function') {\r\n block.call(this, this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n // Alias string convertion to fill\r\n toString () {\r\n return this.url()\r\n }\r\n\r\n // custom attr to handle transform\r\n attr (a, b, c) {\r\n if (a === 'transform') a = 'patternTransform'\r\n return super.attr(a, b, c)\r\n }\r\n\r\n targets () {\r\n return baseFind('svg [fill*=\"' + this.id() + '\"]')\r\n }\r\n\r\n bbox () {\r\n return new Box()\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create pattern element in defs\r\n pattern (...args) {\r\n return this.defs().pattern(...args)\r\n }\r\n },\r\n Defs: {\r\n pattern: wrapWithAttrCheck(function (width, height, block) {\r\n return this.put(new Pattern()).update(block).attr({\r\n x: 0,\r\n y: 0,\r\n width: width,\r\n height: height,\r\n patternUnits: 'userSpaceOnUse'\r\n })\r\n })\r\n }\r\n})\r\n\r\nregister(Pattern, 'Pattern')\r\n","import { isImage } from '../modules/core/regex.js'\r\nimport { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { off, on } from '../modules/core/event.js'\r\nimport { registerAttrHook } from '../modules/core/attr.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport { xlink } from '../modules/core/namespaces.js'\r\nimport Pattern from './Pattern.js'\r\nimport Shape from './Shape.js'\r\nimport { globals } from '../utils/window.js'\r\n\r\nexport default class Image extends Shape {\r\n constructor (node) {\r\n super(nodeOrNew('image', node), node)\r\n }\r\n\r\n // (re)load image\r\n load (url, callback) {\r\n if (!url) return this\r\n\r\n var img = new globals.window.Image()\r\n\r\n on(img, 'load', function (e) {\r\n var p = this.parent(Pattern)\r\n\r\n // ensure image size\r\n if (this.width() === 0 && this.height() === 0) {\r\n this.size(img.width, img.height)\r\n }\r\n\r\n if (p instanceof Pattern) {\r\n // ensure pattern size if not set\r\n if (p.width() === 0 && p.height() === 0) {\r\n p.size(this.width(), this.height())\r\n }\r\n }\r\n\r\n if (typeof callback === 'function') {\r\n callback.call(this, e)\r\n }\r\n }, this)\r\n\r\n on(img, 'load error', function () {\r\n // dont forget to unbind memory leaking events\r\n off(img)\r\n })\r\n\r\n return this.attr('href', (img.src = url), xlink)\r\n }\r\n}\r\n\r\nregisterAttrHook(function (attr, val, _this) {\r\n // convert image fill and stroke to patterns\r\n if (attr === 'fill' || attr === 'stroke') {\r\n if (isImage.test(val)) {\r\n val = _this.root().defs().image(val)\r\n }\r\n }\r\n\r\n if (val instanceof Image) {\r\n val = _this.root().defs().pattern(0, 0, (pattern) => {\r\n pattern.add(val)\r\n })\r\n }\r\n\r\n return val\r\n})\r\n\r\nregisterMethods({\r\n Container: {\r\n // create image element, load image and set its size\r\n image: wrapWithAttrCheck(function (source, callback) {\r\n return this.put(new Image()).size(0, 0).load(source, callback)\r\n })\r\n }\r\n})\r\n\r\nregister(Image, 'Image')\r\n","import { delimiter } from '../modules/core/regex.js'\r\nimport { extend } from '../utils/adopter.js'\r\nimport { subClassArray } from './ArrayPolyfill.js'\r\nimport SVGArray from './SVGArray.js'\r\n\r\nconst PointArray = subClassArray('PointArray', SVGArray)\r\n\r\nexport default PointArray\r\n\r\nextend(PointArray, {\r\n // Convert array to string\r\n toString () {\r\n // convert to a poly point string\r\n for (var i = 0, il = this.length, array = []; i < il; i++) {\r\n array.push(this[i].join(','))\r\n }\r\n\r\n return array.join(' ')\r\n },\r\n\r\n // Convert array to line object\r\n toLine () {\r\n return {\r\n x1: this[0][0],\r\n y1: this[0][1],\r\n x2: this[1][0],\r\n y2: this[1][1]\r\n }\r\n },\r\n\r\n // Get morphed array at given position\r\n at (pos) {\r\n // make sure a destination is defined\r\n if (!this.destination) return this\r\n\r\n // generate morphed point string\r\n for (var i = 0, il = this.length, array = []; i < il; i++) {\r\n array.push([\r\n this[i][0] + (this.destination[i][0] - this[i][0]) * pos,\r\n this[i][1] + (this.destination[i][1] - this[i][1]) * pos\r\n ])\r\n }\r\n\r\n return new PointArray(array)\r\n },\r\n\r\n // Parse point string and flat array\r\n parse (array = [ [ 0, 0 ] ]) {\r\n var points = []\r\n\r\n // if it is an array\r\n if (array instanceof Array) {\r\n // and it is not flat, there is no need to parse it\r\n if (array[0] instanceof Array) {\r\n return array\r\n }\r\n } else { // Else, it is considered as a string\r\n // parse points\r\n array = array.trim().split(delimiter).map(parseFloat)\r\n }\r\n\r\n // validate points - https://svgwg.org/svg2-draft/shapes.html#DataTypePoints\r\n // Odd number of coordinates is an error. In such cases, drop the last odd coordinate.\r\n if (array.length % 2 !== 0) array.pop()\r\n\r\n // wrap points in two-tuples\r\n for (var i = 0, len = array.length; i < len; i = i + 2) {\r\n points.push([ array[i], array[i + 1] ])\r\n }\r\n\r\n return points\r\n },\r\n\r\n // transform points with matrix (similar to Point.transform)\r\n transform (m) {\r\n const points = []\r\n\r\n for (let i = 0; i < this.length; i++) {\r\n const point = this[i]\r\n // Perform the matrix multiplication\r\n points.push([\r\n m.a * point[0] + m.c * point[1] + m.e,\r\n m.b * point[0] + m.d * point[1] + m.f\r\n ])\r\n }\r\n\r\n // Return the required point\r\n return new PointArray(points)\r\n },\r\n\r\n // Move point string\r\n move (x, y) {\r\n var box = this.bbox()\r\n\r\n // get relative offset\r\n x -= box.x\r\n y -= box.y\r\n\r\n // move every point\r\n if (!isNaN(x) && !isNaN(y)) {\r\n for (var i = this.length - 1; i >= 0; i--) {\r\n this[i] = [ this[i][0] + x, this[i][1] + y ]\r\n }\r\n }\r\n\r\n return this\r\n },\r\n\r\n // Resize poly string\r\n size (width, height) {\r\n var i\r\n var box = this.bbox()\r\n\r\n // recalculate position of all points according to new size\r\n for (i = this.length - 1; i >= 0; i--) {\r\n if (box.width) this[i][0] = ((this[i][0] - box.x) * width) / box.width + box.x\r\n if (box.height) this[i][1] = ((this[i][1] - box.y) * height) / box.height + box.y\r\n }\r\n\r\n return this\r\n },\r\n\r\n // Get bounding box of points\r\n bbox () {\r\n var maxX = -Infinity\r\n var maxY = -Infinity\r\n var minX = Infinity\r\n var minY = Infinity\r\n this.forEach(function (el) {\r\n maxX = Math.max(el[0], maxX)\r\n maxY = Math.max(el[1], maxY)\r\n minX = Math.min(el[0], minX)\r\n minY = Math.min(el[1], minY)\r\n })\r\n return { x: minX, y: minY, width: maxX - minX, height: maxY - minY }\r\n }\r\n})\r\n","import PointArray from '../../types/PointArray.js'\r\n\r\nexport const MorphArray = PointArray\r\n\r\n// Move by left top corner over x-axis\r\nexport function x (x) {\r\n return x == null ? this.bbox().x : this.move(x, this.bbox().y)\r\n}\r\n\r\n// Move by left top corner over y-axis\r\nexport function y (y) {\r\n return y == null ? this.bbox().y : this.move(this.bbox().x, y)\r\n}\r\n\r\n// Set width of element\r\nexport function width (width) {\r\n const b = this.bbox()\r\n return width == null ? b.width : this.size(width, b.height)\r\n}\r\n\r\n// Set height of element\r\nexport function height (height) {\r\n const b = this.bbox()\r\n return height == null ? b.height : this.size(b.width, height)\r\n}\r\n","import {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { proportionalSize } from '../utils/utils.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport PointArray from '../types/PointArray.js'\r\nimport Shape from './Shape.js'\r\nimport * as pointed from '../modules/core/pointed.js'\r\n\r\nexport default class Line extends Shape {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('line', node), node)\r\n }\r\n\r\n // Get array\r\n array () {\r\n return new PointArray([\r\n [ this.attr('x1'), this.attr('y1') ],\r\n [ this.attr('x2'), this.attr('y2') ]\r\n ])\r\n }\r\n\r\n // Overwrite native plot() method\r\n plot (x1, y1, x2, y2) {\r\n if (x1 == null) {\r\n return this.array()\r\n } else if (typeof y1 !== 'undefined') {\r\n x1 = { x1: x1, y1: y1, x2: x2, y2: y2 }\r\n } else {\r\n x1 = new PointArray(x1).toLine()\r\n }\r\n\r\n return this.attr(x1)\r\n }\r\n\r\n // Move by left top corner\r\n move (x, y) {\r\n return this.attr(this.array().move(x, y).toLine())\r\n }\r\n\r\n // Set element size to given width and height\r\n size (width, height) {\r\n var p = proportionalSize(this, width, height)\r\n return this.attr(this.array().size(p.width, p.height).toLine())\r\n }\r\n}\r\n\r\nextend(Line, pointed)\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create a line element\r\n line: wrapWithAttrCheck(function (...args) {\r\n // make sure plot is called as a setter\r\n // x1 is not necessarily a number, it can also be an array, a string and a PointArray\r\n return Line.prototype.plot.apply(\r\n this.put(new Line())\r\n , args[0] != null ? args : [ 0, 0, 0, 0 ]\r\n )\r\n })\r\n }\r\n})\r\n\r\nregister(Line, 'Line')\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Container from './Container.js'\r\n\r\nexport default class Marker extends Container {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('marker', node), node)\r\n }\r\n\r\n // Set width of element\r\n width (width) {\r\n return this.attr('markerWidth', width)\r\n }\r\n\r\n // Set height of element\r\n height (height) {\r\n return this.attr('markerHeight', height)\r\n }\r\n\r\n // Set marker refX and refY\r\n ref (x, y) {\r\n return this.attr('refX', x).attr('refY', y)\r\n }\r\n\r\n // Update marker\r\n update (block) {\r\n // remove all content\r\n this.clear()\r\n\r\n // invoke passed block\r\n if (typeof block === 'function') {\r\n block.call(this, this)\r\n }\r\n\r\n return this\r\n }\r\n\r\n // Return the fill id\r\n toString () {\r\n return 'url(#' + this.id() + ')'\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n marker (...args) {\r\n // Create marker element in defs\r\n return this.defs().marker(...args)\r\n }\r\n },\r\n Defs: {\r\n // Create marker\r\n marker: wrapWithAttrCheck(function (width, height, block) {\r\n // Set default viewbox to match the width and height, set ref to cx and cy and set orient to auto\r\n return this.put(new Marker())\r\n .size(width, height)\r\n .ref(width / 2, height / 2)\r\n .viewbox(0, 0, width, height)\r\n .attr('orient', 'auto')\r\n .update(block)\r\n })\r\n },\r\n marker: {\r\n // Create and attach markers\r\n marker (marker, width, height, block) {\r\n var attr = [ 'marker' ]\r\n\r\n // Build attribute name\r\n if (marker !== 'all') attr.push(marker)\r\n attr = attr.join('-')\r\n\r\n // Set marker attribute\r\n marker = arguments[1] instanceof Marker\r\n ? arguments[1]\r\n : this.defs().marker(width, height, block)\r\n\r\n return this.attr(attr, marker)\r\n }\r\n }\r\n})\r\n\r\nregister(Marker, 'Marker')\r\n","import { timeline } from '../modules/core/defaults.js'\r\nimport { extend } from '../utils/adopter.js'\r\n\r\n/***\r\nBase Class\r\n==========\r\nThe base stepper class that will be\r\n***/\r\n\r\nfunction makeSetterGetter (k, f) {\r\n return function (v) {\r\n if (v == null) return this[v]\r\n this[k] = v\r\n if (f) f.call(this)\r\n return this\r\n }\r\n}\r\n\r\nexport const easing = {\r\n '-': function (pos) {\r\n return pos\r\n },\r\n '<>': function (pos) {\r\n return -Math.cos(pos * Math.PI) / 2 + 0.5\r\n },\r\n '>': function (pos) {\r\n return Math.sin(pos * Math.PI / 2)\r\n },\r\n '<': function (pos) {\r\n return -Math.cos(pos * Math.PI / 2) + 1\r\n },\r\n bezier: function (x1, y1, x2, y2) {\r\n // see https://www.w3.org/TR/css-easing-1/#cubic-bezier-algo\r\n return function (t) {\r\n if (t < 0) {\r\n if (x1 > 0) {\r\n return y1 / x1 * t\r\n } else if (x2 > 0) {\r\n return y2 / x2 * t\r\n } else {\r\n return 0\r\n }\r\n } else if (t > 1) {\r\n if (x2 < 1) {\r\n return (1 - y2) / (1 - x2) * t + (y2 - x2) / (1 - x2)\r\n } else if (x1 < 1) {\r\n return (1 - y1) / (1 - x1) * t + (y1 - x1) / (1 - x1)\r\n } else {\r\n return 1\r\n }\r\n } else {\r\n return 3 * t * (1 - t) ** 2 * y1 + 3 * t ** 2 * (1 - t) * y2 + t ** 3\r\n }\r\n }\r\n },\r\n // see https://www.w3.org/TR/css-easing-1/#step-timing-function-algo\r\n steps: function (steps, stepPosition = 'end') {\r\n // deal with \"jump-\" prefix\r\n stepPosition = stepPosition.split('-').reverse()[0]\r\n\r\n let jumps = steps\r\n if (stepPosition === 'none') {\r\n --jumps\r\n } else if (stepPosition === 'both') {\r\n ++jumps\r\n }\r\n\r\n // The beforeFlag is essentially useless\r\n return (t, beforeFlag = false) => {\r\n // Step is called currentStep in referenced url\r\n let step = Math.floor(t * steps)\r\n const jumping = (t * step) % 1 === 0\r\n\r\n if (stepPosition === 'start' || stepPosition === 'both') {\r\n ++step\r\n }\r\n\r\n if (beforeFlag && jumping) {\r\n --step\r\n }\r\n\r\n if (t >= 0 && step < 0) {\r\n step = 0\r\n }\r\n\r\n if (t <= 1 && step > jumps) {\r\n step = jumps\r\n }\r\n\r\n return step / jumps\r\n }\r\n }\r\n}\r\n\r\nexport class Stepper {\r\n done () {\r\n return false\r\n }\r\n}\r\n\r\n/***\r\nEasing Functions\r\n================\r\n***/\r\n\r\nexport class Ease extends Stepper {\r\n constructor (fn) {\r\n super()\r\n this.ease = easing[fn || timeline.ease] || fn\r\n }\r\n\r\n step (from, to, pos) {\r\n if (typeof from !== 'number') {\r\n return pos < 1 ? from : to\r\n }\r\n return from + (to - from) * this.ease(pos)\r\n }\r\n}\r\n\r\n/***\r\nController Types\r\n================\r\n***/\r\n\r\nexport class Controller extends Stepper {\r\n constructor (fn) {\r\n super()\r\n this.stepper = fn\r\n }\r\n\r\n step (current, target, dt, c) {\r\n return this.stepper(current, target, dt, c)\r\n }\r\n\r\n done (c) {\r\n return c.done\r\n }\r\n}\r\n\r\nfunction recalculate () {\r\n // Apply the default parameters\r\n var duration = (this._duration || 500) / 1000\r\n var overshoot = this._overshoot || 0\r\n\r\n // Calculate the PID natural response\r\n var eps = 1e-10\r\n var pi = Math.PI\r\n var os = Math.log(overshoot / 100 + eps)\r\n var zeta = -os / Math.sqrt(pi * pi + os * os)\r\n var wn = 3.9 / (zeta * duration)\r\n\r\n // Calculate the Spring values\r\n this.d = 2 * zeta * wn\r\n this.k = wn * wn\r\n}\r\n\r\nexport class Spring extends Controller {\r\n constructor (duration, overshoot) {\r\n super()\r\n this.duration(duration || 500)\r\n .overshoot(overshoot || 0)\r\n }\r\n\r\n step (current, target, dt, c) {\r\n if (typeof current === 'string') return current\r\n c.done = dt === Infinity\r\n if (dt === Infinity) return target\r\n if (dt === 0) return current\r\n\r\n if (dt > 100) dt = 16\r\n\r\n dt /= 1000\r\n\r\n // Get the previous velocity\r\n var velocity = c.velocity || 0\r\n\r\n // Apply the control to get the new position and store it\r\n var acceleration = -this.d * velocity - this.k * (current - target)\r\n var newPosition = current\r\n + velocity * dt\r\n + acceleration * dt * dt / 2\r\n\r\n // Store the velocity\r\n c.velocity = velocity + acceleration * dt\r\n\r\n // Figure out if we have converged, and if so, pass the value\r\n c.done = Math.abs(target - newPosition) + Math.abs(velocity) < 0.002\r\n return c.done ? target : newPosition\r\n }\r\n}\r\n\r\nextend(Spring, {\r\n duration: makeSetterGetter('_duration', recalculate),\r\n overshoot: makeSetterGetter('_overshoot', recalculate)\r\n})\r\n\r\nexport class PID extends Controller {\r\n constructor (p, i, d, windup) {\r\n super()\r\n\r\n p = p == null ? 0.1 : p\r\n i = i == null ? 0.01 : i\r\n d = d == null ? 0 : d\r\n windup = windup == null ? 1000 : windup\r\n this.p(p).i(i).d(d).windup(windup)\r\n }\r\n\r\n step (current, target, dt, c) {\r\n if (typeof current === 'string') return current\r\n c.done = dt === Infinity\r\n\r\n if (dt === Infinity) return target\r\n if (dt === 0) return current\r\n\r\n var p = target - current\r\n var i = (c.integral || 0) + p * dt\r\n var d = (p - (c.error || 0)) / dt\r\n var windup = this.windup\r\n\r\n // antiwindup\r\n if (windup !== false) {\r\n i = Math.max(-windup, Math.min(i, windup))\r\n }\r\n\r\n c.error = p\r\n c.integral = i\r\n\r\n c.done = Math.abs(p) < 0.001\r\n\r\n return c.done ? target : current + (this.P * p + this.I * i + this.D * d)\r\n }\r\n}\r\n\r\nextend(PID, {\r\n windup: makeSetterGetter('windup'),\r\n p: makeSetterGetter('P'),\r\n i: makeSetterGetter('I'),\r\n d: makeSetterGetter('D')\r\n})\r\n","import {\r\n delimiter,\r\n dots,\r\n hyphen,\r\n isPathLetter,\r\n numbersWithDots,\r\n pathLetters\r\n} from '../modules/core/regex.js'\r\nimport { extend } from '../utils/adopter.js'\r\nimport { subClassArray } from './ArrayPolyfill.js'\r\nimport Point from './Point.js'\r\nimport SVGArray from './SVGArray.js'\r\nimport parser from '../modules/core/parser.js'\r\n\r\nconst PathArray = subClassArray('PathArray', SVGArray)\r\n\r\nexport default PathArray\r\n\r\nexport function pathRegReplace (a, b, c, d) {\r\n return c + d.replace(dots, ' .')\r\n}\r\n\r\nfunction arrayToString (a) {\r\n for (var i = 0, il = a.length, s = ''; i < il; i++) {\r\n s += a[i][0]\r\n\r\n if (a[i][1] != null) {\r\n s += a[i][1]\r\n\r\n if (a[i][2] != null) {\r\n s += ' '\r\n s += a[i][2]\r\n\r\n if (a[i][3] != null) {\r\n s += ' '\r\n s += a[i][3]\r\n s += ' '\r\n s += a[i][4]\r\n\r\n if (a[i][5] != null) {\r\n s += ' '\r\n s += a[i][5]\r\n s += ' '\r\n s += a[i][6]\r\n\r\n if (a[i][7] != null) {\r\n s += ' '\r\n s += a[i][7]\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return s + ' '\r\n}\r\n\r\nconst pathHandlers = {\r\n M: function (c, p, p0) {\r\n p.x = p0.x = c[0]\r\n p.y = p0.y = c[1]\r\n\r\n return [ 'M', p.x, p.y ]\r\n },\r\n L: function (c, p) {\r\n p.x = c[0]\r\n p.y = c[1]\r\n return [ 'L', c[0], c[1] ]\r\n },\r\n H: function (c, p) {\r\n p.x = c[0]\r\n return [ 'H', c[0] ]\r\n },\r\n V: function (c, p) {\r\n p.y = c[0]\r\n return [ 'V', c[0] ]\r\n },\r\n C: function (c, p) {\r\n p.x = c[4]\r\n p.y = c[5]\r\n return [ 'C', c[0], c[1], c[2], c[3], c[4], c[5] ]\r\n },\r\n S: function (c, p) {\r\n p.x = c[2]\r\n p.y = c[3]\r\n return [ 'S', c[0], c[1], c[2], c[3] ]\r\n },\r\n Q: function (c, p) {\r\n p.x = c[2]\r\n p.y = c[3]\r\n return [ 'Q', c[0], c[1], c[2], c[3] ]\r\n },\r\n T: function (c, p) {\r\n p.x = c[0]\r\n p.y = c[1]\r\n return [ 'T', c[0], c[1] ]\r\n },\r\n Z: function (c, p, p0) {\r\n p.x = p0.x\r\n p.y = p0.y\r\n return [ 'Z' ]\r\n },\r\n A: function (c, p) {\r\n p.x = c[5]\r\n p.y = c[6]\r\n return [ 'A', c[0], c[1], c[2], c[3], c[4], c[5], c[6] ]\r\n }\r\n}\r\n\r\nconst mlhvqtcsaz = 'mlhvqtcsaz'.split('')\r\n\r\nfor (var i = 0, il = mlhvqtcsaz.length; i < il; ++i) {\r\n pathHandlers[mlhvqtcsaz[i]] = (function (i) {\r\n return function (c, p, p0) {\r\n if (i === 'H') c[0] = c[0] + p.x\r\n else if (i === 'V') c[0] = c[0] + p.y\r\n else if (i === 'A') {\r\n c[5] = c[5] + p.x\r\n c[6] = c[6] + p.y\r\n } else {\r\n for (var j = 0, jl = c.length; j < jl; ++j) {\r\n c[j] = c[j] + (j % 2 ? p.y : p.x)\r\n }\r\n }\r\n\r\n return pathHandlers[i](c, p, p0)\r\n }\r\n })(mlhvqtcsaz[i].toUpperCase())\r\n}\r\n\r\nextend(PathArray, {\r\n // Convert array to string\r\n toString () {\r\n return arrayToString(this)\r\n },\r\n\r\n // Move path string\r\n move (x, y) {\r\n // get bounding box of current situation\r\n var box = this.bbox()\r\n\r\n // get relative offset\r\n x -= box.x\r\n y -= box.y\r\n\r\n if (!isNaN(x) && !isNaN(y)) {\r\n // move every point\r\n for (var l, i = this.length - 1; i >= 0; i--) {\r\n l = this[i][0]\r\n\r\n if (l === 'M' || l === 'L' || l === 'T') {\r\n this[i][1] += x\r\n this[i][2] += y\r\n } else if (l === 'H') {\r\n this[i][1] += x\r\n } else if (l === 'V') {\r\n this[i][1] += y\r\n } else if (l === 'C' || l === 'S' || l === 'Q') {\r\n this[i][1] += x\r\n this[i][2] += y\r\n this[i][3] += x\r\n this[i][4] += y\r\n\r\n if (l === 'C') {\r\n this[i][5] += x\r\n this[i][6] += y\r\n }\r\n } else if (l === 'A') {\r\n this[i][6] += x\r\n this[i][7] += y\r\n }\r\n }\r\n }\r\n\r\n return this\r\n },\r\n\r\n // Resize path string\r\n size (width, height) {\r\n // get bounding box of current situation\r\n var box = this.bbox()\r\n var i, l\r\n\r\n // If the box width or height is 0 then we ignore\r\n // transformations on the respective axis\r\n box.width = box.width === 0 ? 1 : box.width\r\n box.height = box.height === 0 ? 1 : box.height\r\n\r\n // recalculate position of all points according to new size\r\n for (i = this.length - 1; i >= 0; i--) {\r\n l = this[i][0]\r\n\r\n if (l === 'M' || l === 'L' || l === 'T') {\r\n this[i][1] = ((this[i][1] - box.x) * width) / box.width + box.x\r\n this[i][2] = ((this[i][2] - box.y) * height) / box.height + box.y\r\n } else if (l === 'H') {\r\n this[i][1] = ((this[i][1] - box.x) * width) / box.width + box.x\r\n } else if (l === 'V') {\r\n this[i][1] = ((this[i][1] - box.y) * height) / box.height + box.y\r\n } else if (l === 'C' || l === 'S' || l === 'Q') {\r\n this[i][1] = ((this[i][1] - box.x) * width) / box.width + box.x\r\n this[i][2] = ((this[i][2] - box.y) * height) / box.height + box.y\r\n this[i][3] = ((this[i][3] - box.x) * width) / box.width + box.x\r\n this[i][4] = ((this[i][4] - box.y) * height) / box.height + box.y\r\n\r\n if (l === 'C') {\r\n this[i][5] = ((this[i][5] - box.x) * width) / box.width + box.x\r\n this[i][6] = ((this[i][6] - box.y) * height) / box.height + box.y\r\n }\r\n } else if (l === 'A') {\r\n // resize radii\r\n this[i][1] = (this[i][1] * width) / box.width\r\n this[i][2] = (this[i][2] * height) / box.height\r\n\r\n // move position values\r\n this[i][6] = ((this[i][6] - box.x) * width) / box.width + box.x\r\n this[i][7] = ((this[i][7] - box.y) * height) / box.height + box.y\r\n }\r\n }\r\n\r\n return this\r\n },\r\n\r\n // Test if the passed path array use the same path data commands as this path array\r\n equalCommands (pathArray) {\r\n var i, il, equalCommands\r\n\r\n pathArray = new PathArray(pathArray)\r\n\r\n equalCommands = this.length === pathArray.length\r\n for (i = 0, il = this.length; equalCommands && i < il; i++) {\r\n equalCommands = this[i][0] === pathArray[i][0]\r\n }\r\n\r\n return equalCommands\r\n },\r\n\r\n // Make path array morphable\r\n morph (pathArray) {\r\n pathArray = new PathArray(pathArray)\r\n\r\n if (this.equalCommands(pathArray)) {\r\n this.destination = pathArray\r\n } else {\r\n this.destination = null\r\n }\r\n\r\n return this\r\n },\r\n\r\n // Get morphed path array at given position\r\n at (pos) {\r\n // make sure a destination is defined\r\n if (!this.destination) return this\r\n\r\n var sourceArray = this\r\n var destinationArray = this.destination.value\r\n var array = []\r\n var pathArray = new PathArray()\r\n var i, il, j, jl\r\n\r\n // Animate has specified in the SVG spec\r\n // See: https://www.w3.org/TR/SVG11/paths.html#PathElement\r\n for (i = 0, il = sourceArray.length; i < il; i++) {\r\n array[i] = [ sourceArray[i][0] ]\r\n for (j = 1, jl = sourceArray[i].length; j < jl; j++) {\r\n array[i][j] = sourceArray[i][j] + (destinationArray[i][j] - sourceArray[i][j]) * pos\r\n }\r\n // For the two flags of the elliptical arc command, the SVG spec say:\r\n // Flags and booleans are interpolated as fractions between zero and one, with any non-zero value considered to be a value of one/true\r\n // Elliptical arc command as an array followed by corresponding indexes:\r\n // ['A', rx, ry, x-axis-rotation, large-arc-flag, sweep-flag, x, y]\r\n // 0 1 2 3 4 5 6 7\r\n if (array[i][0] === 'A') {\r\n array[i][4] = +(array[i][4] !== 0)\r\n array[i][5] = +(array[i][5] !== 0)\r\n }\r\n }\r\n\r\n // Directly modify the value of a path array, this is done this way for performance\r\n pathArray.value = array\r\n return pathArray\r\n },\r\n\r\n // Absolutize and parse path to array\r\n parse (array = [ [ 'M', 0, 0 ] ]) {\r\n // if it's already a patharray, no need to parse it\r\n if (array instanceof PathArray) return array\r\n\r\n // prepare for parsing\r\n var s\r\n var paramCnt = { M: 2, L: 2, H: 1, V: 1, C: 6, S: 4, Q: 4, T: 2, A: 7, Z: 0 }\r\n\r\n if (typeof array === 'string') {\r\n array = array\r\n .replace(numbersWithDots, pathRegReplace) // convert 45.123.123 to 45.123 .123\r\n .replace(pathLetters, ' $& ') // put some room between letters and numbers\r\n .replace(hyphen, '$1 -') // add space before hyphen\r\n .trim() // trim\r\n .split(delimiter) // split into array\r\n } else {\r\n array = array.reduce(function (prev, curr) {\r\n return [].concat.call(prev, curr)\r\n }, [])\r\n }\r\n\r\n // array now is an array containing all parts of a path e.g. ['M', '0', '0', 'L', '30', '30' ...]\r\n var result = []\r\n var p = new Point()\r\n var p0 = new Point()\r\n var index = 0\r\n var len = array.length\r\n\r\n do {\r\n // Test if we have a path letter\r\n if (isPathLetter.test(array[index])) {\r\n s = array[index]\r\n ++index\r\n // If last letter was a move command and we got no new, it defaults to [L]ine\r\n } else if (s === 'M') {\r\n s = 'L'\r\n } else if (s === 'm') {\r\n s = 'l'\r\n }\r\n\r\n result.push(pathHandlers[s].call(null,\r\n array.slice(index, (index = index + paramCnt[s.toUpperCase()])).map(parseFloat),\r\n p, p0\r\n )\r\n )\r\n } while (len > index)\r\n\r\n return result\r\n },\r\n\r\n // Get bounding box of path\r\n bbox () {\r\n parser().path.setAttribute('d', this.toString())\r\n return parser.nodes.path.getBBox()\r\n }\r\n})\r\n","import { Ease } from './Controller.js'\r\nimport {\r\n delimiter,\r\n numberAndUnit,\r\n pathLetters\r\n} from '../modules/core/regex.js'\r\nimport { extend } from '../utils/adopter.js'\r\nimport Color from '../types/Color.js'\r\nimport PathArray from '../types/PathArray.js'\r\nimport SVGArray from '../types/SVGArray.js'\r\nimport SVGNumber from '../types/SVGNumber.js'\r\n\r\nexport default class Morphable {\r\n constructor (stepper) {\r\n this._stepper = stepper || new Ease('-')\r\n\r\n this._from = null\r\n this._to = null\r\n this._type = null\r\n this._context = null\r\n this._morphObj = null\r\n }\r\n\r\n from (val) {\r\n if (val == null) {\r\n return this._from\r\n }\r\n\r\n this._from = this._set(val)\r\n return this\r\n }\r\n\r\n to (val) {\r\n if (val == null) {\r\n return this._to\r\n }\r\n\r\n this._to = this._set(val)\r\n return this\r\n }\r\n\r\n type (type) {\r\n // getter\r\n if (type == null) {\r\n return this._type\r\n }\r\n\r\n // setter\r\n this._type = type\r\n return this\r\n }\r\n\r\n _set (value) {\r\n if (!this._type) {\r\n var type = typeof value\r\n\r\n if (type === 'number') {\r\n this.type(SVGNumber)\r\n } else if (type === 'string') {\r\n if (Color.isColor(value)) {\r\n this.type(Color)\r\n } else if (delimiter.test(value)) {\r\n this.type(pathLetters.test(value)\r\n ? PathArray\r\n : SVGArray\r\n )\r\n } else if (numberAndUnit.test(value)) {\r\n this.type(SVGNumber)\r\n } else {\r\n this.type(NonMorphable)\r\n }\r\n } else if (morphableTypes.indexOf(value.constructor) > -1) {\r\n this.type(value.constructor)\r\n } else if (Array.isArray(value)) {\r\n this.type(SVGArray)\r\n } else if (type === 'object') {\r\n this.type(ObjectBag)\r\n } else {\r\n this.type(NonMorphable)\r\n }\r\n }\r\n\r\n var result = (new this._type(value))\r\n if (this._type === Color) {\r\n result = this._to ? result[this._to[4]]()\r\n : this._from ? result[this._from[4]]()\r\n : result\r\n }\r\n result = result.toArray()\r\n\r\n this._morphObj = this._morphObj || new this._type()\r\n this._context = this._context\r\n || Array.apply(null, Array(result.length))\r\n .map(Object)\r\n .map(function (o) {\r\n o.done = true\r\n return o\r\n })\r\n return result\r\n }\r\n\r\n stepper (stepper) {\r\n if (stepper == null) return this._stepper\r\n this._stepper = stepper\r\n return this\r\n }\r\n\r\n done () {\r\n var complete = this._context\r\n .map(this._stepper.done)\r\n .reduce(function (last, curr) {\r\n return last && curr\r\n }, true)\r\n return complete\r\n }\r\n\r\n at (pos) {\r\n var _this = this\r\n\r\n return this._morphObj.fromArray(\r\n this._from.map(function (i, index) {\r\n return _this._stepper.step(i, _this._to[index], pos, _this._context[index], _this._context)\r\n })\r\n )\r\n }\r\n}\r\n\r\nexport class NonMorphable {\r\n constructor (...args) {\r\n this.init(...args)\r\n }\r\n\r\n init (val) {\r\n val = Array.isArray(val) ? val[0] : val\r\n this.value = val\r\n return this\r\n }\r\n\r\n valueOf () {\r\n return this.value\r\n }\r\n\r\n toArray () {\r\n return [ this.value ]\r\n }\r\n}\r\n\r\nexport class TransformBag {\r\n constructor (...args) {\r\n this.init(...args)\r\n }\r\n\r\n init (obj) {\r\n if (Array.isArray(obj)) {\r\n obj = {\r\n scaleX: obj[0],\r\n scaleY: obj[1],\r\n shear: obj[2],\r\n rotate: obj[3],\r\n translateX: obj[4],\r\n translateY: obj[5],\r\n originX: obj[6],\r\n originY: obj[7]\r\n }\r\n }\r\n\r\n Object.assign(this, TransformBag.defaults, obj)\r\n return this\r\n }\r\n\r\n toArray () {\r\n var v = this\r\n\r\n return [\r\n v.scaleX,\r\n v.scaleY,\r\n v.shear,\r\n v.rotate,\r\n v.translateX,\r\n v.translateY,\r\n v.originX,\r\n v.originY\r\n ]\r\n }\r\n}\r\n\r\nTransformBag.defaults = {\r\n scaleX: 1,\r\n scaleY: 1,\r\n shear: 0,\r\n rotate: 0,\r\n translateX: 0,\r\n translateY: 0,\r\n originX: 0,\r\n originY: 0\r\n}\r\n\r\nexport class ObjectBag {\r\n constructor (...args) {\r\n this.init(...args)\r\n }\r\n\r\n init (objOrArr) {\r\n this.values = []\r\n\r\n if (Array.isArray(objOrArr)) {\r\n this.values = objOrArr\r\n return\r\n }\r\n\r\n objOrArr = objOrArr || {}\r\n var entries = []\r\n\r\n for (const i in objOrArr) {\r\n entries.push([ i, objOrArr[i] ])\r\n }\r\n\r\n entries.sort((a, b) => {\r\n return a[0] - b[0]\r\n })\r\n\r\n this.values = entries.reduce((last, curr) => last.concat(curr), [])\r\n return this\r\n }\r\n\r\n valueOf () {\r\n var obj = {}\r\n var arr = this.values\r\n\r\n for (var i = 0, len = arr.length; i < len; i += 2) {\r\n obj[arr[i]] = arr[i + 1]\r\n }\r\n\r\n return obj\r\n }\r\n\r\n toArray () {\r\n return this.values\r\n }\r\n}\r\n\r\nconst morphableTypes = [\r\n NonMorphable,\r\n TransformBag,\r\n ObjectBag\r\n]\r\n\r\nexport function registerMorphableType (type = []) {\r\n morphableTypes.push(...[].concat(type))\r\n}\r\n\r\nexport function makeMorphable () {\r\n extend(morphableTypes, {\r\n to (val) {\r\n return new Morphable()\r\n .type(this.constructor)\r\n .from(this.valueOf())\r\n .to(val)\r\n },\r\n fromArray (arr) {\r\n this.init(arr)\r\n return this\r\n }\r\n })\r\n}\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { proportionalSize } from '../utils/utils.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport PathArray from '../types/PathArray.js'\r\nimport Shape from './Shape.js'\r\nimport baseFind from '../modules/core/selector.js'\r\n\r\nexport default class Path extends Shape {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('path', node), node)\r\n }\r\n\r\n // Get array\r\n array () {\r\n return this._array || (this._array = new PathArray(this.attr('d')))\r\n }\r\n\r\n // Plot new path\r\n plot (d) {\r\n return (d == null) ? this.array()\r\n : this.clear().attr('d', typeof d === 'string' ? d : (this._array = new PathArray(d)))\r\n }\r\n\r\n // Clear array cache\r\n clear () {\r\n delete this._array\r\n return this\r\n }\r\n\r\n // Move by left top corner\r\n move (x, y) {\r\n return this.attr('d', this.array().move(x, y))\r\n }\r\n\r\n // Move by left top corner over x-axis\r\n x (x) {\r\n return x == null ? this.bbox().x : this.move(x, this.bbox().y)\r\n }\r\n\r\n // Move by left top corner over y-axis\r\n y (y) {\r\n return y == null ? this.bbox().y : this.move(this.bbox().x, y)\r\n }\r\n\r\n // Set element size to given width and height\r\n size (width, height) {\r\n var p = proportionalSize(this, width, height)\r\n return this.attr('d', this.array().size(p.width, p.height))\r\n }\r\n\r\n // Set width of element\r\n width (width) {\r\n return width == null ? this.bbox().width : this.size(width, this.bbox().height)\r\n }\r\n\r\n // Set height of element\r\n height (height) {\r\n return height == null ? this.bbox().height : this.size(this.bbox().width, height)\r\n }\r\n\r\n targets () {\r\n return baseFind('svg textpath [href*=\"' + this.id() + '\"]')\r\n }\r\n}\r\n\r\n// Define morphable array\r\nPath.prototype.MorphArray = PathArray\r\n\r\n// Add parent method\r\nregisterMethods({\r\n Container: {\r\n // Create a wrapped path element\r\n path: wrapWithAttrCheck(function (d) {\r\n // make sure plot is called as a setter\r\n return this.put(new Path()).plot(d || new PathArray())\r\n })\r\n }\r\n})\r\n\r\nregister(Path, 'Path')\r\n","import { proportionalSize } from '../../utils/utils.js'\r\nimport PointArray from '../../types/PointArray.js'\r\n\r\n// Get array\r\nexport function array () {\r\n return this._array || (this._array = new PointArray(this.attr('points')))\r\n}\r\n\r\n// Plot new path\r\nexport function plot (p) {\r\n return (p == null) ? this.array()\r\n : this.clear().attr('points', typeof p === 'string' ? p\r\n : (this._array = new PointArray(p)))\r\n}\r\n\r\n// Clear array cache\r\nexport function clear () {\r\n delete this._array\r\n return this\r\n}\r\n\r\n// Move by left top corner\r\nexport function move (x, y) {\r\n return this.attr('points', this.array().move(x, y))\r\n}\r\n\r\n// Set element size to given width and height\r\nexport function size (width, height) {\r\n const p = proportionalSize(this, width, height)\r\n return this.attr('points', this.array().size(p.width, p.height))\r\n}\r\n","import {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport PointArray from '../types/PointArray.js'\r\nimport Shape from './Shape.js'\r\nimport * as pointed from '../modules/core/pointed.js'\r\nimport * as poly from '../modules/core/poly.js'\r\n\r\nexport default class Polygon extends Shape {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('polygon', node), node)\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create a wrapped polygon element\r\n polygon: wrapWithAttrCheck(function (p) {\r\n // make sure plot is called as a setter\r\n return this.put(new Polygon()).plot(p || new PointArray())\r\n })\r\n }\r\n})\r\n\r\nextend(Polygon, pointed)\r\nextend(Polygon, poly)\r\nregister(Polygon, 'Polygon')\r\n","import {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport PointArray from '../types/PointArray.js'\r\nimport Shape from './Shape.js'\r\nimport * as pointed from '../modules/core/pointed.js'\r\nimport * as poly from '../modules/core/poly.js'\r\n\r\nexport default class Polyline extends Shape {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('polyline', node), node)\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create a wrapped polygon element\r\n polyline: wrapWithAttrCheck(function (p) {\r\n // make sure plot is called as a setter\r\n return this.put(new Polyline()).plot(p || new PointArray())\r\n })\r\n }\r\n})\r\n\r\nextend(Polyline, pointed)\r\nextend(Polyline, poly)\r\nregister(Polyline, 'Polyline')\r\n","import {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport { rx, ry } from '../modules/core/circled.js'\r\nimport Shape from './Shape.js'\r\n\r\nexport default class Rect extends Shape {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('rect', node), node)\r\n }\r\n}\r\n\r\nextend(Rect, { rx, ry })\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create a rect element\r\n rect: wrapWithAttrCheck(function (width, height) {\r\n return this.put(new Rect()).size(width, height)\r\n })\r\n }\r\n})\r\n\r\nregister(Rect, 'Rect')\r\n","export default class Queue {\r\n constructor () {\r\n this._first = null\r\n this._last = null\r\n }\r\n\r\n push (value) {\r\n // An item stores an id and the provided value\r\n var item = value.next ? value : { value: value, next: null, prev: null }\r\n\r\n // Deal with the queue being empty or populated\r\n if (this._last) {\r\n item.prev = this._last\r\n this._last.next = item\r\n this._last = item\r\n } else {\r\n this._last = item\r\n this._first = item\r\n }\r\n\r\n // Return the current item\r\n return item\r\n }\r\n\r\n shift () {\r\n // Check if we have a value\r\n var remove = this._first\r\n if (!remove) return null\r\n\r\n // If we do, remove it and relink things\r\n this._first = remove.next\r\n if (this._first) this._first.prev = null\r\n this._last = this._first ? this._last : null\r\n return remove.value\r\n }\r\n\r\n // Shows us the first item in the list\r\n first () {\r\n return this._first && this._first.value\r\n }\r\n\r\n // Shows us the last item in the list\r\n last () {\r\n return this._last && this._last.value\r\n }\r\n\r\n // Removes the item that was returned from the push\r\n remove (item) {\r\n // Relink the previous item\r\n if (item.prev) item.prev.next = item.next\r\n if (item.next) item.next.prev = item.prev\r\n if (item === this._last) this._last = item.prev\r\n if (item === this._first) this._first = item.next\r\n\r\n // Invalidate item\r\n item.prev = null\r\n item.next = null\r\n }\r\n}\r\n","import { globals } from '../utils/window.js'\r\nimport Queue from './Queue.js'\r\n\r\nconst Animator = {\r\n nextDraw: null,\r\n frames: new Queue(),\r\n timeouts: new Queue(),\r\n immediates: new Queue(),\r\n timer: () => globals.window.performance || globals.window.Date,\r\n transforms: [],\r\n\r\n frame (fn) {\r\n // Store the node\r\n var node = Animator.frames.push({ run: fn })\r\n\r\n // Request an animation frame if we don't have one\r\n if (Animator.nextDraw === null) {\r\n Animator.nextDraw = globals.window.requestAnimationFrame(Animator._draw)\r\n }\r\n\r\n // Return the node so we can remove it easily\r\n return node\r\n },\r\n\r\n timeout (fn, delay) {\r\n delay = delay || 0\r\n\r\n // Work out when the event should fire\r\n var time = Animator.timer().now() + delay\r\n\r\n // Add the timeout to the end of the queue\r\n var node = Animator.timeouts.push({ run: fn, time: time })\r\n\r\n // Request another animation frame if we need one\r\n if (Animator.nextDraw === null) {\r\n Animator.nextDraw = globals.window.requestAnimationFrame(Animator._draw)\r\n }\r\n\r\n return node\r\n },\r\n\r\n immediate (fn) {\r\n // Add the immediate fn to the end of the queue\r\n var node = Animator.immediates.push(fn)\r\n // Request another animation frame if we need one\r\n if (Animator.nextDraw === null) {\r\n Animator.nextDraw = globals.window.requestAnimationFrame(Animator._draw)\r\n }\r\n\r\n return node\r\n },\r\n\r\n cancelFrame (node) {\r\n node != null && Animator.frames.remove(node)\r\n },\r\n\r\n clearTimeout (node) {\r\n node != null && Animator.timeouts.remove(node)\r\n },\r\n\r\n cancelImmediate (node) {\r\n node != null && Animator.immediates.remove(node)\r\n },\r\n\r\n _draw (now) {\r\n // Run all the timeouts we can run, if they are not ready yet, add them\r\n // to the end of the queue immediately! (bad timeouts!!! [sarcasm])\r\n var nextTimeout = null\r\n var lastTimeout = Animator.timeouts.last()\r\n while ((nextTimeout = Animator.timeouts.shift())) {\r\n // Run the timeout if its time, or push it to the end\r\n if (now >= nextTimeout.time) {\r\n nextTimeout.run()\r\n } else {\r\n Animator.timeouts.push(nextTimeout)\r\n }\r\n\r\n // If we hit the last item, we should stop shifting out more items\r\n if (nextTimeout === lastTimeout) break\r\n }\r\n\r\n // Run all of the animation frames\r\n var nextFrame = null\r\n var lastFrame = Animator.frames.last()\r\n while ((nextFrame !== lastFrame) && (nextFrame = Animator.frames.shift())) {\r\n nextFrame.run(now)\r\n }\r\n\r\n var nextImmediate = null\r\n while ((nextImmediate = Animator.immediates.shift())) {\r\n nextImmediate()\r\n }\r\n\r\n // If we have remaining timeouts or frames, draw until we don't anymore\r\n Animator.nextDraw = Animator.timeouts.first() || Animator.frames.first()\r\n ? globals.window.requestAnimationFrame(Animator._draw)\r\n : null\r\n }\r\n}\r\n\r\nexport default Animator\r\n","import { globals } from '../utils/window.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Animator from './Animator.js'\r\nimport EventTarget from '../types/EventTarget.js'\r\n\r\nvar makeSchedule = function (runnerInfo) {\r\n var start = runnerInfo.start\r\n var duration = runnerInfo.runner.duration()\r\n var end = start + duration\r\n return { start: start, duration: duration, end: end, runner: runnerInfo.runner }\r\n}\r\n\r\nconst defaultSource = function () {\r\n const w = globals.window\r\n return (w.performance || w.Date).now()\r\n}\r\n\r\nexport default class Timeline extends EventTarget {\r\n // Construct a new timeline on the given element\r\n constructor (timeSource = defaultSource) {\r\n super()\r\n\r\n this._timeSource = timeSource\r\n\r\n // Store the timing variables\r\n this._startTime = 0\r\n this._speed = 1.0\r\n\r\n // Determines how long a runner is hold in memory. Can be a dt or true/false\r\n this._persist = 0\r\n\r\n // Keep track of the running animations and their starting parameters\r\n this._nextFrame = null\r\n this._paused = true\r\n this._runners = []\r\n this._runnerIds = []\r\n this._lastRunnerId = -1\r\n this._time = 0\r\n this._lastSourceTime = 0\r\n this._lastStepTime = 0\r\n\r\n // Make sure that step is always called in class context\r\n this._step = this._stepFn.bind(this, false)\r\n this._stepImmediate = this._stepFn.bind(this, true)\r\n }\r\n\r\n // schedules a runner on the timeline\r\n schedule (runner, delay, when) {\r\n if (runner == null) {\r\n return this._runners.map(makeSchedule)\r\n }\r\n\r\n // The start time for the next animation can either be given explicitly,\r\n // derived from the current timeline time or it can be relative to the\r\n // last start time to chain animations direclty\r\n\r\n var absoluteStartTime = 0\r\n var endTime = this.getEndTime()\r\n delay = delay || 0\r\n\r\n // Work out when to start the animation\r\n if (when == null || when === 'last' || when === 'after') {\r\n // Take the last time and increment\r\n absoluteStartTime = endTime\r\n } else if (when === 'absolute' || when === 'start') {\r\n absoluteStartTime = delay\r\n delay = 0\r\n } else if (when === 'now') {\r\n absoluteStartTime = this._time\r\n } else if (when === 'relative') {\r\n const runnerInfo = this._runners[runner.id]\r\n if (runnerInfo) {\r\n absoluteStartTime = runnerInfo.start + delay\r\n delay = 0\r\n }\r\n } else {\r\n throw new Error('Invalid value for the \"when\" parameter')\r\n }\r\n\r\n // Manage runner\r\n runner.unschedule()\r\n runner.timeline(this)\r\n\r\n const persist = runner.persist()\r\n const runnerInfo = {\r\n persist: persist === null ? this._persist : persist,\r\n start: absoluteStartTime + delay,\r\n runner\r\n }\r\n\r\n this._lastRunnerId = runner.id\r\n\r\n this._runners.push(runnerInfo)\r\n this._runners.sort((a, b) => a.start - b.start)\r\n this._runnerIds = this._runners.map(info => info.runner.id)\r\n\r\n this.updateTime()._continue()\r\n return this\r\n }\r\n\r\n // Remove the runner from this timeline\r\n unschedule (runner) {\r\n var index = this._runnerIds.indexOf(runner.id)\r\n if (index < 0) return this\r\n\r\n this._runners.splice(index, 1)\r\n this._runnerIds.splice(index, 1)\r\n\r\n runner.timeline(null)\r\n return this\r\n }\r\n\r\n // Calculates the end of the timeline\r\n getEndTime () {\r\n var lastRunnerInfo = this._runners[this._runnerIds.indexOf(this._lastRunnerId)]\r\n var lastDuration = lastRunnerInfo ? lastRunnerInfo.runner.duration() : 0\r\n var lastStartTime = lastRunnerInfo ? lastRunnerInfo.start : 0\r\n return lastStartTime + lastDuration\r\n }\r\n\r\n getEndTimeOfTimeline () {\r\n let lastEndTime = 0\r\n for (var i = 0; i < this._runners.length; i++) {\r\n const runnerInfo = this._runners[i]\r\n var duration = runnerInfo ? runnerInfo.runner.duration() : 0\r\n var startTime = runnerInfo ? runnerInfo.start : 0\r\n const endTime = startTime + duration\r\n if (endTime > lastEndTime) {\r\n lastEndTime = endTime\r\n }\r\n }\r\n return lastEndTime\r\n }\r\n\r\n // Makes sure, that after pausing the time doesn't jump\r\n updateTime () {\r\n if (!this.active()) {\r\n this._lastSourceTime = this._timeSource()\r\n }\r\n return this\r\n }\r\n\r\n play () {\r\n // Now make sure we are not paused and continue the animation\r\n this._paused = false\r\n return this.updateTime()._continue()\r\n }\r\n\r\n pause () {\r\n this._paused = true\r\n return this._continue()\r\n }\r\n\r\n stop () {\r\n // Go to start and pause\r\n this.time(0)\r\n return this.pause()\r\n }\r\n\r\n finish () {\r\n // Go to end and pause\r\n this.time(this.getEndTimeOfTimeline() + 1)\r\n return this.pause()\r\n }\r\n\r\n speed (speed) {\r\n if (speed == null) return this._speed\r\n this._speed = speed\r\n return this\r\n }\r\n\r\n reverse (yes) {\r\n var currentSpeed = this.speed()\r\n if (yes == null) return this.speed(-currentSpeed)\r\n\r\n var positive = Math.abs(currentSpeed)\r\n return this.speed(yes ? positive : -positive)\r\n }\r\n\r\n seek (dt) {\r\n return this.time(this._time + dt)\r\n }\r\n\r\n time (time) {\r\n if (time == null) return this._time\r\n this._time = time\r\n return this._continue(true)\r\n }\r\n\r\n persist (dtOrForever) {\r\n if (dtOrForever == null) return this._persist\r\n this._persist = dtOrForever\r\n return this\r\n }\r\n\r\n source (fn) {\r\n if (fn == null) return this._timeSource\r\n this._timeSource = fn\r\n return this\r\n }\r\n\r\n _stepFn (immediateStep = false) {\r\n // Get the time delta from the last time and update the time\r\n var time = this._timeSource()\r\n var dtSource = time - this._lastSourceTime\r\n\r\n if (immediateStep) dtSource = 0\r\n\r\n var dtTime = this._speed * dtSource + (this._time - this._lastStepTime)\r\n this._lastSourceTime = time\r\n\r\n // Only update the time if we use the timeSource.\r\n // Otherwise use the current time\r\n if (!immediateStep) {\r\n // Update the time\r\n this._time += dtTime\r\n this._time = this._time < 0 ? 0 : this._time\r\n }\r\n this._lastStepTime = this._time\r\n this.fire('time', this._time)\r\n\r\n // This is for the case that the timeline was seeked so that the time\r\n // is now before the startTime of the runner. Thats why we need to set\r\n // the runner to position 0\r\n\r\n // FIXME:\r\n // However, reseting in insertion order leads to bugs. Considering the case,\r\n // where 2 runners change the same attriute but in different times,\r\n // reseting both of them will lead to the case where the later defined\r\n // runner always wins the reset even if the other runner started earlier\r\n // and therefore should win the attribute battle\r\n // this can be solved by reseting them backwards\r\n for (var k = this._runners.length; k--;) {\r\n // Get and run the current runner and ignore it if its inactive\r\n const runnerInfo = this._runners[k]\r\n const runner = runnerInfo.runner\r\n\r\n // Make sure that we give the actual difference\r\n // between runner start time and now\r\n const dtToStart = this._time - runnerInfo.start\r\n\r\n // Dont run runner if not started yet\r\n // and try to reset it\r\n if (dtToStart <= 0) {\r\n runner.reset()\r\n }\r\n }\r\n\r\n // Run all of the runners directly\r\n var runnersLeft = false\r\n for (var i = 0, len = this._runners.length; i < len; i++) {\r\n // Get and run the current runner and ignore it if its inactive\r\n const runnerInfo = this._runners[i]\r\n const runner = runnerInfo.runner\r\n let dt = dtTime\r\n\r\n // Make sure that we give the actual difference\r\n // between runner start time and now\r\n const dtToStart = this._time - runnerInfo.start\r\n\r\n // Dont run runner if not started yet\r\n if (dtToStart <= 0) {\r\n runnersLeft = true\r\n continue\r\n } else if (dtToStart < dt) {\r\n // Adjust dt to make sure that animation is on point\r\n dt = dtToStart\r\n }\r\n\r\n if (!runner.active()) continue\r\n\r\n // If this runner is still going, signal that we need another animation\r\n // frame, otherwise, remove the completed runner\r\n var finished = runner.step(dt).done\r\n if (!finished) {\r\n runnersLeft = true\r\n // continue\r\n } else if (runnerInfo.persist !== true) {\r\n // runner is finished. And runner might get removed\r\n var endTime = runner.duration() - runner.time() + this._time\r\n\r\n if (endTime + runnerInfo.persist < this._time) {\r\n // Delete runner and correct index\r\n runner.unschedule()\r\n --i\r\n --len\r\n }\r\n }\r\n }\r\n\r\n // Basically: we continue when there are runners right from us in time\r\n // when -->, and when runners are left from us when <--\r\n if ((runnersLeft && !(this._speed < 0 && this._time === 0)) || (this._runnerIds.length && this._speed < 0 && this._time > 0)) {\r\n this._continue()\r\n } else {\r\n this.pause()\r\n this.fire('finished')\r\n }\r\n\r\n return this\r\n }\r\n\r\n // Checks if we are running and continues the animation\r\n _continue (immediateStep = false) {\r\n Animator.cancelFrame(this._nextFrame)\r\n this._nextFrame = null\r\n\r\n if (immediateStep) return this._stepImmediate()\r\n if (this._paused) return this\r\n\r\n this._nextFrame = Animator.frame(this._step)\r\n return this\r\n }\r\n\r\n active () {\r\n return !!this._nextFrame\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Element: {\r\n timeline: function (timeline) {\r\n if (timeline == null) {\r\n this._timeline = (this._timeline || new Timeline())\r\n return this._timeline\r\n } else {\r\n this._timeline = timeline\r\n return this\r\n }\r\n }\r\n }\r\n})\r\n","import { Controller, Ease, Stepper } from './Controller.js'\r\nimport { extend, register } from '../utils/adopter.js'\r\nimport { from, to } from '../modules/core/gradiented.js'\r\nimport { getOrigin } from '../utils/utils.js'\r\nimport { noop, timeline } from '../modules/core/defaults.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport { rx, ry } from '../modules/core/circled.js'\r\nimport Animator from './Animator.js'\r\nimport Box from '../types/Box.js'\r\nimport EventTarget from '../types/EventTarget.js'\r\nimport Matrix from '../types/Matrix.js'\r\nimport Morphable, { TransformBag } from './Morphable.js'\r\nimport Point from '../types/Point.js'\r\nimport SVGNumber from '../types/SVGNumber.js'\r\nimport Timeline from './Timeline.js'\r\n\r\nexport default class Runner extends EventTarget {\r\n constructor (options) {\r\n super()\r\n\r\n // Store a unique id on the runner, so that we can identify it later\r\n this.id = Runner.id++\r\n\r\n // Ensure a default value\r\n options = options == null\r\n ? timeline.duration\r\n : options\r\n\r\n // Ensure that we get a controller\r\n options = typeof options === 'function'\r\n ? new Controller(options)\r\n : options\r\n\r\n // Declare all of the variables\r\n this._element = null\r\n this._timeline = null\r\n this.done = false\r\n this._queue = []\r\n\r\n // Work out the stepper and the duration\r\n this._duration = typeof options === 'number' && options\r\n this._isDeclarative = options instanceof Controller\r\n this._stepper = this._isDeclarative ? options : new Ease()\r\n\r\n // We copy the current values from the timeline because they can change\r\n this._history = {}\r\n\r\n // Store the state of the runner\r\n this.enabled = true\r\n this._time = 0\r\n this._lastTime = 0\r\n\r\n // At creation, the runner is in reseted state\r\n this._reseted = true\r\n\r\n // Save transforms applied to this runner\r\n this.transforms = new Matrix()\r\n this.transformId = 1\r\n\r\n // Looping variables\r\n this._haveReversed = false\r\n this._reverse = false\r\n this._loopsDone = 0\r\n this._swing = false\r\n this._wait = 0\r\n this._times = 1\r\n\r\n this._frameId = null\r\n\r\n // Stores how long a runner is stored after beeing done\r\n this._persist = this._isDeclarative ? true : null\r\n }\r\n\r\n /*\r\n Runner Definitions\r\n ==================\r\n These methods help us define the runtime behaviour of the Runner or they\r\n help us make new runners from the current runner\r\n */\r\n\r\n element (element) {\r\n if (element == null) return this._element\r\n this._element = element\r\n element._prepareRunner()\r\n return this\r\n }\r\n\r\n timeline (timeline) {\r\n // check explicitly for undefined so we can set the timeline to null\r\n if (typeof timeline === 'undefined') return this._timeline\r\n this._timeline = timeline\r\n return this\r\n }\r\n\r\n animate (duration, delay, when) {\r\n var o = Runner.sanitise(duration, delay, when)\r\n var runner = new Runner(o.duration)\r\n if (this._timeline) runner.timeline(this._timeline)\r\n if (this._element) runner.element(this._element)\r\n return runner.loop(o).schedule(o.delay, o.when)\r\n }\r\n\r\n schedule (timeline, delay, when) {\r\n // The user doesn't need to pass a timeline if we already have one\r\n if (!(timeline instanceof Timeline)) {\r\n when = delay\r\n delay = timeline\r\n timeline = this.timeline()\r\n }\r\n\r\n // If there is no timeline, yell at the user...\r\n if (!timeline) {\r\n throw Error('Runner cannot be scheduled without timeline')\r\n }\r\n\r\n // Schedule the runner on the timeline provided\r\n timeline.schedule(this, delay, when)\r\n return this\r\n }\r\n\r\n unschedule () {\r\n var timeline = this.timeline()\r\n timeline && timeline.unschedule(this)\r\n return this\r\n }\r\n\r\n loop (times, swing, wait) {\r\n // Deal with the user passing in an object\r\n if (typeof times === 'object') {\r\n swing = times.swing\r\n wait = times.wait\r\n times = times.times\r\n }\r\n\r\n // Sanitise the values and store them\r\n this._times = times || Infinity\r\n this._swing = swing || false\r\n this._wait = wait || 0\r\n\r\n // Allow true to be passed\r\n if (this._times === true) { this._times = Infinity }\r\n\r\n return this\r\n }\r\n\r\n delay (delay) {\r\n return this.animate(0, delay)\r\n }\r\n\r\n /*\r\n Basic Functionality\r\n ===================\r\n These methods allow us to attach basic functions to the runner directly\r\n */\r\n\r\n queue (initFn, runFn, retargetFn, isTransform) {\r\n this._queue.push({\r\n initialiser: initFn || noop,\r\n runner: runFn || noop,\r\n retarget: retargetFn,\r\n isTransform: isTransform,\r\n initialised: false,\r\n finished: false\r\n })\r\n var timeline = this.timeline()\r\n timeline && this.timeline()._continue()\r\n return this\r\n }\r\n\r\n during (fn) {\r\n return this.queue(null, fn)\r\n }\r\n\r\n after (fn) {\r\n return this.on('finished', fn)\r\n }\r\n\r\n /*\r\n Runner animation methods\r\n ========================\r\n Control how the animation plays\r\n */\r\n\r\n time (time) {\r\n if (time == null) {\r\n return this._time\r\n }\r\n const dt = time - this._time\r\n this.step(dt)\r\n return this\r\n }\r\n\r\n duration () {\r\n return this._times * (this._wait + this._duration) - this._wait\r\n }\r\n\r\n loops (p) {\r\n var loopDuration = this._duration + this._wait\r\n if (p == null) {\r\n var loopsDone = Math.floor(this._time / loopDuration)\r\n var relativeTime = (this._time - loopsDone * loopDuration)\r\n var position = relativeTime / this._duration\r\n return Math.min(loopsDone + position, this._times)\r\n }\r\n var whole = Math.floor(p)\r\n var partial = p % 1\r\n var time = loopDuration * whole + this._duration * partial\r\n return this.time(time)\r\n }\r\n\r\n persist (dtOrForever) {\r\n if (dtOrForever == null) return this._persist\r\n this._persist = dtOrForever\r\n return this\r\n }\r\n\r\n position (p) {\r\n // Get all of the variables we need\r\n var x = this._time\r\n var d = this._duration\r\n var w = this._wait\r\n var t = this._times\r\n var s = this._swing\r\n var r = this._reverse\r\n var position\r\n\r\n if (p == null) {\r\n /*\r\n This function converts a time to a position in the range [0, 1]\r\n The full explanation can be found in this desmos demonstration\r\n https://www.desmos.com/calculator/u4fbavgche\r\n The logic is slightly simplified here because we can use booleans\r\n */\r\n\r\n // Figure out the value without thinking about the start or end time\r\n const f = function (x) {\r\n var swinging = s * Math.floor(x % (2 * (w + d)) / (w + d))\r\n var backwards = (swinging && !r) || (!swinging && r)\r\n var uncliped = Math.pow(-1, backwards) * (x % (w + d)) / d + backwards\r\n var clipped = Math.max(Math.min(uncliped, 1), 0)\r\n return clipped\r\n }\r\n\r\n // Figure out the value by incorporating the start time\r\n var endTime = t * (w + d) - w\r\n position = x <= 0 ? Math.round(f(1e-5))\r\n : x < endTime ? f(x)\r\n : Math.round(f(endTime - 1e-5))\r\n return position\r\n }\r\n\r\n // Work out the loops done and add the position to the loops done\r\n var loopsDone = Math.floor(this.loops())\r\n var swingForward = s && (loopsDone % 2 === 0)\r\n var forwards = (swingForward && !r) || (r && swingForward)\r\n position = loopsDone + (forwards ? p : 1 - p)\r\n return this.loops(position)\r\n }\r\n\r\n progress (p) {\r\n if (p == null) {\r\n return Math.min(1, this._time / this.duration())\r\n }\r\n return this.time(p * this.duration())\r\n }\r\n\r\n step (dt) {\r\n // If we are inactive, this stepper just gets skipped\r\n if (!this.enabled) return this\r\n\r\n // Update the time and get the new position\r\n dt = dt == null ? 16 : dt\r\n this._time += dt\r\n var position = this.position()\r\n\r\n // Figure out if we need to run the stepper in this frame\r\n var running = this._lastPosition !== position && this._time >= 0\r\n this._lastPosition = position\r\n\r\n // Figure out if we just started\r\n var duration = this.duration()\r\n var justStarted = this._lastTime <= 0 && this._time > 0\r\n var justFinished = this._lastTime < duration && this._time >= duration\r\n\r\n this._lastTime = this._time\r\n if (justStarted) {\r\n this.fire('start', this)\r\n }\r\n\r\n // Work out if the runner is finished set the done flag here so animations\r\n // know, that they are running in the last step (this is good for\r\n // transformations which can be merged)\r\n var declarative = this._isDeclarative\r\n this.done = !declarative && !justFinished && this._time >= duration\r\n\r\n // Runner is running. So its not in reseted state anymore\r\n this._reseted = false\r\n\r\n // Call initialise and the run function\r\n if (running || declarative) {\r\n this._initialise(running)\r\n\r\n // clear the transforms on this runner so they dont get added again and again\r\n this.transforms = new Matrix()\r\n var converged = this._run(declarative ? dt : position)\r\n\r\n this.fire('step', this)\r\n }\r\n // correct the done flag here\r\n // declaritive animations itself know when they converged\r\n this.done = this.done || (converged && declarative)\r\n if (justFinished) {\r\n this.fire('finished', this)\r\n }\r\n return this\r\n }\r\n\r\n reset () {\r\n if (this._reseted) return this\r\n this.time(0)\r\n this._reseted = true\r\n return this\r\n }\r\n\r\n finish () {\r\n return this.step(Infinity)\r\n }\r\n\r\n reverse (reverse) {\r\n this._reverse = reverse == null ? !this._reverse : reverse\r\n return this\r\n }\r\n\r\n ease (fn) {\r\n this._stepper = new Ease(fn)\r\n return this\r\n }\r\n\r\n active (enabled) {\r\n if (enabled == null) return this.enabled\r\n this.enabled = enabled\r\n return this\r\n }\r\n\r\n /*\r\n Private Methods\r\n ===============\r\n Methods that shouldn't be used externally\r\n */\r\n\r\n // Save a morpher to the morpher list so that we can retarget it later\r\n _rememberMorpher (method, morpher) {\r\n this._history[method] = {\r\n morpher: morpher,\r\n caller: this._queue[this._queue.length - 1]\r\n }\r\n\r\n // We have to resume the timeline in case a controller\r\n // is already done without beeing ever run\r\n // This can happen when e.g. this is done:\r\n // anim = el.animate(new SVG.Spring)\r\n // and later\r\n // anim.move(...)\r\n if (this._isDeclarative) {\r\n var timeline = this.timeline()\r\n timeline && timeline.play()\r\n }\r\n }\r\n\r\n // Try to set the target for a morpher if the morpher exists, otherwise\r\n // do nothing and return false\r\n _tryRetarget (method, target, extra) {\r\n if (this._history[method]) {\r\n // if the last method wasnt even initialised, throw it away\r\n if (!this._history[method].caller.initialised) {\r\n const index = this._queue.indexOf(this._history[method].caller)\r\n this._queue.splice(index, 1)\r\n return false\r\n }\r\n\r\n // for the case of transformations, we use the special retarget function\r\n // which has access to the outer scope\r\n if (this._history[method].caller.retarget) {\r\n this._history[method].caller.retarget(target, extra)\r\n // for everything else a simple morpher change is sufficient\r\n } else {\r\n this._history[method].morpher.to(target)\r\n }\r\n\r\n this._history[method].caller.finished = false\r\n var timeline = this.timeline()\r\n timeline && timeline.play()\r\n return true\r\n }\r\n return false\r\n }\r\n\r\n // Run each initialise function in the runner if required\r\n _initialise (running) {\r\n // If we aren't running, we shouldn't initialise when not declarative\r\n if (!running && !this._isDeclarative) return\r\n\r\n // Loop through all of the initialisers\r\n for (var i = 0, len = this._queue.length; i < len; ++i) {\r\n // Get the current initialiser\r\n var current = this._queue[i]\r\n\r\n // Determine whether we need to initialise\r\n var needsIt = this._isDeclarative || (!current.initialised && running)\r\n running = !current.finished\r\n\r\n // Call the initialiser if we need to\r\n if (needsIt && running) {\r\n current.initialiser.call(this)\r\n current.initialised = true\r\n }\r\n }\r\n }\r\n\r\n // Run each run function for the position or dt given\r\n _run (positionOrDt) {\r\n // Run all of the _queue directly\r\n var allfinished = true\r\n for (var i = 0, len = this._queue.length; i < len; ++i) {\r\n // Get the current function to run\r\n var current = this._queue[i]\r\n\r\n // Run the function if its not finished, we keep track of the finished\r\n // flag for the sake of declarative _queue\r\n var converged = current.runner.call(this, positionOrDt)\r\n current.finished = current.finished || (converged === true)\r\n allfinished = allfinished && current.finished\r\n }\r\n\r\n // We report when all of the constructors are finished\r\n return allfinished\r\n }\r\n\r\n addTransform (transform, index) {\r\n this.transforms.lmultiplyO(transform)\r\n return this\r\n }\r\n\r\n clearTransform () {\r\n this.transforms = new Matrix()\r\n return this\r\n }\r\n\r\n // TODO: Keep track of all transformations so that deletion is faster\r\n clearTransformsFromQueue () {\r\n if (!this.done || !this._timeline || !this._timeline._runnerIds.includes(this.id)) {\r\n this._queue = this._queue.filter((item) => {\r\n return !item.isTransform\r\n })\r\n }\r\n }\r\n\r\n static sanitise (duration, delay, when) {\r\n // Initialise the default parameters\r\n var times = 1\r\n var swing = false\r\n var wait = 0\r\n duration = duration || timeline.duration\r\n delay = delay || timeline.delay\r\n when = when || 'last'\r\n\r\n // If we have an object, unpack the values\r\n if (typeof duration === 'object' && !(duration instanceof Stepper)) {\r\n delay = duration.delay || delay\r\n when = duration.when || when\r\n swing = duration.swing || swing\r\n times = duration.times || times\r\n wait = duration.wait || wait\r\n duration = duration.duration || timeline.duration\r\n }\r\n\r\n return {\r\n duration: duration,\r\n delay: delay,\r\n swing: swing,\r\n times: times,\r\n wait: wait,\r\n when: when\r\n }\r\n }\r\n}\r\n\r\nRunner.id = 0\r\n\r\nclass FakeRunner {\r\n constructor (transforms = new Matrix(), id = -1, done = true) {\r\n this.transforms = transforms\r\n this.id = id\r\n this.done = done\r\n }\r\n\r\n clearTransformsFromQueue () { }\r\n}\r\n\r\nextend([ Runner, FakeRunner ], {\r\n mergeWith (runner) {\r\n return new FakeRunner(\r\n runner.transforms.lmultiply(this.transforms),\r\n runner.id\r\n )\r\n }\r\n})\r\n\r\n// FakeRunner.emptyRunner = new FakeRunner()\r\n\r\nconst lmultiply = (last, curr) => last.lmultiplyO(curr)\r\nconst getRunnerTransform = (runner) => runner.transforms\r\n\r\nfunction mergeTransforms () {\r\n // Find the matrix to apply to the element and apply it\r\n const runners = this._transformationRunners.runners\r\n const netTransform = runners\r\n .map(getRunnerTransform)\r\n .reduce(lmultiply, new Matrix())\r\n\r\n this.transform(netTransform)\r\n\r\n this._transformationRunners.merge()\r\n\r\n if (this._transformationRunners.length() === 1) {\r\n this._frameId = null\r\n }\r\n}\r\n\r\nclass RunnerArray {\r\n constructor () {\r\n this.runners = []\r\n this.ids = []\r\n }\r\n\r\n add (runner) {\r\n if (this.runners.includes(runner)) return\r\n const id = runner.id + 1\r\n\r\n this.runners.push(runner)\r\n this.ids.push(id)\r\n\r\n return this\r\n }\r\n\r\n getByID (id) {\r\n return this.runners[this.ids.indexOf(id + 1)]\r\n }\r\n\r\n remove (id) {\r\n const index = this.ids.indexOf(id + 1)\r\n this.ids.splice(index, 1)\r\n this.runners.splice(index, 1)\r\n return this\r\n }\r\n\r\n merge () {\r\n let lastRunner = null\r\n this.runners.forEach((runner, i) => {\r\n\r\n const condition = lastRunner\r\n && runner.done && lastRunner.done\r\n // don't merge runner when persisted on timeline\r\n && (!runner._timeline || !runner._timeline._runnerIds.includes(runner.id))\r\n && (!lastRunner._timeline || !lastRunner._timeline._runnerIds.includes(lastRunner.id))\r\n\r\n if (condition) {\r\n // the +1 happens in the function\r\n this.remove(runner.id)\r\n this.edit(lastRunner.id, runner.mergeWith(lastRunner))\r\n }\r\n\r\n lastRunner = runner\r\n })\r\n\r\n return this\r\n }\r\n\r\n edit (id, newRunner) {\r\n const index = this.ids.indexOf(id + 1)\r\n this.ids.splice(index, 1, id + 1)\r\n this.runners.splice(index, 1, newRunner)\r\n return this\r\n }\r\n\r\n length () {\r\n return this.ids.length\r\n }\r\n\r\n clearBefore (id) {\r\n const deleteCnt = this.ids.indexOf(id + 1) || 1\r\n this.ids.splice(0, deleteCnt, 0)\r\n this.runners.splice(0, deleteCnt, new FakeRunner())\r\n .forEach((r) => r.clearTransformsFromQueue())\r\n return this\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Element: {\r\n animate (duration, delay, when) {\r\n var o = Runner.sanitise(duration, delay, when)\r\n var timeline = this.timeline()\r\n return new Runner(o.duration)\r\n .loop(o)\r\n .element(this)\r\n .timeline(timeline.play())\r\n .schedule(o.delay, o.when)\r\n },\r\n\r\n delay (by, when) {\r\n return this.animate(0, by, when)\r\n },\r\n\r\n // this function searches for all runners on the element and deletes the ones\r\n // which run before the current one. This is because absolute transformations\r\n // overwfrite anything anyway so there is no need to waste time computing\r\n // other runners\r\n _clearTransformRunnersBefore (currentRunner) {\r\n this._transformationRunners.clearBefore(currentRunner.id)\r\n },\r\n\r\n _currentTransform (current) {\r\n return this._transformationRunners.runners\r\n // we need the equal sign here to make sure, that also transformations\r\n // on the same runner which execute before the current transformation are\r\n // taken into account\r\n .filter((runner) => runner.id <= current.id)\r\n .map(getRunnerTransform)\r\n .reduce(lmultiply, new Matrix())\r\n },\r\n\r\n _addRunner (runner) {\r\n this._transformationRunners.add(runner)\r\n\r\n // Make sure that the runner merge is executed at the very end of\r\n // all Animator functions. Thats why we use immediate here to execute\r\n // the merge right after all frames are run\r\n Animator.cancelImmediate(this._frameId)\r\n this._frameId = Animator.immediate(mergeTransforms.bind(this))\r\n },\r\n\r\n _prepareRunner () {\r\n if (this._frameId == null) {\r\n this._transformationRunners = new RunnerArray()\r\n .add(new FakeRunner(new Matrix(this)))\r\n }\r\n }\r\n }\r\n})\r\n\r\nextend(Runner, {\r\n attr (a, v) {\r\n return this.styleAttr('attr', a, v)\r\n },\r\n\r\n // Add animatable styles\r\n css (s, v) {\r\n return this.styleAttr('css', s, v)\r\n },\r\n\r\n styleAttr (type, name, val) {\r\n // apply attributes individually\r\n if (typeof name === 'object') {\r\n for (var key in name) {\r\n this.styleAttr(type, key, name[key])\r\n }\r\n return this\r\n }\r\n\r\n var morpher = new Morphable(this._stepper).to(val)\r\n\r\n this.queue(function () {\r\n morpher = morpher.from(this.element()[type](name))\r\n }, function (pos) {\r\n this.element()[type](name, morpher.at(pos))\r\n return morpher.done()\r\n })\r\n\r\n return this\r\n },\r\n\r\n zoom (level, point) {\r\n if (this._tryRetarget('zoom', to, point)) return this\r\n\r\n var morpher = new Morphable(this._stepper).to(new SVGNumber(level))\r\n\r\n this.queue(function () {\r\n morpher = morpher.from(this.element().zoom())\r\n }, function (pos) {\r\n this.element().zoom(morpher.at(pos), point)\r\n return morpher.done()\r\n }, function (newLevel, newPoint) {\r\n point = newPoint\r\n morpher.to(newLevel)\r\n })\r\n\r\n this._rememberMorpher('zoom', morpher)\r\n return this\r\n },\r\n\r\n /**\r\n ** absolute transformations\r\n **/\r\n\r\n //\r\n // M v -----|-----(D M v = F v)------|-----> T v\r\n //\r\n // 1. define the final state (T) and decompose it (once)\r\n // t = [tx, ty, the, lam, sy, sx]\r\n // 2. on every frame: pull the current state of all previous transforms\r\n // (M - m can change)\r\n // and then write this as m = [tx0, ty0, the0, lam0, sy0, sx0]\r\n // 3. Find the interpolated matrix F(pos) = m + pos * (t - m)\r\n // - Note F(0) = M\r\n // - Note F(1) = T\r\n // 4. Now you get the delta matrix as a result: D = F * inv(M)\r\n\r\n transform (transforms, relative, affine) {\r\n // If we have a declarative function, we should retarget it if possible\r\n relative = transforms.relative || relative\r\n if (this._isDeclarative && !relative && this._tryRetarget('transform', transforms)) {\r\n return this\r\n }\r\n\r\n // Parse the parameters\r\n var isMatrix = Matrix.isMatrixLike(transforms)\r\n affine = transforms.affine != null\r\n ? transforms.affine\r\n : (affine != null ? affine : !isMatrix)\r\n\r\n // Create a morepher and set its type\r\n const morpher = new Morphable(this._stepper)\r\n .type(affine ? TransformBag : Matrix)\r\n\r\n let origin\r\n let element\r\n let current\r\n let currentAngle\r\n let startTransform\r\n\r\n function setup () {\r\n // make sure element and origin is defined\r\n element = element || this.element()\r\n origin = origin || getOrigin(transforms, element)\r\n\r\n startTransform = new Matrix(relative ? undefined : element)\r\n\r\n // add the runner to the element so it can merge transformations\r\n element._addRunner(this)\r\n\r\n // Deactivate all transforms that have run so far if we are absolute\r\n if (!relative) {\r\n element._clearTransformRunnersBefore(this)\r\n }\r\n }\r\n\r\n function run (pos) {\r\n // clear all other transforms before this in case something is saved\r\n // on this runner. We are absolute. We dont need these!\r\n if (!relative) this.clearTransform()\r\n\r\n const { x, y } = new Point(origin).transform(element._currentTransform(this))\r\n\r\n let target = new Matrix({ ...transforms, origin: [ x, y ] })\r\n let start = this._isDeclarative && current\r\n ? current\r\n : startTransform\r\n\r\n if (affine) {\r\n target = target.decompose(x, y)\r\n start = start.decompose(x, y)\r\n\r\n // Get the current and target angle as it was set\r\n const rTarget = target.rotate\r\n const rCurrent = start.rotate\r\n\r\n // Figure out the shortest path to rotate directly\r\n const possibilities = [ rTarget - 360, rTarget, rTarget + 360 ]\r\n const distances = possibilities.map(a => Math.abs(a - rCurrent))\r\n const shortest = Math.min(...distances)\r\n const index = distances.indexOf(shortest)\r\n target.rotate = possibilities[index]\r\n }\r\n\r\n if (relative) {\r\n // we have to be careful here not to overwrite the rotation\r\n // with the rotate method of Matrix\r\n if (!isMatrix) {\r\n target.rotate = transforms.rotate || 0\r\n }\r\n if (this._isDeclarative && currentAngle) {\r\n start.rotate = currentAngle\r\n }\r\n }\r\n\r\n morpher.from(start)\r\n morpher.to(target)\r\n\r\n const affineParameters = morpher.at(pos)\r\n currentAngle = affineParameters.rotate\r\n current = new Matrix(affineParameters)\r\n\r\n this.addTransform(current)\r\n element._addRunner(this)\r\n return morpher.done()\r\n }\r\n\r\n function retarget (newTransforms) {\r\n // only get a new origin if it changed since the last call\r\n if (\r\n (newTransforms.origin || 'center').toString()\r\n !== (transforms.origin || 'center').toString()\r\n ) {\r\n origin = getOrigin(transforms, element)\r\n }\r\n\r\n // overwrite the old transformations with the new ones\r\n transforms = { ...newTransforms, origin }\r\n }\r\n\r\n this.queue(setup, run, retarget, true)\r\n this._isDeclarative && this._rememberMorpher('transform', morpher)\r\n return this\r\n },\r\n\r\n // Animatable x-axis\r\n x (x, relative) {\r\n return this._queueNumber('x', x)\r\n },\r\n\r\n // Animatable y-axis\r\n y (y) {\r\n return this._queueNumber('y', y)\r\n },\r\n\r\n dx (x = 0) {\r\n return this._queueNumberDelta('x', x)\r\n },\r\n\r\n dy (y = 0) {\r\n return this._queueNumberDelta('y', y)\r\n },\r\n\r\n dmove (x, y) {\r\n return this.dx(x).dy(y)\r\n },\r\n\r\n _queueNumberDelta (method, to) {\r\n to = new SVGNumber(to)\r\n\r\n // Try to change the target if we have this method already registerd\r\n if (this._tryRetarget(method, to)) return this\r\n\r\n // Make a morpher and queue the animation\r\n var morpher = new Morphable(this._stepper).to(to)\r\n var from = null\r\n this.queue(function () {\r\n from = this.element()[method]()\r\n morpher.from(from)\r\n morpher.to(from + to)\r\n }, function (pos) {\r\n this.element()[method](morpher.at(pos))\r\n return morpher.done()\r\n }, function (newTo) {\r\n morpher.to(from + new SVGNumber(newTo))\r\n })\r\n\r\n // Register the morpher so that if it is changed again, we can retarget it\r\n this._rememberMorpher(method, morpher)\r\n return this\r\n },\r\n\r\n _queueObject (method, to) {\r\n // Try to change the target if we have this method already registerd\r\n if (this._tryRetarget(method, to)) return this\r\n\r\n // Make a morpher and queue the animation\r\n var morpher = new Morphable(this._stepper).to(to)\r\n this.queue(function () {\r\n morpher.from(this.element()[method]())\r\n }, function (pos) {\r\n this.element()[method](morpher.at(pos))\r\n return morpher.done()\r\n })\r\n\r\n // Register the morpher so that if it is changed again, we can retarget it\r\n this._rememberMorpher(method, morpher)\r\n return this\r\n },\r\n\r\n _queueNumber (method, value) {\r\n return this._queueObject(method, new SVGNumber(value))\r\n },\r\n\r\n // Animatable center x-axis\r\n cx (x) {\r\n return this._queueNumber('cx', x)\r\n },\r\n\r\n // Animatable center y-axis\r\n cy (y) {\r\n return this._queueNumber('cy', y)\r\n },\r\n\r\n // Add animatable move\r\n move (x, y) {\r\n return this.x(x).y(y)\r\n },\r\n\r\n // Add animatable center\r\n center (x, y) {\r\n return this.cx(x).cy(y)\r\n },\r\n\r\n // Add animatable size\r\n size (width, height) {\r\n // animate bbox based size for all other elements\r\n var box\r\n\r\n if (!width || !height) {\r\n box = this._element.bbox()\r\n }\r\n\r\n if (!width) {\r\n width = box.width / box.height * height\r\n }\r\n\r\n if (!height) {\r\n height = box.height / box.width * width\r\n }\r\n\r\n return this\r\n .width(width)\r\n .height(height)\r\n },\r\n\r\n // Add animatable width\r\n width (width) {\r\n return this._queueNumber('width', width)\r\n },\r\n\r\n // Add animatable height\r\n height (height) {\r\n return this._queueNumber('height', height)\r\n },\r\n\r\n // Add animatable plot\r\n plot (a, b, c, d) {\r\n // Lines can be plotted with 4 arguments\r\n if (arguments.length === 4) {\r\n return this.plot([ a, b, c, d ])\r\n }\r\n\r\n if (this._tryRetarget('plot', a)) return this\r\n\r\n var morpher = new Morphable(this._stepper)\r\n .type(this._element.MorphArray).to(a)\r\n\r\n this.queue(function () {\r\n morpher.from(this._element.array())\r\n }, function (pos) {\r\n this._element.plot(morpher.at(pos))\r\n return morpher.done()\r\n })\r\n\r\n this._rememberMorpher('plot', morpher)\r\n return this\r\n },\r\n\r\n // Add leading method\r\n leading (value) {\r\n return this._queueNumber('leading', value)\r\n },\r\n\r\n // Add animatable viewbox\r\n viewbox (x, y, width, height) {\r\n return this._queueObject('viewbox', new Box(x, y, width, height))\r\n },\r\n\r\n update (o) {\r\n if (typeof o !== 'object') {\r\n return this.update({\r\n offset: arguments[0],\r\n color: arguments[1],\r\n opacity: arguments[2]\r\n })\r\n }\r\n\r\n if (o.opacity != null) this.attr('stop-opacity', o.opacity)\r\n if (o.color != null) this.attr('stop-color', o.color)\r\n if (o.offset != null) this.attr('offset', o.offset)\r\n\r\n return this\r\n }\r\n})\r\n\r\nextend(Runner, { rx, ry, from, to })\r\nregister(Runner, 'Runner')\r\n","import {\r\n adopt,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { ns, svgjs, xlink, xmlns } from '../modules/core/namespaces.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Container from './Container.js'\r\nimport Defs from './Defs.js'\r\nimport { globals } from '../utils/window.js'\r\n\r\nexport default class Svg extends Container {\r\n constructor (node) {\r\n super(nodeOrNew('svg', node), node)\r\n this.namespace()\r\n }\r\n\r\n isRoot () {\r\n return !this.node.parentNode\r\n || !(this.node.parentNode instanceof globals.window.SVGElement)\r\n || this.node.parentNode.nodeName === '#document'\r\n }\r\n\r\n // Check if this is a root svg\r\n // If not, call docs from this element\r\n root () {\r\n if (this.isRoot()) return this\r\n return super.root()\r\n }\r\n\r\n // Add namespaces\r\n namespace () {\r\n if (!this.isRoot()) return this.root().namespace()\r\n return this\r\n .attr({ xmlns: ns, version: '1.1' })\r\n .attr('xmlns:xlink', xlink, xmlns)\r\n .attr('xmlns:svgjs', svgjs, xmlns)\r\n }\r\n\r\n // Creates and returns defs element\r\n defs () {\r\n if (!this.isRoot()) return this.root().defs()\r\n\r\n return adopt(this.node.querySelector('defs'))\r\n || this.put(new Defs())\r\n }\r\n\r\n // custom parent method\r\n parent (type) {\r\n if (this.isRoot()) {\r\n return this.node.parentNode.nodeName === '#document'\r\n ? null\r\n : adopt(this.node.parentNode)\r\n }\r\n\r\n return super.parent(type)\r\n }\r\n\r\n clear () {\r\n // remove children\r\n while (this.node.hasChildNodes()) {\r\n this.node.removeChild(this.node.lastChild)\r\n }\r\n\r\n // remove defs reference\r\n delete this._defs\r\n\r\n return this\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create nested svg document\r\n nested: wrapWithAttrCheck(function () {\r\n return this.put(new Svg())\r\n })\r\n }\r\n})\r\n\r\nregister(Svg, 'Svg', true)\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Container from './Container.js'\r\n\r\nexport default class Symbol extends Container {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('symbol', node), node)\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n symbol: wrapWithAttrCheck(function () {\r\n return this.put(new Symbol())\r\n })\r\n }\r\n})\r\n\r\nregister(Symbol, 'Symbol')\r\n","import { globals } from '../../utils/window.js'\r\n\r\n// Create plain text node\r\nexport function plain (text) {\r\n // clear if build mode is disabled\r\n if (this._build === false) {\r\n this.clear()\r\n }\r\n\r\n // create text node\r\n this.node.appendChild(globals.document.createTextNode(text))\r\n\r\n return this\r\n}\r\n\r\n// Get length of text element\r\nexport function length () {\r\n return this.node.getComputedTextLength()\r\n}\r\n","import {\r\n adopt,\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport SVGNumber from '../types/SVGNumber.js'\r\nimport Shape from './Shape.js'\r\nimport { globals } from '../utils/window.js'\r\nimport * as textable from '../modules/core/textable.js'\r\n\r\nexport default class Text extends Shape {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('text', node), node)\r\n\r\n this.dom.leading = new SVGNumber(1.3) // store leading value for rebuilding\r\n this._rebuild = true // enable automatic updating of dy values\r\n this._build = false // disable build mode for adding multiple lines\r\n }\r\n\r\n // Move over x-axis\r\n // Text is moved its bounding box\r\n // text-anchor does NOT matter\r\n x (x, box = this.bbox()) {\r\n if (x == null) {\r\n return box.x\r\n }\r\n\r\n return this.attr('x', this.attr('x') + x - box.x)\r\n }\r\n\r\n // Move over y-axis\r\n y (y, box = this.bbox()) {\r\n if (y == null) {\r\n return box.y\r\n }\r\n\r\n return this.attr('y', this.attr('y') + y - box.y)\r\n }\r\n\r\n move (x, y, box = this.bbox()) {\r\n return this.x(x, box).y(y, box)\r\n }\r\n\r\n // Move center over x-axis\r\n cx (x, box = this.bbox()) {\r\n if (x == null) {\r\n return box.cx\r\n }\r\n\r\n return this.attr('x', this.attr('x') + x - box.cx)\r\n }\r\n\r\n // Move center over y-axis\r\n cy (y, box = this.bbox()) {\r\n if (y == null) {\r\n return box.cy\r\n }\r\n\r\n return this.attr('y', this.attr('y') + y - box.cy)\r\n }\r\n\r\n center (x, y, box = this.bbox()) {\r\n return this.cx(x, box).cy(y, box)\r\n }\r\n\r\n // Set the text content\r\n text (text) {\r\n // act as getter\r\n if (text === undefined) {\r\n var children = this.node.childNodes\r\n var firstLine = 0\r\n text = ''\r\n\r\n for (var i = 0, len = children.length; i < len; ++i) {\r\n // skip textPaths - they are no lines\r\n if (children[i].nodeName === 'textPath') {\r\n if (i === 0) firstLine = 1\r\n continue\r\n }\r\n\r\n // add newline if its not the first child and newLined is set to true\r\n if (i !== firstLine && children[i].nodeType !== 3 && adopt(children[i]).dom.newLined === true) {\r\n text += '\\n'\r\n }\r\n\r\n // add content of this node\r\n text += children[i].textContent\r\n }\r\n\r\n return text\r\n }\r\n\r\n // remove existing content\r\n this.clear().build(true)\r\n\r\n if (typeof text === 'function') {\r\n // call block\r\n text.call(this, this)\r\n } else {\r\n // store text and make sure text is not blank\r\n text = text.split('\\n')\r\n\r\n // build new lines\r\n for (var j = 0, jl = text.length; j < jl; j++) {\r\n this.tspan(text[j]).newLine()\r\n }\r\n }\r\n\r\n // disable build mode and rebuild lines\r\n return this.build(false).rebuild()\r\n }\r\n\r\n // Set / get leading\r\n leading (value) {\r\n // act as getter\r\n if (value == null) {\r\n return this.dom.leading\r\n }\r\n\r\n // act as setter\r\n this.dom.leading = new SVGNumber(value)\r\n\r\n return this.rebuild()\r\n }\r\n\r\n // Rebuild appearance type\r\n rebuild (rebuild) {\r\n // store new rebuild flag if given\r\n if (typeof rebuild === 'boolean') {\r\n this._rebuild = rebuild\r\n }\r\n\r\n // define position of all lines\r\n if (this._rebuild) {\r\n var self = this\r\n var blankLineOffset = 0\r\n var leading = this.dom.leading\r\n\r\n this.each(function () {\r\n var fontSize = globals.window.getComputedStyle(this.node)\r\n .getPropertyValue('font-size')\r\n var dy = leading * new SVGNumber(fontSize)\r\n\r\n if (this.dom.newLined) {\r\n this.attr('x', self.attr('x'))\r\n\r\n if (this.text() === '\\n') {\r\n blankLineOffset += dy\r\n } else {\r\n this.attr('dy', dy + blankLineOffset)\r\n blankLineOffset = 0\r\n }\r\n }\r\n })\r\n\r\n this.fire('rebuild')\r\n }\r\n\r\n return this\r\n }\r\n\r\n // Enable / disable build mode\r\n build (build) {\r\n this._build = !!build\r\n return this\r\n }\r\n\r\n // overwrite method from parent to set data properly\r\n setData (o) {\r\n this.dom = o\r\n this.dom.leading = new SVGNumber(o.leading || 1.3)\r\n return this\r\n }\r\n}\r\n\r\nextend(Text, textable)\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create text element\r\n text: wrapWithAttrCheck(function (text) {\r\n return this.put(new Text()).text(text)\r\n }),\r\n\r\n // Create plain text element\r\n plain: wrapWithAttrCheck(function (text) {\r\n return this.put(new Text()).plain(text)\r\n })\r\n }\r\n})\r\n\r\nregister(Text, 'Text')\r\n","import {\r\n extend,\r\n nodeOrNew,\r\n register,\r\n wrapWithAttrCheck\r\n} from '../utils/adopter.js'\r\nimport { globals } from '../utils/window.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport SVGNumber from '../types/SVGNumber.js'\r\nimport Text from './Text.js'\r\nimport * as textable from '../modules/core/textable.js'\r\n\r\nexport default class Tspan extends Text {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('tspan', node), node)\r\n }\r\n\r\n // Set text content\r\n text (text) {\r\n if (text == null) return this.node.textContent + (this.dom.newLined ? '\\n' : '')\r\n\r\n typeof text === 'function' ? text.call(this, this) : this.plain(text)\r\n\r\n return this\r\n }\r\n\r\n // Shortcut dx\r\n dx (dx) {\r\n return this.attr('dx', dx)\r\n }\r\n\r\n // Shortcut dy\r\n dy (dy) {\r\n return this.attr('dy', dy)\r\n }\r\n\r\n x (x) {\r\n return this.attr('x', x)\r\n }\r\n\r\n y (y) {\r\n return this.attr('x', y)\r\n }\r\n\r\n move (x, y) {\r\n return this.x(x).y(y)\r\n }\r\n\r\n // Create new line\r\n newLine () {\r\n // fetch text parent\r\n var t = this.parent(Text)\r\n\r\n // mark new line\r\n this.dom.newLined = true\r\n\r\n var fontSize = globals.window.getComputedStyle(this.node)\r\n .getPropertyValue('font-size')\r\n var dy = t.dom.leading * new SVGNumber(fontSize)\r\n\r\n // apply new position\r\n return this.dy(dy).attr('x', t.x())\r\n }\r\n}\r\n\r\nextend(Tspan, textable)\r\n\r\nregisterMethods({\r\n Tspan: {\r\n tspan: wrapWithAttrCheck(function (text) {\r\n var tspan = new Tspan()\r\n\r\n // clear if build mode is disabled\r\n if (!this._build) {\r\n this.clear()\r\n }\r\n\r\n // add new tspan\r\n this.node.appendChild(tspan.node)\r\n\r\n return tspan.text(text)\r\n })\r\n }\r\n})\r\n\r\nregister(Tspan, 'Tspan')\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Container from './Container.js'\r\nimport baseFind from '../modules/core/selector.js'\r\n\r\nexport default class ClipPath extends Container {\r\n constructor (node) {\r\n super(nodeOrNew('clipPath', node), node)\r\n }\r\n\r\n // Unclip all clipped elements and remove itself\r\n remove () {\r\n // unclip all targets\r\n this.targets().forEach(function (el) {\r\n el.unclip()\r\n })\r\n\r\n // remove clipPath from parent\r\n return super.remove()\r\n }\r\n\r\n targets () {\r\n return baseFind('svg [clip-path*=\"' + this.id() + '\"]')\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create clipping element\r\n clip: wrapWithAttrCheck(function () {\r\n return this.defs().put(new ClipPath())\r\n })\r\n },\r\n Element: {\r\n // Distribute clipPath to svg element\r\n clipWith (element) {\r\n // use given clip or create a new one\r\n const clipper = element instanceof ClipPath\r\n ? element\r\n : this.parent().clip().add(element)\r\n\r\n // apply mask\r\n return this.attr('clip-path', 'url(\"#' + clipper.id() + '\")')\r\n },\r\n\r\n // Unclip element\r\n unclip () {\r\n return this.attr('clip-path', null)\r\n },\r\n\r\n clipper () {\r\n return this.reference('clip-path')\r\n }\r\n }\r\n})\r\n\r\nregister(ClipPath, 'ClipPath')\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Element from './Element.js'\r\n\r\nexport default class ForeignObject extends Element {\r\n constructor (node) {\r\n super(nodeOrNew('foreignObject', node), node)\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n foreignObject: wrapWithAttrCheck(function (width, height) {\r\n return this.put(new ForeignObject()).size(width, height)\r\n })\r\n }\r\n})\r\n\r\nregister(ForeignObject, 'ForeignObject')\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { proportionalSize } from '../utils/utils.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Container from './Container.js'\r\nimport Matrix from '../types/Matrix.js'\r\nimport Point from '../types/Point.js'\r\n\r\nexport default class G extends Container {\r\n constructor (node) {\r\n super(nodeOrNew('g', node), node)\r\n }\r\n\r\n x (x, box = this.bbox()) {\r\n if (x == null) return box.x\r\n return this.move(x, box.y, box)\r\n }\r\n\r\n y (y, box = this.bbox()) {\r\n if (y == null) return box.y\r\n return this.move(box.x, y, box)\r\n }\r\n\r\n move (x = 0, y = 0, box = this.bbox()) {\r\n const dx = x - box.x\r\n const dy = y - box.y\r\n\r\n return this.dmove(dx, dy)\r\n }\r\n\r\n dx (dx) {\r\n return this.dmove(dx, 0)\r\n }\r\n\r\n dy (dy) {\r\n return this.dmove(0, dy)\r\n }\r\n\r\n dmove (dx, dy) {\r\n this.children().forEach((child, i) => {\r\n // Get the childs bbox\r\n const bbox = child.bbox()\r\n // Get childs matrix\r\n const m = new Matrix(child)\r\n // Translate childs matrix by amount and\r\n // transform it back into parents space\r\n const matrix = m.translate(dx, dy).transform(m.inverse())\r\n // Calculate new x and y from old box\r\n const p = new Point(bbox.x, bbox.y).transform(matrix)\r\n // Move element\r\n child.move(p.x, p.y)\r\n })\r\n\r\n return this\r\n }\r\n\r\n width (width, box = this.bbox()) {\r\n if (width == null) return box.width\r\n return this.size(width, box.height, box)\r\n }\r\n\r\n height (height, box = this.bbox()) {\r\n if (height == null) return box.height\r\n return this.size(box.width, height, box)\r\n }\r\n\r\n size (width, height, box = this.bbox()) {\r\n const p = proportionalSize(this, width, height, box)\r\n const scaleX = p.width / box.width\r\n const scaleY = p.height / box.height\r\n\r\n this.children().forEach((child, i) => {\r\n const o = new Point(box).transform(new Matrix(child).inverse())\r\n child.scale(scaleX, scaleY, o.x, o.y)\r\n })\r\n\r\n return this\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create a group element\r\n group: wrapWithAttrCheck(function () {\r\n return this.put(new G())\r\n })\r\n }\r\n})\r\n\r\nregister(G, 'G')\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport { xlink } from '../modules/core/namespaces.js'\r\nimport Container from './Container.js'\r\n\r\nexport default class A extends Container {\r\n constructor (node) {\r\n super(nodeOrNew('a', node), node)\r\n }\r\n\r\n // Link url\r\n to (url) {\r\n return this.attr('href', url, xlink)\r\n }\r\n\r\n // Link target attribute\r\n target (target) {\r\n return this.attr('target', target)\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create a hyperlink element\r\n link: wrapWithAttrCheck(function (url) {\r\n return this.put(new A()).to(url)\r\n })\r\n },\r\n Element: {\r\n // Create a hyperlink element\r\n linkTo: function (url) {\r\n var link = new A()\r\n\r\n if (typeof url === 'function') {\r\n url.call(link, link)\r\n } else {\r\n link.to(url)\r\n }\r\n\r\n return this.parent().put(link).put(this)\r\n }\r\n }\r\n})\r\n\r\nregister(A, 'A')\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport Container from './Container.js'\r\nimport baseFind from '../modules/core/selector.js'\r\n\r\nexport default class Mask extends Container {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('mask', node), node)\r\n }\r\n\r\n // Unmask all masked elements and remove itself\r\n remove () {\r\n // unmask all targets\r\n this.targets().forEach(function (el) {\r\n el.unmask()\r\n })\r\n\r\n // remove mask from parent\r\n return super.remove()\r\n }\r\n\r\n targets () {\r\n return baseFind('svg [mask*=\"' + this.id() + '\"]')\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n mask: wrapWithAttrCheck(function () {\r\n return this.defs().put(new Mask())\r\n })\r\n },\r\n Element: {\r\n // Distribute mask to svg element\r\n maskWith (element) {\r\n // use given mask or create a new one\r\n var masker = element instanceof Mask\r\n ? element\r\n : this.parent().mask().add(element)\r\n\r\n // apply mask\r\n return this.attr('mask', 'url(\"#' + masker.id() + '\")')\r\n },\r\n\r\n // Unmask element\r\n unmask () {\r\n return this.attr('mask', null)\r\n },\r\n\r\n masker () {\r\n return this.reference('mask')\r\n }\r\n }\r\n})\r\n\r\nregister(Mask, 'Mask')\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport { unCamelCase } from '../utils/utils.js'\r\nimport Element from './Element.js'\r\n\r\nfunction cssRule (selector, rule) {\r\n if (!selector) return ''\r\n if (!rule) return selector\r\n\r\n var ret = selector + '{'\r\n\r\n for (var i in rule) {\r\n ret += unCamelCase(i) + ':' + rule[i] + ';'\r\n }\r\n\r\n ret += '}'\r\n\r\n return ret\r\n}\r\n\r\nexport default class Style extends Element {\r\n constructor (node) {\r\n super(nodeOrNew('style', node), node)\r\n }\r\n\r\n addText (w = '') {\r\n this.node.textContent += w\r\n return this\r\n }\r\n\r\n font (name, src, params = {}) {\r\n return this.rule('@font-face', {\r\n fontFamily: name,\r\n src: src,\r\n ...params\r\n })\r\n }\r\n\r\n rule (selector, obj) {\r\n return this.addText(cssRule(selector, obj))\r\n }\r\n}\r\n\r\nregisterMethods('Dom', {\r\n style: wrapWithAttrCheck(function (selector, obj) {\r\n return this.put(new Style()).rule(selector, obj)\r\n }),\r\n fontface: wrapWithAttrCheck(function (name, src, params) {\r\n return this.put(new Style()).font(name, src, params)\r\n })\r\n})\r\n\r\nregister(Style, 'Style')\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport { xlink } from '../modules/core/namespaces.js'\r\nimport Path from './Path.js'\r\nimport PathArray from '../types/PathArray.js'\r\nimport Text from './Text.js'\r\nimport baseFind from '../modules/core/selector.js'\r\n\r\nexport default class TextPath extends Text {\r\n // Initialize node\r\n constructor (node) {\r\n super(nodeOrNew('textPath', node), node)\r\n }\r\n\r\n // return the array of the path track element\r\n array () {\r\n var track = this.track()\r\n\r\n return track ? track.array() : null\r\n }\r\n\r\n // Plot path if any\r\n plot (d) {\r\n var track = this.track()\r\n var pathArray = null\r\n\r\n if (track) {\r\n pathArray = track.plot(d)\r\n }\r\n\r\n return (d == null) ? pathArray : this\r\n }\r\n\r\n // Get the path element\r\n track () {\r\n return this.reference('href')\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n textPath: wrapWithAttrCheck(function (text, path) {\r\n // Convert text to instance if needed\r\n if (!(text instanceof Text)) {\r\n text = this.text(text)\r\n }\r\n\r\n return text.path(path)\r\n })\r\n },\r\n Text: {\r\n // Create path for text to run on\r\n path: wrapWithAttrCheck(function (track, importNodes = true) {\r\n var textPath = new TextPath()\r\n\r\n // if track is a path, reuse it\r\n if (!(track instanceof Path)) {\r\n // create path element\r\n track = this.defs().path(track)\r\n }\r\n\r\n // link textPath to path and add content\r\n textPath.attr('href', '#' + track, xlink)\r\n\r\n // Transplant all nodes from text to textPath\r\n let node\r\n if (importNodes) {\r\n while ((node = this.node.firstChild)) {\r\n textPath.node.appendChild(node)\r\n }\r\n }\r\n\r\n // add textPath element as child node and return textPath\r\n return this.put(textPath)\r\n }),\r\n\r\n // Get the textPath children\r\n textPath () {\r\n return this.findOne('textPath')\r\n }\r\n },\r\n Path: {\r\n // creates a textPath from this path\r\n text: wrapWithAttrCheck(function (text) {\r\n // Convert text to instance if needed\r\n if (!(text instanceof Text)) {\r\n text = new Text().addTo(this.parent()).text(text)\r\n }\r\n\r\n // Create textPath from text and path and return\r\n return text.path(this)\r\n }),\r\n\r\n targets () {\r\n return baseFind('svg [href*=\"' + this.id() + '\"]')\r\n }\r\n }\r\n})\r\n\r\nTextPath.prototype.MorphArray = PathArray\r\nregister(TextPath, 'TextPath')\r\n","import { nodeOrNew, register, wrapWithAttrCheck } from '../utils/adopter.js'\r\nimport { registerMethods } from '../utils/methods.js'\r\nimport { xlink } from '../modules/core/namespaces.js'\r\nimport Shape from './Shape.js'\r\n\r\nexport default class Use extends Shape {\r\n constructor (node) {\r\n super(nodeOrNew('use', node), node)\r\n }\r\n\r\n // Use element as a reference\r\n element (element, file) {\r\n // Set lined element\r\n return this.attr('href', (file || '') + '#' + element, xlink)\r\n }\r\n}\r\n\r\nregisterMethods({\r\n Container: {\r\n // Create a use element\r\n use: wrapWithAttrCheck(function (element, file) {\r\n return this.put(new Use()).element(element, file)\r\n })\r\n }\r\n})\r\n\r\nregister(Use, 'Use')\r\n","/* Optional Modules */\r\nimport './modules/optional/arrange.js'\r\nimport './modules/optional/class.js'\r\nimport './modules/optional/css.js'\r\nimport './modules/optional/data.js'\r\nimport './modules/optional/memory.js'\r\nimport './modules/optional/sugar.js'\r\nimport './modules/optional/transform.js'\r\n\r\nimport { extend, makeInstance } from './utils/adopter.js'\r\nimport { getMethodNames, getMethodsFor } from './utils/methods.js'\r\nimport Box from './types/Box.js'\r\nimport Circle from './elements/Circle.js'\r\nimport Color from './types/Color.js'\r\nimport Container from './elements/Container.js'\r\nimport Defs from './elements/Defs.js'\r\nimport Dom from './elements/Dom.js'\r\nimport Element from './elements/Element.js'\r\nimport Ellipse from './elements/Ellipse.js'\r\nimport EventTarget from './types/EventTarget.js'\r\nimport Gradient from './elements/Gradient.js'\r\nimport Image from './elements/Image.js'\r\nimport Line from './elements/Line.js'\r\nimport List from './types/List.js'\r\nimport Marker from './elements/Marker.js'\r\nimport Matrix from './types/Matrix.js'\r\nimport Morphable, {\r\n NonMorphable,\r\n ObjectBag,\r\n TransformBag,\r\n makeMorphable,\r\n registerMorphableType\r\n} from './animation/Morphable.js'\r\nimport Path from './elements/Path.js'\r\nimport PathArray from './types/PathArray.js'\r\nimport Pattern from './elements/Pattern.js'\r\nimport PointArray from './types/PointArray.js'\r\nimport Polygon from './elements/Polygon.js'\r\nimport Polyline from './elements/Polyline.js'\r\nimport Rect from './elements/Rect.js'\r\nimport Runner from './animation/Runner.js'\r\nimport SVGArray from './types/SVGArray.js'\r\nimport SVGNumber from './types/SVGNumber.js'\r\nimport Shape from './elements/Shape.js'\r\nimport Svg from './elements/Svg.js'\r\nimport Symbol from './elements/Symbol.js'\r\nimport Text from './elements/Text.js'\r\nimport Tspan from './elements/Tspan.js'\r\nimport * as defaults from './modules/core/defaults.js'\r\nimport * as utils from './utils/utils.js'\r\nimport * as namespaces from './modules/core/namespaces.js'\r\nimport * as regex from './modules/core/regex.js'\r\n\r\nexport {\r\n Morphable,\r\n registerMorphableType,\r\n makeMorphable,\r\n TransformBag,\r\n ObjectBag,\r\n NonMorphable\r\n}\r\n\r\nexport { defaults, utils, namespaces, regex }\r\nexport const SVG = makeInstance\r\nexport { default as parser } from './modules/core/parser.js'\r\nexport { default as find } from './modules/core/selector.js'\r\nexport * from './modules/core/event.js'\r\nexport * from './utils/adopter.js'\r\nexport { registerWindow } from './utils/window.js'\r\n\r\n/* Animation Modules */\r\nexport { default as Animator } from './animation/Animator.js'\r\nexport { Controller, Ease, PID, Spring, easing } from './animation/Controller.js'\r\nexport { default as Queue } from './animation/Queue.js'\r\nexport { default as Runner } from './animation/Runner.js'\r\nexport { default as Timeline } from './animation/Timeline.js'\r\n\r\n/* Types */\r\nexport { default as Array } from './types/SVGArray.js'\r\nexport { default as Box } from './types/Box.js'\r\nexport { default as Color } from './types/Color.js'\r\nexport { default as EventTarget } from './types/EventTarget.js'\r\nexport { default as Matrix } from './types/Matrix.js'\r\nexport { default as Number } from './types/SVGNumber.js'\r\nexport { default as PathArray } from './types/PathArray.js'\r\nexport { default as Point } from './types/Point.js'\r\nexport { default as PointArray } from './types/PointArray.js'\r\nexport { default as List } from './types/List.js'\r\n\r\n/* Elements */\r\nexport { default as Circle } from './elements/Circle.js'\r\nexport { default as ClipPath } from './elements/ClipPath.js'\r\nexport { default as Container } from './elements/Container.js'\r\nexport { default as Defs } from './elements/Defs.js'\r\nexport { default as Dom } from './elements/Dom.js'\r\nexport { default as Element } from './elements/Element.js'\r\nexport { default as Ellipse } from './elements/Ellipse.js'\r\nexport { default as ForeignObject } from './elements/ForeignObject.js'\r\nexport { default as Gradient } from './elements/Gradient.js'\r\nexport { default as G } from './elements/G.js'\r\nexport { default as A } from './elements/A.js'\r\nexport { default as Image } from './elements/Image.js'\r\nexport { default as Line } from './elements/Line.js'\r\nexport { default as Marker } from './elements/Marker.js'\r\nexport { default as Mask } from './elements/Mask.js'\r\nexport { default as Path } from './elements/Path.js'\r\nexport { default as Pattern } from './elements/Pattern.js'\r\nexport { default as Polygon } from './elements/Polygon.js'\r\nexport { default as Polyline } from './elements/Polyline.js'\r\nexport { default as Rect } from './elements/Rect.js'\r\nexport { default as Shape } from './elements/Shape.js'\r\nexport { default as Stop } from './elements/Stop.js'\r\nexport { default as Style } from './elements/Style.js'\r\nexport { default as Svg } from './elements/Svg.js'\r\nexport { default as Symbol } from './elements/Symbol.js'\r\nexport { default as Text } from './elements/Text.js'\r\nexport { default as TextPath } from './elements/TextPath.js'\r\nexport { default as Tspan } from './elements/Tspan.js'\r\nexport { default as Use } from './elements/Use.js'\r\n\r\nextend([\r\n Svg,\r\n Symbol,\r\n Image,\r\n Pattern,\r\n Marker\r\n], getMethodsFor('viewbox'))\r\n\r\nextend([\r\n Line,\r\n Polyline,\r\n Polygon,\r\n Path\r\n], getMethodsFor('marker'))\r\n\r\nextend(Text, getMethodsFor('Text'))\r\nextend(Path, getMethodsFor('Path'))\r\n\r\nextend(Defs, getMethodsFor('Defs'))\r\n\r\nextend([\r\n Text,\r\n Tspan\r\n], getMethodsFor('Tspan'))\r\n\r\nextend([\r\n Rect,\r\n Ellipse,\r\n Circle,\r\n Gradient\r\n], getMethodsFor('radius'))\r\n\r\nextend(EventTarget, getMethodsFor('EventTarget'))\r\nextend(Dom, getMethodsFor('Dom'))\r\nextend(Element, getMethodsFor('Element'))\r\nextend(Shape, getMethodsFor('Shape'))\r\n// extend(Element, getConstructor('Memory'))\r\nextend(Container, getMethodsFor('Container'))\r\n\r\nextend(Runner, getMethodsFor('Runner'))\r\n\r\nList.extend(getMethodNames())\r\n\r\nregisterMorphableType([\r\n SVGNumber,\r\n Color,\r\n Box,\r\n Matrix,\r\n SVGArray,\r\n PointArray,\r\n PathArray\r\n])\r\n\r\nmakeMorphable()\r\n","export function isNode(): boolean {\n // tslint:disable-next-line:strict-type-predicates\n return typeof process !== 'undefined' && process.versions != null && process.versions.node != null\n}\n","import { Box, Container, QuerySelector, SVG } from '@svgdotjs/svg.js'\nimport { Alignment, GraphcisElement, Renderer } from '../renderer'\nimport { constants } from '../../constants'\nimport { isNode } from '../../utils/is-node'\n\nexport class SvgJsRenderer extends Renderer {\n private svg: Container\n\n constructor(container: QuerySelector | HTMLElement) {\n super(container)\n\n // initialize the SVG\n const { width } = constants\n const height = 0\n\n /*\n For some reason the container needs to be initiated differently with svgdom (node) and\n and in the browser. Might be a bug in either svg.js or svgdom. But this workaround works fine\n so I'm not going to care for now.\n */\n /* istanbul ignore else */\n if (isNode()) {\n // node (jest)\n this.svg = SVG(container) as Container\n } else {\n // browser\n this.svg = SVG().addTo(container)\n }\n\n this.svg.attr('preserveAspectRatio', 'xMidYMid meet').viewbox(0, 0, width, height)\n }\n\n title(title: string): void {\n this.svg.add(this.svg.element('title').words(title))\n }\n\n line(\n fromX: number,\n fromY: number,\n toX: number,\n toY: number,\n strokeWidth: number,\n color: string,\n ): void {\n this.svg.line(fromX, fromY, toX, toY).stroke({ color, width: strokeWidth })\n }\n\n size(width: number, height: number): void {\n this.svg.viewbox(0, 0, width, height)\n }\n\n clear(): void {\n this.svg.children().forEach((child) => child.remove())\n }\n\n remove(): void {\n this.svg.remove()\n }\n\n background(color: string): void {\n this.svg.rect().size('100%', '100%').fill(color)\n }\n\n text(\n text: string,\n x: number,\n y: number,\n fontSize: number,\n color: string,\n fontFamily: string,\n alignment: Alignment,\n classes?: string | string[],\n plain?: boolean,\n ): GraphcisElement {\n let element\n\n if (plain) {\n // create a text element centered at x,y. No SVG.js magic.\n element = this.svg\n .plain(text)\n .attr({\n x,\n y,\n })\n .font({\n family: fontFamily,\n size: fontSize,\n anchor: alignment,\n 'dominant-baseline': 'central',\n })\n .fill(color)\n .addClass(Renderer.toClassName(classes))\n } else {\n element = this.svg\n .text(text)\n .move(x, y)\n .font({\n family: fontFamily,\n size: fontSize,\n anchor: alignment,\n })\n .fill(color)\n .addClass(Renderer.toClassName(classes))\n }\n\n return SvgJsRenderer.boxToElement(element.bbox(), element.remove.bind(element))\n }\n\n circle(\n x: number,\n y: number,\n diameter: number,\n strokeWidth: number,\n strokeColor: string,\n fill?: string,\n classes?: string | string[],\n ): GraphcisElement {\n const element = this.svg\n .circle(diameter)\n .move(x, y)\n .fill(fill || 'none')\n .stroke({\n color: strokeColor,\n width: strokeWidth,\n })\n .addClass(Renderer.toClassName(classes))\n\n return SvgJsRenderer.boxToElement(element.bbox(), element.remove.bind(element))\n }\n\n rect(\n x: number,\n y: number,\n width: number,\n height: number,\n strokeWidth: number,\n strokeColor: string,\n classes?: string | string[],\n fill?: string,\n radius?: number,\n ): GraphcisElement {\n const element = this.svg\n .rect(width, height)\n .move(x, y)\n .fill(fill || 'none')\n .stroke({\n width: strokeWidth,\n color: strokeColor,\n })\n .radius(radius || 0)\n .addClass(Renderer.toClassName(classes))\n\n return SvgJsRenderer.boxToElement(element.bbox(), element.remove.bind(element))\n }\n\n triangle(\n x: number,\n y: number,\n size: number,\n strokeWidth: number,\n strokeColor: string,\n classes?: string | string[],\n fill?: string | undefined,\n ): GraphcisElement {\n const element = this.svg\n .path(Renderer.trianglePath(x, y, size))\n .move(x, y)\n .fill(fill || 'none')\n .stroke({\n width: strokeWidth,\n color: strokeColor,\n })\n .addClass(Renderer.toClassName(classes))\n\n return SvgJsRenderer.boxToElement(element.bbox(), element.remove.bind(element))\n }\n\n pentagon(\n x: number,\n y: number,\n size: number,\n strokeWidth: number,\n strokeColor: string,\n fill: string,\n classes?: string | string[],\n ): GraphcisElement {\n return this.ngon(x, y, size, strokeWidth, strokeColor, fill, 5, classes)\n }\n\n private ngon(\n x: number,\n y: number,\n size: number,\n strokeWidth: number,\n strokeColor: string,\n fill: string,\n edges: number,\n classes?: string | string[],\n ) {\n const element = this.svg\n .path(Renderer.ngonPath(x, y, size, edges))\n .move(x, y)\n .fill(fill || 'none')\n .stroke({\n width: strokeWidth,\n color: strokeColor,\n })\n .addClass(Renderer.toClassName(classes))\n\n return SvgJsRenderer.boxToElement(element.bbox(), element.remove.bind(element))\n }\n\n private static boxToElement(box: Box, remove: () => void): GraphcisElement {\n return {\n width: box.width,\n height: box.height,\n x: box.x,\n y: box.y,\n remove,\n }\n }\n}\n\nexport default SvgJsRenderer\n","export function range(length: number, from = 0): number[] {\n return Array.from({ length }, (_, i) => i + from)\n}\n","/* eslint-disable max-classes-per-file */\nimport { QuerySelector } from '@svgdotjs/svg.js'\nimport { constants } from './constants'\nimport {\n AnyFunction,\n ApiExtension,\n Constructor,\n ReturnTypeOf,\n SVGuitarPlugin,\n UnionToIntersection,\n} from './plugin'\nimport { Alignment, GraphcisElement, Renderer, RoughJsRenderer, SvgJsRenderer } from './renderer'\nimport { range } from './utils/range'\n\n// export types for Typedoc\nexport type {\n Constructor,\n ReturnTypeOf,\n SVGuitarPlugin,\n Renderer,\n Alignment,\n GraphcisElement,\n RoughJsRenderer,\n SvgJsRenderer,\n ApiExtension,\n AnyFunction,\n UnionToIntersection,\n}\n\n// Chord diagram input types (compatible with Vexchords input, see https://github.com/0xfe/vexchords)\nexport type SilentString = 'x'\nexport type OpenString = 0\nexport type Finger = [number, number | OpenString | SilentString, (string | FingerOptions)?]\nexport type Barre = {\n fromString: number\n toString: number\n fret: number\n text?: string\n color?: string\n textColor?: string\n strokeWidth?: number\n strokeColor?: string\n className?: string\n}\nexport type Chord = {\n /**\n * The fingers\n */\n fingers: Finger[]\n\n /**\n * The barre chords\n */\n barres: Barre[]\n /**\n * Position (defaults to 1). Can also be provided via {@link ChordSettings}.\n */\n position?: number\n /**\n * Title of the chart. Can also be provided via {@link ChordSettings}.\n */\n title?: string\n}\n\nexport interface FingerOptions {\n text?: string\n color?: string\n textColor?: string\n shape?: Shape\n strokeColor?: string\n strokeWidth?: number\n className?: string\n}\n\n/**\n * Value for an open string (O)\n */\nexport const OPEN: OpenString = 0\n\n/**\n * Value for a silent string (X)\n */\nexport const SILENT: SilentString = 'x'\n\n/**\n * Possible positions of the fret label (eg. \"3fr\").\n */\nexport enum FretLabelPosition {\n LEFT = 'left',\n RIGHT = 'right',\n}\n\nexport type FretMarker = DoubleFretMarker | SingleFretMarker | number\n\nexport interface SingleFretMarker {\n /**\n * Position of the fret marker. Starts at 0.\n * Position of 0 means between fret 0 and 1.\n */\n fret: number,\n\n /**\n * The color of the fret marker.\n */\n color?: string,\n\n /**\n * The stroke color of the fret marker.\n */\n strokeColor?: string,\n /**\n * The stroke color of the fret marker.\n */\n strokeWidth?: number,\n\n /**\n * Shape of the fret marker. Defaults to {@link Shape.CIRCLE}\n */\n shape?: Shape\n\n /**\n * The relative size of a fret marker\n */\n size?: number\n\n /**\n * Class name on the fret markers\n */\n className?: string\n}\nexport interface DoubleFretMarker extends SingleFretMarker {\n /**\n * Set to true if there should be two fret markers at this position\n */\n double: true\n\n /**\n * Distance between double fret markers.\n * Overrides the default {@link ChordSettings#doubleFretMarkerDistance}\n */\n distance?: number\n}\n\nexport enum Shape {\n CIRCLE = 'circle',\n SQUARE = 'square',\n TRIANGLE = 'triangle',\n PENTAGON = 'pentagon',\n}\n\nexport enum ChordStyle {\n normal = 'normal',\n handdrawn = 'handdrawn',\n}\n\nexport enum Orientation {\n vertical = 'vertical',\n horizontal = 'horizontal',\n}\n\nexport enum ElementType {\n FRET = 'fret',\n STRING = 'string',\n BARRE = 'barre',\n BARRE_TEXT = 'barre-text',\n FINGER = 'finger',\n TITLE = 'title',\n TUNING = 'tuning',\n FRET_POSITION = 'fret-position',\n FRET_MARKER = 'fret-marker',\n STRING_TEXT = 'string-text',\n SILENT_STRING = 'silent-string',\n OPEN_STRING = 'open-string',\n WATERMARK = 'watermark',\n}\n\nexport interface ChordSettings {\n /**\n * Orientation of the chord diagram. Chose between \"vertical\" or \"horizontal\". Defaults to \"vertical\".\n */\n orientation?: Orientation\n\n /**\n * Style of the chord diagram. Currently you can chose between \"normal\" and \"handdrawn\".\n */\n style?: ChordStyle\n\n /**\n * The number of strings\n */\n strings?: number\n\n /**\n * The number of frets\n */\n frets?: number,\n\n /**\n * The fret markers\n */\n fretMarkers?: FretMarker[]\n\n /**\n * Flag to show or disable all fret markers globally. This is just for convenience.\n * The fret markers can also be removed by not setting the {@link fretMarkers} property.\n */\n showFretMarkers?: boolean,\n\n /**\n * The {@link Shape} of the fret markets. Applies to all fret markets unless overridden\n * on specific fret markers.\n */\n fretMarkerShape?: Shape,\n\n /**\n * The size of a fret marker. This is relative to the space between two strings, so\n * a value of 1 means a fret marker spans from one string to another.\n */\n fretMarkerSize?: number,\n\n /**\n * The color of the fret markers.\n */\n fretMarkerColor?: string,\n\n /**\n * The stroke color of the fret markers. By default, the fret markets have no border.\n */\n fretMarkerStrokeColor?: string,\n\n /**\n * The stroke width of the fret markers. By default, the fret markets have no border.\n */\n fretMarkerStrokeWidth?: number,\n\n /**\n * The distance between the double fret markers, relative to the width\n * of the whole neck. E.g. 0.5 means the distance between the fret markers\n * is equivalent to 0.5 times the width of the whole neck.\n */\n doubleFretMarkerDistance?: number\n\n /**\n * The starting fret (first fret is 1). The position can also be provided with the {@link Chord}.\n * If the position is provided via the chord, this value will be ignored.\n */\n position?: number\n\n /**\n * These are the labels under the strings. Can be any string.\n */\n tuning?: string[]\n\n /**\n * The position of the fret label (eg. \"3fr\")\n */\n fretLabelPosition?: FretLabelPosition\n\n /**\n * The font size of the fret label\n */\n fretLabelFontSize?: number\n\n /**\n * The font size of the string labels\n */\n tuningsFontSize?: number\n\n /**\n * Size of a finger relative to the string spacing\n */\n fingerSize?: number\n\n /**\n * Color of a finger\n */\n fingerColor?: string\n\n /**\n * The color of text inside fingers or barres\n */\n fingerTextColor?: string\n\n /**\n * The size of text inside fingers or barres\n */\n fingerTextSize?: number\n\n /**\n * stroke color of a finger. Defaults to the finger color if not set\n */\n fingerStrokeColor?: string\n\n /**\n * stroke width of a finger or barre\n */\n fingerStrokeWidth?: number\n\n /**\n * stroke color of a barre chord. Defaults to the finger color if not set\n */\n barreChordStrokeColor?: string\n\n /**\n * stroke width of a barre chord\n */\n barreChordStrokeWidth?: number\n\n /**\n * Height of a fret, relative to the space between two strings\n */\n fretSize?: number\n\n /**\n * The minimum side padding (from the guitar to the edge of the SVG) relative to the whole width.\n * This is only applied if it's larger than the letters inside of the padding (eg the starting\n * fret)\n */\n sidePadding?: number\n\n /**\n * The font family used for all letters and numbers. Please not that when using the 'handdrawn'\n * chord diagram style setting the font family has no effect.\n */\n fontFamily?: string\n\n /**\n * The title of the diagram. The title can also be provided with the {@link Chord}.\n * If the title is provided in the chord, this value will be ignored.\n */\n title?: string\n\n /**\n * Font size of the title. This is only the initial font size. If the title doesn't fit, the title\n * is automatically scaled so that it fits.\n */\n titleFontSize?: number\n\n /**\n * Space between the title and the chord diagram\n */\n titleBottomMargin?: number\n\n /**\n * Global color of the whole diagram. Can be overridden with more specific color settings such as\n * @link titleColor or @link stringColor etc.\n */\n color?: string\n\n /**\n * The background color of the chord diagram. By default the background is transparent. To set the\n * background to transparent either set this to 'none' or undefined\n */\n backgroundColor?: string\n\n /**\n * The color of the title (overrides color)\n */\n titleColor?: string\n\n /**\n * The color of the strings (overrides color)\n */\n stringColor?: string\n\n /**\n * The color of the fret position (overrides color)\n */\n fretLabelColor?: string\n\n /**\n * The color of the tunings (overrides color)\n */\n tuningsColor?: string\n\n /**\n * The color of the frets (overrides color)\n */\n fretColor?: string\n\n /**\n * Barre chord rectangle border radius relative to the fingerSize (eg. 1 means completely round\n * edges, 0 means not rounded at all)\n */\n barreChordRadius?: number\n\n /**\n * Size of the Xs and Os above empty strings relative to the space between two strings\n */\n emptyStringIndicatorSize?: number\n\n /**\n * Global stroke width\n */\n strokeWidth?: number\n\n /**\n * The width of the nut (only used if position is 1)\n */\n nutWidth?: number\n\n /**\n * The width of the nut (only used if position is 1). If `nutWidth` is set, this value will be ignored.\n *\n * @deprecated Use `nutWidth` instead. This will be removed in the next major version.\n */\n topFretWidth?: number\n\n /**\n * If this is set to true, the fret (eg. 3fr) will not be shown. If the position is 1 the\n * nut will have the same width as all other frets.\n */\n noPosition?: boolean\n\n /**\n * When set to true the distance between the chord diagram and the top of the SVG stayes the same,\n * no matter if a title is defined or not.\n */\n fixedDiagramPosition?: boolean\n\n /**\n * Text of the watermark\n */\n watermark?: string\n\n /**\n * Font size of the watermark\n */\n watermarkFontSize?: number\n\n /**\n * Color of the watermark (overrides color)\n */\n watermarkColor?: string\n\n /**\n * Font-family of the watermark (overrides fontFamily)\n */\n watermarkFontFamily?: string\n\n /**\n * The title of the SVG. This is not visible in the SVG, but can be used for accessibility.\n */\n svgTitle?: string\n}\n\n/**\n * All required chord settings. This interface is only used internally. From the outside, none of\n * the chord settings are required.\n */\ninterface RequiredChordSettings {\n style: ChordStyle\n strings: number\n frets: number\n position: number\n tuning: string[]\n tuningsFontSize: number\n fretLabelFontSize: number\n fretLabelPosition: FretLabelPosition\n fingerSize: number\n fingerTextColor: string\n fingerTextSize: number\n fingerStrokeWidth: number\n barreChordStrokeWidth: number\n sidePadding: number\n titleFontSize: number\n titleBottomMargin: number\n color: string\n emptyStringIndicatorSize: number\n strokeWidth: number\n nutWidth: number\n fretSize: number\n barreChordRadius: number\n fontFamily: string\n shape: Shape\n orientation: Orientation\n watermarkFontSize: number\n noPosition: boolean\n showFretMarkers: boolean,\n fretMarkerSize: number,\n fretMarkerShape: Shape,\n fretMarkerColor: string,\n doubleFretMarkerDistance: number,\n}\n\nconst defaultSettings: RequiredChordSettings = {\n style: ChordStyle.normal,\n strings: 6,\n frets: 5,\n position: 1,\n tuning: [],\n tuningsFontSize: 28,\n fretLabelFontSize: 38,\n fretLabelPosition: FretLabelPosition.RIGHT,\n fingerSize: 0.65,\n fingerTextColor: '#FFF',\n fingerTextSize: 24,\n fingerStrokeWidth: 0,\n barreChordStrokeWidth: 0,\n sidePadding: 0.2,\n titleFontSize: 48,\n titleBottomMargin: 0,\n color: '#000',\n emptyStringIndicatorSize: 0.6,\n strokeWidth: 2,\n nutWidth: 10,\n fretSize: 1.5,\n barreChordRadius: 0.25,\n fontFamily: 'Arial, \"Helvetica Neue\", Helvetica, sans-serif',\n shape: Shape.CIRCLE,\n orientation: Orientation.vertical,\n watermarkFontSize: 12,\n noPosition: false,\n fretMarkerColor: 'rgba(0, 0, 0, 0.2)',\n fretMarkerSize: 0.4,\n doubleFretMarkerDistance: 0.4,\n fretMarkerShape: Shape.CIRCLE,\n showFretMarkers: true,\n}\n\nexport class SVGuitarChord {\n static plugins: SVGuitarPlugin[] = []\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n static plugin<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n S extends Constructor & { plugins: any[] },\n T extends SVGuitarPlugin | SVGuitarPlugin[],\n >(this: S, plugin: T) {\n const currentPlugins = this.plugins\n\n const BaseWithPlugins = class extends this {\n static plugins = currentPlugins.concat(plugin)\n }\n\n return BaseWithPlugins as typeof BaseWithPlugins & Constructor>\n }\n\n private rendererInternal?: Renderer\n\n private settings: ChordSettings = {}\n\n private chordInternal: Chord = { fingers: [], barres: [] }\n\n constructor(private container: QuerySelector | HTMLElement) {\n // apply plugins\n // https://stackoverflow.com/a/16345172\n const classConstructor = this.constructor as typeof SVGuitarChord\n classConstructor.plugins.forEach((plugin) => {\n Object.assign(this, plugin(this))\n })\n }\n\n private get renderer(): Renderer {\n if (!this.rendererInternal) {\n const style = this.settings.style ?? defaultSettings.style\n\n switch (style) {\n case ChordStyle.normal:\n this.rendererInternal = new SvgJsRenderer(this.container)\n break\n case ChordStyle.handdrawn:\n this.rendererInternal = new RoughJsRenderer(this.container)\n break\n default:\n throw new Error(`${style} is not a valid chord diagram style.`)\n }\n }\n\n return this.rendererInternal\n }\n\n configure(settings: ChordSettings): SVGuitarChord {\n SVGuitarChord.sanityCheckSettings(settings)\n\n // special case for style: remove current renderer instance if style changed. The new renderer\n // instance will be created lazily.\n if (settings.style !== this.settings.style) {\n this.renderer.remove()\n delete this.rendererInternal\n }\n\n this.settings = { ...this.settings, ...settings }\n\n return this\n }\n\n chord(chord: Chord): SVGuitarChord {\n this.chordInternal = chord\n\n return this\n }\n\n draw(): { width: number; height: number } {\n this.clear()\n this.drawBackground()\n\n if (this.settings.svgTitle) {\n this.renderer.title(this.settings.svgTitle)\n }\n\n let y\n\n y = this.drawTitle(this.settings.titleFontSize ?? defaultSettings.titleFontSize)\n y = this.drawEmptyStringIndicators(y)\n y = this.drawTopFret(y)\n this.drawPosition(y)\n y = this.drawGrid(y)\n y = this.drawTunings(y)\n y = this.drawWatermark(y)\n\n // now set the final height of the svg (and add some padding relative to the fret spacing)\n y += this.fretSpacing() / 10\n\n const width = this.width(constants.width, y)\n const height = this.height(y, constants.width)\n\n this.renderer.size(width, height)\n\n this.drawTopEdges(y)\n\n return {\n width: constants.width,\n height: y,\n }\n }\n\n static sanityCheckSettings(settings: Partial): void {\n if (typeof settings.strings !== 'undefined' && settings.strings <= 1) {\n throw new Error('Must have at least 2 strings')\n }\n\n if (typeof settings.frets !== 'undefined' && settings.frets < 0) {\n throw new Error('Cannot have less than 0 frets')\n }\n\n if (typeof settings.position !== 'undefined' && settings.position < 1) {\n throw new Error('Position cannot be less than 1')\n }\n\n if (typeof settings.fretSize !== 'undefined' && settings.fretSize < 0) {\n throw new Error('Fret size cannot be smaller than 0')\n }\n\n if (typeof settings.fingerSize !== 'undefined' && settings.fingerSize < 0) {\n throw new Error('Finger size cannot be smaller than 0')\n }\n\n if (typeof settings.strokeWidth !== 'undefined' && settings.strokeWidth < 0) {\n throw new Error('Stroke width cannot be smaller than 0')\n }\n\n if (typeof settings.doubleFretMarkerDistance !== 'undefined'\n && settings.doubleFretMarkerDistance < 0\n && settings.doubleFretMarkerDistance > 1\n ) {\n throw new Error('Double fret marker distance has to be a number between [0, 1]')\n }\n }\n\n private drawTunings(y: number) {\n // add some padding relative to the fret spacing\n const padding = this.fretSpacing() / 5\n const stringXPositions = this.stringXPos()\n const strings = this.numStrings()\n const color = this.settings.tuningsColor ?? this.settings.color ?? defaultSettings.color\n const tuning = this.settings.tuning ?? defaultSettings.tuning\n const fontFamily = this.settings.fontFamily ?? defaultSettings.fontFamily\n const tuningsFontSize = this.settings.tuningsFontSize ?? defaultSettings.tuningsFontSize\n\n let text: GraphcisElement | undefined\n\n tuning.forEach((tuning_, i): void => {\n if (i < strings) {\n const classNames = [ElementType.TUNING, `${ElementType.TUNING}-${i}`]\n\n const { x: textX, y: textY } = this.coordinates(stringXPositions[i], y + padding)\n\n const tuningText = this.renderer.text(\n tuning_,\n textX,\n textY,\n tuningsFontSize,\n color,\n fontFamily,\n Alignment.MIDDLE,\n classNames,\n true,\n )\n\n if (tuning_) {\n text = tuningText\n }\n }\n })\n\n if (text) {\n return y + this.height(text.height, text.width)\n }\n\n return y\n }\n\n private drawWatermark(y: number): number {\n if (!this.settings.watermark) {\n return y\n }\n\n const padding = this.fretSpacing() / 5\n const orientation = this.settings.orientation ?? defaultSettings.orientation\n const stringXPositions = this.stringXPos()\n const endX = stringXPositions[stringXPositions.length - 1]\n const startX = stringXPositions[0]\n\n const color = this.settings.watermarkColor ?? this.settings.color ?? defaultSettings.color\n const fontSize = this.settings.watermarkFontSize ?? defaultSettings.watermarkFontSize\n const fontFamily =\n this.settings.watermarkFontFamily ?? this.settings.fontFamily ?? defaultSettings.fontFamily\n\n let textX\n let textY\n\n if (orientation === Orientation.vertical) {\n textX = startX + (endX - startX) / 2\n textY = y + padding\n } else {\n const lastFret = y\n const firstFret = y - (this.numFrets()) * this.fretSpacing()\n textX = firstFret + (lastFret - firstFret) / 2\n textY = this.y(startX, 0) + padding\n }\n\n const { height } = this.renderer.text(\n this.settings.watermark,\n textX,\n textY,\n fontSize,\n color,\n fontFamily,\n Alignment.MIDDLE,\n ElementType.WATERMARK,\n )\n\n return y + height * 2\n }\n\n private drawPosition(y: number): void {\n const position =\n this.chordInternal.position ?? this.settings.position ?? defaultSettings.position\n const noPosition = this.settings.noPosition ?? defaultSettings.noPosition\n\n if (position <= 1 || noPosition) {\n return\n }\n\n const stringXPositions = this.stringXPos()\n const endX = stringXPositions[stringXPositions.length - 1]\n const startX = stringXPositions[0]\n const text = `${position}fr`\n const size = this.settings.fretLabelFontSize ?? defaultSettings.fretLabelFontSize\n const color = this.settings.fretLabelColor ?? this.settings.color ?? defaultSettings.color\n const fingerSize =\n this.stringSpacing() * (this.settings.fingerSize ?? defaultSettings.fingerSize)\n const fontFamily = this.settings.fontFamily ?? defaultSettings.fontFamily\n const fretLabelPosition = this.settings.fretLabelPosition ?? defaultSettings.fretLabelPosition\n\n // add some padding relative to the string spacing. Also make sure the padding is at least\n // 1/2 fingerSize plus some padding to prevent the finger overlapping the position label.\n const padding = Math.max(this.stringSpacing() / 5, fingerSize / 2 + 5)\n const className = ElementType.FRET_POSITION\n\n if (this.orientation === Orientation.vertical) {\n const drawText = (sizeMultiplier = 1) => {\n if (sizeMultiplier < 0.01) {\n // text does not fit: don't render it at all.\n // eslint-disable-next-line no-console\n console.warn('Not enough space to draw the starting fret')\n return\n }\n\n if (fretLabelPosition === FretLabelPosition.RIGHT) {\n const svgText = this.renderer.text(\n text,\n endX + padding,\n y,\n size * sizeMultiplier,\n color,\n fontFamily,\n Alignment.LEFT,\n className,\n )\n\n const { width, x } = svgText\n if (x + width > constants.width) {\n svgText.remove()\n drawText(sizeMultiplier * 0.9)\n }\n } else {\n const svgText = this.renderer.text(\n text,\n 1 / sizeMultiplier + startX - padding,\n y,\n size * sizeMultiplier,\n color,\n fontFamily,\n Alignment.RIGHT,\n className,\n )\n\n const { x } = svgText\n if (x < 0) {\n svgText.remove()\n drawText(sizeMultiplier * 0.8)\n }\n }\n }\n\n drawText()\n\n return\n }\n\n // Horizontal orientation\n const { x: textX, y: textY } =\n fretLabelPosition === FretLabelPosition.RIGHT\n ? this.coordinates(endX + padding, y)\n : this.coordinates(startX - padding, y)\n this.renderer.text(\n text,\n textX,\n textY,\n size,\n color,\n fontFamily,\n Alignment.MIDDLE,\n className,\n true,\n )\n }\n\n /**\n * Hack to prevent the empty space of the svg from being cut off without having to define a\n * fixed width\n */\n private drawTopEdges(y: number) {\n const orientation = this.settings.orientation ?? defaultSettings.orientation\n\n const xTopRight = orientation === Orientation.vertical ? constants.width : y\n\n this.renderer.circle(0, 0, 0, 0, 'transparent', 'none', 'top-left')\n this.renderer.circle(xTopRight, 0, 0, 0, 'transparent', 'none', 'top-right')\n }\n\n private drawBackground() {\n if (this.settings.backgroundColor) {\n this.renderer.background(this.settings.backgroundColor)\n }\n }\n\n private drawTopFret(y: number): number {\n const stringXpositions = this.stringXPos()\n const strokeWidth = this.settings.strokeWidth ?? defaultSettings.strokeWidth\n const nutWidth =\n this.settings.topFretWidth ?? this.settings.nutWidth ?? defaultSettings.nutWidth\n const startX = stringXpositions[0] - strokeWidth / 2\n const endX = stringXpositions[stringXpositions.length - 1] + strokeWidth / 2\n const position =\n this.chordInternal.position ?? this.settings.position ?? defaultSettings.position\n const color = this.settings.fretColor ?? this.settings.color ?? defaultSettings.color\n const noPositon = this.settings.noPosition ?? defaultSettings.noPosition\n\n let fretSize: number\n if (position > 1 || noPositon) {\n fretSize = strokeWidth\n } else {\n fretSize = nutWidth\n }\n\n const { x: lineX1, y: lineY1 } = this.coordinates(startX, y + fretSize / 2)\n const { x: lineX2, y: lineY2 } = this.coordinates(endX, y + fretSize / 2)\n\n this.renderer.line(lineX1, lineY1, lineX2, lineY2, fretSize, color, ['top-fret', 'fret-0'])\n\n return y + fretSize\n }\n\n private stringXPos(): number[] {\n const strings = this.numStrings()\n const sidePadding = this.settings.sidePadding ?? defaultSettings.sidePadding\n const startX = constants.width * sidePadding\n const stringsSpacing = this.stringSpacing()\n\n return range(strings).map((i) => startX + stringsSpacing * i)\n }\n\n private numStrings() {\n return this.settings.strings ?? defaultSettings.strings\n }\n\n private numFrets() {\n return this.settings.frets ?? defaultSettings.frets\n }\n\n private stringSpacing(): number {\n const sidePadding = this.settings.sidePadding ?? defaultSettings.sidePadding\n const strings = this.numStrings()\n const startX = constants.width * sidePadding\n const endX = constants.width - startX\n const width = endX - startX\n\n return width / (strings - 1)\n }\n\n private fretSpacing(): number {\n const stringSpacing = this.stringSpacing()\n const fretSize = this.settings.fretSize ?? defaultSettings.fretSize\n\n return stringSpacing * fretSize\n }\n\n private fretLinesYPos(startY: number): number[] {\n const frets = this.numFrets()\n const fretSpacing = this.fretSpacing()\n\n return range(frets, 1).map((i) => startY + fretSpacing * i)\n }\n\n private toArrayIndex(stringIndex: number): number {\n const strings = this.numStrings()\n\n return Math.abs(stringIndex - strings)\n }\n\n private drawEmptyStringIndicators(y: number): number {\n const stringXPositions = this.stringXPos()\n const stringSpacing = this.stringSpacing()\n const emptyStringIndicatorSize =\n this.settings.emptyStringIndicatorSize ?? defaultSettings.emptyStringIndicatorSize\n const size = emptyStringIndicatorSize * stringSpacing\n // add some space above and below the indicator, relative to the indicator size\n const padding = size / 3\n const color = this.settings.color ?? defaultSettings.color\n const strokeWidth = this.settings.strokeWidth ?? defaultSettings.strokeWidth\n\n let hasEmpty = false\n\n this.chordInternal.fingers\n .filter(([, value]) => value === SILENT || value === OPEN)\n .map(([index, value, textOrOptions]) => [\n this.toArrayIndex(index),\n value,\n textOrOptions,\n ])\n .forEach(([stringIndex, value, textOrOptions]) => {\n hasEmpty = true\n\n const fingerOptions = SVGuitarChord.getFingerOptions(textOrOptions)\n const effectiveStrokeWidth = fingerOptions.strokeWidth ?? strokeWidth\n const effectiveStrokeColor = fingerOptions.strokeColor ?? color\n\n if (fingerOptions.text) {\n const textColor = fingerOptions.textColor ?? this.settings.color ?? defaultSettings.color\n const textSize = this.settings.fingerTextSize ?? defaultSettings.fingerTextSize\n const fontFamily = this.settings.fontFamily ?? defaultSettings.fontFamily\n const classNames = [ElementType.STRING_TEXT, `${ElementType.STRING_TEXT}-${stringIndex}`]\n\n const { x: textX, y: textY } = this.coordinates(\n stringXPositions[stringIndex],\n y + padding + size / 2,\n )\n\n this.renderer.text(\n fingerOptions.text,\n textX,\n textY,\n textSize,\n textColor,\n fontFamily,\n Alignment.MIDDLE,\n classNames,\n true,\n )\n }\n\n if (value === OPEN) {\n // draw an O\n const classNames = [ElementType.OPEN_STRING, `${ElementType.OPEN_STRING}-${stringIndex}`]\n\n const { x: lineX1, y: lineY1 } = this.rectCoordinates(\n stringXPositions[stringIndex] - size / 2,\n y + padding,\n size,\n size,\n )\n\n this.renderer.circle(\n lineX1,\n lineY1,\n size,\n effectiveStrokeWidth,\n effectiveStrokeColor,\n undefined,\n classNames,\n )\n } else {\n // draw an X\n const classNames = [\n ElementType.SILENT_STRING,\n `${ElementType.SILENT_STRING}-${stringIndex}`,\n ]\n const startX = stringXPositions[stringIndex] - size / 2\n const endX = startX + size\n const startY = y + padding\n const endY = startY + size\n\n const { x: line1X1, y: line1Y1 } = this.coordinates(startX, startY)\n const { x: line1X2, y: line1Y2 } = this.coordinates(endX, endY)\n\n this.renderer.line(\n line1X1,\n line1Y1,\n line1X2,\n line1Y2,\n effectiveStrokeWidth,\n effectiveStrokeColor,\n classNames,\n )\n\n const { x: line2X1, y: line2Y1 } = this.coordinates(startX, endY)\n const { x: line2X2, y: line2Y2 } = this.coordinates(endX, startY)\n\n this.renderer.line(\n line2X1,\n line2Y1,\n line2X2,\n line2Y2,\n effectiveStrokeWidth,\n effectiveStrokeColor,\n classNames,\n )\n }\n })\n\n return hasEmpty || this.settings.fixedDiagramPosition ? y + size + 2 * padding : y + padding\n }\n\n private drawGrid(y: number): number {\n const frets = this.numFrets()\n const fretSize = this.settings.fretSize ?? defaultSettings.fretSize\n const relativeFingerSize = this.settings.fingerSize ?? defaultSettings.fingerSize\n const stringXPositions = this.stringXPos()\n const fretYPositions = this.fretLinesYPos(y)\n const stringSpacing = this.stringSpacing()\n const fretSpacing = stringSpacing * fretSize\n const height = fretSpacing * frets\n\n const startX = stringXPositions[0]\n const endX = stringXPositions[stringXPositions.length - 1]\n\n const fingerSize = relativeFingerSize * stringSpacing\n const fingerColor = this.settings.fingerColor ?? this.settings.color ?? defaultSettings.color\n const fretColor = this.settings.fretColor ?? this.settings.color ?? defaultSettings.color\n const barreChordRadius = this.settings.barreChordRadius ?? defaultSettings.barreChordRadius\n const strokeWidth = this.settings.strokeWidth ?? defaultSettings.strokeWidth\n const fontFamily = this.settings.fontFamily ?? defaultSettings.fontFamily\n const fingerTextColor = this.settings.fingerTextColor ?? defaultSettings.fingerTextColor\n const fingerTextSize = this.settings.fingerTextSize ?? defaultSettings.fingerTextSize\n\n // draw frets\n fretYPositions.forEach((fretY, i) => {\n const classNames = [ElementType.FRET, `${ElementType.FRET}-${i}`]\n const { x: lineX1, y: lineY1 } = this.coordinates(startX, fretY)\n const { x: lineX2, y: lineY2 } = this.coordinates(endX, fretY)\n\n this.renderer.line(lineX1, lineY1, lineX2, lineY2, strokeWidth, fretColor, classNames)\n })\n\n // draw strings\n stringXPositions.forEach((stringX, i) => {\n const classNames = [ElementType.STRING, `${ElementType.STRING}-${i}`]\n\n const { x: lineX1, y: lineY1 } = this.coordinates(stringX, y)\n const { x: lineX2, y: lineY2 } = this.coordinates(stringX, y + height + strokeWidth / 2)\n\n this.renderer.line(lineX1, lineY1, lineX2, lineY2, strokeWidth, fretColor, classNames)\n })\n\n // draw barre chords\n this.chordInternal.barres.forEach(\n ({\n fret,\n fromString,\n toString,\n text,\n color,\n textColor,\n strokeColor,\n className,\n strokeWidth: individualBarreChordStrokeWidth,\n }) => {\n const barreCenterY = fretYPositions[fret - 1] - strokeWidth / 4 - fretSpacing / 2\n const fromStringX = stringXPositions[this.toArrayIndex(fromString)]\n const distance = Math.abs(toString - fromString) * stringSpacing\n\n const barreChordStrokeColor =\n strokeColor ??\n this.settings.barreChordStrokeColor ??\n this.settings.fingerColor ??\n this.settings.color ??\n defaultSettings.color\n const barreChordStrokeWidth =\n individualBarreChordStrokeWidth ??\n this.settings.barreChordStrokeWidth ??\n defaultSettings.barreChordStrokeWidth\n\n const classNames = [\n ElementType.BARRE,\n `${ElementType.BARRE}-fret-${fret - 1}`,\n ...(className ? [className] : []),\n ]\n\n const barreWidth = distance + stringSpacing / 2\n const barreHeight = fingerSize\n\n const {\n x: rectX,\n y: rectY,\n height: rectHeight,\n width: rectWidth,\n } = this.rectCoordinates(\n fromStringX - stringSpacing / 4,\n barreCenterY - fingerSize / 2,\n barreWidth,\n barreHeight,\n )\n\n this.renderer.rect(\n rectX,\n rectY,\n rectWidth,\n rectHeight,\n barreChordStrokeWidth,\n barreChordStrokeColor,\n classNames,\n color ?? fingerColor,\n fingerSize * barreChordRadius,\n )\n\n // draw text on the barre chord\n if (text) {\n const textClassNames = [ElementType.BARRE_TEXT, `${ElementType.BARRE_TEXT}-${fret}`]\n\n const { x: textX, y: textY } = this.coordinates(fromStringX + distance / 2, barreCenterY)\n\n this.renderer.text(\n text,\n textX,\n textY,\n fingerTextSize,\n textColor ?? fingerTextColor,\n fontFamily,\n Alignment.MIDDLE,\n textClassNames,\n true,\n )\n }\n },\n )\n\n // draw fingers\n this.chordInternal.fingers\n .filter(([, value]) => value !== SILENT && value !== OPEN)\n .map<[number, number, string | FingerOptions | undefined]>(\n ([stringIndex, fretIndex, text]) => [\n this.toArrayIndex(stringIndex),\n fretIndex as number,\n text,\n ],\n )\n .forEach(([stringIndex, fretIndex, textOrOptions]) => {\n const fingerCenterX = startX + stringIndex * stringSpacing\n const fingerCenterY = y + fretIndex * fretSpacing - fretSpacing / 2\n const fingerOptions = SVGuitarChord.getFingerOptions(textOrOptions)\n\n const classNames = [\n ElementType.FINGER,\n `${ElementType.FINGER}-string-${stringIndex}`,\n `${ElementType.FINGER}-fret-${fretIndex - 1}`,\n `${ElementType.FINGER}-string-${stringIndex}-fret-${fretIndex - 1}`,\n ...(fingerOptions.className ? [fingerOptions.className] : []),\n ]\n\n this.drawFinger(\n fingerCenterX,\n fingerCenterY,\n fingerSize,\n fingerColor,\n fingerTextSize,\n fontFamily,\n fingerOptions,\n classNames,\n )\n })\n\n if (this.settings.showFretMarkers ?? defaultSettings.showFretMarkers) {\n this.settings.fretMarkers\n ?.forEach((fretMarker) => {\n const fretMarkerOptions = (typeof fretMarker == 'number' ? {\n fret: fretMarker,\n } : fretMarker) as DoubleFretMarker | SingleFretMarker\n\n if (fretMarkerOptions.fret >= this.numFrets()) {\n // don't draw fret markers outside the chord diagram\n return;\n }\n\n const fretMarkerIndex = fretMarkerOptions.fret\n const fretMarkerCenterX = constants.width / 2\n const fretMarkerCenterY = y + (fretMarkerIndex + 1) * fretSpacing - fretSpacing / 2\n const fretMarkerSize = this.settings.fretMarkerSize ?? defaultSettings.fretMarkerSize\n const fretMarkerColor = this.settings.fretMarkerColor ?? defaultSettings.fretMarkerColor\n\n const classNames = [\n ElementType.FRET_MARKER,\n `${ElementType.FRET_MARKER}-fret-${fretMarkerIndex}`,\n ...(fretMarkerOptions.className ?? []),\n ]\n\n if ('double' in fretMarkerOptions) {\n this.stringSpacing()\n const doubleFretMarkerDistance = fretMarkerOptions.distance ?? this.settings.doubleFretMarkerDistance ?? defaultSettings.doubleFretMarkerDistance\n\n const neckWidth = (this.numStrings() - 1) * this.stringSpacing();\n const fretMarkerDistanceFromCenter = neckWidth * doubleFretMarkerDistance / 2\n\n this.drawFretMarker(\n fretMarkerCenterX - fretMarkerDistanceFromCenter,\n fretMarkerCenterY,\n fretMarkerSize,\n fretMarkerColor,\n fretMarker,\n classNames\n )\n this.drawFretMarker(\n fretMarkerCenterX + fretMarkerDistanceFromCenter,\n fretMarkerCenterY,\n fretMarkerSize,\n fretMarkerColor,\n fretMarker,\n classNames\n )\n } else {\n this.drawFretMarker(\n fretMarkerCenterX,\n fretMarkerCenterY,\n fretMarkerSize,\n fretMarkerColor,\n fretMarker,\n classNames\n )\n }\n });\n }\n\n return y + height\n }\n\n private drawFretMarker(\n x: number,\n y: number,\n size: number,\n color: string,\n fretMarketOptions: FretMarker,\n classNames: string[],\n ) {\n const markerOptions = typeof fretMarketOptions === 'number' ? {fret: fretMarketOptions} : fretMarketOptions\n\n const shape = markerOptions.shape ?? defaultSettings.fretMarkerShape\n const fretMarkerColor = markerOptions.color ?? this.settings.fretMarkerColor ?? defaultSettings.fretMarkerColor\n const fretMarkerStrokeColor = markerOptions.strokeColor ?? this.settings.fretMarkerStrokeColor ?? color\n const fretMarkerStrokeWidth = markerOptions.strokeWidth ?? this.settings.fretMarkerStrokeWidth ?? 0\n\n const fretMarkerSize = this.stringSpacing() * (markerOptions.size ?? size)\n const startX = x - fretMarkerSize / 2\n const startY = y - fretMarkerSize / 2\n\n const classNamesWithShape = [...classNames, `${ElementType.FRET_MARKER}-${shape}`]\n\n const { x: x0, y: y0 } = this.rectCoordinates(startX, startY, fretMarkerSize, fretMarkerSize)\n\n this.drawShape(\n shape,\n x0,\n y0,\n fretMarkerSize,\n fretMarkerStrokeWidth,\n fretMarkerStrokeColor,\n fretMarkerColor ?? color,\n classNamesWithShape\n )\n\n }\n\n private drawFinger(\n x: number,\n y: number,\n size: number,\n color: string,\n textSize: number,\n fontFamily: string,\n fingerOptions: FingerOptions,\n classNames: string[],\n ) {\n const shape = fingerOptions.shape ?? defaultSettings.shape\n const fingerTextColor =\n fingerOptions.textColor ?? this.settings.fingerTextColor ?? defaultSettings.fingerTextColor\n const fingerStrokeColor =\n fingerOptions.strokeColor ??\n this.settings.fingerStrokeColor ??\n this.settings.fingerColor ??\n this.settings.color ??\n defaultSettings.color\n const fingerStrokeWidth =\n fingerOptions.strokeWidth ??\n this.settings.fingerStrokeWidth ??\n defaultSettings.fingerStrokeWidth\n const startX = x - size / 2\n const startY = y - size / 2\n\n const classNamesWithShape = [...classNames, `${ElementType.FINGER}-${shape}`]\n\n const { x: x0, y: y0 } = this.rectCoordinates(startX, startY, size, size)\n\n this.drawShape(\n shape,\n x0,\n y0,\n size,\n fingerStrokeWidth,\n fingerStrokeColor,\n fingerOptions.color ?? color,\n classNamesWithShape\n )\n\n // draw text on the finger\n const textClassNames = [...classNames, `${ElementType.FINGER}-text`]\n if (fingerOptions.text) {\n const { x: textX, y: textY } = this.coordinates(x, y)\n\n this.renderer.text(\n fingerOptions.text,\n textX,\n textY,\n textSize,\n fingerOptions.textColor ?? fingerTextColor,\n fontFamily,\n Alignment.MIDDLE,\n textClassNames,\n true,\n )\n }\n }\n\n private drawShape(\n shape: Shape,\n x: number,\n y: number,\n size: number,\n strokeWidth: number,\n strokeColor: string,\n fillColor: string,\n classNames: string[]\n ) {\n switch (shape) {\n case Shape.CIRCLE:\n this.renderer.circle(\n x,\n y,\n size,\n strokeWidth,\n strokeColor,\n fillColor,\n classNames,\n )\n break\n case Shape.SQUARE:\n this.renderer.rect(\n x,\n y,\n size,\n size,\n strokeWidth,\n strokeColor,\n classNames,\n fillColor,\n )\n break\n case Shape.TRIANGLE:\n this.renderer.triangle(\n x,\n y,\n size,\n strokeWidth,\n strokeColor,\n classNames,\n fillColor,\n )\n break\n case Shape.PENTAGON:\n this.renderer.pentagon(\n x,\n y,\n size,\n strokeWidth,\n strokeColor,\n fillColor,\n classNames,\n )\n break\n default:\n throw new Error(\n `Invalid shape \"${shape}\". Valid shapes are: ${Object.values(Shape)\n .map((val) => `\"${val}\"`)\n .join(', ')}.`,\n )\n }\n }\n\n private drawTitle(size: number): number {\n const color = this.settings.color ?? defaultSettings.color\n const titleBottomMargin = this.settings.titleBottomMargin ?? defaultSettings.titleBottomMargin\n const fontFamily = this.settings.fontFamily ?? defaultSettings.fontFamily\n\n // This is somewhat of a hack to get a steady diagram position: If no title is defined we initially\n // render an 'X' and later remove it again. That way we get the same y as if there was a title. I tried\n // just rendering a space but that doesn't work.\n const title =\n this.chordInternal.title ??\n this.settings.title ??\n (this.settings.fixedDiagramPosition ? 'X' : '')\n\n // draw the title\n if (this.orientation === Orientation.vertical) {\n const { x, y, width, height, remove } = this.renderer.text(\n title,\n constants.width / 2,\n 5,\n size,\n color,\n fontFamily,\n Alignment.MIDDLE,\n ElementType.TITLE,\n )\n\n // check if the title fits. If not, try with a smaller size\n if (x < -0.0001) {\n remove()\n\n // try again with smaller font\n return this.drawTitle(size * (constants.width / width) * 0.97)\n }\n\n if (!this.settings.title && this.settings.fixedDiagramPosition) {\n remove()\n }\n\n return y + height + titleBottomMargin\n }\n\n // render temporary text to get the height of the title\n const { remove: removeTempText, width } = this.renderer.text(\n title,\n 0,\n 0,\n size,\n color,\n fontFamily,\n Alignment.LEFT,\n ElementType.TITLE,\n )\n removeTempText()\n\n const { x: textX, y: textY } = this.rectCoordinates(constants.width / 2, 5, 0, 0)\n\n const { remove } = this.renderer.text(\n title,\n textX,\n textY,\n size,\n color,\n fontFamily,\n Alignment.LEFT,\n ElementType.TITLE,\n true,\n )\n\n if (!this.settings.title && this.settings.fixedDiagramPosition) {\n remove()\n }\n\n return width + titleBottomMargin\n }\n\n clear(): void {\n this.renderer.clear()\n }\n\n /**\n * Completely remove the diagram from the DOM\n */\n remove(): void {\n this.renderer.remove()\n }\n\n /**\n * Helper method to get an options object from the 3rd array value for a finger, that can either\n * be undefined, a string or and options object. This method will return an options object in\n * any case, so it's easier to work with this third value.\n *\n * @param textOrOptions\n */\n private static getFingerOptions(\n textOrOptions: string | FingerOptions | undefined,\n ): FingerOptions {\n if (!textOrOptions) {\n return {}\n }\n\n if (typeof textOrOptions === 'string') {\n return {\n text: textOrOptions,\n }\n }\n\n return textOrOptions\n }\n\n /**\n * rotates x value if orientation is horizontal\n *\n * @param x x in vertical orientation\n * @param y y in vertical orientation\n * @returns\n */\n private x(x: number, y: number): number {\n return this.orientation === Orientation.vertical ? x : y\n }\n\n /**\n * rotates y value if orientation is horizontal\n *\n * @param x x in vertical orientation\n * @param y y in vertical orientation\n * @returns\n */\n private y(x: number, y: number): number {\n return this.orientation === Orientation.vertical ? y : Math.abs(x - constants.width)\n }\n\n /**\n * rotates coordinates if orientation is horizontal\n *\n * @param x x in vertical orientation\n * @param y y in vertical orientation\n * @returns\n */\n private coordinates(x: number, y: number): { x: number; y: number } {\n return {\n x: this.x(x, y),\n y: this.y(x, y),\n }\n }\n\n /**\n * rotates coordinates of a rectangle if orientation is horizontal\n *\n * @param x x in vertical orientation\n * @param y y in vertical orientation\n * @param width width in vertical orientation\n * @param height height in vertical orientation\n * @returns\n */\n private rectCoordinates(\n x: number,\n y: number,\n width: number,\n height: number,\n ): { x: number; y: number; width: number; height: number } {\n if (this.orientation === Orientation.vertical) {\n return {\n x,\n y,\n width,\n height,\n }\n }\n\n return {\n x: this.x(x, y),\n y: this.y(x, y) - width,\n width: this.width(width, height),\n height: this.height(height, width),\n }\n }\n\n /**\n * rotates height if orientation is horizontal\n *\n * @param height_ height in vertical orientation\n * @param width width in vertical orientation\n * @returns\n */\n private height(height_: number, width: number): number {\n return this.orientation === Orientation.vertical ? height_ : width\n }\n\n /**\n * rotates width if orientation is horizontal\n *\n * @param width_ width in vertical orientation\n * @param height height in vertical orientation\n * @returns\n */\n private width(width_: number, height: number): number {\n return this.orientation === Orientation.horizontal ? height : width_\n }\n\n private get orientation(): Orientation {\n return this.settings.orientation ?? defaultSettings.orientation\n }\n}\n"],"names":["i","A","y","x","G","rough","methods","defaults","width","height","Symbol","FretLabelPosition","Shape","ChordStyle","Orientation","ElementType"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAIO,IAAM,SAAS,GAAmB;IACvC;;IAEG;IACH,IAAA,KAAK,EAAE,GAAG;KACX;;ICTD,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,GAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,C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AAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAC,CAAC,CAAC,OAAM,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAMA,GAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAC,CAAC,IAAI,EAAE,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,KAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC,OAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAI,CAAC,GAAG,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,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CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAACA,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAACA,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACA,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACA,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACA,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACA,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACA,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACA,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACA,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACA,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACA,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACA,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,KAAI,CAAC,MAAM,CAAC,CAACA,GAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAACA,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAACA,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAACA,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAACA,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAACA,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAACA,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAACA,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAA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C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,KAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAA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C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAACA,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,OAAO,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,aAAa,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CA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IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,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"}