Socket
Socket
Sign inDemoInstall

perfect-freehand

Package Overview
Dependencies
Maintainers
1
Versions
56
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

perfect-freehand - npm Package Compare versions

Comparing version 1.1.0 to 1.2.0

4

CHANGELOG.md
# Changelog
## 1.1.0
- Add `taper: true` for full-length tapers.
## 1.0.15

@@ -4,0 +8,0 @@

2

dist/cjs/index.js

@@ -1,1 +0,1 @@

var ue=Object.defineProperty;var fe=e=>ue(e,"__esModule",{value:!0});var be=(e,t)=>{fe(e);for(var u in t)ue(e,u,{get:t[u],enumerable:!0})};be(exports,{default:()=>Se,getStroke:()=>A,getStrokeOutlinePoints:()=>$,getStrokePoints:()=>B});function W(e,t,u,x=g=>g){return e*x(.5-t*(.5-u))}function se(e){return[-e[0],-e[1]]}function l(e,t){return[e[0]+t[0],e[1]+t[1]]}function a(e,t){return[e[0]-t[0],e[1]-t[1]]}function b(e,t){return[e[0]*t,e[1]*t]}function ge(e,t){return[e[0]/t,e[1]/t]}function R(e){return[e[1],-e[0]]}function ie(e,t){return e[0]*t[0]+e[1]*t[1]}function me(e,t){return e[0]===t[0]&&e[1]===t[1]}function he(e){return Math.hypot(e[0],e[1])}function de(e){return e[0]*e[0]+e[1]*e[1]}function Y(e,t){return de(a(e,t))}function H(e){return ge(e,he(e))}function pe(e,t){return Math.hypot(e[1]-t[1],e[0]-t[0])}function L(e,t,u){let x=Math.sin(u),g=Math.cos(u),y=e[0]-t[0],n=e[1]-t[1],f=y*g-n*x,d=y*x+n*g;return[f+t[0],d+t[1]]}function V(e,t,u){return l(e,b(a(t,e),u))}function Z(e,t,u){return l(e,b(t,u))}var{min:T,PI:xe}=Math,ce=.275,j=xe+1e-4;function $(e,t={}){let{size:u=16,smoothing:x=.5,thinning:g=.5,simulatePressure:y=!0,easing:n=r=>r,start:f={},end:d={},last:_=!1}=t,{cap:S=!0,easing:q=r=>r*(2-r)}=f,{cap:C=!0,easing:p=r=>--r*r*r+1}=d;if(e.length===0||u<=0)return[];let m=e[e.length-1].runningLength,h=f.taper===!1?0:f.taper===!0?Math.max(u,m):f.taper,z=d.taper===!1?0:d.taper===!0?Math.max(u,m):d.taper,ee=Math.pow(u*x,2),D=[],M=[],N=e.slice(0,10).reduce((r,i)=>{let o=i.pressure;if(y){let s=T(1,i.distance/u),J=T(1,1-s);o=T(1,r+(J-r)*(s*ce))}return(r+o)/2},e[0].pressure),c=W(u,g,e[e.length-1].pressure,n),U,te=e[0].vector,I=e[0].point,F=I,O=I,E=F;for(let r=0;r<e.length;r++){let{pressure:i}=e[r],{point:o,vector:s,distance:J,runningLength:K}=e[r];if(r<e.length-1&&m-K<3)continue;if(g){if(y){let v=T(1,J/u),Q=T(1,1-v);i=T(1,N+(Q-N)*(v*ce))}c=W(u,g,i,n)}else c=u/2;U===void 0&&(U=c);let ae=K<h?q(K/h):1,le=m-K<z?p((m-K)/z):1;if(c=Math.max(.01,c*Math.min(ae,le)),r===e.length-1){let v=b(R(s),c);D.push(a(o,v)),M.push(l(o,v));continue}let re=e[r+1].vector,ne=ie(s,re);if(ne<0){let v=b(R(te),c);for(let Q=1/13,G=0;G<=1;G+=Q)O=L(a(o,v),o,j*G),D.push(O),E=L(l(o,v),o,j*-G),M.push(E);I=O,F=E;continue}let oe=b(R(V(re,s,ne)),c);O=a(o,oe),(r<=1||Y(I,O)>ee)&&(D.push(O),I=O),E=l(o,oe),(r<=1||Y(F,E)>ee)&&(M.push(E),F=E),N=i,te=s}let k=e[0].point.slice(0,2),P=e.length>1?e[e.length-1].point.slice(0,2):l(e[0].point,[1,1]),X=[],w=[];if(e.length===1){if(!(h||z)||_){let r=Z(k,H(R(a(k,P))),-(U||c)),i=[];for(let o=1/13,s=o;s<=1;s+=o)i.push(L(r,k,j*2*s));return i}}else{if(!(h||z&&e.length===1))if(S)for(let i=1/13,o=i;o<=1;o+=i){let s=L(M[0],k,j*o);X.push(s)}else{let i=a(D[0],M[0]),o=b(i,.5),s=b(i,.51);X.push(a(k,o),a(k,s),l(k,s),l(k,o))}let r=R(se(e[e.length-1].vector));if(z||h&&e.length===1)w.push(P);else if(C){let i=Z(P,r,c);for(let o=1/29,s=o;s<1;s+=o)w.push(L(i,P,j*3*s))}else w.push(l(P,b(r,c)),l(P,b(r,c*.99)),a(P,b(r,c*.99)),a(P,b(r,c)))}return D.concat(w,M.reverse(),X)}function B(e,t={}){var C;let{streamline:u=.5,size:x=16,last:g=!1}=t;if(e.length===0)return[];let y=.15+(1-u)*.85,n=Array.isArray(e[0])?e:e.map(({x:p,y:m,pressure:h=.5})=>[p,m,h]);if(n.length===2){let p=n[1];n=n.slice(0,-1);for(let m=1;m<5;m++)n.push(V(n[0],p,m/4))}n.length===1&&(n=[...n,[...l(n[0],[1,1]),...n[0].slice(2)]]);let f=[{point:[n[0][0],n[0][1]],pressure:n[0][2]>=0?n[0][2]:.25,vector:[1,1],distance:0,runningLength:0}],d=!1,_=0,S=f[0],q=n.length-1;for(let p=1;p<n.length;p++){let m=g&&p===q?n[p].slice(0,2):V(S.point,n[p],y);if(me(S.point,m))continue;let h=pe(m,S.point);if(_+=h,p<q&&!d){if(_<x)continue;d=!0}S={point:m,pressure:n[p][2]>=0?n[p][2]:.5,vector:H(a(S.point,m)),distance:h,runningLength:_},f.push(S)}return f[0].vector=((C=f[1])==null?void 0:C.vector)||[0,0],f}function A(e,t={}){return $(B(e,t),t)}var Se=A;
var pe=Object.defineProperty;var ge=e=>pe(e,"__esModule",{value:!0});var de=(e,t)=>{ge(e);for(var s in t)pe(e,s,{get:t[s],enumerable:!0})};de(exports,{default:()=>ve,getStroke:()=>ne,getStrokeOutlinePoints:()=>te,getStrokePoints:()=>re});function $(e,t,s,x=h=>h){return e*x(.5-t*(.5-s))}function ce(e){return[-e[0],-e[1]]}function l(e,t){return[e[0]+t[0],e[1]+t[1]]}function a(e,t){return[e[0]-t[0],e[1]-t[1]]}function b(e,t){return[e[0]*t,e[1]*t]}function xe(e,t){return[e[0]/t,e[1]/t]}function R(e){return[e[1],-e[0]]}function B(e,t){return e[0]*t[0]+e[1]*t[1]}function me(e,t){return e[0]===t[0]&&e[1]===t[1]}function Se(e){return Math.hypot(e[0],e[1])}function Pe(e){return e[0]*e[0]+e[1]*e[1]}function A(e,t){return Pe(a(e,t))}function G(e){return xe(e,Se(e))}function ae(e,t){return Math.hypot(e[1]-t[1],e[0]-t[0])}function L(e,t,s){let x=Math.sin(s),h=Math.cos(s),y=e[0]-t[0],n=e[1]-t[1],f=y*h-n*x,d=y*x+n*h;return[f+t[0],d+t[1]]}function K(e,t,s){return l(e,b(a(t,e),s))}function ee(e,t,s){return l(e,b(t,s))}var{min:C,PI:ke}=Math,le=.275,V=ke+1e-4;function te(e,t={}){let{size:s=16,smoothing:x=.5,thinning:h=.5,simulatePressure:y=!0,easing:n=r=>r,start:f={},end:d={},last:D=!1}=t,{cap:S=!0,easing:j=r=>r*(2-r)}=f,{cap:q=!0,easing:c=r=>--r*r*r+1}=d;if(e.length===0||s<=0)return[];let p=e[e.length-1].runningLength,g=f.taper===!1?0:f.taper===!0?Math.max(s,p):f.taper,T=d.taper===!1?0:d.taper===!0?Math.max(s,p):d.taper,oe=Math.pow(s*x,2),_=[],M=[],H=e.slice(0,10).reduce((r,i)=>{let o=i.pressure;if(y){let u=C(1,i.distance/s),W=C(1,1-u);o=C(1,r+(W-r)*(u*le))}return(r+o)/2},e[0].pressure),m=$(s,h,e[e.length-1].pressure,n),U,X=e[0].vector,z=e[0].point,F=z,O=z,E=F,J=!1;for(let r=0;r<e.length;r++){let{pressure:i}=e[r],{point:o,vector:u,distance:W,runningLength:I}=e[r];if(r<e.length-1&&p-I<3)continue;if(h){if(y){let v=C(1,W/s),Z=C(1,1-v);i=C(1,H+(Z-H)*(v*le))}m=$(s,h,i,n)}else m=s/2;U===void 0&&(U=m);let fe=I<g?j(I/g):1,be=p-I<T?c((p-I)/T):1;m=Math.max(.01,m*Math.min(fe,be));let se=(r<e.length-1?e[r+1]:e[r]).vector,Y=r<e.length-1?B(u,se):1,he=B(u,X)<0&&!J,ue=Y!==null&&Y<0;if(he||ue){let v=b(R(X),m);for(let Z=1/13,w=0;w<=1;w+=Z)O=L(a(o,v),o,V*w),_.push(O),E=L(l(o,v),o,V*-w),M.push(E);z=O,F=E,ue&&(J=!0);continue}if(J=!1,r===e.length-1){let v=b(R(u),m);_.push(a(o,v)),M.push(l(o,v));continue}let ie=b(R(K(se,u,Y)),m);O=a(o,ie),(r<=1||A(z,O)>oe)&&(_.push(O),z=O),E=l(o,ie),(r<=1||A(F,E)>oe)&&(M.push(E),F=E),H=i,X=u}let P=e[0].point.slice(0,2),k=e.length>1?e[e.length-1].point.slice(0,2):l(e[0].point,[1,1]),Q=[],N=[];if(e.length===1){if(!(g||T)||D){let r=ee(P,G(R(a(P,k))),-(U||m)),i=[];for(let o=1/13,u=o;u<=1;u+=o)i.push(L(r,P,V*2*u));return i}}else{if(!(g||T&&e.length===1))if(S)for(let i=1/13,o=i;o<=1;o+=i){let u=L(M[0],P,V*o);Q.push(u)}else{let i=a(_[0],M[0]),o=b(i,.5),u=b(i,.51);Q.push(a(P,o),a(P,u),l(P,u),l(P,o))}let r=R(ce(e[e.length-1].vector));if(T||g&&e.length===1)N.push(k);else if(q){let i=ee(k,r,m);for(let o=1/29,u=o;u<1;u+=o)N.push(L(i,k,V*3*u))}else N.push(l(k,b(r,m)),l(k,b(r,m*.99)),a(k,b(r,m*.99)),a(k,b(r,m)))}return _.concat(N,M.reverse(),Q)}function re(e,t={}){var q;let{streamline:s=.5,size:x=16,last:h=!1}=t;if(e.length===0)return[];let y=.15+(1-s)*.85,n=Array.isArray(e[0])?e:e.map(({x:c,y:p,pressure:g=.5})=>[c,p,g]);if(n.length===2){let c=n[1];n=n.slice(0,-1);for(let p=1;p<5;p++)n.push(K(n[0],c,p/4))}n.length===1&&(n=[...n,[...l(n[0],[1,1]),...n[0].slice(2)]]);let f=[{point:[n[0][0],n[0][1]],pressure:n[0][2]>=0?n[0][2]:.25,vector:[1,1],distance:0,runningLength:0}],d=!1,D=0,S=f[0],j=n.length-1;for(let c=1;c<n.length;c++){let p=h&&c===j?n[c].slice(0,2):K(S.point,n[c],y);if(me(S.point,p))continue;let g=ae(p,S.point);if(D+=g,c<j&&!d){if(D<x)continue;d=!0}S={point:p,pressure:n[c][2]>=0?n[c][2]:.5,vector:G(a(S.point,p)),distance:g,runningLength:D},f.push(S)}return f[0].vector=((q=f[1])==null?void 0:q.vector)||[0,0],f}function ne(e,t={}){return te(re(e,t),t)}var ve=ne;

