@aviala-design/color 0.2.2 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- (function(d,g){typeof exports=="object"&&typeof module<"u"?g(exports,require("color")):typeof define=="function"&&define.amd?define(["exports","color"],g):(d=typeof globalThis<"u"?globalThis:d||self,g(d.AvialaColor={},d.Color))})(this,function(d,g){"use strict";function k(e){return g(e).rgb().round().color.join(",")}const G=["hex","rgb","hsl"];function O(e){return!e||G.indexOf(e)<0?"hex":e}function E(e,o){const s=O(o);return s==="hex"?e[s]().toLowerCase():e[s]().round().string()}function L(e,o,s){const n=g(e),t=n.hue(),r=n.saturationv(),a=n.value(),c=(M=>M>=60&&M<=240?2.5:M>=0&&M<60||M>300&&M<=360?1.5:2)(t),u=100,f=9,l=100,h=30;function m(M,y){let p;return t>=60&&t<=240?p=M?t-c*y:t+c*y:p=M?t+c*y:t-c*y,p<0?p+=360:p>=360&&(p-=360),Math.round(p)}function b(M,y){let p;if(M)p=r<=f?r:r-(r-f)/5.5*Math.pow(y,1.05);else{const _=Math.min(u,r+30);p=r+(_-r)/4.2*Math.pow(y,.95)}return Math.max(0,Math.min(100,p))}function S(M,y){return M?Math.min(l,a+(l-a)/5.2*Math.pow(y,.9)):a<=h?a:Math.max(h,a-(a-h)/4.2*Math.pow(y,1.05))}const w=o<6,x=w?6-o:o-6,D=o===6?n:g({h:m(w,x),s:b(w,x),v:S(w,x)});return E(D,s)}function P(e,o,s){const n=g(L(e,10-o+1)),t=g(e),r=t.hue(),a=t.saturationv(),c=g({h:t.hue(),s:l(6),v:t.value()}).saturationv(),u=Math.ceil((c-9)/4),f=Math.ceil((100-c)/5);function l(m){if(m<6)return c+(6-m)*f;if(m===6){if(r>=0&&r<50)return a-15;if(r>=50&&r<191)return a-20;if(r>=191&&r<=360)return a-15}return c-u*(m-6)}const h=g({h:n.hue(),s:l(o),v:n.value()});return E(h,s)}function v(e,o={}){const{dark:s,list:n,index:t=6,format:r="hex"}=o;if(n){const a=[],i=s?P:L;for(let c=1;c<=10;c++)a.push(i(e,c,r));return a}return s?P(e,t,r):L(e,t,r)}async function $(e){try{const o=await q(e),s=N(o);return j(s)}catch(o){throw console.error("提取图片颜色失败:",o),o}}async function q(e){return new Promise((o,s)=>{try{const n=document.createElement("canvas"),t=n.getContext("2d"),r=Math.min(e.width,100),a=Math.min(e.height,100),i=Math.min(r/e.width,a/e.height);n.width=e.width*i,n.height=e.height*i,t.drawImage(e,0,0,n.width,n.height);const c=t.getImageData(0,0,n.width,n.height);o(c)}catch(n){s(n)}})}function N(e){const o=e.data,s=new Map;for(let t=0;t<o.length;t+=4){const r=o[t],a=o[t+1],i=o[t+2];if(o[t+3]<128)continue;const u=Math.round(r/16)*16,f=Math.round(a/16)*16,l=Math.round(i/16)*16,h=`${u},${f},${l}`;s.has(h)?s.set(h,s.get(h)+1):s.set(h,1)}const n=[];return s.forEach((t,r)=>{const[a,i,c]=r.split(",").map(Number);n.push({r:a,g:i,b:c,count:t})}),n}function j(e){e.sort((t,r)=>r.count-t.count);const o=e.filter(t=>{const{r,g:a,b:i}=t,c=Math.max(r,a,i),u=Math.min(r,a,i),f=c-u,l=c===0?0:f/c,h=c/255;return l>.15&&h>.2&&h<.8}),s=o.length>0?o[0]:e[0];return g({r:s.r,g:s.g,b:s.b}).hex()}function U(e){return new Promise((o,s)=>{if(!e.type.startsWith("image/")){s(new Error("请选择图片文件"));return}const n=new FileReader;n.onload=async t=>{try{const r=new Image;r.onload=async()=>{try{const a=await $(r);o(a)}catch(a){s(a)}},r.onerror=()=>s(new Error("图片加载失败")),r.src=t.target.result}catch(r){s(r)}},n.onerror=()=>s(new Error("文件读取失败")),n.readAsDataURL(e)})}function I(e,o,s={}){const{steps:n=10,format:t="hex",includeEnds:r=!0}=s;if(n<2)throw new Error("步数必须至少为2");const a=g(e),i=g(o),c=[],u=r?n:n+2,f=1/(u-1);for(let l=0;l<u;l++){const h=l*f,m=Math.round(a.red()+(i.red()-a.red())*h),b=Math.round(a.green()+(i.green()-a.green())*h),S=Math.round(a.blue()+(i.blue()-a.blue())*h),w=g({r:m,g:b,b:S});!r&&(l===0||l===u-1)||c.push(E(w,t))}return c}function K(e={}){const{startGray:o="#ffffff",endGray:s="#000000",steps:n=10,format:t="hex"}=e;return I(o,s,{steps:n,format:t,includeEnds:!0})}function W(e,o={}){const{steps:s=10,format:n="hex",lightnessRange:t=80}=o,a=g(e).hsl(),i=a.lightness(),c=Math.min(95,i+t/2),u=Math.max(5,i-t/2),f=g({h:a.hue(),s:a.saturationl(),l:c}),l=g({h:a.hue(),s:a.saturationl(),l:u});return I(f.hex(),l.hex(),{steps:s,format:n,includeEnds:!0})}function J(e,o,s={}){const{steps:n=10,format:t="hex",includeEnds:r=!0}=s;if(n<2)throw new Error("步数必须至少为2");const a=g(e).hsl(),i=g(o).hsl(),c=[],u=r?n:n+2,f=1/(u-1);let l=a.hue()||0,h=i.hue()||0;const m=h-l;Math.abs(m)>180&&(m>0?l+=360:h+=360);for(let b=0;b<u;b++){const S=b*f;let w=l+(h-l)*S;const x=a.saturationl()+(i.saturationl()-a.saturationl())*S,D=a.lightness()+(i.lightness()-a.lightness())*S;w=w%360,w<0&&(w+=360);const M=g({h:w,s:x,l:D});!r&&(b===0||b===u-1)||c.push(E(M,t))}return c}function C(e){const o=e.replace("#",""),s=parseInt(o.substr(0,2),16)/255,n=parseInt(o.substr(2,2),16)/255,t=parseInt(o.substr(4,2),16)/255,r=Math.max(s,n,t),a=Math.min(s,n,t),i=r-a;let c=0;i!==0&&(r===s?c=(n-t)/i%6:r===n?c=(t-s)/i+2:c=(s-n)/i+4),c=Math.round(c*60),c<0&&(c+=360);const u=Math.round((.299*s+.587*n+.114*t)*100),f=(r+a)/2,l=i===0?0:i/(1-Math.abs(2*f-1)),h=Math.round(l*Math.min(u,100-u));return{h:c,c:h,t:u}}function H(e){const{h:o,c:s,t:n}=e,t=(o%360+360)%360,r=Math.max(0,Math.min(150,s)),a=Math.max(0,Math.min(100,n)),i=a/100,c=a===0||a===100?0:r/Math.min(a,100-a),u=(1-Math.abs(2*i-1))*Math.min(1,c),f=u*(1-Math.abs(t/60%2-1)),l=i-u/2;let h,m,b;t>=0&&t<60?[h,m,b]=[u,f,0]:t>=60&&t<120?[h,m,b]=[f,u,0]:t>=120&&t<180?[h,m,b]=[0,u,f]:t>=180&&t<240?[h,m,b]=[0,f,u]:t>=240&&t<300?[h,m,b]=[f,0,u]:[h,m,b]=[u,0,f];const S=w=>{const x=Math.max(0,Math.min(1,w+l)),D=Math.round(x*255).toString(16);return D.length===1?"0"+D:D};return`#${S(h)}${S(m)}${S(b)}`}function R(e,o,s=.5){const n=C(e),t=C(o);let r=n.h,a=t.h,i=a-r;Math.abs(i)>180&&(i>0?r+=360:a+=360);const c=(r+(a-r)*s)%360,u=n.c+(t.c-n.c)*s,f=n.t+(t.t-n.t)*s;return H({h:c<0?c+360:c,c:Math.max(0,Math.round(u)),t:Math.max(0,Math.min(100,Math.round(f)))})}function Q(e,o,s=.15){const n=C(e),t=C(o);let r=t.h,a=n.h,i=a-r;Math.abs(i)>180&&(i>0?r+=360:a+=360,i=a-r);const c=(r+i*s)%360;return H({h:c<0?c+360:c,c:t.c,t:t.t})}function A(e,o=[10,20,30,40,50,60,70,80,90]){const s=C(e);let n;return Array.isArray(o)?n=o:o&&o.tones&&Array.isArray(o.tones)?n=o.tones:n=[10,20,30,40,50,60,70,80,90],n.map(t=>H({h:s.h,c:s.c,t}))}function z(e,o,s=.2){const n={};for(const[t,r]of Object.entries(o))n[t]=R(e,r,s);return n}function B(e,o={}){const{baseGray:s="#666666"}=o,{blendRatio:n=.08,isDark:t=!1}=o,r=C(s),a={};return(t?[95,90,85,80,70,60,50,40,30,20,15,10]:[10,15,20,30,40,50,60,70,80,85,90,95]).forEach((c,u)=>{const f={h:r.h,c:r.c,t:c},l=R(H(f),e,n);a[`gray-${u+1}`]=l}),a}function T(e,o={}){const{semanticColors:s={success:"#52c41a",warning:"#faad14",error:"#ff4d4f",info:"#1890ff"},blendRatio:n=.12,isDark:t=!1}=o,r={};return Object.entries(s).forEach(([a,i])=>{const c={},u=C(i);(t?[90,80,70,60,50,40,30,25,20,15]:[15,25,35,45,55,65,75,85,90,95]).forEach((l,h)=>{const m={h:u.h,c:u.c,t:l},b=R(H(m),e,n);c[`${a}-${h+1}`]=b}),Object.assign(r,c)}),r}function V(e,o={}){const{isDark:s=!1}=o,n=C(e),t={};return(s?[90,80,70,60,50,40,30,25,20,15]:[15,25,35,45,55,65,75,85,90,95]).forEach((a,i)=>{const c={h:n.h,c:n.c,t:a};t[`theme-${i+1}`]=H(c)}),t}function X(e,o={}){const{baseGray:s="#666666",isDark:n=!1,semanticColors:t,controlBlendRatio:r=.08,semanticBlendRatio:a=.12}=o;return{controls:B(e,{baseGray:s,blendRatio:r,isDark:n}),semantic:T(e,{semanticColors:t,blendRatio:a,isDark:n}),theme:V(e,{isDark:n})}}function Y(e,o={}){const{semanticColors:s={success:"#52c41a",warning:"#faad14",error:"#ff4d4f",info:"#1890ff"},uiColors:n={background:"#ffffff",surface:"#fafafa",border:"#d9d9d9",disabled:"#f5f5f5"},harmonizeRatio:t=.15,blendRatio:r=.12,generateVariants:a=!0}=o,i=T(e,{semanticColors:s,blendRatio:t}),c={};Object.entries(s).forEach(([f])=>{c[f]={};for(let l=1;l<=10;l++){const h=`${f}-${l}`;i[h]&&(c[f][l]=i[h])}});const u={theme:e,semantic:c,ui:z(e,n,r)};return a&&(u.variants=A(e)),u}const F={red:"#F53F3F",orangered:"#F77234",orange:"#FF7D00",gold:"#F7BA1E",yellow:"#FADC19",lime:"#9FDB1D",green:"#00B42A",cyan:"#14C9C9",blue:"#3491FA",arcoblue:"#165DFF",purple:"#722ED1",pinkpurple:"#D91AD9",magenta:"#F5319D"};function Z(){const e={};return Object.keys(F).forEach(o=>{e[o]={},e[o].light=v(F[o],{list:!0}),e[o].dark=v(F[o],{list:!0,dark:!0}),e[o].primary=F[o]}),e.gray={},e.gray.light=["#f7f8fa","#f2f3f5","#e5e6eb","#c9cdd4","#a9aeb8","#86909c","#6b7785","#4e5969","#272e3b","#1d2129"],e.gray.dark=["#17171a","#2e2e30","#484849","#5f5f60","#78787a","#929293","#ababac","#c5c5c5","#dfdfdf","#f6f6f6"],e.gray.primary=e.gray.light[6],e}d.blendInHct=R,d.blendUIColors=z,d.colorList=F,d.extractColorFromFile=U,d.extractColorFromImage=$,d.generate=v,d.generateControlColors=B,d.generateGrayLinear=K,d.generateInterfaceColorSystem=X,d.generateLinear=I,d.generateLinearHSL=J,d.generateMonochromeLinear=W,d.generateSemanticColors=T,d.generateThemeColors=V,d.generateThemePalette=Y,d.generateThemeVariants=A,d.getPresetColors=Z,d.getRgbStr=k,d.harmonizeColor=Q,d.hctToRgb=H,d.rgbToHct=C,Object.defineProperty(d,Symbol.toStringTag,{value:"Module"})});
1
+ (function(d,m){typeof exports=="object"&&typeof module<"u"?m(exports,require("color")):typeof define=="function"&&define.amd?define(["exports","color"],m):(d=typeof globalThis<"u"?globalThis:d||self,m(d.AvialaColor={},d.Color))})(this,function(d,m){"use strict";function V(t){return m(t).rgb().round().color.join(",")}const G=["hex","rgb","hsl"];function O(t){return!t||G.indexOf(t)<0?"hex":t}function E(t,o){const s=O(o);return s==="hex"?t[s]().toLowerCase():t[s]().round().string()}function L(t,o,s){const n=m(t),e=n.hue(),a=n.saturationv(),r=n.value(),c=(M=>M>=60&&M<=240?2.5:M>=0&&M<60||M>300&&M<=360?1.5:2)(e),l=100,f=9,h=100,u=30;function g(M,y){let p;return e>=60&&e<=240?p=M?e-c*y:e+c*y:p=M?e+c*y:e-c*y,p<0?p+=360:p>=360&&(p-=360),Math.round(p)}function b(M,y){let p;if(M)p=a<=f?a:a-(a-f)/5.5*Math.pow(y,1.05);else{const _=Math.min(l,a+30);p=a+(_-a)/4.2*Math.pow(y,.95)}return Math.max(0,Math.min(100,p))}function S(M,y){return M?Math.min(h,r+(h-r)/5.2*Math.pow(y,.9)):r<=u?r:Math.max(u,r-(r-u)/4.2*Math.pow(y,1.05))}const w=o<6,x=w?6-o:o-6,D=o===6?n:m({h:g(w,x),s:b(w,x),v:S(w,x)});return E(D,s)}function A(t,o,s){const n=m(L(t,10-o+1)),e=m(t),a=e.hue(),r=e.saturationv(),c=m({h:e.hue(),s:h(6),v:e.value()}).saturationv(),l=Math.ceil((c-9)/4),f=Math.ceil((100-c)/5);function h(g){if(g<6)return c+(6-g)*f;if(g===6){if(a>=0&&a<50)return r-15;if(a>=50&&a<191)return r-20;if(a>=191&&a<=360)return r-15}return c-l*(g-6)}const u=m({h:n.hue(),s:h(o),v:n.value()});return E(u,s)}function v(t,o={}){const{dark:s,list:n,index:e=6,format:a="hex"}=o;if(n){const r=[],i=s?A:L;for(let c=1;c<=10;c++)r.push(i(t,c,a));return r}return s?A(t,e,a):L(t,e,a)}async function z(t){try{const o=await q(t),s=N(o);return j(s)}catch(o){throw console.error("提取图片颜色失败:",o),o}}async function q(t){return new Promise((o,s)=>{try{const n=document.createElement("canvas"),e=n.getContext("2d"),a=Math.min(t.width,100),r=Math.min(t.height,100),i=Math.min(a/t.width,r/t.height);n.width=t.width*i,n.height=t.height*i,e.drawImage(t,0,0,n.width,n.height);const c=e.getImageData(0,0,n.width,n.height);o(c)}catch(n){s(n)}})}function N(t){const o=t.data,s=new Map;for(let e=0;e<o.length;e+=4){const a=o[e],r=o[e+1],i=o[e+2];if(o[e+3]<128)continue;const l=Math.round(a/16)*16,f=Math.round(r/16)*16,h=Math.round(i/16)*16,u=`${l},${f},${h}`;s.has(u)?s.set(u,s.get(u)+1):s.set(u,1)}const n=[];return s.forEach((e,a)=>{const[r,i,c]=a.split(",").map(Number);n.push({r,g:i,b:c,count:e})}),n}function j(t){t.sort((e,a)=>a.count-e.count);const o=t.filter(e=>{const{r:a,g:r,b:i}=e,c=Math.max(a,r,i),l=Math.min(a,r,i),f=c-l,h=c===0?0:f/c,u=c/255;return h>.15&&u>.2&&u<.8}),s=o.length>0?o[0]:t[0];return m({r:s.r,g:s.g,b:s.b}).hex()}function U(t){return new Promise((o,s)=>{if(!t.type.startsWith("image/")){s(new Error("请选择图片文件"));return}const n=new FileReader;n.onload=async e=>{try{const a=new Image;a.onload=async()=>{try{const r=await z(a);o(r)}catch(r){s(r)}},a.onerror=()=>s(new Error("图片加载失败")),a.src=e.target.result}catch(a){s(a)}},n.onerror=()=>s(new Error("文件读取失败")),n.readAsDataURL(t)})}function I(t,o,s={}){const{steps:n=10,format:e="hex",includeEnds:a=!0}=s;if(n<2)throw new Error("步数必须至少为2");const r=m(t),i=m(o),c=[],l=a?n:n+2,f=1/(l-1);for(let h=0;h<l;h++){const u=h*f,g=Math.round(r.red()+(i.red()-r.red())*u),b=Math.round(r.green()+(i.green()-r.green())*u),S=Math.round(r.blue()+(i.blue()-r.blue())*u),w=m({r:g,g:b,b:S});!a&&(h===0||h===l-1)||c.push(E(w,e))}return c}function K(t={}){const{startGray:o="#ffffff",endGray:s="#000000",steps:n=10,format:e="hex"}=t;return I(o,s,{steps:n,format:e,includeEnds:!0})}function W(t,o={}){const{steps:s=10,format:n="hex",lightnessRange:e=80}=o,r=m(t).hsl(),i=r.lightness(),c=Math.min(95,i+e/2),l=Math.max(5,i-e/2),f=m({h:r.hue(),s:r.saturationl(),l:c}),h=m({h:r.hue(),s:r.saturationl(),l});return I(f.hex(),h.hex(),{steps:s,format:n,includeEnds:!0})}function J(t,o,s={}){const{steps:n=10,format:e="hex",includeEnds:a=!0}=s;if(n<2)throw new Error("步数必须至少为2");const r=m(t).hsl(),i=m(o).hsl(),c=[],l=a?n:n+2,f=1/(l-1);let h=r.hue()||0,u=i.hue()||0;const g=u-h;Math.abs(g)>180&&(g>0?h+=360:u+=360);for(let b=0;b<l;b++){const S=b*f;let w=h+(u-h)*S;const x=r.saturationl()+(i.saturationl()-r.saturationl())*S,D=r.lightness()+(i.lightness()-r.lightness())*S;w=w%360,w<0&&(w+=360);const M=m({h:w,s:x,l:D});!a&&(b===0||b===l-1)||c.push(E(M,e))}return c}function C(t){const o=t.replace("#",""),s=parseInt(o.substr(0,2),16)/255,n=parseInt(o.substr(2,2),16)/255,e=parseInt(o.substr(4,2),16)/255,a=Math.max(s,n,e),r=Math.min(s,n,e),i=a-r;let c=0;i!==0&&(a===s?c=(n-e)/i%6:a===n?c=(e-s)/i+2:c=(s-n)/i+4),c=Math.round(c*60),c<0&&(c+=360);const l=Math.round((.299*s+.587*n+.114*e)*100),f=(a+r)/2,h=i===0?0:i/(1-Math.abs(2*f-1)),u=Math.round(h*Math.min(l,100-l));return{h:c,c:u,t:l}}function H(t){const{h:o,c:s,t:n}=t,e=(o%360+360)%360,a=Math.max(0,Math.min(150,s)),r=Math.max(0,Math.min(100,n)),i=r/100,c=r===0||r===100?0:a/Math.min(r,100-r),l=(1-Math.abs(2*i-1))*Math.min(1,c),f=l*(1-Math.abs(e/60%2-1)),h=i-l/2;let u,g,b;e>=0&&e<60?[u,g,b]=[l,f,0]:e>=60&&e<120?[u,g,b]=[f,l,0]:e>=120&&e<180?[u,g,b]=[0,l,f]:e>=180&&e<240?[u,g,b]=[0,f,l]:e>=240&&e<300?[u,g,b]=[f,0,l]:[u,g,b]=[l,0,f];const S=w=>{const x=Math.max(0,Math.min(1,w+h)),D=Math.round(x*255).toString(16);return D.length===1?"0"+D:D};return`#${S(u)}${S(g)}${S(b)}`}function R(t,o,s=.5){const n=C(t),e=C(o);let a=n.h,r=e.h,i=r-a;Math.abs(i)>180&&(i>0?a+=360:r+=360);const c=(a+(r-a)*s)%360,l=n.c+(e.c-n.c)*s,f=n.t+(e.t-n.t)*s;return H({h:c<0?c+360:c,c:Math.max(0,Math.round(l)),t:Math.max(0,Math.min(100,Math.round(f)))})}function Q(t,o,s=.15){const n=C(t),e=C(o);let a=e.h,r=n.h,i=r-a;Math.abs(i)>180&&(i>0?a+=360:r+=360,i=r-a);const c=(a+i*s)%360;return H({h:c<0?c+360:c,c:e.c,t:e.t})}function k(t,o=[10,20,30,40,50,60,70,80,90]){const s=C(t);let n;return Array.isArray(o)?n=o:o&&o.tones&&Array.isArray(o.tones)?n=o.tones:n=[10,20,30,40,50,60,70,80,90],n.map(e=>H({h:s.h,c:s.c,t:e}))}function B(t,o,s=.2){const n={};for(const[e,a]of Object.entries(o))n[e]=R(t,a,s);return n}function T(t,o={}){const{baseGray:s="#666666"}=o,{blendRatio:n=.08,isDark:e=!1}=o,a=C(s),r={};return(e?[95,90,85,80,70,60,50,40,30,20,15,10]:[10,15,20,30,40,50,60,70,80,85,90,95]).forEach((c,l)=>{const f={h:a.h,c:a.c,t:c},h=R(H(f),t,n);r[`gray-${l+1}`]=h}),r}function P(t,o={}){const{semanticColors:s={success:"#52c41a",warning:"#faad14",error:"#ff4d4f",info:"#1890ff"},blendRatio:n=.12,isDark:e=!1}=o,a={};return Object.entries(s).forEach(([r,i])=>{const c={},l=C(i);(e?[90,80,70,60,50,40,30,25,20,15]:[15,25,35,45,55,65,75,85,90,95]).forEach((h,u)=>{const g={h:l.h,c:l.c,t:h},b=R(H(g),t,n);c[`${r}-${u+1}`]=b}),Object.assign(a,c)}),a}function $(t,o={}){const{isDark:s=!1}=o,n=C(t),e={};return(s?[90,80,70,60,50,40,30,25,20,15]:[15,25,35,45,55,65,75,85,90,95]).forEach((r,i)=>{const c={h:n.h,c:n.c,t:r};e[`theme-${i+1}`]=H(c)}),e}function X(t,o={}){const{baseGray:s="#666666",isDark:n=!1,semanticColors:e,controlBlendRatio:a=.08,semanticBlendRatio:r=.12}=o;return{controls:T(t,{baseGray:s,blendRatio:a,isDark:n}),semantic:P(t,{semanticColors:e,blendRatio:r,isDark:n}),theme:$(t,{isDark:n})}}function Y(t,o={}){const{semanticColors:s={success:"#52c41a",warning:"#faad14",error:"#ff4d4f",info:"#1890ff"},uiColors:n={background:"#ffffff",surface:"#fafafa",border:"#d9d9d9",disabled:"#f5f5f5"},harmonizeRatio:e=.15,blendRatio:a=.12,isDark:r=!1,generateVariants:i=!0}=o,c=P(t,{semanticColors:s,blendRatio:e,isDark:r}),l={};Object.entries(s).forEach(([h])=>{l[h]={};for(let u=1;u<=10;u++){const g=`${h}-${u}`;c[g]&&(l[h][u]=c[g])}});const f={theme:$(t,{isDark:r}),semantic:l,ui:B(t,n,a),controls:T(t,{blendRatio:a,isDark:r})};return i&&(f.variants=k(t)),f}const F={red:"#F53F3F",orangered:"#F77234",orange:"#FF7D00",gold:"#F7BA1E",yellow:"#FADC19",lime:"#9FDB1D",green:"#00B42A",cyan:"#14C9C9",blue:"#3491FA",arcoblue:"#165DFF",purple:"#722ED1",pinkpurple:"#D91AD9",magenta:"#F5319D"};function Z(){const t={};return Object.keys(F).forEach(o=>{t[o]={},t[o].light=v(F[o],{list:!0}),t[o].dark=v(F[o],{list:!0,dark:!0}),t[o].primary=F[o]}),t.gray={},t.gray.light=["#f7f8fa","#f2f3f5","#e5e6eb","#c9cdd4","#a9aeb8","#86909c","#6b7785","#4e5969","#272e3b","#1d2129"],t.gray.dark=["#17171a","#2e2e30","#484849","#5f5f60","#78787a","#929293","#ababac","#c5c5c5","#dfdfdf","#f6f6f6"],t.gray.primary=t.gray.light[6],t}d.blendInHct=R,d.blendUIColors=B,d.colorList=F,d.extractColorFromFile=U,d.extractColorFromImage=z,d.generate=v,d.generateControlColors=T,d.generateGrayLinear=K,d.generateInterfaceColorSystem=X,d.generateLinear=I,d.generateLinearHSL=J,d.generateMonochromeLinear=W,d.generateSemanticColors=P,d.generateThemeColors=$,d.generateThemePalette=Y,d.generateThemeVariants=k,d.getPresetColors=Z,d.getRgbStr=V,d.harmonizeColor=Q,d.hctToRgb=H,d.rgbToHct=C,Object.defineProperty(d,Symbol.toStringTag,{value:"Module"})});
package/dist/index.mjs CHANGED
@@ -1,33 +1,33 @@
1
1
  import m from "color";
