UNPKG

fettepalette

Version:

Color ramp generator using curves within the HSV color model

2 lines (1 loc) 2.61 kB
var fettepalette=(()=>{var y=Object.defineProperty;var C=Math.pow;var I=e=>y(e,"__esModule",{value:!0});var F=(e,r)=>{I(e);for(var o in r)y(e,o,{get:r[o],enumerable:!0})};var O={};F(O,{generateRandomColorRamp:()=>G,generateRandomColorRampParams:()=>N,hsv2hsl:()=>R,hsv2hsx:()=>c,pointOnCurve:()=>M});var R=(e,r,o,t=o-o*r/2,p=Math.min(t,1-t))=>[e,p?(o-t)/p:0,t],c=(e,r,o,t)=>t==="hsl"?R(e,r,o):[e,r,o],M=(e,r,o,t,p=[0,0],m=[1,1])=>{let x=Math.PI/2,u=x/o,s=r/o,a=0,n=0;if(e==="lam\xE9"){let l=s*x,i=2/(2+20*t),h=Math.cos(l),f=Math.sin(l);a=Math.sign(h)*C(Math.abs(h),i),n=Math.sign(f)*C(Math.abs(f),i)}else if(e==="arc")n=Math.cos(-Math.PI/2+r*u+t),a=Math.sin(Math.PI/2+r*u-t);else if(e==="pow")a=Math.pow(1-s,1-t),n=Math.pow(s,1-t);else if(e==="powY")a=Math.pow(1-s,t),n=Math.pow(s,1-t);else if(e==="powX")a=Math.pow(s,t),n=Math.pow(s,1-t);else if(typeof e=="function")a=e(s)[0],n=e(s)[1];else throw new Error(`pointOnCurve() curveAccent parameter is expected to be "lam\xE9" | "arc" | "pow" | "powY" | "powX" or a function but \`${e}\` given.`);return a=p[0]+Math.min(Math.max(a,0),1)*(m[0]-p[0]),n=p[1]+Math.min(Math.max(n,0),1)*(m[1]-p[1]),[a,n]};function G({total:e=3,centerHue:r=0,hueCycle:o=.3,offsetTint:t=.1,offsetShade:p=.1,curveAccent:m=0,tintShadeHueShift:x=.1,curveMethod:u="arc",offsetCurveModTint:s=.03,offsetCurveModShade:a=.03,minSaturationLight:n=[0,0],maxSaturationLight:l=[1,1],colorModel:i="hsl"}={}){let h=[],f=[],w=[];for(let b=1;b<e+1;b++){let[S,T]=M(u,b,e+1,m,n,l),d=(360+(-180*o+(r+b*(360/(e+1))*o)))%360,k=c(d,S,T,i);h.push(k);let[P,X]=M(u,b,e+1,m+s,n,l),V=c(d,P,X,i);f.push([(d+360*x)%360,V[1]-t,V[2]+t]);let[Y,H]=M(u,b,e+1,m-a,n,l),g=c(d,Y,H,i);w.push([(360+(d-360*x))%360,g[1]-p,g[2]-p])}return{light:f,dark:w,base:h,all:[...f,...h,...w]}}var N={curveMethod:{default:"lam\xE9",props:{options:["lam\xE9","arc","pow","powY","powX"]}},curveAccent:{default:0,props:{min:-.095,max:1,step:.001}},total:{default:9,props:{min:3,max:35,step:1}},centerHue:{default:0,props:{min:0,max:360,step:.1}},hueCycle:{default:.3,props:{min:-1.25,max:1.5,step:.001}},offsetTint:{default:.01,props:{min:0,max:.4,step:.001}},offsetShade:{default:.01,props:{min:0,max:.4,step:.001}},tintShadeHueShift:{default:.01,props:{min:0,max:1,step:.001}},offsetCurveModTint:{default:.03,props:{min:0,max:.4,step:1e-4}},offsetCurveModShade:{default:.03,props:{min:0,max:.4,step:1e-4}},minSaturation:{default:0,props:{min:0,max:1,step:.001}},minLight:{default:0,props:{min:0,max:1,step:.001}},maxSaturation:{default:1,props:{min:0,max:1,step:.001}},maxLight:{default:1,props:{min:0,max:1,step:.001}}};return O;})();