@@ -1,1 +0,1 @@

function W(e,t,u,x=g=>g){return e*x(.5-t*(.5-u))}function re(e){return[-e[0],-e[1]]}function l(e,t){return[e[0]+t[0],e[1]+t[1]]}function a(e,t){return[e[0]-t[0],e[1]-t[1]]}function b(e,t){return[e[0]*t,e[1]*t]}function le(e,t){return[e[0]/t,e[1]/t]}function R(e){return[e[1],-e[0]]}function ne(e,t){return e[0]*t[0]+e[1]*t[1]}function oe(e,t){return e[0]===t[0]&&e[1]===t[1]}function fe(e){return Math.hypot(e[0],e[1])}function be(e){return e[0]*e[0]+e[1]*e[1]}function Y(e,t){return be(a(e,t))}function H(e){return le(e,fe(e))}function ue(e,t){return Math.hypot(e[1]-t[1],e[0]-t[0])}function L(e,t,u){let x=Math.sin(u),g=Math.cos(u),y=e[0]-t[0],n=e[1]-t[1],f=y*g-n*x,d=y*x+n*g;return[f+t[0],d+t[1]]}function V(e,t,u){return l(e,b(a(t,e),u))}function Z(e,t,u){return l(e,b(t,u))}var{min:T,PI:ge}=Math,se=.275,j=ge+1e-4;function ie(e,t={}){let{size:u=16,smoothing:x=.5,thinning:g=.5,simulatePressure:y=!0,easing:n=r=>r,start:f={},end:d={},last:_=!1}=t,{cap:S=!0,easing:q=r=>r*(2-r)}=f,{cap:C=!0,easing:p=r=>--r*r*r+1}=d;if(e.length===0||u<=0)return[];let m=e[e.length-1].runningLength,h=f.taper===!1?0:f.taper===!0?Math.max(u,m):f.taper,z=d.taper===!1?0:d.taper===!0?Math.max(u,m):d.taper,$=Math.pow(u*x,2),D=[],M=[],N=e.slice(0,10).reduce((r,i)=>{let o=i.pressure;if(y){let s=T(1,i.distance/u),J=T(1,1-s);o=T(1,r+(J-r)*(s*se))}return(r+o)/2},e[0].pressure),c=W(u,g,e[e.length-1].pressure,n),U,B=e[0].vector,I=e[0].point,F=I,O=I,E=F;for(let r=0;r<e.length;r++){let{pressure:i}=e[r],{point:o,vector:s,distance:J,runningLength:K}=e[r];if(r<e.length-1&&m-K<3)continue;if(g){if(y){let v=T(1,J/u),Q=T(1,1-v);i=T(1,N+(Q-N)*(v*se))}c=W(u,g,i,n)}else c=u/2;U===void 0&&(U=c);let ce=K<h?q(K/h):1,ae=m-K<z?p((m-K)/z):1;if(c=Math.max(.01,c*Math.min(ce,ae)),r===e.length-1){let v=b(R(s),c);D.push(a(o,v)),M.push(l(o,v));continue}let A=e[r+1].vector,ee=ne(s,A);if(ee<0){let v=b(R(B),c);for(let Q=1/13,G=0;G<=1;G+=Q)O=L(a(o,v),o,j*G),D.push(O),E=L(l(o,v),o,j*-G),M.push(E);I=O,F=E;continue}let te=b(R(V(A,s,ee)),c);O=a(o,te),(r<=1||Y(I,O)>$)&&(D.push(O),I=O),E=l(o,te),(r<=1||Y(F,E)>$)&&(M.push(E),F=E),N=i,B=s}let k=e[0].point.slice(0,2),P=e.length>1?e[e.length-1].point.slice(0,2):l(e[0].point,[1,1]),X=[],w=[];if(e.length===1){if(!(h||z)||_){let r=Z(k,H(R(a(k,P))),-(U||c)),i=[];for(let o=1/13,s=o;s<=1;s+=o)i.push(L(r,k,j*2*s));return i}}else{if(!(h||z&&e.length===1))if(S)for(let i=1/13,o=i;o<=1;o+=i){let s=L(M[0],k,j*o);X.push(s)}else{let i=a(D[0],M[0]),o=b(i,.5),s=b(i,.51);X.push(a(k,o),a(k,s),l(k,s),l(k,o))}let r=R(re(e[e.length-1].vector));if(z||h&&e.length===1)w.push(P);else if(C){let i=Z(P,r,c);for(let o=1/29,s=o;s<1;s+=o)w.push(L(i,P,j*3*s))}else w.push(l(P,b(r,c)),l(P,b(r,c*.99)),a(P,b(r,c*.99)),a(P,b(r,c)))}return D.concat(w,M.reverse(),X)}function me(e,t={}){var C;let{streamline:u=.5,size:x=16,last:g=!1}=t;if(e.length===0)return[];let y=.15+(1-u)*.85,n=Array.isArray(e[0])?e:e.map(({x:p,y:m,pressure:h=.5})=>[p,m,h]);if(n.length===2){let p=n[1];n=n.slice(0,-1);for(let m=1;m<5;m++)n.push(V(n[0],p,m/4))}n.length===1&&(n=[...n,[...l(n[0],[1,1]),...n[0].slice(2)]]);let f=[{point:[n[0][0],n[0][1]],pressure:n[0][2]>=0?n[0][2]:.25,vector:[1,1],distance:0,runningLength:0}],d=!1,_=0,S=f[0],q=n.length-1;for(let p=1;p<n.length;p++){let m=g&&p===q?n[p].slice(0,2):V(S.point,n[p],y);if(oe(S.point,m))continue;let h=ue(m,S.point);if(_+=h,p<q&&!d){if(_<x)continue;d=!0}S={point:m,pressure:n[p][2]>=0?n[p][2]:.5,vector:H(a(S.point,m)),distance:h,runningLength:_},f.push(S)}return f[0].vector=((C=f[1])==null?void 0:C.vector)||[0,0],f}function pe(e,t={}){return ie(me(e,t),t)}var Te=pe;export{Te as default,pe as getStroke,ie as getStrokeOutlinePoints,me as getStrokePoints};
function $(e,t,u,x=h=>h){return e*x(.5-t*(.5-u))}function se(e){return[-e[0],-e[1]]}function l(e,t){return[e[0]+t[0],e[1]+t[1]]}function a(e,t){return[e[0]-t[0],e[1]-t[1]]}function b(e,t){return[e[0]*t,e[1]*t]}function he(e,t){return[e[0]/t,e[1]/t]}function R(e){return[e[1],-e[0]]}function B(e,t){return e[0]*t[0]+e[1]*t[1]}function ue(e,t){return e[0]===t[0]&&e[1]===t[1]}function ge(e){return Math.hypot(e[0],e[1])}function de(e){return e[0]*e[0]+e[1]*e[1]}function A(e,t){return de(a(e,t))}function G(e){return he(e,ge(e))}function ie(e,t){return Math.hypot(e[1]-t[1],e[0]-t[0])}function L(e,t,u){let x=Math.sin(u),h=Math.cos(u),y=e[0]-t[0],n=e[1]-t[1],f=y*h-n*x,d=y*x+n*h;return[f+t[0],d+t[1]]}function K(e,t,u){return l(e,b(a(t,e),u))}function ee(e,t,u){return l(e,b(t,u))}var{min:C,PI:xe}=Math,pe=.275,V=xe+1e-4;function ce(e,t={}){let{size:u=16,smoothing:x=.5,thinning:h=.5,simulatePressure:y=!0,easing:n=r=>r,start:f={},end:d={},last:D=!1}=t,{cap:S=!0,easing:j=r=>r*(2-r)}=f,{cap:q=!0,easing:c=r=>--r*r*r+1}=d;if(e.length===0||u<=0)return[];let p=e[e.length-1].runningLength,g=f.taper===!1?0:f.taper===!0?Math.max(u,p):f.taper,T=d.taper===!1?0:d.taper===!0?Math.max(u,p):d.taper,te=Math.pow(u*x,2),_=[],M=[],H=e.slice(0,10).reduce((r,i)=>{let o=i.pressure;if(y){let s=C(1,i.distance/u),W=C(1,1-s);o=C(1,r+(W-r)*(s*pe))}return(r+o)/2},e[0].pressure),m=$(u,h,e[e.length-1].pressure,n),U,X=e[0].vector,z=e[0].point,F=z,O=z,E=F,J=!1;for(let r=0;r<e.length;r++){let{pressure:i}=e[r],{point:o,vector:s,distance:W,runningLength:I}=e[r];if(r<e.length-1&&p-I<3)continue;if(h){if(y){let v=C(1,W/u),Z=C(1,1-v);i=C(1,H+(Z-H)*(v*pe))}m=$(u,h,i,n)}else m=u/2;U===void 0&&(U=m);let le=I<g?j(I/g):1,fe=p-I<T?c((p-I)/T):1;m=Math.max(.01,m*Math.min(le,fe));let re=(r<e.length-1?e[r+1]:e[r]).vector,Y=r<e.length-1?B(s,re):1,be=B(s,X)<0&&!J,ne=Y!==null&&Y<0;if(be||ne){let v=b(R(X),m);for(let Z=1/13,w=0;w<=1;w+=Z)O=L(a(o,v),o,V*w),_.push(O),E=L(l(o,v),o,V*-w),M.push(E);z=O,F=E,ne&&(J=!0);continue}if(J=!1,r===e.length-1){let v=b(R(s),m);_.push(a(o,v)),M.push(l(o,v));continue}let oe=b(R(K(re,s,Y)),m);O=a(o,oe),(r<=1||A(z,O)>te)&&(_.push(O),z=O),E=l(o,oe),(r<=1||A(F,E)>te)&&(M.push(E),F=E),H=i,X=s}let P=e[0].point.slice(0,2),k=e.length>1?e[e.length-1].point.slice(0,2):l(e[0].point,[1,1]),Q=[],N=[];if(e.length===1){if(!(g||T)||D){let r=ee(P,G(R(a(P,k))),-(U||m)),i=[];for(let o=1/13,s=o;s<=1;s+=o)i.push(L(r,P,V*2*s));return i}}else{if(!(g||T&&e.length===1))if(S)for(let i=1/13,o=i;o<=1;o+=i){let s=L(M[0],P,V*o);Q.push(s)}else{let i=a(_[0],M[0]),o=b(i,.5),s=b(i,.51);Q.push(a(P,o),a(P,s),l(P,s),l(P,o))}let r=R(se(e[e.length-1].vector));if(T||g&&e.length===1)N.push(k);else if(q){let i=ee(k,r,m);for(let o=1/29,s=o;s<1;s+=o)N.push(L(i,k,V*3*s))}else N.push(l(k,b(r,m)),l(k,b(r,m*.99)),a(k,b(r,m*.99)),a(k,b(r,m)))}return _.concat(N,M.reverse(),Q)}function me(e,t={}){var q;let{streamline:u=.5,size:x=16,last:h=!1}=t;if(e.length===0)return[];let y=.15+(1-u)*.85,n=Array.isArray(e[0])?e:e.map(({x:c,y:p,pressure:g=.5})=>[c,p,g]);if(n.length===2){let c=n[1];n=n.slice(0,-1);for(let p=1;p<5;p++)n.push(K(n[0],c,p/4))}n.length===1&&(n=[...n,[...l(n[0],[1,1]),...n[0].slice(2)]]);let f=[{point:[n[0][0],n[0][1]],pressure:n[0][2]>=0?n[0][2]:.25,vector:[1,1],distance:0,runningLength:0}],d=!1,D=0,S=f[0],j=n.length-1;for(let c=1;c<n.length;c++){let p=h&&c===j?n[c].slice(0,2):K(S.point,n[c],y);if(ue(S.point,p))continue;let g=ie(p,S.point);if(D+=g,c<j&&!d){if(D<x)continue;d=!0}S={point:p,pressure:n[c][2]>=0?n[c][2]:.5,vector:G(a(S.point,p)),distance:g,runningLength:D},f.push(S)}return f[0].vector=((q=f[1])==null?void 0:q.vector)||[0,0],f}function ae(e,t={}){return ce(me(e,t),t)}var _e=ae;export{_e as default,ae as getStroke,ce as getStrokeOutlinePoints,me as getStrokePoints};
{
"version": "1.1.0",
"version": "1.2.0",
"name": "perfect-freehand",

@@ -24,2 +24,9 @@ "private": false,

],
"exports": {
".": {
"types": "./dist/types/index.d.ts",
"require": "./dist/cjs/index.js",
"import": "./dist/esm/index.js"
}
},
"license": "MIT",

