From 389fafc96b8057472aafa822caa791a50ea85cb8 Mon Sep 17 00:00:00 2001 From: Benjamin Fleming Date: Sun, 3 Dec 2017 10:25:14 +1100 Subject: [PATCH] Compiled changes for release --- dist/warp.js | 2 +- dist/warp.js.map | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dist/warp.js b/dist/warp.js index f0cb45a..ee47124 100644 --- a/dist/warp.js +++ b/dist/warp.js @@ -1,2 +1,2 @@ -!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.i=function(e){return e},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=7)}([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;i1&&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){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;a0){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]:{},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){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";i(this,e),this.element=t,(0,l.shapesToPaths)(this.element),(0,l.preparePaths)(this.element,r);var n=t.querySelectorAll("path");this.paths=[].map.call(n,function(e){var t=(0,u.getProperty)(e,"d");return{element:e,data:(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=(0,v.default)(i.data);(0,u.setProperty)(i.element,"d",o)}}catch(e){t=!0,r=e}finally{try{!e&&a.return&&a.return()}finally{if(t)throw r}}}},{key:"transform",value:function(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.data=(0,d.default)(o.data,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=(0,s.euclideanDistance)(t.slice(0,2));return r=r||n>e,n}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.data=(0,x.default)(u.data,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=(0,s.euclideanDistance)(t.slice(0,2));return r=r||n<=e,n}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.data=(0,m.default)(u.data,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=(0,s.euclideanDistance)(e.slice(0,2));return n=n||r>t,r}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.data,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.data=(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=(0,s.euclideanDistance)(e.slice(0,2));return n=n||r<=t,r}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.data,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.data=(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";Object.defineProperty(t,"__esModule",{value:!0});var n=r(6),a=function(e){return e&&e.__esModule?e:{default:e}}(n);"undefined"!=typeof window&&(window.Warp=a.default),t.default=a.default},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(){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;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,w=!1,N=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){w=!0,N=e}finally{try{!b&&M.return&&M.return()}finally{if(w)throw N}}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 w=g*r*s/n,N=-g*n*v/r,P=c*w-f*N+(e+u)/2,M=f*w+c*N+(t+y)/2,_=i(1,0,(v-w)/r,(s-N)/n),S=i((v-w)/r,(s-N)/n,(-v-w)/r,(-s-N)/n);!l&&S>0?S-=2*Math.PI:l&&S<0&&(S+=2*Math.PI);for(var A=[],j=Math.ceil(Math.abs(S/(Math.PI/2))),O=S/j,k=8/3*Math.sin(O/4)*Math.sin(O/4)/Math.sin(O/2),q=0;q=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(){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,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(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=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,N.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(4),u=n(l),y=r(2),f=n(y),c=r(1),v=n(c),s=r(9),p=n(s),d=r(13),h=n(d),x=r(11),g=n(x),m=r(12),b=n(m),w=r(10),N=n(w),P=r(8),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(5)},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]/},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(3),y=r(0),f=/[lqc]/},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]=f.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){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 l(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(o.length%y.length!=0)throw new Error('Malformed path data: type "'+n+'" has '+o.length+" arguments, "+o.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=[],l=e.relative?e.type:e.type.toUpperCase(),o=r!==l,u=(0,i.getSegmentSchema)(e.type);o&&(t.push(l),r=l);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")}o||t.push(" "),t.push(h),o=!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,l=void 0;try{for(var o,u=Object.keys(t)[Symbol.iterator]();!(n=(o=u.next()).done);n=!0){var y=o.value;i(r,y,t[y])}}catch(e){a=!0,l=e}finally{try{!n&&u.return&&u.return()}finally{if(a)throw l}}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],l=[];a.length>0;){var o=a.pop();if(r(o)>t)for(var u=n(o),y=u.length-1;y>=0;y--)a.push(u[y]);else l.push(o)}return l}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,o.shapesToPaths)(this.element),(0,o.preparePaths)(this.element,r);var n=t.querySelectorAll("path");this.paths=[].map.call(n,function(e){var t=(0,u.getProperty)(e,"d");return{element:e,data:(0,f.default)(t)}})}return l(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,l=(0,v.default)(i.data);(0,u.setProperty)(i.element,"d",l)}}catch(e){t=!0,r=e}finally{try{!e&&a.return&&a.return()}finally{if(t)throw r}}}},{key:"transform",value:function(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 l=a.value;l.data=(0,d.default)(l.data,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 l,o=this.paths[Symbol.iterator]();!(n=(l=o.next()).done);n=!0){var u=l.value;u.data=(0,x.default)(u.data,e,t)}}catch(e){a=!0,i=e}finally{try{!n&&o.return&&o.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 l,o=this.paths[Symbol.iterator]();!(n=(l=o.next()).done);n=!0){var u=l.value;u.data=(0,m.default)(u.data,e,t)}}catch(e){a=!0,i=e}finally{try{!n&&o.return&&o.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,l=!1,o=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.data,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.data=(0,d.default)(v,function(e){return e.slice(2)})}}catch(e){l=!0,o=e}finally{try{!i&&y.return&&y.return()}finally{if(l)throw o}}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,l=!1,o=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.data,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.data=(0,d.default)(v,function(e){return e.slice(2)})}}catch(e){l=!0,o=e}finally{try{!i&&y.return&&y.return()}finally{if(l)throw o}}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=e.querySelectorAll("path"),n=!0,a=!1,i=void 0;try{for(var l,o=r[Symbol.iterator]();!(n=(l=o.next()).done);n=!0){var y=l.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,N.default)()),c=(0,f.default)(s),(0,_.setProperty)(y,"d",c)}}catch(e){a=!0,i=e}finally{try{!n&&o.return&&o.return()}finally{if(a)throw i}}}Object.defineProperty(t,"__esModule",{value:!0}),t.shapesToPaths=i,t.preparePaths=l;var o=r(2),u=n(o),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),w=r(13),N=n(w),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,l=NaN;return function(o){if(isNaN(i)&&(0,a.isDrawingSegment)(o)&&(i=r,l=n),"z"!==o.type||isNaN(i)||(r=i,n=l,i=NaN,l=NaN),o.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 o&&(o[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 o&&(o[m]+=n)}}catch(e){d=!0,h=e}finally{try{!p&&g.return&&g.return()}finally{if(d)throw h}}o.relative=!1}return r="x"in o?o.x:r,n="y"in o?o.y:n,"m"===o.type&&(i=r,l=n),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,a=NaN,i=NaN,l=NaN,o=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&&(l=isNaN(l)?e:l,o=isNaN(o)?t:o,u.type="q",u.x1=(u.relative?1:2)*e-l,u.y1=(u.relative?1:2)*t-o),"q"===u.type?(l=(u.relative?e:0)+u.x1,o=(u.relative?t:0)+u.y1):(l=NaN,o=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(l){if(isNaN(n)&&(0,a.isDrawingSegment)(l.type)&&(n=t,i=r),"z"!==l.type||isNaN(n)||(t=n,r=i,n=NaN,i=NaN),"l"===l.type){var o=l.relative?0:t,u=l.relative?0:r;switch(l.type=e,e){case"q":l.x1=(o+l.x)/2,l.y1=(u+l.y)/2;break;case"c":var y=(l.x-o)/3,f=(l.y-u)/3;l.x1=o+y,l.y1=u+f,l.x2=o+2*y,l.y2=u+2*f;break;default:throw new Error('Invalid curve type "'+e+'"')}}return t="x"in l?(l.relative?t:0)+l.x:t,r="y"in l?(l.relative?r:0)+l.y:r,"m"===l.type&&(n=t,i=r),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;return function(i){var o=i;if(isNaN(r)&&(0,l.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,w=!1,N=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){w=!0,N=e}finally{try{!b&&M.return&&M.return()}finally{if(w)throw N}}o=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),o}}function a(e,t,r,n,a,l,o,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=(l&&o||!l&&!o?-1:1)*Math.sqrt(m/(p*x+d*h));var w=g*r*s/n,N=-g*n*v/r,P=c*w-f*N+(e+u)/2,M=f*w+c*N+(t+y)/2,_=i(1,0,(v-w)/r,(s-N)/n),S=i((v-w)/r,(s-N)/n,(-v-w)/r,(-s-N)/n);!o&&S>0?S-=2*Math.PI:o&&S<0&&(S+=2*Math.PI);for(var A=[],j=Math.ceil(Math.abs(S/(Math.PI/2))),O=S/j,k=8/3*Math.sin(O/4)*Math.sin(O/4)/Math.sin(O/2),q=0;q=a?i-a:2*Math.PI-(a-i)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=n;var l=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,l=void 0;if(a>0||i>0){a=a||i,i=i||a;l=[{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 l=[{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 l}function o(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 o(e,t,r,r)}Object.defineProperty(t,"__esModule",{value:!0}),t.line=n,t.polyline=a,t.polygon=i,t.rectangle=l,t.ellipse=o,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]=f.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 l,o=e[Symbol.iterator]();!(n=(l=o.next()).done)&&(r.push(l.value),!t||r.length!==t);n=!0);}catch(e){a=!0,i=e}finally{try{!n&&o.return&&o.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 l=r(1),o=function(e){return e&&e.__esModule?e:{default:e}}(l),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&&(l=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 l})}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 l,o=e[Symbol.iterator]();!(n=(l=o.next()).done)&&(r.push(l.value),!t||r.length!==t);n=!0);}catch(e){a=!0,i=e}finally{try{!n&&o.return&&o.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 l=r(1),o=function(e){return e&&e.__esModule?e:{default:e}}(l),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(o.test(e.type)&&u.type===e.type){var f=[[y.x,y.y],[e.x,e.y]];if(r(f)<=t){var c=(0,l.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),l=r(0),o=/[lqc]/}]); //# sourceMappingURL=warp.js.map \ No newline at end of file diff --git a/dist/warp.js.map b/dist/warp.js.map index e13c9a5..06377e5 100644 --- a/dist/warp.js.map +++ b/dist/warp.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///warp.js","webpack:///webpack/bootstrap a763163db3045e275691","webpack:///./src/path/utils.js","webpack:///./src/path/transform.js","webpack:///./src/path/encoder.js","webpack:///./src/path/interpolate.js","webpack:///./src/path/parser.js","webpack:///./src/svg/utils.js","webpack:///./src/Warp.js","webpack:///./src/main.js","webpack:///./src/path/shape.js","webpack:///./src/path/transformers/absolute.js","webpack:///./src/path/transformers/arc-to-curve.js","webpack:///./src/path/transformers/hvz-to-line.js","webpack:///./src/path/transformers/line-to-curve.js","webpack:///./src/path/transformers/short-to-long.js","webpack:///./src/svg/normalize.js","webpack:///./src/warp/extrapolate.js","webpack:///./src/warp/interpolate.js","webpack:///./src/warp/transform.js"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","i","l","call","m","c","value","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","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","encoder","pathData","precision","arguments","prevType","magnitude","map","output","outputType","toUpperCase","first","schema","_utils","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","outputValue","_typeof","Error","return","join","obj","constructor","split","seg0","seg1","orders","r","q0","q1","dim","max","j","s0","s1","until","threshold","deltaFunction","euclideanDistance","stack","segments","currentPoints","pop","newPoints","startPoint","endPoint","d2","sqrt","parser","pathString","segmentMatch","segmentExpr","lastIndex","exec","numbers","match","numberExpr","parseFloat","scheme","segmentData","createElement","tag","attributes","element","document","createElementNS","keys","setProperty","getProperty","SVGAnimatedLength","baseVal","getAttribute","setAttribute","_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","this","shapesToPaths","preparePaths","pathElements","querySelectorAll","paths","data","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","update","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","_Warp","_Warp2","window","line","polyline","_len","_key","polygon","append","rectangle","width","height","rx","ry","xRotation","largeArc","sweep","ellipse","cx","cy","circle","absoluteGenerator","xProps","yProps","prevX","prevY","pathStartX","NaN","pathStartY","isNaN","arcToCurveGenerator","startX","startY","curveSegments","converter","prevCurveX","prevCurveY","curveSegment","sx","sy","angle","large","sinPhi","sin","PI","cosPhi","cos","xd","yd","rx2","ry2","xd2","yd2","root","numerator","cxd","cyd","theta1","angleBetween","dtheta","numSegs","ceil","abs","cosTheta1","sinTheta1","theta2","cosTheta2","sinTheta2","epx","epy","dx","dy","dxe","dye","ux","uy","vx","vy","ta","atan2","tb","hvzToLineGenerator","lineToCurveGenerator","offsetX","offsetY","shortToLongGenerator","prevCurveC2X","prevCurveC2Y","prevQuadCX","prevQuadCY","shapeElements","shapeElement","tagName","pathShape","attribute","nodeName","nodeValue","pathElement","parentNode","replaceChild","_absolute2","_shortToLong2","_hvzToLine2","_lineToCurve2","_arcToCurve2","_absolute","_shortToLong","_hvzToLine","_lineToCurve","_arcToCurve","_shape","newObj","extrapolate","oldPath","prevSegment","prevSegment2","extrapolationTypesExpr","newSegment","interpolate","prevPoints","interpolationTypesExpr","_pointGroups$j","extendedPoints","pointList","concat","rawSegments","rawSegment","_pointGroups$i"],"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/******/\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// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\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 = 7);\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});\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/* 3 */\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/* 4 */\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/* 5 */\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/* 6 */\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__(14);\n\nvar _utils = __webpack_require__(5);\n\nvar _parser = __webpack_require__(4);\n\nvar _parser2 = _interopRequireDefault(_parser);\n\nvar _encoder = __webpack_require__(2);\n\nvar _encoder2 = _interopRequireDefault(_encoder);\n\nvar _interpolate = __webpack_require__(3);\n\nvar _transform = __webpack_require__(17);\n\nvar _transform2 = _interopRequireDefault(_transform);\n\nvar _interpolate2 = __webpack_require__(16);\n\nvar _interpolate3 = _interopRequireDefault(_interpolate2);\n\nvar _extrapolate = __webpack_require__(15);\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)(this.element);\n\t\t(0, _normalize.preparePaths)(this.element, curveType);\n\n\t\tvar pathElements = element.querySelectorAll('path');\n\n\t\tthis.paths = [].map.call(pathElements, function (element) {\n\t\t\tvar pathString = (0, _utils.getProperty)(element, 'd');\n\t\t\tvar data = (0, _parser2.default)(pathString);\n\n\t\t\treturn { element: element, data: data };\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 path = _step.value;\n\n\t\t\t\t\tvar pathString = (0, _encoder2.default)(path.data);\n\t\t\t\t\t(0, _utils.setProperty)(path.element, '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(transformer) {\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.data = (0, _transform2.default)(path.data, transformer);\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 delta = (0, _interpolate.euclideanDistance)(points.slice(0, 2));\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.data = (0, _interpolate3.default)(path.data, 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 delta = (0, _interpolate.euclideanDistance)(points.slice(0, 2));\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.data = (0, _extrapolate2.default)(path.data, 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 delta = (0, _interpolate.euclideanDistance)(points.slice(0, 2));\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.data, 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.data = (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 delta = (0, _interpolate.euclideanDistance)(points.slice(0, 2));\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.data, 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.data = (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/* 7 */\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__(6);\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/* 8 */\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/* 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 = 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/* 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 = 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/* 14 */\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__(4);\n\nvar _parser2 = _interopRequireDefault(_parser);\n\nvar _encoder = __webpack_require__(2);\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__(13);\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__(10);\n\nvar _arcToCurve2 = _interopRequireDefault(_arcToCurve);\n\nvar _shape = __webpack_require__(8);\n\nvar pathShape = _interopRequireWildcard(_shape);\n\nvar _utils = __webpack_require__(5);\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 shapeElements = element.querySelectorAll('line, polyline, polygon, rect, ellipse, circle');\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 path = {};\n\t\t\tswitch (shapeElement.tagName.toLowerCase()) {\n\t\t\t\tcase 'line':\n\t\t\t\t\t{\n\t\t\t\t\t\tpath = 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\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'polyline':\n\t\t\t\t\t{\n\t\t\t\t\t\tpath = pathShape.polyline.apply(pathShape, _toConsumableArray(shapeElement.points));\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'polygon':\n\t\t\t\t\t{\n\t\t\t\t\t\tpath = pathShape.polygon.apply(pathShape, _toConsumableArray(shapeElement.points));\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'rect':\n\t\t\t\t\t{\n\t\t\t\t\t\tpath = 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\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ellipse':\n\t\t\t\t\t{\n\t\t\t\t\t\tpath = 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\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'circle':\n\t\t\t\t\t{\n\t\t\t\t\t\tpath = pathShape.circle((0, _utils.getProperty)(shapeElement, 'cx'), (0, _utils.getProperty)(shapeElement, 'cy'), (0, _utils.getProperty)(shapeElement, 'r'));\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tvar pathString = (0, _encoder2.default)(path);\n\t\t\tvar attributes = { d: pathString };\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 = shapeElement.attributes[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n\t\t\t\t\tvar attribute = _step2.value;\n\n\t\t\t\t\tvar name = attribute.nodeName;\n\t\t\t\t\tvar value = attribute.nodeValue;\n\n\t\t\t\t\t// Avoid dimensional properties\n\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\tattributes[name] = value;\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\tvar pathElement = (0, _utils.createElement)('path', attributes);\n\t\t\tshapeElement.parentNode.replaceChild(pathElement, shapeElement);\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 = 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/* 15 */\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/* 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__(3);\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});\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, transformer) {\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 newPoints = transformer([segment[x], segment[y]].concat(_toConsumableArray(extendedPoints)));\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/******/ ]);\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\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// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\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 = 7);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap a763163db3045e275691","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\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 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 { 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","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","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(this.element)\n\t\tpreparePaths(this.element, curveType)\n\n\t\tconst pathElements = element.querySelectorAll('path')\n\n\t\tthis.paths = [].map.call(pathElements, function(element)\n\t\t{\n\t\t\tconst pathString = getProperty(element, 'd')\n\t\t\tconst data = pathParser(pathString)\n\n\t\t\treturn { element, data }\n\t\t})\n\t}\n\n\tupdate()\n\t{\n\t\tfor(let path of this.paths)\n\t\t{\n\t\t\tconst pathString = pathEncoder(path.data)\n\t\t\tsetProperty(path.element, 'd', pathString)\n\t\t}\n\t}\n\n\ttransform(transformer)\n\t{\n\t\tfor(let path of this.paths)\n\t\t{\n\t\t\tpath.data = warpTransform(path.data, transformer)\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 delta = euclideanDistance(points.slice(0, 2))\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.data = warpInterpolate(path.data, 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 delta = euclideanDistance(points.slice(0, 2))\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.data = warpExtrapolate(path.data, 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 delta = euclideanDistance(points.slice(0, 2))\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.data, 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.data = 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 delta = euclideanDistance(points.slice(0, 2))\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.data, 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.data = 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 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","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 { 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","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 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","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","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 shapeElements = element.querySelectorAll('line, polyline, polygon, rect, ellipse, circle')\n\n\tfor(let shapeElement of shapeElements)\n\t{\n\t\tlet path = {}\n\t\tswitch(shapeElement.tagName.toLowerCase())\n\t\t{\n\t\t\tcase 'line':\n\t\t\t{\n\t\t\t\tpath = pathShape.line(\n\t\t\t\t\tgetProperty(shapeElement, 'x1'),\n\t\t\t\t\tgetProperty(shapeElement, 'y1'),\n\t\t\t\t\tgetProperty(shapeElement, 'x2'),\n\t\t\t\t\tgetProperty(shapeElement, 'y2')\n\t\t\t\t)\n\t\t\t}\n\t\t\tbreak\n\t\t\tcase 'polyline':\n\t\t\t{\n\t\t\t\tpath = pathShape.polyline(...shapeElement.points)\n\t\t\t}\n\t\t\tbreak\n\t\t\tcase 'polygon':\n\t\t\t{\n\t\t\t\tpath = pathShape.polygon(...shapeElement.points)\n\t\t\t}\n\t\t\tbreak\n\t\t\tcase 'rect':\n\t\t\t{\n\t\t\t\tpath = pathShape.rectangle(\n\t\t\t\t\tgetProperty(shapeElement, 'x'),\n\t\t\t\t\tgetProperty(shapeElement, 'y'),\n\t\t\t\t\tgetProperty(shapeElement, 'width'),\n\t\t\t\t\tgetProperty(shapeElement, 'height'),\n\t\t\t\t\tgetProperty(shapeElement, 'rx'),\n\t\t\t\t\tgetProperty(shapeElement, 'ry')\n\t\t\t\t)\n\t\t\t}\n\t\t\tbreak\n\t\t\tcase 'ellipse':\n\t\t\t{\n\t\t\t\tpath = pathShape.ellipse(\n\t\t\t\t\tgetProperty(shapeElement, 'cx'),\n\t\t\t\t\tgetProperty(shapeElement, 'cy'),\n\t\t\t\t\tgetProperty(shapeElement, 'rx'),\n\t\t\t\t\tgetProperty(shapeElement, 'ry')\n\t\t\t\t)\n\t\t\t}\n\t\t\tbreak\n\t\t\tcase 'circle':\n\t\t\t{\n\t\t\t\tpath = pathShape.circle(\n\t\t\t\t\tgetProperty(shapeElement, 'cx'),\n\t\t\t\t\tgetProperty(shapeElement, 'cy'),\n\t\t\t\t\tgetProperty(shapeElement, 'r')\n\t\t\t\t)\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\n\t\tconst pathString = pathEncoder(path)\n\t\tconst attributes = { d: pathString }\n\n\t\tfor(let attribute of shapeElement.attributes)\n\t\t{\n\t\t\tconst name = attribute.nodeName\n\t\t\tconst value = attribute.nodeValue\n\n\t\t\t// Avoid dimensional properties\n\t\t\tif(!/^(x|y|x1|y1|x2|y2|width|height|r|rx|ry|cx|cy|points|d)$/.test(name))\n\t\t\t{\n\t\t\t\tattributes[name] = value\n\t\t\t}\n\t\t}\n\n\t\tconst pathElement = createElement('path', attributes)\n\t\tshapeElement.parentNode.replaceChild(pathElement, shapeElement)\n\t}\n}\n\nexport function preparePaths(element, curveType='q')\n{\n\tconst pathElements = 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 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","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 { pointGroups } from '../path/utils'\n\nexport default function transform(path, transformer)\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 newPoints = transformer([segment[x], segment[y], ...extendedPoints])\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"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///warp.js","webpack:///webpack/bootstrap 135ea984cb28edb4c1ee","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","data","_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","shapeElements","shapeElement","tagName","pathShape","line","polyline","polygon","rectangle","ellipse","circle","attribute","nodeName","nodeValue","pathElement","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","concat","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)(this.element);\n\t\t(0, _normalize.preparePaths)(this.element, curveType);\n\n\t\tvar pathElements = element.querySelectorAll('path');\n\n\t\tthis.paths = [].map.call(pathElements, function (element) {\n\t\t\tvar pathString = (0, _utils.getProperty)(element, 'd');\n\t\t\tvar data = (0, _parser2.default)(pathString);\n\n\t\t\treturn { element: element, data: data };\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 path = _step.value;\n\n\t\t\t\t\tvar pathString = (0, _encoder2.default)(path.data);\n\t\t\t\t\t(0, _utils.setProperty)(path.element, '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(transformer) {\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.data = (0, _transform2.default)(path.data, transformer);\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.data = (0, _interpolate3.default)(path.data, 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.data = (0, _extrapolate2.default)(path.data, 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.data, 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.data = (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.data, 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.data = (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 shapeElements = element.querySelectorAll('line, polyline, polygon, rect, ellipse, circle');\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 path = {};\n\t\t\tswitch (shapeElement.tagName.toLowerCase()) {\n\t\t\t\tcase 'line':\n\t\t\t\t\t{\n\t\t\t\t\t\tpath = 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\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'polyline':\n\t\t\t\t\t{\n\t\t\t\t\t\tpath = pathShape.polyline.apply(pathShape, _toConsumableArray(shapeElement.points));\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'polygon':\n\t\t\t\t\t{\n\t\t\t\t\t\tpath = pathShape.polygon.apply(pathShape, _toConsumableArray(shapeElement.points));\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'rect':\n\t\t\t\t\t{\n\t\t\t\t\t\tpath = 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\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ellipse':\n\t\t\t\t\t{\n\t\t\t\t\t\tpath = 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\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'circle':\n\t\t\t\t\t{\n\t\t\t\t\t\tpath = pathShape.circle((0, _utils.getProperty)(shapeElement, 'cx'), (0, _utils.getProperty)(shapeElement, 'cy'), (0, _utils.getProperty)(shapeElement, 'r'));\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tvar pathString = (0, _encoder2.default)(path);\n\t\t\tvar attributes = { d: pathString };\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 = shapeElement.attributes[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n\t\t\t\t\tvar attribute = _step2.value;\n\n\t\t\t\t\tvar name = attribute.nodeName;\n\t\t\t\t\tvar value = attribute.nodeValue;\n\n\t\t\t\t\t// Avoid dimensional properties\n\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\tattributes[name] = value;\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\tvar pathElement = (0, _utils.createElement)('path', attributes);\n\t\t\tshapeElement.parentNode.replaceChild(pathElement, shapeElement);\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 = 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, transformer) {\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 newPoints = transformer([segment[x], segment[y]].concat(_toConsumableArray(extendedPoints)));\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 135ea984cb28edb4c1ee","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(this.element)\n\t\tpreparePaths(this.element, curveType)\n\n\t\tconst pathElements = element.querySelectorAll('path')\n\n\t\tthis.paths = [].map.call(pathElements, function(element)\n\t\t{\n\t\t\tconst pathString = getProperty(element, 'd')\n\t\t\tconst data = pathParser(pathString)\n\n\t\t\treturn { element, data }\n\t\t})\n\t}\n\n\tupdate()\n\t{\n\t\tfor(let path of this.paths)\n\t\t{\n\t\t\tconst pathString = pathEncoder(path.data)\n\t\t\tsetProperty(path.element, 'd', pathString)\n\t\t}\n\t}\n\n\ttransform(transformer)\n\t{\n\t\tfor(let path of this.paths)\n\t\t{\n\t\t\tpath.data = warpTransform(path.data, transformer)\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.data = warpInterpolate(path.data, 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.data = warpExtrapolate(path.data, 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.data, 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.data = 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.data, 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.data = 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 shapeElements = element.querySelectorAll('line, polyline, polygon, rect, ellipse, circle')\n\n\tfor(let shapeElement of shapeElements)\n\t{\n\t\tlet path = {}\n\t\tswitch(shapeElement.tagName.toLowerCase())\n\t\t{\n\t\t\tcase 'line':\n\t\t\t{\n\t\t\t\tpath = pathShape.line(\n\t\t\t\t\tgetProperty(shapeElement, 'x1'),\n\t\t\t\t\tgetProperty(shapeElement, 'y1'),\n\t\t\t\t\tgetProperty(shapeElement, 'x2'),\n\t\t\t\t\tgetProperty(shapeElement, 'y2')\n\t\t\t\t)\n\t\t\t}\n\t\t\tbreak\n\t\t\tcase 'polyline':\n\t\t\t{\n\t\t\t\tpath = pathShape.polyline(...shapeElement.points)\n\t\t\t}\n\t\t\tbreak\n\t\t\tcase 'polygon':\n\t\t\t{\n\t\t\t\tpath = pathShape.polygon(...shapeElement.points)\n\t\t\t}\n\t\t\tbreak\n\t\t\tcase 'rect':\n\t\t\t{\n\t\t\t\tpath = pathShape.rectangle(\n\t\t\t\t\tgetProperty(shapeElement, 'x'),\n\t\t\t\t\tgetProperty(shapeElement, 'y'),\n\t\t\t\t\tgetProperty(shapeElement, 'width'),\n\t\t\t\t\tgetProperty(shapeElement, 'height'),\n\t\t\t\t\tgetProperty(shapeElement, 'rx'),\n\t\t\t\t\tgetProperty(shapeElement, 'ry')\n\t\t\t\t)\n\t\t\t}\n\t\t\tbreak\n\t\t\tcase 'ellipse':\n\t\t\t{\n\t\t\t\tpath = pathShape.ellipse(\n\t\t\t\t\tgetProperty(shapeElement, 'cx'),\n\t\t\t\t\tgetProperty(shapeElement, 'cy'),\n\t\t\t\t\tgetProperty(shapeElement, 'rx'),\n\t\t\t\t\tgetProperty(shapeElement, 'ry')\n\t\t\t\t)\n\t\t\t}\n\t\t\tbreak\n\t\t\tcase 'circle':\n\t\t\t{\n\t\t\t\tpath = pathShape.circle(\n\t\t\t\t\tgetProperty(shapeElement, 'cx'),\n\t\t\t\t\tgetProperty(shapeElement, 'cy'),\n\t\t\t\t\tgetProperty(shapeElement, 'r')\n\t\t\t\t)\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\n\t\tconst pathString = pathEncoder(path)\n\t\tconst attributes = { d: pathString }\n\n\t\tfor(let attribute of shapeElement.attributes)\n\t\t{\n\t\t\tconst name = attribute.nodeName\n\t\t\tconst value = attribute.nodeValue\n\n\t\t\t// Avoid dimensional properties\n\t\t\tif(!/^(x|y|x1|y1|x2|y2|width|height|r|rx|ry|cx|cy|points|d)$/.test(name))\n\t\t\t{\n\t\t\t\tattributes[name] = value\n\t\t\t}\n\t\t}\n\n\t\tconst pathElement = createElement('path', attributes)\n\t\tshapeElement.parentNode.replaceChild(pathElement, shapeElement)\n\t}\n}\n\nexport function preparePaths(element, curveType='q')\n{\n\tconst pathElements = 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, transformer)\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 newPoints = transformer([segment[x], segment[y], ...extendedPoints])\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