2
- function U(n) {
3
- return m(n).rgb().round().color.join(",");
2
+ function U(t) {
3
+ return m(t).rgb().round().color.join(",");
4
4
  }
5
- const P = ["hex", "rgb", "hsl"];
6
- function z(n) {
7
- return !n || P.indexOf(n) < 0 ? "hex" : n;
5
+ const z = ["hex", "rgb", "hsl"];
6
+ function B(t) {
7
+ return !t || z.indexOf(t) < 0 ? "hex" : t;
8
8
  }
9
- function F(n, o) {
10
- const a = z(o);
11
- return a === "hex" ? n[a]().toLowerCase() : n[a]().round().string();
9
+ function F(t, o) {
10
+ const a = B(o);
11
+ return a === "hex" ? t[a]().toLowerCase() : t[a]().round().string();
12
12
  }
13
- function E(n, o, a) {
14
- const e = m(n), t = e.hue(), r = e.saturationv(), s = e.value(), c = ((b) => b >= 60 && b <= 240 ? 2.5 : b >= 0 && b < 60 || b > 300 && b <= 360 ? 1.5 : 2)(t), l = 100, f = 9, u = 100, h = 30;
13
+ function E(t, o, a) {
14
+ const e = m(t), n = e.hue(), s = e.saturationv(), r = e.value(), c = ((b) => b >= 60 && b <= 240 ? 2.5 : b >= 0 && b < 60 || b > 300 && b <= 360 ? 1.5 : 2)(n), l = 100, f = 9, h = 100, u = 30;
15
15
  function d(b, w) {
16
16
  let x;
17
- return t >= 60 && t <= 240 ? x = b ? t - c * w : t + c * w : x = b ? t + c * w : t - c * w, x < 0 ? x += 360 : x >= 360 && (x -= 360), Math.round(x);
17
+ return n >= 60 && n <= 240 ? x = b ? n - c * w : n + c * w : x = b ? n + c * w : n - c * w, x < 0 ? x += 360 : x >= 360 && (x -= 360), Math.round(x);
18
18
  }
19
19
  function g(b, w) {
20
20
  let x;
21
21
  if (b)
22
- x = r <= f ? r : r - (r - f) / 5.5 * Math.pow(w, 1.05);
22
+ x = s <= f ? s : s - (s - f) / 5.5 * Math.pow(w, 1.05);
23
23
  else {
24
- const A = Math.min(l, r + 30);
25
- x = r + (A - r) / 4.2 * Math.pow(w, 0.95);
24
+ const k = Math.min(l, s + 30);
25
+ x = s + (k - s) / 4.2 * Math.pow(w, 0.95);
26
26
  }
27
27
  return Math.max(0, Math.min(100, x));
28
28
  }
29
29
  function p(b, w) {
30
- return b ? Math.min(u, s + (u - s) / 5.2 * Math.pow(w, 0.9)) : s <= h ? s : Math.max(h, s - (s - h) / 4.2 * Math.pow(w, 1.05));
30
+ return b ? Math.min(h, r + (h - r) / 5.2 * Math.pow(w, 0.9)) : r <= u ? r : Math.max(u, r - (r - u) / 4.2 * Math.pow(w, 1.05));
31
31
  }
32
32
  const M = o < 6, S = M ? 6 - o : o - 6, y = o === 6 ? e : m({
33
33
  h: d(M, S),
@@ -36,222 +36,222 @@ function E(n, o, a) {
36
36
  });
37
37
  return F(y, a);
38
38
  }
39
- function v(n, o, a) {
40
- const e = m(E(n, 10 - o + 1)), t = m(n), r = t.hue(), s = t.saturationv(), c = m({
41
- h: t.hue(),
42
- s: u(6),
43
- v: t.value()
39
+ function v(t, o, a) {
40
+ const e = m(E(t, 10 - o + 1)), n = m(t), s = n.hue(), r = n.saturationv(), c = m({
41
+ h: n.hue(),
42
+ s: h(6),
43
+ v: n.value()
44
44
  }).saturationv(), l = Math.ceil((c - 9) / 4), f = Math.ceil((100 - c) / 5);
45
- function u(d) {
45
+ function h(d) {
46
46
  if (d < 6)
47
47
  return c + (6 - d) * f;
48
48
  if (d === 6) {
49
- if (r >= 0 && r < 50)
50
- return s - 15;
51
- if (r >= 50 && r < 191)
52
- return s - 20;
53
- if (r >= 191 && r <= 360)
54
- return s - 15;
49
+ if (s >= 0 && s < 50)
50
+ return r - 15;
51
+ if (s >= 50 && s < 191)
52
+ return r - 20;
53
+ if (s >= 191 && s <= 360)
54
+ return r - 15;
55
55
  }
56
56
  return c - l * (d - 6);
57
57
  }
58
- const h = m({
58
+ const u = m({
59
59
  h: e.hue(),
60
- s: u(o),
60
+ s: h(o),
61
61
  v: e.value()
62
62
  });
63
- return F(h, a);
63
+ return F(u, a);
64
64
  }
65
- function I(n, o = {}) {
66
- const { dark: a, list: e, index: t = 6, format: r = "hex" } = o;
65
+ function I(t, o = {}) {
66
+ const { dark: a, list: e, index: n = 6, format: s = "hex" } = o;
67
67
  if (e) {
68
- const s = [], i = a ? v : E;
68
+ const r = [], i = a ? v : E;
69
69
  for (let c = 1; c <= 10; c++)
70
- s.push(i(n, c, r));
71
- return s;
70
+ r.push(i(t, c, s));
71
+ return r;
72
72
  }
73
- return a ? v(n, t, r) : E(n, t, r);
73
+ return a ? v(t, n, s) : E(t, n, s);
74
74
  }
75
- async function B(n) {
75
+ async function V(t) {
76
76
  try {
77
- const o = await k(n), a = V(o);
78
- return G(a);
77
+ const o = await G(t), a = O(o);
78
+ return T(a);
79
79
  } catch (o) {
80
80
  throw console.error("提取图片颜色失败:", o), o;
81
81
  }
82
82
  }
83
- async function k(n) {
83
+ async function G(t) {
84
84
  return new Promise((o, a) => {
85
85
  try {
86
- const e = document.createElement("canvas"), t = e.getContext("2d"), r = Math.min(n.width, 100), s = Math.min(n.height, 100), i = Math.min(r / n.width, s / n.height);
87
- e.width = n.width * i, e.height = n.height * i, t.drawImage(n, 0, 0, e.width, e.height);
88
- const c = t.getImageData(0, 0, e.width, e.height);
86
+ const e = document.createElement("canvas"), n = e.getContext("2d"), s = Math.min(t.width, 100), r = Math.min(t.height, 100), i = Math.min(s / t.width, r / t.height);
87
+ e.width = t.width * i, e.height = t.height * i, n.drawImage(t, 0, 0, e.width, e.height);
88
+ const c = n.getImageData(0, 0, e.width, e.height);
89
89
  o(c);
90
90
  } catch (e) {
91
91
  a(e);
92
92
  }
93
93
  });
94
94
  }
95
- function V(n) {
96
- const o = n.data, a = /* @__PURE__ */ new Map();
97
- for (let t = 0; t < o.length; t += 4) {
98
- const r = o[t], s = o[t + 1], i = o[t + 2];
99
- if (o[t + 3] < 128) continue;
100
- const l = Math.round(r / 16) * 16, f = Math.round(s / 16) * 16, u = Math.round(i / 16) * 16, h = `${l},${f},${u}`;
101
- a.has(h) ? a.set(h, a.get(h) + 1) : a.set(h, 1);
95
+ function O(t) {
96
+ const o = t.data, a = /* @__PURE__ */ new Map();
97
+ for (let n = 0; n < o.length; n += 4) {
98
+ const s = o[n], r = o[n + 1], i = o[n + 2];
99
+ if (o[n + 3] < 128) continue;
100
+ const l = Math.round(s / 16) * 16, f = Math.round(r / 16) * 16, h = Math.round(i / 16) * 16, u = `${l},${f},${h}`;
101
+ a.has(u) ? a.set(u, a.get(u) + 1) : a.set(u, 1);
102
102
  }
103
103
  const e = [];
104
- return a.forEach((t, r) => {
105
- const [s, i, c] = r.split(",").map(Number);
106
- e.push({ r: s, g: i, b: c, count: t });
104
+ return a.forEach((n, s) => {
105
+ const [r, i, c] = s.split(",").map(Number);
106
+ e.push({ r, g: i, b: c, count: n });
107
107
  }), e;
108
108
  }
109
- function G(n) {
110
- n.sort((t, r) => r.count - t.count);
111
- const o = n.filter((t) => {
112
- const { r, g: s, b: i } = t, c = Math.max(r, s, i), l = Math.min(r, s, i), f = c - l, u = c === 0 ? 0 : f / c, h = c / 255;
113
- return u > 0.15 && h > 0.2 && h < 0.8;
114
- }), a = o.length > 0 ? o[0] : n[0];
109
+ function T(t) {
110
+ t.sort((n, s) => s.count - n.count);
111
+ const o = t.filter((n) => {
112
+ const { r: s, g: r, b: i } = n, c = Math.max(s, r, i), l = Math.min(s, r, i), f = c - l, h = c === 0 ? 0 : f / c, u = c / 255;
113
+ return h > 0.15 && u > 0.2 && u < 0.8;
114
+ }), a = o.length > 0 ? o[0] : t[0];
115
115
  return m({ r: a.r, g: a.g, b: a.b }).hex();
116
116
  }
117
- function K(n) {
117
+ function K(t) {
118
118
  return new Promise((o, a) => {
119
- if (!n.type.startsWith("image/")) {
119
+ if (!t.type.startsWith("image/")) {
120
120
  a(new Error("请选择图片文件"));
121
121
  return;
122
122
  }
123
123
  const e = new FileReader();
124
- e.onload = async (t) => {
124
+ e.onload = async (n) => {
125
125
  try {
126
- const r = new Image();
127
- r.onload = async () => {
126
+ const s = new Image();
127
+ s.onload = async () => {
128
128
  try {
129
- const s = await B(r);
130
- o(s);
131
- } catch (s) {
132
- a(s);
129
+ const r = await V(s);
130
+ o(r);
131
+ } catch (r) {
132
+ a(r);
133
133
  }
134
- }, r.onerror = () => a(new Error("图片加载失败")), r.src = t.target.result;
135
- } catch (r) {
136
- a(r);
134
+ }, s.onerror = () => a(new Error("图片加载失败")), s.src = n.target.result;
135
+ } catch (s) {
136
+ a(s);
137
137
  }
138
- }, e.onerror = () => a(new Error("文件读取失败")), e.readAsDataURL(n);
138
+ }, e.onerror = () => a(new Error("文件读取失败")), e.readAsDataURL(t);
139
139
  });
140
140
  }
141
- function $(n, o, a = {}) {
142
- const { steps: e = 10, format: t = "hex", includeEnds: r = !0 } = a;
141
+ function $(t, o, a = {}) {
142
+ const { steps: e = 10, format: n = "hex", includeEnds: s = !0 } = a;
143
143
  if (e < 2)
144
144
  throw new Error("步数必须至少为2");
145
- const s = m(n), i = m(o), c = [], l = r ? e : e + 2, f = 1 / (l - 1);
146
- for (let u = 0; u < l; u++) {
147
- const h = u * f, d = Math.round(s.red() + (i.red() - s.red()) * h), g = Math.round(s.green() + (i.green() - s.green()) * h), p = Math.round(s.blue() + (i.blue() - s.blue()) * h), M = m({ r: d, g, b: p });
148
- !r && (u === 0 || u === l - 1) || c.push(F(M, t));
145
+ const r = m(t), i = m(o), c = [], l = s ? e : e + 2, f = 1 / (l - 1);
146
+ for (let h = 0; h < l; h++) {
147
+ const u = h * f, d = Math.round(r.red() + (i.red() - r.red()) * u), g = Math.round(r.green() + (i.green() - r.green()) * u), p = Math.round(r.blue() + (i.blue() - r.blue()) * u), M = m({ r: d, g, b: p });
148
+ !s && (h === 0 || h === l - 1) || c.push(F(M, n));
149
149
  }
150
150
  return c;
151
151
  }
152
- function W(n = {}) {
152
+ function W(t = {}) {
153
153
  const {
154
154
  startGray: o = "#ffffff",
155
155
  endGray: a = "#000000",
156
156
  steps: e = 10,
157
- format: t = "hex"
158
- } = n;
159
- return $(o, a, { steps: e, format: t, includeEnds: !0 });
157
+ format: n = "hex"
158
+ } = t;
159
+ return $(o, a, { steps: e, format: n, includeEnds: !0 });
160
160
  }
161
- function J(n, o = {}) {
162
- const { steps: a = 10, format: e = "hex", lightnessRange: t = 80 } = o, s = m(n).hsl(), i = s.lightness(), c = Math.min(95, i + t / 2), l = Math.max(5, i - t / 2), f = m({
163
- h: s.hue(),
164
- s: s.saturationl(),
161
+ function J(t, o = {}) {
162
+ const { steps: a = 10, format: e = "hex", lightnessRange: n = 80 } = o, r = m(t).hsl(), i = r.lightness(), c = Math.min(95, i + n / 2), l = Math.max(5, i - n / 2), f = m({
163
+ h: r.hue(),
164
+ s: r.saturationl(),
165
165
  l: c
166
- }), u = m({
167
- h: s.hue(),
168
- s: s.saturationl(),
166
+ }), h = m({
167
+ h: r.hue(),
168
+ s: r.saturationl(),
169
169
  l
170
170
  });
171
- return $(f.hex(), u.hex(), { steps: a, format: e, includeEnds: !0 });
171
+ return $(f.hex(), h.hex(), { steps: a, format: e, includeEnds: !0 });
172
172
  }
173
- function Q(n, o, a = {}) {
174
- const { steps: e = 10, format: t = "hex", includeEnds: r = !0 } = a;
173
+ function Q(t, o, a = {}) {
174
+ const { steps: e = 10, format: n = "hex", includeEnds: s = !0 } = a;
175
175
  if (e < 2)
176
176
  throw new Error("步数必须至少为2");
177
- const s = m(n).hsl(), i = m(o).hsl(), c = [], l = r ? e : e + 2, f = 1 / (l - 1);
178
- let u = s.hue() || 0, h = i.hue() || 0;
179
- const d = h - u;
180
- Math.abs(d) > 180 && (d > 0 ? u += 360 : h += 360);
177
+ const r = m(t).hsl(), i = m(o).hsl(), c = [], l = s ? e : e + 2, f = 1 / (l - 1);
178
+ let h = r.hue() || 0, u = i.hue() || 0;
179
+ const d = u - h;
180
+ Math.abs(d) > 180 && (d > 0 ? h += 360 : u += 360);
181
181
  for (let g = 0; g < l; g++) {
182
182
  const p = g * f;
183
- let M = u + (h - u) * p;
184
- const S = s.saturationl() + (i.saturationl() - s.saturationl()) * p, y = s.lightness() + (i.lightness() - s.lightness()) * p;
183
+ let M = h + (u - h) * p;
184
+ const S = r.saturationl() + (i.saturationl() - r.saturationl()) * p, y = r.lightness() + (i.lightness() - r.lightness()) * p;
185
185
  M = M % 360, M < 0 && (M += 360);
186
186
  const b = m({ h: M, s: S, l: y });
187
- !r && (g === 0 || g === l - 1) || c.push(F(b, t));
187
+ !s && (g === 0 || g === l - 1) || c.push(F(b, n));
188
188
  }
189
189
  return c;
190
190
  }
191
- function C(n) {
192
- const o = n.replace("#", ""), a = parseInt(o.substr(0, 2), 16) / 255, e = parseInt(o.substr(2, 2), 16) / 255, t = parseInt(o.substr(4, 2), 16) / 255, r = Math.max(a, e, t), s = Math.min(a, e, t), i = r - s;
191
+ function C(t) {
192
+ const o = t.replace("#", ""), a = parseInt(o.substr(0, 2), 16) / 255, e = parseInt(o.substr(2, 2), 16) / 255, n = parseInt(o.substr(4, 2), 16) / 255, s = Math.max(a, e, n), r = Math.min(a, e, n), i = s - r;
193
193
  let c = 0;
194
- i !== 0 && (r === a ? c = (e - t) / i % 6 : r === e ? c = (t - a) / i + 2 : c = (a - e) / i + 4), c = Math.round(c * 60), c < 0 && (c += 360);
195
- const l = Math.round((0.299 * a + 0.587 * e + 0.114 * t) * 100), f = (r + s) / 2, u = i === 0 ? 0 : i / (1 - Math.abs(2 * f - 1)), h = Math.round(u * Math.min(l, 100 - l));
196
- return { h: c, c: h, t: l };
194
+ i !== 0 && (s === a ? c = (e - n) / i % 6 : s === e ? c = (n - a) / i + 2 : c = (a - e) / i + 4), c = Math.round(c * 60), c < 0 && (c += 360);
195
+ const l = Math.round((0.299 * a + 0.587 * e + 0.114 * n) * 100), f = (s + r) / 2, h = i === 0 ? 0 : i / (1 - Math.abs(2 * f - 1)), u = Math.round(h * Math.min(l, 100 - l));
196
+ return { h: c, c: u, t: l };
197
197
  }
198
- function D(n) {
199
- const { h: o, c: a, t: e } = n, t = (o % 360 + 360) % 360, r = Math.max(0, Math.min(150, a)), s = Math.max(0, Math.min(100, e)), i = s / 100, c = s === 0 || s === 100 ? 0 : r / Math.min(s, 100 - s), l = (1 - Math.abs(2 * i - 1)) * Math.min(1, c), f = l * (1 - Math.abs(t / 60 % 2 - 1)), u = i - l / 2;
200
- let h, d, g;
201
- t >= 0 && t < 60 ? [h, d, g] = [l, f, 0] : t >= 60 && t < 120 ? [h, d, g] = [f, l, 0] : t >= 120 && t < 180 ? [h, d, g] = [0, l, f] : t >= 180 && t < 240 ? [h, d, g] = [0, f, l] : t >= 240 && t < 300 ? [h, d, g] = [f, 0, l] : [h, d, g] = [l, 0, f];
198
+ function D(t) {
199
+ const { h: o, c: a, t: e } = t, n = (o % 360 + 360) % 360, s = Math.max(0, Math.min(150, a)), r = Math.max(0, Math.min(100, e)), i = r / 100, c = r === 0 || r === 100 ? 0 : s / Math.min(r, 100 - r), l = (1 - Math.abs(2 * i - 1)) * Math.min(1, c), f = l * (1 - Math.abs(n / 60 % 2 - 1)), h = i - l / 2;
200
+ let u, d, g;
201
+ n >= 0 && n < 60 ? [u, d, g] = [l, f, 0] : n >= 60 && n < 120 ? [u, d, g] = [f, l, 0] : n >= 120 && n < 180 ? [u, d, g] = [0, l, f] : n >= 180 && n < 240 ? [u, d, g] = [0, f, l] : n >= 240 && n < 300 ? [u, d, g] = [f, 0, l] : [u, d, g] = [l, 0, f];
202
202
  const p = (M) => {
203
- const S = Math.max(0, Math.min(1, M + u)), y = Math.round(S * 255).toString(16);
203
+ const S = Math.max(0, Math.min(1, M + h)), y = Math.round(S * 255).toString(16);
204
204
  return y.length === 1 ? "0" + y : y;
205
205
  };
206
- return `#${p(h)}${p(d)}${p(g)}`;
206
+ return `#${p(u)}${p(d)}${p(g)}`;
207
207
  }
208
- function R(n, o, a = 0.5) {
209
- const e = C(n), t = C(o);
210
- let r = e.h, s = t.h, i = s - r;
211
- Math.abs(i) > 180 && (i > 0 ? r += 360 : s += 360);
212
- const c = (r + (s - r) * a) % 360, l = e.c + (t.c - e.c) * a, f = e.t + (t.t - e.t) * a;
208
+ function R(t, o, a = 0.5) {
209
+ const e = C(t), n = C(o);
210
+ let s = e.h, r = n.h, i = r - s;
211
+ Math.abs(i) > 180 && (i > 0 ? s += 360 : r += 360);
212
+ const c = (s + (r - s) * a) % 360, l = e.c + (n.c - e.c) * a, f = e.t + (n.t - e.t) * a;
213
213
  return D({
214
214
  h: c < 0 ? c + 360 : c,
215
215
  c: Math.max(0, Math.round(l)),
216
216
  t: Math.max(0, Math.min(100, Math.round(f)))
217
217
  });
218
218
  }
219
- function X(n, o, a = 0.15) {
220
- const e = C(n), t = C(o);
221
- let r = t.h, s = e.h, i = s - r;
222
- Math.abs(i) > 180 && (i > 0 ? r += 360 : s += 360, i = s - r);
223
- const c = (r + i * a) % 360;
219
+ function X(t, o, a = 0.15) {
220
+ const e = C(t), n = C(o);
221
+ let s = n.h, r = e.h, i = r - s;
222
+ Math.abs(i) > 180 && (i > 0 ? s += 360 : r += 360, i = r - s);
223
+ const c = (s + i * a) % 360;
224
224
  return D({
225
225
  h: c < 0 ? c + 360 : c,
226
- c: t.c,
226
+ c: n.c,
227
227
  // 保持原有色度
228
- t: t.t
228
+ t: n.t
229
229
  // 保持原有色调
230
230
  });
231
231
  }
232
- function O(n, o = [10, 20, 30, 40, 50, 60, 70, 80, 90]) {
233
- const a = C(n);
232
+ function N(t, o = [10, 20, 30, 40, 50, 60, 70, 80, 90]) {
233
+ const a = C(t);
234
234
  let e;
235
- return Array.isArray(o) ? e = o : o && o.tones && Array.isArray(o.tones) ? e = o.tones : e = [10, 20, 30, 40, 50, 60, 70, 80, 90], e.map((t) => D({
235
+ return Array.isArray(o) ? e = o : o && o.tones && Array.isArray(o.tones) ? e = o.tones : e = [10, 20, 30, 40, 50, 60, 70, 80, 90], e.map((n) => D({
236
236
  h: a.h,
237
237
  c: a.c,
238
- t
238
+ t: n
239
239
  }));
240
240
  }
241
- function T(n, o, a = 0.2) {
241
+ function q(t, o, a = 0.2) {
242
242
  const e = {};
243
- for (const [t, r] of Object.entries(o))
244
- e[t] = R(n, r, a);
243
+ for (const [n, s] of Object.entries(o))
244
+ e[n] = R(t, s, a);
245
245
  return e;
246
246
  }
247
- function N(n, o = {}) {
248
- const { baseGray: a = "#666666" } = o, { blendRatio: e = 0.08, isDark: t = !1 } = o, r = C(a), s = {};
249
- return (t ? [95, 90, 85, 80, 70, 60, 50, 40, 30, 20, 15, 10] : [10, 15, 20, 30, 40, 50, 60, 70, 80, 85, 90, 95]).forEach((c, l) => {
250
- const f = { h: r.h, c: r.c, t: c }, u = R(D(f), n, e);
251
- s[`gray-${l + 1}`] = u;
252
- }), s;
247
+ function L(t, o = {}) {
248
+ const { baseGray: a = "#666666" } = o, { blendRatio: e = 0.08, isDark: n = !1 } = o, s = C(a), r = {};
249
+ return (n ? [95, 90, 85, 80, 70, 60, 50, 40, 30, 20, 15, 10] : [10, 15, 20, 30, 40, 50, 60, 70, 80, 85, 90, 95]).forEach((c, l) => {
250
+ const f = { h: s.h, c: s.c, t: c }, h = R(D(f), t, e);
251
+ r[`gray-${l + 1}`] = h;
252
+ }), r;
253
253
  }
254
- function L(n, o = {}) {
254
+ function A(t, o = {}) {
255
255
  const {
256
256
  semanticColors: a = {
257
257
  success: "#52c41a",
@@ -260,49 +260,49 @@ function L(n, o = {}) {
260
260
  info: "#1890ff"
261
261
  },
262
262
  blendRatio: e = 0.12,
263
- isDark: t = !1
264
- } = o, r = {};
265
- return Object.entries(a).forEach(([s, i]) => {
263
+ isDark: n = !1
264
+ } = o, s = {};
265
+ return Object.entries(a).forEach(([r, i]) => {
266
266
  const c = {}, l = C(i);
267
- (t ? [90, 80, 70, 60, 50, 40, 30, 25, 20, 15] : [15, 25, 35, 45, 55, 65, 75, 85, 90, 95]).forEach((u, h) => {
268
- const d = { h: l.h, c: l.c, t: u }, g = R(D(d), n, e);
269
- c[`${s}-${h + 1}`] = g;
270
- }), Object.assign(r, c);
271
- }), r;
267
+ (n ? [90, 80, 70, 60, 50, 40, 30, 25, 20, 15] : [15, 25, 35, 45, 55, 65, 75, 85, 90, 95]).forEach((h, u) => {
268
+ const d = { h: l.h, c: l.c, t: h }, g = R(D(d), t, e);
269
+ c[`${r}-${u + 1}`] = g;
270
+ }), Object.assign(s, c);
271
+ }), s;
272
272
  }
273
- function q(n, o = {}) {
274
- const { isDark: a = !1 } = o, e = C(n), t = {};
275
- return (a ? [90, 80, 70, 60, 50, 40, 30, 25, 20, 15] : [15, 25, 35, 45, 55, 65, 75, 85, 90, 95]).forEach((s, i) => {
276
- const c = { h: e.h, c: e.c, t: s };
277
- t[`theme-${i + 1}`] = D(c);
278
- }), t;
273
+ function P(t, o = {}) {
274
+ const { isDark: a = !1 } = o, e = C(t), n = {};
275
+ return (a ? [90, 80, 70, 60, 50, 40, 30, 25, 20, 15] : [15, 25, 35, 45, 55, 65, 75, 85, 90, 95]).forEach((r, i) => {
276
+ const c = { h: e.h, c: e.c, t: r };
277
+ n[`theme-${i + 1}`] = D(c);
278
+ }), n;
279
279
  }
280
- function Y(n, o = {}) {
280
+ function Y(t, o = {}) {
281
281
  const {
282
282
  baseGray: a = "#666666",
283
283
  isDark: e = !1,
284
- semanticColors: t,
285
- controlBlendRatio: r = 0.08,
286
- semanticBlendRatio: s = 0.12
284
+ semanticColors: n,
285
+ controlBlendRatio: s = 0.08,
286
+ semanticBlendRatio: r = 0.12
287
287
  } = o;
288
288
  return {
289
289
  // 1. 基础控件颜色(灰色系1-12)
290
- controls: N(n, {
290
+ controls: L(t, {
291
291
  baseGray: a,
292
- blendRatio: r,
292
+ blendRatio: s,
293
293
  isDark: e
294
294
  }),
295
295
  // 2. 表意色(1-10)
296
- semantic: L(n, {
297
- semanticColors: t,
298
- blendRatio: s,
296
+ semantic: A(t, {
297
+ semanticColors: n,
298
+ blendRatio: r,
299
299
  isDark: e
300
300
  }),
301
301
  // 3. 主题色(1-10)
302
- theme: q(n, { isDark: e })
302
+ theme: P(t, { isDark: e })
303
303
  };
304
304
  }
305
- function Z(n, o = {}) {
305
+ function Z(t, o = {}) {
306
306
  const {
307
307
  semanticColors: a = {
308
308
  success: "#52c41a",
@@ -316,23 +316,25 @@ function Z(n, o = {}) {
316
316
  border: "#d9d9d9",
317
317
  disabled: "#f5f5f5"
318
318
  },
319
- harmonizeRatio: t = 0.15,
320
- blendRatio: r = 0.12,
321
- generateVariants: s = !0
322
- } = o, i = L(n, { semanticColors: a, blendRatio: t }), c = {};
323
- Object.entries(a).forEach(([f]) => {
324
- c[f] = {};
319
+ harmonizeRatio: n = 0.15,
320
+ blendRatio: s = 0.12,
321
+ isDark: r = !1,
322
+ generateVariants: i = !0
323
+ } = o, c = A(t, { semanticColors: a, blendRatio: n, isDark: r }), l = {};
324
+ Object.entries(a).forEach(([h]) => {
325
+ l[h] = {};
325
326
  for (let u = 1; u <= 10; u++) {
326
- const h = `${f}-${u}`;
327
- i[h] && (c[f][u] = i[h]);
327
+ const d = `${h}-${u}`;
328
+ c[d] && (l[h][u] = c[d]);
328
329
  }
329
330
  });
330
- const l = {
331
- theme: n,
332
- semantic: c,
333
- ui: T(n, e, r)
331
+ const f = {
332
+ theme: P(t, { isDark: r }),
333
+ semantic: l,
334
+ ui: q(t, e, s),
335
+ controls: L(t, { blendRatio: s, isDark: r })
334
336
  };
335
- return s && (l.variants = O(n)), l;
337
+ return i && (f.variants = N(t)), f;
336
338
  }
337
339
  const H = {
338
340
  red: "#F53F3F",
@@ -350,10 +352,10 @@ const H = {
350
352
  magenta: "#F5319D"
351
353
  };
352
354
  function _() {
353
- const n = {};
355
+ const t = {};
354
356
  return Object.keys(H).forEach((o) => {
355
- n[o] = {}, n[o].light = I(H[o], { list: !0 }), n[o].dark = I(H[o], { list: !0, dark: !0 }), n[o].primary = H[o];
356
- }), n.gray = {}, n.gray.light = [
357
+ t[o] = {}, t[o].light = I(H[o], { list: !0 }), t[o].dark = I(H[o], { list: !0, dark: !0 }), t[o].primary = H[o];
358
+ }), t.gray = {}, t.gray.light = [
357
359
  "#f7f8fa",
358
360
  "#f2f3f5",
359
361
  "#e5e6eb",
@@ -364,7 +366,7 @@ function _() {
364
366
  "#4e5969",
365
367
  "#272e3b",
366
368
  "#1d2129"
367
- ], n.gray.dark = [
369
+ ], t.gray.dark = [
368
370
  "#17171a",
369
371
  "#2e2e30",
370
372
  "#484849",
@@ -375,25 +377,25 @@ function _() {
375
377
  "#c5c5c5",
376
378
  "#dfdfdf",
377
379
  "#f6f6f6"
378
- ], n.gray.primary = n.gray.light[6], n;
380
+ ], t.gray.primary = t.gray.light[6], t;
379
381
  }
380
382
  export {
381
383
  R as blendInHct,
382
- T as blendUIColors,
384
+ q as blendUIColors,
383
385
  H as colorList,
384
386
  K as extractColorFromFile,
385
- B as extractColorFromImage,
387
+ V as extractColorFromImage,
386
388
  I as generate,
387
- N as generateControlColors,
389
+ L as generateControlColors,
388
390
  W as generateGrayLinear,
389
391
  Y as generateInterfaceColorSystem,
390
392
  $ as generateLinear,
391
393
  Q as generateLinearHSL,
392
394
  J as generateMonochromeLinear,
393
- L as generateSemanticColors,
394
- q as generateThemeColors,
395
+ A as generateSemanticColors,
396
+ P as generateThemeColors,
395
397
  Z as generateThemePalette,
396
- O as generateThemeVariants,
398
+ N as generateThemeVariants,
397
399
  _ as getPresetColors,
398
400
  U as getRgbStr,
399
401
  X as harmonizeColor,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aviala-design/color",
3
- "version": "0.2.2",
3
+ "version": "0.2.3",
4
4
  "description": "Aviala Design color utils",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -16,6 +16,7 @@
16
16
  "test": "jest",
17
17
  "build": "vite build",
18
18
  "preview": "vite preview",
19
+ "dev": "vite --host",
19
20
  "prepublishOnly": "npm run build"
20
21
  },
21
22
  "keywords": [