@@ -59,4 +66,3 @@ "main": "./dist/cjs/index.js",

"typescript": "^4.4.2"
},
"gitHead": "87687e099ca8e0e5864a2b87a56c4c09e57da369"
}
}

@@ -265,16 +265,26 @@ # ![Screenshot](assets/perfect-freehand-logo.svg 'Perfect Freehand')

```js
const average = (a, b) => (a + b) / 2
function getSvgPathFromStroke(stroke) {
if (!stroke.length) return ''
const len = points.length
const d = stroke.reduce(
(acc, [x0, y0], i, arr) => {
const [x1, y1] = arr[(i + 1) % arr.length]
acc.push(x0, y0, (x0 + x1) / 2, (y0 + y1) / 2)
return acc
},
['M', ...stroke[0], 'Q']
)
if (!len) {
return ''
}
d.push('Z')
return d.join(' ')
const first = points[0]
let result = `M${first[0].toFixed(3)},${first[1].toFixed(3)}Q`
for (let i = 0, max = len - 1; i < max; i++) {
const a = points[i]
const b = points[i + 1]
result += `${a[0].toFixed(3)},${a[1].toFixed(3)} ${average(
a[0],
b[0]
).toFixed(3)},${average(a[1], b[1]).toFixed(3)} `
}
result += 'Z'
return result
}

@@ -281,0 +291,0 @@ ```

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc