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

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

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

@@ -23,3 +23,3 @@ /**

cap?: boolean;
taper?: number;
taper?: number | boolean;
easing?: (distance: number) => number;

@@ -29,3 +29,3 @@ };

cap?: boolean;
taper?: number;
taper?: number | boolean;
easing?: (distance: number) => number;

@@ -32,0 +32,0 @@ };

{
"version": "1.0.16",
"version": "1.1.0",
"name": "perfect-freehand",

@@ -59,3 +59,3 @@ "private": false,

},
"gitHead": "ef6924584819043d66d7df347180e6feef8f5d8f"
"gitHead": "87687e099ca8e0e5864a2b87a56c4c09e57da369"
}

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

| Property | Type | Default | Description |
| -------- | -------- | ------- | ------------------------------------------- |
| `cap` | boolean | true | Whether to draw a cap. |
| `taper` | number | 0 | The distance to taper. |
| `easing` | function | t => t | An easing function for the tapering effect. |
| Property | Type | Default | Description |
| -------- | ----------------- | ------- | ---------------------------------------------------------------------------------------- |
| `cap` | boolean | true | Whether to draw a cap. |
| `taper` | number or boolean | 0 | The distance to taper. If set to true, the taper will be the total length of the stroke. |
| `easing` | function | t => t | An easing function for the tapering effect. |

@@ -179,0 +179,0 @@ **Note:** The `cap` property has no effect when `taper` is more than zero.

Sorry, the diff of this file is not supported yet

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