-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathsquiggy.js
2 lines (2 loc) · 16.8 KB
/
squiggy.js
1
2
var squiggy=(()=>{var ie=Object.defineProperty;var ae=(e,t)=>{for(var u in t)ie(e,u,{get:t[u],enumerable:!0})};var Re={};ae(Re,{__balltrack:()=>y,__convex_hull:()=>U,__field_disturb:()=>re,__stampdrag_cust:()=>te,__stampdrag_ident:()=>ee,__unmess:()=>Z,custom_brush:()=>Oe,preprocess:()=>C,stamp_brush:()=>Ee,tube_brush:()=>we});var ce=0,T=1,ue=2,W=3;function oe(e,t=1e-4){for(let u=0;u<e.length;u++)e[u][0]+=(Math.random()*2-1)*t,e[u][1]+=(Math.random()*2-1)*t}function le(e,t,u,m,h,r,n,f,b=!1){let i=u-e,c=m-t,s=n-h,a=f-r,x=i*a-c*s;if(x==0)return null;let o=x*x,d=h-e,M=r-t,l=x/o,_=(d*a-M*s)*l,g=(d*c-M*i)*l;if(0<=_&&(b||_<1)&&0<=g&&g<1){let P={t:_,s:g,side:null,other:null,xy:null};return P.xy=[u*_+e*(1-_),m*_+t*(1-_)],P.side=X(e,t,u,m,h,r)<0?1:-1,P}return null}function X(e,t,u,m,h,r){let n=h-u,f=r-m;return(e-u)*f-(t-m)*n}function de(e){let t=[],u=e.length;for(let m=0;m<u;m++){let h={xy:e[m],isects:[],isects_map:{}},r=(m+1+u)%u,n=e[m],f=e[r];for(let b=0;b<u;b++){let i=(b+1+u)%u;if(m==b||m==i||r==b||r==i)continue;let c=e[b],s=e[i],a;if(t[b]){let x=t[b].isects_map[m];x&&(a={t:x.s,s:x.t,xy:x.xy,other:null,side:X(...n,...f,...c)<0?1:-1})}else a=le(...n,...f,...c,...s);a&&(a.other=b,h.isects.push(a),h.isects_map[b]=a)}h.isects.sort((b,i)=>b.t-i.t),t.push(h)}return t}function _e(e){let t={},u=e.length;for(let m=0;m<u;m++)for(let h=0;h<e[m].isects.length;h++){let r=G(m,h),n=e[m].isects[h].other,f=e[n].isects.findIndex(b=>b.other==m);t[r]=[n,f]}return t}function xe(e){for(var t=e.length,u=0,m=t-1,h=0;h<t;m=h++)u+=e[m][0]*e[h][1]-e[h][0]*e[m][1];return u*.5}function me(e,t){let u=e.length,m=e[(t-1+u)%u],h=e[t],r=e[(t+1)%u];return X(...m,...h,...r)<0?1:-1}function Me(e,t,u,m,h){let r=h.length,n=[];for(let f=0;f<h.length;f++){let b=h[f],i=h[(f+1)%r],c=le(e,t,u,m,...b,...i,!0);c&&n.push(c)}return n.sort((f,b)=>f.t-b.t),n}function se(e,t,u=!0,m=1e-4){e=xe(e)>0?e.slice().reverse():e.slice();let r;for(r=0;r<e.length&&!(me(e,r)<0);r++);if(r>=e.length)return!1;let n=e[(r-1+e.length)%e.length],f=e[r],b=e[(r+1)%e.length],i=[n[0]*.5+b[0]*.5,n[1]*.5+b[1]*.5],c=i[0]-f[0],s=i[1]-f[1],a=Math.sqrt(c*c+s*s),x=f[0]+c/a*m,o=f[1]+s/a*m,d=Me(x,o,i[0],i[1],t),M=d.length%2==0;if(u&&M){let l=0;for(let _=0;_<d.length;_++)l+=d[_].side;M=M&&l==0}return M}function G(e,t){return e+","+t}function ge(e,t,u,m){return e+","+t+","+u+","+m}function Z(e,t={}){var o,d,M;if((o=t.disturb)!=null||(t.disturb=1e-4),(d=t.epsilon)!=null||(t.epsilon=1e-4),(M=t.hole_policy)!=null||(t.hole_policy=T),e.length<=3)return[e];t.disturb&&oe(e,t.disturb);let u=de(e),m=_e(u),h=e.length,r={},n={},f={};function b(l,_,g,P,I=!1){let O={},k={},E={},N=null,R=[];function q(v,w,z,L){if(N==null)N=[v,w];else{if(v==N[0]&&w==N[1])return!0;if(N[1]!=-1&&w!=-1){let j=u[v].isects[w];if(j){let J=j.other,A=u[J].isects.findIndex(D=>D.other==v);if(J==N[0]&&A==N[1])return!0}}}if(t.hole_policy!=T&&L){let j=ge(...L,v,w);if(f[j])return!1;E[j]=!0}let H=u[v],S=(v+z+h)%h;if(w==-1)return t.hole_policy!=W&&!P&&(r[v]||O[v])?!1:(O[v]=!0,R.push(H.xy),z<0?q(S,u[S].isects.length-1,z,[v,w]):u[v].isects.length?q(v,0,z,[v,w]):q(S,-1,z,[v,w]));if(w>=H.isects.length)return q(S,-1,z,[v,w]);{let j=G(v,w);if(t.hole_policy==T&&!P&&(n[j]||k[j]))return!1;k[j]=!0,R.push(H.isects[w].xy);let J=H.isects[w],[A,D]=m[j];k[G(A,D)]=!0;let K;return J.side*z<0?K=[A,D-1,-1]:K=[A,D+1,1],(t.hole_policy==T||I)&&!P&&K[2]!=z?!1:q(...K,[v,w])}}return!q(l,_,g,null)||R.length<3?null:{poly:R,used:O,used_isects:k,used_edges:E}}let i=Infinity,c=0;for(let l=0;l<h;l++)e[l][0]<i&&(i=e[l][0],c=l);let s=me(e,c),a=[],x=b(c,-1,s,!0);if(!x)return[];if(r=x.used,n=x.used_isects,a.push(x.poly),t.hole_policy!=ce){let l=[];for(let _=0;_<h;_++)for(let g=0;g<u[_].isects.length;g++){let P=G(_,g),I=G(...m[P]);(t.hole_policy!=T||!n[P]&&!n[I])&&l.push([_,g])}for(let _=0;_<l.length;_++){let[g,P]=l[_],I=b(g,P,s,!1);I&&se(I.poly,e,t.hole_policy!=W,t.epsilon)&&(a.push(I.poly),Object.assign(r,I.used),Object.assign(n,I.used_isects),Object.assign(f,I.used_edges))}if(t.hole_policy==W)for(let _=0;_<l.length;_++){let[g,P]=l[_],I=b(g,P,-s,!1,!0);I&&se(I.poly,e,!1,t.epsilon)&&(a.push(I.poly),Object.assign(r,I.used),Object.assign(n,I.used_isects),Object.assign(f,I.used_edges))}}return a}function Q(e){let t=0,u=Infinity;for(let m=0;m<e.length;m++)e[m][1]<u&&(u=e[m][1],t=m);return t}function Y(e){let t=0,u=-Infinity;for(let m=0;m<e.length;m++)e[m][1]>u&&(u=e[m][1],t=m);return t}function $(e,t,u,m,h,r){return(u-e)*(r-t)-(m-t)*(h-e)}function be(e,t,u,m,h,r){let n=u-e,f=m-t,b=h-e,i=r-t,c=h-u,s=r-m,a=Math.hypot(n,f),x=Math.hypot(b,i),o=Math.hypot(c,s),d=n*i-f*b,M=Math.abs((n*c+f*s)/(a*o)-1);return[d,M]}function U(e){let t=e.length,u=e.slice(),m=u.splice(Q(e),1)[0],h=n=>Math.atan2(n[1]-m[1],n[0]-m[0]);u.sort((n,f)=>h(n)-h(f)),u.unshift(m);let r=[];r.push(u[0]),r.push(u[1]);for(let n=2;n<u.length;n++){for(;r.length>=2&&$(r[r.length-2][0],r[r.length-2][1],r[r.length-1][0],r[r.length-1][1],u[n][0],u[n][1])<=0;)r.pop();r.push(u[n])}return r}function B(e,t){let u=[],m=Math.cos(t),h=Math.sin(t);for(let r=0;r<e.length;r++){let[n,f]=e[r],b=n*m-f*h,i=n*h+f*m;u.push([b,i])}return u}function F(e,t,u,m=0,h=0){e=(e+Math.PI*2)%(Math.PI*2),t=(t+Math.PI*2)%(Math.PI*2);function r(f,b){let i=[];if(f<b)for(let c=f+u;c<b;c+=u)i.push(c);else for(let c=f-u;c>b;c-=u)i.push(c);return i}if(m==null||m==0){var n=[[Math.abs(t-e),()=>r(e,t)],[Math.abs(t+Math.PI*2-e),()=>r(e,t+Math.PI*2)],[Math.abs(t-Math.PI*2-e),()=>r(e,t-Math.PI*2)]];return n.sort((f,b)=>f[0]-b[0]),Math.abs(n[0][0]-Math.PI)<.1&&h?F(e,t,u,h):n[0][1]()}else{if(m<0)for(;t>e;)t-=Math.PI*2;else for(;t<e;)t+=Math.PI*2;return r(e,t)}}function p(e,t,u=0,m=7){e=(e+Math.PI*2)%(Math.PI*2),t=(t+Math.PI*2)%(Math.PI*2);function h(n,f){return[(n+f)/2,Math.abs((f-n)/2)]}if(u==null||u==0){var r=[[Math.abs(t-e),()=>h(e,t)],[Math.abs(t+Math.PI*2-e),()=>h(e,t+Math.PI*2)],[Math.abs(t-Math.PI*2-e),()=>h(e,t-Math.PI*2)]];return r.sort((n,f)=>n[0]-f[0]),r[0][1]()}else{if(u<0)for(;t>e;)t-=Math.PI*2;else for(;t<e;)t+=Math.PI*2;return u&&Math.abs(e-t)>m?p(e,t,0):h(e,t)}}function he(e,t,u,m,h,r,n,f){let b=u-e,i=m-t,c=n-h,s=f-r,a=b*s-i*c;if(a==0)return!1;let x=a*a,o=h-e,d=r-t,M=a/x,l=(o*s-d*c)*M,_=(o*i-d*b)*M;return 0<=l&&l<=1&&0<=_&&_<=1}function y(e,t,u="round",m="round",h=2,r=2){let n=.001,f=.001;if(!e.length)return[];if(e.length<2){let l=e[0].slice();l[0]+=n,e=e.concat([l])}let b=[],i=[];for(let l=0;l<e.length-1;l++){let _=e[l],g=e[l+1],P=g[0]-_[0],I=g[1]-_[1],O=Math.sqrt(P*P+I*I),k=t[l],E=t[l+1],N=k-E;Math.abs(N)>O-n&&(k<E?t[l+1]=E=k+O-n:t[l+1]=E=k-O+n,N=k-E);let R=Math.atan2(I,P),q=Math.acos(N/O);b.push([R+q,R-q]),i.push(O)}let c=[],s=[];for(let l=0;l<e.length-1;l++){let _=e[l],g=e[l+1],P=t[l],I=t[l+1],[O,k]=b[l];c.push([_[0]+Math.cos(O)*P,_[1]+Math.sin(O)*P]),s.push([_[0]+Math.cos(k)*P,_[1]+Math.sin(k)*P]),c.push([g[0]+Math.cos(O)*I,g[1]+Math.sin(O)*I]),s.push([g[0]+Math.cos(k)*I,g[1]+Math.sin(k)*I])}let a=[[]],x=[[]];for(let l=1;l<e.length-1;l++){let _=e[l-1],g=e[l],P=e[l+1],[I,O]=be(..._,...g,...P),E=O<f?0:I>0?1:-1,N=!0,R=!0;{let q=s[(l-1)*2],V=s[(l-1)*2+1],v=s[l*2],w=s[l*2+1];he(...q,...V,...v,...w)&&(N=!1)}{let q=c[(l-1)*2],V=c[(l-1)*2+1],v=c[l*2],w=c[l*2+1];he(...q,...V,...v,...w)&&(R=!1)}if(u!="bevel"&&(R||N))if(u!="miter"){let q=Math.asin(h/2/t[l])*2;if(isNaN(q)){x.push([]),a.push([]);continue}if(N){let V=b[l-1][1],v=b[l][1],w=[];F(V,v,q,E==1?1:0,1).forEach(L=>{let H=Math.cos(L)*t[l],S=Math.sin(L)*t[l];w.push([g[0]+H,g[1]+S])}),x.push(w),R||a.push([])}if(R){let V=b[l-1][0],v=b[l][0],w=[];F(V,v,q,E==-1?-1:0,-1).forEach(L=>{let H=Math.cos(L)*t[l],S=Math.sin(L)*t[l];w.push([g[0]+H,g[1]+S])}),a.push(w),N||x.push([])}}else{if(N){let q=b[l-1][1],V=b[l][1],[v,w]=p(q,V,E==1?1:0),z=Math.abs(t[l]/Math.cos(w));z=Math.min(t[l]*r,z);let L=[[g[0]+z*Math.cos(v),g[1]+z*Math.sin(v)]];x.push(L),R||a.push([])}if(R){let q=b[l-1][0],V=b[l][0],[v,w]=p(q,V,E==-1?-1:0),z=Math.abs(t[l]/Math.cos(w));z=Math.min(t[l]*r,z);let L=[[g[0]+z*Math.cos(v),g[1]+z*Math.sin(v)]];a.push(L),N||x.push([])}}else a.push([]),x.push([])}let o=[],d=[];for(let l=0;l<c.length/2;l++)o.push(...a[l]),d.push(...x[l]),o.push(c[l*2]),o.push(c[l*2+1]),d.push(s[l*2]),d.push(s[l*2+1]);if(c=o,s=d,m=="round"){{let l=[],_=e[0],g=e[1],[P,I]=b[0],O=Math.asin(h/2/t[0])*2,k=F(P,I,O,1);isNaN(O)||k.forEach(E=>{let N=_[0]+t[0]*Math.cos(E),R=_[1]+t[0]*Math.sin(E);l.push([N,R])}),s=l.concat(s)}{let l=[],_=e[e.length-2],g=e[e.length-1],[P,I]=b[e.length-2],O=Math.asin(h/2/t[0])*2,k=F(I,P,O,1);isNaN(O)||k.forEach(E=>{let N=g[0]+t[t.length-1]*Math.cos(E),R=g[1]+t[t.length-1]*Math.sin(E);l.push([N,R])}),s.push(...l)}}return c.reverse(),s.concat(c)}function ee(e,t,u=.1){let m=[];for(let n=0;n<t.length;n++){let f=t[n],b=t[(n+1)%t.length],i=[(f[0]+b[0])/2,(f[1]+b[1])/2],c=b[0]-f[0],s=b[1]-f[1],a=Math.hypot(c,s),x=s/a,o=-c/a;m.push(t[n]),m.push([i[0]+x*u,i[1]+o*u])}t=m;let h=[];for(let n=0;n<e.length-1;n++){let[f,b]=e[n],[i,c]=e[n+1],s=Math.atan2(c-b,i-f),a=B(t,-s),x=B(t,-s),o=Q(a),d=Y(a),M=Q(x),l=Y(x),_=0;n>0&&(_=$(...e[n-1],f,b,i,c),_/=Math.abs(_)),h.push([o,d,M,l,_])}let r=[];for(let n=1;n<e.length-1;n++){let f=h[n-1][2],b=h[n][0],i=h[n][4],c=t.length;if(i>=0){for(;b<f;)b+=c;for(let s=f;s<=b;s++){let[a,x]=t[s%c];r.push([a+e[n][0],x+e[n][1]])}}else{let[s,a]=t[f];r.push([s+e[n][0],a+e[n][1]]);let[x,o]=t[b];r.push([x+e[n][0],o+e[n][1]])}}{let n=h[h.length-1][2],f=h[h.length-1][3];for(;f<n;)f+=t.length;for(let b=n;b<=f;b++){let[i,c]=t[b%t.length];r.push([i+e[e.length-1][0],c+e[e.length-1][1]])}}for(let n=e.length-2;n>0;n--){let f=h[n][1],b=h[n-1][3],i=h[n][4],c=t.length;if(i<=0){for(;b<f;)b+=c;for(let s=f;s<=b;s++){let[a,x]=t[(s+c)%c];r.push([a+e[n][0],x+e[n][1]])}}else{let[s,a]=t[f];r.push([s+e[n][0],a+e[n][1]]);let[x,o]=t[b];r.push([x+e[n][0],o+e[n][1]])}}{let n=h[0][1],f=h[0][0];for(;f<n;)f+=t.length;for(let b=n;b<=f;b++){let[i,c]=t[b%t.length];r.push([i+e[0][0],c+e[0][1]])}}return r}function te(e,t){if(e.length==1)return t[0].map(r=>[r[0]+e[0][0],r[1]+e[0][1]]);function u(r,n,f){let b=Infinity,i=null;for(let s=0;s<r.length;s++)if(r[s][2]==f)for(let a=0;a<n.length;a++){let[x,o]=r[s],[d,M]=n[a],l=x-d,_=o-M,g=l*l+_*_;g<b&&(b=g,i=[s,a])}if(!i)for(let s=0;s<r.length;s++)for(let a=0;a<n.length;a++){let[x,o]=r[s],[d,M]=n[a],l=x-d,_=o-M,g=l*l+_*_;g<b&&(b=g,i=[s,a])}return r.slice(0,i[0]).concat(n.slice(i[1])).concat(n.slice(0,i[1])).concat(r.slice(i[0]))}let m=null;for(let r=0;r<e.length-1;r++){let n=t[r],f=t[r+1],b=[],i=[],[c,s]=e[r],[a,x]=e[r+1];for(let d=0;d<n.length;d++)b.push([n[d][0]+c,n[d][1]+s,r]);for(let d=0;d<f.length;d++)i.push([f[d][0]+a,f[d][1]+x,r+1]);let o=U(b.concat(i));m?m=u(m,o,r):m=o}return m.map(r=>[r[0],r[1]])}function re(e,t){let u=Infinity,m=Infinity,h=-Infinity,r=-Infinity;for(let a=0;a<e.length;a++){let[x,o]=e[a];u=Math.min(u,x),m=Math.min(m,o),h=Math.max(h,x),r=Math.max(r,o)}h<=u&&(h=u+1),r<=m&&(r=m+1);let n=Math.max(1,Math.round((h-u)/t)),f=Math.max(1,Math.round((r-m)/t)),b=[];for(let a=0;a<e.length;a++){let[x,o]=e[a];b.push([(x-u)/(h-u)*n+1,(o-m)/(r-m)*f+1])}let i=n+2,c=[],s=new Array((n+2)*(f+2)).fill(0);for(let a=0;a<b.length;a++){let[x,o]=b[a],d=~~x,M=~~o,l=x-d,_=o-M;if(!s[M*i+d]){s[M*i+d]++;let k=l,E=_;(.25>k||k>.75)&&(k=Math.random()*.5+.25),(.25>E||E>.75)&&(E=Math.random()*.5+.25),c.push([d+k,M+E]);continue}let g=[[d-1,M],[d,M-1],[d+1,M],[d,M+1],[d-1,M-1],[d-1,M+1],[d+1,M-1],[d+1,M+1],[d-2,M],[d+2,M],[d,M-2],[d,M+2]],P=Infinity,I=null,O=!1;for(let k=0;k<g.length;k++){let E=~~g[k][0],R=~~g[k][1]*i+E;if(!s[R]){s[R]++,c.push([g[k][0]+Math.random()*.5+.25,g[k][1]+Math.random()*.5+.25]),O=!0;break}s[R]<P&&(P=s[R],I=[g[k],R])}O||(s[I[1]]++,c.push([I[0][0]+Math.random(),I[0][1]+Math.random()]))}for(let a=0;a<c.length;a++)c[a][0]+=(Math.random()-.5)*.01,c[a][1]+=(Math.random()-.5)*.01;return c.map(a=>[(a[0]-1)/n*(h-u)+u,(a[1]-1)/f*(r-m)+m])}function Ie(e,t,u){let m=.001;function h(f,b,i,c){let s=0;for(let x=0;x<b.length;x++)s+=Math.pow(i[x]-b[x],2);return Math.pow(s,c*.5)+f}function r(f,b,i,c,s,a){let x=[];f[0]==b[0]&&f[1]==b[1]&&(f[0]+=m),b[0]==i[0]&&b[1]==i[1]&&(b[0]+=m),i[0]==c[0]&&i[1]==c[1]&&(i[0]+=m);let o=0,d=h(o,f,b,a),M=h(d,b,i,a),l=h(M,i,c,a);for(let _=d;_<M;_+=(M-d)/s){let g=(d-_)/(d-o),P=(_-o)/(d-o),I=[];for(let j=0;j<f.length;j++)I.push(f[j]*g+b[j]*P);let O=(M-_)/(M-d),k=(_-d)/(M-d),E=[];for(let j=0;j<b.length;j++)E.push(b[j]*O+i[j]*k);let N=(l-_)/(l-M),R=(_-M)/(l-M),q=[];for(let j=0;j<b.length;j++)q.push(i[j]*N+c[j]*R);let V=(M-_)/(M-o),v=(_-o)/(M-o),w=[];for(let j=0;j<I.length;j++)w.push(I[j]*V+E[j]*v);let z=(l-_)/(l-d),L=(_-d)/(l-d),H=[];for(let j=0;j<E.length;j++)H.push(E[j]*z+q[j]*L);let S=[];for(let j=0;j<w.length;j++)S.push(w[j]*O+H[j]*k);x.push(S)}return x.push(i.slice()),x}let n=[];for(let f=0;f<e.length-1;f++){let b=e[Math.max(f-1,0)].slice(),i=e[f].slice(),c=e[f+1].slice(),s=e[Math.min(f+2,e.length-1)].slice(),a=r(b,i,c,s,t,u);n.push(...a)}return n}function Pe(e,t,u,m,h,r,n){let f=r-m,b=n-h,i=m-e,c=h-t,s=f*f+b*b,a=2*(i*f+c*b),x=i*i+c*c-u*u,o=a*a-4*s*x;if(o<0)return null;o=Math.sqrt(o);let d=(-a-o)/(2*s);if(0<=d&&d<=1)return d;let M=(-a+o)/(2*s);return M>1||M<0?null:M}function je(e,t){if(e.length<=2)return e.slice();e=e.slice();let u=[e[0].slice()],m=null,h=0;for(;h<e.length-1;){let r=e[h],n=e[h+1],f=n[0]-r[0],b=n[1]-r[1],i=Math.sqrt(f*f+b*b);if(i==0){h++;continue}let c=~~(i/t),s=c*t/i,a=r[0]*(1-s)+n[0]*s,x=r[1]*(1-s)+n[1]*s;for(let o=1;o<=c;o++){let d=o/c,M=r[0]*(1-d)+a*d,l=r[1]*(1-d)+x*d,_=[M,l];for(let g=2;g<r.length;g++)_.push(r[g]*(1-d)+(r[g]*(1-s)+n[g]*s)*d);u.push(_)}m=null;for(let o=h+2;o<e.length;o++){let d=e[o-1],M=e[o];if(d[0]==M[0]&&d[1]==M[1])continue;let l=Pe(a,x,t,d[0],d[1],M[0],M[1]);if(l==null)continue;let _=[d[0]*(1-l)+M[0]*l,d[1]*(1-l)+M[1]*l];for(let g=2;g<d.length;g++)_.push(d[g]*(1-l)+M[g]*l);u.push(_),e[o-1]=_,m=o-1;break}if(m==null)break;h=m}if(u.length>1){let r=u[u.length-1][0],n=u[u.length-1][1],f=e[e.length-1][0],b=e[e.length-1][1];Math.sqrt((f-r)**2+(b-n)**2)<t*.5&&u.pop()}return u.push(e[e.length-1].slice()),u}function ke(e,t=2,u=6){let m=u*2+1,h=1/3,r=1/(Math.sqrt(2*Math.PI)*h),n=0,f=[];for(let i=0;i<m;i++){let c=i/(m-1)*2-1,s=r*Math.exp(-Math.pow(c/h,2)/2);n+=s,f.push(s)}for(let i=0;i<m;i++)f[i]/=n;let b=[];for(let i=0;i<e.length;i++){let c=0;for(let s=-u;s<u;s++)c+=e[Math.min(Math.max(i+s,0),e.length-1)][t]*f[s+u];b.push(e[i].map((s,a)=>a==t?c:s))}return b}function ve(e,t,u){let m=e[0],h=e[1],r=t[0],n=t[1],f=u[0],b=u[1],i=m-r,c=h-n,s=f-r,a=b-n,x=i*s+c*a,o=s*s+a*a,d=-1;o!=0&&(d=x/o);let M,l;d<0?(M=r,l=n):d>1?(M=f,l=b):(M=r+d*s,l=n+d*a);let _=m-M,g=h-l;return Math.sqrt(_*_+g*g)}function ne(e,t){if(e.length<=2)return e;let u=0,m=-1;for(let r=1;r<e.length-1;r++){let n=ve(e[r],e[0],e[e.length-1]);n>u&&(u=n,m=r)}let h=[];if(u>t){let r=ne(e.slice(0,m+1),t),n=ne(e.slice(m,e.length),t);h=h.concat(r.slice(0,r.length-1)).concat(n)}else h.push(e[0].slice()),h.push(e[e.length-1].slice());return h}function C(e,t){var u,m,h,r,n,f;for(let b=0;b<t.length;b++){let i=t[b];i.type=="catmull-rom"?e=Ie(e,(u=i.resolution)!=null?u:20,(m=i.alpha)!=null?m:.5):i.type=="resample"?e=je(e,(h=i.step)!=null?h:3):i.type=="gauss-blur"?e=ke(e,(r=i.axis)!=null?r:2,(n=i.k)!=null?n:6):i.type=="approx"&&(e=ne(e,(f=i.epsilon)!=null?f:1))}return e}function fe(e){let t=[0],u=0;for(let m=1;m<e.length;m++){let h=e[m-1],r=e[m],n=h[0]-r[0],f=h[1]-r[1];u+=Math.sqrt(n*n+f*f),t.push(u)}return t}function we(e,t){return t||(t={}),function(u,m){var b,i,c,s,a,x;m.preprocess&&(u=C(u,m.preprocess));let h=[],r=u.map(o=>[o[0],o[1]]),n=fe(r);for(let o=0;o<r.length;o++){let d,M=null,l=null,[_,g]=r[o];r[o+1]&&(M=Math.atan2(r[o+1][1]-g,r[o+1][0]-_)),r[o-1]&&(l=Math.atan2(g-r[o-1][1],_-r[o-1][0])),M==null&&(M=l),l==null&&(l=M),d=p(M,l)[0];let P=e({i:o,d:n[o],z:u[o][2],v:(b=u[o][3])!=null?b:o?n[o]-n[o-1]:n[1],t:n[o]/n[n.length-1],x:_,y:g,r:d,dx:o?u[o][0]-u[o-1][0]:0,dy:o?u[o][1]-u[o-1][1]:0});P.w=(i=P.w)!=null?i:1,P.w=Math.max(.001,P.w),h.push(P.w)}let f=y(r,h,(c=t.join)!=null?c:"round",(s=t.cap)!=null?s:"round",(a=t.join_resolution)!=null?a:4,(x=t.miter_limit)!=null?x:2);return m.out_intermediate&&(m.out_intermediate[0]=f),m.clean?Z(f):[f]}}function Ee(e,t){return t||(t={}),t.scale&&(e=e.map(u=>[u[0]*t.scale,u[1]*t.scale])),function(u,m){if(m.preprocess&&(u=C(u,m.preprocess)),!u.length)return[];let h=u.map(n=>[n[0],n[1]]),r=ee(h,e);return m.out_intermediate&&(m.out_intermediate[0]=r),m.clean?Z(r):[r]}}function Oe(e){return function(t,u){var f,b,i,c;if(u.preprocess&&(t=C(t,u.preprocess)),!t.length)return[];let m=[],h=t.map(s=>[s[0],s[1]]),r=fe(h);for(let s=0;s<h.length;s++){let a,x=null,o=null,[d,M]=h[s];h[s+1]&&(x=Math.atan2(h[s+1][1]-M,h[s+1][0]-d)),h[s-1]&&(o=Math.atan2(M-h[s-1][1],d-h[s-1][0])),x==null&&(x=o),o==null&&(o=x),a=p(x,o)[0];let l=e({i:s,d:r[s],z:t[s][2],v:(f=t[s][3])!=null?f:s?r[s]-r[s-1]:r[1],t:r[s]/r[r.length-1],x:d,y:M,r:a,dx:s?t[s][0]-t[s-1][0]:0,dy:s?t[s][1]-t[s-1][1]:0});l.w=(b=l.w)!=null?b:1,l.h=(i=l.h)!=null?i:l.w,l.r=(c=l.r)!=null?c:0,l.w=Math.max(1e-4,l.w),l.h=Math.max(1e-4,l.h);let _=l.p.map(g=>[g[0]*l.w,g[1]*l.h]);_=B(_,l.r),m.push(_)}let n=te(h,m);return u.out_intermediate&&(u.out_intermediate[0]=m.map((s,a)=>s.map(x=>[x[0]+t[a][0],x[1]+t[a][1]])),u.out_intermediate[1]=n),u.clean?(re(n,.1),Z(n,{hole_policy:ue})):[n]}}return Re;})();
;(typeof module == 'object')?(module.exports=squiggy):0;