perfect-freehand
Advanced tools
Comparing version 1.0.14 to 1.0.15
# Changelog | ||
## 1.0.15 | ||
- Bug fixes related to very short lines. | ||
## 1.0.14 | ||
@@ -4,0 +8,0 @@ |
@@ -1,1 +0,1 @@ | ||
var ue=Object.defineProperty;var be=e=>ue(e,"__esModule",{value:!0});var ge=(e,t)=>{be(e);for(var r in t)ue(e,r,{get:t[r],enumerable:!0})};ge(exports,{default:()=>ke,getStroke:()=>ee,getStrokeOutlinePoints:()=>B,getStrokePoints:()=>A});function Y(e,t,r,x=g=>g){return e*x(.5-t*(.5-r))}function c(e,t){return[e[0]+t[0],e[1]+t[1]]}function p(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 K(e){return[e[1],-e[0]]}function ie(e,t){return e[0]*t[0]+e[1]*t[1]}function pe(e,t){return e[0]===t[0]&&e[1]===t[1]}function de(e){return Math.hypot(e[0],e[1])}function xe(e){return e[0]*e[0]+e[1]*e[1]}function Z(e,t){return xe(p(e,t))}function j(e){return he(e,de(e))}function me(e,t){return Math.hypot(e[1]-t[1],e[0]-t[0])}function ce(e,t){return b(c(e,t),.5)}function V(e,t,r){let x=Math.sin(r),g=Math.cos(r),v=e[0]-t[0],o=e[1]-t[1],h=v*g-o*x,L=v*x+o*g;return[h+t[0],L+t[1]]}function H(e,t,r){return c(e,b(p(t,e),r))}function $(e,t,r){return c(e,b(t,r))}var{min:_,PI:Se}=Math,ae=.275,q=Se+1e-4;function B(e,t={}){let{size:r=16,smoothing:x=.5,thinning:g=.5,simulatePressure:v=!0,easing:o=n=>n,start:h={},end:L={},last:z=!1}=t,{cap:S=!0,taper:k=0,easing:C=n=>n*(2-n)}=h,{cap:a=!0,taper:l=0,easing:T=n=>--n*n*n+1}=L;if(e.length===0||r<=0)return[];let N=e[e.length-1].runningLength,te=Math.pow(r*x,2),O=[],P=[],U=e.slice(0,10).reduce((n,i)=>{let s=i.pressure;if(v){let u=_(1,i.distance/r),f=_(1,1-u);s=_(1,n+(f-n)*(u*ae))}return(n+s)/2},e[0].pressure),m=Y(r,g,e[e.length-1].pressure,o),X,ne=e[0].vector,D=e[0].point,F=D,E=D,M=F;for(let n=0;n<e.length-1;n++){let{pressure:i}=e[n],{point:s,vector:u,distance:f,runningLength:R}=e[n];if(N-R<3)continue;if(g){if(v){let I=_(1,f/r),W=_(1,1-I);i=_(1,U+(W-U)*(I*ae))}m=Y(r,g,i,o)}else m=r/2;X===void 0&&(X=m);let le=R<k?C(R/k):1,fe=N-R<l?T((N-R)/l):1;m=Math.max(.01,m*Math.min(le,fe));let re=e[n+1].vector,oe=ie(u,re);if(oe<0){let I=b(K(ne),m);for(let W=1/13,G=0;G<=1;G+=W)E=V(p(s,I),s,q*G),O.push(E),M=V(c(s,I),s,q*-G),P.push(M);D=E,F=M;continue}let se=b(K(H(re,u,oe)),m);E=p(s,se),(n===0||Z(D,E)>te)&&(O.push(E),D=E),M=c(s,se),(n===0||Z(F,M)>te)&&(P.push(M),F=M),U=i,ne=u}let y=e[0].point.slice(0,2),d=e.length>1?e[e.length-1].point.slice(0,2):c(e[0].point,[1,1]),J=O.length<=1||P.length<=1,Q=[],w=[];if(J){if(!(k||l)||z){let n=$(y,j(K(p(y,d))),-(X||m)),i=[];for(let s=1/13,u=s;u<=1;u+=s)i.push(V(n,y,q*2*u));return i}}else{if(!(k||l&&J))if(S)for(let s=1/13,u=s;u<=1;u+=s){let f=V(P[0],y,q*u);Q.push(f)}else{let s=p(O[0],P[0]),u=b(s,.5),f=b(s,.51);Q.push(p(y,u),p(y,f),c(y,f),c(y,u))}let n=ce(O[O.length-1],P[P.length-1]),i=K(j(p(d,n)));if(l||k&&J)w.push(d);else if(a){let s=$(d,i,m);for(let u=1/29,f=0;f<=1;f+=u){let R=V(s,d,q*3*f);w.push(R)}}else w.push(c(d,b(i,m)),c(d,b(i,m*.99)),p(d,b(i,m*.99)),p(d,b(i,m)))}return O.concat(w,P.reverse(),Q)}function A(e,t={}){var C;let{streamline:r=.5,size:x=16,last:g=!1}=t;if(e.length===0)return[];let v=.15+(1-r)*.85,o=Array.isArray(e[0])?e:e.map(({x:a,y:l,pressure:T=.5})=>[a,l,T]);o.length===1&&(o=[...o,[...c(o[0],[1,1]),...o[0].slice(2)]]);let h=[{point:[o[0][0],o[0][1]],pressure:o[0][2]>=0?o[0][2]:.25,vector:[1,1],distance:0,runningLength:0}],L=!1,z=0,S=h[0],k=o.length-1;for(let a=1;a<o.length;a++){let l=g&&a===k?o[a]:H(S.point,o[a],v);if(pe(S.point,l))continue;let T=me(l,S.point);if(z+=T,a<k&&!L){if(z<x)continue;L=!0}S={point:l,pressure:o[a][2]>=0?o[a][2]:.5,vector:j(p(S.point,l)),distance:T,runningLength:z},h.push(S)}return h[0].vector=((C=h[1])==null?void 0:C.vector)||[0,0],h}function ee(e,t={}){return B(A(e,t),t)}var ke=ee; | ||
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; |
@@ -1,1 +0,1 @@ | ||
function Y(e,t,u,x=g=>g){return e*x(.5-t*(.5-u))}function c(e,t){return[e[0]+t[0],e[1]+t[1]]}function p(e,t){return[e[0]-t[0],e[1]-t[1]]}function b(e,t){return[e[0]*t,e[1]*t]}function fe(e,t){return[e[0]/t,e[1]/t]}function K(e){return[e[1],-e[0]]}function re(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 be(e){return Math.hypot(e[0],e[1])}function ge(e){return e[0]*e[0]+e[1]*e[1]}function Z(e,t){return ge(p(e,t))}function j(e){return fe(e,be(e))}function se(e,t){return Math.hypot(e[1]-t[1],e[0]-t[0])}function ue(e,t){return b(c(e,t),.5)}function V(e,t,u){let x=Math.sin(u),g=Math.cos(u),v=e[0]-t[0],r=e[1]-t[1],h=v*g-r*x,L=v*x+r*g;return[h+t[0],L+t[1]]}function H(e,t,u){return c(e,b(p(t,e),u))}function $(e,t,u){return c(e,b(t,u))}var{min:_,PI:he}=Math,ie=.275,q=he+1e-4;function pe(e,t={}){let{size:u=16,smoothing:x=.5,thinning:g=.5,simulatePressure:v=!0,easing:r=n=>n,start:h={},end:L={},last:z=!1}=t,{cap:S=!0,taper:k=0,easing:C=n=>n*(2-n)}=h,{cap:a=!0,taper:l=0,easing:T=n=>--n*n*n+1}=L;if(e.length===0||u<=0)return[];let N=e[e.length-1].runningLength,B=Math.pow(u*x,2),O=[],P=[],U=e.slice(0,10).reduce((n,i)=>{let o=i.pressure;if(v){let s=_(1,i.distance/u),f=_(1,1-s);o=_(1,n+(f-n)*(s*ie))}return(n+o)/2},e[0].pressure),m=Y(u,g,e[e.length-1].pressure,r),X,A=e[0].vector,D=e[0].point,F=D,E=D,M=F;for(let n=0;n<e.length-1;n++){let{pressure:i}=e[n],{point:o,vector:s,distance:f,runningLength:R}=e[n];if(N-R<3)continue;if(g){if(v){let I=_(1,f/u),W=_(1,1-I);i=_(1,U+(W-U)*(I*ie))}m=Y(u,g,i,r)}else m=u/2;X===void 0&&(X=m);let ae=R<k?C(R/k):1,le=N-R<l?T((N-R)/l):1;m=Math.max(.01,m*Math.min(ae,le));let ee=e[n+1].vector,te=re(s,ee);if(te<0){let I=b(K(A),m);for(let W=1/13,G=0;G<=1;G+=W)E=V(p(o,I),o,q*G),O.push(E),M=V(c(o,I),o,q*-G),P.push(M);D=E,F=M;continue}let ne=b(K(H(ee,s,te)),m);E=p(o,ne),(n===0||Z(D,E)>B)&&(O.push(E),D=E),M=c(o,ne),(n===0||Z(F,M)>B)&&(P.push(M),F=M),U=i,A=s}let y=e[0].point.slice(0,2),d=e.length>1?e[e.length-1].point.slice(0,2):c(e[0].point,[1,1]),J=O.length<=1||P.length<=1,Q=[],w=[];if(J){if(!(k||l)||z){let n=$(y,j(K(p(y,d))),-(X||m)),i=[];for(let o=1/13,s=o;s<=1;s+=o)i.push(V(n,y,q*2*s));return i}}else{if(!(k||l&&J))if(S)for(let o=1/13,s=o;s<=1;s+=o){let f=V(P[0],y,q*s);Q.push(f)}else{let o=p(O[0],P[0]),s=b(o,.5),f=b(o,.51);Q.push(p(y,s),p(y,f),c(y,f),c(y,s))}let n=ue(O[O.length-1],P[P.length-1]),i=K(j(p(d,n)));if(l||k&&J)w.push(d);else if(a){let o=$(d,i,m);for(let s=1/29,f=0;f<=1;f+=s){let R=V(o,d,q*3*f);w.push(R)}}else w.push(c(d,b(i,m)),c(d,b(i,m*.99)),p(d,b(i,m*.99)),p(d,b(i,m)))}return O.concat(w,P.reverse(),Q)}function me(e,t={}){var C;let{streamline:u=.5,size:x=16,last:g=!1}=t;if(e.length===0)return[];let v=.15+(1-u)*.85,r=Array.isArray(e[0])?e:e.map(({x:a,y:l,pressure:T=.5})=>[a,l,T]);r.length===1&&(r=[...r,[...c(r[0],[1,1]),...r[0].slice(2)]]);let h=[{point:[r[0][0],r[0][1]],pressure:r[0][2]>=0?r[0][2]:.25,vector:[1,1],distance:0,runningLength:0}],L=!1,z=0,S=h[0],k=r.length-1;for(let a=1;a<r.length;a++){let l=g&&a===k?r[a]:H(S.point,r[a],v);if(oe(S.point,l))continue;let T=se(l,S.point);if(z+=T,a<k&&!L){if(z<x)continue;L=!0}S={point:l,pressure:r[a][2]>=0?r[a][2]:.5,vector:j(p(S.point,l)),distance:T,runningLength:z},h.push(S)}return h[0].vector=((C=h[1])==null?void 0:C.vector)||[0,0],h}function ce(e,t={}){return pe(me(e,t),t)}var Te=ce;export{Te as default,ce as getStroke,pe as getStrokeOutlinePoints,me as getStrokePoints}; | ||
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}; |
{ | ||
"version": "1.0.14", | ||
"version": "1.0.15", | ||
"name": "perfect-freehand", | ||
@@ -59,3 +59,3 @@ "private": false, | ||
}, | ||
"gitHead": "9a3b3da54b85c34bc6a9803fbc2e7fb1ea1c1fe2" | ||
"gitHead": "b82dc3e526ca11153756d4b4eb72748e3cce0a94" | ||
} |
@@ -37,3 +37,3 @@ # ![Screenshot](assets/perfect-freehand-logo.svg 'Perfect Freehand') | ||
![Screenshot](assets/process.gif "A GIF showing a stroke's input points, outline points, and a curved path connecting these points") | ||
![Screenshot](assets/process.gif 'A GIF showing a stroke with input points, outline points, and a curved path connecting these points') | ||
@@ -354,4 +354,4 @@ To do this work, `getStroke` first creates a set of spline points (red) based on the input points (grey) and then creates outline points (blue). You can render the result any way you like, using whichever technology you prefer. | ||
### Author | ||
## Author | ||
- [@steveruizok](https://twitter.com/steveruizok) |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
31024
135