From 264a52990def778e7ba84f5f184170f8e9966ac3 Mon Sep 17 00:00:00 2001 From: Benjamin Fleming Date: Mon, 11 Dec 2017 13:31:05 +1100 Subject: [PATCH] Released v1.0.7 --- CHANGELOG.md | 5 ++++- dist/warp.js | 3 ++- dist/warp.js.map | 2 +- package.json | 2 +- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 145eeba..c20a9ac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,9 @@ ## Changelog -### v1.0.6 +### v1.0.7 +- `Improved` Library now uses UMD for compatibility with most environments + +#### v1.0.6 - `Fixed` Fixed error in Safari when copying attributes during shape-path conversion #### v1.0.5 diff --git a/dist/warp.js b/dist/warp.js index 9e91a8f..4f3762e 100644 --- a/dist/warp.js +++ b/dist/warp.js @@ -1,2 +1,3 @@ -!function(e){function t(n){if(r[n])return r[n].exports;var a=r[n]={i:n,l:!1,exports:{}};return e[n].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var r={};t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=6)}([function(e,t,r){"use strict";function n(e){return u[e.toLowerCase()]}function a(e){return f.test(e.type)}function i(e){var t={relative:!1};switch(e.length){case 2:t.type="l";break;case 3:t.type="q";break;case 4:t.type="c";break;default:return!1}for(var r=1;r2&&(t.extended=t.extended||{},t.extended[n]=e[r].slice(2))}return t}function o(e,t){if(e.type===t.type&&e.relative===t.relative){var r=function(e,t,r){if(e&&t){for(var n=[],a=Math.min(e.length,t.length),i=0;i0){if(l.length%y.length!=0)throw new Error('Malformed path data: type "'+n+'" has '+l.length+" arguments, "+l.length%y.length+" too many");for(var f=0;f1&&void 0!==arguments[1]?arguments[1]:2,r=!1,n=Math.pow(10,t);return e.map(function(e){var t=[],o=e.relative?e.type:e.type.toUpperCase(),l=r!==o,u=(0,i.getSegmentSchema)(e.type);l&&(t.push(o),r=o);var y=!0,f=!1,c=void 0;try{for(var v,s=u[Symbol.iterator]();!(y=(v=s.next()).done);y=!0){var p=v.value,d=e[p],h=void 0;switch(void 0===d?"undefined":a(d)){case"boolean":h=0|d;break;case"number":h=(d*n|0)/n;break;default:throw new Error("Invalid path data")}l||t.push(" "),t.push(h),l=!1}}catch(e){f=!0,c=e}finally{try{!y&&s.return&&s.return()}finally{if(f)throw c}}return t.join("")}).join("")}Object.defineProperty(t,"__esModule",{value:!0});var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};t.default=n;var i=r(0)},function(e,t,r){"use strict";function n(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=document.createElementNS("http://www.w3.org/2000/svg",e),n=!0,a=!1,o=void 0;try{for(var l,u=Object.keys(t)[Symbol.iterator]();!(n=(l=u.next()).done);n=!0){var y=l.value;i(r,y,t[y])}}catch(e){a=!0,o=e}finally{try{!n&&u.return&&u.return()}finally{if(a)throw o}}return r}function a(e,t){return e[t]instanceof SVGAnimatedLength?e[t].baseVal.value:e.getAttribute(t)}function i(e,t,r){e.setAttribute(t,r)}Object.defineProperty(t,"__esModule",{value:!0}),t.createElement=n,t.getProperty=a,t.setProperty=i},function(e,t,r){"use strict";function n(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.5,r=[],n=[],a=[e];a.length2&&void 0!==arguments[2]?arguments[2]:i,a=[e],o=[];a.length>0;){var l=a.pop();if(r(l)>t)for(var u=n(l),y=u.length-1;y>=0;y--)a.push(u[y]);else o.push(l)}return o}function i(e){for(var t=e[0],r=e[e.length-1],n=0,a=0;a1&&void 0!==arguments[1]?arguments[1]:"q";i(this,e),this.element=t,(0,l.shapesToPaths)(t),(0,l.preparePaths)(t,r);var n=Array.from(t.querySelectorAll("path"));this.paths=n.map(function(e){var t=(0,u.getProperty)(e,"d");return{pathElement:e,pathData:(0,f.default)(t)}})}return o(e,[{key:"update",value:function(){var e=!0,t=!1,r=void 0;try{for(var n,a=this.paths[Symbol.iterator]();!(e=(n=a.next()).done);e=!0){var i=n.value,o=i.pathElement,l=i.pathData,y=(0,v.default)(l);(0,u.setProperty)(o,"d",y)}}catch(e){t=!0,r=e}finally{try{!e&&a.return&&a.return()}finally{if(t)throw r}}}},{key:"transform",value:function(e){e=Array.isArray(e)?e:[e];var t=!0,r=!1,n=void 0;try{for(var a,i=this.paths[Symbol.iterator]();!(t=(a=i.next()).done);t=!0){var o=a.value;o.pathData=(0,d.default)(o.pathData,e)}}catch(e){r=!0,n=e}finally{try{!t&&i.return&&i.return()}finally{if(r)throw n}}this.update()}},{key:"interpolate",value:function(e){function t(t){var n=[t[0].slice(0,2),t[t.length-1].slice(0,2)],a=(0,s.euclideanDistance)(n);return r=r||a>e,a}var r=!1,n=!0,a=!1,i=void 0;try{for(var o,l=this.paths[Symbol.iterator]();!(n=(o=l.next()).done);n=!0){var u=o.value;u.pathData=(0,x.default)(u.pathData,e,t)}}catch(e){a=!0,i=e}finally{try{!n&&l.return&&l.return()}finally{if(a)throw i}}return r}},{key:"extrapolate",value:function(e){function t(t){var n=[t[0].slice(0,2),t[t.length-1].slice(0,2)],a=(0,s.euclideanDistance)(n);return r=r||a<=e,a}var r=!1,n=!0,a=!1,i=void 0;try{for(var o,l=this.paths[Symbol.iterator]();!(n=(o=l.next()).done);n=!0){var u=o.value;u.pathData=(0,m.default)(u.pathData,e,t)}}catch(e){a=!0,i=e}finally{try{!n&&l.return&&l.return()}finally{if(a)throw i}}return r}},{key:"preInterpolate",value:function(e,t){function r(e){var r=[e[0].slice(0,2),e[e.length-1].slice(0,2)],a=(0,s.euclideanDistance)(r);return n=n||a>t,a}var n=!1,i=!0,o=!1,l=void 0;try{for(var u,y=this.paths[Symbol.iterator]();!(i=(u=y.next()).done);i=!0){var f=u.value,c=(0,d.default)(f.pathData,function(t){var r=e(t.slice(0,2));return r.push.apply(r,a(t)),r}),v=(0,x.default)(c,t,r);f.pathData=(0,d.default)(v,function(e){return e.slice(2)})}}catch(e){o=!0,l=e}finally{try{!i&&y.return&&y.return()}finally{if(o)throw l}}return n}},{key:"preExtrapolate",value:function(e,t){function r(e){var r=[e[0].slice(0,2),e[e.length-1].slice(0,2)],a=(0,s.euclideanDistance)(r);return n=n||a<=t,a}var n=!1,i=!0,o=!1,l=void 0;try{for(var u,y=this.paths[Symbol.iterator]();!(i=(u=y.next()).done);i=!0){var f=u.value,c=(0,d.default)(f.pathData,function(t){var r=e(t.slice(0,2));return r.push.apply(r,a(t)),r}),v=(0,m.default)(c,t,r);f.pathData=(0,d.default)(v,function(e){return e.slice(2)})}}catch(e){o=!0,l=e}finally{try{!i&&y.return&&y.return()}finally{if(o)throw l}}return n}}]),e}();t.default=b},function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function a(e){if(Array.isArray(e)){for(var t=0,r=Array(e.length);t1&&void 0!==arguments[1]?arguments[1]:"q",r=Array.from(e.querySelectorAll("path")),n=!0,a=!1,i=void 0;try{for(var o,l=r[Symbol.iterator]();!(n=(o=l.next()).done);n=!0){var y=o.value,c=(0,_.getProperty)(y,"d"),s=(0,u.default)(c);s=(0,v.default)(s,(0,p.default)()),s=(0,v.default)(s,(0,h.default)()),s=(0,v.default)(s,(0,g.default)()),s=(0,v.default)(s,(0,b.default)(t)),s=(0,v.default)(s,(0,w.default)()),c=(0,f.default)(s),(0,_.setProperty)(y,"d",c)}}catch(e){a=!0,i=e}finally{try{!n&&l.return&&l.return()}finally{if(a)throw i}}}Object.defineProperty(t,"__esModule",{value:!0}),t.shapesToPaths=i,t.preparePaths=o;var l=r(2),u=n(l),y=r(3),f=n(y),c=r(1),v=n(c),s=r(9),p=n(s),d=r(10),h=n(d),x=r(11),g=n(x),m=r(12),b=n(m),N=r(13),w=n(N),P=r(14),M=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}(P),_=r(4)},function(e,t,r){"use strict";function n(){var e=["x","x1","x2"],t=["y","y1","y2"],r=0,n=0,i=NaN,o=NaN;return function(l){if(isNaN(i)&&(0,a.isDrawingSegment)(l)&&(i=r,o=n),"z"!==l.type||isNaN(i)||(r=i,n=o,i=NaN,o=NaN),l.relative){var u=!0,y=!1,f=void 0;try{for(var c,v=e[Symbol.iterator]();!(u=(c=v.next()).done);u=!0){var s=c.value;s in l&&(l[s]+=r)}}catch(e){y=!0,f=e}finally{try{!u&&v.return&&v.return()}finally{if(y)throw f}}var p=!0,d=!1,h=void 0;try{for(var x,g=t[Symbol.iterator]();!(p=(x=g.next()).done);p=!0){var m=x.value;m in l&&(l[m]+=n)}}catch(e){d=!0,h=e}finally{try{!p&&g.return&&g.return()}finally{if(d)throw h}}l.relative=!1}return r="x"in l?l.x:r,n="y"in l?l.y:n,"m"===l.type&&(i=r,o=n),l}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=n;var a=r(0)},function(e,t,r){"use strict";function n(){var e=0,t=0,r=NaN,n=NaN,a=NaN,i=NaN,o=NaN,l=NaN;return function(u){if(isNaN(r)&&"m"!==u.type)throw new Error('Transform path error: path must start with "moveto"');return"s"===u.type&&(a=isNaN(a)?e:a,i=isNaN(i)?t:i,u.type="c",u.x1=(u.relative?1:2)*e-a,u.y1=(u.relative?1:2)*t-i),"c"===u.type?(a=(u.relative?e:0)+u.x2,i=(u.relative?t:0)+u.y2):(a=NaN,i=NaN),"t"===u.type&&(o=isNaN(o)?e:o,l=isNaN(l)?t:l,u.type="q",u.x1=(u.relative?1:2)*e-o,u.y1=(u.relative?1:2)*t-l),"q"===u.type?(o=(u.relative?e:0)+u.x1,l=(u.relative?t:0)+u.y1):(o=NaN,l=NaN),"z"===u.type&&(e=r,t=n),e="x"in u?(u.relative?e:0)+u.x:e,t="y"in u?(u.relative?t:0)+u.y:t,"m"===u.type&&(r=e,n=t),u}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=n},function(e,t,r){"use strict";function n(){var e=0,t=0,r=NaN,n=NaN;return function(a){if(isNaN(r)&&"m"!==a.type)throw new Error('Transform path error: path must start with "moveto"');switch(a.type){case"h":a.type="l",a.y=a.relative?0:t;break;case"v":a.type="l",a.x=a.relative?0:e;break;case"z":a.type="l",a.x=r-(a.relative?e:0),a.y=n-(a.relative?t:0);break;case"a":0!==a.rx&&0!==a.ry||(a.type="l",delete a.rx,delete a.ry,delete a.xRotation,delete a.largeArc,delete a.sweep)}return e=(a.relative?e:0)+a.x,t=(a.relative?t:0)+a.y,"m"===a.type&&(r=e,n=t),a}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=n},function(e,t,r){"use strict";function n(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"q",t=0,r=0,n=NaN,i=NaN;return function(o){if(isNaN(n)&&(0,a.isDrawingSegment)(o.type)&&(n=t,i=r),"z"!==o.type||isNaN(n)||(t=n,r=i,n=NaN,i=NaN),"l"===o.type){var l=o.relative?0:t,u=o.relative?0:r;switch(o.type=e,e){case"q":o.x1=(l+o.x)/2,o.y1=(u+o.y)/2;break;case"c":var y=(o.x-l)/3,f=(o.y-u)/3;o.x1=l+y,o.y1=u+f,o.x2=l+2*y,o.y2=u+2*f;break;default:throw new Error('Invalid curve type "'+e+'"')}}return t="x"in o?(o.relative?t:0)+o.x:t,r="y"in o?(o.relative?r:0)+o.y:r,"m"===o.type&&(n=t,i=r),o}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=n;var a=r(0)},function(e,t,r){"use strict";function n(){var e=0,t=0,r=NaN,n=NaN;return function(i){var l=i;if(isNaN(r)&&(0,o.isDrawingSegment)(i.type)&&(r=e,n=t),"z"!==i.type||isNaN(r)||(e=r,t=n,r=NaN,n=NaN),"a"===i.type){var u=i.relative?0:e,y=i.relative?0:t,f=i.rx,c=i.ry,v=i.xRotation,s=i.largeArc,p=i.sweep,d=i.x,h=i.y,x=a(u,y,f,c,v,s,p,d,h),g=0,m=0,b=!0,N=!1,w=void 0;try{for(var P,M=x[Symbol.iterator]();!(b=(P=M.next()).done);b=!0){var _=P.value;_.relative=i.relative,i.relative&&"c"===_.type&&(_.x-=g,_.x1-=g,_.x2-=g,_.y-=m,_.y1-=m,_.y2-=m),g=_.x,m=_.y}}catch(e){N=!0,w=e}finally{try{!b&&M.return&&M.return()}finally{if(N)throw w}}l=x}return e="x"in i?(i.relative?e:0)+i.x:e,t="y"in i?(i.relative?t:0)+i.y:t,"m"===i.type&&(r=e,n=t),l}}function a(e,t,r,n,a,o,l,u,y){if(e===u&&t===y)return[];if(!r&&!n)return[{type:"l",x:u,y:y}];var f=Math.sin(a*Math.PI/180),c=Math.cos(a*Math.PI/180),v=c*(e-u)/2+f*(t-y)/2,s=-f*(e-u)/2+c*(t-y)/2,p=r*r,d=n*n,h=v*v,x=s*s,g=0,m=p*d-p*x-d*h;if(m<0){var b=Math.sqrt(1-m/(p*d));r*=b,n*=b}else g=(o&&l||!o&&!l?-1:1)*Math.sqrt(m/(p*x+d*h));var N=g*r*s/n,w=-g*n*v/r,P=c*N-f*w+(e+u)/2,M=f*N+c*w+(t+y)/2,_=i(1,0,(v-N)/r,(s-w)/n),A=i((v-N)/r,(s-w)/n,(-v-N)/r,(-s-w)/n);!l&&A>0?A-=2*Math.PI:l&&A<0&&(A+=2*Math.PI);for(var S=[],j=Math.ceil(Math.abs(A/(Math.PI/2))),O=A/j,k=8/3*Math.sin(O/4)*Math.sin(O/4)/Math.sin(O/2),D=0;D=a?i-a:2*Math.PI-(a-i)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=n;var o=r(0)},function(e,t,r){"use strict";function n(e,t,r,n){return[{type:"m",relative:!1,x:e,y:t},{type:"l",relative:!1,x:r,y:n}]}function a(){for(var e=arguments.length,t=Array(e),r=0;r4&&void 0!==arguments[4]?arguments[4]:0,i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,o=void 0;if(a>0||i>0){a=a||i,i=i||a;o=[{type:"m",relative:!1,x:e+a,y:t},{type:"h",relative:!1,x:e+r-a},{type:"a",relative:!1,rx:a,ry:i,xRotation:0,largeArc:!1,sweep:!0,x:e+r,y:t+i},{type:"v",relative:!1,y:t+n-i},{type:"a",relative:!1,rx:a,ry:i,xRotation:0,largeArc:!1,sweep:!0,x:e+r-a,y:t+n},{type:"h",relative:!1,x:e+a},{type:"a",relative:!1,rx:a,ry:i,xRotation:0,largeArc:!1,sweep:!0,x:e,y:t+n-i},{type:"v",relative:!1,y:t+i},{type:"a",relative:!1,rx:a,ry:i,xRotation:0,largeArc:!1,sweep:!0,x:e+a,y:t}]}else o=[{type:"m",relative:!1,x:e,y:t},{type:"h",relative:!1,x:e+r},{type:"v",relative:!1,y:t+n},{type:"h",relative:!1,x:e},{type:"v",relative:!1,y:t}];return o}function l(e,t,r,n){return[{type:"m",relative:!1,x:e,y:t-n},{type:"a",relative:!1,rx:r,ry:n,xRotation:0,largeArc:!1,sweep:!0,x:e,y:t+n},{type:"a",relative:!1,rx:r,ry:n,xRotation:0,largeArc:!1,sweep:!0,x:e,y:t-n}]}function u(e,t,r){return l(e,t,r,r)}Object.defineProperty(t,"__esModule",{value:!0}),t.line=n,t.polyline=a,t.polygon=i,t.rectangle=o,t.ellipse=l,t.circle=u},function(e,t,r){"use strict";function n(e){if(Array.isArray(e)){for(var t=0,r=Array(e.length);t2&&(e.extended=e.extended||{},e.extended[r]=c.slice(2))}}return e})}Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){var r=[],n=!0,a=!1,i=void 0;try{for(var o,l=e[Symbol.iterator]();!(n=(o=l.next()).done)&&(r.push(o.value),!t||r.length!==t);n=!0);}catch(e){a=!0,i=e}finally{try{!n&&l.return&&l.return()}finally{if(a)throw i}}return r}return function(t,r){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();t.default=a;var o=r(1),l=function(e){return e&&e.__esModule?e:{default:e}}(o),u=r(0)},function(e,t,r){"use strict";function n(e){if(Array.isArray(e)){for(var t=0,r=Array(e.length);t1&&(o=x.map(function(e){return(0,y.createLineSegment)(e)}))}if("x"in e&&"y"in e){var g=(e.extended?e.extended[2]:null)||[],m=[e.x,e.y].concat(n(g));a=m}return o})}Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){var r=[],n=!0,a=!1,i=void 0;try{for(var o,l=e[Symbol.iterator]();!(n=(o=l.next()).done)&&(r.push(o.value),!t||r.length!==t);n=!0);}catch(e){a=!0,i=e}finally{try{!n&&l.return&&l.return()}finally{if(a)throw i}}return r}return function(t,r){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();t.default=a;var o=r(1),l=function(e){return e&&e.__esModule?e:{default:e}}(o),u=r(5),y=r(0),f=/[lqc]/},function(e,t,r){"use strict";function n(e,t,r){return(0,i.default)(e,function(e,n,a,i){if(n>1){var u=i[i.length-1],y=i[i.length-2];if(l.test(e.type)&&u.type===e.type){var f=[[y.x,y.y],[e.x,e.y]];if(r(f)<=t){var c=(0,o.joinSegments)(u,e);if(c)return i[i.length-1]=c,!1}}}return e})}Object.defineProperty(t,"__esModule",{value:!0}),t.default=n;var a=r(1),i=function(e){return e&&e.__esModule?e:{default:e}}(a),o=r(0),l=/[lqc]/}]); +/*! Warp.js v1.0.7 (MIT) */ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.Warp=t():e.Warp=t()}("undefined"!=typeof self?self:this,function(){return function(e){function t(n){if(r[n])return r[n].exports;var a=r[n]={i:n,l:!1,exports:{}};return e[n].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var r={};return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=6)}([function(e,t,r){"use strict";function n(e){return u[e.toLowerCase()]}function a(e){return f.test(e.type)}function i(e){var t={relative:!1};switch(e.length){case 2:t.type="l";break;case 3:t.type="q";break;case 4:t.type="c";break;default:return!1}for(var r=1;r2&&(t.extended=t.extended||{},t.extended[n]=e[r].slice(2))}return t}function o(e,t){if(e.type===t.type&&e.relative===t.relative){var r=function(e,t,r){if(e&&t){for(var n=[],a=Math.min(e.length,t.length),i=0;i0){if(l.length%y.length!=0)throw new Error('Malformed path data: type "'+n+'" has '+l.length+" arguments, "+l.length%y.length+" too many");for(var f=0;f1&&void 0!==arguments[1]?arguments[1]:2,r=!1,n=Math.pow(10,t);return e.map(function(e){var t=[],o=e.relative?e.type:e.type.toUpperCase(),l=r!==o,u=(0,i.getSegmentSchema)(e.type);l&&(t.push(o),r=o);var y=!0,f=!1,c=void 0;try{for(var v,p=u[Symbol.iterator]();!(y=(v=p.next()).done);y=!0){var s=v.value,d=e[s],h=void 0;switch(void 0===d?"undefined":a(d)){case"boolean":h=0|d;break;case"number":h=(d*n|0)/n;break;default:throw new Error("Invalid path data")}l||t.push(" "),t.push(h),l=!1}}catch(e){f=!0,c=e}finally{try{!y&&p.return&&p.return()}finally{if(f)throw c}}return t.join("")}).join("")}Object.defineProperty(t,"__esModule",{value:!0});var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};t.default=n;var i=r(0)},function(e,t,r){"use strict";function n(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=document.createElementNS("http://www.w3.org/2000/svg",e),n=!0,a=!1,o=void 0;try{for(var l,u=Object.keys(t)[Symbol.iterator]();!(n=(l=u.next()).done);n=!0){var y=l.value;i(r,y,t[y])}}catch(e){a=!0,o=e}finally{try{!n&&u.return&&u.return()}finally{if(a)throw o}}return r}function a(e,t){return e[t]instanceof SVGAnimatedLength?e[t].baseVal.value:e.getAttribute(t)}function i(e,t,r){e.setAttribute(t,r)}Object.defineProperty(t,"__esModule",{value:!0}),t.createElement=n,t.getProperty=a,t.setProperty=i},function(e,t,r){"use strict";function n(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.5,r=[],n=[],a=[e];a.length2&&void 0!==arguments[2]?arguments[2]:i,a=[e],o=[];a.length>0;){var l=a.pop();if(r(l)>t)for(var u=n(l),y=u.length-1;y>=0;y--)a.push(u[y]);else o.push(l)}return o}function i(e){for(var t=e[0],r=e[e.length-1],n=0,a=0;a1&&void 0!==arguments[1]?arguments[1]:"q";i(this,e),this.element=t,(0,l.shapesToPaths)(t),(0,l.preparePaths)(t,r);var n=Array.from(t.querySelectorAll("path"));this.paths=n.map(function(e){var t=(0,u.getProperty)(e,"d");return{pathElement:e,pathData:(0,f.default)(t)}})}return o(e,[{key:"update",value:function(){var e=!0,t=!1,r=void 0;try{for(var n,a=this.paths[Symbol.iterator]();!(e=(n=a.next()).done);e=!0){var i=n.value,o=i.pathElement,l=i.pathData,y=(0,v.default)(l);(0,u.setProperty)(o,"d",y)}}catch(e){t=!0,r=e}finally{try{!e&&a.return&&a.return()}finally{if(t)throw r}}}},{key:"transform",value:function(e){e=Array.isArray(e)?e:[e];var t=!0,r=!1,n=void 0;try{for(var a,i=this.paths[Symbol.iterator]();!(t=(a=i.next()).done);t=!0){var o=a.value;o.pathData=(0,d.default)(o.pathData,e)}}catch(e){r=!0,n=e}finally{try{!t&&i.return&&i.return()}finally{if(r)throw n}}this.update()}},{key:"interpolate",value:function(e){function t(t){var n=[t[0].slice(0,2),t[t.length-1].slice(0,2)],a=(0,p.euclideanDistance)(n);return r=r||a>e,a}var r=!1,n=!0,a=!1,i=void 0;try{for(var o,l=this.paths[Symbol.iterator]();!(n=(o=l.next()).done);n=!0){var u=o.value;u.pathData=(0,x.default)(u.pathData,e,t)}}catch(e){a=!0,i=e}finally{try{!n&&l.return&&l.return()}finally{if(a)throw i}}return r}},{key:"extrapolate",value:function(e){function t(t){var n=[t[0].slice(0,2),t[t.length-1].slice(0,2)],a=(0,p.euclideanDistance)(n);return r=r||a<=e,a}var r=!1,n=!0,a=!1,i=void 0;try{for(var o,l=this.paths[Symbol.iterator]();!(n=(o=l.next()).done);n=!0){var u=o.value;u.pathData=(0,m.default)(u.pathData,e,t)}}catch(e){a=!0,i=e}finally{try{!n&&l.return&&l.return()}finally{if(a)throw i}}return r}},{key:"preInterpolate",value:function(e,t){function r(e){var r=[e[0].slice(0,2),e[e.length-1].slice(0,2)],a=(0,p.euclideanDistance)(r);return n=n||a>t,a}var n=!1,i=!0,o=!1,l=void 0;try{for(var u,y=this.paths[Symbol.iterator]();!(i=(u=y.next()).done);i=!0){var f=u.value,c=(0,d.default)(f.pathData,function(t){var r=e(t.slice(0,2));return r.push.apply(r,a(t)),r}),v=(0,x.default)(c,t,r);f.pathData=(0,d.default)(v,function(e){return e.slice(2)})}}catch(e){o=!0,l=e}finally{try{!i&&y.return&&y.return()}finally{if(o)throw l}}return n}},{key:"preExtrapolate",value:function(e,t){function r(e){var r=[e[0].slice(0,2),e[e.length-1].slice(0,2)],a=(0,p.euclideanDistance)(r);return n=n||a<=t,a}var n=!1,i=!0,o=!1,l=void 0;try{for(var u,y=this.paths[Symbol.iterator]();!(i=(u=y.next()).done);i=!0){var f=u.value,c=(0,d.default)(f.pathData,function(t){var r=e(t.slice(0,2));return r.push.apply(r,a(t)),r}),v=(0,m.default)(c,t,r);f.pathData=(0,d.default)(v,function(e){return e.slice(2)})}}catch(e){o=!0,l=e}finally{try{!i&&y.return&&y.return()}finally{if(o)throw l}}return n}}]),e}();t.default=b},function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function a(e){if(Array.isArray(e)){for(var t=0,r=Array(e.length);t1&&void 0!==arguments[1]?arguments[1]:"q",r=Array.from(e.querySelectorAll("path")),n=!0,a=!1,i=void 0;try{for(var o,l=r[Symbol.iterator]();!(n=(o=l.next()).done);n=!0){var y=o.value,c=(0,_.getProperty)(y,"d"),p=(0,u.default)(c);p=(0,v.default)(p,(0,s.default)()),p=(0,v.default)(p,(0,h.default)()),p=(0,v.default)(p,(0,g.default)()),p=(0,v.default)(p,(0,b.default)(t)),p=(0,v.default)(p,(0,w.default)()),c=(0,f.default)(p),(0,_.setProperty)(y,"d",c)}}catch(e){a=!0,i=e}finally{try{!n&&l.return&&l.return()}finally{if(a)throw i}}}Object.defineProperty(t,"__esModule",{value:!0}),t.shapesToPaths=i,t.preparePaths=o;var l=r(2),u=n(l),y=r(3),f=n(y),c=r(1),v=n(c),p=r(9),s=n(p),d=r(10),h=n(d),x=r(11),g=n(x),m=r(12),b=n(m),N=r(13),w=n(N),P=r(14),M=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}(P),_=r(4)},function(e,t,r){"use strict";function n(){var e=["x","x1","x2"],t=["y","y1","y2"],r=0,n=0,i=NaN,o=NaN;return function(l){if(isNaN(i)&&(0,a.isDrawingSegment)(l)&&(i=r,o=n),"z"!==l.type||isNaN(i)||(r=i,n=o,i=NaN,o=NaN),l.relative){var u=!0,y=!1,f=void 0;try{for(var c,v=e[Symbol.iterator]();!(u=(c=v.next()).done);u=!0){var p=c.value;p in l&&(l[p]+=r)}}catch(e){y=!0,f=e}finally{try{!u&&v.return&&v.return()}finally{if(y)throw f}}var s=!0,d=!1,h=void 0;try{for(var x,g=t[Symbol.iterator]();!(s=(x=g.next()).done);s=!0){var m=x.value;m in l&&(l[m]+=n)}}catch(e){d=!0,h=e}finally{try{!s&&g.return&&g.return()}finally{if(d)throw h}}l.relative=!1}return r="x"in l?l.x:r,n="y"in l?l.y:n,"m"===l.type&&(i=r,o=n),l}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=n;var a=r(0)},function(e,t,r){"use strict";function n(){var e=0,t=0,r=NaN,n=NaN,a=NaN,i=NaN,o=NaN,l=NaN;return function(u){if(isNaN(r)&&"m"!==u.type)throw new Error('Transform path error: path must start with "moveto"');return"s"===u.type&&(a=isNaN(a)?e:a,i=isNaN(i)?t:i,u.type="c",u.x1=(u.relative?1:2)*e-a,u.y1=(u.relative?1:2)*t-i),"c"===u.type?(a=(u.relative?e:0)+u.x2,i=(u.relative?t:0)+u.y2):(a=NaN,i=NaN),"t"===u.type&&(o=isNaN(o)?e:o,l=isNaN(l)?t:l,u.type="q",u.x1=(u.relative?1:2)*e-o,u.y1=(u.relative?1:2)*t-l),"q"===u.type?(o=(u.relative?e:0)+u.x1,l=(u.relative?t:0)+u.y1):(o=NaN,l=NaN),"z"===u.type&&(e=r,t=n),e="x"in u?(u.relative?e:0)+u.x:e,t="y"in u?(u.relative?t:0)+u.y:t,"m"===u.type&&(r=e,n=t),u}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=n},function(e,t,r){"use strict";function n(){var e=0,t=0,r=NaN,n=NaN;return function(a){if(isNaN(r)&&"m"!==a.type)throw new Error('Transform path error: path must start with "moveto"');switch(a.type){case"h":a.type="l",a.y=a.relative?0:t;break;case"v":a.type="l",a.x=a.relative?0:e;break;case"z":a.type="l",a.x=r-(a.relative?e:0),a.y=n-(a.relative?t:0);break;case"a":0!==a.rx&&0!==a.ry||(a.type="l",delete a.rx,delete a.ry,delete a.xRotation,delete a.largeArc,delete a.sweep)}return e=(a.relative?e:0)+a.x,t=(a.relative?t:0)+a.y,"m"===a.type&&(r=e,n=t),a}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=n},function(e,t,r){"use strict";function n(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"q",t=0,r=0,n=NaN,i=NaN;return function(o){if(isNaN(n)&&(0,a.isDrawingSegment)(o.type)&&(n=t,i=r),"z"!==o.type||isNaN(n)||(t=n,r=i,n=NaN,i=NaN),"l"===o.type){var l=o.relative?0:t,u=o.relative?0:r;switch(o.type=e,e){case"q":o.x1=(l+o.x)/2,o.y1=(u+o.y)/2;break;case"c":var y=(o.x-l)/3,f=(o.y-u)/3;o.x1=l+y,o.y1=u+f,o.x2=l+2*y,o.y2=u+2*f;break;default:throw new Error('Invalid curve type "'+e+'"')}}return t="x"in o?(o.relative?t:0)+o.x:t,r="y"in o?(o.relative?r:0)+o.y:r,"m"===o.type&&(n=t,i=r),o}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=n;var a=r(0)},function(e,t,r){"use strict";function n(){var e=0,t=0,r=NaN,n=NaN;return function(i){var l=i;if(isNaN(r)&&(0,o.isDrawingSegment)(i.type)&&(r=e,n=t),"z"!==i.type||isNaN(r)||(e=r,t=n,r=NaN,n=NaN),"a"===i.type){var u=i.relative?0:e,y=i.relative?0:t,f=i.rx,c=i.ry,v=i.xRotation,p=i.largeArc,s=i.sweep,d=i.x,h=i.y,x=a(u,y,f,c,v,p,s,d,h),g=0,m=0,b=!0,N=!1,w=void 0;try{for(var P,M=x[Symbol.iterator]();!(b=(P=M.next()).done);b=!0){var _=P.value;_.relative=i.relative,i.relative&&"c"===_.type&&(_.x-=g,_.x1-=g,_.x2-=g,_.y-=m,_.y1-=m,_.y2-=m),g=_.x,m=_.y}}catch(e){N=!0,w=e}finally{try{!b&&M.return&&M.return()}finally{if(N)throw w}}l=x}return e="x"in i?(i.relative?e:0)+i.x:e,t="y"in i?(i.relative?t:0)+i.y:t,"m"===i.type&&(r=e,n=t),l}}function a(e,t,r,n,a,o,l,u,y){if(e===u&&t===y)return[];if(!r&&!n)return[{type:"l",x:u,y:y}];var f=Math.sin(a*Math.PI/180),c=Math.cos(a*Math.PI/180),v=c*(e-u)/2+f*(t-y)/2,p=-f*(e-u)/2+c*(t-y)/2,s=r*r,d=n*n,h=v*v,x=p*p,g=0,m=s*d-s*x-d*h;if(m<0){var b=Math.sqrt(1-m/(s*d));r*=b,n*=b}else g=(o&&l||!o&&!l?-1:1)*Math.sqrt(m/(s*x+d*h));var N=g*r*p/n,w=-g*n*v/r,P=c*N-f*w+(e+u)/2,M=f*N+c*w+(t+y)/2,_=i(1,0,(v-N)/r,(p-w)/n),A=i((v-N)/r,(p-w)/n,(-v-N)/r,(-p-w)/n);!l&&A>0?A-=2*Math.PI:l&&A<0&&(A+=2*Math.PI);for(var S=[],j=Math.ceil(Math.abs(A/(Math.PI/2))),O=A/j,k=8/3*Math.sin(O/4)*Math.sin(O/4)/Math.sin(O/2),D=0;D=a?i-a:2*Math.PI-(a-i)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=n;var o=r(0)},function(e,t,r){"use strict";function n(e,t,r,n){return[{type:"m",relative:!1,x:e,y:t},{type:"l",relative:!1,x:r,y:n}]}function a(){for(var e=arguments.length,t=Array(e),r=0;r4&&void 0!==arguments[4]?arguments[4]:0,i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,o=void 0;if(a>0||i>0){a=a||i,i=i||a;o=[{type:"m",relative:!1,x:e+a,y:t},{type:"h",relative:!1,x:e+r-a},{type:"a",relative:!1,rx:a,ry:i,xRotation:0,largeArc:!1,sweep:!0,x:e+r,y:t+i},{type:"v",relative:!1,y:t+n-i},{type:"a",relative:!1,rx:a,ry:i,xRotation:0,largeArc:!1,sweep:!0,x:e+r-a,y:t+n},{type:"h",relative:!1,x:e+a},{type:"a",relative:!1,rx:a,ry:i,xRotation:0,largeArc:!1,sweep:!0,x:e,y:t+n-i},{type:"v",relative:!1,y:t+i},{type:"a",relative:!1,rx:a,ry:i,xRotation:0,largeArc:!1,sweep:!0,x:e+a,y:t}]}else o=[{type:"m",relative:!1,x:e,y:t},{type:"h",relative:!1,x:e+r},{type:"v",relative:!1,y:t+n},{type:"h",relative:!1,x:e},{type:"v",relative:!1,y:t}];return o}function l(e,t,r,n){return[{type:"m",relative:!1,x:e,y:t-n},{type:"a",relative:!1,rx:r,ry:n,xRotation:0,largeArc:!1,sweep:!0,x:e,y:t+n},{type:"a",relative:!1,rx:r,ry:n,xRotation:0,largeArc:!1,sweep:!0,x:e,y:t-n}]}function u(e,t,r){return l(e,t,r,r)}Object.defineProperty(t,"__esModule",{value:!0}),t.line=n,t.polyline=a,t.polygon=i,t.rectangle=o,t.ellipse=l,t.circle=u},function(e,t,r){"use strict";function n(e){if(Array.isArray(e)){for(var t=0,r=Array(e.length);t2&&(e.extended=e.extended||{},e.extended[r]=c.slice(2))}}return e})}Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){var r=[],n=!0,a=!1,i=void 0;try{for(var o,l=e[Symbol.iterator]();!(n=(o=l.next()).done)&&(r.push(o.value),!t||r.length!==t);n=!0);}catch(e){a=!0,i=e}finally{try{!n&&l.return&&l.return()}finally{if(a)throw i}}return r}return function(t,r){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();t.default=a;var o=r(1),l=function(e){return e&&e.__esModule?e:{default:e}}(o),u=r(0)},function(e,t,r){"use strict";function n(e){if(Array.isArray(e)){for(var t=0,r=Array(e.length);t1&&(o=x.map(function(e){return(0,y.createLineSegment)(e)}))}if("x"in e&&"y"in e){var g=(e.extended?e.extended[2]:null)||[],m=[e.x,e.y].concat(n(g));a=m}return o})}Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){var r=[],n=!0,a=!1,i=void 0;try{for(var o,l=e[Symbol.iterator]();!(n=(o=l.next()).done)&&(r.push(o.value),!t||r.length!==t);n=!0);}catch(e){a=!0,i=e}finally{try{!n&&l.return&&l.return()}finally{if(a)throw i}}return r}return function(t,r){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();t.default=a;var o=r(1),l=function(e){return e&&e.__esModule?e:{default:e}}(o),u=r(5),y=r(0),f=/[lqc]/},function(e,t,r){"use strict";function n(e,t,r){return(0,i.default)(e,function(e,n,a,i){if(n>1){var u=i[i.length-1],y=i[i.length-2];if(l.test(e.type)&&u.type===e.type){var f=[[y.x,y.y],[e.x,e.y]];if(r(f)<=t){var c=(0,o.joinSegments)(u,e);if(c)return i[i.length-1]=c,!1}}}return e})}Object.defineProperty(t,"__esModule",{value:!0}),t.default=n;var a=r(1),i=function(e){return e&&e.__esModule?e:{default:e}}(a),o=r(0),l=/[lqc]/}])}); //# sourceMappingURL=warp.js.map \ No newline at end of file diff --git a/dist/warp.js.map b/dist/warp.js.map index cc1c300..33f0da1 100644 --- a/dist/warp.js.map +++ b/dist/warp.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///warp.js","webpack:///webpack/bootstrap b0c5cf855626a85312a0","webpack:///./src/path/utils.js","webpack:///./src/path/transform.js","webpack:///./src/path/parser.js","webpack:///./src/path/encoder.js","webpack:///./src/svg/utils.js","webpack:///./src/path/interpolate.js","webpack:///./src/main.js","webpack:///./src/Warp.js","webpack:///./src/svg/normalize.js","webpack:///./src/path/transformers/absolute.js","webpack:///./src/path/transformers/short-to-long.js","webpack:///./src/path/transformers/hvz-to-line.js","webpack:///./src/path/transformers/line-to-curve.js","webpack:///./src/path/transformers/arc-to-curve.js","webpack:///./src/path/shape.js","webpack:///./src/warp/transform.js","webpack:///./src/warp/interpolate.js","webpack:///./src/warp/extrapolate.js"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","getSegmentSchema","type","segmentSchemas","toLowerCase","isDrawingSegment","segment","drawingCmdExpr","test","createLineSegment","points","relative","length","g","pointGroups","_pointGroups$g","_slicedToArray","x","y","extended","slice","joinSegments","segmentA","segmentB","setExtended","pointsA","pointsB","pointCount","Math","min","push","bothExtended","x1","y1","x2","y2","value","sliceIterator","arr","_arr","_n","_d","_e","undefined","_s","_i","Symbol","iterator","next","done","err","Array","isArray","TypeError","z","h","v","q","t","a","_toConsumableArray","arr2","from","transform","path","transformer","newPath","JSON","parse","stringify","result","apply","default","parser","pathString","pathData","segmentMatch","segmentExpr","lastIndex","exec","numbers","match","numberExpr","map","parseFloat","schema","_utils","Error","scheme","segmentData","j","encoder","precision","arguments","prevType","magnitude","output","outputType","toUpperCase","first","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","outputValue","_typeof","return","join","obj","constructor","createElement","tag","attributes","element","document","createElementNS","keys","setProperty","getProperty","SVGAnimatedLength","baseVal","getAttribute","setAttribute","split","seg0","seg1","orders","r","q0","q1","dim","max","s0","s1","until","threshold","deltaFunction","euclideanDistance","stack","segments","currentPoints","pop","newPoints","startPoint","endPoint","d2","sqrt","_Warp","_Warp2","window","Warp","_interopRequireDefault","_classCallCheck","instance","Constructor","_createClass","defineProperties","target","props","descriptor","writable","key","protoProps","staticProps","_normalize","_parser","_parser2","_encoder","_encoder2","_interpolate","_transform","_transform2","_interpolate2","_interpolate3","_extrapolate","_extrapolate2","curveType","this","shapesToPaths","preparePaths","pathElements","querySelectorAll","paths","pathElement","_ref","transformers","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","update","linearPoints","delta","didWork","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","_iteratorNormalCompletion4","_didIteratorError4","_iteratorError4","_step4","_iterator4","_iteratorNormalCompletion5","_didIteratorError5","_iteratorError5","_step5","_iterator5","transformed","interpolated","_iteratorNormalCompletion6","_didIteratorError6","_iteratorError6","_step6","_iterator6","extrapolated","shapeMap","line","shapeElement","pathShape","polyline","polygon","rect","rectangle","ellipse","circle","shapeElements","shapeName","tagName","attribute","nodeName","nodeValue","parentNode","replaceChild","_absolute2","_shortToLong2","_hvzToLine2","_lineToCurve2","_arcToCurve2","_absolute","_shortToLong","_hvzToLine","_lineToCurve","_arcToCurve","_shape","newObj","absoluteGenerator","xProps","yProps","prevX","prevY","pathStartX","NaN","pathStartY","isNaN","shortToLongGenerator","prevCurveC2X","prevCurveC2Y","prevQuadCX","prevQuadCY","hvzToLineGenerator","rx","ry","xRotation","largeArc","sweep","lineToCurveGenerator","startX","startY","offsetX","offsetY","arcToCurveGenerator","curveSegments","converter","prevCurveX","prevCurveY","curveSegment","sx","sy","angle","large","sinPhi","sin","PI","cosPhi","cos","xd","yd","rx2","ry2","xd2","yd2","root","numerator","cxd","cyd","cx","cy","theta1","angleBetween","dtheta","numSegs","ceil","abs","cosTheta1","sinTheta1","theta2","cosTheta2","sinTheta2","epx","epy","dx","dy","dxe","dye","ux","uy","vx","vy","ta","atan2","tb","_len","_key","append","width","height","_pointGroups$i","extendedPoints","oldPoints","concat","reduce","interpolate","prevPoints","interpolationTypesExpr","_pointGroups$j","pointList","rawSegments","rawSegment","extrapolate","oldPath","prevSegment","prevSegment2","extrapolationTypesExpr","newSegment"],"mappings":"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","file":"warp.js","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 6);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nexports.getSegmentSchema = getSegmentSchema;\nexports.isDrawingSegment = isDrawingSegment;\nexports.createLineSegment = createLineSegment;\nexports.joinSegments = joinSegments;\nvar segmentSchemas = {\n\tm: ['x', 'y'],\n\tz: [],\n\tl: ['x', 'y'],\n\th: ['x'],\n\tv: ['y'],\n\tc: ['x1', 'y1', 'x2', 'y2', 'x', 'y'],\n\ts: ['x2', 'y2', 'x', 'y'],\n\tq: ['x1', 'y1', 'x', 'y'],\n\tt: ['x', 'y'],\n\ta: ['rx', 'ry', 'xRotation', 'largeArc', 'sweep', 'x', 'y']\n};\n\nvar pointGroups = exports.pointGroups = [['x1', 'y1'], ['x2', 'y2'], ['x', 'y']];\n\nvar drawingCmdExpr = /[lhvcsqta]/;\n\nfunction getSegmentSchema(type) {\n\treturn segmentSchemas[type.toLowerCase()];\n}\n\nfunction isDrawingSegment(segment) {\n\treturn drawingCmdExpr.test(segment.type);\n}\n\nfunction createLineSegment(points) {\n\tvar segment = { relative: false };\n\n\tswitch (points.length) {\n\t\tcase 2:\n\t\t\t{\n\t\t\t\tsegment.type = 'l';\n\t\t\t}break;\n\t\tcase 3:\n\t\t\t{\n\t\t\t\tsegment.type = 'q';\n\t\t\t}break;\n\t\tcase 4:\n\t\t\t{\n\t\t\t\tsegment.type = 'c';\n\t\t\t}break;\n\t\tdefault:\n\t\t\treturn false;\n\t}\n\n\tfor (var i = 1; i < points.length; i++) {\n\t\tvar g = (i < points.length - 1 ? i : pointGroups.length) - 1;\n\n\t\tvar _pointGroups$g = _slicedToArray(pointGroups[g], 2),\n\t\t x = _pointGroups$g[0],\n\t\t y = _pointGroups$g[1];\n\n\t\tsegment[x] = points[i][0];\n\t\tsegment[y] = points[i][1];\n\n\t\tif (points[i].length > 2) {\n\t\t\tsegment.extended = segment.extended || {};\n\t\t\tsegment.extended[g] = points[i].slice(2);\n\t\t}\n\t}\n\n\treturn segment;\n}\n\nfunction joinSegments(segmentA, segmentB) {\n\tif (segmentA.type === segmentB.type && segmentA.relative === segmentB.relative) {\n\t\tvar setExtended = function setExtended(pointsA, pointsB, type) {\n\t\t\tif (pointsA && pointsB) {\n\t\t\t\tvar points = [];\n\t\t\t\tvar pointCount = Math.min(pointsA.length, pointsB.length);\n\n\t\t\t\tfor (var i = 0; i < pointCount; i++) {\n\t\t\t\t\tpoints.push((pointsA[i] + pointsB[i]) / 2);\n\t\t\t\t}\n\n\t\t\t\tsegment.extended[type] = points;\n\t\t\t}\n\t\t};\n\n\t\tvar type = segmentB.type,\n\t\t relative = segmentB.relative,\n\t\t x = segmentB.x,\n\t\t y = segmentB.y;\n\n\t\tvar bothExtended = !!segmentA.extended && !!segmentB.extended;\n\t\tvar extended = {};\n\t\tvar segment = { type: type, relative: relative, x: x, y: y, extended: extended };\n\n\t\tswitch (type) {\n\t\t\tcase 'l':\n\t\t\t\tbreak;\n\t\t\tcase 'q':\n\t\t\t\t{\n\t\t\t\t\tsegment.x1 = (segmentA.x1 + segmentB.x1) / 2;\n\t\t\t\t\tsegment.y1 = (segmentA.y1 + segmentB.y1) / 2;\n\n\t\t\t\t\tif (bothExtended) {\n\t\t\t\t\t\tsetExtended(segmentA.extended[0], segmentB.extended[0], 0);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'c':\n\t\t\t\t{\n\t\t\t\t\tsegment.x1 = (segmentA.x1 + segmentA.x2) / 2;\n\t\t\t\t\tsegment.y1 = (segmentA.y1 + segmentA.y2) / 2;\n\t\t\t\t\tsegment.x2 = (segmentB.x1 + segmentB.x2) / 2;\n\t\t\t\t\tsegment.y2 = (segmentB.y1 + segmentB.y2) / 2;\n\n\t\t\t\t\tif (bothExtended) {\n\t\t\t\t\t\tsetExtended(segmentA.extended[0], segmentA.extended[1], 0);\n\t\t\t\t\t\tsetExtended(segmentB.extended[0], segmentB.extended[1], 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t}\n\n\t\tif (segmentB.extended && segmentB.extended[2]) {\n\t\t\textended[2] = segmentB.extended[2];\n\t\t}\n\n\t\treturn segment;\n\t}\n\n\treturn false;\n}\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.default = transform;\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction transform(path, transformer) {\n\tvar newPath = [];\n\n\tfor (var i = 0; i < path.length; i++) {\n\t\tvar segment = JSON.parse(JSON.stringify(path[i]));\n\t\tvar result = transformer(segment, i, path, newPath);\n\n\t\tif (Array.isArray(result)) {\n\t\t\tnewPath.push.apply(newPath, _toConsumableArray(result));\n\t\t} else if (result) {\n\t\t\tnewPath.push(result);\n\t\t}\n\t}\n\n\treturn newPath;\n}\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.default = parser;\n\nvar _utils = __webpack_require__(0);\n\nvar segmentExpr = /([mzlhvcsqta])([^mzlhvcsqta]*)/ig;\nvar numberExpr = /-?[0-9]*\\.?[0-9]+(?:e[-+]?\\d+)?/ig;\n\nfunction parser(pathString) {\n\tvar pathData = [];\n\n\tvar segmentMatch = void 0;\n\tsegmentExpr.lastIndex = 0;\n\n\twhile (segmentMatch = segmentExpr.exec(pathString)) {\n\t\tvar type = segmentMatch[1].toLowerCase();\n\t\tvar numbers = (segmentMatch[2].match(numberExpr) || []).map(parseFloat);\n\t\tvar relative = type === segmentMatch[1];\n\n\t\tvar schema = (0, _utils.getSegmentSchema)(type);\n\n\t\tif (numbers.length < schema.length) {\n\t\t\tthrow new Error('Malformed path data: type \"' + type + '\" has ' + numbers.length + ' arguments, expected ' + scheme.length);\n\t\t}\n\n\t\tif (schema.length > 0) {\n\t\t\tif (numbers.length % schema.length !== 0) {\n\t\t\t\tthrow new Error('Malformed path data: type \"' + type + '\" has ' + numbers.length + ' arguments, ' + numbers.length % schema.length + ' too many');\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < numbers.length / schema.length; i++) {\n\t\t\t\tvar segmentData = { type: type, relative: relative };\n\n\t\t\t\tfor (var j = 0; j < schema.length; j++) {\n\t\t\t\t\tsegmentData[schema[j]] = numbers[i * schema.length + j];\n\t\t\t\t}\n\n\t\t\t\tpathData.push(segmentData);\n\t\t\t}\n\t\t} else {\n\t\t\tpathData.push({ type: type, relative: relative });\n\t\t}\n\t}\n\n\treturn pathData;\n}\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexports.default = encoder;\n\nvar _utils = __webpack_require__(0);\n\nfunction encoder(pathData) {\n\tvar precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n\n\tvar prevType = false;\n\tvar magnitude = Math.pow(10, precision);\n\n\treturn pathData.map(function (segment) {\n\t\tvar output = [];\n\t\tvar outputType = segment.relative ? segment.type : segment.type.toUpperCase();\n\t\tvar first = prevType !== outputType;\n\n\t\tvar schema = (0, _utils.getSegmentSchema)(segment.type);\n\n\t\tif (first) {\n\t\t\toutput.push(outputType);\n\t\t\tprevType = outputType;\n\t\t}\n\n\t\tvar _iteratorNormalCompletion = true;\n\t\tvar _didIteratorError = false;\n\t\tvar _iteratorError = undefined;\n\n\t\ttry {\n\t\t\tfor (var _iterator = schema[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n\t\t\t\tvar property = _step.value;\n\n\t\t\t\tvar value = segment[property];\n\t\t\t\tvar outputValue = void 0;\n\n\t\t\t\tswitch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {\n\t\t\t\t\tcase 'boolean':\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toutputValue = value | 0;\n\t\t\t\t\t\t}break;\n\t\t\t\t\tcase 'number':\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toutputValue = (value * magnitude | 0) / magnitude;\n\t\t\t\t\t\t}break;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthrow new Error('Invalid path data');\n\t\t\t\t}\n\n\t\t\t\tif (!first) {\n\t\t\t\t\toutput.push(' ');\n\t\t\t\t}\n\n\t\t\t\toutput.push(outputValue);\n\t\t\t\tfirst = false;\n\t\t\t}\n\t\t} catch (err) {\n\t\t\t_didIteratorError = true;\n\t\t\t_iteratorError = err;\n\t\t} finally {\n\t\t\ttry {\n\t\t\t\tif (!_iteratorNormalCompletion && _iterator.return) {\n\t\t\t\t\t_iterator.return();\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tif (_didIteratorError) {\n\t\t\t\t\tthrow _iteratorError;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn output.join('');\n\t}).join('');\n}\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.createElement = createElement;\nexports.getProperty = getProperty;\nexports.setProperty = setProperty;\nfunction createElement(tag) {\n\tvar attributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\tvar element = document.createElementNS('http://www.w3.org/2000/svg', tag);\n\n\tvar _iteratorNormalCompletion = true;\n\tvar _didIteratorError = false;\n\tvar _iteratorError = undefined;\n\n\ttry {\n\t\tfor (var _iterator = Object.keys(attributes)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n\t\t\tvar name = _step.value;\n\n\t\t\tsetProperty(element, name, attributes[name]);\n\t\t}\n\t} catch (err) {\n\t\t_didIteratorError = true;\n\t\t_iteratorError = err;\n\t} finally {\n\t\ttry {\n\t\t\tif (!_iteratorNormalCompletion && _iterator.return) {\n\t\t\t\t_iterator.return();\n\t\t\t}\n\t\t} finally {\n\t\t\tif (_didIteratorError) {\n\t\t\t\tthrow _iteratorError;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn element;\n}\n\nfunction getProperty(element, property) {\n\tif (element[property] instanceof SVGAnimatedLength) {\n\t\treturn element[property].baseVal.value;\n\t}\n\n\treturn element.getAttribute(property);\n}\n\nfunction setProperty(element, property, value) {\n\telement.setAttribute(property, value);\n}\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.split = split;\nexports.until = until;\nexports.euclideanDistance = euclideanDistance;\nfunction split(p) {\n\tvar t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0.5;\n\n\tvar seg0 = [];\n\tvar seg1 = [];\n\tvar orders = [p];\n\n\twhile (orders.length < p.length) {\n\t\tvar q = orders[orders.length - 1];\n\t\tvar r = [];\n\n\t\tfor (var i = 1; i < q.length; i++) {\n\t\t\tvar q0 = q[i - 1];\n\t\t\tvar q1 = q[i];\n\t\t\tvar s = [];\n\t\t\tvar dim = Math.max(q0.length, q1.length);\n\n\t\t\tfor (var j = 0; j < dim; j++) {\n\t\t\t\tvar s0 = q0[j] || 0;\n\t\t\t\tvar s1 = q1[j] || 0;\n\n\t\t\t\ts.push(s0 + (s1 - s0) * t);\n\t\t\t}\n\n\t\t\tr.push(s);\n\t\t}\n\n\t\torders.push(r);\n\t}\n\n\tfor (var _i = 0; _i < orders.length; _i++) {\n\t\tseg0.push(orders[_i][0]);\n\t\tseg1.push(orders[orders.length - 1 - _i][_i]);\n\t}\n\n\treturn [seg0, seg1];\n}\n\nfunction until(points, threshold) {\n\tvar deltaFunction = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : euclideanDistance;\n\n\tvar stack = [points];\n\tvar segments = [];\n\n\twhile (stack.length > 0) {\n\t\tvar currentPoints = stack.pop();\n\n\t\tif (deltaFunction(currentPoints) > threshold) {\n\t\t\tvar newPoints = split(currentPoints);\n\n\t\t\t// Add new segments backwards so they end up in correct order\n\t\t\tfor (var i = newPoints.length - 1; i >= 0; i--) {\n\t\t\t\tstack.push(newPoints[i]);\n\t\t\t}\n\t\t} else {\n\t\t\tsegments.push(currentPoints);\n\t\t}\n\t}\n\n\treturn segments;\n}\n\nfunction euclideanDistance(points) {\n\tvar startPoint = points[0];\n\tvar endPoint = points[points.length - 1];\n\tvar d2 = 0;\n\n\tfor (var i = 0; i < startPoint.length; i++) {\n\t\tvar d = endPoint[i] - startPoint[i];\n\t\td2 += Math.pow(d, 2);\n\t}\n\n\treturn Math.sqrt(d2);\n}\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _Warp = __webpack_require__(7);\n\nvar _Warp2 = _interopRequireDefault(_Warp);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nif (typeof window !== 'undefined') {\n\twindow.Warp = _Warp2.default;\n}\n\nexports.default = _Warp2.default;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _normalize = __webpack_require__(8);\n\nvar _utils = __webpack_require__(4);\n\nvar _parser = __webpack_require__(2);\n\nvar _parser2 = _interopRequireDefault(_parser);\n\nvar _encoder = __webpack_require__(3);\n\nvar _encoder2 = _interopRequireDefault(_encoder);\n\nvar _interpolate = __webpack_require__(5);\n\nvar _transform = __webpack_require__(15);\n\nvar _transform2 = _interopRequireDefault(_transform);\n\nvar _interpolate2 = __webpack_require__(16);\n\nvar _interpolate3 = _interopRequireDefault(_interpolate2);\n\nvar _extrapolate = __webpack_require__(17);\n\nvar _extrapolate2 = _interopRequireDefault(_extrapolate);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Warp = function () {\n\tfunction Warp(element) {\n\t\tvar curveType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'q';\n\n\t\t_classCallCheck(this, Warp);\n\n\t\tthis.element = element;\n\n\t\t(0, _normalize.shapesToPaths)(element);\n\t\t(0, _normalize.preparePaths)(element, curveType);\n\n\t\tvar pathElements = Array.from(element.querySelectorAll('path'));\n\n\t\tthis.paths = pathElements.map(function (pathElement) {\n\t\t\tvar pathString = (0, _utils.getProperty)(pathElement, 'd');\n\t\t\tvar pathData = (0, _parser2.default)(pathString);\n\n\t\t\treturn { pathElement: pathElement, pathData: pathData };\n\t\t});\n\t}\n\n\t_createClass(Warp, [{\n\t\tkey: 'update',\n\t\tvalue: function update() {\n\t\t\tvar _iteratorNormalCompletion = true;\n\t\t\tvar _didIteratorError = false;\n\t\t\tvar _iteratorError = undefined;\n\n\t\t\ttry {\n\t\t\t\tfor (var _iterator = this.paths[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n\t\t\t\t\tvar _ref = _step.value;\n\t\t\t\t\tvar pathElement = _ref.pathElement;\n\t\t\t\t\tvar pathData = _ref.pathData;\n\n\t\t\t\t\tvar pathString = (0, _encoder2.default)(pathData);\n\t\t\t\t\t(0, _utils.setProperty)(pathElement, 'd', pathString);\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t_didIteratorError = true;\n\t\t\t\t_iteratorError = err;\n\t\t\t} finally {\n\t\t\t\ttry {\n\t\t\t\t\tif (!_iteratorNormalCompletion && _iterator.return) {\n\t\t\t\t\t\t_iterator.return();\n\t\t\t\t\t}\n\t\t\t\t} finally {\n\t\t\t\t\tif (_didIteratorError) {\n\t\t\t\t\t\tthrow _iteratorError;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'transform',\n\t\tvalue: function transform(transformers) {\n\t\t\ttransformers = Array.isArray(transformers) ? transformers : [transformers];\n\n\t\t\tvar _iteratorNormalCompletion2 = true;\n\t\t\tvar _didIteratorError2 = false;\n\t\t\tvar _iteratorError2 = undefined;\n\n\t\t\ttry {\n\t\t\t\tfor (var _iterator2 = this.paths[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n\t\t\t\t\tvar path = _step2.value;\n\n\t\t\t\t\tpath.pathData = (0, _transform2.default)(path.pathData, transformers);\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t_didIteratorError2 = true;\n\t\t\t\t_iteratorError2 = err;\n\t\t\t} finally {\n\t\t\t\ttry {\n\t\t\t\t\tif (!_iteratorNormalCompletion2 && _iterator2.return) {\n\t\t\t\t\t\t_iterator2.return();\n\t\t\t\t\t}\n\t\t\t\t} finally {\n\t\t\t\t\tif (_didIteratorError2) {\n\t\t\t\t\t\tthrow _iteratorError2;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.update();\n\t\t}\n\t}, {\n\t\tkey: 'interpolate',\n\t\tvalue: function interpolate(threshold) {\n\t\t\tvar didWork = false;\n\n\t\t\tfunction deltaFunction(points) {\n\t\t\t\tvar linearPoints = [points[0].slice(0, 2), points[points.length - 1].slice(0, 2)];\n\n\t\t\t\tvar delta = (0, _interpolate.euclideanDistance)(linearPoints);\n\t\t\t\tdidWork = didWork || delta > threshold;\n\n\t\t\t\treturn delta;\n\t\t\t}\n\n\t\t\tvar _iteratorNormalCompletion3 = true;\n\t\t\tvar _didIteratorError3 = false;\n\t\t\tvar _iteratorError3 = undefined;\n\n\t\t\ttry {\n\t\t\t\tfor (var _iterator3 = this.paths[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n\t\t\t\t\tvar path = _step3.value;\n\n\t\t\t\t\tpath.pathData = (0, _interpolate3.default)(path.pathData, threshold, deltaFunction);\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t_didIteratorError3 = true;\n\t\t\t\t_iteratorError3 = err;\n\t\t\t} finally {\n\t\t\t\ttry {\n\t\t\t\t\tif (!_iteratorNormalCompletion3 && _iterator3.return) {\n\t\t\t\t\t\t_iterator3.return();\n\t\t\t\t\t}\n\t\t\t\t} finally {\n\t\t\t\t\tif (_didIteratorError3) {\n\t\t\t\t\t\tthrow _iteratorError3;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn didWork;\n\t\t}\n\t}, {\n\t\tkey: 'extrapolate',\n\t\tvalue: function extrapolate(threshold) {\n\t\t\tvar didWork = false;\n\n\t\t\tfunction deltaFunction(points) {\n\t\t\t\tvar linearPoints = [points[0].slice(0, 2), points[points.length - 1].slice(0, 2)];\n\n\t\t\t\tvar delta = (0, _interpolate.euclideanDistance)(linearPoints);\n\t\t\t\tdidWork = didWork || delta <= threshold;\n\n\t\t\t\treturn delta;\n\t\t\t}\n\n\t\t\tvar _iteratorNormalCompletion4 = true;\n\t\t\tvar _didIteratorError4 = false;\n\t\t\tvar _iteratorError4 = undefined;\n\n\t\t\ttry {\n\t\t\t\tfor (var _iterator4 = this.paths[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n\t\t\t\t\tvar path = _step4.value;\n\n\t\t\t\t\tpath.pathData = (0, _extrapolate2.default)(path.pathData, threshold, deltaFunction);\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t_didIteratorError4 = true;\n\t\t\t\t_iteratorError4 = err;\n\t\t\t} finally {\n\t\t\t\ttry {\n\t\t\t\t\tif (!_iteratorNormalCompletion4 && _iterator4.return) {\n\t\t\t\t\t\t_iterator4.return();\n\t\t\t\t\t}\n\t\t\t\t} finally {\n\t\t\t\t\tif (_didIteratorError4) {\n\t\t\t\t\t\tthrow _iteratorError4;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn didWork;\n\t\t}\n\t}, {\n\t\tkey: 'preInterpolate',\n\t\tvalue: function preInterpolate(transformer, threshold) {\n\t\t\tvar didWork = false;\n\n\t\t\tfunction deltaFunction(points) {\n\t\t\t\tvar linearPoints = [points[0].slice(0, 2), points[points.length - 1].slice(0, 2)];\n\n\t\t\t\tvar delta = (0, _interpolate.euclideanDistance)(linearPoints);\n\t\t\t\tdidWork = didWork || delta > threshold;\n\n\t\t\t\treturn delta;\n\t\t\t}\n\n\t\t\tvar _iteratorNormalCompletion5 = true;\n\t\t\tvar _didIteratorError5 = false;\n\t\t\tvar _iteratorError5 = undefined;\n\n\t\t\ttry {\n\t\t\t\tfor (var _iterator5 = this.paths[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {\n\t\t\t\t\tvar path = _step5.value;\n\n\t\t\t\t\tvar transformed = (0, _transform2.default)(path.pathData, function (points) {\n\t\t\t\t\t\tvar newPoints = transformer(points.slice(0, 2));\n\t\t\t\t\t\tnewPoints.push.apply(newPoints, _toConsumableArray(points));\n\n\t\t\t\t\t\treturn newPoints;\n\t\t\t\t\t});\n\n\t\t\t\t\tvar interpolated = (0, _interpolate3.default)(transformed, threshold, deltaFunction);\n\n\t\t\t\t\tpath.pathData = (0, _transform2.default)(interpolated, function (points) {\n\t\t\t\t\t\treturn points.slice(2);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t_didIteratorError5 = true;\n\t\t\t\t_iteratorError5 = err;\n\t\t\t} finally {\n\t\t\t\ttry {\n\t\t\t\t\tif (!_iteratorNormalCompletion5 && _iterator5.return) {\n\t\t\t\t\t\t_iterator5.return();\n\t\t\t\t\t}\n\t\t\t\t} finally {\n\t\t\t\t\tif (_didIteratorError5) {\n\t\t\t\t\t\tthrow _iteratorError5;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn didWork;\n\t\t}\n\t}, {\n\t\tkey: 'preExtrapolate',\n\t\tvalue: function preExtrapolate(transformer, threshold) {\n\t\t\tvar didWork = false;\n\n\t\t\tfunction deltaFunction(points) {\n\t\t\t\tvar linearPoints = [points[0].slice(0, 2), points[points.length - 1].slice(0, 2)];\n\n\t\t\t\tvar delta = (0, _interpolate.euclideanDistance)(linearPoints);\n\t\t\t\tdidWork = didWork || delta <= threshold;\n\n\t\t\t\treturn delta;\n\t\t\t}\n\n\t\t\tvar _iteratorNormalCompletion6 = true;\n\t\t\tvar _didIteratorError6 = false;\n\t\t\tvar _iteratorError6 = undefined;\n\n\t\t\ttry {\n\t\t\t\tfor (var _iterator6 = this.paths[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {\n\t\t\t\t\tvar path = _step6.value;\n\n\t\t\t\t\tvar transformed = (0, _transform2.default)(path.pathData, function (points) {\n\t\t\t\t\t\tvar newPoints = transformer(points.slice(0, 2));\n\t\t\t\t\t\tnewPoints.push.apply(newPoints, _toConsumableArray(points));\n\n\t\t\t\t\t\treturn newPoints;\n\t\t\t\t\t});\n\n\t\t\t\t\tvar extrapolated = (0, _extrapolate2.default)(transformed, threshold, deltaFunction);\n\n\t\t\t\t\tpath.pathData = (0, _transform2.default)(extrapolated, function (points) {\n\t\t\t\t\t\treturn points.slice(2);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t_didIteratorError6 = true;\n\t\t\t\t_iteratorError6 = err;\n\t\t\t} finally {\n\t\t\t\ttry {\n\t\t\t\t\tif (!_iteratorNormalCompletion6 && _iterator6.return) {\n\t\t\t\t\t\t_iterator6.return();\n\t\t\t\t\t}\n\t\t\t\t} finally {\n\t\t\t\t\tif (_didIteratorError6) {\n\t\t\t\t\t\tthrow _iteratorError6;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn didWork;\n\t\t}\n\t}]);\n\n\treturn Warp;\n}();\n\nexports.default = Warp;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.shapesToPaths = shapesToPaths;\nexports.preparePaths = preparePaths;\n\nvar _parser = __webpack_require__(2);\n\nvar _parser2 = _interopRequireDefault(_parser);\n\nvar _encoder = __webpack_require__(3);\n\nvar _encoder2 = _interopRequireDefault(_encoder);\n\nvar _transform = __webpack_require__(1);\n\nvar _transform2 = _interopRequireDefault(_transform);\n\nvar _absolute = __webpack_require__(9);\n\nvar _absolute2 = _interopRequireDefault(_absolute);\n\nvar _shortToLong = __webpack_require__(10);\n\nvar _shortToLong2 = _interopRequireDefault(_shortToLong);\n\nvar _hvzToLine = __webpack_require__(11);\n\nvar _hvzToLine2 = _interopRequireDefault(_hvzToLine);\n\nvar _lineToCurve = __webpack_require__(12);\n\nvar _lineToCurve2 = _interopRequireDefault(_lineToCurve);\n\nvar _arcToCurve = __webpack_require__(13);\n\nvar _arcToCurve2 = _interopRequireDefault(_arcToCurve);\n\nvar _shape = __webpack_require__(14);\n\nvar pathShape = _interopRequireWildcard(_shape);\n\nvar _utils = __webpack_require__(4);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction shapesToPaths(element) {\n\tvar shapeMap = {\n\t\tline: function line(shapeElement) {\n\t\t\treturn pathShape.line((0, _utils.getProperty)(shapeElement, 'x1'), (0, _utils.getProperty)(shapeElement, 'y1'), (0, _utils.getProperty)(shapeElement, 'x2'), (0, _utils.getProperty)(shapeElement, 'y2'));\n\t\t},\n\t\tpolyline: function polyline(shapeElement) {\n\t\t\treturn pathShape.polyline.apply(pathShape, _toConsumableArray(shapeElement.points));\n\t\t},\n\t\tpolygon: function polygon(shapeElement) {\n\t\t\treturn pathShape.polygon.apply(pathShape, _toConsumableArray(shapeElement.points));\n\t\t},\n\t\trect: function rect(shapeElement) {\n\t\t\treturn pathShape.rectangle((0, _utils.getProperty)(shapeElement, 'x'), (0, _utils.getProperty)(shapeElement, 'y'), (0, _utils.getProperty)(shapeElement, 'width'), (0, _utils.getProperty)(shapeElement, 'height'), (0, _utils.getProperty)(shapeElement, 'rx'), (0, _utils.getProperty)(shapeElement, 'ry'));\n\t\t},\n\t\tellipse: function ellipse(shapeElement) {\n\t\t\treturn pathShape.ellipse((0, _utils.getProperty)(shapeElement, 'cx'), (0, _utils.getProperty)(shapeElement, 'cy'), (0, _utils.getProperty)(shapeElement, 'rx'), (0, _utils.getProperty)(shapeElement, 'ry'));\n\t\t},\n\t\tcircle: function circle(shapeElement) {\n\t\t\treturn pathShape.circle((0, _utils.getProperty)(shapeElement, 'cx'), (0, _utils.getProperty)(shapeElement, 'cy'), (0, _utils.getProperty)(shapeElement, 'r'));\n\t\t}\n\t};\n\n\tvar shapeElements = element.querySelectorAll(Object.keys(shapeMap).join(','));\n\n\tvar _iteratorNormalCompletion = true;\n\tvar _didIteratorError = false;\n\tvar _iteratorError = undefined;\n\n\ttry {\n\t\tfor (var _iterator = shapeElements[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n\t\t\tvar shapeElement = _step.value;\n\n\t\t\tvar shapeName = shapeElement.tagName.toLowerCase();\n\n\t\t\tif (shapeName in shapeMap) {\n\t\t\t\tvar path = shapeMap[shapeName](shapeElement);\n\t\t\t\tvar pathString = (0, _encoder2.default)(path);\n\t\t\t\tvar attributes = { d: pathString };\n\n\t\t\t\tvar _iteratorNormalCompletion2 = true;\n\t\t\t\tvar _didIteratorError2 = false;\n\t\t\t\tvar _iteratorError2 = undefined;\n\n\t\t\t\ttry {\n\t\t\t\t\tfor (var _iterator2 = Array.from(shapeElement.attributes)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n\t\t\t\t\t\tvar attribute = _step2.value;\n\n\t\t\t\t\t\tvar name = attribute.nodeName;\n\t\t\t\t\t\tvar value = attribute.nodeValue;\n\n\t\t\t\t\t\t// Avoid dimensional properties\n\t\t\t\t\t\tif (!/^(x|y|x1|y1|x2|y2|width|height|r|rx|ry|cx|cy|points|d)$/.test(name)) {\n\t\t\t\t\t\t\tattributes[name] = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} catch (err) {\n\t\t\t\t\t_didIteratorError2 = true;\n\t\t\t\t\t_iteratorError2 = err;\n\t\t\t\t} finally {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (!_iteratorNormalCompletion2 && _iterator2.return) {\n\t\t\t\t\t\t\t_iterator2.return();\n\t\t\t\t\t\t}\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif (_didIteratorError2) {\n\t\t\t\t\t\t\tthrow _iteratorError2;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar pathElement = (0, _utils.createElement)('path', attributes);\n\t\t\t\tshapeElement.parentNode.replaceChild(pathElement, shapeElement);\n\t\t\t}\n\t\t}\n\t} catch (err) {\n\t\t_didIteratorError = true;\n\t\t_iteratorError = err;\n\t} finally {\n\t\ttry {\n\t\t\tif (!_iteratorNormalCompletion && _iterator.return) {\n\t\t\t\t_iterator.return();\n\t\t\t}\n\t\t} finally {\n\t\t\tif (_didIteratorError) {\n\t\t\t\tthrow _iteratorError;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction preparePaths(element) {\n\tvar curveType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'q';\n\n\tvar pathElements = Array.from(element.querySelectorAll('path'));\n\n\tvar _iteratorNormalCompletion3 = true;\n\tvar _didIteratorError3 = false;\n\tvar _iteratorError3 = undefined;\n\n\ttry {\n\t\tfor (var _iterator3 = pathElements[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n\t\t\tvar pathElement = _step3.value;\n\n\t\t\tvar pathString = (0, _utils.getProperty)(pathElement, 'd');\n\t\t\tvar path = (0, _parser2.default)(pathString);\n\n\t\t\tpath = (0, _transform2.default)(path, (0, _absolute2.default)());\n\t\t\tpath = (0, _transform2.default)(path, (0, _shortToLong2.default)());\n\t\t\tpath = (0, _transform2.default)(path, (0, _hvzToLine2.default)());\n\t\t\tpath = (0, _transform2.default)(path, (0, _lineToCurve2.default)(curveType));\n\t\t\tpath = (0, _transform2.default)(path, (0, _arcToCurve2.default)());\n\n\t\t\tpathString = (0, _encoder2.default)(path);\n\n\t\t\t(0, _utils.setProperty)(pathElement, 'd', pathString);\n\t\t}\n\t} catch (err) {\n\t\t_didIteratorError3 = true;\n\t\t_iteratorError3 = err;\n\t} finally {\n\t\ttry {\n\t\t\tif (!_iteratorNormalCompletion3 && _iterator3.return) {\n\t\t\t\t_iterator3.return();\n\t\t\t}\n\t\t} finally {\n\t\t\tif (_didIteratorError3) {\n\t\t\t\tthrow _iteratorError3;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.default = absoluteGenerator;\n\nvar _utils = __webpack_require__(0);\n\nfunction absoluteGenerator() {\n\tvar xProps = ['x', 'x1', 'x2'];\n\tvar yProps = ['y', 'y1', 'y2'];\n\tvar drawingCmdExpr = /[lhvcsqta]/;\n\n\tvar prevX = 0;\n\tvar prevY = 0;\n\tvar pathStartX = NaN;\n\tvar pathStartY = NaN;\n\n\treturn function absolute(segment) {\n\t\tif (isNaN(pathStartX) && (0, _utils.isDrawingSegment)(segment)) {\n\t\t\tpathStartX = prevX;\n\t\t\tpathStartY = prevY;\n\t\t}\n\n\t\tif (segment.type === 'z' && !isNaN(pathStartX)) {\n\t\t\tprevX = pathStartX;\n\t\t\tprevY = pathStartY;\n\t\t\tpathStartX = NaN;\n\t\t\tpathStartY = NaN;\n\t\t}\n\n\t\tif (segment.relative) {\n\t\t\tvar _iteratorNormalCompletion = true;\n\t\t\tvar _didIteratorError = false;\n\t\t\tvar _iteratorError = undefined;\n\n\t\t\ttry {\n\t\t\t\tfor (var _iterator = xProps[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n\t\t\t\t\tvar x = _step.value;\n\n\t\t\t\t\tif (x in segment) {\n\t\t\t\t\t\tsegment[x] += prevX;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t_didIteratorError = true;\n\t\t\t\t_iteratorError = err;\n\t\t\t} finally {\n\t\t\t\ttry {\n\t\t\t\t\tif (!_iteratorNormalCompletion && _iterator.return) {\n\t\t\t\t\t\t_iterator.return();\n\t\t\t\t\t}\n\t\t\t\t} finally {\n\t\t\t\t\tif (_didIteratorError) {\n\t\t\t\t\t\tthrow _iteratorError;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar _iteratorNormalCompletion2 = true;\n\t\t\tvar _didIteratorError2 = false;\n\t\t\tvar _iteratorError2 = undefined;\n\n\t\t\ttry {\n\t\t\t\tfor (var _iterator2 = yProps[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n\t\t\t\t\tvar y = _step2.value;\n\n\t\t\t\t\tif (y in segment) {\n\t\t\t\t\t\tsegment[y] += prevY;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t_didIteratorError2 = true;\n\t\t\t\t_iteratorError2 = err;\n\t\t\t} finally {\n\t\t\t\ttry {\n\t\t\t\t\tif (!_iteratorNormalCompletion2 && _iterator2.return) {\n\t\t\t\t\t\t_iterator2.return();\n\t\t\t\t\t}\n\t\t\t\t} finally {\n\t\t\t\t\tif (_didIteratorError2) {\n\t\t\t\t\t\tthrow _iteratorError2;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsegment.relative = false;\n\t\t}\n\n\t\tprevX = 'x' in segment ? segment.x : prevX;\n\t\tprevY = 'y' in segment ? segment.y : prevY;\n\n\t\tif (segment.type === 'm') {\n\t\t\tpathStartX = prevX;\n\t\t\tpathStartY = prevY;\n\t\t}\n\n\t\treturn segment;\n\t};\n}\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.default = shortToLongGenerator;\nfunction shortToLongGenerator() {\n\tvar prevX = 0;\n\tvar prevY = 0;\n\tvar pathStartX = NaN;\n\tvar pathStartY = NaN;\n\tvar prevCurveC2X = NaN;\n\tvar prevCurveC2Y = NaN;\n\tvar prevQuadCX = NaN;\n\tvar prevQuadCY = NaN;\n\n\treturn function shortToLong(segment) {\n\t\tif (isNaN(pathStartX) && segment.type !== 'm') {\n\t\t\tthrow new Error('Transform path error: path must start with \"moveto\"');\n\t\t}\n\n\t\tif (segment.type === 's') {\n\t\t\tprevCurveC2X = isNaN(prevCurveC2X) ? prevX : prevCurveC2X;\n\t\t\tprevCurveC2Y = isNaN(prevCurveC2Y) ? prevY : prevCurveC2Y;\n\n\t\t\tsegment.type = 'c';\n\t\t\tsegment.x1 = (segment.relative ? 1 : 2) * prevX - prevCurveC2X;\n\t\t\tsegment.y1 = (segment.relative ? 1 : 2) * prevY - prevCurveC2Y;\n\t\t}\n\n\t\tif (segment.type === 'c') {\n\t\t\tprevCurveC2X = (segment.relative ? prevX : 0) + segment.x2;\n\t\t\tprevCurveC2Y = (segment.relative ? prevY : 0) + segment.y2;\n\t\t} else {\n\t\t\tprevCurveC2X = NaN;\n\t\t\tprevCurveC2Y = NaN;\n\t\t}\n\n\t\tif (segment.type === 't') {\n\t\t\tprevQuadCX = isNaN(prevQuadCX) ? prevX : prevQuadCX;\n\t\t\tprevQuadCY = isNaN(prevQuadCY) ? prevY : prevQuadCY;\n\n\t\t\tsegment.type = 'q';\n\t\t\tsegment.x1 = (segment.relative ? 1 : 2) * prevX - prevQuadCX;\n\t\t\tsegment.y1 = (segment.relative ? 1 : 2) * prevY - prevQuadCY;\n\t\t}\n\n\t\tif (segment.type === 'q') {\n\t\t\tprevQuadCX = (segment.relative ? prevX : 0) + segment.x1;\n\t\t\tprevQuadCY = (segment.relative ? prevY : 0) + segment.y1;\n\t\t} else {\n\t\t\tprevQuadCX = NaN;\n\t\t\tprevQuadCY = NaN;\n\t\t}\n\n\t\tif (segment.type === 'z') {\n\t\t\tprevX = pathStartX;\n\t\t\tprevY = pathStartY;\n\t\t}\n\n\t\tprevX = 'x' in segment ? (segment.relative ? prevX : 0) + segment.x : prevX;\n\t\tprevY = 'y' in segment ? (segment.relative ? prevY : 0) + segment.y : prevY;\n\n\t\tif (segment.type === 'm') {\n\t\t\tpathStartX = prevX;\n\t\t\tpathStartY = prevY;\n\t\t}\n\n\t\treturn segment;\n\t};\n}\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.default = hvzToLineGenerator;\nfunction hvzToLineGenerator() {\n\tvar prevX = 0;\n\tvar prevY = 0;\n\tvar pathStartX = NaN;\n\tvar pathStartY = NaN;\n\n\treturn function hvzToLine(segment) {\n\t\tif (isNaN(pathStartX) && segment.type !== 'm') {\n\t\t\tthrow new Error('Transform path error: path must start with \"moveto\"');\n\t\t}\n\n\t\tswitch (segment.type) {\n\t\t\tcase 'h':\n\t\t\t\t{\n\t\t\t\t\tsegment.type = 'l';\n\t\t\t\t\tsegment.y = segment.relative ? 0 : prevY;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'v':\n\t\t\t\t{\n\t\t\t\t\tsegment.type = 'l';\n\t\t\t\t\tsegment.x = segment.relative ? 0 : prevX;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'z':\n\t\t\t\t{\n\t\t\t\t\tsegment.type = 'l';\n\t\t\t\t\tsegment.x = pathStartX - (segment.relative ? prevX : 0);\n\t\t\t\t\tsegment.y = pathStartY - (segment.relative ? prevY : 0);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'a':\n\t\t\t\t{\n\t\t\t\t\tif (segment.rx === 0 || segment.ry === 0) {\n\t\t\t\t\t\tsegment.type = 'l';\n\n\t\t\t\t\t\tdelete segment.rx;\n\t\t\t\t\t\tdelete segment.ry;\n\t\t\t\t\t\tdelete segment.xRotation;\n\t\t\t\t\t\tdelete segment.largeArc;\n\t\t\t\t\t\tdelete segment.sweep;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\n\t\tprevX = (segment.relative ? prevX : 0) + segment.x;\n\t\tprevY = (segment.relative ? prevY : 0) + segment.y;\n\n\t\tif (segment.type === 'm') {\n\t\t\tpathStartX = prevX;\n\t\t\tpathStartY = prevY;\n\t\t}\n\n\t\treturn segment;\n\t};\n}\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.default = lineToCurveGenerator;\n\nvar _utils = __webpack_require__(0);\n\nfunction lineToCurveGenerator() {\n\tvar curveType = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'q';\n\n\tvar prevX = 0;\n\tvar prevY = 0;\n\tvar pathStartX = NaN;\n\tvar pathStartY = NaN;\n\n\treturn function lineToCurve(segment) {\n\t\tif (isNaN(pathStartX) && (0, _utils.isDrawingSegment)(segment.type)) {\n\t\t\tpathStartX = prevX;\n\t\t\tpathStartY = prevY;\n\t\t}\n\n\t\tif (segment.type === 'z' && !isNaN(pathStartX)) {\n\t\t\tprevX = pathStartX;\n\t\t\tprevY = pathStartY;\n\t\t\tpathStartX = NaN;\n\t\t\tpathStartY = NaN;\n\t\t}\n\n\t\tif (segment.type === 'l') {\n\t\t\tvar startX = segment.relative ? 0 : prevX;\n\t\t\tvar startY = segment.relative ? 0 : prevY;\n\n\t\t\tsegment.type = curveType;\n\n\t\t\tswitch (curveType) {\n\t\t\t\tcase 'q':\n\t\t\t\t\t{\n\t\t\t\t\t\tsegment.x1 = (startX + segment.x) / 2;\n\t\t\t\t\t\tsegment.y1 = (startY + segment.y) / 2;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'c':\n\t\t\t\t\t{\n\t\t\t\t\t\tvar offsetX = (segment.x - startX) / 3;\n\t\t\t\t\t\tvar offsetY = (segment.y - startY) / 3;\n\n\t\t\t\t\t\tsegment.x1 = startX + offsetX;\n\t\t\t\t\t\tsegment.y1 = startY + offsetY;\n\t\t\t\t\t\tsegment.x2 = startX + 2 * offsetX;\n\t\t\t\t\t\tsegment.y2 = startY + 2 * offsetY;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\t{\n\t\t\t\t\t\tthrow new Error('Invalid curve type \"' + curveType + '\"');\n\t\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tprevX = 'x' in segment ? (segment.relative ? prevX : 0) + segment.x : prevX;\n\t\tprevY = 'y' in segment ? (segment.relative ? prevY : 0) + segment.y : prevY;\n\n\t\tif (segment.type === 'm') {\n\t\t\tpathStartX = prevX;\n\t\t\tpathStartY = prevY;\n\t\t}\n\n\t\treturn segment;\n\t};\n}\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.default = arcToCurveGenerator;\n\nvar _utils = __webpack_require__(0);\n\nfunction arcToCurveGenerator() {\n\tvar prevX = 0;\n\tvar prevY = 0;\n\tvar pathStartX = NaN;\n\tvar pathStartY = NaN;\n\n\treturn function arcToCurve(segment) {\n\t\tvar segments = segment;\n\n\t\tif (isNaN(pathStartX) && (0, _utils.isDrawingSegment)(segment.type)) {\n\t\t\tpathStartX = prevX;\n\t\t\tpathStartY = prevY;\n\t\t}\n\n\t\tif (segment.type === 'z' && !isNaN(pathStartX)) {\n\t\t\tprevX = pathStartX;\n\t\t\tprevY = pathStartY;\n\t\t\tpathStartX = NaN;\n\t\t\tpathStartY = NaN;\n\t\t}\n\n\t\tif (segment.type === 'a') {\n\t\t\tvar startX = segment.relative ? 0 : prevX;\n\t\t\tvar startY = segment.relative ? 0 : prevY;\n\t\t\tvar rx = segment.rx,\n\t\t\t ry = segment.ry,\n\t\t\t xRotation = segment.xRotation,\n\t\t\t largeArc = segment.largeArc,\n\t\t\t sweep = segment.sweep,\n\t\t\t x = segment.x,\n\t\t\t y = segment.y;\n\n\t\t\tvar curveSegments = converter(startX, startY, rx, ry, xRotation, largeArc, sweep, x, y);\n\n\t\t\tvar prevCurveX = 0;\n\t\t\tvar prevCurveY = 0;\n\n\t\t\tvar _iteratorNormalCompletion = true;\n\t\t\tvar _didIteratorError = false;\n\t\t\tvar _iteratorError = undefined;\n\n\t\t\ttry {\n\t\t\t\tfor (var _iterator = curveSegments[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n\t\t\t\t\tvar curveSegment = _step.value;\n\n\t\t\t\t\tcurveSegment.relative = segment.relative;\n\n\t\t\t\t\tif (segment.relative && curveSegment.type === 'c') {\n\t\t\t\t\t\tcurveSegment.x -= prevCurveX;\n\t\t\t\t\t\tcurveSegment.x1 -= prevCurveX;\n\t\t\t\t\t\tcurveSegment.x2 -= prevCurveX;\n\t\t\t\t\t\tcurveSegment.y -= prevCurveY;\n\t\t\t\t\t\tcurveSegment.y1 -= prevCurveY;\n\t\t\t\t\t\tcurveSegment.y2 -= prevCurveY;\n\t\t\t\t\t}\n\n\t\t\t\t\tprevCurveX = curveSegment.x;\n\t\t\t\t\tprevCurveY = curveSegment.y;\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t_didIteratorError = true;\n\t\t\t\t_iteratorError = err;\n\t\t\t} finally {\n\t\t\t\ttry {\n\t\t\t\t\tif (!_iteratorNormalCompletion && _iterator.return) {\n\t\t\t\t\t\t_iterator.return();\n\t\t\t\t\t}\n\t\t\t\t} finally {\n\t\t\t\t\tif (_didIteratorError) {\n\t\t\t\t\t\tthrow _iteratorError;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsegments = curveSegments;\n\t\t}\n\n\t\tprevX = 'x' in segment ? (segment.relative ? prevX : 0) + segment.x : prevX;\n\t\tprevY = 'y' in segment ? (segment.relative ? prevY : 0) + segment.y : prevY;\n\n\t\tif (segment.type === 'm') {\n\t\t\tpathStartX = prevX;\n\t\t\tpathStartY = prevY;\n\t\t}\n\n\t\treturn segments;\n\t};\n}\n\nfunction converter(sx, sy, rx, ry, angle, large, sweep, x, y) {\n\tif (sx === x && sy === y) {\n\t\treturn [];\n\t}\n\n\tif (!rx && !ry) {\n\t\treturn [{ type: 'l', x: x, y: y }];\n\t}\n\n\tvar sinPhi = Math.sin(angle * Math.PI / 180);\n\tvar cosPhi = Math.cos(angle * Math.PI / 180);\n\n\tvar xd = cosPhi * (sx - x) / 2 + sinPhi * (sy - y) / 2;\n\tvar yd = -sinPhi * (sx - x) / 2 + cosPhi * (sy - y) / 2;\n\n\tvar rx2 = rx * rx;\n\tvar ry2 = ry * ry;\n\n\tvar xd2 = xd * xd;\n\tvar yd2 = yd * yd;\n\n\tvar root = 0;\n\tvar numerator = rx2 * ry2 - rx2 * yd2 - ry2 * xd2;\n\n\tif (numerator < 0) {\n\t\tvar s = Math.sqrt(1 - numerator / (rx2 * ry2));\n\n\t\trx *= s;\n\t\try *= s;\n\t} else {\n\t\troot = (large && sweep || !large && !sweep ? -1 : 1) * Math.sqrt(numerator / (rx2 * yd2 + ry2 * xd2));\n\t}\n\n\tvar cxd = root * rx * yd / ry;\n\tvar cyd = -root * ry * xd / rx;\n\n\tvar cx = cosPhi * cxd - sinPhi * cyd + (sx + x) / 2;\n\tvar cy = sinPhi * cxd + cosPhi * cyd + (sy + y) / 2;\n\n\tvar theta1 = angleBetween(1, 0, (xd - cxd) / rx, (yd - cyd) / ry);\n\tvar dtheta = angleBetween((xd - cxd) / rx, (yd - cyd) / ry, (-xd - cxd) / rx, (-yd - cyd) / ry);\n\n\tif (!sweep && dtheta > 0) {\n\t\tdtheta -= Math.PI * 2;\n\t} else if (sweep && dtheta < 0) {\n\t\tdtheta += Math.PI * 2;\n\t}\n\n\tvar segments = [];\n\tvar numSegs = Math.ceil(Math.abs(dtheta / (Math.PI / 2)));\n\tvar delta = dtheta / numSegs;\n\tvar t = 8 / 3 * Math.sin(delta / 4) * Math.sin(delta / 4) / Math.sin(delta / 2);\n\n\tfor (var i = 0; i < numSegs; i++) {\n\t\tvar cosTheta1 = Math.cos(theta1);\n\t\tvar sinTheta1 = Math.sin(theta1);\n\t\tvar theta2 = theta1 + delta;\n\t\tvar cosTheta2 = Math.cos(theta2);\n\t\tvar sinTheta2 = Math.sin(theta2);\n\n\t\tvar epx = cosPhi * rx * cosTheta2 - sinPhi * ry * sinTheta2 + cx;\n\t\tvar epy = sinPhi * rx * cosTheta2 + cosPhi * ry * sinTheta2 + cy;\n\n\t\tvar dx = t * (-cosPhi * rx * sinTheta1 - sinPhi * ry * cosTheta1);\n\t\tvar dy = t * (-sinPhi * rx * sinTheta1 + cosPhi * ry * cosTheta1);\n\n\t\tvar dxe = t * (cosPhi * rx * sinTheta2 + sinPhi * ry * cosTheta2);\n\t\tvar dye = t * (sinPhi * rx * sinTheta2 - cosPhi * ry * cosTheta2);\n\n\t\tsegments.push({\n\t\t\ttype: 'c',\n\t\t\tx: epx,\n\t\t\ty: epy,\n\t\t\tx1: sx + dx,\n\t\t\ty1: sy + dy,\n\t\t\tx2: epx + dxe,\n\t\t\ty2: epy + dye\n\t\t});\n\n\t\ttheta1 = theta2;\n\t\tsx = epx;\n\t\tsy = epy;\n\t}\n\n\treturn segments;\n}\n\nfunction angleBetween(ux, uy, vx, vy) {\n\tvar ta = Math.atan2(uy, ux);\n\tvar tb = Math.atan2(vy, vx);\n\n\tif (tb >= ta) {\n\t\treturn tb - ta;\n\t}\n\n\treturn Math.PI * 2 - (ta - tb);\n}\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.line = line;\nexports.polyline = polyline;\nexports.polygon = polygon;\nexports.rectangle = rectangle;\nexports.ellipse = ellipse;\nexports.circle = circle;\nfunction line(x1, y1, x2, y2) {\n\tvar relative = false;\n\n\treturn [{ type: 'm', relative: relative, x: x1, y: y1 }, { type: 'l', relative: relative, x: x2, y: y2 }];\n}\n\nfunction polyline() {\n\tfor (var _len = arguments.length, points = Array(_len), _key = 0; _key < _len; _key++) {\n\t\tpoints[_key] = arguments[_key];\n\t}\n\n\treturn points.map(function (p, i) {\n\t\treturn {\n\t\t\ttype: i === 0 ? 'm' : 'l',\n\t\t\trelative: false,\n\t\t\tx: p.x || p[0],\n\t\t\ty: p.y || p[1]\n\t\t};\n\t});\n}\n\nfunction polygon() {\n\tvar path = polyline.apply(undefined, arguments);\n\tpath.append({ type: 'z', relative: false });\n\n\treturn path;\n}\n\nfunction rectangle(x, y, width, height) {\n\tvar rx = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\n\tvar ry = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n\tvar relative = false;\n\tvar path = void 0;\n\n\tif (rx > 0 || ry > 0) {\n\t\t// If one of the properties is not defined or zero, then it's just given the value of the other\n\t\trx = rx || ry;\n\t\try = ry || rx;\n\n\t\tvar xRotation = 0;\n\t\tvar largeArc = false;\n\t\tvar sweep = true;\n\n\t\tpath = [{ type: 'm', relative: relative, x: x + rx, y: y }, { type: 'h', relative: relative, x: x + width - rx }, { type: 'a', relative: relative, rx: rx, ry: ry, xRotation: xRotation, largeArc: largeArc, sweep: sweep, x: x + width, y: y + ry }, { type: 'v', relative: relative, y: y + height - ry }, { type: 'a', relative: relative, rx: rx, ry: ry, xRotation: xRotation, largeArc: largeArc, sweep: sweep, x: x + width - rx, y: y + height }, { type: 'h', relative: relative, x: x + rx }, { type: 'a', relative: relative, rx: rx, ry: ry, xRotation: xRotation, largeArc: largeArc, sweep: sweep, x: x, y: y + height - ry }, { type: 'v', relative: relative, y: y + ry }, { type: 'a', relative: relative, rx: rx, ry: ry, xRotation: xRotation, largeArc: largeArc, sweep: sweep, x: x + rx, y: y }];\n\t} else {\n\t\tpath = [{ type: 'm', relative: relative, x: x, y: y }, { type: 'h', relative: relative, x: x + width }, { type: 'v', relative: relative, y: y + height }, { type: 'h', relative: relative, x: x }, { type: 'v', relative: relative, y: y }];\n\t}\n\n\treturn path;\n}\n\nfunction ellipse(cx, cy, rx, ry) {\n\tvar relative = false;\n\tvar xRotation = 0;\n\tvar largeArc = false;\n\tvar sweep = true;\n\n\treturn [{ type: 'm', relative: relative, x: cx, y: cy - ry }, { type: 'a', relative: relative, rx: rx, ry: ry, xRotation: xRotation, largeArc: largeArc, sweep: sweep, x: cx, y: cy + ry }, { type: 'a', relative: relative, rx: rx, ry: ry, xRotation: xRotation, largeArc: largeArc, sweep: sweep, x: cx, y: cy - ry }];\n}\n\nfunction circle(cx, cy, r) {\n\treturn ellipse(cx, cy, r, r);\n}\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nexports.default = transform;\n\nvar _transform = __webpack_require__(1);\n\nvar _transform2 = _interopRequireDefault(_transform);\n\nvar _utils = __webpack_require__(0);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction transform(path, transformers) {\n\treturn (0, _transform2.default)(path, function (segment) {\n\t\tfor (var i = 0; i < _utils.pointGroups.length; i++) {\n\t\t\tvar _pointGroups$i = _slicedToArray(_utils.pointGroups[i], 2),\n\t\t\t x = _pointGroups$i[0],\n\t\t\t y = _pointGroups$i[1];\n\n\t\t\tif (x in segment && y in segment) {\n\t\t\t\tvar extendedPoints = (segment.extended ? segment.extended[i] : null) || [];\n\t\t\t\tvar oldPoints = [segment[x], segment[y]].concat(_toConsumableArray(extendedPoints));\n\t\t\t\tvar newPoints = transformers.reduce(function (points, transformer) {\n\t\t\t\t\treturn transformer(points);\n\t\t\t\t}, oldPoints);\n\n\t\t\t\tif (newPoints.length < 2) {\n\t\t\t\t\tthrow new Error('Transformer must return at least 2 points');\n\t\t\t\t}\n\n\t\t\t\tsegment[x] = newPoints[0];\n\t\t\t\tsegment[y] = newPoints[1];\n\n\t\t\t\tif (newPoints.length > 2) {\n\t\t\t\t\tsegment.extended = segment.extended || {};\n\t\t\t\t\tsegment.extended[i] = newPoints.slice(2);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn segment;\n\t});\n}\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nexports.default = interpolate;\n\nvar _transform = __webpack_require__(1);\n\nvar _transform2 = _interopRequireDefault(_transform);\n\nvar _interpolate = __webpack_require__(5);\n\nvar _utils = __webpack_require__(0);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar interpolationTypesExpr = /[lqc]/;\n\nfunction interpolate(path, threshold, deltaFunction) {\n\tvar prevPoints = [];\n\n\treturn (0, _transform2.default)(path, function (segment) {\n\t\tvar segments = segment;\n\n\t\tif (interpolationTypesExpr.test(segment.type)) {\n\t\t\tvar points = [prevPoints];\n\n\t\t\tfor (var j = 0; j < _utils.pointGroups.length; j++) {\n\t\t\t\tvar _pointGroups$j = _slicedToArray(_utils.pointGroups[j], 2),\n\t\t\t\t x = _pointGroups$j[0],\n\t\t\t\t y = _pointGroups$j[1];\n\n\t\t\t\tif (x in segment && y in segment) {\n\t\t\t\t\tvar extendedPoints = (segment.extended ? segment.extended[j] : null) || [];\n\t\t\t\t\tvar pointList = [segment[x], segment[y]].concat(_toConsumableArray(extendedPoints));\n\n\t\t\t\t\tpoints.push(pointList);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar rawSegments = (0, _interpolate.until)(points, threshold, deltaFunction);\n\n\t\t\tif (rawSegments.length > 1) {\n\t\t\t\tsegments = rawSegments.map(function (rawSegment) {\n\t\t\t\t\treturn (0, _utils.createLineSegment)(rawSegment);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif ('x' in segment && 'y' in segment) {\n\t\t\tvar _extendedPoints = (segment.extended ? segment.extended[2] : null) || [];\n\t\t\tvar _pointList = [segment.x, segment.y].concat(_toConsumableArray(_extendedPoints));\n\n\t\t\tprevPoints = _pointList;\n\t\t}\n\n\t\treturn segments;\n\t});\n}\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.default = extrapolate;\n\nvar _transform = __webpack_require__(1);\n\nvar _transform2 = _interopRequireDefault(_transform);\n\nvar _utils = __webpack_require__(0);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar extrapolationTypesExpr = /[lqc]/;\n\nfunction extrapolate(path, threshold, deltaFunction) {\n\treturn (0, _transform2.default)(path, function (segment, i, oldPath, newPath) {\n\t\tif (i > 1) {\n\t\t\tvar prevSegment = newPath[newPath.length - 1];\n\t\t\tvar prevSegment2 = newPath[newPath.length - 2];\n\n\t\t\tif (extrapolationTypesExpr.test(segment.type) && prevSegment.type === segment.type) {\n\t\t\t\tvar points = [[prevSegment2.x, prevSegment2.y], [segment.x, segment.y]];\n\n\t\t\t\tif (deltaFunction(points) <= threshold) {\n\t\t\t\t\tvar newSegment = (0, _utils.joinSegments)(prevSegment, segment);\n\n\t\t\t\t\tif (newSegment) {\n\t\t\t\t\t\tnewPath[newPath.length - 1] = newSegment;\n\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn segment;\n\t});\n}\n\n/***/ })\n/******/ ]);\n\n\n// WEBPACK FOOTER //\n// warp.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 6);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap b0c5cf855626a85312a0","const segmentSchemas = {\n\tm: ['x', 'y'],\n\tz: [],\n\tl: ['x', 'y'],\n\th: ['x'],\n\tv: ['y'],\n\tc: ['x1', 'y1', 'x2', 'y2', 'x', 'y'],\n\ts: ['x2', 'y2', 'x', 'y'],\n\tq: ['x1', 'y1', 'x', 'y'],\n\tt: ['x', 'y'],\n\ta: ['rx', 'ry', 'xRotation', 'largeArc', 'sweep', 'x', 'y'],\n}\n\nexport const pointGroups = [\n\t['x1', 'y1'],\n\t['x2', 'y2'],\n\t['x', 'y'],\n]\n\nconst drawingCmdExpr = /[lhvcsqta]/\n\nexport function getSegmentSchema(type)\n{\n\treturn segmentSchemas[ type.toLowerCase() ]\n}\n\nexport function isDrawingSegment(segment)\n{\n\treturn drawingCmdExpr.test(segment.type)\n}\n\nexport function createLineSegment(points)\n{\n\tconst segment = { relative: false }\n\n\tswitch(points.length)\n\t{\n\t\tcase 2: { segment.type = 'l' } break\n\t\tcase 3: { segment.type = 'q' } break\n\t\tcase 4: { segment.type = 'c' } break\n\t\tdefault: return false\n\t}\n\n\tfor(let i = 1; i < points.length; i++)\n\t{\n\t\tconst g = (i < points.length - 1 ? i : pointGroups.length) - 1\n\t\tconst [x, y] = pointGroups[g]\n\n\t\tsegment[x] = points[i][0]\n\t\tsegment[y] = points[i][1]\n\n\t\tif(points[i].length > 2)\n\t\t{\n\t\t\tsegment.extended = segment.extended || {}\n\t\t\tsegment.extended[g] = points[i].slice(2)\n\t\t}\n\t}\n\n\treturn segment\n}\n\nexport function joinSegments(segmentA, segmentB)\n{\n\tif(segmentA.type === segmentB.type && segmentA.relative === segmentB.relative)\n\t{\n\t\tconst { type, relative, x, y } = segmentB\n\t\tconst bothExtended = !!segmentA.extended && !!segmentB.extended\n\t\tconst extended = {}\n\t\tconst segment = { type, relative, x, y, extended }\n\n\t\tfunction setExtended(pointsA, pointsB, type)\n\t\t{\n\t\t\tif(pointsA && pointsB)\n\t\t\t{\n\t\t\t\tconst points = []\n\t\t\t\tconst pointCount = Math.min(pointsA.length, pointsB.length)\n\n\t\t\t\tfor(let i = 0; i < pointCount; i++)\n\t\t\t\t{\n\t\t\t\t\tpoints.push((pointsA[i] + pointsB[i]) / 2)\n\t\t\t\t}\n\n\t\t\t\tsegment.extended[type] = points\n\t\t\t}\n\t\t}\n\n\t\tswitch(type)\n\t\t{\n\t\t\tcase 'l': break\n\t\t\tcase 'q':\n\t\t\t{\n\t\t\t\tsegment.x1 = (segmentA.x1 + segmentB.x1) / 2\n\t\t\t\tsegment.y1 = (segmentA.y1 + segmentB.y1) / 2\n\n\t\t\t\tif(bothExtended)\n\t\t\t\t{\n\t\t\t\t\tsetExtended(segmentA.extended[0], segmentB.extended[0], 0)\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak\n\t\t\tcase 'c':\n\t\t\t{\n\t\t\t\tsegment.x1 = (segmentA.x1 + segmentA.x2) / 2\n\t\t\t\tsegment.y1 = (segmentA.y1 + segmentA.y2) / 2\n\t\t\t\tsegment.x2 = (segmentB.x1 + segmentB.x2) / 2\n\t\t\t\tsegment.y2 = (segmentB.y1 + segmentB.y2) / 2\n\n\t\t\t\tif(bothExtended)\n\t\t\t\t{\n\t\t\t\t\tsetExtended(segmentA.extended[0], segmentA.extended[1], 0)\n\t\t\t\t\tsetExtended(segmentB.extended[0], segmentB.extended[1], 1)\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak\n\t\t\tdefault:\n\t\t\t{\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\tif(segmentB.extended && segmentB.extended[2])\n\t\t{\n\t\t\textended[2] = segmentB.extended[2]\n\t\t}\n\n\t\treturn segment\n\t}\n\n\treturn false\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/path/utils.js","export default function transform(path, transformer)\n{\n\tconst newPath = []\n\n\tfor(let i = 0; i < path.length; i++)\n\t{\n\t\tconst segment = JSON.parse(JSON.stringify(path[i]))\n\t\tconst result = transformer(segment, i, path, newPath)\n\n\t\tif(Array.isArray(result))\n\t\t{\n\t\t\tnewPath.push(...result)\n\t\t}\n\t\telse if(result)\n\t\t{\n\t\t\tnewPath.push(result)\n\t\t}\n\t}\n\n\treturn newPath\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/path/transform.js","import { getSegmentSchema } from './utils'\n\nconst segmentExpr = /([mzlhvcsqta])([^mzlhvcsqta]*)/ig\nconst numberExpr = /-?[0-9]*\\.?[0-9]+(?:e[-+]?\\d+)?/ig\n\nexport default function parser(pathString)\n{\n\tconst pathData = []\n\n\tlet segmentMatch\n\tsegmentExpr.lastIndex = 0\n\t\n\twhile( (segmentMatch = segmentExpr.exec(pathString)) )\n\t{\n\t\tconst type = segmentMatch[1].toLowerCase()\n\t\tconst numbers = (segmentMatch[2].match(numberExpr) || []).map(parseFloat)\n\t\tconst relative = (type === segmentMatch[1])\n\n\t\tconst schema = getSegmentSchema(type)\n\n\t\tif(numbers.length < schema.length)\n\t\t{\n\t\t\tthrow new Error(`Malformed path data: type \"${type}\" has ${numbers.length} arguments, expected ${scheme.length}`)\n\t\t}\n\n\t\tif(schema.length > 0)\n\t\t{\n\t\t\tif(numbers.length % schema.length !== 0)\n\t\t\t{\n\t\t\t\tthrow new Error(`Malformed path data: type \"${type}\" has ${numbers.length} arguments, ${numbers.length % schema.length} too many`)\n\t\t\t}\n\n\t\t\tfor(let i = 0; i < numbers.length / schema.length; i++)\n\t\t\t{\n\t\t\t\tconst segmentData = { type, relative }\n\n\t\t\t\tfor(let j = 0; j < schema.length; j++)\n\t\t\t\t{\n\t\t\t\t\tsegmentData[ schema[j] ] = numbers[i * schema.length + j]\n\t\t\t\t}\n\n\t\t\t\tpathData.push(segmentData)\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tpathData.push({ type, relative })\n\t\t}\n\t}\n\n\treturn pathData\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/path/parser.js","import { getSegmentSchema } from './utils'\n\nexport default function encoder(pathData, precision=2)\n{\n\tlet prevType = false\n\tlet magnitude = 10**precision\n\n\treturn pathData.map(function(segment)\n\t{\n\t\tconst output = []\n\t\tconst outputType = (segment.relative ? segment.type : segment.type.toUpperCase())\n\t\tlet first = (prevType !== outputType)\n\n\t\tconst schema = getSegmentSchema(segment.type)\n\t\t\n\t\tif(first)\n\t\t{\n\t\t\toutput.push(outputType)\n\t\t\tprevType = outputType\n\t\t}\n\n\t\tfor(let property of schema)\n\t\t{\n\t\t\tconst value = segment[property]\n\t\t\tlet outputValue\n\n\t\t\tswitch(typeof value)\n\t\t\t{\n\t\t\t\tcase 'boolean': { outputValue = value|0 } break\n\t\t\t\tcase 'number': { outputValue = ((value * magnitude)|0) / magnitude } break\n\t\t\t\tdefault: throw new Error('Invalid path data')\n\t\t\t}\n\n\t\t\tif(!first)\n\t\t\t{\n\t\t\t\toutput.push(' ')\n\t\t\t}\n\n\t\t\toutput.push(outputValue)\n\t\t\tfirst = false\n\t\t}\n\n\t\treturn output.join('')\n\t\t\n\t}).join('')\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/path/encoder.js","export function createElement(tag, attributes={})\n{\n\tconst element = document.createElementNS('http://www.w3.org/2000/svg', tag)\n\n\tfor(let name of Object.keys(attributes))\n\t{\n\t\tsetProperty(element, name, attributes[name])\n\t}\n\n\treturn element\n}\n\nexport function getProperty(element, property)\n{\n\tif(element[property] instanceof SVGAnimatedLength)\n\t{\n\t\treturn element[property].baseVal.value\n\t}\n\n\treturn element.getAttribute(property)\n}\n\nexport function setProperty(element, property, value)\n{\n\telement.setAttribute(property, value)\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/svg/utils.js","export function split(p, t=0.5)\n{\n\tconst seg0 = []\n\tconst seg1 = []\n\tconst orders = [p]\n\n\twhile(orders.length < p.length)\n\t{\n\t\tconst q = orders[orders.length - 1]\n\t\tconst r = []\n\n\t\tfor(let i = 1; i < q.length; i++)\n\t\t{\n\t\t\tconst q0 = q[i - 1]\n\t\t\tconst q1 = q[i]\n\t\t\tconst s = []\n\t\t\tconst dim = Math.max(q0.length, q1.length)\n\n\t\t\tfor(let j = 0; j < dim; j++)\n\t\t\t{\n\t\t\t\tconst s0 = q0[j] || 0\n\t\t\t\tconst s1 = q1[j] || 0\n\n\t\t\t\ts.push(s0 + (s1 - s0) * t)\n\t\t\t}\n\n\t\t\tr.push(s)\n\t\t}\n\n\t\torders.push(r)\n\t}\n\n\tfor(let i = 0; i < orders.length; i++)\n\t{\n\t\tseg0.push(orders[i][0])\n\t\tseg1.push(orders[orders.length - 1 - i][i])\n\t}\n\n\treturn [seg0, seg1]\n}\n\nexport function until(points, threshold, deltaFunction=euclideanDistance)\n{\n\tconst stack = [points]\n\tconst segments = []\n\n\twhile(stack.length > 0)\n\t{\n\t\tconst currentPoints = stack.pop()\n\n\t\tif(deltaFunction(currentPoints) > threshold)\n\t\t{\n\t\t\tconst newPoints = split(currentPoints)\n\n\t\t\t// Add new segments backwards so they end up in correct order\n\t\t\tfor(let i = newPoints.length - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tstack.push(newPoints[i])\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tsegments.push(currentPoints)\n\t\t}\n\t}\n\n\treturn segments\n}\n\nexport function euclideanDistance(points)\n{\n\tconst startPoint = points[0]\n\tconst endPoint = points[points.length - 1]\n\tlet d2 = 0\n\n\tfor(let i = 0; i < startPoint.length; i++)\n\t{\n\t\tconst d = endPoint[i] - startPoint[i]\n\t\td2 += d**2\n\t}\n\n\treturn Math.sqrt(d2)\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/path/interpolate.js","import Warp from './Warp'\n\nif(typeof window !== 'undefined')\n{\n\twindow.Warp = Warp\n}\n\nexport default Warp\n\n\n\n// WEBPACK FOOTER //\n// ./src/main.js","import { shapesToPaths, preparePaths } from './svg/normalize'\nimport { getProperty, setProperty } from './svg/utils'\nimport pathParser from './path/parser'\nimport pathEncoder from './path/encoder'\nimport { euclideanDistance } from './path/interpolate'\nimport warpTransform from './warp/transform'\nimport warpInterpolate from './warp/interpolate'\nimport warpExtrapolate from './warp/extrapolate'\n\nexport default class Warp\n{\n\tconstructor(element, curveType='q')\n\t{\n\t\tthis.element = element\n\n\t\tshapesToPaths(element)\n\t\tpreparePaths(element, curveType)\n\n\t\tconst pathElements = Array.from(element.querySelectorAll('path'))\n\n\t\tthis.paths = pathElements.map(pathElement =>\n\t\t{\n\t\t\tconst pathString = getProperty(pathElement, 'd')\n\t\t\tconst pathData = pathParser(pathString)\n\n\t\t\treturn { pathElement, pathData }\n\t\t})\n\t}\n\n\tupdate()\n\t{\n\t\tfor (let { pathElement, pathData } of this.paths)\n\t\t{\n\t\t\tconst pathString = pathEncoder(pathData)\n\t\t\tsetProperty(pathElement, 'd', pathString)\n\t\t}\n\t}\n\n\ttransform(transformers)\n\t{\n\t\ttransformers = Array.isArray(transformers) ? transformers : [ transformers ]\n\n\t\tfor (let path of this.paths)\n\t\t{\n\t\t\tpath.pathData = warpTransform(path.pathData, transformers)\n\t\t}\n\n\t\tthis.update()\n\t}\n\n\tinterpolate(threshold)\n\t{\n\t\tlet didWork = false\n\n\t\tfunction deltaFunction(points)\n\t\t{\n\t\t\tconst linearPoints = [\n\t\t\t\tpoints[0].slice(0, 2),\n\t\t\t\tpoints[points.length - 1].slice(0, 2),\n\t\t\t]\n\n\t\t\tconst delta = euclideanDistance(linearPoints)\n\t\t\tdidWork = didWork || (delta > threshold)\n\n\t\t\treturn delta\n\t\t}\n\n\t\tfor (let path of this.paths)\n\t\t{\n\t\t\tpath.pathData = warpInterpolate(path.pathData, threshold, deltaFunction)\n\t\t}\n\n\t\treturn didWork\n\t}\n\n\textrapolate(threshold)\n\t{\n\t\tlet didWork = false\n\n\t\tfunction deltaFunction(points)\n\t\t{\n\t\t\tconst linearPoints = [\n\t\t\t\tpoints[0].slice(0, 2),\n\t\t\t\tpoints[points.length - 1].slice(0, 2),\n\t\t\t]\n\n\t\t\tconst delta = euclideanDistance(linearPoints)\n\t\t\tdidWork = didWork || (delta <= threshold)\n\n\t\t\treturn delta\n\t\t}\n\n\t\tfor (let path of this.paths)\n\t\t{\n\t\t\tpath.pathData = warpExtrapolate(path.pathData, threshold, deltaFunction)\n\t\t}\n\n\t\treturn didWork\n\t}\n\n\tpreInterpolate(transformer, threshold)\n\t{\n\t\tlet didWork = false\n\n\t\tfunction deltaFunction(points)\n\t\t{\n\t\t\tconst linearPoints = [\n\t\t\t\tpoints[0].slice(0, 2),\n\t\t\t\tpoints[points.length - 1].slice(0, 2),\n\t\t\t]\n\n\t\t\tconst delta = euclideanDistance(linearPoints)\n\t\t\tdidWork = didWork || (delta > threshold)\n\n\t\t\treturn delta\n\t\t}\n\n\t\tfor (let path of this.paths)\n\t\t{\n\t\t\tconst transformed = warpTransform(path.pathData, function(points)\n\t\t\t{\n\t\t\t\tconst newPoints = transformer(points.slice(0, 2))\n\t\t\t\tnewPoints.push(...points)\n\n\t\t\t\treturn newPoints\n\t\t\t})\n\n\t\t\tconst interpolated = warpInterpolate(transformed, threshold, deltaFunction)\n\n\t\t\tpath.pathData = warpTransform(interpolated, points => points.slice(2))\n\t\t}\n\n\t\treturn didWork\n\t}\n\n\tpreExtrapolate(transformer, threshold)\n\t{\n\t\tlet didWork = false\n\n\t\tfunction deltaFunction(points)\n\t\t{\n\t\t\tconst linearPoints = [\n\t\t\t\tpoints[0].slice(0, 2),\n\t\t\t\tpoints[points.length - 1].slice(0, 2),\n\t\t\t]\n\t\t\t\n\t\t\tconst delta = euclideanDistance(linearPoints)\n\t\t\tdidWork = didWork || (delta <= threshold)\n\n\t\t\treturn delta\n\t\t}\n\n\t\tfor (let path of this.paths)\n\t\t{\n\t\t\tconst transformed = warpTransform(path.pathData, function(points)\n\t\t\t{\n\t\t\t\tconst newPoints = transformer(points.slice(0, 2))\n\t\t\t\tnewPoints.push(...points)\n\n\t\t\t\treturn newPoints\n\t\t\t})\n\n\t\t\tconst extrapolated = warpExtrapolate(transformed, threshold, deltaFunction)\n\n\t\t\tpath.pathData = warpTransform(extrapolated, points => points.slice(2))\n\t\t}\n\n\t\treturn didWork\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/Warp.js","import pathParser from '../path/parser'\nimport pathEncoder from '../path/encoder'\nimport pathTransform from '../path/transform'\nimport absoluteTransformer from '../path/transformers/absolute'\nimport shortToLongTransformer from '../path/transformers/short-to-long'\nimport hvzToLineTransformer from '../path/transformers/hvz-to-line'\nimport lineToCurveTransformer from '../path/transformers/line-to-curve'\nimport arcToCurveTransformer from '../path/transformers/arc-to-curve'\nimport * as pathShape from '../path/shape'\nimport { createElement, getProperty, setProperty } from './utils'\n\nexport function shapesToPaths(element)\n{\n\tconst shapeMap = {\n\n\t\tline(shapeElement)\n\t\t{\n\t\t\treturn pathShape.line(\n\t\t\t\tgetProperty(shapeElement, 'x1'),\n\t\t\t\tgetProperty(shapeElement, 'y1'),\n\t\t\t\tgetProperty(shapeElement, 'x2'),\n\t\t\t\tgetProperty(shapeElement, 'y2')\n\t\t\t)\n\t\t},\n\n\t\tpolyline(shapeElement)\n\t\t{\n\t\t\treturn pathShape.polyline(...shapeElement.points)\n\t\t},\n\n\t\tpolygon(shapeElement)\n\t\t{\n\t\t\treturn pathShape.polygon(...shapeElement.points)\n\t\t},\n\n\t\trect(shapeElement)\n\t\t{\n\t\t\treturn pathShape.rectangle(\n\t\t\t\tgetProperty(shapeElement, 'x'),\n\t\t\t\tgetProperty(shapeElement, 'y'),\n\t\t\t\tgetProperty(shapeElement, 'width'),\n\t\t\t\tgetProperty(shapeElement, 'height'),\n\t\t\t\tgetProperty(shapeElement, 'rx'),\n\t\t\t\tgetProperty(shapeElement, 'ry')\n\t\t\t)\n\t\t},\n\n\t\tellipse(shapeElement)\n\t\t{\n\t\t\treturn pathShape.ellipse(\n\t\t\t\tgetProperty(shapeElement, 'cx'),\n\t\t\t\tgetProperty(shapeElement, 'cy'),\n\t\t\t\tgetProperty(shapeElement, 'rx'),\n\t\t\t\tgetProperty(shapeElement, 'ry')\n\t\t\t)\n\t\t},\n\n\t\tcircle(shapeElement)\n\t\t{\n\t\t\treturn pathShape.circle(\n\t\t\t\tgetProperty(shapeElement, 'cx'),\n\t\t\t\tgetProperty(shapeElement, 'cy'),\n\t\t\t\tgetProperty(shapeElement, 'r')\n\t\t\t)\n\t\t},\n\t}\n\n\tconst shapeElements = element.querySelectorAll(Object.keys(shapeMap).join(','))\n\n\tfor (let shapeElement of shapeElements)\n\t{\n\t\tconst shapeName = shapeElement.tagName.toLowerCase()\n\n\t\tif (shapeName in shapeMap)\n\t\t{\n\t\t\tconst path = shapeMap[shapeName](shapeElement)\n\t\t\tconst pathString = pathEncoder(path)\n\t\t\tconst attributes = { d: pathString }\n\n\t\t\tfor (let attribute of Array.from(shapeElement.attributes))\n\t\t\t{\n\t\t\t\tconst name = attribute.nodeName\n\t\t\t\tconst value = attribute.nodeValue\n\n\t\t\t\t// Avoid dimensional properties\n\t\t\t\tif (!/^(x|y|x1|y1|x2|y2|width|height|r|rx|ry|cx|cy|points|d)$/.test(name))\n\t\t\t\t{\n\t\t\t\t\tattributes[name] = value\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst pathElement = createElement('path', attributes)\n\t\t\tshapeElement.parentNode.replaceChild(pathElement, shapeElement)\n\t\t}\n\t}\n}\n\nexport function preparePaths(element, curveType='q')\n{\n\tconst pathElements = Array.from(element.querySelectorAll('path'))\n\n\tfor (let pathElement of pathElements)\n\t{\n\t\tlet pathString = getProperty(pathElement, 'd')\n\t\tlet path = pathParser(pathString)\n\n\t\tpath = pathTransform(path, absoluteTransformer())\n\t\tpath = pathTransform(path, shortToLongTransformer())\n\t\tpath = pathTransform(path, hvzToLineTransformer())\n\t\tpath = pathTransform(path, lineToCurveTransformer(curveType))\n\t\tpath = pathTransform(path, arcToCurveTransformer())\n\t\t\n\t\tpathString = pathEncoder(path)\n\n\t\tsetProperty(pathElement, 'd', pathString)\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/svg/normalize.js","import { isDrawingSegment } from '../utils'\n\nexport default function absoluteGenerator()\n{\n\tconst xProps = ['x', 'x1', 'x2']\n\tconst yProps = ['y', 'y1', 'y2']\n\tconst drawingCmdExpr = /[lhvcsqta]/\n\n\tlet prevX = 0\n\tlet prevY = 0\n\tlet pathStartX = NaN\n\tlet pathStartY = NaN\n\n\treturn function absolute(segment)\n\t{\n\t\tif(isNaN(pathStartX) && isDrawingSegment(segment))\n\t\t{\n\t\t\tpathStartX = prevX\n\t\t\tpathStartY = prevY\n\t\t}\n\n\t\tif(segment.type === 'z' && !isNaN(pathStartX))\n\t\t{\n\t\t\tprevX = pathStartX\n\t\t\tprevY = pathStartY\n\t\t\tpathStartX = NaN\n\t\t\tpathStartY = NaN\n\t\t}\n\n\t\tif(segment.relative)\n\t\t{\n\t\t\tfor(let x of xProps)\n\t\t\t{\n\t\t\t\tif(x in segment)\n\t\t\t\t{\n\t\t\t\t\tsegment[x] += prevX\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor(let y of yProps)\n\t\t\t{\n\t\t\t\tif(y in segment)\n\t\t\t\t{\n\t\t\t\t\tsegment[y] += prevY\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsegment.relative = false\n\t\t}\n\t\t\n\t\tprevX = ('x' in segment ? segment.x : prevX)\n\t\tprevY = ('y' in segment ? segment.y : prevY)\n\n\t\tif(segment.type === 'm')\n\t\t{\n\t\t\tpathStartX = prevX\n\t\t\tpathStartY = prevY\n\t\t}\n\n\t\treturn segment\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/path/transformers/absolute.js","export default function shortToLongGenerator()\n{\n\tlet prevX = 0\n\tlet prevY = 0\n\tlet pathStartX = NaN\n\tlet pathStartY = NaN\n\tlet prevCurveC2X = NaN\n\tlet prevCurveC2Y = NaN\n\tlet prevQuadCX = NaN\n\tlet prevQuadCY = NaN\n\n\treturn function shortToLong(segment)\n\t{\n\t\tif(isNaN(pathStartX) && segment.type !== 'm')\n\t\t{\n\t\t\tthrow new Error(`Transform path error: path must start with \"moveto\"`)\n\t\t}\n\t\t\n\t\tif(segment.type === 's')\n\t\t{\n\t\t\tprevCurveC2X = isNaN(prevCurveC2X) ? prevX : prevCurveC2X\n\t\t\tprevCurveC2Y = isNaN(prevCurveC2Y) ? prevY : prevCurveC2Y\n\n\t\t\tsegment.type = 'c'\n\t\t\tsegment.x1 = (segment.relative ? 1 : 2) * prevX - prevCurveC2X\n\t\t\tsegment.y1 = (segment.relative ? 1 : 2) * prevY - prevCurveC2Y\n\t\t}\n\n\t\tif(segment.type === 'c')\n\t\t{\n\t\t\tprevCurveC2X = (segment.relative ? prevX : 0) + segment.x2\n\t\t\tprevCurveC2Y = (segment.relative ? prevY : 0) + segment.y2\n\t\t}\n\t\telse\n\t\t{\n\t\t\tprevCurveC2X = NaN\n\t\t\tprevCurveC2Y = NaN\n\t\t}\n\n\t\tif(segment.type === 't')\n\t\t{\n\t\t\tprevQuadCX = isNaN(prevQuadCX) ? prevX : prevQuadCX\n\t\t\tprevQuadCY = isNaN(prevQuadCY) ? prevY : prevQuadCY\n\n\t\t\tsegment.type = 'q'\n\t\t\tsegment.x1 = (segment.relative ? 1 : 2) * prevX - prevQuadCX\n\t\t\tsegment.y1 = (segment.relative ? 1 : 2) * prevY - prevQuadCY\n\t\t}\n\n\t\tif(segment.type === 'q')\n\t\t{\n\t\t\tprevQuadCX = (segment.relative ? prevX : 0) + segment.x1\n\t\t\tprevQuadCY = (segment.relative ? prevY : 0) + segment.y1\n\t\t}\n\t\telse\n\t\t{\n\t\t\tprevQuadCX = NaN\n\t\t\tprevQuadCY = NaN\n\t\t}\n\n\t\tif(segment.type === 'z')\n\t\t{\n\t\t\tprevX = pathStartX\n\t\t\tprevY = pathStartY\n\t\t}\n\n\t\tprevX = ('x' in segment ? (segment.relative ? prevX : 0) + segment.x : prevX)\n\t\tprevY = ('y' in segment ? (segment.relative ? prevY : 0) + segment.y : prevY)\n\n\t\tif(segment.type === 'm')\n\t\t{\n\t\t\tpathStartX = prevX\n\t\t\tpathStartY = prevY\n\t\t}\n\n\t\treturn segment\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/path/transformers/short-to-long.js","export default function hvzToLineGenerator()\n{\n\tlet prevX = 0\n\tlet prevY = 0\n\tlet pathStartX = NaN\n\tlet pathStartY = NaN\n\n\treturn function hvzToLine(segment)\n\t{\n\t\tif(isNaN(pathStartX) && segment.type !== 'm')\n\t\t{\n\t\t\tthrow new Error(`Transform path error: path must start with \"moveto\"`)\n\t\t}\n\t\t\n\t\tswitch(segment.type)\n\t\t{\n\t\t\tcase 'h':\n\t\t\t{\n\t\t\t\tsegment.type = 'l'\n\t\t\t\tsegment.y = (segment.relative ? 0 : prevY)\n\t\t\t}\n\t\t\tbreak\n\t\t\tcase 'v':\n\t\t\t{\n\t\t\t\tsegment.type = 'l'\n\t\t\t\tsegment.x = (segment.relative ? 0 : prevX)\n\t\t\t}\n\t\t\tbreak\n\t\t\tcase 'z':\n\t\t\t{\n\t\t\t\tsegment.type = 'l'\n\t\t\t\tsegment.x = pathStartX - (segment.relative ? prevX : 0)\n\t\t\t\tsegment.y = pathStartY - (segment.relative ? prevY : 0)\n\t\t\t}\n\t\t\tbreak\n\t\t\tcase 'a':\n\t\t\t{\n\t\t\t\tif(segment.rx === 0 || segment.ry === 0)\n\t\t\t\t{\n\t\t\t\t\tsegment.type = 'l'\n\n\t\t\t\t\tdelete segment.rx\n\t\t\t\t\tdelete segment.ry\n\t\t\t\t\tdelete segment.xRotation\n\t\t\t\t\tdelete segment.largeArc\n\t\t\t\t\tdelete segment.sweep\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\n\t\tprevX = (segment.relative ? prevX : 0) + segment.x\n\t\tprevY = (segment.relative ? prevY : 0) + segment.y\n\n\t\tif(segment.type === 'm')\n\t\t{\n\t\t\tpathStartX = prevX\n\t\t\tpathStartY = prevY\n\t\t}\n\n\t\treturn segment\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/path/transformers/hvz-to-line.js","import { isDrawingSegment } from '../utils'\n\nexport default function lineToCurveGenerator(curveType='q')\n{\n\tlet prevX = 0\n\tlet prevY = 0\n\tlet pathStartX = NaN\n\tlet pathStartY = NaN\n\n\treturn function lineToCurve(segment)\n\t{\n\t\tif(isNaN(pathStartX) && isDrawingSegment(segment.type))\n\t\t{\n\t\t\tpathStartX = prevX\n\t\t\tpathStartY = prevY\n\t\t}\n\n\t\tif(segment.type === 'z' && !isNaN(pathStartX))\n\t\t{\n\t\t\tprevX = pathStartX\n\t\t\tprevY = pathStartY\n\t\t\tpathStartX = NaN\n\t\t\tpathStartY = NaN\n\t\t}\n\n\t\tif(segment.type === 'l')\n\t\t{\n\t\t\tconst startX = (segment.relative ? 0 : prevX)\n\t\t\tconst startY = (segment.relative ? 0 : prevY)\n\n\t\t\tsegment.type = curveType\n\n\t\t\tswitch(curveType)\n\t\t\t{\n\t\t\t\tcase 'q':\n\t\t\t\t{\n\t\t\t\t\tsegment.x1 = (startX + segment.x) / 2\n\t\t\t\t\tsegment.y1 = (startY + segment.y) / 2\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t\tcase 'c':\n\t\t\t\t{\n\t\t\t\t\tconst offsetX = (segment.x - startX) / 3\n\t\t\t\t\tconst offsetY = (segment.y - startY) / 3\n\n\t\t\t\t\tsegment.x1 = startX + offsetX\n\t\t\t\t\tsegment.y1 = startY + offsetY\n\t\t\t\t\tsegment.x2 = startX + 2 * offsetX\n\t\t\t\t\tsegment.y2 = startY + 2 * offsetY\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t\tdefault:\n\t\t\t\t{\n\t\t\t\t\tthrow new Error(`Invalid curve type \"${curveType}\"`)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tprevX = ('x' in segment ? (segment.relative ? prevX : 0) + segment.x : prevX)\n\t\tprevY = ('y' in segment ? (segment.relative ? prevY : 0) + segment.y : prevY)\n\n\t\tif(segment.type === 'm')\n\t\t{\n\t\t\tpathStartX = prevX\n\t\t\tpathStartY = prevY\n\t\t}\n\n\t\treturn segment\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/path/transformers/line-to-curve.js","import { isDrawingSegment } from '../utils'\n\nexport default function arcToCurveGenerator()\n{\n\tlet prevX = 0\n\tlet prevY = 0\n\tlet pathStartX = NaN\n\tlet pathStartY = NaN\n\n\treturn function arcToCurve(segment)\n\t{\n\t\tlet segments = segment\n\n\t\tif(isNaN(pathStartX) && isDrawingSegment(segment.type))\n\t\t{\n\t\t\tpathStartX = prevX\n\t\t\tpathStartY = prevY\n\t\t}\n\n\t\tif(segment.type === 'z' && !isNaN(pathStartX))\n\t\t{\n\t\t\tprevX = pathStartX\n\t\t\tprevY = pathStartY\n\t\t\tpathStartX = NaN\n\t\t\tpathStartY = NaN\n\t\t}\n\n\t\tif(segment.type === 'a')\n\t\t{\n\t\t\tconst startX = (segment.relative ? 0 : prevX)\n\t\t\tconst startY = (segment.relative ? 0 : prevY)\n\t\t\tconst { rx, ry, xRotation, largeArc, sweep, x, y } = segment\n\t\t\tconst curveSegments = converter(startX, startY, rx, ry, xRotation, largeArc, sweep, x, y)\n\t\t\t\n\t\t\tlet prevCurveX = 0\n\t\t\tlet prevCurveY = 0\n\n\t\t\tfor(let curveSegment of curveSegments)\n\t\t\t{\n\t\t\t\tcurveSegment.relative = segment.relative\n\n\t\t\t\tif(segment.relative && curveSegment.type === 'c')\n\t\t\t\t{\n\t\t\t\t\tcurveSegment.x -= prevCurveX\n\t\t\t\t\tcurveSegment.x1 -= prevCurveX\n\t\t\t\t\tcurveSegment.x2 -= prevCurveX\n\t\t\t\t\tcurveSegment.y -= prevCurveY\n\t\t\t\t\tcurveSegment.y1 -= prevCurveY\n\t\t\t\t\tcurveSegment.y2 -= prevCurveY\n\t\t\t\t}\n\n\t\t\t\tprevCurveX = curveSegment.x\n\t\t\t\tprevCurveY = curveSegment.y\n\t\t\t}\n\n\t\t\tsegments = curveSegments\n\t\t}\n\n\t\tprevX = ('x' in segment ? (segment.relative ? prevX : 0) + segment.x : prevX)\n\t\tprevY = ('y' in segment ? (segment.relative ? prevY : 0) + segment.y : prevY)\n\n\t\tif(segment.type === 'm')\n\t\t{\n\t\t\tpathStartX = prevX\n\t\t\tpathStartY = prevY\n\t\t}\n\n\t\treturn segments\n\t}\n}\n\nfunction converter(sx, sy, rx, ry, angle, large, sweep, x, y)\n{\n\tif(sx === x && sy === y)\n\t{\n\t\treturn []\n\t}\n\n\tif(!rx && !ry)\n\t{\n\t\treturn [ { type: 'l', x, y } ]\n\t}\n\n\tconst sinPhi = Math.sin(angle * Math.PI / 180)\n\tconst cosPhi = Math.cos(angle * Math.PI / 180)\n\n\tconst xd = cosPhi * (sx - x) / 2 + sinPhi * (sy - y) / 2\n\tconst yd = -sinPhi * (sx - x) / 2 + cosPhi * (sy - y) / 2\n\n\tconst rx2 = rx * rx\n\tconst ry2 = ry * ry\n\n\tconst xd2 = xd * xd\n\tconst yd2 = yd * yd\n\n\tlet root = 0\n\tconst numerator = rx2 * ry2 - rx2 * yd2 - ry2 * xd2\n\n\tif(numerator < 0)\n\t{\n\t\tconst s = Math.sqrt(1 - numerator / (rx2 * ry2))\n\n\t\trx *= s\n\t\try *= s\n\t}\n\telse\n\t{\n\t\troot = ((large && sweep) || (!large && !sweep) ? -1 : 1) * Math.sqrt(numerator / (rx2 * yd2 + ry2 * xd2))\n\t}\n\n\tconst cxd = root * rx * yd / ry\n\tconst cyd = -root * ry * xd / rx\n\n\tconst cx = cosPhi * cxd - sinPhi * cyd + (sx + x) / 2\n\tconst cy = sinPhi * cxd + cosPhi * cyd + (sy + y) / 2\n\n\tlet theta1 = angleBetween(1, 0, (xd - cxd) / rx, (yd - cyd) / ry)\n\tlet dtheta = angleBetween((xd - cxd) / rx, (yd - cyd) / ry, (-xd - cxd) / rx, (-yd - cyd) / ry)\n\n\tif(!sweep && dtheta > 0)\n\t{\n\t\tdtheta -= Math.PI * 2\n\t}\n\telse if(sweep && dtheta < 0)\n\t{\n\t\tdtheta += Math.PI * 2\n\t}\n\n\tconst segments = []\n\tconst numSegs = Math.ceil(Math.abs(dtheta / (Math.PI / 2)))\n\tconst delta = dtheta / numSegs\n\tconst t = 8 / 3 * Math.sin(delta / 4) * Math.sin(delta / 4) / Math.sin(delta / 2)\n\n\tfor(let i = 0; i < numSegs; i++)\n\t{\n\t\tconst cosTheta1 = Math.cos(theta1)\n\t\tconst sinTheta1 = Math.sin(theta1)\n\t\tconst theta2 = theta1 + delta\n\t\tconst cosTheta2 = Math.cos(theta2)\n\t\tconst sinTheta2 = Math.sin(theta2)\n\n\t\tconst epx = cosPhi * rx * cosTheta2 - sinPhi * ry * sinTheta2 + cx\n\t\tconst epy = sinPhi * rx * cosTheta2 + cosPhi * ry * sinTheta2 + cy\n\n\t\tconst dx = t * (-cosPhi * rx * sinTheta1 - sinPhi * ry * cosTheta1)\n\t\tconst dy = t * (-sinPhi * rx * sinTheta1 + cosPhi * ry * cosTheta1)\n\n\t\tconst dxe = t * (cosPhi * rx * sinTheta2 + sinPhi * ry * cosTheta2)\n\t\tconst dye = t * (sinPhi * rx * sinTheta2 - cosPhi * ry * cosTheta2)\n\n\t\tsegments.push({\n\t\t\ttype: 'c',\n\t\t\tx: epx,\n\t\t\ty: epy,\n\t\t\tx1: sx + dx,\n\t\t\ty1: sy + dy,\n\t\t\tx2: epx + dxe,\n\t\t\ty2: epy + dye,\n\t\t})\n\n\t\ttheta1 = theta2\n\t\tsx = epx\n\t\tsy = epy\n\t}\n\n\treturn segments\n}\n\nfunction angleBetween(ux, uy, vx, vy)\n{\n\tconst ta = Math.atan2(uy, ux)\n\tconst tb = Math.atan2(vy, vx)\n\n\tif(tb >= ta)\n\t{\n\t\treturn tb - ta\n\t}\n\n\treturn Math.PI * 2 - (ta - tb)\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/path/transformers/arc-to-curve.js","export function line(x1, y1, x2, y2)\n{\n\tconst relative = false\n\n\treturn [\n\t\t{ type: 'm', relative, x: x1, y: y1 },\n\t\t{ type: 'l', relative, x: x2, y: y2 },\n\t]\n}\n\nexport function polyline(...points)\n{\n\treturn points.map((p, i) => ({\n\t\ttype: i === 0 ? 'm' : 'l',\n\t\trelative: false,\n\t\tx: p.x || p[0],\n\t\ty: p.y || p[1],\n\t}))\n}\n\nexport function polygon(...points)\n{\n\tconst path = polyline(...points)\n\tpath.append({ type: 'z', relative: false })\n\n\treturn path\n}\n\nexport function rectangle(x, y, width, height, rx=0, ry=0)\n{\n\tconst relative = false\n\tlet path\n\n\tif(rx > 0 || ry > 0)\n\t{\n\t\t// If one of the properties is not defined or zero, then it's just given the value of the other\n\t\trx = rx || ry\n\t\try = ry || rx\n\n\t\tconst xRotation = 0\n\t\tconst largeArc = false\n\t\tconst sweep = true\n\n\t\tpath = [\n\t\t\t{ type: 'm', relative, x: x + rx, y },\n\t\t\t{ type: 'h', relative, x: x + width - rx },\n\t\t\t{ type: 'a', relative, rx, ry, xRotation, largeArc, sweep, x: x + width, y: y + ry },\n\t\t\t{ type: 'v', relative, y: y + height - ry },\n\t\t\t{ type: 'a', relative, rx, ry, xRotation, largeArc, sweep, x: x + width - rx, y: y + height },\n\t\t\t{ type: 'h', relative, x: x + rx },\n\t\t\t{ type: 'a', relative, rx, ry, xRotation, largeArc, sweep, x, y: y + height - ry },\n\t\t\t{ type: 'v', relative, y: y + ry },\n\t\t\t{ type: 'a', relative, rx, ry, xRotation, largeArc, sweep, x: x + rx, y },\n\t\t]\n\t}\n\telse\n\t{\n\t\tpath = [\n\t\t\t{ type: 'm', relative, x, y },\n\t\t\t{ type: 'h', relative, x: x + width },\n\t\t\t{ type: 'v', relative, y: y + height },\n\t\t\t{ type: 'h', relative, x },\n\t\t\t{ type: 'v', relative, y },\n\t\t]\n\t}\n\n\treturn path\n}\n\nexport function ellipse(cx, cy, rx, ry)\n{\n\tconst relative = false\n\tconst xRotation = 0\n\tconst largeArc = false\n\tconst sweep = true\n\n\treturn [\n\t\t{ type: 'm', relative, x: cx, y: cy - ry },\n\t\t{ type: 'a', relative, rx, ry, xRotation, largeArc, sweep, x: cx, y: cy + ry },\n\t\t{ type: 'a', relative, rx, ry, xRotation, largeArc, sweep, x: cx, y: cy - ry },\n\t]\n}\n\nexport function circle(cx, cy, r)\n{\n\treturn ellipse(cx, cy, r, r)\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/path/shape.js","import pathTransform from '../path/transform'\nimport { pointGroups } from '../path/utils'\n\nexport default function transform(path, transformers)\n{\n\treturn pathTransform(path, (segment) =>\n\t{\n\t\tfor (let i = 0; i < pointGroups.length; i++)\n\t\t{\n\t\t\tconst [ x, y ] = pointGroups[i]\n\n\t\t\tif (x in segment && y in segment)\n\t\t\t{\n\t\t\t\tconst extendedPoints = (segment.extended ? segment.extended[i] : null) || []\n\t\t\t\tconst oldPoints = [ segment[x], segment[y], ...extendedPoints ]\n\t\t\t\tconst newPoints = transformers.reduce((points, transformer) => transformer(points), oldPoints)\n\n\t\t\t\tif (newPoints.length < 2)\n\t\t\t\t{\n\t\t\t\t\tthrow new Error(`Transformer must return at least 2 points`)\n\t\t\t\t}\n\n\t\t\t\tsegment[x] = newPoints[0]\n\t\t\t\tsegment[y] = newPoints[1]\n\n\t\t\t\tif (newPoints.length > 2)\n\t\t\t\t{\n\t\t\t\t\tsegment.extended = segment.extended || {}\n\t\t\t\t\tsegment.extended[i] = newPoints.slice(2)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn segment\n\t})\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/warp/transform.js","import pathTransform from '../path/transform'\nimport { until as interpolateUntil } from '../path/interpolate'\nimport { createLineSegment, pointGroups } from '../path/utils'\n\nconst interpolationTypesExpr = /[lqc]/\n\nexport default function interpolate(path, threshold, deltaFunction)\n{\n\tlet prevPoints = []\n\n\treturn pathTransform(path, function(segment)\n\t{\n\t\tlet segments = segment\n\n\t\tif(interpolationTypesExpr.test(segment.type))\n\t\t{\n\t\t\tconst points = [prevPoints]\n\n\t\t\tfor(let j = 0; j < pointGroups.length; j++)\n\t\t\t{\n\t\t\t\tconst [x, y] = pointGroups[j]\n\n\t\t\t\tif(x in segment && y in segment)\n\t\t\t\t{\n\t\t\t\t\tconst extendedPoints = (segment.extended ? segment.extended[j] : null) || []\n\t\t\t\t\tconst pointList = [segment[x], segment[y], ...extendedPoints]\n\n\t\t\t\t\tpoints.push(pointList)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst rawSegments = interpolateUntil(points, threshold, deltaFunction)\n\n\t\t\tif(rawSegments.length > 1)\n\t\t\t{\n\t\t\t\tsegments = rawSegments.map(rawSegment => createLineSegment(rawSegment))\n\t\t\t}\n\t\t}\n\n\t\tif('x' in segment && 'y' in segment)\n\t\t{\n\t\t\tconst extendedPoints = (segment.extended ? segment.extended[2] : null) || []\n\t\t\tconst pointList = [segment.x, segment.y, ...extendedPoints]\n\n\t\t\tprevPoints = pointList\n\t\t}\n\n\t\treturn segments\n\t})\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/warp/interpolate.js","import pathTransform from '../path/transform'\nimport { joinSegments, pointGroups } from '../path/utils'\n\nconst extrapolationTypesExpr = /[lqc]/\n\nexport default function extrapolate(path, threshold, deltaFunction)\n{\n\treturn pathTransform(path, function(segment, i, oldPath, newPath)\n\t{\n\t\tif(i > 1)\n\t\t{\n\t\t\tconst prevSegment = newPath[newPath.length - 1]\n\t\t\tconst prevSegment2 = newPath[newPath.length - 2]\n\n\t\t\tif(extrapolationTypesExpr.test(segment.type) && prevSegment.type === segment.type)\n\t\t\t{\n\t\t\t\tconst points = [\n\t\t\t\t\t[prevSegment2.x, prevSegment2.y],\n\t\t\t\t\t[segment.x, segment.y],\n\t\t\t\t]\n\n\t\t\t\tif(deltaFunction(points) <= threshold)\n\t\t\t\t{\n\t\t\t\t\tconst newSegment = joinSegments(prevSegment, segment)\n\n\t\t\t\t\tif(newSegment)\n\t\t\t\t\t{\n\t\t\t\t\t\tnewPath[newPath.length - 1] = newSegment\n\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn segment\n\t})\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/warp/extrapolate.js"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///warp.js","webpack:///webpack/bootstrap 307080daed9b4b6bba3b","webpack:///./src/path/utils.js","webpack:///./src/path/transform.js","webpack:///./src/path/parser.js","webpack:///./src/path/encoder.js","webpack:///./src/svg/utils.js","webpack:///./src/path/interpolate.js","webpack:///./src/main.js","webpack:///./src/Warp.js","webpack:///./src/svg/normalize.js","webpack:///./src/path/transformers/absolute.js","webpack:///./src/path/transformers/short-to-long.js","webpack:///./src/path/transformers/hvz-to-line.js","webpack:///./src/path/transformers/line-to-curve.js","webpack:///./src/path/transformers/arc-to-curve.js","webpack:///./src/path/shape.js","webpack:///./src/warp/transform.js","webpack:///./src/warp/interpolate.js","webpack:///./src/warp/extrapolate.js"],"names":["root","factory","exports","module","define","amd","self","this","modules","__webpack_require__","moduleId","installedModules","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","getSegmentSchema","type","segmentSchemas","toLowerCase","isDrawingSegment","segment","drawingCmdExpr","test","createLineSegment","points","relative","length","g","pointGroups","_pointGroups$g","_slicedToArray","x","y","extended","slice","joinSegments","segmentA","segmentB","setExtended","pointsA","pointsB","pointCount","Math","min","push","bothExtended","x1","y1","x2","y2","value","sliceIterator","arr","_arr","_n","_d","_e","undefined","_s","_i","Symbol","iterator","next","done","err","Array","isArray","TypeError","z","h","v","q","t","a","_toConsumableArray","arr2","from","transform","path","transformer","newPath","JSON","parse","stringify","result","apply","default","parser","pathString","pathData","segmentMatch","segmentExpr","lastIndex","exec","numbers","match","numberExpr","map","parseFloat","schema","_utils","Error","scheme","segmentData","j","encoder","precision","arguments","prevType","magnitude","output","outputType","toUpperCase","first","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","outputValue","_typeof","return","join","obj","constructor","createElement","tag","attributes","element","document","createElementNS","keys","setProperty","getProperty","SVGAnimatedLength","baseVal","getAttribute","setAttribute","split","seg0","seg1","orders","r","q0","q1","dim","max","s0","s1","until","threshold","deltaFunction","euclideanDistance","stack","segments","currentPoints","pop","newPoints","startPoint","endPoint","d2","sqrt","_Warp","_Warp2","_interopRequireDefault","_classCallCheck","instance","Constructor","_createClass","defineProperties","target","props","descriptor","writable","key","protoProps","staticProps","_normalize","_parser","_parser2","_encoder","_encoder2","_interpolate","_transform","_transform2","_interpolate2","_interpolate3","_extrapolate","_extrapolate2","Warp","curveType","shapesToPaths","preparePaths","pathElements","querySelectorAll","paths","pathElement","_ref","transformers","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","update","linearPoints","delta","didWork","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","_iteratorNormalCompletion4","_didIteratorError4","_iteratorError4","_step4","_iterator4","_iteratorNormalCompletion5","_didIteratorError5","_iteratorError5","_step5","_iterator5","transformed","interpolated","_iteratorNormalCompletion6","_didIteratorError6","_iteratorError6","_step6","_iterator6","extrapolated","shapeMap","line","shapeElement","pathShape","polyline","polygon","rect","rectangle","ellipse","circle","shapeElements","shapeName","tagName","attribute","nodeName","nodeValue","parentNode","replaceChild","_absolute2","_shortToLong2","_hvzToLine2","_lineToCurve2","_arcToCurve2","_absolute","_shortToLong","_hvzToLine","_lineToCurve","_arcToCurve","_shape","newObj","absoluteGenerator","xProps","yProps","prevX","prevY","pathStartX","NaN","pathStartY","isNaN","shortToLongGenerator","prevCurveC2X","prevCurveC2Y","prevQuadCX","prevQuadCY","hvzToLineGenerator","rx","ry","xRotation","largeArc","sweep","lineToCurveGenerator","startX","startY","offsetX","offsetY","arcToCurveGenerator","curveSegments","converter","prevCurveX","prevCurveY","curveSegment","sx","sy","angle","large","sinPhi","sin","PI","cosPhi","cos","xd","yd","rx2","ry2","xd2","yd2","numerator","cxd","cyd","cx","cy","theta1","angleBetween","dtheta","numSegs","ceil","abs","cosTheta1","sinTheta1","theta2","cosTheta2","sinTheta2","epx","epy","dx","dy","dxe","dye","ux","uy","vx","vy","ta","atan2","tb","_len","_key","append","width","height","_pointGroups$i","extendedPoints","oldPoints","concat","reduce","interpolate","prevPoints","interpolationTypesExpr","_pointGroups$j","pointList","rawSegments","rawSegment","extrapolate","oldPath","prevSegment","prevSegment2","extrapolationTypesExpr","newSegment"],"mappings":"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","file":"warp.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Warp\"] = factory();\n\telse\n\t\troot[\"Warp\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Warp\"] = factory();\n\telse\n\t\troot[\"Warp\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 6);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nexports.getSegmentSchema = getSegmentSchema;\nexports.isDrawingSegment = isDrawingSegment;\nexports.createLineSegment = createLineSegment;\nexports.joinSegments = joinSegments;\nvar segmentSchemas = {\n\tm: ['x', 'y'],\n\tz: [],\n\tl: ['x', 'y'],\n\th: ['x'],\n\tv: ['y'],\n\tc: ['x1', 'y1', 'x2', 'y2', 'x', 'y'],\n\ts: ['x2', 'y2', 'x', 'y'],\n\tq: ['x1', 'y1', 'x', 'y'],\n\tt: ['x', 'y'],\n\ta: ['rx', 'ry', 'xRotation', 'largeArc', 'sweep', 'x', 'y']\n};\n\nvar pointGroups = exports.pointGroups = [['x1', 'y1'], ['x2', 'y2'], ['x', 'y']];\n\nvar drawingCmdExpr = /[lhvcsqta]/;\n\nfunction getSegmentSchema(type) {\n\treturn segmentSchemas[type.toLowerCase()];\n}\n\nfunction isDrawingSegment(segment) {\n\treturn drawingCmdExpr.test(segment.type);\n}\n\nfunction createLineSegment(points) {\n\tvar segment = { relative: false };\n\n\tswitch (points.length) {\n\t\tcase 2:\n\t\t\t{\n\t\t\t\tsegment.type = 'l';\n\t\t\t}break;\n\t\tcase 3:\n\t\t\t{\n\t\t\t\tsegment.type = 'q';\n\t\t\t}break;\n\t\tcase 4:\n\t\t\t{\n\t\t\t\tsegment.type = 'c';\n\t\t\t}break;\n\t\tdefault:\n\t\t\treturn false;\n\t}\n\n\tfor (var i = 1; i < points.length; i++) {\n\t\tvar g = (i < points.length - 1 ? i : pointGroups.length) - 1;\n\n\t\tvar _pointGroups$g = _slicedToArray(pointGroups[g], 2),\n\t\t x = _pointGroups$g[0],\n\t\t y = _pointGroups$g[1];\n\n\t\tsegment[x] = points[i][0];\n\t\tsegment[y] = points[i][1];\n\n\t\tif (points[i].length > 2) {\n\t\t\tsegment.extended = segment.extended || {};\n\t\t\tsegment.extended[g] = points[i].slice(2);\n\t\t}\n\t}\n\n\treturn segment;\n}\n\nfunction joinSegments(segmentA, segmentB) {\n\tif (segmentA.type === segmentB.type && segmentA.relative === segmentB.relative) {\n\t\tvar setExtended = function setExtended(pointsA, pointsB, type) {\n\t\t\tif (pointsA && pointsB) {\n\t\t\t\tvar points = [];\n\t\t\t\tvar pointCount = Math.min(pointsA.length, pointsB.length);\n\n\t\t\t\tfor (var i = 0; i < pointCount; i++) {\n\t\t\t\t\tpoints.push((pointsA[i] + pointsB[i]) / 2);\n\t\t\t\t}\n\n\t\t\t\tsegment.extended[type] = points;\n\t\t\t}\n\t\t};\n\n\t\tvar type = segmentB.type,\n\t\t relative = segmentB.relative,\n\t\t x = segmentB.x,\n\t\t y = segmentB.y;\n\n\t\tvar bothExtended = !!segmentA.extended && !!segmentB.extended;\n\t\tvar extended = {};\n\t\tvar segment = { type: type, relative: relative, x: x, y: y, extended: extended };\n\n\t\tswitch (type) {\n\t\t\tcase 'l':\n\t\t\t\tbreak;\n\t\t\tcase 'q':\n\t\t\t\t{\n\t\t\t\t\tsegment.x1 = (segmentA.x1 + segmentB.x1) / 2;\n\t\t\t\t\tsegment.y1 = (segmentA.y1 + segmentB.y1) / 2;\n\n\t\t\t\t\tif (bothExtended) {\n\t\t\t\t\t\tsetExtended(segmentA.extended[0], segmentB.extended[0], 0);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'c':\n\t\t\t\t{\n\t\t\t\t\tsegment.x1 = (segmentA.x1 + segmentA.x2) / 2;\n\t\t\t\t\tsegment.y1 = (segmentA.y1 + segmentA.y2) / 2;\n\t\t\t\t\tsegment.x2 = (segmentB.x1 + segmentB.x2) / 2;\n\t\t\t\t\tsegment.y2 = (segmentB.y1 + segmentB.y2) / 2;\n\n\t\t\t\t\tif (bothExtended) {\n\t\t\t\t\t\tsetExtended(segmentA.extended[0], segmentA.extended[1], 0);\n\t\t\t\t\t\tsetExtended(segmentB.extended[0], segmentB.extended[1], 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t}\n\n\t\tif (segmentB.extended && segmentB.extended[2]) {\n\t\t\textended[2] = segmentB.extended[2];\n\t\t}\n\n\t\treturn segment;\n\t}\n\n\treturn false;\n}\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.default = transform;\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction transform(path, transformer) {\n\tvar newPath = [];\n\n\tfor (var i = 0; i < path.length; i++) {\n\t\tvar segment = JSON.parse(JSON.stringify(path[i]));\n\t\tvar result = transformer(segment, i, path, newPath);\n\n\t\tif (Array.isArray(result)) {\n\t\t\tnewPath.push.apply(newPath, _toConsumableArray(result));\n\t\t} else if (result) {\n\t\t\tnewPath.push(result);\n\t\t}\n\t}\n\n\treturn newPath;\n}\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.default = parser;\n\nvar _utils = __webpack_require__(0);\n\nvar segmentExpr = /([mzlhvcsqta])([^mzlhvcsqta]*)/ig;\nvar numberExpr = /-?[0-9]*\\.?[0-9]+(?:e[-+]?\\d+)?/ig;\n\nfunction parser(pathString) {\n\tvar pathData = [];\n\n\tvar segmentMatch = void 0;\n\tsegmentExpr.lastIndex = 0;\n\n\twhile (segmentMatch = segmentExpr.exec(pathString)) {\n\t\tvar type = segmentMatch[1].toLowerCase();\n\t\tvar numbers = (segmentMatch[2].match(numberExpr) || []).map(parseFloat);\n\t\tvar relative = type === segmentMatch[1];\n\n\t\tvar schema = (0, _utils.getSegmentSchema)(type);\n\n\t\tif (numbers.length < schema.length) {\n\t\t\tthrow new Error('Malformed path data: type \"' + type + '\" has ' + numbers.length + ' arguments, expected ' + scheme.length);\n\t\t}\n\n\t\tif (schema.length > 0) {\n\t\t\tif (numbers.length % schema.length !== 0) {\n\t\t\t\tthrow new Error('Malformed path data: type \"' + type + '\" has ' + numbers.length + ' arguments, ' + numbers.length % schema.length + ' too many');\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < numbers.length / schema.length; i++) {\n\t\t\t\tvar segmentData = { type: type, relative: relative };\n\n\t\t\t\tfor (var j = 0; j < schema.length; j++) {\n\t\t\t\t\tsegmentData[schema[j]] = numbers[i * schema.length + j];\n\t\t\t\t}\n\n\t\t\t\tpathData.push(segmentData);\n\t\t\t}\n\t\t} else {\n\t\t\tpathData.push({ type: type, relative: relative });\n\t\t}\n\t}\n\n\treturn pathData;\n}\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexports.default = encoder;\n\nvar _utils = __webpack_require__(0);\n\nfunction encoder(pathData) {\n\tvar precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n\n\tvar prevType = false;\n\tvar magnitude = Math.pow(10, precision);\n\n\treturn pathData.map(function (segment) {\n\t\tvar output = [];\n\t\tvar outputType = segment.relative ? segment.type : segment.type.toUpperCase();\n\t\tvar first = prevType !== outputType;\n\n\t\tvar schema = (0, _utils.getSegmentSchema)(segment.type);\n\n\t\tif (first) {\n\t\t\toutput.push(outputType);\n\t\t\tprevType = outputType;\n\t\t}\n\n\t\tvar _iteratorNormalCompletion = true;\n\t\tvar _didIteratorError = false;\n\t\tvar _iteratorError = undefined;\n\n\t\ttry {\n\t\t\tfor (var _iterator = schema[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n\t\t\t\tvar property = _step.value;\n\n\t\t\t\tvar value = segment[property];\n\t\t\t\tvar outputValue = void 0;\n\n\t\t\t\tswitch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {\n\t\t\t\t\tcase 'boolean':\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toutputValue = value | 0;\n\t\t\t\t\t\t}break;\n\t\t\t\t\tcase 'number':\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\toutputValue = (value * magnitude | 0) / magnitude;\n\t\t\t\t\t\t}break;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthrow new Error('Invalid path data');\n\t\t\t\t}\n\n\t\t\t\tif (!first) {\n\t\t\t\t\toutput.push(' ');\n\t\t\t\t}\n\n\t\t\t\toutput.push(outputValue);\n\t\t\t\tfirst = false;\n\t\t\t}\n\t\t} catch (err) {\n\t\t\t_didIteratorError = true;\n\t\t\t_iteratorError = err;\n\t\t} finally {\n\t\t\ttry {\n\t\t\t\tif (!_iteratorNormalCompletion && _iterator.return) {\n\t\t\t\t\t_iterator.return();\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tif (_didIteratorError) {\n\t\t\t\t\tthrow _iteratorError;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn output.join('');\n\t}).join('');\n}\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.createElement = createElement;\nexports.getProperty = getProperty;\nexports.setProperty = setProperty;\nfunction createElement(tag) {\n\tvar attributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\tvar element = document.createElementNS('http://www.w3.org/2000/svg', tag);\n\n\tvar _iteratorNormalCompletion = true;\n\tvar _didIteratorError = false;\n\tvar _iteratorError = undefined;\n\n\ttry {\n\t\tfor (var _iterator = Object.keys(attributes)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n\t\t\tvar name = _step.value;\n\n\t\t\tsetProperty(element, name, attributes[name]);\n\t\t}\n\t} catch (err) {\n\t\t_didIteratorError = true;\n\t\t_iteratorError = err;\n\t} finally {\n\t\ttry {\n\t\t\tif (!_iteratorNormalCompletion && _iterator.return) {\n\t\t\t\t_iterator.return();\n\t\t\t}\n\t\t} finally {\n\t\t\tif (_didIteratorError) {\n\t\t\t\tthrow _iteratorError;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn element;\n}\n\nfunction getProperty(element, property) {\n\tif (element[property] instanceof SVGAnimatedLength) {\n\t\treturn element[property].baseVal.value;\n\t}\n\n\treturn element.getAttribute(property);\n}\n\nfunction setProperty(element, property, value) {\n\telement.setAttribute(property, value);\n}\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.split = split;\nexports.until = until;\nexports.euclideanDistance = euclideanDistance;\nfunction split(p) {\n\tvar t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0.5;\n\n\tvar seg0 = [];\n\tvar seg1 = [];\n\tvar orders = [p];\n\n\twhile (orders.length < p.length) {\n\t\tvar q = orders[orders.length - 1];\n\t\tvar r = [];\n\n\t\tfor (var i = 1; i < q.length; i++) {\n\t\t\tvar q0 = q[i - 1];\n\t\t\tvar q1 = q[i];\n\t\t\tvar s = [];\n\t\t\tvar dim = Math.max(q0.length, q1.length);\n\n\t\t\tfor (var j = 0; j < dim; j++) {\n\t\t\t\tvar s0 = q0[j] || 0;\n\t\t\t\tvar s1 = q1[j] || 0;\n\n\t\t\t\ts.push(s0 + (s1 - s0) * t);\n\t\t\t}\n\n\t\t\tr.push(s);\n\t\t}\n\n\t\torders.push(r);\n\t}\n\n\tfor (var _i = 0; _i < orders.length; _i++) {\n\t\tseg0.push(orders[_i][0]);\n\t\tseg1.push(orders[orders.length - 1 - _i][_i]);\n\t}\n\n\treturn [seg0, seg1];\n}\n\nfunction until(points, threshold) {\n\tvar deltaFunction = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : euclideanDistance;\n\n\tvar stack = [points];\n\tvar segments = [];\n\n\twhile (stack.length > 0) {\n\t\tvar currentPoints = stack.pop();\n\n\t\tif (deltaFunction(currentPoints) > threshold) {\n\t\t\tvar newPoints = split(currentPoints);\n\n\t\t\t// Add new segments backwards so they end up in correct order\n\t\t\tfor (var i = newPoints.length - 1; i >= 0; i--) {\n\t\t\t\tstack.push(newPoints[i]);\n\t\t\t}\n\t\t} else {\n\t\t\tsegments.push(currentPoints);\n\t\t}\n\t}\n\n\treturn segments;\n}\n\nfunction euclideanDistance(points) {\n\tvar startPoint = points[0];\n\tvar endPoint = points[points.length - 1];\n\tvar d2 = 0;\n\n\tfor (var i = 0; i < startPoint.length; i++) {\n\t\tvar d = endPoint[i] - startPoint[i];\n\t\td2 += Math.pow(d, 2);\n\t}\n\n\treturn Math.sqrt(d2);\n}\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Warp = __webpack_require__(7);\n\nvar _Warp2 = _interopRequireDefault(_Warp);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _Warp2.default;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _normalize = __webpack_require__(8);\n\nvar _utils = __webpack_require__(4);\n\nvar _parser = __webpack_require__(2);\n\nvar _parser2 = _interopRequireDefault(_parser);\n\nvar _encoder = __webpack_require__(3);\n\nvar _encoder2 = _interopRequireDefault(_encoder);\n\nvar _interpolate = __webpack_require__(5);\n\nvar _transform = __webpack_require__(15);\n\nvar _transform2 = _interopRequireDefault(_transform);\n\nvar _interpolate2 = __webpack_require__(16);\n\nvar _interpolate3 = _interopRequireDefault(_interpolate2);\n\nvar _extrapolate = __webpack_require__(17);\n\nvar _extrapolate2 = _interopRequireDefault(_extrapolate);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Warp = function () {\n\tfunction Warp(element) {\n\t\tvar curveType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'q';\n\n\t\t_classCallCheck(this, Warp);\n\n\t\tthis.element = element;\n\n\t\t(0, _normalize.shapesToPaths)(element);\n\t\t(0, _normalize.preparePaths)(element, curveType);\n\n\t\tvar pathElements = Array.from(element.querySelectorAll('path'));\n\n\t\tthis.paths = pathElements.map(function (pathElement) {\n\t\t\tvar pathString = (0, _utils.getProperty)(pathElement, 'd');\n\t\t\tvar pathData = (0, _parser2.default)(pathString);\n\n\t\t\treturn { pathElement: pathElement, pathData: pathData };\n\t\t});\n\t}\n\n\t_createClass(Warp, [{\n\t\tkey: 'update',\n\t\tvalue: function update() {\n\t\t\tvar _iteratorNormalCompletion = true;\n\t\t\tvar _didIteratorError = false;\n\t\t\tvar _iteratorError = undefined;\n\n\t\t\ttry {\n\t\t\t\tfor (var _iterator = this.paths[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n\t\t\t\t\tvar _ref = _step.value;\n\t\t\t\t\tvar pathElement = _ref.pathElement;\n\t\t\t\t\tvar pathData = _ref.pathData;\n\n\t\t\t\t\tvar pathString = (0, _encoder2.default)(pathData);\n\t\t\t\t\t(0, _utils.setProperty)(pathElement, 'd', pathString);\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t_didIteratorError = true;\n\t\t\t\t_iteratorError = err;\n\t\t\t} finally {\n\t\t\t\ttry {\n\t\t\t\t\tif (!_iteratorNormalCompletion && _iterator.return) {\n\t\t\t\t\t\t_iterator.return();\n\t\t\t\t\t}\n\t\t\t\t} finally {\n\t\t\t\t\tif (_didIteratorError) {\n\t\t\t\t\t\tthrow _iteratorError;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'transform',\n\t\tvalue: function transform(transformers) {\n\t\t\ttransformers = Array.isArray(transformers) ? transformers : [transformers];\n\n\t\t\tvar _iteratorNormalCompletion2 = true;\n\t\t\tvar _didIteratorError2 = false;\n\t\t\tvar _iteratorError2 = undefined;\n\n\t\t\ttry {\n\t\t\t\tfor (var _iterator2 = this.paths[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n\t\t\t\t\tvar path = _step2.value;\n\n\t\t\t\t\tpath.pathData = (0, _transform2.default)(path.pathData, transformers);\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t_didIteratorError2 = true;\n\t\t\t\t_iteratorError2 = err;\n\t\t\t} finally {\n\t\t\t\ttry {\n\t\t\t\t\tif (!_iteratorNormalCompletion2 && _iterator2.return) {\n\t\t\t\t\t\t_iterator2.return();\n\t\t\t\t\t}\n\t\t\t\t} finally {\n\t\t\t\t\tif (_didIteratorError2) {\n\t\t\t\t\t\tthrow _iteratorError2;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.update();\n\t\t}\n\t}, {\n\t\tkey: 'interpolate',\n\t\tvalue: function interpolate(threshold) {\n\t\t\tvar didWork = false;\n\n\t\t\tfunction deltaFunction(points) {\n\t\t\t\tvar linearPoints = [points[0].slice(0, 2), points[points.length - 1].slice(0, 2)];\n\n\t\t\t\tvar delta = (0, _interpolate.euclideanDistance)(linearPoints);\n\t\t\t\tdidWork = didWork || delta > threshold;\n\n\t\t\t\treturn delta;\n\t\t\t}\n\n\t\t\tvar _iteratorNormalCompletion3 = true;\n\t\t\tvar _didIteratorError3 = false;\n\t\t\tvar _iteratorError3 = undefined;\n\n\t\t\ttry {\n\t\t\t\tfor (var _iterator3 = this.paths[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n\t\t\t\t\tvar path = _step3.value;\n\n\t\t\t\t\tpath.pathData = (0, _interpolate3.default)(path.pathData, threshold, deltaFunction);\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t_didIteratorError3 = true;\n\t\t\t\t_iteratorError3 = err;\n\t\t\t} finally {\n\t\t\t\ttry {\n\t\t\t\t\tif (!_iteratorNormalCompletion3 && _iterator3.return) {\n\t\t\t\t\t\t_iterator3.return();\n\t\t\t\t\t}\n\t\t\t\t} finally {\n\t\t\t\t\tif (_didIteratorError3) {\n\t\t\t\t\t\tthrow _iteratorError3;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn didWork;\n\t\t}\n\t}, {\n\t\tkey: 'extrapolate',\n\t\tvalue: function extrapolate(threshold) {\n\t\t\tvar didWork = false;\n\n\t\t\tfunction deltaFunction(points) {\n\t\t\t\tvar linearPoints = [points[0].slice(0, 2), points[points.length - 1].slice(0, 2)];\n\n\t\t\t\tvar delta = (0, _interpolate.euclideanDistance)(linearPoints);\n\t\t\t\tdidWork = didWork || delta <= threshold;\n\n\t\t\t\treturn delta;\n\t\t\t}\n\n\t\t\tvar _iteratorNormalCompletion4 = true;\n\t\t\tvar _didIteratorError4 = false;\n\t\t\tvar _iteratorError4 = undefined;\n\n\t\t\ttry {\n\t\t\t\tfor (var _iterator4 = this.paths[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n\t\t\t\t\tvar path = _step4.value;\n\n\t\t\t\t\tpath.pathData = (0, _extrapolate2.default)(path.pathData, threshold, deltaFunction);\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t_didIteratorError4 = true;\n\t\t\t\t_iteratorError4 = err;\n\t\t\t} finally {\n\t\t\t\ttry {\n\t\t\t\t\tif (!_iteratorNormalCompletion4 && _iterator4.return) {\n\t\t\t\t\t\t_iterator4.return();\n\t\t\t\t\t}\n\t\t\t\t} finally {\n\t\t\t\t\tif (_didIteratorError4) {\n\t\t\t\t\t\tthrow _iteratorError4;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn didWork;\n\t\t}\n\t}, {\n\t\tkey: 'preInterpolate',\n\t\tvalue: function preInterpolate(transformer, threshold) {\n\t\t\tvar didWork = false;\n\n\t\t\tfunction deltaFunction(points) {\n\t\t\t\tvar linearPoints = [points[0].slice(0, 2), points[points.length - 1].slice(0, 2)];\n\n\t\t\t\tvar delta = (0, _interpolate.euclideanDistance)(linearPoints);\n\t\t\t\tdidWork = didWork || delta > threshold;\n\n\t\t\t\treturn delta;\n\t\t\t}\n\n\t\t\tvar _iteratorNormalCompletion5 = true;\n\t\t\tvar _didIteratorError5 = false;\n\t\t\tvar _iteratorError5 = undefined;\n\n\t\t\ttry {\n\t\t\t\tfor (var _iterator5 = this.paths[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {\n\t\t\t\t\tvar path = _step5.value;\n\n\t\t\t\t\tvar transformed = (0, _transform2.default)(path.pathData, function (points) {\n\t\t\t\t\t\tvar newPoints = transformer(points.slice(0, 2));\n\t\t\t\t\t\tnewPoints.push.apply(newPoints, _toConsumableArray(points));\n\n\t\t\t\t\t\treturn newPoints;\n\t\t\t\t\t});\n\n\t\t\t\t\tvar interpolated = (0, _interpolate3.default)(transformed, threshold, deltaFunction);\n\n\t\t\t\t\tpath.pathData = (0, _transform2.default)(interpolated, function (points) {\n\t\t\t\t\t\treturn points.slice(2);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t_didIteratorError5 = true;\n\t\t\t\t_iteratorError5 = err;\n\t\t\t} finally {\n\t\t\t\ttry {\n\t\t\t\t\tif (!_iteratorNormalCompletion5 && _iterator5.return) {\n\t\t\t\t\t\t_iterator5.return();\n\t\t\t\t\t}\n\t\t\t\t} finally {\n\t\t\t\t\tif (_didIteratorError5) {\n\t\t\t\t\t\tthrow _iteratorError5;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn didWork;\n\t\t}\n\t}, {\n\t\tkey: 'preExtrapolate',\n\t\tvalue: function preExtrapolate(transformer, threshold) {\n\t\t\tvar didWork = false;\n\n\t\t\tfunction deltaFunction(points) {\n\t\t\t\tvar linearPoints = [points[0].slice(0, 2), points[points.length - 1].slice(0, 2)];\n\n\t\t\t\tvar delta = (0, _interpolate.euclideanDistance)(linearPoints);\n\t\t\t\tdidWork = didWork || delta <= threshold;\n\n\t\t\t\treturn delta;\n\t\t\t}\n\n\t\t\tvar _iteratorNormalCompletion6 = true;\n\t\t\tvar _didIteratorError6 = false;\n\t\t\tvar _iteratorError6 = undefined;\n\n\t\t\ttry {\n\t\t\t\tfor (var _iterator6 = this.paths[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {\n\t\t\t\t\tvar path = _step6.value;\n\n\t\t\t\t\tvar transformed = (0, _transform2.default)(path.pathData, function (points) {\n\t\t\t\t\t\tvar newPoints = transformer(points.slice(0, 2));\n\t\t\t\t\t\tnewPoints.push.apply(newPoints, _toConsumableArray(points));\n\n\t\t\t\t\t\treturn newPoints;\n\t\t\t\t\t});\n\n\t\t\t\t\tvar extrapolated = (0, _extrapolate2.default)(transformed, threshold, deltaFunction);\n\n\t\t\t\t\tpath.pathData = (0, _transform2.default)(extrapolated, function (points) {\n\t\t\t\t\t\treturn points.slice(2);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t_didIteratorError6 = true;\n\t\t\t\t_iteratorError6 = err;\n\t\t\t} finally {\n\t\t\t\ttry {\n\t\t\t\t\tif (!_iteratorNormalCompletion6 && _iterator6.return) {\n\t\t\t\t\t\t_iterator6.return();\n\t\t\t\t\t}\n\t\t\t\t} finally {\n\t\t\t\t\tif (_didIteratorError6) {\n\t\t\t\t\t\tthrow _iteratorError6;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn didWork;\n\t\t}\n\t}]);\n\n\treturn Warp;\n}();\n\nexports.default = Warp;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.shapesToPaths = shapesToPaths;\nexports.preparePaths = preparePaths;\n\nvar _parser = __webpack_require__(2);\n\nvar _parser2 = _interopRequireDefault(_parser);\n\nvar _encoder = __webpack_require__(3);\n\nvar _encoder2 = _interopRequireDefault(_encoder);\n\nvar _transform = __webpack_require__(1);\n\nvar _transform2 = _interopRequireDefault(_transform);\n\nvar _absolute = __webpack_require__(9);\n\nvar _absolute2 = _interopRequireDefault(_absolute);\n\nvar _shortToLong = __webpack_require__(10);\n\nvar _shortToLong2 = _interopRequireDefault(_shortToLong);\n\nvar _hvzToLine = __webpack_require__(11);\n\nvar _hvzToLine2 = _interopRequireDefault(_hvzToLine);\n\nvar _lineToCurve = __webpack_require__(12);\n\nvar _lineToCurve2 = _interopRequireDefault(_lineToCurve);\n\nvar _arcToCurve = __webpack_require__(13);\n\nvar _arcToCurve2 = _interopRequireDefault(_arcToCurve);\n\nvar _shape = __webpack_require__(14);\n\nvar pathShape = _interopRequireWildcard(_shape);\n\nvar _utils = __webpack_require__(4);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction shapesToPaths(element) {\n\tvar shapeMap = {\n\t\tline: function line(shapeElement) {\n\t\t\treturn pathShape.line((0, _utils.getProperty)(shapeElement, 'x1'), (0, _utils.getProperty)(shapeElement, 'y1'), (0, _utils.getProperty)(shapeElement, 'x2'), (0, _utils.getProperty)(shapeElement, 'y2'));\n\t\t},\n\t\tpolyline: function polyline(shapeElement) {\n\t\t\treturn pathShape.polyline.apply(pathShape, _toConsumableArray(shapeElement.points));\n\t\t},\n\t\tpolygon: function polygon(shapeElement) {\n\t\t\treturn pathShape.polygon.apply(pathShape, _toConsumableArray(shapeElement.points));\n\t\t},\n\t\trect: function rect(shapeElement) {\n\t\t\treturn pathShape.rectangle((0, _utils.getProperty)(shapeElement, 'x'), (0, _utils.getProperty)(shapeElement, 'y'), (0, _utils.getProperty)(shapeElement, 'width'), (0, _utils.getProperty)(shapeElement, 'height'), (0, _utils.getProperty)(shapeElement, 'rx'), (0, _utils.getProperty)(shapeElement, 'ry'));\n\t\t},\n\t\tellipse: function ellipse(shapeElement) {\n\t\t\treturn pathShape.ellipse((0, _utils.getProperty)(shapeElement, 'cx'), (0, _utils.getProperty)(shapeElement, 'cy'), (0, _utils.getProperty)(shapeElement, 'rx'), (0, _utils.getProperty)(shapeElement, 'ry'));\n\t\t},\n\t\tcircle: function circle(shapeElement) {\n\t\t\treturn pathShape.circle((0, _utils.getProperty)(shapeElement, 'cx'), (0, _utils.getProperty)(shapeElement, 'cy'), (0, _utils.getProperty)(shapeElement, 'r'));\n\t\t}\n\t};\n\n\tvar shapeElements = element.querySelectorAll(Object.keys(shapeMap).join(','));\n\n\tvar _iteratorNormalCompletion = true;\n\tvar _didIteratorError = false;\n\tvar _iteratorError = undefined;\n\n\ttry {\n\t\tfor (var _iterator = shapeElements[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n\t\t\tvar shapeElement = _step.value;\n\n\t\t\tvar shapeName = shapeElement.tagName.toLowerCase();\n\n\t\t\tif (shapeName in shapeMap) {\n\t\t\t\tvar path = shapeMap[shapeName](shapeElement);\n\t\t\t\tvar pathString = (0, _encoder2.default)(path);\n\t\t\t\tvar attributes = { d: pathString };\n\n\t\t\t\tvar _iteratorNormalCompletion2 = true;\n\t\t\t\tvar _didIteratorError2 = false;\n\t\t\t\tvar _iteratorError2 = undefined;\n\n\t\t\t\ttry {\n\t\t\t\t\tfor (var _iterator2 = Array.from(shapeElement.attributes)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n\t\t\t\t\t\tvar attribute = _step2.value;\n\n\t\t\t\t\t\tvar name = attribute.nodeName;\n\t\t\t\t\t\tvar value = attribute.nodeValue;\n\n\t\t\t\t\t\t// Avoid dimensional properties\n\t\t\t\t\t\tif (!/^(x|y|x1|y1|x2|y2|width|height|r|rx|ry|cx|cy|points|d)$/.test(name)) {\n\t\t\t\t\t\t\tattributes[name] = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} catch (err) {\n\t\t\t\t\t_didIteratorError2 = true;\n\t\t\t\t\t_iteratorError2 = err;\n\t\t\t\t} finally {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (!_iteratorNormalCompletion2 && _iterator2.return) {\n\t\t\t\t\t\t\t_iterator2.return();\n\t\t\t\t\t\t}\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif (_didIteratorError2) {\n\t\t\t\t\t\t\tthrow _iteratorError2;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar pathElement = (0, _utils.createElement)('path', attributes);\n\t\t\t\tshapeElement.parentNode.replaceChild(pathElement, shapeElement);\n\t\t\t}\n\t\t}\n\t} catch (err) {\n\t\t_didIteratorError = true;\n\t\t_iteratorError = err;\n\t} finally {\n\t\ttry {\n\t\t\tif (!_iteratorNormalCompletion && _iterator.return) {\n\t\t\t\t_iterator.return();\n\t\t\t}\n\t\t} finally {\n\t\t\tif (_didIteratorError) {\n\t\t\t\tthrow _iteratorError;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction preparePaths(element) {\n\tvar curveType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'q';\n\n\tvar pathElements = Array.from(element.querySelectorAll('path'));\n\n\tvar _iteratorNormalCompletion3 = true;\n\tvar _didIteratorError3 = false;\n\tvar _iteratorError3 = undefined;\n\n\ttry {\n\t\tfor (var _iterator3 = pathElements[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n\t\t\tvar pathElement = _step3.value;\n\n\t\t\tvar pathString = (0, _utils.getProperty)(pathElement, 'd');\n\t\t\tvar path = (0, _parser2.default)(pathString);\n\n\t\t\tpath = (0, _transform2.default)(path, (0, _absolute2.default)());\n\t\t\tpath = (0, _transform2.default)(path, (0, _shortToLong2.default)());\n\t\t\tpath = (0, _transform2.default)(path, (0, _hvzToLine2.default)());\n\t\t\tpath = (0, _transform2.default)(path, (0, _lineToCurve2.default)(curveType));\n\t\t\tpath = (0, _transform2.default)(path, (0, _arcToCurve2.default)());\n\n\t\t\tpathString = (0, _encoder2.default)(path);\n\n\t\t\t(0, _utils.setProperty)(pathElement, 'd', pathString);\n\t\t}\n\t} catch (err) {\n\t\t_didIteratorError3 = true;\n\t\t_iteratorError3 = err;\n\t} finally {\n\t\ttry {\n\t\t\tif (!_iteratorNormalCompletion3 && _iterator3.return) {\n\t\t\t\t_iterator3.return();\n\t\t\t}\n\t\t} finally {\n\t\t\tif (_didIteratorError3) {\n\t\t\t\tthrow _iteratorError3;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.default = absoluteGenerator;\n\nvar _utils = __webpack_require__(0);\n\nfunction absoluteGenerator() {\n\tvar xProps = ['x', 'x1', 'x2'];\n\tvar yProps = ['y', 'y1', 'y2'];\n\tvar drawingCmdExpr = /[lhvcsqta]/;\n\n\tvar prevX = 0;\n\tvar prevY = 0;\n\tvar pathStartX = NaN;\n\tvar pathStartY = NaN;\n\n\treturn function absolute(segment) {\n\t\tif (isNaN(pathStartX) && (0, _utils.isDrawingSegment)(segment)) {\n\t\t\tpathStartX = prevX;\n\t\t\tpathStartY = prevY;\n\t\t}\n\n\t\tif (segment.type === 'z' && !isNaN(pathStartX)) {\n\t\t\tprevX = pathStartX;\n\t\t\tprevY = pathStartY;\n\t\t\tpathStartX = NaN;\n\t\t\tpathStartY = NaN;\n\t\t}\n\n\t\tif (segment.relative) {\n\t\t\tvar _iteratorNormalCompletion = true;\n\t\t\tvar _didIteratorError = false;\n\t\t\tvar _iteratorError = undefined;\n\n\t\t\ttry {\n\t\t\t\tfor (var _iterator = xProps[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n\t\t\t\t\tvar x = _step.value;\n\n\t\t\t\t\tif (x in segment) {\n\t\t\t\t\t\tsegment[x] += prevX;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t_didIteratorError = true;\n\t\t\t\t_iteratorError = err;\n\t\t\t} finally {\n\t\t\t\ttry {\n\t\t\t\t\tif (!_iteratorNormalCompletion && _iterator.return) {\n\t\t\t\t\t\t_iterator.return();\n\t\t\t\t\t}\n\t\t\t\t} finally {\n\t\t\t\t\tif (_didIteratorError) {\n\t\t\t\t\t\tthrow _iteratorError;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar _iteratorNormalCompletion2 = true;\n\t\t\tvar _didIteratorError2 = false;\n\t\t\tvar _iteratorError2 = undefined;\n\n\t\t\ttry {\n\t\t\t\tfor (var _iterator2 = yProps[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n\t\t\t\t\tvar y = _step2.value;\n\n\t\t\t\t\tif (y in segment) {\n\t\t\t\t\t\tsegment[y] += prevY;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t_didIteratorError2 = true;\n\t\t\t\t_iteratorError2 = err;\n\t\t\t} finally {\n\t\t\t\ttry {\n\t\t\t\t\tif (!_iteratorNormalCompletion2 && _iterator2.return) {\n\t\t\t\t\t\t_iterator2.return();\n\t\t\t\t\t}\n\t\t\t\t} finally {\n\t\t\t\t\tif (_didIteratorError2) {\n\t\t\t\t\t\tthrow _iteratorError2;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsegment.relative = false;\n\t\t}\n\n\t\tprevX = 'x' in segment ? segment.x : prevX;\n\t\tprevY = 'y' in segment ? segment.y : prevY;\n\n\t\tif (segment.type === 'm') {\n\t\t\tpathStartX = prevX;\n\t\t\tpathStartY = prevY;\n\t\t}\n\n\t\treturn segment;\n\t};\n}\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.default = shortToLongGenerator;\nfunction shortToLongGenerator() {\n\tvar prevX = 0;\n\tvar prevY = 0;\n\tvar pathStartX = NaN;\n\tvar pathStartY = NaN;\n\tvar prevCurveC2X = NaN;\n\tvar prevCurveC2Y = NaN;\n\tvar prevQuadCX = NaN;\n\tvar prevQuadCY = NaN;\n\n\treturn function shortToLong(segment) {\n\t\tif (isNaN(pathStartX) && segment.type !== 'm') {\n\t\t\tthrow new Error('Transform path error: path must start with \"moveto\"');\n\t\t}\n\n\t\tif (segment.type === 's') {\n\t\t\tprevCurveC2X = isNaN(prevCurveC2X) ? prevX : prevCurveC2X;\n\t\t\tprevCurveC2Y = isNaN(prevCurveC2Y) ? prevY : prevCurveC2Y;\n\n\t\t\tsegment.type = 'c';\n\t\t\tsegment.x1 = (segment.relative ? 1 : 2) * prevX - prevCurveC2X;\n\t\t\tsegment.y1 = (segment.relative ? 1 : 2) * prevY - prevCurveC2Y;\n\t\t}\n\n\t\tif (segment.type === 'c') {\n\t\t\tprevCurveC2X = (segment.relative ? prevX : 0) + segment.x2;\n\t\t\tprevCurveC2Y = (segment.relative ? prevY : 0) + segment.y2;\n\t\t} else {\n\t\t\tprevCurveC2X = NaN;\n\t\t\tprevCurveC2Y = NaN;\n\t\t}\n\n\t\tif (segment.type === 't') {\n\t\t\tprevQuadCX = isNaN(prevQuadCX) ? prevX : prevQuadCX;\n\t\t\tprevQuadCY = isNaN(prevQuadCY) ? prevY : prevQuadCY;\n\n\t\t\tsegment.type = 'q';\n\t\t\tsegment.x1 = (segment.relative ? 1 : 2) * prevX - prevQuadCX;\n\t\t\tsegment.y1 = (segment.relative ? 1 : 2) * prevY - prevQuadCY;\n\t\t}\n\n\t\tif (segment.type === 'q') {\n\t\t\tprevQuadCX = (segment.relative ? prevX : 0) + segment.x1;\n\t\t\tprevQuadCY = (segment.relative ? prevY : 0) + segment.y1;\n\t\t} else {\n\t\t\tprevQuadCX = NaN;\n\t\t\tprevQuadCY = NaN;\n\t\t}\n\n\t\tif (segment.type === 'z') {\n\t\t\tprevX = pathStartX;\n\t\t\tprevY = pathStartY;\n\t\t}\n\n\t\tprevX = 'x' in segment ? (segment.relative ? prevX : 0) + segment.x : prevX;\n\t\tprevY = 'y' in segment ? (segment.relative ? prevY : 0) + segment.y : prevY;\n\n\t\tif (segment.type === 'm') {\n\t\t\tpathStartX = prevX;\n\t\t\tpathStartY = prevY;\n\t\t}\n\n\t\treturn segment;\n\t};\n}\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.default = hvzToLineGenerator;\nfunction hvzToLineGenerator() {\n\tvar prevX = 0;\n\tvar prevY = 0;\n\tvar pathStartX = NaN;\n\tvar pathStartY = NaN;\n\n\treturn function hvzToLine(segment) {\n\t\tif (isNaN(pathStartX) && segment.type !== 'm') {\n\t\t\tthrow new Error('Transform path error: path must start with \"moveto\"');\n\t\t}\n\n\t\tswitch (segment.type) {\n\t\t\tcase 'h':\n\t\t\t\t{\n\t\t\t\t\tsegment.type = 'l';\n\t\t\t\t\tsegment.y = segment.relative ? 0 : prevY;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'v':\n\t\t\t\t{\n\t\t\t\t\tsegment.type = 'l';\n\t\t\t\t\tsegment.x = segment.relative ? 0 : prevX;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'z':\n\t\t\t\t{\n\t\t\t\t\tsegment.type = 'l';\n\t\t\t\t\tsegment.x = pathStartX - (segment.relative ? prevX : 0);\n\t\t\t\t\tsegment.y = pathStartY - (segment.relative ? prevY : 0);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'a':\n\t\t\t\t{\n\t\t\t\t\tif (segment.rx === 0 || segment.ry === 0) {\n\t\t\t\t\t\tsegment.type = 'l';\n\n\t\t\t\t\t\tdelete segment.rx;\n\t\t\t\t\t\tdelete segment.ry;\n\t\t\t\t\t\tdelete segment.xRotation;\n\t\t\t\t\t\tdelete segment.largeArc;\n\t\t\t\t\t\tdelete segment.sweep;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\n\t\tprevX = (segment.relative ? prevX : 0) + segment.x;\n\t\tprevY = (segment.relative ? prevY : 0) + segment.y;\n\n\t\tif (segment.type === 'm') {\n\t\t\tpathStartX = prevX;\n\t\t\tpathStartY = prevY;\n\t\t}\n\n\t\treturn segment;\n\t};\n}\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.default = lineToCurveGenerator;\n\nvar _utils = __webpack_require__(0);\n\nfunction lineToCurveGenerator() {\n\tvar curveType = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'q';\n\n\tvar prevX = 0;\n\tvar prevY = 0;\n\tvar pathStartX = NaN;\n\tvar pathStartY = NaN;\n\n\treturn function lineToCurve(segment) {\n\t\tif (isNaN(pathStartX) && (0, _utils.isDrawingSegment)(segment.type)) {\n\t\t\tpathStartX = prevX;\n\t\t\tpathStartY = prevY;\n\t\t}\n\n\t\tif (segment.type === 'z' && !isNaN(pathStartX)) {\n\t\t\tprevX = pathStartX;\n\t\t\tprevY = pathStartY;\n\t\t\tpathStartX = NaN;\n\t\t\tpathStartY = NaN;\n\t\t}\n\n\t\tif (segment.type === 'l') {\n\t\t\tvar startX = segment.relative ? 0 : prevX;\n\t\t\tvar startY = segment.relative ? 0 : prevY;\n\n\t\t\tsegment.type = curveType;\n\n\t\t\tswitch (curveType) {\n\t\t\t\tcase 'q':\n\t\t\t\t\t{\n\t\t\t\t\t\tsegment.x1 = (startX + segment.x) / 2;\n\t\t\t\t\t\tsegment.y1 = (startY + segment.y) / 2;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'c':\n\t\t\t\t\t{\n\t\t\t\t\t\tvar offsetX = (segment.x - startX) / 3;\n\t\t\t\t\t\tvar offsetY = (segment.y - startY) / 3;\n\n\t\t\t\t\t\tsegment.x1 = startX + offsetX;\n\t\t\t\t\t\tsegment.y1 = startY + offsetY;\n\t\t\t\t\t\tsegment.x2 = startX + 2 * offsetX;\n\t\t\t\t\t\tsegment.y2 = startY + 2 * offsetY;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\t{\n\t\t\t\t\t\tthrow new Error('Invalid curve type \"' + curveType + '\"');\n\t\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tprevX = 'x' in segment ? (segment.relative ? prevX : 0) + segment.x : prevX;\n\t\tprevY = 'y' in segment ? (segment.relative ? prevY : 0) + segment.y : prevY;\n\n\t\tif (segment.type === 'm') {\n\t\t\tpathStartX = prevX;\n\t\t\tpathStartY = prevY;\n\t\t}\n\n\t\treturn segment;\n\t};\n}\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.default = arcToCurveGenerator;\n\nvar _utils = __webpack_require__(0);\n\nfunction arcToCurveGenerator() {\n\tvar prevX = 0;\n\tvar prevY = 0;\n\tvar pathStartX = NaN;\n\tvar pathStartY = NaN;\n\n\treturn function arcToCurve(segment) {\n\t\tvar segments = segment;\n\n\t\tif (isNaN(pathStartX) && (0, _utils.isDrawingSegment)(segment.type)) {\n\t\t\tpathStartX = prevX;\n\t\t\tpathStartY = prevY;\n\t\t}\n\n\t\tif (segment.type === 'z' && !isNaN(pathStartX)) {\n\t\t\tprevX = pathStartX;\n\t\t\tprevY = pathStartY;\n\t\t\tpathStartX = NaN;\n\t\t\tpathStartY = NaN;\n\t\t}\n\n\t\tif (segment.type === 'a') {\n\t\t\tvar startX = segment.relative ? 0 : prevX;\n\t\t\tvar startY = segment.relative ? 0 : prevY;\n\t\t\tvar rx = segment.rx,\n\t\t\t ry = segment.ry,\n\t\t\t xRotation = segment.xRotation,\n\t\t\t largeArc = segment.largeArc,\n\t\t\t sweep = segment.sweep,\n\t\t\t x = segment.x,\n\t\t\t y = segment.y;\n\n\t\t\tvar curveSegments = converter(startX, startY, rx, ry, xRotation, largeArc, sweep, x, y);\n\n\t\t\tvar prevCurveX = 0;\n\t\t\tvar prevCurveY = 0;\n\n\t\t\tvar _iteratorNormalCompletion = true;\n\t\t\tvar _didIteratorError = false;\n\t\t\tvar _iteratorError = undefined;\n\n\t\t\ttry {\n\t\t\t\tfor (var _iterator = curveSegments[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n\t\t\t\t\tvar curveSegment = _step.value;\n\n\t\t\t\t\tcurveSegment.relative = segment.relative;\n\n\t\t\t\t\tif (segment.relative && curveSegment.type === 'c') {\n\t\t\t\t\t\tcurveSegment.x -= prevCurveX;\n\t\t\t\t\t\tcurveSegment.x1 -= prevCurveX;\n\t\t\t\t\t\tcurveSegment.x2 -= prevCurveX;\n\t\t\t\t\t\tcurveSegment.y -= prevCurveY;\n\t\t\t\t\t\tcurveSegment.y1 -= prevCurveY;\n\t\t\t\t\t\tcurveSegment.y2 -= prevCurveY;\n\t\t\t\t\t}\n\n\t\t\t\t\tprevCurveX = curveSegment.x;\n\t\t\t\t\tprevCurveY = curveSegment.y;\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\t_didIteratorError = true;\n\t\t\t\t_iteratorError = err;\n\t\t\t} finally {\n\t\t\t\ttry {\n\t\t\t\t\tif (!_iteratorNormalCompletion && _iterator.return) {\n\t\t\t\t\t\t_iterator.return();\n\t\t\t\t\t}\n\t\t\t\t} finally {\n\t\t\t\t\tif (_didIteratorError) {\n\t\t\t\t\t\tthrow _iteratorError;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsegments = curveSegments;\n\t\t}\n\n\t\tprevX = 'x' in segment ? (segment.relative ? prevX : 0) + segment.x : prevX;\n\t\tprevY = 'y' in segment ? (segment.relative ? prevY : 0) + segment.y : prevY;\n\n\t\tif (segment.type === 'm') {\n\t\t\tpathStartX = prevX;\n\t\t\tpathStartY = prevY;\n\t\t}\n\n\t\treturn segments;\n\t};\n}\n\nfunction converter(sx, sy, rx, ry, angle, large, sweep, x, y) {\n\tif (sx === x && sy === y) {\n\t\treturn [];\n\t}\n\n\tif (!rx && !ry) {\n\t\treturn [{ type: 'l', x: x, y: y }];\n\t}\n\n\tvar sinPhi = Math.sin(angle * Math.PI / 180);\n\tvar cosPhi = Math.cos(angle * Math.PI / 180);\n\n\tvar xd = cosPhi * (sx - x) / 2 + sinPhi * (sy - y) / 2;\n\tvar yd = -sinPhi * (sx - x) / 2 + cosPhi * (sy - y) / 2;\n\n\tvar rx2 = rx * rx;\n\tvar ry2 = ry * ry;\n\n\tvar xd2 = xd * xd;\n\tvar yd2 = yd * yd;\n\n\tvar root = 0;\n\tvar numerator = rx2 * ry2 - rx2 * yd2 - ry2 * xd2;\n\n\tif (numerator < 0) {\n\t\tvar s = Math.sqrt(1 - numerator / (rx2 * ry2));\n\n\t\trx *= s;\n\t\try *= s;\n\t} else {\n\t\troot = (large && sweep || !large && !sweep ? -1 : 1) * Math.sqrt(numerator / (rx2 * yd2 + ry2 * xd2));\n\t}\n\n\tvar cxd = root * rx * yd / ry;\n\tvar cyd = -root * ry * xd / rx;\n\n\tvar cx = cosPhi * cxd - sinPhi * cyd + (sx + x) / 2;\n\tvar cy = sinPhi * cxd + cosPhi * cyd + (sy + y) / 2;\n\n\tvar theta1 = angleBetween(1, 0, (xd - cxd) / rx, (yd - cyd) / ry);\n\tvar dtheta = angleBetween((xd - cxd) / rx, (yd - cyd) / ry, (-xd - cxd) / rx, (-yd - cyd) / ry);\n\n\tif (!sweep && dtheta > 0) {\n\t\tdtheta -= Math.PI * 2;\n\t} else if (sweep && dtheta < 0) {\n\t\tdtheta += Math.PI * 2;\n\t}\n\n\tvar segments = [];\n\tvar numSegs = Math.ceil(Math.abs(dtheta / (Math.PI / 2)));\n\tvar delta = dtheta / numSegs;\n\tvar t = 8 / 3 * Math.sin(delta / 4) * Math.sin(delta / 4) / Math.sin(delta / 2);\n\n\tfor (var i = 0; i < numSegs; i++) {\n\t\tvar cosTheta1 = Math.cos(theta1);\n\t\tvar sinTheta1 = Math.sin(theta1);\n\t\tvar theta2 = theta1 + delta;\n\t\tvar cosTheta2 = Math.cos(theta2);\n\t\tvar sinTheta2 = Math.sin(theta2);\n\n\t\tvar epx = cosPhi * rx * cosTheta2 - sinPhi * ry * sinTheta2 + cx;\n\t\tvar epy = sinPhi * rx * cosTheta2 + cosPhi * ry * sinTheta2 + cy;\n\n\t\tvar dx = t * (-cosPhi * rx * sinTheta1 - sinPhi * ry * cosTheta1);\n\t\tvar dy = t * (-sinPhi * rx * sinTheta1 + cosPhi * ry * cosTheta1);\n\n\t\tvar dxe = t * (cosPhi * rx * sinTheta2 + sinPhi * ry * cosTheta2);\n\t\tvar dye = t * (sinPhi * rx * sinTheta2 - cosPhi * ry * cosTheta2);\n\n\t\tsegments.push({\n\t\t\ttype: 'c',\n\t\t\tx: epx,\n\t\t\ty: epy,\n\t\t\tx1: sx + dx,\n\t\t\ty1: sy + dy,\n\t\t\tx2: epx + dxe,\n\t\t\ty2: epy + dye\n\t\t});\n\n\t\ttheta1 = theta2;\n\t\tsx = epx;\n\t\tsy = epy;\n\t}\n\n\treturn segments;\n}\n\nfunction angleBetween(ux, uy, vx, vy) {\n\tvar ta = Math.atan2(uy, ux);\n\tvar tb = Math.atan2(vy, vx);\n\n\tif (tb >= ta) {\n\t\treturn tb - ta;\n\t}\n\n\treturn Math.PI * 2 - (ta - tb);\n}\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.line = line;\nexports.polyline = polyline;\nexports.polygon = polygon;\nexports.rectangle = rectangle;\nexports.ellipse = ellipse;\nexports.circle = circle;\nfunction line(x1, y1, x2, y2) {\n\tvar relative = false;\n\n\treturn [{ type: 'm', relative: relative, x: x1, y: y1 }, { type: 'l', relative: relative, x: x2, y: y2 }];\n}\n\nfunction polyline() {\n\tfor (var _len = arguments.length, points = Array(_len), _key = 0; _key < _len; _key++) {\n\t\tpoints[_key] = arguments[_key];\n\t}\n\n\treturn points.map(function (p, i) {\n\t\treturn {\n\t\t\ttype: i === 0 ? 'm' : 'l',\n\t\t\trelative: false,\n\t\t\tx: p.x || p[0],\n\t\t\ty: p.y || p[1]\n\t\t};\n\t});\n}\n\nfunction polygon() {\n\tvar path = polyline.apply(undefined, arguments);\n\tpath.append({ type: 'z', relative: false });\n\n\treturn path;\n}\n\nfunction rectangle(x, y, width, height) {\n\tvar rx = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\n\tvar ry = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n\tvar relative = false;\n\tvar path = void 0;\n\n\tif (rx > 0 || ry > 0) {\n\t\t// If one of the properties is not defined or zero, then it's just given the value of the other\n\t\trx = rx || ry;\n\t\try = ry || rx;\n\n\t\tvar xRotation = 0;\n\t\tvar largeArc = false;\n\t\tvar sweep = true;\n\n\t\tpath = [{ type: 'm', relative: relative, x: x + rx, y: y }, { type: 'h', relative: relative, x: x + width - rx }, { type: 'a', relative: relative, rx: rx, ry: ry, xRotation: xRotation, largeArc: largeArc, sweep: sweep, x: x + width, y: y + ry }, { type: 'v', relative: relative, y: y + height - ry }, { type: 'a', relative: relative, rx: rx, ry: ry, xRotation: xRotation, largeArc: largeArc, sweep: sweep, x: x + width - rx, y: y + height }, { type: 'h', relative: relative, x: x + rx }, { type: 'a', relative: relative, rx: rx, ry: ry, xRotation: xRotation, largeArc: largeArc, sweep: sweep, x: x, y: y + height - ry }, { type: 'v', relative: relative, y: y + ry }, { type: 'a', relative: relative, rx: rx, ry: ry, xRotation: xRotation, largeArc: largeArc, sweep: sweep, x: x + rx, y: y }];\n\t} else {\n\t\tpath = [{ type: 'm', relative: relative, x: x, y: y }, { type: 'h', relative: relative, x: x + width }, { type: 'v', relative: relative, y: y + height }, { type: 'h', relative: relative, x: x }, { type: 'v', relative: relative, y: y }];\n\t}\n\n\treturn path;\n}\n\nfunction ellipse(cx, cy, rx, ry) {\n\tvar relative = false;\n\tvar xRotation = 0;\n\tvar largeArc = false;\n\tvar sweep = true;\n\n\treturn [{ type: 'm', relative: relative, x: cx, y: cy - ry }, { type: 'a', relative: relative, rx: rx, ry: ry, xRotation: xRotation, largeArc: largeArc, sweep: sweep, x: cx, y: cy + ry }, { type: 'a', relative: relative, rx: rx, ry: ry, xRotation: xRotation, largeArc: largeArc, sweep: sweep, x: cx, y: cy - ry }];\n}\n\nfunction circle(cx, cy, r) {\n\treturn ellipse(cx, cy, r, r);\n}\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nexports.default = transform;\n\nvar _transform = __webpack_require__(1);\n\nvar _transform2 = _interopRequireDefault(_transform);\n\nvar _utils = __webpack_require__(0);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction transform(path, transformers) {\n\treturn (0, _transform2.default)(path, function (segment) {\n\t\tfor (var i = 0; i < _utils.pointGroups.length; i++) {\n\t\t\tvar _pointGroups$i = _slicedToArray(_utils.pointGroups[i], 2),\n\t\t\t x = _pointGroups$i[0],\n\t\t\t y = _pointGroups$i[1];\n\n\t\t\tif (x in segment && y in segment) {\n\t\t\t\tvar extendedPoints = (segment.extended ? segment.extended[i] : null) || [];\n\t\t\t\tvar oldPoints = [segment[x], segment[y]].concat(_toConsumableArray(extendedPoints));\n\t\t\t\tvar newPoints = transformers.reduce(function (points, transformer) {\n\t\t\t\t\treturn transformer(points);\n\t\t\t\t}, oldPoints);\n\n\t\t\t\tif (newPoints.length < 2) {\n\t\t\t\t\tthrow new Error('Transformer must return at least 2 points');\n\t\t\t\t}\n\n\t\t\t\tsegment[x] = newPoints[0];\n\t\t\t\tsegment[y] = newPoints[1];\n\n\t\t\t\tif (newPoints.length > 2) {\n\t\t\t\t\tsegment.extended = segment.extended || {};\n\t\t\t\t\tsegment.extended[i] = newPoints.slice(2);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn segment;\n\t});\n}\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nexports.default = interpolate;\n\nvar _transform = __webpack_require__(1);\n\nvar _transform2 = _interopRequireDefault(_transform);\n\nvar _interpolate = __webpack_require__(5);\n\nvar _utils = __webpack_require__(0);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar interpolationTypesExpr = /[lqc]/;\n\nfunction interpolate(path, threshold, deltaFunction) {\n\tvar prevPoints = [];\n\n\treturn (0, _transform2.default)(path, function (segment) {\n\t\tvar segments = segment;\n\n\t\tif (interpolationTypesExpr.test(segment.type)) {\n\t\t\tvar points = [prevPoints];\n\n\t\t\tfor (var j = 0; j < _utils.pointGroups.length; j++) {\n\t\t\t\tvar _pointGroups$j = _slicedToArray(_utils.pointGroups[j], 2),\n\t\t\t\t x = _pointGroups$j[0],\n\t\t\t\t y = _pointGroups$j[1];\n\n\t\t\t\tif (x in segment && y in segment) {\n\t\t\t\t\tvar extendedPoints = (segment.extended ? segment.extended[j] : null) || [];\n\t\t\t\t\tvar pointList = [segment[x], segment[y]].concat(_toConsumableArray(extendedPoints));\n\n\t\t\t\t\tpoints.push(pointList);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar rawSegments = (0, _interpolate.until)(points, threshold, deltaFunction);\n\n\t\t\tif (rawSegments.length > 1) {\n\t\t\t\tsegments = rawSegments.map(function (rawSegment) {\n\t\t\t\t\treturn (0, _utils.createLineSegment)(rawSegment);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif ('x' in segment && 'y' in segment) {\n\t\t\tvar _extendedPoints = (segment.extended ? segment.extended[2] : null) || [];\n\t\t\tvar _pointList = [segment.x, segment.y].concat(_toConsumableArray(_extendedPoints));\n\n\t\t\tprevPoints = _pointList;\n\t\t}\n\n\t\treturn segments;\n\t});\n}\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.default = extrapolate;\n\nvar _transform = __webpack_require__(1);\n\nvar _transform2 = _interopRequireDefault(_transform);\n\nvar _utils = __webpack_require__(0);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar extrapolationTypesExpr = /[lqc]/;\n\nfunction extrapolate(path, threshold, deltaFunction) {\n\treturn (0, _transform2.default)(path, function (segment, i, oldPath, newPath) {\n\t\tif (i > 1) {\n\t\t\tvar prevSegment = newPath[newPath.length - 1];\n\t\t\tvar prevSegment2 = newPath[newPath.length - 2];\n\n\t\t\tif (extrapolationTypesExpr.test(segment.type) && prevSegment.type === segment.type) {\n\t\t\t\tvar points = [[prevSegment2.x, prevSegment2.y], [segment.x, segment.y]];\n\n\t\t\t\tif (deltaFunction(points) <= threshold) {\n\t\t\t\t\tvar newSegment = (0, _utils.joinSegments)(prevSegment, segment);\n\n\t\t\t\t\tif (newSegment) {\n\t\t\t\t\t\tnewPath[newPath.length - 1] = newSegment;\n\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn segment;\n\t});\n}\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// warp.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 6);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 307080daed9b4b6bba3b","const segmentSchemas = {\n\tm: ['x', 'y'],\n\tz: [],\n\tl: ['x', 'y'],\n\th: ['x'],\n\tv: ['y'],\n\tc: ['x1', 'y1', 'x2', 'y2', 'x', 'y'],\n\ts: ['x2', 'y2', 'x', 'y'],\n\tq: ['x1', 'y1', 'x', 'y'],\n\tt: ['x', 'y'],\n\ta: ['rx', 'ry', 'xRotation', 'largeArc', 'sweep', 'x', 'y'],\n}\n\nexport const pointGroups = [\n\t['x1', 'y1'],\n\t['x2', 'y2'],\n\t['x', 'y'],\n]\n\nconst drawingCmdExpr = /[lhvcsqta]/\n\nexport function getSegmentSchema(type)\n{\n\treturn segmentSchemas[ type.toLowerCase() ]\n}\n\nexport function isDrawingSegment(segment)\n{\n\treturn drawingCmdExpr.test(segment.type)\n}\n\nexport function createLineSegment(points)\n{\n\tconst segment = { relative: false }\n\n\tswitch(points.length)\n\t{\n\t\tcase 2: { segment.type = 'l' } break\n\t\tcase 3: { segment.type = 'q' } break\n\t\tcase 4: { segment.type = 'c' } break\n\t\tdefault: return false\n\t}\n\n\tfor(let i = 1; i < points.length; i++)\n\t{\n\t\tconst g = (i < points.length - 1 ? i : pointGroups.length) - 1\n\t\tconst [x, y] = pointGroups[g]\n\n\t\tsegment[x] = points[i][0]\n\t\tsegment[y] = points[i][1]\n\n\t\tif(points[i].length > 2)\n\t\t{\n\t\t\tsegment.extended = segment.extended || {}\n\t\t\tsegment.extended[g] = points[i].slice(2)\n\t\t}\n\t}\n\n\treturn segment\n}\n\nexport function joinSegments(segmentA, segmentB)\n{\n\tif(segmentA.type === segmentB.type && segmentA.relative === segmentB.relative)\n\t{\n\t\tconst { type, relative, x, y } = segmentB\n\t\tconst bothExtended = !!segmentA.extended && !!segmentB.extended\n\t\tconst extended = {}\n\t\tconst segment = { type, relative, x, y, extended }\n\n\t\tfunction setExtended(pointsA, pointsB, type)\n\t\t{\n\t\t\tif(pointsA && pointsB)\n\t\t\t{\n\t\t\t\tconst points = []\n\t\t\t\tconst pointCount = Math.min(pointsA.length, pointsB.length)\n\n\t\t\t\tfor(let i = 0; i < pointCount; i++)\n\t\t\t\t{\n\t\t\t\t\tpoints.push((pointsA[i] + pointsB[i]) / 2)\n\t\t\t\t}\n\n\t\t\t\tsegment.extended[type] = points\n\t\t\t}\n\t\t}\n\n\t\tswitch(type)\n\t\t{\n\t\t\tcase 'l': break\n\t\t\tcase 'q':\n\t\t\t{\n\t\t\t\tsegment.x1 = (segmentA.x1 + segmentB.x1) / 2\n\t\t\t\tsegment.y1 = (segmentA.y1 + segmentB.y1) / 2\n\n\t\t\t\tif(bothExtended)\n\t\t\t\t{\n\t\t\t\t\tsetExtended(segmentA.extended[0], segmentB.extended[0], 0)\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak\n\t\t\tcase 'c':\n\t\t\t{\n\t\t\t\tsegment.x1 = (segmentA.x1 + segmentA.x2) / 2\n\t\t\t\tsegment.y1 = (segmentA.y1 + segmentA.y2) / 2\n\t\t\t\tsegment.x2 = (segmentB.x1 + segmentB.x2) / 2\n\t\t\t\tsegment.y2 = (segmentB.y1 + segmentB.y2) / 2\n\n\t\t\t\tif(bothExtended)\n\t\t\t\t{\n\t\t\t\t\tsetExtended(segmentA.extended[0], segmentA.extended[1], 0)\n\t\t\t\t\tsetExtended(segmentB.extended[0], segmentB.extended[1], 1)\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak\n\t\t\tdefault:\n\t\t\t{\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\tif(segmentB.extended && segmentB.extended[2])\n\t\t{\n\t\t\textended[2] = segmentB.extended[2]\n\t\t}\n\n\t\treturn segment\n\t}\n\n\treturn false\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/path/utils.js","export default function transform(path, transformer)\n{\n\tconst newPath = []\n\n\tfor(let i = 0; i < path.length; i++)\n\t{\n\t\tconst segment = JSON.parse(JSON.stringify(path[i]))\n\t\tconst result = transformer(segment, i, path, newPath)\n\n\t\tif(Array.isArray(result))\n\t\t{\n\t\t\tnewPath.push(...result)\n\t\t}\n\t\telse if(result)\n\t\t{\n\t\t\tnewPath.push(result)\n\t\t}\n\t}\n\n\treturn newPath\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/path/transform.js","import { getSegmentSchema } from './utils'\n\nconst segmentExpr = /([mzlhvcsqta])([^mzlhvcsqta]*)/ig\nconst numberExpr = /-?[0-9]*\\.?[0-9]+(?:e[-+]?\\d+)?/ig\n\nexport default function parser(pathString)\n{\n\tconst pathData = []\n\n\tlet segmentMatch\n\tsegmentExpr.lastIndex = 0\n\t\n\twhile( (segmentMatch = segmentExpr.exec(pathString)) )\n\t{\n\t\tconst type = segmentMatch[1].toLowerCase()\n\t\tconst numbers = (segmentMatch[2].match(numberExpr) || []).map(parseFloat)\n\t\tconst relative = (type === segmentMatch[1])\n\n\t\tconst schema = getSegmentSchema(type)\n\n\t\tif(numbers.length < schema.length)\n\t\t{\n\t\t\tthrow new Error(`Malformed path data: type \"${type}\" has ${numbers.length} arguments, expected ${scheme.length}`)\n\t\t}\n\n\t\tif(schema.length > 0)\n\t\t{\n\t\t\tif(numbers.length % schema.length !== 0)\n\t\t\t{\n\t\t\t\tthrow new Error(`Malformed path data: type \"${type}\" has ${numbers.length} arguments, ${numbers.length % schema.length} too many`)\n\t\t\t}\n\n\t\t\tfor(let i = 0; i < numbers.length / schema.length; i++)\n\t\t\t{\n\t\t\t\tconst segmentData = { type, relative }\n\n\t\t\t\tfor(let j = 0; j < schema.length; j++)\n\t\t\t\t{\n\t\t\t\t\tsegmentData[ schema[j] ] = numbers[i * schema.length + j]\n\t\t\t\t}\n\n\t\t\t\tpathData.push(segmentData)\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tpathData.push({ type, relative })\n\t\t}\n\t}\n\n\treturn pathData\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/path/parser.js","import { getSegmentSchema } from './utils'\n\nexport default function encoder(pathData, precision=2)\n{\n\tlet prevType = false\n\tlet magnitude = 10**precision\n\n\treturn pathData.map(function(segment)\n\t{\n\t\tconst output = []\n\t\tconst outputType = (segment.relative ? segment.type : segment.type.toUpperCase())\n\t\tlet first = (prevType !== outputType)\n\n\t\tconst schema = getSegmentSchema(segment.type)\n\t\t\n\t\tif(first)\n\t\t{\n\t\t\toutput.push(outputType)\n\t\t\tprevType = outputType\n\t\t}\n\n\t\tfor(let property of schema)\n\t\t{\n\t\t\tconst value = segment[property]\n\t\t\tlet outputValue\n\n\t\t\tswitch(typeof value)\n\t\t\t{\n\t\t\t\tcase 'boolean': { outputValue = value|0 } break\n\t\t\t\tcase 'number': { outputValue = ((value * magnitude)|0) / magnitude } break\n\t\t\t\tdefault: throw new Error('Invalid path data')\n\t\t\t}\n\n\t\t\tif(!first)\n\t\t\t{\n\t\t\t\toutput.push(' ')\n\t\t\t}\n\n\t\t\toutput.push(outputValue)\n\t\t\tfirst = false\n\t\t}\n\n\t\treturn output.join('')\n\t\t\n\t}).join('')\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/path/encoder.js","export function createElement(tag, attributes={})\n{\n\tconst element = document.createElementNS('http://www.w3.org/2000/svg', tag)\n\n\tfor(let name of Object.keys(attributes))\n\t{\n\t\tsetProperty(element, name, attributes[name])\n\t}\n\n\treturn element\n}\n\nexport function getProperty(element, property)\n{\n\tif(element[property] instanceof SVGAnimatedLength)\n\t{\n\t\treturn element[property].baseVal.value\n\t}\n\n\treturn element.getAttribute(property)\n}\n\nexport function setProperty(element, property, value)\n{\n\telement.setAttribute(property, value)\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/svg/utils.js","export function split(p, t=0.5)\n{\n\tconst seg0 = []\n\tconst seg1 = []\n\tconst orders = [p]\n\n\twhile(orders.length < p.length)\n\t{\n\t\tconst q = orders[orders.length - 1]\n\t\tconst r = []\n\n\t\tfor(let i = 1; i < q.length; i++)\n\t\t{\n\t\t\tconst q0 = q[i - 1]\n\t\t\tconst q1 = q[i]\n\t\t\tconst s = []\n\t\t\tconst dim = Math.max(q0.length, q1.length)\n\n\t\t\tfor(let j = 0; j < dim; j++)\n\t\t\t{\n\t\t\t\tconst s0 = q0[j] || 0\n\t\t\t\tconst s1 = q1[j] || 0\n\n\t\t\t\ts.push(s0 + (s1 - s0) * t)\n\t\t\t}\n\n\t\t\tr.push(s)\n\t\t}\n\n\t\torders.push(r)\n\t}\n\n\tfor(let i = 0; i < orders.length; i++)\n\t{\n\t\tseg0.push(orders[i][0])\n\t\tseg1.push(orders[orders.length - 1 - i][i])\n\t}\n\n\treturn [seg0, seg1]\n}\n\nexport function until(points, threshold, deltaFunction=euclideanDistance)\n{\n\tconst stack = [points]\n\tconst segments = []\n\n\twhile(stack.length > 0)\n\t{\n\t\tconst currentPoints = stack.pop()\n\n\t\tif(deltaFunction(currentPoints) > threshold)\n\t\t{\n\t\t\tconst newPoints = split(currentPoints)\n\n\t\t\t// Add new segments backwards so they end up in correct order\n\t\t\tfor(let i = newPoints.length - 1; i >= 0; i--)\n\t\t\t{\n\t\t\t\tstack.push(newPoints[i])\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tsegments.push(currentPoints)\n\t\t}\n\t}\n\n\treturn segments\n}\n\nexport function euclideanDistance(points)\n{\n\tconst startPoint = points[0]\n\tconst endPoint = points[points.length - 1]\n\tlet d2 = 0\n\n\tfor(let i = 0; i < startPoint.length; i++)\n\t{\n\t\tconst d = endPoint[i] - startPoint[i]\n\t\td2 += d**2\n\t}\n\n\treturn Math.sqrt(d2)\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/path/interpolate.js","import Warp from './Warp'\nexport default Warp\n\n\n\n// WEBPACK FOOTER //\n// ./src/main.js","import { shapesToPaths, preparePaths } from './svg/normalize'\nimport { getProperty, setProperty } from './svg/utils'\nimport pathParser from './path/parser'\nimport pathEncoder from './path/encoder'\nimport { euclideanDistance } from './path/interpolate'\nimport warpTransform from './warp/transform'\nimport warpInterpolate from './warp/interpolate'\nimport warpExtrapolate from './warp/extrapolate'\n\nexport default class Warp\n{\n\tconstructor(element, curveType='q')\n\t{\n\t\tthis.element = element\n\n\t\tshapesToPaths(element)\n\t\tpreparePaths(element, curveType)\n\n\t\tconst pathElements = Array.from(element.querySelectorAll('path'))\n\n\t\tthis.paths = pathElements.map(pathElement =>\n\t\t{\n\t\t\tconst pathString = getProperty(pathElement, 'd')\n\t\t\tconst pathData = pathParser(pathString)\n\n\t\t\treturn { pathElement, pathData }\n\t\t})\n\t}\n\n\tupdate()\n\t{\n\t\tfor (let { pathElement, pathData } of this.paths)\n\t\t{\n\t\t\tconst pathString = pathEncoder(pathData)\n\t\t\tsetProperty(pathElement, 'd', pathString)\n\t\t}\n\t}\n\n\ttransform(transformers)\n\t{\n\t\ttransformers = Array.isArray(transformers) ? transformers : [ transformers ]\n\n\t\tfor (let path of this.paths)\n\t\t{\n\t\t\tpath.pathData = warpTransform(path.pathData, transformers)\n\t\t}\n\n\t\tthis.update()\n\t}\n\n\tinterpolate(threshold)\n\t{\n\t\tlet didWork = false\n\n\t\tfunction deltaFunction(points)\n\t\t{\n\t\t\tconst linearPoints = [\n\t\t\t\tpoints[0].slice(0, 2),\n\t\t\t\tpoints[points.length - 1].slice(0, 2),\n\t\t\t]\n\n\t\t\tconst delta = euclideanDistance(linearPoints)\n\t\t\tdidWork = didWork || (delta > threshold)\n\n\t\t\treturn delta\n\t\t}\n\n\t\tfor (let path of this.paths)\n\t\t{\n\t\t\tpath.pathData = warpInterpolate(path.pathData, threshold, deltaFunction)\n\t\t}\n\n\t\treturn didWork\n\t}\n\n\textrapolate(threshold)\n\t{\n\t\tlet didWork = false\n\n\t\tfunction deltaFunction(points)\n\t\t{\n\t\t\tconst linearPoints = [\n\t\t\t\tpoints[0].slice(0, 2),\n\t\t\t\tpoints[points.length - 1].slice(0, 2),\n\t\t\t]\n\n\t\t\tconst delta = euclideanDistance(linearPoints)\n\t\t\tdidWork = didWork || (delta <= threshold)\n\n\t\t\treturn delta\n\t\t}\n\n\t\tfor (let path of this.paths)\n\t\t{\n\t\t\tpath.pathData = warpExtrapolate(path.pathData, threshold, deltaFunction)\n\t\t}\n\n\t\treturn didWork\n\t}\n\n\tpreInterpolate(transformer, threshold)\n\t{\n\t\tlet didWork = false\n\n\t\tfunction deltaFunction(points)\n\t\t{\n\t\t\tconst linearPoints = [\n\t\t\t\tpoints[0].slice(0, 2),\n\t\t\t\tpoints[points.length - 1].slice(0, 2),\n\t\t\t]\n\n\t\t\tconst delta = euclideanDistance(linearPoints)\n\t\t\tdidWork = didWork || (delta > threshold)\n\n\t\t\treturn delta\n\t\t}\n\n\t\tfor (let path of this.paths)\n\t\t{\n\t\t\tconst transformed = warpTransform(path.pathData, function(points)\n\t\t\t{\n\t\t\t\tconst newPoints = transformer(points.slice(0, 2))\n\t\t\t\tnewPoints.push(...points)\n\n\t\t\t\treturn newPoints\n\t\t\t})\n\n\t\t\tconst interpolated = warpInterpolate(transformed, threshold, deltaFunction)\n\n\t\t\tpath.pathData = warpTransform(interpolated, points => points.slice(2))\n\t\t}\n\n\t\treturn didWork\n\t}\n\n\tpreExtrapolate(transformer, threshold)\n\t{\n\t\tlet didWork = false\n\n\t\tfunction deltaFunction(points)\n\t\t{\n\t\t\tconst linearPoints = [\n\t\t\t\tpoints[0].slice(0, 2),\n\t\t\t\tpoints[points.length - 1].slice(0, 2),\n\t\t\t]\n\t\t\t\n\t\t\tconst delta = euclideanDistance(linearPoints)\n\t\t\tdidWork = didWork || (delta <= threshold)\n\n\t\t\treturn delta\n\t\t}\n\n\t\tfor (let path of this.paths)\n\t\t{\n\t\t\tconst transformed = warpTransform(path.pathData, function(points)\n\t\t\t{\n\t\t\t\tconst newPoints = transformer(points.slice(0, 2))\n\t\t\t\tnewPoints.push(...points)\n\n\t\t\t\treturn newPoints\n\t\t\t})\n\n\t\t\tconst extrapolated = warpExtrapolate(transformed, threshold, deltaFunction)\n\n\t\t\tpath.pathData = warpTransform(extrapolated, points => points.slice(2))\n\t\t}\n\n\t\treturn didWork\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/Warp.js","import pathParser from '../path/parser'\nimport pathEncoder from '../path/encoder'\nimport pathTransform from '../path/transform'\nimport absoluteTransformer from '../path/transformers/absolute'\nimport shortToLongTransformer from '../path/transformers/short-to-long'\nimport hvzToLineTransformer from '../path/transformers/hvz-to-line'\nimport lineToCurveTransformer from '../path/transformers/line-to-curve'\nimport arcToCurveTransformer from '../path/transformers/arc-to-curve'\nimport * as pathShape from '../path/shape'\nimport { createElement, getProperty, setProperty } from './utils'\n\nexport function shapesToPaths(element)\n{\n\tconst shapeMap = {\n\n\t\tline(shapeElement)\n\t\t{\n\t\t\treturn pathShape.line(\n\t\t\t\tgetProperty(shapeElement, 'x1'),\n\t\t\t\tgetProperty(shapeElement, 'y1'),\n\t\t\t\tgetProperty(shapeElement, 'x2'),\n\t\t\t\tgetProperty(shapeElement, 'y2')\n\t\t\t)\n\t\t},\n\n\t\tpolyline(shapeElement)\n\t\t{\n\t\t\treturn pathShape.polyline(...shapeElement.points)\n\t\t},\n\n\t\tpolygon(shapeElement)\n\t\t{\n\t\t\treturn pathShape.polygon(...shapeElement.points)\n\t\t},\n\n\t\trect(shapeElement)\n\t\t{\n\t\t\treturn pathShape.rectangle(\n\t\t\t\tgetProperty(shapeElement, 'x'),\n\t\t\t\tgetProperty(shapeElement, 'y'),\n\t\t\t\tgetProperty(shapeElement, 'width'),\n\t\t\t\tgetProperty(shapeElement, 'height'),\n\t\t\t\tgetProperty(shapeElement, 'rx'),\n\t\t\t\tgetProperty(shapeElement, 'ry')\n\t\t\t)\n\t\t},\n\n\t\tellipse(shapeElement)\n\t\t{\n\t\t\treturn pathShape.ellipse(\n\t\t\t\tgetProperty(shapeElement, 'cx'),\n\t\t\t\tgetProperty(shapeElement, 'cy'),\n\t\t\t\tgetProperty(shapeElement, 'rx'),\n\t\t\t\tgetProperty(shapeElement, 'ry')\n\t\t\t)\n\t\t},\n\n\t\tcircle(shapeElement)\n\t\t{\n\t\t\treturn pathShape.circle(\n\t\t\t\tgetProperty(shapeElement, 'cx'),\n\t\t\t\tgetProperty(shapeElement, 'cy'),\n\t\t\t\tgetProperty(shapeElement, 'r')\n\t\t\t)\n\t\t},\n\t}\n\n\tconst shapeElements = element.querySelectorAll(Object.keys(shapeMap).join(','))\n\n\tfor (let shapeElement of shapeElements)\n\t{\n\t\tconst shapeName = shapeElement.tagName.toLowerCase()\n\n\t\tif (shapeName in shapeMap)\n\t\t{\n\t\t\tconst path = shapeMap[shapeName](shapeElement)\n\t\t\tconst pathString = pathEncoder(path)\n\t\t\tconst attributes = { d: pathString }\n\n\t\t\tfor (let attribute of Array.from(shapeElement.attributes))\n\t\t\t{\n\t\t\t\tconst name = attribute.nodeName\n\t\t\t\tconst value = attribute.nodeValue\n\n\t\t\t\t// Avoid dimensional properties\n\t\t\t\tif (!/^(x|y|x1|y1|x2|y2|width|height|r|rx|ry|cx|cy|points|d)$/.test(name))\n\t\t\t\t{\n\t\t\t\t\tattributes[name] = value\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst pathElement = createElement('path', attributes)\n\t\t\tshapeElement.parentNode.replaceChild(pathElement, shapeElement)\n\t\t}\n\t}\n}\n\nexport function preparePaths(element, curveType='q')\n{\n\tconst pathElements = Array.from(element.querySelectorAll('path'))\n\n\tfor (let pathElement of pathElements)\n\t{\n\t\tlet pathString = getProperty(pathElement, 'd')\n\t\tlet path = pathParser(pathString)\n\n\t\tpath = pathTransform(path, absoluteTransformer())\n\t\tpath = pathTransform(path, shortToLongTransformer())\n\t\tpath = pathTransform(path, hvzToLineTransformer())\n\t\tpath = pathTransform(path, lineToCurveTransformer(curveType))\n\t\tpath = pathTransform(path, arcToCurveTransformer())\n\t\t\n\t\tpathString = pathEncoder(path)\n\n\t\tsetProperty(pathElement, 'd', pathString)\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/svg/normalize.js","import { isDrawingSegment } from '../utils'\n\nexport default function absoluteGenerator()\n{\n\tconst xProps = ['x', 'x1', 'x2']\n\tconst yProps = ['y', 'y1', 'y2']\n\tconst drawingCmdExpr = /[lhvcsqta]/\n\n\tlet prevX = 0\n\tlet prevY = 0\n\tlet pathStartX = NaN\n\tlet pathStartY = NaN\n\n\treturn function absolute(segment)\n\t{\n\t\tif(isNaN(pathStartX) && isDrawingSegment(segment))\n\t\t{\n\t\t\tpathStartX = prevX\n\t\t\tpathStartY = prevY\n\t\t}\n\n\t\tif(segment.type === 'z' && !isNaN(pathStartX))\n\t\t{\n\t\t\tprevX = pathStartX\n\t\t\tprevY = pathStartY\n\t\t\tpathStartX = NaN\n\t\t\tpathStartY = NaN\n\t\t}\n\n\t\tif(segment.relative)\n\t\t{\n\t\t\tfor(let x of xProps)\n\t\t\t{\n\t\t\t\tif(x in segment)\n\t\t\t\t{\n\t\t\t\t\tsegment[x] += prevX\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor(let y of yProps)\n\t\t\t{\n\t\t\t\tif(y in segment)\n\t\t\t\t{\n\t\t\t\t\tsegment[y] += prevY\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tsegment.relative = false\n\t\t}\n\t\t\n\t\tprevX = ('x' in segment ? segment.x : prevX)\n\t\tprevY = ('y' in segment ? segment.y : prevY)\n\n\t\tif(segment.type === 'm')\n\t\t{\n\t\t\tpathStartX = prevX\n\t\t\tpathStartY = prevY\n\t\t}\n\n\t\treturn segment\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/path/transformers/absolute.js","export default function shortToLongGenerator()\n{\n\tlet prevX = 0\n\tlet prevY = 0\n\tlet pathStartX = NaN\n\tlet pathStartY = NaN\n\tlet prevCurveC2X = NaN\n\tlet prevCurveC2Y = NaN\n\tlet prevQuadCX = NaN\n\tlet prevQuadCY = NaN\n\n\treturn function shortToLong(segment)\n\t{\n\t\tif(isNaN(pathStartX) && segment.type !== 'm')\n\t\t{\n\t\t\tthrow new Error(`Transform path error: path must start with \"moveto\"`)\n\t\t}\n\t\t\n\t\tif(segment.type === 's')\n\t\t{\n\t\t\tprevCurveC2X = isNaN(prevCurveC2X) ? prevX : prevCurveC2X\n\t\t\tprevCurveC2Y = isNaN(prevCurveC2Y) ? prevY : prevCurveC2Y\n\n\t\t\tsegment.type = 'c'\n\t\t\tsegment.x1 = (segment.relative ? 1 : 2) * prevX - prevCurveC2X\n\t\t\tsegment.y1 = (segment.relative ? 1 : 2) * prevY - prevCurveC2Y\n\t\t}\n\n\t\tif(segment.type === 'c')\n\t\t{\n\t\t\tprevCurveC2X = (segment.relative ? prevX : 0) + segment.x2\n\t\t\tprevCurveC2Y = (segment.relative ? prevY : 0) + segment.y2\n\t\t}\n\t\telse\n\t\t{\n\t\t\tprevCurveC2X = NaN\n\t\t\tprevCurveC2Y = NaN\n\t\t}\n\n\t\tif(segment.type === 't')\n\t\t{\n\t\t\tprevQuadCX = isNaN(prevQuadCX) ? prevX : prevQuadCX\n\t\t\tprevQuadCY = isNaN(prevQuadCY) ? prevY : prevQuadCY\n\n\t\t\tsegment.type = 'q'\n\t\t\tsegment.x1 = (segment.relative ? 1 : 2) * prevX - prevQuadCX\n\t\t\tsegment.y1 = (segment.relative ? 1 : 2) * prevY - prevQuadCY\n\t\t}\n\n\t\tif(segment.type === 'q')\n\t\t{\n\t\t\tprevQuadCX = (segment.relative ? prevX : 0) + segment.x1\n\t\t\tprevQuadCY = (segment.relative ? prevY : 0) + segment.y1\n\t\t}\n\t\telse\n\t\t{\n\t\t\tprevQuadCX = NaN\n\t\t\tprevQuadCY = NaN\n\t\t}\n\n\t\tif(segment.type === 'z')\n\t\t{\n\t\t\tprevX = pathStartX\n\t\t\tprevY = pathStartY\n\t\t}\n\n\t\tprevX = ('x' in segment ? (segment.relative ? prevX : 0) + segment.x : prevX)\n\t\tprevY = ('y' in segment ? (segment.relative ? prevY : 0) + segment.y : prevY)\n\n\t\tif(segment.type === 'm')\n\t\t{\n\t\t\tpathStartX = prevX\n\t\t\tpathStartY = prevY\n\t\t}\n\n\t\treturn segment\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/path/transformers/short-to-long.js","export default function hvzToLineGenerator()\n{\n\tlet prevX = 0\n\tlet prevY = 0\n\tlet pathStartX = NaN\n\tlet pathStartY = NaN\n\n\treturn function hvzToLine(segment)\n\t{\n\t\tif(isNaN(pathStartX) && segment.type !== 'm')\n\t\t{\n\t\t\tthrow new Error(`Transform path error: path must start with \"moveto\"`)\n\t\t}\n\t\t\n\t\tswitch(segment.type)\n\t\t{\n\t\t\tcase 'h':\n\t\t\t{\n\t\t\t\tsegment.type = 'l'\n\t\t\t\tsegment.y = (segment.relative ? 0 : prevY)\n\t\t\t}\n\t\t\tbreak\n\t\t\tcase 'v':\n\t\t\t{\n\t\t\t\tsegment.type = 'l'\n\t\t\t\tsegment.x = (segment.relative ? 0 : prevX)\n\t\t\t}\n\t\t\tbreak\n\t\t\tcase 'z':\n\t\t\t{\n\t\t\t\tsegment.type = 'l'\n\t\t\t\tsegment.x = pathStartX - (segment.relative ? prevX : 0)\n\t\t\t\tsegment.y = pathStartY - (segment.relative ? prevY : 0)\n\t\t\t}\n\t\t\tbreak\n\t\t\tcase 'a':\n\t\t\t{\n\t\t\t\tif(segment.rx === 0 || segment.ry === 0)\n\t\t\t\t{\n\t\t\t\t\tsegment.type = 'l'\n\n\t\t\t\t\tdelete segment.rx\n\t\t\t\t\tdelete segment.ry\n\t\t\t\t\tdelete segment.xRotation\n\t\t\t\t\tdelete segment.largeArc\n\t\t\t\t\tdelete segment.sweep\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\n\t\tprevX = (segment.relative ? prevX : 0) + segment.x\n\t\tprevY = (segment.relative ? prevY : 0) + segment.y\n\n\t\tif(segment.type === 'm')\n\t\t{\n\t\t\tpathStartX = prevX\n\t\t\tpathStartY = prevY\n\t\t}\n\n\t\treturn segment\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/path/transformers/hvz-to-line.js","import { isDrawingSegment } from '../utils'\n\nexport default function lineToCurveGenerator(curveType='q')\n{\n\tlet prevX = 0\n\tlet prevY = 0\n\tlet pathStartX = NaN\n\tlet pathStartY = NaN\n\n\treturn function lineToCurve(segment)\n\t{\n\t\tif(isNaN(pathStartX) && isDrawingSegment(segment.type))\n\t\t{\n\t\t\tpathStartX = prevX\n\t\t\tpathStartY = prevY\n\t\t}\n\n\t\tif(segment.type === 'z' && !isNaN(pathStartX))\n\t\t{\n\t\t\tprevX = pathStartX\n\t\t\tprevY = pathStartY\n\t\t\tpathStartX = NaN\n\t\t\tpathStartY = NaN\n\t\t}\n\n\t\tif(segment.type === 'l')\n\t\t{\n\t\t\tconst startX = (segment.relative ? 0 : prevX)\n\t\t\tconst startY = (segment.relative ? 0 : prevY)\n\n\t\t\tsegment.type = curveType\n\n\t\t\tswitch(curveType)\n\t\t\t{\n\t\t\t\tcase 'q':\n\t\t\t\t{\n\t\t\t\t\tsegment.x1 = (startX + segment.x) / 2\n\t\t\t\t\tsegment.y1 = (startY + segment.y) / 2\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t\tcase 'c':\n\t\t\t\t{\n\t\t\t\t\tconst offsetX = (segment.x - startX) / 3\n\t\t\t\t\tconst offsetY = (segment.y - startY) / 3\n\n\t\t\t\t\tsegment.x1 = startX + offsetX\n\t\t\t\t\tsegment.y1 = startY + offsetY\n\t\t\t\t\tsegment.x2 = startX + 2 * offsetX\n\t\t\t\t\tsegment.y2 = startY + 2 * offsetY\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t\tdefault:\n\t\t\t\t{\n\t\t\t\t\tthrow new Error(`Invalid curve type \"${curveType}\"`)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tprevX = ('x' in segment ? (segment.relative ? prevX : 0) + segment.x : prevX)\n\t\tprevY = ('y' in segment ? (segment.relative ? prevY : 0) + segment.y : prevY)\n\n\t\tif(segment.type === 'm')\n\t\t{\n\t\t\tpathStartX = prevX\n\t\t\tpathStartY = prevY\n\t\t}\n\n\t\treturn segment\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/path/transformers/line-to-curve.js","import { isDrawingSegment } from '../utils'\n\nexport default function arcToCurveGenerator()\n{\n\tlet prevX = 0\n\tlet prevY = 0\n\tlet pathStartX = NaN\n\tlet pathStartY = NaN\n\n\treturn function arcToCurve(segment)\n\t{\n\t\tlet segments = segment\n\n\t\tif(isNaN(pathStartX) && isDrawingSegment(segment.type))\n\t\t{\n\t\t\tpathStartX = prevX\n\t\t\tpathStartY = prevY\n\t\t}\n\n\t\tif(segment.type === 'z' && !isNaN(pathStartX))\n\t\t{\n\t\t\tprevX = pathStartX\n\t\t\tprevY = pathStartY\n\t\t\tpathStartX = NaN\n\t\t\tpathStartY = NaN\n\t\t}\n\n\t\tif(segment.type === 'a')\n\t\t{\n\t\t\tconst startX = (segment.relative ? 0 : prevX)\n\t\t\tconst startY = (segment.relative ? 0 : prevY)\n\t\t\tconst { rx, ry, xRotation, largeArc, sweep, x, y } = segment\n\t\t\tconst curveSegments = converter(startX, startY, rx, ry, xRotation, largeArc, sweep, x, y)\n\t\t\t\n\t\t\tlet prevCurveX = 0\n\t\t\tlet prevCurveY = 0\n\n\t\t\tfor(let curveSegment of curveSegments)\n\t\t\t{\n\t\t\t\tcurveSegment.relative = segment.relative\n\n\t\t\t\tif(segment.relative && curveSegment.type === 'c')\n\t\t\t\t{\n\t\t\t\t\tcurveSegment.x -= prevCurveX\n\t\t\t\t\tcurveSegment.x1 -= prevCurveX\n\t\t\t\t\tcurveSegment.x2 -= prevCurveX\n\t\t\t\t\tcurveSegment.y -= prevCurveY\n\t\t\t\t\tcurveSegment.y1 -= prevCurveY\n\t\t\t\t\tcurveSegment.y2 -= prevCurveY\n\t\t\t\t}\n\n\t\t\t\tprevCurveX = curveSegment.x\n\t\t\t\tprevCurveY = curveSegment.y\n\t\t\t}\n\n\t\t\tsegments = curveSegments\n\t\t}\n\n\t\tprevX = ('x' in segment ? (segment.relative ? prevX : 0) + segment.x : prevX)\n\t\tprevY = ('y' in segment ? (segment.relative ? prevY : 0) + segment.y : prevY)\n\n\t\tif(segment.type === 'm')\n\t\t{\n\t\t\tpathStartX = prevX\n\t\t\tpathStartY = prevY\n\t\t}\n\n\t\treturn segments\n\t}\n}\n\nfunction converter(sx, sy, rx, ry, angle, large, sweep, x, y)\n{\n\tif(sx === x && sy === y)\n\t{\n\t\treturn []\n\t}\n\n\tif(!rx && !ry)\n\t{\n\t\treturn [ { type: 'l', x, y } ]\n\t}\n\n\tconst sinPhi = Math.sin(angle * Math.PI / 180)\n\tconst cosPhi = Math.cos(angle * Math.PI / 180)\n\n\tconst xd = cosPhi * (sx - x) / 2 + sinPhi * (sy - y) / 2\n\tconst yd = -sinPhi * (sx - x) / 2 + cosPhi * (sy - y) / 2\n\n\tconst rx2 = rx * rx\n\tconst ry2 = ry * ry\n\n\tconst xd2 = xd * xd\n\tconst yd2 = yd * yd\n\n\tlet root = 0\n\tconst numerator = rx2 * ry2 - rx2 * yd2 - ry2 * xd2\n\n\tif(numerator < 0)\n\t{\n\t\tconst s = Math.sqrt(1 - numerator / (rx2 * ry2))\n\n\t\trx *= s\n\t\try *= s\n\t}\n\telse\n\t{\n\t\troot = ((large && sweep) || (!large && !sweep) ? -1 : 1) * Math.sqrt(numerator / (rx2 * yd2 + ry2 * xd2))\n\t}\n\n\tconst cxd = root * rx * yd / ry\n\tconst cyd = -root * ry * xd / rx\n\n\tconst cx = cosPhi * cxd - sinPhi * cyd + (sx + x) / 2\n\tconst cy = sinPhi * cxd + cosPhi * cyd + (sy + y) / 2\n\n\tlet theta1 = angleBetween(1, 0, (xd - cxd) / rx, (yd - cyd) / ry)\n\tlet dtheta = angleBetween((xd - cxd) / rx, (yd - cyd) / ry, (-xd - cxd) / rx, (-yd - cyd) / ry)\n\n\tif(!sweep && dtheta > 0)\n\t{\n\t\tdtheta -= Math.PI * 2\n\t}\n\telse if(sweep && dtheta < 0)\n\t{\n\t\tdtheta += Math.PI * 2\n\t}\n\n\tconst segments = []\n\tconst numSegs = Math.ceil(Math.abs(dtheta / (Math.PI / 2)))\n\tconst delta = dtheta / numSegs\n\tconst t = 8 / 3 * Math.sin(delta / 4) * Math.sin(delta / 4) / Math.sin(delta / 2)\n\n\tfor(let i = 0; i < numSegs; i++)\n\t{\n\t\tconst cosTheta1 = Math.cos(theta1)\n\t\tconst sinTheta1 = Math.sin(theta1)\n\t\tconst theta2 = theta1 + delta\n\t\tconst cosTheta2 = Math.cos(theta2)\n\t\tconst sinTheta2 = Math.sin(theta2)\n\n\t\tconst epx = cosPhi * rx * cosTheta2 - sinPhi * ry * sinTheta2 + cx\n\t\tconst epy = sinPhi * rx * cosTheta2 + cosPhi * ry * sinTheta2 + cy\n\n\t\tconst dx = t * (-cosPhi * rx * sinTheta1 - sinPhi * ry * cosTheta1)\n\t\tconst dy = t * (-sinPhi * rx * sinTheta1 + cosPhi * ry * cosTheta1)\n\n\t\tconst dxe = t * (cosPhi * rx * sinTheta2 + sinPhi * ry * cosTheta2)\n\t\tconst dye = t * (sinPhi * rx * sinTheta2 - cosPhi * ry * cosTheta2)\n\n\t\tsegments.push({\n\t\t\ttype: 'c',\n\t\t\tx: epx,\n\t\t\ty: epy,\n\t\t\tx1: sx + dx,\n\t\t\ty1: sy + dy,\n\t\t\tx2: epx + dxe,\n\t\t\ty2: epy + dye,\n\t\t})\n\n\t\ttheta1 = theta2\n\t\tsx = epx\n\t\tsy = epy\n\t}\n\n\treturn segments\n}\n\nfunction angleBetween(ux, uy, vx, vy)\n{\n\tconst ta = Math.atan2(uy, ux)\n\tconst tb = Math.atan2(vy, vx)\n\n\tif(tb >= ta)\n\t{\n\t\treturn tb - ta\n\t}\n\n\treturn Math.PI * 2 - (ta - tb)\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/path/transformers/arc-to-curve.js","export function line(x1, y1, x2, y2)\n{\n\tconst relative = false\n\n\treturn [\n\t\t{ type: 'm', relative, x: x1, y: y1 },\n\t\t{ type: 'l', relative, x: x2, y: y2 },\n\t]\n}\n\nexport function polyline(...points)\n{\n\treturn points.map((p, i) => ({\n\t\ttype: i === 0 ? 'm' : 'l',\n\t\trelative: false,\n\t\tx: p.x || p[0],\n\t\ty: p.y || p[1],\n\t}))\n}\n\nexport function polygon(...points)\n{\n\tconst path = polyline(...points)\n\tpath.append({ type: 'z', relative: false })\n\n\treturn path\n}\n\nexport function rectangle(x, y, width, height, rx=0, ry=0)\n{\n\tconst relative = false\n\tlet path\n\n\tif(rx > 0 || ry > 0)\n\t{\n\t\t// If one of the properties is not defined or zero, then it's just given the value of the other\n\t\trx = rx || ry\n\t\try = ry || rx\n\n\t\tconst xRotation = 0\n\t\tconst largeArc = false\n\t\tconst sweep = true\n\n\t\tpath = [\n\t\t\t{ type: 'm', relative, x: x + rx, y },\n\t\t\t{ type: 'h', relative, x: x + width - rx },\n\t\t\t{ type: 'a', relative, rx, ry, xRotation, largeArc, sweep, x: x + width, y: y + ry },\n\t\t\t{ type: 'v', relative, y: y + height - ry },\n\t\t\t{ type: 'a', relative, rx, ry, xRotation, largeArc, sweep, x: x + width - rx, y: y + height },\n\t\t\t{ type: 'h', relative, x: x + rx },\n\t\t\t{ type: 'a', relative, rx, ry, xRotation, largeArc, sweep, x, y: y + height - ry },\n\t\t\t{ type: 'v', relative, y: y + ry },\n\t\t\t{ type: 'a', relative, rx, ry, xRotation, largeArc, sweep, x: x + rx, y },\n\t\t]\n\t}\n\telse\n\t{\n\t\tpath = [\n\t\t\t{ type: 'm', relative, x, y },\n\t\t\t{ type: 'h', relative, x: x + width },\n\t\t\t{ type: 'v', relative, y: y + height },\n\t\t\t{ type: 'h', relative, x },\n\t\t\t{ type: 'v', relative, y },\n\t\t]\n\t}\n\n\treturn path\n}\n\nexport function ellipse(cx, cy, rx, ry)\n{\n\tconst relative = false\n\tconst xRotation = 0\n\tconst largeArc = false\n\tconst sweep = true\n\n\treturn [\n\t\t{ type: 'm', relative, x: cx, y: cy - ry },\n\t\t{ type: 'a', relative, rx, ry, xRotation, largeArc, sweep, x: cx, y: cy + ry },\n\t\t{ type: 'a', relative, rx, ry, xRotation, largeArc, sweep, x: cx, y: cy - ry },\n\t]\n}\n\nexport function circle(cx, cy, r)\n{\n\treturn ellipse(cx, cy, r, r)\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/path/shape.js","import pathTransform from '../path/transform'\nimport { pointGroups } from '../path/utils'\n\nexport default function transform(path, transformers)\n{\n\treturn pathTransform(path, (segment) =>\n\t{\n\t\tfor (let i = 0; i < pointGroups.length; i++)\n\t\t{\n\t\t\tconst [ x, y ] = pointGroups[i]\n\n\t\t\tif (x in segment && y in segment)\n\t\t\t{\n\t\t\t\tconst extendedPoints = (segment.extended ? segment.extended[i] : null) || []\n\t\t\t\tconst oldPoints = [ segment[x], segment[y], ...extendedPoints ]\n\t\t\t\tconst newPoints = transformers.reduce((points, transformer) => transformer(points), oldPoints)\n\n\t\t\t\tif (newPoints.length < 2)\n\t\t\t\t{\n\t\t\t\t\tthrow new Error(`Transformer must return at least 2 points`)\n\t\t\t\t}\n\n\t\t\t\tsegment[x] = newPoints[0]\n\t\t\t\tsegment[y] = newPoints[1]\n\n\t\t\t\tif (newPoints.length > 2)\n\t\t\t\t{\n\t\t\t\t\tsegment.extended = segment.extended || {}\n\t\t\t\t\tsegment.extended[i] = newPoints.slice(2)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn segment\n\t})\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/warp/transform.js","import pathTransform from '../path/transform'\nimport { until as interpolateUntil } from '../path/interpolate'\nimport { createLineSegment, pointGroups } from '../path/utils'\n\nconst interpolationTypesExpr = /[lqc]/\n\nexport default function interpolate(path, threshold, deltaFunction)\n{\n\tlet prevPoints = []\n\n\treturn pathTransform(path, function(segment)\n\t{\n\t\tlet segments = segment\n\n\t\tif(interpolationTypesExpr.test(segment.type))\n\t\t{\n\t\t\tconst points = [prevPoints]\n\n\t\t\tfor(let j = 0; j < pointGroups.length; j++)\n\t\t\t{\n\t\t\t\tconst [x, y] = pointGroups[j]\n\n\t\t\t\tif(x in segment && y in segment)\n\t\t\t\t{\n\t\t\t\t\tconst extendedPoints = (segment.extended ? segment.extended[j] : null) || []\n\t\t\t\t\tconst pointList = [segment[x], segment[y], ...extendedPoints]\n\n\t\t\t\t\tpoints.push(pointList)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst rawSegments = interpolateUntil(points, threshold, deltaFunction)\n\n\t\t\tif(rawSegments.length > 1)\n\t\t\t{\n\t\t\t\tsegments = rawSegments.map(rawSegment => createLineSegment(rawSegment))\n\t\t\t}\n\t\t}\n\n\t\tif('x' in segment && 'y' in segment)\n\t\t{\n\t\t\tconst extendedPoints = (segment.extended ? segment.extended[2] : null) || []\n\t\t\tconst pointList = [segment.x, segment.y, ...extendedPoints]\n\n\t\t\tprevPoints = pointList\n\t\t}\n\n\t\treturn segments\n\t})\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/warp/interpolate.js","import pathTransform from '../path/transform'\nimport { joinSegments, pointGroups } from '../path/utils'\n\nconst extrapolationTypesExpr = /[lqc]/\n\nexport default function extrapolate(path, threshold, deltaFunction)\n{\n\treturn pathTransform(path, function(segment, i, oldPath, newPath)\n\t{\n\t\tif(i > 1)\n\t\t{\n\t\t\tconst prevSegment = newPath[newPath.length - 1]\n\t\t\tconst prevSegment2 = newPath[newPath.length - 2]\n\n\t\t\tif(extrapolationTypesExpr.test(segment.type) && prevSegment.type === segment.type)\n\t\t\t{\n\t\t\t\tconst points = [\n\t\t\t\t\t[prevSegment2.x, prevSegment2.y],\n\t\t\t\t\t[segment.x, segment.y],\n\t\t\t\t]\n\n\t\t\t\tif(deltaFunction(points) <= threshold)\n\t\t\t\t{\n\t\t\t\t\tconst newSegment = joinSegments(prevSegment, segment)\n\n\t\t\t\t\tif(newSegment)\n\t\t\t\t\t{\n\t\t\t\t\t\tnewPath[newPath.length - 1] = newSegment\n\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn segment\n\t})\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/warp/extrapolate.js"],"sourceRoot":""} \ No newline at end of file diff --git a/package.json b/package.json index 19c0c4a..537e38e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "warpjs", - "version": "1.0.6", + "version": "1.0.7", "description": "Warp, distort, bend, twist and smudge your SVG's directly in the browser", "main": "dist/warp.js", "files": [