styimat 6.0.0 → 6.0.2

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/styimat.js CHANGED
@@ -105,7 +105,7 @@ const styimat = (function() {
105
105
  const trimmed = line.trim();
106
106
 
107
107
  if (trimmed.startsWith('@alias')) {
108
- const aliasMatch = trimmed.match(/^@alias\s+([a-zA-Z0-9_-]+)\s+(.+?)\s*;$/);
108
+ const aliasMatch = trimmed.match(/^@alias\s+([\w]+)\s+(.+?)\s*;$/);
109
109
  if (aliasMatch) {
110
110
  const aliasName = aliasMatch[1];
111
111
  const originalProperty = aliasMatch[2];
@@ -145,7 +145,7 @@ const styimat = (function() {
145
145
  const trimmed = line.trim();
146
146
 
147
147
  if (!inMacroDefinition && trimmed.startsWith('@macro')) {
148
- const macroMatch = trimmed.match(/^@macro\s+([a-zA-Z0-9_-]+)\s*\(([^)]*)\)\s*\{$/);
148
+ const macroMatch = trimmed.match(/^@macro\s+([\w]+)\s*\(([^)]*)\)\s*\{$/);
149
149
  if (macroMatch) {
150
150
  inMacroDefinition = true;
151
151
  currentMacroName = macroMatch[1];
@@ -436,7 +436,8 @@ const styimat = (function() {
436
436
 
437
437
  const result = [];
438
438
 
439
- for (const declaration of declarations) {
439
+ for (let declaration of declarations) {
440
+ declaration = declaration.replace(/\/\*[\s\S]*?\*\//g, '');
440
441
  if (!declaration.trim()) continue;
441
442
 
442
443
  const colonIndex = findFirstColonOutsideQuotes(declaration);
@@ -522,76 +523,6 @@ const styimat = (function() {
522
523
  .replace(/([\da-z])([+-])(-?[\da-z])/g, '$1 $2 $3')
523
524
  .replace(/([\da-z])([+-])(-?[\da-z])/g, '$1 $2 $3')})`;
524
525
  }
525
-
526
-
527
- /**
528
- * 解析带单位的数值
529
- */
530
- function parseValueWithUnit(str) {
531
- const match = str.match(/^([\d.]+)([a-zA-Z%]*)$/);
532
-
533
- if (!match) {
534
- throw new Error(`无法解析值: ${str}`);
535
- }
536
-
537
- const value = parseFloat(match[1]);
538
- const unit = match[2] || '';
539
-
540
- return { value, unit };
541
- }
542
-
543
- // 数学运算函数
544
- function multiply(a, b) {
545
- if (a.unit === b.unit || (!a.unit && !b.unit)) {
546
- return { value: a.value * b.value, unit: a.unit || b.unit };
547
- }
548
-
549
- return { value: `${a.value}${a.unit}*${b.value}${b.unit}`, unit: '' };
550
- }
551
-
552
- function divide(a, b) {
553
- if (b.value === 0) {
554
- throw new Error('除以零');
555
- }
556
-
557
- if (a.unit && !b.unit) {
558
- return { value: a.value / b.value, unit: a.unit };
559
- } else if (a.unit === b.unit) {
560
- return { value: a.value / b.value, unit: '' };
561
- }
562
-
563
- return { value: `${a.value}${a.unit}/${b.value}${b.unit}`, unit: '' };
564
- }
565
-
566
- function add(a, b) {
567
- if (a.unit === b.unit) {
568
- return { value: a.value + b.value, unit: a.unit };
569
- }
570
-
571
- return { value: `${a.value}${a.unit}+${b.value}${b.unit}`, unit: '' };
572
- }
573
-
574
- function subtract(a, b) {
575
- if (a.unit === b.unit) {
576
- return { value: a.value - b.value, unit: a.unit };
577
- }
578
-
579
- return { value: `${a.value}${a.unit}-${b.value}${b.unit}`, unit: '' };
580
- }
581
-
582
- /**
583
- * 四舍五入到指定精度
584
- */
585
- function roundNumber(num, precision = 6) {
586
- const factor = Math.pow(10, precision);
587
- const rounded = Math.round(num * factor) / factor;
588
-
589
- const str = rounded.toString();
590
- if (str.includes('.')) {
591
- return str.replace(/(\.\d*?)0+$/, '$1').replace(/\.$/, '');
592
- }
593
- return str;
594
- }
595
526
 
596
527
  /**
597
528
  * 处理所有的math()函数
@@ -1013,7 +944,7 @@ const styimat = (function() {
1013
944
  for (let line of lines) {
1014
945
  const trimmed = line.trim();
1015
946
 
1016
- const varMatch = trimmed.match(/^\$([a-zA-Z0-9_-]+)\s*:\s*(.+?);?$/);
947
+ const varMatch = trimmed.match(/^\$([\w]+)\s*:\s*(.+?);?$/);
1017
948
 
1018
949
  if (varMatch) {
1019
950
  const [, varName, varValue] = varMatch;
@@ -1202,9 +1133,9 @@ const styimat = (function() {
1202
1133
  * 替换变量值中的变量引用
1203
1134
  */
1204
1135
  function replaceVariableUsesInValue(value, variables) {
1205
- return value.replace(/\$([a-zA-Z0-9_-]+)/g, (match, varName) => {
1136
+ return value.replace(/\$([\w]+)(\W?)/g, (match, varName, char) => {
1206
1137
  if (variables[varName]) {
1207
- return `var(--${varName})`;
1138
+ return `var(--${varName})${char}`;
1208
1139
  }
1209
1140
  return match;
1210
1141
  });
@@ -1216,8 +1147,8 @@ const styimat = (function() {
1216
1147
  function replaceVariableUses(cssText, globalVariables, selectorVariables, config) {
1217
1148
  let result = cssText;
1218
1149
 
1219
- result = result.replace(/(?:\$\$|\$)([a-zA-Z0-9_-]+)/g, (match, varName) => {
1220
- return match.startsWith('$$') ? `attr(${varName})` : `var(--${varName})`;
1150
+ result = result.replace(/(?:\$\$|\$)([\w]+)(\W?)/g, (match, varName, char) => {
1151
+ return match.startsWith('$$') ? `attr(${varName})${char}` : `var(--${varName})${char}`;
1221
1152
  });
1222
1153
 
1223
1154
  result = processCSSValue(result, config);
@@ -1633,26 +1564,6 @@ const styimat = (function() {
1633
1564
  math: {
1634
1565
  evaluate: function(expression) {
1635
1566
  return evaluateMathExpression(expression, defaultConfig);
1636
- },
1637
- parseUnit: parseValueWithUnit,
1638
- round: roundNumber,
1639
- test: function(expression, testConfig = {}) {
1640
- const config = { ...defaultConfig, ...testConfig };
1641
- try {
1642
- const result = evaluateMathExpression(expression, config);
1643
- return {
1644
- success: true,
1645
- expression,
1646
- result,
1647
- parsed: parseValueWithUnit(result.replace(/^calc\(|\)$/g, ''))
1648
- };
1649
- } catch (error) {
1650
- return {
1651
- success: false,
1652
- expression,
1653
- error: error.message
1654
- };
1655
- }
1656
1567
  }
1657
1568
  },
1658
1569
 
@@ -1,33 +1,33 @@
1
1
  /*!
2
2
  * MIT License
3
3
  * Copyright (c) 2025 王小玗
4
- */const styimat=(function(){let g={rootSelector:":root",variablePrefix:"--",preserveOriginal:!1,indentSize:4,enableNesting:!0,autoProcessStyleTags:!0,styleTagAttribute:"e",convertLabToRGB:!0,convertLchToRGB:!0,enableP3:!0,enableMath:!0,importBaseUrl:"",importCache:!0,importTimeout:5e3,enableAlias:!0,enableMacros:!0},L=null;const P=new Map,V=new Map,M=new Map,E=new Map;function K(t){const e={...g},r=t.split(`
5
- `),n=[];for(let o of r){const s=o.trim();if(s.startsWith("#")){const a=s.substring(1).trim(),c=a.indexOf(" ");if(c!==-1){const l=a.substring(0,c).trim(),i=a.substring(c+1).trim(),u=ne(l);i==="true"||i==="false"?e[u]=i==="true":!isNaN(i)&&i.trim()!==""?e[u]=Number(i):e[u]=i}else console.warn(`\u65E0\u6548\u7684\u914D\u7F6E\u884C: ${s}`)}else n.push(o)}return{config:e,css:n.join(`
6
- `)}}function J(t){const e=new Map,r=t.split(`
7
- `),n=[];for(let o of r){const s=o.trim();if(s.startsWith("@alias")){const a=s.match(/^@alias\s+([a-zA-Z0-9_-]+)\s+(.+?)\s*;$/);if(a){const c=a[1],l=a[2];e.set(c,l);continue}}n.push(o)}return{aliases:e,css:n.join(`
8
- `)}}function O(t,e){if(!e.enableMacros)return{macros:new Map,css:t};const r=new Map,n=t.split(`
9
- `),o=[];let s=!1,a="",c=[],l=[],i=0;for(let u of n){const h=u.trim();if(!s&&h.startsWith("@macro")){const f=h.match(/^@macro\s+([a-zA-Z0-9_-]+)\s*\(([^)]*)\)\s*\{$/);if(f){s=!0,a=f[1],c=f[2].split(",").map(p=>p.trim()).filter(p=>p).map(p=>{const d=p.split(":").map(b=>b.trim());return{name:d[0].slice(1),defaultValue:d[1]||null}}),l=[],i=1;continue}}if(s){for(const f of u)f==="{"&&i++,f==="}"&&i--;i===0?(r.set(a,{params:c,body:l.join(`
10
- `)}),s=!1,a="",c=[],l=[]):l.push(u);continue}o.push(u)}return{macros:r,css:o.join(`
11
- `)}}function ee(t,e,r){if(!r.enableMacros||e.size===0)return t;const n=Array.from(e.keys()).map(a=>a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|"),o=new RegExp(`@(${n})\\s*\\(([^)]*)\\)\\s*;?`,"g");return(a=>{let c=a,l=!1;do l=!1,c=c.replace(o,(i,u,h)=>{l=!0;const f=e.get(u);if(!f)return console.warn(`\u672A\u5B9A\u4E49\u7684\u5B8F: ${u}`),i;const p=W(h,f.params);return B(f.body,p,r)});while(l);return c})(t)}function W(t,e){const r=new Map,n=te(t);for(let o=0;o<e.length;o++){const s=e[o];let a;o<n.length?a=n[o]:s.defaultValue!==null?a=s.defaultValue:(console.warn(`\u5B8F\u8C03\u7528\u7F3A\u5C11\u5FC5\u9700\u53C2\u6570: ${s.name}`),a=""),r.set(s.name,a)}return n.length>e.length&&console.warn("\u5B8F\u8C03\u7528\u4F20\u9012\u4E86\u8FC7\u591A\u53C2\u6570\uFF0C\u591A\u4F59\u7684\u53C2\u6570\u5C06\u88AB\u5FFD\u7565"),r}function te(t){const e=[];let r="",n=!1,o="",s=0,a=0;for(let c=0;c<t.length;c++){const l=t[c];(l==='"'||l==="'")&&!n?(n=!0,o=l):l===o&&n&&(n=!1,o=""),n||(l==="("&&s++,l===")"&&s--,l==="["&&a++,l==="]"&&a--),l===","&&!n&&s===0&&a===0?(e.push(r.trim()),r=""):r+=l}return r.trim()&&e.push(r.trim()),e}function B(t,e,r){let n=t;for(const[o,s]of e){const a=new RegExp(`\\$${o}`,"g");n=n.replace(a,s)}if(r.enableMacros){const o=Array.from(M.keys()).map(s=>s.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|");if(o){const s=new RegExp(`@(${o})\\s*\\(([^)]*)\\)\\s*;?`,"g");let a;do a=!1,n=n.replace(s,(c,l,i)=>{a=!0;const u=M.get(l);if(!u)return c;const h=W(i,u.params);return B(u.body,h,r)});while(a)}}return n=x(n,r),n}function ne(t){return t.replace(/-([a-z])/g,function(e,r){return r.toUpperCase()})}function z(){if(L!==null)return L;if(typeof window>"u"||!window.CSS)return L=!1,!1;try{L=CSS.supports("color","color(display-p3 1 0 0)")}catch(t){console.warn("P3\u652F\u6301\u68C0\u6D4B\u5931\u8D25:",t),L=!1}return L}function N(t,e,r){let n=t.trim();if(n.endsWith(";")&&(n=n.slice(0,-1)),!n)return[];const o=[];let s="",a=0,c=!1,l="";for(let u=0;u<n.length;u++){const h=n[u];(h==='"'||h==="'")&&!c?(c=!0,l=h):h===l&&c&&(c=!1,l=""),c||(h==="("?a++:h===")"&&a--),h===";"&&!c&&a===0?s.trim()&&(o.push(s.trim()),s=""):s+=h}s.trim()&&o.push(s.trim());const i=[];for(const u of o){if(!u.trim())continue;const h=re(u);if(h===-1){console.warn(`\u65E0\u6548\u7684CSS\u58F0\u660E: "${u}"`);continue}let f=u.substring(0,h).trim(),p=u.substring(h+1).trim();if(p.endsWith(";")&&(p=p.slice(0,-1).trim()),e.get(f)&&(f=e.get(f)),f.startsWith("@")&&r.get(f.slice(1))){const d=r.get(f.slice(1)),b=W(p.split(" ").join(","),d.params);f=B(d.body,b,q),p=""}i.push({[f]:p})}return i}function re(t){let e=!1,r="";for(let n=0;n<t.length;n++){const o=t[n];if((o==='"'||o==="'")&&!e?(e=!0,r=o):o===r&&e&&(e=!1,r=""),o===":"&&!e)return n}return-1}function _(t,e){if(!e.enableMath)return`math(${t})`;try{let r=t.replace(/\s+/g,"");return se(r,e.enableMath)}catch(r){return console.warn("math()\u8868\u8FBE\u5F0F\u89E3\u6790\u5931\u8D25:",t,r),`calc(${t})`}}function se(t,e){return`calc(${t.replace(/([\da-z])([+-])(-?[\da-z])/g,"$1 $2 $3").replace(/([\da-z])([+-])(-?[\da-z])/g,"$1 $2 $3")})`}function H(t){const e=t.match(/^([\d.]+)([a-zA-Z%]*)$/);if(!e)throw new Error(`\u65E0\u6CD5\u89E3\u6790\u503C: ${t}`);const r=parseFloat(e[1]),n=e[2]||"";return{value:r,unit:n}}function ve(t,e){return t.unit===e.unit||!t.unit&&!e.unit?{value:t.value*e.value,unit:t.unit||e.unit}:{value:`${t.value}${t.unit}*${e.value}${e.unit}`,unit:""}}function Ce(t,e){if(e.value===0)throw new Error("\u9664\u4EE5\u96F6");return t.unit&&!e.unit?{value:t.value/e.value,unit:t.unit}:t.unit===e.unit?{value:t.value/e.value,unit:""}:{value:`${t.value}${t.unit}/${e.value}${e.unit}`,unit:""}}function Se(t,e){return t.unit===e.unit?{value:t.value+e.value,unit:t.unit}:{value:`${t.value}${t.unit}+${e.value}${e.unit}`,unit:""}}function xe(t,e){return t.unit===e.unit?{value:t.value-e.value,unit:t.unit}:{value:`${t.value}${t.unit}-${e.value}${e.unit}`,unit:""}}function oe(t,e=6){const r=Math.pow(10,e),o=(Math.round(t*r)/r).toString();return o.includes(".")?o.replace(/(\.\d*?)0+$/,"$1").replace(/\.$/,""):o}function ae(t,e){if(!e.enableMath)return t;let r=t;const n=/math\(([^)]+)\)/gi,o=a=>a.replace(n,(c,l)=>_(l,e));let s;do s=r,r=o(r);while(r!==s&&r.includes("math("));return r}function ce(t,e){if(!e.convertLabToRGB&&!e.convertLchToRGB)return t;let r=t;r=le(r,e);const n=/(lab|lch)\([^)]+\)/gi,o=new Map,s=c=>c.replace(n,l=>{if(o.has(l))return o.get(l);let i=l;return l.toLowerCase().startsWith("lab(")?e.convertLabToRGB&&(i=ie(l,e)):l.toLowerCase().startsWith("lch(")&&e.convertLchToRGB&&(i=ue(l,e)),o.set(l,i),i});let a;do a=r,r=s(r);while(r!==a);return r}function le(t,e){let r=t;const n=/lab#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})/gi,o=/lch#([0-9a-f]{2})([0-9a-f]{2})(\d{1,3})/gi,s=new Map;return r=r.replace(n,(a,c,l,i)=>{if(s.has(a))return s.get(a);try{const u=parseInt(c,16)/255*100,h=(parseInt(l,16)-128)*1.5,f=(parseInt(i,16)-128)*1.5,p=S(u,h,f,e);return s.set(a,p),p}catch(u){return console.warn(`\u65E0\u6CD5\u89E3\u6790lab#\u5341\u516D\u8FDB\u5236\u989C\u8272: ${a}`,u),a}}),r=r.replace(o,(a,c,l,i)=>{if(s.has(a))return s.get(a);try{const u=parseInt(c,16)/255*100,h=parseInt(l,16)/255*150,f=parseInt(i)/100*360,p=C(u,h,f),d=S(p.L,p.a,p.b,e);return s.set(a,d),d}catch(u){return console.warn(`\u65E0\u6CD5\u89E3\u6790lch#\u5341\u516D\u8FDB\u5236\u989C\u8272: ${a}`,u),a}}),r}function ie(t,e){const r=/lab\(\s*([\d.]+)(%?)\s+([\d.-]+)\s+([\d.-]+)(?:\s*\/\s*([\d.%]+))?\s*\)/i,n=t.match(r);if(!n)return t;try{let o=parseFloat(n[1]);n[2]==="%"?o=o:(o<0&&(o=0),o>100&&(o=100));const s=parseFloat(n[3]),a=parseFloat(n[4]),c=n[5]!==void 0?n[5].includes("%")?parseFloat(n[5])/100:parseFloat(n[5]):null;return S(o,s,a,e,c)}catch(o){return console.warn(`\u65E0\u6CD5\u8F6C\u6362LAB\u989C\u8272: ${t}`,o),t}}function ue(t,e){const r=/lch\(\s*([\d.]+)(%?)\s+([\d.]+)\s+([\d.]+)(deg)?(?:\s*\/\s*([\d.%]+))?\s*\)/i,n=t.match(r);if(!n)return t;try{let o=parseFloat(n[1]);n[2]==="%"?o=o:(o<0&&(o=0),o>100&&(o=100));const s=parseFloat(n[3]);let a=parseFloat(n[4]);s<0&&console.warn(`LCH\u4E2D\u7684C\u503C\u4E0D\u80FD\u4E3A\u8D1F: ${s}`),a=(a%360+360)%360;const c=C(o,s,a),l=n[6]!==void 0?n[6].includes("%")?parseFloat(n[6])/100:parseFloat(n[6]):null;return S(c.L,c.a,c.b,e,l)}catch(o){return console.warn(`\u65E0\u6CD5\u8F6C\u6362LCH\u989C\u8272: ${t}`,o),t}}function C(t,e,r){const n=r*Math.PI/180,o=e*Math.cos(n),s=e*Math.sin(n);return{L:t,a:o,b:s}}function v(t,e,r){const n=(m,y,$)=>{const Q=(m+16)/116,I=y/500+Q,j=Q-$/200,$e=I**3>.008856?I**3:(116*I-16)/903.3,we=m>903.3*.008856?((m+16)/116)**3:m/903.3,Me=j**3>.008856?j**3:(116*j-16)/903.3;return[$e*.95047,we*1,Me*1.08883]},o=(m,y,$)=>{const w=[[3.2404542,-1.5371385,-.4985314],[-.969266,1.8760108,.041556],[.0556434,-.2040259,1.0572252]],A=w[0][0]*m+w[0][1]*y+w[0][2]*$,D=w[1][0]*m+w[1][1]*y+w[1][2]*$,Y=w[2][0]*m+w[2][1]*y+w[2][2]*$;return[A,D,Y]},s=m=>{const y=m<0?-1:1,$=Math.abs(m);return $<=.0031308?y*12.92*$:y*(1.055*Math.pow($,.4166666666666667)-.055)},a=m=>Math.max(0,Math.min(255,Math.round(m*255))),[c,l,i]=n(t,e,r),[u,h,f]=o(c,l,i),p=s(u),d=s(h),b=s(f);return{r:a(p),g:a(d),b:a(b)}}function R(t,e,r){const n=(c,l,i)=>{const b=(c+16)/116,m=l/500+b,y=b-i/200,$=m**3>.008856?m**3:(116*m-16)/903.3,w=c>903.3*.008856?((c+16)/116)**3:c/903.3,A=y**3>.008856?y**3:(116*y-16)/903.3;return[$*.95047,w*1,A*1.08883]},o=(c,l,i)=>{const u=[[2.493496911941425,-.9313836179191239,-.40271078445071684],[-.8294889695615747,1.7626640603183463,.023624685841943577],[.03584583024378447,-.07617238926804182,.9568845240076872]],h=u[0][0]*c+u[0][1]*l+u[0][2]*i,f=u[1][0]*c+u[1][1]*l+u[1][2]*i,p=u[2][0]*c+u[2][1]*l+u[2][2]*i;return[h,f,p]},s=c=>{const l=c<0?-1:1,i=Math.abs(c);return i<=.0031308?l*12.92*i:l*(1.055*Math.pow(i,.4166666666666667)-.055)},a=c=>Math.max(0,Math.min(255,Math.round(c*255)));try{const[c,l,i]=n(t,e,r),[u,h,f]=o(c,l,i),p=s(u),d=s(h),b=s(f);return{r:Math.max(0,Math.min(1,p)),g:Math.max(0,Math.min(1,d)),b:Math.max(0,Math.min(1,b))}}catch(c){console.warn("P3\u8F6C\u6362\u5931\u8D25:",c);const l=v(t,e,r);return{r:l.r/255,g:l.g/255,b:l.b/255}}}function S(t,e,r,n,o=null){if(!n.enableP3||!z()){const s=v(t,e,r);return o!==null?`rgba(${s.r}, ${s.g}, ${s.b}, ${o})`:`rgb(${s.r}, ${s.g}, ${s.b})`}else{const s=R(t,e,r);return o!==null?`color(display-p3 ${s.r.toFixed(4)} ${s.g.toFixed(4)} ${s.b.toFixed(4)} / ${o})`:`color(display-p3 ${s.r.toFixed(4)} ${s.g.toFixed(4)} ${s.b.toFixed(4)})`}}function x(t,e){let r=t;return e.enableMath&&(r=ae(r,e)),(e.convertLabToRGB||e.convertLchToRGB)&&(r=ce(r,e)),r}function fe(t,e){const r=t.split(`
12
- `),n={},o=new Map;let s="",a=null,c=!1,l=0;for(let i of r){const u=i.trim(),h=u.match(/^\$([a-zA-Z0-9_-]+)\s*:\s*(.+?);?$/);if(h){const[,f,p]=h,d=x(U(p.trim(),{...n,...a?o.get(a)||{}:{}}),e);a?(o.has(a)||o.set(a,{}),o.get(a)[f]=d):n[f]=d;continue}if(u.endsWith("{")){a=u.slice(0,-1).trim(),c=!0,s+=i+`
13
- `;continue}if(u==="}"){if(c&&a&&o.has(a)){const f=o.get(a),p=" ".repeat(l);for(const[d,b]of Object.entries(f))s+=`${p} --${d}: ${b};
14
- `}c=!1,a=null}s+=i+`
15
- `,i.includes("{")&&(l+=e.indentSize),i.includes("}")&&(l=Math.max(0,l-e.indentSize))}return{globalVariables:n,selectorVariables:o,cssWithoutVars:s.trim()}}function pe(t,e,r,n){const o=t.split(`
16
- `),s=[],a=[];let c=0;for(let l=0;l<o.length;l++){const i=o[l],u=i.trim();if(!u)continue;const h=i.match(/^(\s*)/)[0].length;if(u==="}"){if(s.length>0){const f=s.pop();if(s.length>0){const p=s[s.length-1];p.children||(p.children=[]),p.children.push(f)}else a.push(f)}continue}if(u.endsWith("{")){const p={selector:u.slice(0,-1).trim(),properties:[],children:[]};s.push(p);continue}if(!u.includes("{")&&!u.includes("}")&&u.includes(":")){if(s.length>0){const f=s[s.length-1];N(u,r,n).forEach(d=>{const b=Object.keys(d)[0],m=x(d[b],e);f.properties.push(m===""?b:`${b}: ${m}`)})}continue}}for(;s.length>0;){const l=s.pop();if(s.length===0)a.push(l);else{const i=s[s.length-1];i.children||(i.children=[]),i.children.push(l)}}return G(a,e,"",r,n)}function G(t,e,r="",n,o){let s="";const a=r.startsWith("@");for(const c of t){const l=c.selector.startsWith("@");let i=(a?" ".repeat(e.indentSize):"")+c.selector;if(l&&(i=c.selector+` {
17
- `),r&&(i.includes("&")?i=i.replace(/&/g,r):i.trim().startsWith(":")?i=r+i:i=r+(a?"":" ")+i),c.properties.length>0){s+=(l?"":i)+` {
18
- `;for(const u of c.properties)N(u,n,o).forEach(f=>{const p=Object.keys(f)[0],d=x(f[p],e);s+=(a?" ".repeat(e.indentSize):"")+" ".repeat(e.indentSize)+(d===""?p:`${p}: ${d};
19
- `)});s+=a?" ".repeat(e.indentSize)+`}
4
+ */const styimat=(function(){let g={rootSelector:":root",variablePrefix:"--",preserveOriginal:!1,indentSize:4,enableNesting:!0,autoProcessStyleTags:!0,styleTagAttribute:"e",convertLabToRGB:!0,convertLchToRGB:!0,enableP3:!0,enableMath:!0,importBaseUrl:"",importCache:!0,importTimeout:5e3,enableAlias:!0,enableMacros:!0},v=null;const P=new Map,V=new Map,M=new Map,W=new Map;function Q(o){const e={...g},r=o.split(`
5
+ `),n=[];for(let s of r){const t=s.trim();if(t.startsWith("#")){const a=t.substring(1).trim(),c=a.indexOf(" ");if(c!==-1){const l=a.substring(0,c).trim(),i=a.substring(c+1).trim(),u=te(l);i==="true"||i==="false"?e[u]=i==="true":!isNaN(i)&&i.trim()!==""?e[u]=Number(i):e[u]=i}else console.warn(`\u65E0\u6548\u7684\u914D\u7F6E\u884C: ${t}`)}else n.push(s)}return{config:e,css:n.join(`
6
+ `)}}function K(o){const e=new Map,r=o.split(`
7
+ `),n=[];for(let s of r){const t=s.trim();if(t.startsWith("@alias")){const a=t.match(/^@alias\s+([\w]+)\s+(.+?)\s*;$/);if(a){const c=a[1],l=a[2];e.set(c,l);continue}}n.push(s)}return{aliases:e,css:n.join(`
8
+ `)}}function z(o,e){if(!e.enableMacros)return{macros:new Map,css:o};const r=new Map,n=o.split(`
9
+ `),s=[];let t=!1,a="",c=[],l=[],i=0;for(let u of n){const h=u.trim();if(!t&&h.startsWith("@macro")){const f=h.match(/^@macro\s+([\w]+)\s*\(([^)]*)\)\s*\{$/);if(f){t=!0,a=f[1],c=f[2].split(",").map(p=>p.trim()).filter(p=>p).map(p=>{const d=p.split(":").map(b=>b.trim());return{name:d[0].slice(1),defaultValue:d[1]||null}}),l=[],i=1;continue}}if(t){for(const f of u)f==="{"&&i++,f==="}"&&i--;i===0?(r.set(a,{params:c,body:l.join(`
10
+ `)}),t=!1,a="",c=[],l=[]):l.push(u);continue}s.push(u)}return{macros:r,css:s.join(`
11
+ `)}}function J(o,e,r){if(!r.enableMacros||e.size===0)return o;const n=Array.from(e.keys()).map(a=>a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|"),s=new RegExp(`@(${n})\\s*\\(([^)]*)\\)\\s*;?`,"g");return(a=>{let c=a,l=!1;do l=!1,c=c.replace(s,(i,u,h)=>{l=!0;const f=e.get(u);if(!f)return console.warn(`\u672A\u5B9A\u4E49\u7684\u5B8F: ${u}`),i;const p=E(h,f.params);return B(f.body,p,r)});while(l);return c})(o)}function E(o,e){const r=new Map,n=ee(o);for(let s=0;s<e.length;s++){const t=e[s];let a;s<n.length?a=n[s]:t.defaultValue!==null?a=t.defaultValue:(console.warn(`\u5B8F\u8C03\u7528\u7F3A\u5C11\u5FC5\u9700\u53C2\u6570: ${t.name}`),a=""),r.set(t.name,a)}return n.length>e.length&&console.warn("\u5B8F\u8C03\u7528\u4F20\u9012\u4E86\u8FC7\u591A\u53C2\u6570\uFF0C\u591A\u4F59\u7684\u53C2\u6570\u5C06\u88AB\u5FFD\u7565"),r}function ee(o){const e=[];let r="",n=!1,s="",t=0,a=0;for(let c=0;c<o.length;c++){const l=o[c];(l==='"'||l==="'")&&!n?(n=!0,s=l):l===s&&n&&(n=!1,s=""),n||(l==="("&&t++,l===")"&&t--,l==="["&&a++,l==="]"&&a--),l===","&&!n&&t===0&&a===0?(e.push(r.trim()),r=""):r+=l}return r.trim()&&e.push(r.trim()),e}function B(o,e,r){let n=o;for(const[s,t]of e){const a=new RegExp(`\\$${s}`,"g");n=n.replace(a,t)}if(r.enableMacros){const s=Array.from(M.keys()).map(t=>t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|");if(s){const t=new RegExp(`@(${s})\\s*\\(([^)]*)\\)\\s*;?`,"g");let a;do a=!1,n=n.replace(t,(c,l,i)=>{a=!0;const u=M.get(l);if(!u)return c;const h=E(i,u.params);return B(u.body,h,r)});while(a)}}return n=L(n,r),n}function te(o){return o.replace(/-([a-z])/g,function(e,r){return r.toUpperCase()})}function k(){if(v!==null)return v;if(typeof window>"u"||!window.CSS)return v=!1,!1;try{v=CSS.supports("color","color(display-p3 1 0 0)")}catch(o){console.warn("P3\u652F\u6301\u68C0\u6D4B\u5931\u8D25:",o),v=!1}return v}function _(o,e,r){let n=o.trim();if(n.endsWith(";")&&(n=n.slice(0,-1)),!n)return[];const s=[];let t="",a=0,c=!1,l="";for(let u=0;u<n.length;u++){const h=n[u];(h==='"'||h==="'")&&!c?(c=!0,l=h):h===l&&c&&(c=!1,l=""),c||(h==="("?a++:h===")"&&a--),h===";"&&!c&&a===0?t.trim()&&(s.push(t.trim()),t=""):t+=h}t.trim()&&s.push(t.trim());const i=[];for(let u of s){if(u=u.replace(/\/\*[\s\S]*?\*\//g,""),!u.trim())continue;const h=ne(u);if(h===-1){console.warn(`\u65E0\u6548\u7684CSS\u58F0\u660E: "${u}"`);continue}let f=u.substring(0,h).trim(),p=u.substring(h+1).trim();if(p.endsWith(";")&&(p=p.slice(0,-1).trim()),e.get(f)&&(f=e.get(f)),f.startsWith("@")&&r.get(f.slice(1))){const d=r.get(f.slice(1)),b=E(p.split(" ").join(","),d.params);f=B(d.body,b,q),p=""}i.push({[f]:p})}return i}function ne(o){let e=!1,r="";for(let n=0;n<o.length;n++){const s=o[n];if((s==='"'||s==="'")&&!e?(e=!0,r=s):s===r&&e&&(e=!1,r=""),s===":"&&!e)return n}return-1}function H(o,e){if(!e.enableMath)return`math(${o})`;try{let r=o.replace(/\s+/g,"");return re(r,e.enableMath)}catch(r){return console.warn("math()\u8868\u8FBE\u5F0F\u89E3\u6790\u5931\u8D25:",o,r),`calc(${o})`}}function re(o,e){return`calc(${o.replace(/([\da-z])([+-])(-?[\da-z])/g,"$1 $2 $3").replace(/([\da-z])([+-])(-?[\da-z])/g,"$1 $2 $3")})`}function se(o,e){if(!e.enableMath)return o;let r=o;const n=/math\(([^)]+)\)/gi,s=a=>a.replace(n,(c,l)=>H(l,e));let t;do t=r,r=s(r);while(r!==t&&r.includes("math("));return r}function oe(o,e){if(!e.convertLabToRGB&&!e.convertLchToRGB)return o;let r=o;r=ae(r,e);const n=/(lab|lch)\([^)]+\)/gi,s=new Map,t=c=>c.replace(n,l=>{if(s.has(l))return s.get(l);let i=l;return l.toLowerCase().startsWith("lab(")?e.convertLabToRGB&&(i=ce(l,e)):l.toLowerCase().startsWith("lch(")&&e.convertLchToRGB&&(i=le(l,e)),s.set(l,i),i});let a;do a=r,r=t(r);while(r!==a);return r}function ae(o,e){let r=o;const n=/lab#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})/gi,s=/lch#([0-9a-f]{2})([0-9a-f]{2})(\d{1,3})/gi,t=new Map;return r=r.replace(n,(a,c,l,i)=>{if(t.has(a))return t.get(a);try{const u=parseInt(c,16)/255*100,h=(parseInt(l,16)-128)*1.5,f=(parseInt(i,16)-128)*1.5,p=x(u,h,f,e);return t.set(a,p),p}catch(u){return console.warn(`\u65E0\u6CD5\u89E3\u6790lab#\u5341\u516D\u8FDB\u5236\u989C\u8272: ${a}`,u),a}}),r=r.replace(s,(a,c,l,i)=>{if(t.has(a))return t.get(a);try{const u=parseInt(c,16)/255*100,h=parseInt(l,16)/255*150,f=parseInt(i)/100*360,p=S(u,h,f),d=x(p.L,p.a,p.b,e);return t.set(a,d),d}catch(u){return console.warn(`\u65E0\u6CD5\u89E3\u6790lch#\u5341\u516D\u8FDB\u5236\u989C\u8272: ${a}`,u),a}}),r}function ce(o,e){const r=/lab\(\s*([\d.]+)(%?)\s+([\d.-]+)\s+([\d.-]+)(?:\s*\/\s*([\d.%]+))?\s*\)/i,n=o.match(r);if(!n)return o;try{let s=parseFloat(n[1]);n[2]==="%"?s=s:(s<0&&(s=0),s>100&&(s=100));const t=parseFloat(n[3]),a=parseFloat(n[4]),c=n[5]!==void 0?n[5].includes("%")?parseFloat(n[5])/100:parseFloat(n[5]):null;return x(s,t,a,e,c)}catch(s){return console.warn(`\u65E0\u6CD5\u8F6C\u6362LAB\u989C\u8272: ${o}`,s),o}}function le(o,e){const r=/lch\(\s*([\d.]+)(%?)\s+([\d.]+)\s+([\d.]+)(deg)?(?:\s*\/\s*([\d.%]+))?\s*\)/i,n=o.match(r);if(!n)return o;try{let s=parseFloat(n[1]);n[2]==="%"?s=s:(s<0&&(s=0),s>100&&(s=100));const t=parseFloat(n[3]);let a=parseFloat(n[4]);t<0&&console.warn(`LCH\u4E2D\u7684C\u503C\u4E0D\u80FD\u4E3A\u8D1F: ${t}`),a=(a%360+360)%360;const c=S(s,t,a),l=n[6]!==void 0?n[6].includes("%")?parseFloat(n[6])/100:parseFloat(n[6]):null;return x(c.L,c.a,c.b,e,l)}catch(s){return console.warn(`\u65E0\u6CD5\u8F6C\u6362LCH\u989C\u8272: ${o}`,s),o}}function S(o,e,r){const n=r*Math.PI/180,s=e*Math.cos(n),t=e*Math.sin(n);return{L:o,a:s,b:t}}function C(o,e,r){const n=(m,y,w)=>{const Z=(m+16)/116,j=y/500+Z,O=Z-w/200,be=j**3>.008856?j**3:(116*j-16)/903.3,ye=m>903.3*.008856?((m+16)/116)**3:m/903.3,we=O**3>.008856?O**3:(116*O-16)/903.3;return[be*.95047,ye*1,we*1.08883]},s=(m,y,w)=>{const $=[[3.2404542,-1.5371385,-.4985314],[-.969266,1.8760108,.041556],[.0556434,-.2040259,1.0572252]],R=$[0][0]*m+$[0][1]*y+$[0][2]*w,D=$[1][0]*m+$[1][1]*y+$[1][2]*w,Y=$[2][0]*m+$[2][1]*y+$[2][2]*w;return[R,D,Y]},t=m=>{const y=m<0?-1:1,w=Math.abs(m);return w<=.0031308?y*12.92*w:y*(1.055*Math.pow(w,.4166666666666667)-.055)},a=m=>Math.max(0,Math.min(255,Math.round(m*255))),[c,l,i]=n(o,e,r),[u,h,f]=s(c,l,i),p=t(u),d=t(h),b=t(f);return{r:a(p),g:a(d),b:a(b)}}function A(o,e,r){const n=(c,l,i)=>{const b=(c+16)/116,m=l/500+b,y=b-i/200,w=m**3>.008856?m**3:(116*m-16)/903.3,$=c>903.3*.008856?((c+16)/116)**3:c/903.3,R=y**3>.008856?y**3:(116*y-16)/903.3;return[w*.95047,$*1,R*1.08883]},s=(c,l,i)=>{const u=[[2.493496911941425,-.9313836179191239,-.40271078445071684],[-.8294889695615747,1.7626640603183463,.023624685841943577],[.03584583024378447,-.07617238926804182,.9568845240076872]],h=u[0][0]*c+u[0][1]*l+u[0][2]*i,f=u[1][0]*c+u[1][1]*l+u[1][2]*i,p=u[2][0]*c+u[2][1]*l+u[2][2]*i;return[h,f,p]},t=c=>{const l=c<0?-1:1,i=Math.abs(c);return i<=.0031308?l*12.92*i:l*(1.055*Math.pow(i,.4166666666666667)-.055)},a=c=>Math.max(0,Math.min(255,Math.round(c*255)));try{const[c,l,i]=n(o,e,r),[u,h,f]=s(c,l,i),p=t(u),d=t(h),b=t(f);return{r:Math.max(0,Math.min(1,p)),g:Math.max(0,Math.min(1,d)),b:Math.max(0,Math.min(1,b))}}catch(c){console.warn("P3\u8F6C\u6362\u5931\u8D25:",c);const l=C(o,e,r);return{r:l.r/255,g:l.g/255,b:l.b/255}}}function x(o,e,r,n,s=null){if(!n.enableP3||!k()){const t=C(o,e,r);return s!==null?`rgba(${t.r}, ${t.g}, ${t.b}, ${s})`:`rgb(${t.r}, ${t.g}, ${t.b})`}else{const t=A(o,e,r);return s!==null?`color(display-p3 ${t.r.toFixed(4)} ${t.g.toFixed(4)} ${t.b.toFixed(4)} / ${s})`:`color(display-p3 ${t.r.toFixed(4)} ${t.g.toFixed(4)} ${t.b.toFixed(4)})`}}function L(o,e){let r=o;return e.enableMath&&(r=se(r,e)),(e.convertLabToRGB||e.convertLchToRGB)&&(r=oe(r,e)),r}function ie(o,e){const r=o.split(`
12
+ `),n={},s=new Map;let t="",a=null,c=!1,l=0;for(let i of r){const u=i.trim(),h=u.match(/^\$([\w]+)\s*:\s*(.+?);?$/);if(h){const[,f,p]=h,d=L(G(p.trim(),{...n,...a?s.get(a)||{}:{}}),e);a?(s.has(a)||s.set(a,{}),s.get(a)[f]=d):n[f]=d;continue}if(u.endsWith("{")){a=u.slice(0,-1).trim(),c=!0,t+=i+`
13
+ `;continue}if(u==="}"){if(c&&a&&s.has(a)){const f=s.get(a),p=" ".repeat(l);for(const[d,b]of Object.entries(f))t+=`${p} --${d}: ${b};
14
+ `}c=!1,a=null}t+=i+`
15
+ `,i.includes("{")&&(l+=e.indentSize),i.includes("}")&&(l=Math.max(0,l-e.indentSize))}return{globalVariables:n,selectorVariables:s,cssWithoutVars:t.trim()}}function ue(o,e,r,n){const s=o.split(`
16
+ `),t=[],a=[];let c=0;for(let l=0;l<s.length;l++){const i=s[l],u=i.trim();if(!u)continue;const h=i.match(/^(\s*)/)[0].length;if(u==="}"){if(t.length>0){const f=t.pop();if(t.length>0){const p=t[t.length-1];p.children||(p.children=[]),p.children.push(f)}else a.push(f)}continue}if(u.endsWith("{")){const p={selector:u.slice(0,-1).trim(),properties:[],children:[]};t.push(p);continue}if(!u.includes("{")&&!u.includes("}")&&u.includes(":")){if(t.length>0){const f=t[t.length-1];_(u,r,n).forEach(d=>{const b=Object.keys(d)[0],m=L(d[b],e);f.properties.push(m===""?b:`${b}: ${m}`)})}continue}}for(;t.length>0;){const l=t.pop();if(t.length===0)a.push(l);else{const i=t[t.length-1];i.children||(i.children=[]),i.children.push(l)}}return N(a,e,"",r,n)}function N(o,e,r="",n,s){let t="";const a=r.startsWith("@");for(const c of o){const l=c.selector.startsWith("@");let i=(a?" ".repeat(e.indentSize):"")+c.selector;if(l&&(i=c.selector+` {
17
+ `),r&&(i.includes("&")?i=i.replace(/&/g,r):i.trim().startsWith(":")?i=r+i:i=r+(a?"":" ")+i),c.properties.length>0){t+=(l?"":i)+` {
18
+ `;for(const u of c.properties)_(u,n,s).forEach(f=>{const p=Object.keys(f)[0],d=L(f[p],e);t+=(a?" ".repeat(e.indentSize):"")+" ".repeat(e.indentSize)+(d===""?p:`${p}: ${d};
19
+ `)});t+=a?" ".repeat(e.indentSize)+`}
20
20
  `:`}
21
21
 
22
- `}c.children&&c.children.length>0&&(s+=G(c.children,e,i,n,o)),a&&(s+=`}
22
+ `}c.children&&c.children.length>0&&(t+=N(c.children,e,i,n,s)),a&&(t+=`}
23
23
 
24
- `)}return s.trim()+`
24
+ `)}return t.trim()+`
25
25
 
26
- `}function U(t,e){return t.replace(/\$([a-zA-Z0-9_-]+)/g,(r,n)=>e[n]?`var(--${n})`:r)}function he(t,e,r,n){let o=t;return o=o.replace(/(?:\$\$|\$)([a-zA-Z0-9_-]+)/g,(s,a)=>s.startsWith("$$")?`attr(${a})`:`var(--${a})`),o=x(o,n),o}function de(t,e){if(Object.keys(t).length===0)return"";const r=Object.entries(t).map(([n,o])=>{const s=x(U(o,t),e);return" ".repeat(e.indentSize)+`--${n}: ${s};`}).join(`
26
+ `}function G(o,e){return o.replace(/\$([\w]+)(\W?)/g,(r,n,s)=>e[n]?`var(--${n})${s}`:r)}function fe(o,e,r,n){let s=o;return s=s.replace(/(?:\$\$|\$)([\w]+)(\W?)/g,(t,a,c)=>t.startsWith("$$")?`attr(${a})${c}`:`var(--${a})${c}`),s=L(s,n),s}function pe(o,e){if(Object.keys(o).length===0)return"";const r=Object.entries(o).map(([n,s])=>{const t=L(G(s,o),e);return" ".repeat(e.indentSize)+`--${n}: ${t};`}).join(`
27
27
  `);return`${e.rootSelector} {
28
28
  ${r}
29
29
  }
30
30
 
31
- `}function me(t,e,r){let n="";const o=t.split(`
32
- `);let s=null;for(let a of o){const c=a.trim();c.endsWith("{")&&(s=c.slice(0,-1).trim()),c==="}"&&s&&(s=null),n+=x(a,r)+`
33
- `}return n.trim()}async function Z(t,e){const r=/@import\s+([^;]+?)\s*;/g;return(async o=>{const s=[],a=o.replace(r,(c,l)=>{const i=ge(l,e).then(u=>Z(u,e)).catch(u=>(console.warn(`\u65E0\u6CD5\u5BFC\u5165CSS\u6587\u4EF6: ${l}`,u),""));return s.push(i),`__IMPORT_PLACEHOLDER_${s.length-1}__`});if(s.length>0){const c=await Promise.all(s);let l=a;for(let i=0;i<c.length;i++)l=l.replace(`__IMPORT_PLACEHOLDER_${i}__`,c[i]);return l}return a})(t)}async function ge(t,e){if(e.importCache&&P.has(t))return P.get(t);const r=e.importBaseUrl?new URL(t,e.importBaseUrl).href:t;let n;if(typeof process<"u"&&process.versions&&process.versions.node&&typeof require<"u")try{const s=require("fs"),a=require("path");let c=r;r.startsWith(".")&&(c=a.join(process.cwd(),r)),n=s.readFileSync(c,"utf-8")}catch(s){throw new Error(`Node.js\u6587\u4EF6\u8BFB\u53D6\u5931\u8D25: ${r} - ${s.message}`)}else try{const s=new AbortController,a=setTimeout(()=>s.abort(),e.importTimeout),c=await fetch(r,{signal:s.signal,headers:{Accept:"text/css"}});if(clearTimeout(a),!c.ok)throw new Error(`HTTP\u9519\u8BEF: ${c.status} ${c.statusText}`);n=await c.text()}catch(s){throw s.name==="AbortError"?new Error(`\u5BFC\u5165\u8D85\u65F6: ${r}`):new Error(`\u65E0\u6CD5\u83B7\u53D6CSS: ${r} - ${s.message}`)}return e.importCache&&P.set(t,n),n}async function F(t,e={}){let{config:r,css:n}=K(t);const o={...g,...e,...r};n=await Z(n,o);let s=n,a=new Map;if(o.enableAlias){const{aliases:y,css:$}=J(s);a=y,s=$}let c=s,l=new Map;if(o.enableMacros){const{macros:y,css:$}=O(c,o);l=y,c=$;for(const[w,A]of l)M.set(w,A)}let i=c;o.enableMacros&&l.size>0&&(i=ee(i,l,o));const{globalVariables:u,selectorVariables:h,cssWithoutVars:f}=fe(i,o);let p=f.trim();if(o.enableNesting&&f.includes("{"))try{p=pe(f,o,a,l)}catch(y){console.warn("\u5D4C\u5957\u89E3\u6790\u5931\u8D25\uFF0C\u4F7F\u7528\u539F\u59CBCSS:",y)}const d=de(u,o);let b=p;h.size>0&&(b=me(p,h,o)),b=he(b,u,h,o);let m=d+b;for(const[y,$]of E)try{m=$.convert(m,o)}catch(w){console.error("\u63D2\u4EF6\u5904\u7406\u5931\u8D25:",w)}return m}function X(t={}){const e={...g,...t},r=document.querySelectorAll(`style[${e.styleTagAttribute||"e"}]`);return r.forEach(n=>{let o=n.textContent;(async()=>{try{n.getAttribute("src")&&(o="@import "+n.getAttribute("src")+";");const a=await F(o,e),c=document.createElement("style");c.textContent=a,n.parentNode.insertBefore(c,n.nextSibling),e.preserveOriginal?n.style.display="none":n.remove()}catch(a){console.error("\u5904\u7406style\u6807\u7B7E\u5931\u8D25:",a)}})()}),r.length}function q(t={}){g={...g,...t}}function k(t,e={}){const r={...g,...e};if(t)return(async()=>{try{const n=await F(t,r),o=document.createElement("style");return o.textContent=n,document.head.appendChild(o),o}catch(n){return console.error("\u5E94\u7528CSS\u5931\u8D25:",n),null}})();document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>{X(r)}):X(r)}const be={convert:F,apply:k,config:q,supportsP3:z(),detectP3Support:z,imports:{clearCache:function(){P.clear()},setBaseUrl:function(t){g.importBaseUrl=t},setCacheEnabled:function(t){g.importCache=t},setTimeout:function(t){g.importTimeout=t}},plugins:{use(t){return(t.created??(()=>{}))(),E.set(t.name,t),!0},remove(t){return(E.get(t).deleted??(()=>{}))(),E.delete(t),!0}},aliases:{add:function(t,e){V.set(t,e)},remove:function(t){V.delete(t)},getAll:function(){return Array.from(V.entries())},clear:function(){V.clear()}},macros:{define:function(t,e,r=[]){if(typeof e=="function"){const o=e.toString().match(/{([\s\S]*)}/);o&&M.set(t,{params:r.map(s=>typeof s=="string"?{name:s}:s),body:o[1].trim()})}else M.set(t,{params:r.map(n=>typeof n=="string"?{name:n}:n),body:e})},call:function(t,...e){const r=M.get(t);if(!r)throw new Error(`\u672A\u5B9A\u4E49\u7684\u5B8F: ${t}`);const n=new Map;for(let o=0;o<r.params.length;o++){const s=r.params[o],a=o<e.length?e[o]:s.defaultValue;if(a===void 0&&s.defaultValue===null)throw new Error(`\u7F3A\u5C11\u5FC5\u9700\u53C2\u6570: ${s.name}`);n.set(s.name,a!==void 0?a:"")}return B(r.body,n,g)},getAll:function(){return Array.from(M.entries())},remove:function(t){M.delete(t)},clear:function(){M.clear()},parse:function(t){const{macros:e}=O(t,g);for(const[r,n]of e)M.set(r,n)}},math:{evaluate:function(t){return _(t,g)},parseUnit:H,round:oe,test:function(t,e={}){const r={...g,...e};try{const n=_(t,r);return{success:!0,expression:t,result:n,parsed:H(n.replace(/^calc\(|\)$/g,""))}}catch(n){return{success:!1,expression:t,error:n.message}}}},colorUtils:{labToRGB:v,lchToLab:C,lchToRGB:function(t,e,r){const n=C(t,e,r);return v(n.L,n.a,n.b)},labToP3:R,lchToP3:function(t,e,r){const n=C(t,e,r);return R(n.L,n.a,n.b)},parseHexLab:function(t){const e=t.match(/lab#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})/i);if(!e)return null;const r=e[1],n=e[2],o=e[3],s=parseInt(r,16)/255*100,a=(parseInt(n,16)-128)*1.5,c=(parseInt(o,16)-128)*1.5;return v(s,a,c)},parseHexLch:function(t){const e=t.match(/lch#([0-9a-f]{2})([0-9a-f]{2})(\d{1,3})/i);if(!e)return null;const r=e[1],n=e[2],o=e[3],s=parseInt(r,16)/255*100,a=parseInt(n,16)/255*150,c=parseInt(o)/100*360,l=C(s,a,c);return v(l.L,l.a,l.b)},generateColor:function(t,e,r,n=null,o=!0){return S(t,e,r,{enableP3:o},n)},parseColor:function(t){try{const e=t.match(/lab\(\s*([\d.]+)(%?)\s+([\d.-]+)\s+([\d.-]+)(?:\s*\/\s*([\d.%]+))?\s*\)/i);if(e){let n=parseFloat(e[1]);const o=parseFloat(e[3]),s=parseFloat(e[4]),a=e[5]?e[5].includes("%")?parseFloat(e[5])/100:parseFloat(e[5]):null,c=S(n,o,s,g,a);return{L:n,A:o,B:s,alpha:a,rgb:v(n,o,s),p3:R(n,o,s),colorString:c}}const r=t.match(/lch\(\s*([\d.]+)(%?)\s+([\d.]+)\s+([\d.]+)(deg)?(?:\s*\/\s*([\d.%]+))?\s*\)/i);if(r){let n=parseFloat(r[1]);const o=parseFloat(r[3]);let s=parseFloat(r[4]);const a=r[6]?r[6].includes("%")?parseFloat(r[6])/100:parseFloat(r[6]):null,c=C(n,o,s),l=S(c.L,c.a,c.b,g,a);return{L:n,C:o,H:s,alpha:a,lab:c,rgb:v(c.L,c.a,c.b),p3:R(c.L,c.a,c.b),colorString:l}}return null}catch(e){return console.warn("\u65E0\u6CD5\u89E3\u6790\u989C\u8272:",t,e),null}}}},T=async function(...t){if(t.length>1||t[0]&&t[0].raw)return await ye(...t);const e=t[0];if(typeof e=="string"){const r=await F(e,{...g,...t[1]});return r&&typeof r.then=="function",r}return typeof e=="object"&&e!==null?(g={...g,...e},T):t.length===0?k():T};async function ye(t,...e){let r=t[0];for(let o=0;o<e.length;o++){const s=e[o];let a="";typeof s=="function"?a=s():Array.isArray(s)?a=s.join(" "):a=String(s??""),r+=a+t[o+1]}const n=await F(r,g);return n&&typeof n.then=="function",n}return Object.assign(T,be),Object.setPrototypeOf(T,Function.prototype),typeof window<"u"&&(k(),Object.defineProperty(window.HTMLElement.prototype,"cssVar",{get(){const t=this;return new Proxy(()=>{},{get(e,r){const n=r.startsWith("--")?r:`--${r}`;return t.style.getPropertyValue(n)},set(e,r,n){const o=r.startsWith("--")?r:`--${r}`;return t.style.setProperty(o,n),!0},apply(e,r,n){const o=n[0],s=n[1],a=o.startsWith("--")?o:`--${o}`;if(s===void 0)return t.style.getPropertyValue(a);t.style.setProperty(a,s)}})}})),T})();if(typeof define=="function"&&define.amd)define([],g=>styimat);else if(typeof module=="object"&&module.exports)module.exports=styimat;else{const g=globalThis??(typeof self<"u"&&self)??(typeof window<"u"&&window)??global??{};g.styimat=styimat}
31
+ `}function he(o,e,r){let n="";const s=o.split(`
32
+ `);let t=null;for(let a of s){const c=a.trim();c.endsWith("{")&&(t=c.slice(0,-1).trim()),c==="}"&&t&&(t=null),n+=L(a,r)+`
33
+ `}return n.trim()}async function U(o,e){const r=/@import\s+([^;]+?)\s*;/g;return(async s=>{const t=[],a=s.replace(r,(c,l)=>{const i=de(l,e).then(u=>U(u,e)).catch(u=>(console.warn(`\u65E0\u6CD5\u5BFC\u5165CSS\u6587\u4EF6: ${l}`,u),""));return t.push(i),`__IMPORT_PLACEHOLDER_${t.length-1}__`});if(t.length>0){const c=await Promise.all(t);let l=a;for(let i=0;i<c.length;i++)l=l.replace(`__IMPORT_PLACEHOLDER_${i}__`,c[i]);return l}return a})(o)}async function de(o,e){if(e.importCache&&P.has(o))return P.get(o);const r=e.importBaseUrl?new URL(o,e.importBaseUrl).href:o;let n;if(typeof process<"u"&&process.versions&&process.versions.node&&typeof require<"u")try{const t=require("fs"),a=require("path");let c=r;r.startsWith(".")&&(c=a.join(process.cwd(),r)),n=t.readFileSync(c,"utf-8")}catch(t){throw new Error(`Node.js\u6587\u4EF6\u8BFB\u53D6\u5931\u8D25: ${r} - ${t.message}`)}else try{const t=new AbortController,a=setTimeout(()=>t.abort(),e.importTimeout),c=await fetch(r,{signal:t.signal,headers:{Accept:"text/css"}});if(clearTimeout(a),!c.ok)throw new Error(`HTTP\u9519\u8BEF: ${c.status} ${c.statusText}`);n=await c.text()}catch(t){throw t.name==="AbortError"?new Error(`\u5BFC\u5165\u8D85\u65F6: ${r}`):new Error(`\u65E0\u6CD5\u83B7\u53D6CSS: ${r} - ${t.message}`)}return e.importCache&&P.set(o,n),n}async function T(o,e={}){let{config:r,css:n}=Q(o);const s={...g,...e,...r};n=await U(n,s);let t=n,a=new Map;if(s.enableAlias){const{aliases:y,css:w}=K(t);a=y,t=w}let c=t,l=new Map;if(s.enableMacros){const{macros:y,css:w}=z(c,s);l=y,c=w;for(const[$,R]of l)M.set($,R)}let i=c;s.enableMacros&&l.size>0&&(i=J(i,l,s));const{globalVariables:u,selectorVariables:h,cssWithoutVars:f}=ie(i,s);let p=f.trim();if(s.enableNesting&&f.includes("{"))try{p=ue(f,s,a,l)}catch(y){console.warn("\u5D4C\u5957\u89E3\u6790\u5931\u8D25\uFF0C\u4F7F\u7528\u539F\u59CBCSS:",y)}const d=pe(u,s);let b=p;h.size>0&&(b=he(p,h,s)),b=fe(b,u,h,s);let m=d+b;for(const[y,w]of W)try{m=w.convert(m,s)}catch($){console.error("\u63D2\u4EF6\u5904\u7406\u5931\u8D25:",$)}return m}function X(o={}){const e={...g,...o},r=document.querySelectorAll(`style[${e.styleTagAttribute||"e"}]`);return r.forEach(n=>{let s=n.textContent;(async()=>{try{n.getAttribute("src")&&(s="@import "+n.getAttribute("src")+";");const a=await T(s,e),c=document.createElement("style");c.textContent=a,n.parentNode.insertBefore(c,n.nextSibling),e.preserveOriginal?n.style.display="none":n.remove()}catch(a){console.error("\u5904\u7406style\u6807\u7B7E\u5931\u8D25:",a)}})()}),r.length}function q(o={}){g={...g,...o}}function I(o,e={}){const r={...g,...e};if(o)return(async()=>{try{const n=await T(o,r),s=document.createElement("style");return s.textContent=n,document.head.appendChild(s),s}catch(n){return console.error("\u5E94\u7528CSS\u5931\u8D25:",n),null}})();document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>{X(r)}):X(r)}const me={convert:T,apply:I,config:q,supportsP3:k(),detectP3Support:k,imports:{clearCache:function(){P.clear()},setBaseUrl:function(o){g.importBaseUrl=o},setCacheEnabled:function(o){g.importCache=o},setTimeout:function(o){g.importTimeout=o}},plugins:{use(o){return(o.created??(()=>{}))(),W.set(o.name,o),!0},remove(o){return(W.get(o).deleted??(()=>{}))(),W.delete(o),!0}},aliases:{add:function(o,e){V.set(o,e)},remove:function(o){V.delete(o)},getAll:function(){return Array.from(V.entries())},clear:function(){V.clear()}},macros:{define:function(o,e,r=[]){if(typeof e=="function"){const s=e.toString().match(/{([\s\S]*)}/);s&&M.set(o,{params:r.map(t=>typeof t=="string"?{name:t}:t),body:s[1].trim()})}else M.set(o,{params:r.map(n=>typeof n=="string"?{name:n}:n),body:e})},call:function(o,...e){const r=M.get(o);if(!r)throw new Error(`\u672A\u5B9A\u4E49\u7684\u5B8F: ${o}`);const n=new Map;for(let s=0;s<r.params.length;s++){const t=r.params[s],a=s<e.length?e[s]:t.defaultValue;if(a===void 0&&t.defaultValue===null)throw new Error(`\u7F3A\u5C11\u5FC5\u9700\u53C2\u6570: ${t.name}`);n.set(t.name,a!==void 0?a:"")}return B(r.body,n,g)},getAll:function(){return Array.from(M.entries())},remove:function(o){M.delete(o)},clear:function(){M.clear()},parse:function(o){const{macros:e}=z(o,g);for(const[r,n]of e)M.set(r,n)}},math:{evaluate:function(o){return H(o,g)}},colorUtils:{labToRGB:C,lchToLab:S,lchToRGB:function(o,e,r){const n=S(o,e,r);return C(n.L,n.a,n.b)},labToP3:A,lchToP3:function(o,e,r){const n=S(o,e,r);return A(n.L,n.a,n.b)},parseHexLab:function(o){const e=o.match(/lab#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})/i);if(!e)return null;const r=e[1],n=e[2],s=e[3],t=parseInt(r,16)/255*100,a=(parseInt(n,16)-128)*1.5,c=(parseInt(s,16)-128)*1.5;return C(t,a,c)},parseHexLch:function(o){const e=o.match(/lch#([0-9a-f]{2})([0-9a-f]{2})(\d{1,3})/i);if(!e)return null;const r=e[1],n=e[2],s=e[3],t=parseInt(r,16)/255*100,a=parseInt(n,16)/255*150,c=parseInt(s)/100*360,l=S(t,a,c);return C(l.L,l.a,l.b)},generateColor:function(o,e,r,n=null,s=!0){return x(o,e,r,{enableP3:s},n)},parseColor:function(o){try{const e=o.match(/lab\(\s*([\d.]+)(%?)\s+([\d.-]+)\s+([\d.-]+)(?:\s*\/\s*([\d.%]+))?\s*\)/i);if(e){let n=parseFloat(e[1]);const s=parseFloat(e[3]),t=parseFloat(e[4]),a=e[5]?e[5].includes("%")?parseFloat(e[5])/100:parseFloat(e[5]):null,c=x(n,s,t,g,a);return{L:n,A:s,B:t,alpha:a,rgb:C(n,s,t),p3:A(n,s,t),colorString:c}}const r=o.match(/lch\(\s*([\d.]+)(%?)\s+([\d.]+)\s+([\d.]+)(deg)?(?:\s*\/\s*([\d.%]+))?\s*\)/i);if(r){let n=parseFloat(r[1]);const s=parseFloat(r[3]);let t=parseFloat(r[4]);const a=r[6]?r[6].includes("%")?parseFloat(r[6])/100:parseFloat(r[6]):null,c=S(n,s,t),l=x(c.L,c.a,c.b,g,a);return{L:n,C:s,H:t,alpha:a,lab:c,rgb:C(c.L,c.a,c.b),p3:A(c.L,c.a,c.b),colorString:l}}return null}catch(e){return console.warn("\u65E0\u6CD5\u89E3\u6790\u989C\u8272:",o,e),null}}}},F=async function(...o){if(o.length>1||o[0]&&o[0].raw)return await ge(...o);const e=o[0];if(typeof e=="string"){const r=await T(e,{...g,...o[1]});return r&&typeof r.then=="function",r}return typeof e=="object"&&e!==null?(g={...g,...e},F):o.length===0?I():F};async function ge(o,...e){let r=o[0];for(let s=0;s<e.length;s++){const t=e[s];let a="";typeof t=="function"?a=t():Array.isArray(t)?a=t.join(" "):a=String(t??""),r+=a+o[s+1]}const n=await T(r,g);return n&&typeof n.then=="function",n}return Object.assign(F,me),Object.setPrototypeOf(F,Function.prototype),typeof window<"u"&&(I(),Object.defineProperty(window.HTMLElement.prototype,"cssVar",{get(){const o=this;return new Proxy(()=>{},{get(e,r){const n=r.startsWith("--")?r:`--${r}`;return o.style.getPropertyValue(n)},set(e,r,n){const s=r.startsWith("--")?r:`--${r}`;return o.style.setProperty(s,n),!0},apply(e,r,n){const s=n[0],t=n[1],a=s.startsWith("--")?s:`--${s}`;if(t===void 0)return o.style.getPropertyValue(a);o.style.setProperty(a,t)}})}})),F})();if(typeof define=="function"&&define.amd)define([],g=>styimat);else if(typeof module=="object"&&module.exports)module.exports=styimat;else{const g=globalThis??(typeof self<"u"&&self)??(typeof window<"u"&&window)??global??{};g.styimat=styimat}
@@ -1,33 +1,33 @@
1
1
  /*!
2
2
  * MIT License
3
3
  * Copyright (c) 2025 王小玗
4
- */const T=(function(){let g={rootSelector:":root",variablePrefix:"--",preserveOriginal:!1,indentSize:4,enableNesting:!0,autoProcessStyleTags:!0,styleTagAttribute:"e",convertLabToRGB:!0,convertLchToRGB:!0,enableP3:!0,enableMath:!0,importBaseUrl:"",importCache:!0,importTimeout:5e3,enableAlias:!0,enableMacros:!0},L=null;const V=new Map,E=new Map,M=new Map,B=new Map;function J(t){const e={...g},r=t.split(`
5
- `),n=[];for(let o of r){const s=o.trim();if(s.startsWith("#")){const a=s.substring(1).trim(),c=a.indexOf(" ");if(c!==-1){const l=a.substring(0,c).trim(),i=a.substring(c+1).trim(),u=re(l);i==="true"||i==="false"?e[u]=i==="true":!isNaN(i)&&i.trim()!==""?e[u]=Number(i):e[u]=i}else console.warn(`\u65E0\u6548\u7684\u914D\u7F6E\u884C: ${s}`)}else n.push(o)}return{config:e,css:n.join(`
6
- `)}}function ee(t){const e=new Map,r=t.split(`
7
- `),n=[];for(let o of r){const s=o.trim();if(s.startsWith("@alias")){const a=s.match(/^@alias\s+([a-zA-Z0-9_-]+)\s+(.+?)\s*;$/);if(a){const c=a[1],l=a[2];e.set(c,l);continue}}n.push(o)}return{aliases:e,css:n.join(`
8
- `)}}function N(t,e){if(!e.enableMacros)return{macros:new Map,css:t};const r=new Map,n=t.split(`
9
- `),o=[];let s=!1,a="",c=[],l=[],i=0;for(let u of n){const h=u.trim();if(!s&&h.startsWith("@macro")){const f=h.match(/^@macro\s+([a-zA-Z0-9_-]+)\s*\(([^)]*)\)\s*\{$/);if(f){s=!0,a=f[1],c=f[2].split(",").map(p=>p.trim()).filter(p=>p).map(p=>{const d=p.split(":").map(b=>b.trim());return{name:d[0].slice(1),defaultValue:d[1]||null}}),l=[],i=1;continue}}if(s){for(const f of u)f==="{"&&i++,f==="}"&&i--;i===0?(r.set(a,{params:c,body:l.join(`
10
- `)}),s=!1,a="",c=[],l=[]):l.push(u);continue}o.push(u)}return{macros:r,css:o.join(`
11
- `)}}function te(t,e,r){if(!r.enableMacros||e.size===0)return t;const n=Array.from(e.keys()).map(a=>a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|"),o=new RegExp(`@(${n})\\s*\\(([^)]*)\\)\\s*;?`,"g");return(a=>{let c=a,l=!1;do l=!1,c=c.replace(o,(i,u,h)=>{l=!0;const f=e.get(u);if(!f)return console.warn(`\u672A\u5B9A\u4E49\u7684\u5B8F: ${u}`),i;const p=z(h,f.params);return W(f.body,p,r)});while(l);return c})(t)}function z(t,e){const r=new Map,n=ne(t);for(let o=0;o<e.length;o++){const s=e[o];let a;o<n.length?a=n[o]:s.defaultValue!==null?a=s.defaultValue:(console.warn(`\u5B8F\u8C03\u7528\u7F3A\u5C11\u5FC5\u9700\u53C2\u6570: ${s.name}`),a=""),r.set(s.name,a)}return n.length>e.length&&console.warn("\u5B8F\u8C03\u7528\u4F20\u9012\u4E86\u8FC7\u591A\u53C2\u6570\uFF0C\u591A\u4F59\u7684\u53C2\u6570\u5C06\u88AB\u5FFD\u7565"),r}function ne(t){const e=[];let r="",n=!1,o="",s=0,a=0;for(let c=0;c<t.length;c++){const l=t[c];(l==='"'||l==="'")&&!n?(n=!0,o=l):l===o&&n&&(n=!1,o=""),n||(l==="("&&s++,l===")"&&s--,l==="["&&a++,l==="]"&&a--),l===","&&!n&&s===0&&a===0?(e.push(r.trim()),r=""):r+=l}return r.trim()&&e.push(r.trim()),e}function W(t,e,r){let n=t;for(const[o,s]of e){const a=new RegExp(`\\$${o}`,"g");n=n.replace(a,s)}if(r.enableMacros){const o=Array.from(M.keys()).map(s=>s.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|");if(o){const s=new RegExp(`@(${o})\\s*\\(([^)]*)\\)\\s*;?`,"g");let a;do a=!1,n=n.replace(s,(c,l,i)=>{a=!0;const u=M.get(l);if(!u)return c;const h=z(i,u.params);return W(u.body,h,r)});while(a)}}return n=x(n,r),n}function re(t){return t.replace(/-([a-z])/g,function(e,r){return r.toUpperCase()})}function _(){if(L!==null)return L;if(typeof window>"u"||!window.CSS)return L=!1,!1;try{L=CSS.supports("color","color(display-p3 1 0 0)")}catch(t){console.warn("P3\u652F\u6301\u68C0\u6D4B\u5931\u8D25:",t),L=!1}return L}function H(t,e,r){let n=t.trim();if(n.endsWith(";")&&(n=n.slice(0,-1)),!n)return[];const o=[];let s="",a=0,c=!1,l="";for(let u=0;u<n.length;u++){const h=n[u];(h==='"'||h==="'")&&!c?(c=!0,l=h):h===l&&c&&(c=!1,l=""),c||(h==="("?a++:h===")"&&a--),h===";"&&!c&&a===0?s.trim()&&(o.push(s.trim()),s=""):s+=h}s.trim()&&o.push(s.trim());const i=[];for(const u of o){if(!u.trim())continue;const h=se(u);if(h===-1){console.warn(`\u65E0\u6548\u7684CSS\u58F0\u660E: "${u}"`);continue}let f=u.substring(0,h).trim(),p=u.substring(h+1).trim();if(p.endsWith(";")&&(p=p.slice(0,-1).trim()),e.get(f)&&(f=e.get(f)),f.startsWith("@")&&r.get(f.slice(1))){const d=r.get(f.slice(1)),b=z(p.split(" ").join(","),d.params);f=W(d.body,b,D),p=""}i.push({[f]:p})}return i}function se(t){let e=!1,r="";for(let n=0;n<t.length;n++){const o=t[n];if((o==='"'||o==="'")&&!e?(e=!0,r=o):o===r&&e&&(e=!1,r=""),o===":"&&!e)return n}return-1}function k(t,e){if(!e.enableMath)return`math(${t})`;try{let r=t.replace(/\s+/g,"");return oe(r,e.enableMath)}catch(r){return console.warn("math()\u8868\u8FBE\u5F0F\u89E3\u6790\u5931\u8D25:",t,r),`calc(${t})`}}function oe(t,e){return`calc(${t.replace(/([\da-z])([+-])(-?[\da-z])/g,"$1 $2 $3").replace(/([\da-z])([+-])(-?[\da-z])/g,"$1 $2 $3")})`}function G(t){const e=t.match(/^([\d.]+)([a-zA-Z%]*)$/);if(!e)throw new Error(`\u65E0\u6CD5\u89E3\u6790\u503C: ${t}`);const r=parseFloat(e[1]),n=e[2]||"";return{value:r,unit:n}}function Ce(t,e){return t.unit===e.unit||!t.unit&&!e.unit?{value:t.value*e.value,unit:t.unit||e.unit}:{value:`${t.value}${t.unit}*${e.value}${e.unit}`,unit:""}}function Se(t,e){if(e.value===0)throw new Error("\u9664\u4EE5\u96F6");return t.unit&&!e.unit?{value:t.value/e.value,unit:t.unit}:t.unit===e.unit?{value:t.value/e.value,unit:""}:{value:`${t.value}${t.unit}/${e.value}${e.unit}`,unit:""}}function xe(t,e){return t.unit===e.unit?{value:t.value+e.value,unit:t.unit}:{value:`${t.value}${t.unit}+${e.value}${e.unit}`,unit:""}}function Le(t,e){return t.unit===e.unit?{value:t.value-e.value,unit:t.unit}:{value:`${t.value}${t.unit}-${e.value}${e.unit}`,unit:""}}function ae(t,e=6){const r=Math.pow(10,e),o=(Math.round(t*r)/r).toString();return o.includes(".")?o.replace(/(\.\d*?)0+$/,"$1").replace(/\.$/,""):o}function ce(t,e){if(!e.enableMath)return t;let r=t;const n=/math\(([^)]+)\)/gi,o=a=>a.replace(n,(c,l)=>k(l,e));let s;do s=r,r=o(r);while(r!==s&&r.includes("math("));return r}function le(t,e){if(!e.convertLabToRGB&&!e.convertLchToRGB)return t;let r=t;r=ie(r,e);const n=/(lab|lch)\([^)]+\)/gi,o=new Map,s=c=>c.replace(n,l=>{if(o.has(l))return o.get(l);let i=l;return l.toLowerCase().startsWith("lab(")?e.convertLabToRGB&&(i=ue(l,e)):l.toLowerCase().startsWith("lch(")&&e.convertLchToRGB&&(i=fe(l,e)),o.set(l,i),i});let a;do a=r,r=s(r);while(r!==a);return r}function ie(t,e){let r=t;const n=/lab#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})/gi,o=/lch#([0-9a-f]{2})([0-9a-f]{2})(\d{1,3})/gi,s=new Map;return r=r.replace(n,(a,c,l,i)=>{if(s.has(a))return s.get(a);try{const u=parseInt(c,16)/255*100,h=(parseInt(l,16)-128)*1.5,f=(parseInt(i,16)-128)*1.5,p=S(u,h,f,e);return s.set(a,p),p}catch(u){return console.warn(`\u65E0\u6CD5\u89E3\u6790lab#\u5341\u516D\u8FDB\u5236\u989C\u8272: ${a}`,u),a}}),r=r.replace(o,(a,c,l,i)=>{if(s.has(a))return s.get(a);try{const u=parseInt(c,16)/255*100,h=parseInt(l,16)/255*150,f=parseInt(i)/100*360,p=C(u,h,f),d=S(p.L,p.a,p.b,e);return s.set(a,d),d}catch(u){return console.warn(`\u65E0\u6CD5\u89E3\u6790lch#\u5341\u516D\u8FDB\u5236\u989C\u8272: ${a}`,u),a}}),r}function ue(t,e){const r=/lab\(\s*([\d.]+)(%?)\s+([\d.-]+)\s+([\d.-]+)(?:\s*\/\s*([\d.%]+))?\s*\)/i,n=t.match(r);if(!n)return t;try{let o=parseFloat(n[1]);n[2]==="%"?o=o:(o<0&&(o=0),o>100&&(o=100));const s=parseFloat(n[3]),a=parseFloat(n[4]),c=n[5]!==void 0?n[5].includes("%")?parseFloat(n[5])/100:parseFloat(n[5]):null;return S(o,s,a,e,c)}catch(o){return console.warn(`\u65E0\u6CD5\u8F6C\u6362LAB\u989C\u8272: ${t}`,o),t}}function fe(t,e){const r=/lch\(\s*([\d.]+)(%?)\s+([\d.]+)\s+([\d.]+)(deg)?(?:\s*\/\s*([\d.%]+))?\s*\)/i,n=t.match(r);if(!n)return t;try{let o=parseFloat(n[1]);n[2]==="%"?o=o:(o<0&&(o=0),o>100&&(o=100));const s=parseFloat(n[3]);let a=parseFloat(n[4]);s<0&&console.warn(`LCH\u4E2D\u7684C\u503C\u4E0D\u80FD\u4E3A\u8D1F: ${s}`),a=(a%360+360)%360;const c=C(o,s,a),l=n[6]!==void 0?n[6].includes("%")?parseFloat(n[6])/100:parseFloat(n[6]):null;return S(c.L,c.a,c.b,e,l)}catch(o){return console.warn(`\u65E0\u6CD5\u8F6C\u6362LCH\u989C\u8272: ${t}`,o),t}}function C(t,e,r){const n=r*Math.PI/180,o=e*Math.cos(n),s=e*Math.sin(n);return{L:t,a:o,b:s}}function v(t,e,r){const n=(m,y,$)=>{const K=(m+16)/116,j=y/500+K,O=K-$/200,we=j**3>.008856?j**3:(116*j-16)/903.3,Me=m>903.3*.008856?((m+16)/116)**3:m/903.3,ve=O**3>.008856?O**3:(116*O-16)/903.3;return[we*.95047,Me*1,ve*1.08883]},o=(m,y,$)=>{const w=[[3.2404542,-1.5371385,-.4985314],[-.969266,1.8760108,.041556],[.0556434,-.2040259,1.0572252]],A=w[0][0]*m+w[0][1]*y+w[0][2]*$,Y=w[1][0]*m+w[1][1]*y+w[1][2]*$,Q=w[2][0]*m+w[2][1]*y+w[2][2]*$;return[A,Y,Q]},s=m=>{const y=m<0?-1:1,$=Math.abs(m);return $<=.0031308?y*12.92*$:y*(1.055*Math.pow($,.4166666666666667)-.055)},a=m=>Math.max(0,Math.min(255,Math.round(m*255))),[c,l,i]=n(t,e,r),[u,h,f]=o(c,l,i),p=s(u),d=s(h),b=s(f);return{r:a(p),g:a(d),b:a(b)}}function R(t,e,r){const n=(c,l,i)=>{const b=(c+16)/116,m=l/500+b,y=b-i/200,$=m**3>.008856?m**3:(116*m-16)/903.3,w=c>903.3*.008856?((c+16)/116)**3:c/903.3,A=y**3>.008856?y**3:(116*y-16)/903.3;return[$*.95047,w*1,A*1.08883]},o=(c,l,i)=>{const u=[[2.493496911941425,-.9313836179191239,-.40271078445071684],[-.8294889695615747,1.7626640603183463,.023624685841943577],[.03584583024378447,-.07617238926804182,.9568845240076872]],h=u[0][0]*c+u[0][1]*l+u[0][2]*i,f=u[1][0]*c+u[1][1]*l+u[1][2]*i,p=u[2][0]*c+u[2][1]*l+u[2][2]*i;return[h,f,p]},s=c=>{const l=c<0?-1:1,i=Math.abs(c);return i<=.0031308?l*12.92*i:l*(1.055*Math.pow(i,.4166666666666667)-.055)},a=c=>Math.max(0,Math.min(255,Math.round(c*255)));try{const[c,l,i]=n(t,e,r),[u,h,f]=o(c,l,i),p=s(u),d=s(h),b=s(f);return{r:Math.max(0,Math.min(1,p)),g:Math.max(0,Math.min(1,d)),b:Math.max(0,Math.min(1,b))}}catch(c){console.warn("P3\u8F6C\u6362\u5931\u8D25:",c);const l=v(t,e,r);return{r:l.r/255,g:l.g/255,b:l.b/255}}}function S(t,e,r,n,o=null){if(!n.enableP3||!_()){const s=v(t,e,r);return o!==null?`rgba(${s.r}, ${s.g}, ${s.b}, ${o})`:`rgb(${s.r}, ${s.g}, ${s.b})`}else{const s=R(t,e,r);return o!==null?`color(display-p3 ${s.r.toFixed(4)} ${s.g.toFixed(4)} ${s.b.toFixed(4)} / ${o})`:`color(display-p3 ${s.r.toFixed(4)} ${s.g.toFixed(4)} ${s.b.toFixed(4)})`}}function x(t,e){let r=t;return e.enableMath&&(r=ce(r,e)),(e.convertLabToRGB||e.convertLchToRGB)&&(r=le(r,e)),r}function pe(t,e){const r=t.split(`
12
- `),n={},o=new Map;let s="",a=null,c=!1,l=0;for(let i of r){const u=i.trim(),h=u.match(/^\$([a-zA-Z0-9_-]+)\s*:\s*(.+?);?$/);if(h){const[,f,p]=h,d=x(Z(p.trim(),{...n,...a?o.get(a)||{}:{}}),e);a?(o.has(a)||o.set(a,{}),o.get(a)[f]=d):n[f]=d;continue}if(u.endsWith("{")){a=u.slice(0,-1).trim(),c=!0,s+=i+`
13
- `;continue}if(u==="}"){if(c&&a&&o.has(a)){const f=o.get(a),p=" ".repeat(l);for(const[d,b]of Object.entries(f))s+=`${p} --${d}: ${b};
14
- `}c=!1,a=null}s+=i+`
15
- `,i.includes("{")&&(l+=e.indentSize),i.includes("}")&&(l=Math.max(0,l-e.indentSize))}return{globalVariables:n,selectorVariables:o,cssWithoutVars:s.trim()}}function he(t,e,r,n){const o=t.split(`
16
- `),s=[],a=[];let c=0;for(let l=0;l<o.length;l++){const i=o[l],u=i.trim();if(!u)continue;const h=i.match(/^(\s*)/)[0].length;if(u==="}"){if(s.length>0){const f=s.pop();if(s.length>0){const p=s[s.length-1];p.children||(p.children=[]),p.children.push(f)}else a.push(f)}continue}if(u.endsWith("{")){const p={selector:u.slice(0,-1).trim(),properties:[],children:[]};s.push(p);continue}if(!u.includes("{")&&!u.includes("}")&&u.includes(":")){if(s.length>0){const f=s[s.length-1];H(u,r,n).forEach(d=>{const b=Object.keys(d)[0],m=x(d[b],e);f.properties.push(m===""?b:`${b}: ${m}`)})}continue}}for(;s.length>0;){const l=s.pop();if(s.length===0)a.push(l);else{const i=s[s.length-1];i.children||(i.children=[]),i.children.push(l)}}return U(a,e,"",r,n)}function U(t,e,r="",n,o){let s="";const a=r.startsWith("@");for(const c of t){const l=c.selector.startsWith("@");let i=(a?" ".repeat(e.indentSize):"")+c.selector;if(l&&(i=c.selector+` {
17
- `),r&&(i.includes("&")?i=i.replace(/&/g,r):i.trim().startsWith(":")?i=r+i:i=r+(a?"":" ")+i),c.properties.length>0){s+=(l?"":i)+` {
18
- `;for(const u of c.properties)H(u,n,o).forEach(f=>{const p=Object.keys(f)[0],d=x(f[p],e);s+=(a?" ".repeat(e.indentSize):"")+" ".repeat(e.indentSize)+(d===""?p:`${p}: ${d};
19
- `)});s+=a?" ".repeat(e.indentSize)+`}
4
+ */const F=(function(){let g={rootSelector:":root",variablePrefix:"--",preserveOriginal:!1,indentSize:4,enableNesting:!0,autoProcessStyleTags:!0,styleTagAttribute:"e",convertLabToRGB:!0,convertLchToRGB:!0,enableP3:!0,enableMath:!0,importBaseUrl:"",importCache:!0,importTimeout:5e3,enableAlias:!0,enableMacros:!0},v=null;const V=new Map,W=new Map,M=new Map,B=new Map;function K(o){const e={...g},r=o.split(`
5
+ `),n=[];for(let s of r){const t=s.trim();if(t.startsWith("#")){const a=t.substring(1).trim(),c=a.indexOf(" ");if(c!==-1){const l=a.substring(0,c).trim(),i=a.substring(c+1).trim(),u=ne(l);i==="true"||i==="false"?e[u]=i==="true":!isNaN(i)&&i.trim()!==""?e[u]=Number(i):e[u]=i}else console.warn(`\u65E0\u6548\u7684\u914D\u7F6E\u884C: ${t}`)}else n.push(s)}return{config:e,css:n.join(`
6
+ `)}}function J(o){const e=new Map,r=o.split(`
7
+ `),n=[];for(let s of r){const t=s.trim();if(t.startsWith("@alias")){const a=t.match(/^@alias\s+([\w]+)\s+(.+?)\s*;$/);if(a){const c=a[1],l=a[2];e.set(c,l);continue}}n.push(s)}return{aliases:e,css:n.join(`
8
+ `)}}function _(o,e){if(!e.enableMacros)return{macros:new Map,css:o};const r=new Map,n=o.split(`
9
+ `),s=[];let t=!1,a="",c=[],l=[],i=0;for(let u of n){const h=u.trim();if(!t&&h.startsWith("@macro")){const f=h.match(/^@macro\s+([\w]+)\s*\(([^)]*)\)\s*\{$/);if(f){t=!0,a=f[1],c=f[2].split(",").map(p=>p.trim()).filter(p=>p).map(p=>{const d=p.split(":").map(b=>b.trim());return{name:d[0].slice(1),defaultValue:d[1]||null}}),l=[],i=1;continue}}if(t){for(const f of u)f==="{"&&i++,f==="}"&&i--;i===0?(r.set(a,{params:c,body:l.join(`
10
+ `)}),t=!1,a="",c=[],l=[]):l.push(u);continue}s.push(u)}return{macros:r,css:s.join(`
11
+ `)}}function ee(o,e,r){if(!r.enableMacros||e.size===0)return o;const n=Array.from(e.keys()).map(a=>a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|"),s=new RegExp(`@(${n})\\s*\\(([^)]*)\\)\\s*;?`,"g");return(a=>{let c=a,l=!1;do l=!1,c=c.replace(s,(i,u,h)=>{l=!0;const f=e.get(u);if(!f)return console.warn(`\u672A\u5B9A\u4E49\u7684\u5B8F: ${u}`),i;const p=k(h,f.params);return E(f.body,p,r)});while(l);return c})(o)}function k(o,e){const r=new Map,n=te(o);for(let s=0;s<e.length;s++){const t=e[s];let a;s<n.length?a=n[s]:t.defaultValue!==null?a=t.defaultValue:(console.warn(`\u5B8F\u8C03\u7528\u7F3A\u5C11\u5FC5\u9700\u53C2\u6570: ${t.name}`),a=""),r.set(t.name,a)}return n.length>e.length&&console.warn("\u5B8F\u8C03\u7528\u4F20\u9012\u4E86\u8FC7\u591A\u53C2\u6570\uFF0C\u591A\u4F59\u7684\u53C2\u6570\u5C06\u88AB\u5FFD\u7565"),r}function te(o){const e=[];let r="",n=!1,s="",t=0,a=0;for(let c=0;c<o.length;c++){const l=o[c];(l==='"'||l==="'")&&!n?(n=!0,s=l):l===s&&n&&(n=!1,s=""),n||(l==="("&&t++,l===")"&&t--,l==="["&&a++,l==="]"&&a--),l===","&&!n&&t===0&&a===0?(e.push(r.trim()),r=""):r+=l}return r.trim()&&e.push(r.trim()),e}function E(o,e,r){let n=o;for(const[s,t]of e){const a=new RegExp(`\\$${s}`,"g");n=n.replace(a,t)}if(r.enableMacros){const s=Array.from(M.keys()).map(t=>t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|");if(s){const t=new RegExp(`@(${s})\\s*\\(([^)]*)\\)\\s*;?`,"g");let a;do a=!1,n=n.replace(t,(c,l,i)=>{a=!0;const u=M.get(l);if(!u)return c;const h=k(i,u.params);return E(u.body,h,r)});while(a)}}return n=L(n,r),n}function ne(o){return o.replace(/-([a-z])/g,function(e,r){return r.toUpperCase()})}function I(){if(v!==null)return v;if(typeof window>"u"||!window.CSS)return v=!1,!1;try{v=CSS.supports("color","color(display-p3 1 0 0)")}catch(o){console.warn("P3\u652F\u6301\u68C0\u6D4B\u5931\u8D25:",o),v=!1}return v}function H(o,e,r){let n=o.trim();if(n.endsWith(";")&&(n=n.slice(0,-1)),!n)return[];const s=[];let t="",a=0,c=!1,l="";for(let u=0;u<n.length;u++){const h=n[u];(h==='"'||h==="'")&&!c?(c=!0,l=h):h===l&&c&&(c=!1,l=""),c||(h==="("?a++:h===")"&&a--),h===";"&&!c&&a===0?t.trim()&&(s.push(t.trim()),t=""):t+=h}t.trim()&&s.push(t.trim());const i=[];for(let u of s){if(u=u.replace(/\/\*[\s\S]*?\*\//g,""),!u.trim())continue;const h=re(u);if(h===-1){console.warn(`\u65E0\u6548\u7684CSS\u58F0\u660E: "${u}"`);continue}let f=u.substring(0,h).trim(),p=u.substring(h+1).trim();if(p.endsWith(";")&&(p=p.slice(0,-1).trim()),e.get(f)&&(f=e.get(f)),f.startsWith("@")&&r.get(f.slice(1))){const d=r.get(f.slice(1)),b=k(p.split(" ").join(","),d.params);f=E(d.body,b,D),p=""}i.push({[f]:p})}return i}function re(o){let e=!1,r="";for(let n=0;n<o.length;n++){const s=o[n];if((s==='"'||s==="'")&&!e?(e=!0,r=s):s===r&&e&&(e=!1,r=""),s===":"&&!e)return n}return-1}function N(o,e){if(!e.enableMath)return`math(${o})`;try{let r=o.replace(/\s+/g,"");return se(r,e.enableMath)}catch(r){return console.warn("math()\u8868\u8FBE\u5F0F\u89E3\u6790\u5931\u8D25:",o,r),`calc(${o})`}}function se(o,e){return`calc(${o.replace(/([\da-z])([+-])(-?[\da-z])/g,"$1 $2 $3").replace(/([\da-z])([+-])(-?[\da-z])/g,"$1 $2 $3")})`}function oe(o,e){if(!e.enableMath)return o;let r=o;const n=/math\(([^)]+)\)/gi,s=a=>a.replace(n,(c,l)=>N(l,e));let t;do t=r,r=s(r);while(r!==t&&r.includes("math("));return r}function ae(o,e){if(!e.convertLabToRGB&&!e.convertLchToRGB)return o;let r=o;r=ce(r,e);const n=/(lab|lch)\([^)]+\)/gi,s=new Map,t=c=>c.replace(n,l=>{if(s.has(l))return s.get(l);let i=l;return l.toLowerCase().startsWith("lab(")?e.convertLabToRGB&&(i=le(l,e)):l.toLowerCase().startsWith("lch(")&&e.convertLchToRGB&&(i=ie(l,e)),s.set(l,i),i});let a;do a=r,r=t(r);while(r!==a);return r}function ce(o,e){let r=o;const n=/lab#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})/gi,s=/lch#([0-9a-f]{2})([0-9a-f]{2})(\d{1,3})/gi,t=new Map;return r=r.replace(n,(a,c,l,i)=>{if(t.has(a))return t.get(a);try{const u=parseInt(c,16)/255*100,h=(parseInt(l,16)-128)*1.5,f=(parseInt(i,16)-128)*1.5,p=x(u,h,f,e);return t.set(a,p),p}catch(u){return console.warn(`\u65E0\u6CD5\u89E3\u6790lab#\u5341\u516D\u8FDB\u5236\u989C\u8272: ${a}`,u),a}}),r=r.replace(s,(a,c,l,i)=>{if(t.has(a))return t.get(a);try{const u=parseInt(c,16)/255*100,h=parseInt(l,16)/255*150,f=parseInt(i)/100*360,p=S(u,h,f),d=x(p.L,p.a,p.b,e);return t.set(a,d),d}catch(u){return console.warn(`\u65E0\u6CD5\u89E3\u6790lch#\u5341\u516D\u8FDB\u5236\u989C\u8272: ${a}`,u),a}}),r}function le(o,e){const r=/lab\(\s*([\d.]+)(%?)\s+([\d.-]+)\s+([\d.-]+)(?:\s*\/\s*([\d.%]+))?\s*\)/i,n=o.match(r);if(!n)return o;try{let s=parseFloat(n[1]);n[2]==="%"?s=s:(s<0&&(s=0),s>100&&(s=100));const t=parseFloat(n[3]),a=parseFloat(n[4]),c=n[5]!==void 0?n[5].includes("%")?parseFloat(n[5])/100:parseFloat(n[5]):null;return x(s,t,a,e,c)}catch(s){return console.warn(`\u65E0\u6CD5\u8F6C\u6362LAB\u989C\u8272: ${o}`,s),o}}function ie(o,e){const r=/lch\(\s*([\d.]+)(%?)\s+([\d.]+)\s+([\d.]+)(deg)?(?:\s*\/\s*([\d.%]+))?\s*\)/i,n=o.match(r);if(!n)return o;try{let s=parseFloat(n[1]);n[2]==="%"?s=s:(s<0&&(s=0),s>100&&(s=100));const t=parseFloat(n[3]);let a=parseFloat(n[4]);t<0&&console.warn(`LCH\u4E2D\u7684C\u503C\u4E0D\u80FD\u4E3A\u8D1F: ${t}`),a=(a%360+360)%360;const c=S(s,t,a),l=n[6]!==void 0?n[6].includes("%")?parseFloat(n[6])/100:parseFloat(n[6]):null;return x(c.L,c.a,c.b,e,l)}catch(s){return console.warn(`\u65E0\u6CD5\u8F6C\u6362LCH\u989C\u8272: ${o}`,s),o}}function S(o,e,r){const n=r*Math.PI/180,s=e*Math.cos(n),t=e*Math.sin(n);return{L:o,a:s,b:t}}function C(o,e,r){const n=(m,y,w)=>{const Q=(m+16)/116,O=y/500+Q,z=Q-w/200,ye=O**3>.008856?O**3:(116*O-16)/903.3,we=m>903.3*.008856?((m+16)/116)**3:m/903.3,$e=z**3>.008856?z**3:(116*z-16)/903.3;return[ye*.95047,we*1,$e*1.08883]},s=(m,y,w)=>{const $=[[3.2404542,-1.5371385,-.4985314],[-.969266,1.8760108,.041556],[.0556434,-.2040259,1.0572252]],R=$[0][0]*m+$[0][1]*y+$[0][2]*w,Y=$[1][0]*m+$[1][1]*y+$[1][2]*w,Z=$[2][0]*m+$[2][1]*y+$[2][2]*w;return[R,Y,Z]},t=m=>{const y=m<0?-1:1,w=Math.abs(m);return w<=.0031308?y*12.92*w:y*(1.055*Math.pow(w,.4166666666666667)-.055)},a=m=>Math.max(0,Math.min(255,Math.round(m*255))),[c,l,i]=n(o,e,r),[u,h,f]=s(c,l,i),p=t(u),d=t(h),b=t(f);return{r:a(p),g:a(d),b:a(b)}}function A(o,e,r){const n=(c,l,i)=>{const b=(c+16)/116,m=l/500+b,y=b-i/200,w=m**3>.008856?m**3:(116*m-16)/903.3,$=c>903.3*.008856?((c+16)/116)**3:c/903.3,R=y**3>.008856?y**3:(116*y-16)/903.3;return[w*.95047,$*1,R*1.08883]},s=(c,l,i)=>{const u=[[2.493496911941425,-.9313836179191239,-.40271078445071684],[-.8294889695615747,1.7626640603183463,.023624685841943577],[.03584583024378447,-.07617238926804182,.9568845240076872]],h=u[0][0]*c+u[0][1]*l+u[0][2]*i,f=u[1][0]*c+u[1][1]*l+u[1][2]*i,p=u[2][0]*c+u[2][1]*l+u[2][2]*i;return[h,f,p]},t=c=>{const l=c<0?-1:1,i=Math.abs(c);return i<=.0031308?l*12.92*i:l*(1.055*Math.pow(i,.4166666666666667)-.055)},a=c=>Math.max(0,Math.min(255,Math.round(c*255)));try{const[c,l,i]=n(o,e,r),[u,h,f]=s(c,l,i),p=t(u),d=t(h),b=t(f);return{r:Math.max(0,Math.min(1,p)),g:Math.max(0,Math.min(1,d)),b:Math.max(0,Math.min(1,b))}}catch(c){console.warn("P3\u8F6C\u6362\u5931\u8D25:",c);const l=C(o,e,r);return{r:l.r/255,g:l.g/255,b:l.b/255}}}function x(o,e,r,n,s=null){if(!n.enableP3||!I()){const t=C(o,e,r);return s!==null?`rgba(${t.r}, ${t.g}, ${t.b}, ${s})`:`rgb(${t.r}, ${t.g}, ${t.b})`}else{const t=A(o,e,r);return s!==null?`color(display-p3 ${t.r.toFixed(4)} ${t.g.toFixed(4)} ${t.b.toFixed(4)} / ${s})`:`color(display-p3 ${t.r.toFixed(4)} ${t.g.toFixed(4)} ${t.b.toFixed(4)})`}}function L(o,e){let r=o;return e.enableMath&&(r=oe(r,e)),(e.convertLabToRGB||e.convertLchToRGB)&&(r=ae(r,e)),r}function ue(o,e){const r=o.split(`
12
+ `),n={},s=new Map;let t="",a=null,c=!1,l=0;for(let i of r){const u=i.trim(),h=u.match(/^\$([\w]+)\s*:\s*(.+?);?$/);if(h){const[,f,p]=h,d=L(U(p.trim(),{...n,...a?s.get(a)||{}:{}}),e);a?(s.has(a)||s.set(a,{}),s.get(a)[f]=d):n[f]=d;continue}if(u.endsWith("{")){a=u.slice(0,-1).trim(),c=!0,t+=i+`
13
+ `;continue}if(u==="}"){if(c&&a&&s.has(a)){const f=s.get(a),p=" ".repeat(l);for(const[d,b]of Object.entries(f))t+=`${p} --${d}: ${b};
14
+ `}c=!1,a=null}t+=i+`
15
+ `,i.includes("{")&&(l+=e.indentSize),i.includes("}")&&(l=Math.max(0,l-e.indentSize))}return{globalVariables:n,selectorVariables:s,cssWithoutVars:t.trim()}}function fe(o,e,r,n){const s=o.split(`
16
+ `),t=[],a=[];let c=0;for(let l=0;l<s.length;l++){const i=s[l],u=i.trim();if(!u)continue;const h=i.match(/^(\s*)/)[0].length;if(u==="}"){if(t.length>0){const f=t.pop();if(t.length>0){const p=t[t.length-1];p.children||(p.children=[]),p.children.push(f)}else a.push(f)}continue}if(u.endsWith("{")){const p={selector:u.slice(0,-1).trim(),properties:[],children:[]};t.push(p);continue}if(!u.includes("{")&&!u.includes("}")&&u.includes(":")){if(t.length>0){const f=t[t.length-1];H(u,r,n).forEach(d=>{const b=Object.keys(d)[0],m=L(d[b],e);f.properties.push(m===""?b:`${b}: ${m}`)})}continue}}for(;t.length>0;){const l=t.pop();if(t.length===0)a.push(l);else{const i=t[t.length-1];i.children||(i.children=[]),i.children.push(l)}}return G(a,e,"",r,n)}function G(o,e,r="",n,s){let t="";const a=r.startsWith("@");for(const c of o){const l=c.selector.startsWith("@");let i=(a?" ".repeat(e.indentSize):"")+c.selector;if(l&&(i=c.selector+` {
17
+ `),r&&(i.includes("&")?i=i.replace(/&/g,r):i.trim().startsWith(":")?i=r+i:i=r+(a?"":" ")+i),c.properties.length>0){t+=(l?"":i)+` {
18
+ `;for(const u of c.properties)H(u,n,s).forEach(f=>{const p=Object.keys(f)[0],d=L(f[p],e);t+=(a?" ".repeat(e.indentSize):"")+" ".repeat(e.indentSize)+(d===""?p:`${p}: ${d};
19
+ `)});t+=a?" ".repeat(e.indentSize)+`}
20
20
  `:`}
21
21
 
22
- `}c.children&&c.children.length>0&&(s+=U(c.children,e,i,n,o)),a&&(s+=`}
22
+ `}c.children&&c.children.length>0&&(t+=G(c.children,e,i,n,s)),a&&(t+=`}
23
23
 
24
- `)}return s.trim()+`
24
+ `)}return t.trim()+`
25
25
 
26
- `}function Z(t,e){return t.replace(/\$([a-zA-Z0-9_-]+)/g,(r,n)=>e[n]?`var(--${n})`:r)}function de(t,e,r,n){let o=t;return o=o.replace(/(?:\$\$|\$)([a-zA-Z0-9_-]+)/g,(s,a)=>s.startsWith("$$")?`attr(${a})`:`var(--${a})`),o=x(o,n),o}function me(t,e){if(Object.keys(t).length===0)return"";const r=Object.entries(t).map(([n,o])=>{const s=x(Z(o,t),e);return" ".repeat(e.indentSize)+`--${n}: ${s};`}).join(`
26
+ `}function U(o,e){return o.replace(/\$([\w]+)(\W?)/g,(r,n,s)=>e[n]?`var(--${n})${s}`:r)}function pe(o,e,r,n){let s=o;return s=s.replace(/(?:\$\$|\$)([\w]+)(\W?)/g,(t,a,c)=>t.startsWith("$$")?`attr(${a})${c}`:`var(--${a})${c}`),s=L(s,n),s}function he(o,e){if(Object.keys(o).length===0)return"";const r=Object.entries(o).map(([n,s])=>{const t=L(U(s,o),e);return" ".repeat(e.indentSize)+`--${n}: ${t};`}).join(`
27
27
  `);return`${e.rootSelector} {
28
28
  ${r}
29
29
  }
30
30
 
31
- `}function ge(t,e,r){let n="";const o=t.split(`
32
- `);let s=null;for(let a of o){const c=a.trim();c.endsWith("{")&&(s=c.slice(0,-1).trim()),c==="}"&&s&&(s=null),n+=x(a,r)+`
33
- `}return n.trim()}async function X(t,e){const r=/@import\s+([^;]+?)\s*;/g;return(async o=>{const s=[],a=o.replace(r,(c,l)=>{const i=be(l,e).then(u=>X(u,e)).catch(u=>(console.warn(`\u65E0\u6CD5\u5BFC\u5165CSS\u6587\u4EF6: ${l}`,u),""));return s.push(i),`__IMPORT_PLACEHOLDER_${s.length-1}__`});if(s.length>0){const c=await Promise.all(s);let l=a;for(let i=0;i<c.length;i++)l=l.replace(`__IMPORT_PLACEHOLDER_${i}__`,c[i]);return l}return a})(t)}async function be(t,e){if(e.importCache&&V.has(t))return V.get(t);const r=e.importBaseUrl?new URL(t,e.importBaseUrl).href:t;let n;if(typeof process<"u"&&process.versions&&process.versions.node&&typeof require<"u")try{const s=require("fs"),a=require("path");let c=r;r.startsWith(".")&&(c=a.join(process.cwd(),r)),n=s.readFileSync(c,"utf-8")}catch(s){throw new Error(`Node.js\u6587\u4EF6\u8BFB\u53D6\u5931\u8D25: ${r} - ${s.message}`)}else try{const s=new AbortController,a=setTimeout(()=>s.abort(),e.importTimeout),c=await fetch(r,{signal:s.signal,headers:{Accept:"text/css"}});if(clearTimeout(a),!c.ok)throw new Error(`HTTP\u9519\u8BEF: ${c.status} ${c.statusText}`);n=await c.text()}catch(s){throw s.name==="AbortError"?new Error(`\u5BFC\u5165\u8D85\u65F6: ${r}`):new Error(`\u65E0\u6CD5\u83B7\u53D6CSS: ${r} - ${s.message}`)}return e.importCache&&V.set(t,n),n}async function P(t,e={}){let{config:r,css:n}=J(t);const o={...g,...e,...r};n=await X(n,o);let s=n,a=new Map;if(o.enableAlias){const{aliases:y,css:$}=ee(s);a=y,s=$}let c=s,l=new Map;if(o.enableMacros){const{macros:y,css:$}=N(c,o);l=y,c=$;for(const[w,A]of l)M.set(w,A)}let i=c;o.enableMacros&&l.size>0&&(i=te(i,l,o));const{globalVariables:u,selectorVariables:h,cssWithoutVars:f}=pe(i,o);let p=f.trim();if(o.enableNesting&&f.includes("{"))try{p=he(f,o,a,l)}catch(y){console.warn("\u5D4C\u5957\u89E3\u6790\u5931\u8D25\uFF0C\u4F7F\u7528\u539F\u59CBCSS:",y)}const d=me(u,o);let b=p;h.size>0&&(b=ge(p,h,o)),b=de(b,u,h,o);let m=d+b;for(const[y,$]of B)try{m=$.convert(m,o)}catch(w){console.error("\u63D2\u4EF6\u5904\u7406\u5931\u8D25:",w)}return m}function q(t={}){const e={...g,...t},r=document.querySelectorAll(`style[${e.styleTagAttribute||"e"}]`);return r.forEach(n=>{let o=n.textContent;(async()=>{try{n.getAttribute("src")&&(o="@import "+n.getAttribute("src")+";");const a=await P(o,e),c=document.createElement("style");c.textContent=a,n.parentNode.insertBefore(c,n.nextSibling),e.preserveOriginal?n.style.display="none":n.remove()}catch(a){console.error("\u5904\u7406style\u6807\u7B7E\u5931\u8D25:",a)}})()}),r.length}function D(t={}){g={...g,...t}}function I(t,e={}){const r={...g,...e};if(t)return(async()=>{try{const n=await P(t,r),o=document.createElement("style");return o.textContent=n,document.head.appendChild(o),o}catch(n){return console.error("\u5E94\u7528CSS\u5931\u8D25:",n),null}})();document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>{q(r)}):q(r)}const ye={convert:P,apply:I,config:D,supportsP3:_(),detectP3Support:_,imports:{clearCache:function(){V.clear()},setBaseUrl:function(t){g.importBaseUrl=t},setCacheEnabled:function(t){g.importCache=t},setTimeout:function(t){g.importTimeout=t}},plugins:{use(t){return(t.created??(()=>{}))(),B.set(t.name,t),!0},remove(t){return(B.get(t).deleted??(()=>{}))(),B.delete(t),!0}},aliases:{add:function(t,e){E.set(t,e)},remove:function(t){E.delete(t)},getAll:function(){return Array.from(E.entries())},clear:function(){E.clear()}},macros:{define:function(t,e,r=[]){if(typeof e=="function"){const o=e.toString().match(/{([\s\S]*)}/);o&&M.set(t,{params:r.map(s=>typeof s=="string"?{name:s}:s),body:o[1].trim()})}else M.set(t,{params:r.map(n=>typeof n=="string"?{name:n}:n),body:e})},call:function(t,...e){const r=M.get(t);if(!r)throw new Error(`\u672A\u5B9A\u4E49\u7684\u5B8F: ${t}`);const n=new Map;for(let o=0;o<r.params.length;o++){const s=r.params[o],a=o<e.length?e[o]:s.defaultValue;if(a===void 0&&s.defaultValue===null)throw new Error(`\u7F3A\u5C11\u5FC5\u9700\u53C2\u6570: ${s.name}`);n.set(s.name,a!==void 0?a:"")}return W(r.body,n,g)},getAll:function(){return Array.from(M.entries())},remove:function(t){M.delete(t)},clear:function(){M.clear()},parse:function(t){const{macros:e}=N(t,g);for(const[r,n]of e)M.set(r,n)}},math:{evaluate:function(t){return k(t,g)},parseUnit:G,round:ae,test:function(t,e={}){const r={...g,...e};try{const n=k(t,r);return{success:!0,expression:t,result:n,parsed:G(n.replace(/^calc\(|\)$/g,""))}}catch(n){return{success:!1,expression:t,error:n.message}}}},colorUtils:{labToRGB:v,lchToLab:C,lchToRGB:function(t,e,r){const n=C(t,e,r);return v(n.L,n.a,n.b)},labToP3:R,lchToP3:function(t,e,r){const n=C(t,e,r);return R(n.L,n.a,n.b)},parseHexLab:function(t){const e=t.match(/lab#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})/i);if(!e)return null;const r=e[1],n=e[2],o=e[3],s=parseInt(r,16)/255*100,a=(parseInt(n,16)-128)*1.5,c=(parseInt(o,16)-128)*1.5;return v(s,a,c)},parseHexLch:function(t){const e=t.match(/lch#([0-9a-f]{2})([0-9a-f]{2})(\d{1,3})/i);if(!e)return null;const r=e[1],n=e[2],o=e[3],s=parseInt(r,16)/255*100,a=parseInt(n,16)/255*150,c=parseInt(o)/100*360,l=C(s,a,c);return v(l.L,l.a,l.b)},generateColor:function(t,e,r,n=null,o=!0){return S(t,e,r,{enableP3:o},n)},parseColor:function(t){try{const e=t.match(/lab\(\s*([\d.]+)(%?)\s+([\d.-]+)\s+([\d.-]+)(?:\s*\/\s*([\d.%]+))?\s*\)/i);if(e){let n=parseFloat(e[1]);const o=parseFloat(e[3]),s=parseFloat(e[4]),a=e[5]?e[5].includes("%")?parseFloat(e[5])/100:parseFloat(e[5]):null,c=S(n,o,s,g,a);return{L:n,A:o,B:s,alpha:a,rgb:v(n,o,s),p3:R(n,o,s),colorString:c}}const r=t.match(/lch\(\s*([\d.]+)(%?)\s+([\d.]+)\s+([\d.]+)(deg)?(?:\s*\/\s*([\d.%]+))?\s*\)/i);if(r){let n=parseFloat(r[1]);const o=parseFloat(r[3]);let s=parseFloat(r[4]);const a=r[6]?r[6].includes("%")?parseFloat(r[6])/100:parseFloat(r[6]):null,c=C(n,o,s),l=S(c.L,c.a,c.b,g,a);return{L:n,C:o,H:s,alpha:a,lab:c,rgb:v(c.L,c.a,c.b),p3:R(c.L,c.a,c.b),colorString:l}}return null}catch(e){return console.warn("\u65E0\u6CD5\u89E3\u6790\u989C\u8272:",t,e),null}}}},F=async function(...t){if(t.length>1||t[0]&&t[0].raw)return await $e(...t);const e=t[0];if(typeof e=="string"){const r=await P(e,{...g,...t[1]});return r&&typeof r.then=="function",r}return typeof e=="object"&&e!==null?(g={...g,...e},F):t.length===0?I():F};async function $e(t,...e){let r=t[0];for(let o=0;o<e.length;o++){const s=e[o];let a="";typeof s=="function"?a=s():Array.isArray(s)?a=s.join(" "):a=String(s??""),r+=a+t[o+1]}const n=await P(r,g);return n&&typeof n.then=="function",n}return Object.assign(F,ye),Object.setPrototypeOf(F,Function.prototype),typeof window<"u"&&(I(),Object.defineProperty(window.HTMLElement.prototype,"cssVar",{get(){const t=this;return new Proxy(()=>{},{get(e,r){const n=r.startsWith("--")?r:`--${r}`;return t.style.getPropertyValue(n)},set(e,r,n){const o=r.startsWith("--")?r:`--${r}`;return t.style.setProperty(o,n),!0},apply(e,r,n){const o=n[0],s=n[1],a=o.startsWith("--")?o:`--${o}`;if(s===void 0)return t.style.getPropertyValue(a);t.style.setProperty(a,s)}})}})),F})();if(typeof define=="function"&&define.amd)define([],g=>T);else if(typeof module=="object"&&module.exports)module.exports=T;else{const g=globalThis??(typeof self<"u"&&self)??(typeof window<"u"&&window)??global??{};g.styimat=T}export default T;export const{convert,apply,config,supportsP3,detectP3Support,imports,plugins,aliases,macros,math,colorUtils}=T;
31
+ `}function de(o,e,r){let n="";const s=o.split(`
32
+ `);let t=null;for(let a of s){const c=a.trim();c.endsWith("{")&&(t=c.slice(0,-1).trim()),c==="}"&&t&&(t=null),n+=L(a,r)+`
33
+ `}return n.trim()}async function X(o,e){const r=/@import\s+([^;]+?)\s*;/g;return(async s=>{const t=[],a=s.replace(r,(c,l)=>{const i=me(l,e).then(u=>X(u,e)).catch(u=>(console.warn(`\u65E0\u6CD5\u5BFC\u5165CSS\u6587\u4EF6: ${l}`,u),""));return t.push(i),`__IMPORT_PLACEHOLDER_${t.length-1}__`});if(t.length>0){const c=await Promise.all(t);let l=a;for(let i=0;i<c.length;i++)l=l.replace(`__IMPORT_PLACEHOLDER_${i}__`,c[i]);return l}return a})(o)}async function me(o,e){if(e.importCache&&V.has(o))return V.get(o);const r=e.importBaseUrl?new URL(o,e.importBaseUrl).href:o;let n;if(typeof process<"u"&&process.versions&&process.versions.node&&typeof require<"u")try{const t=require("fs"),a=require("path");let c=r;r.startsWith(".")&&(c=a.join(process.cwd(),r)),n=t.readFileSync(c,"utf-8")}catch(t){throw new Error(`Node.js\u6587\u4EF6\u8BFB\u53D6\u5931\u8D25: ${r} - ${t.message}`)}else try{const t=new AbortController,a=setTimeout(()=>t.abort(),e.importTimeout),c=await fetch(r,{signal:t.signal,headers:{Accept:"text/css"}});if(clearTimeout(a),!c.ok)throw new Error(`HTTP\u9519\u8BEF: ${c.status} ${c.statusText}`);n=await c.text()}catch(t){throw t.name==="AbortError"?new Error(`\u5BFC\u5165\u8D85\u65F6: ${r}`):new Error(`\u65E0\u6CD5\u83B7\u53D6CSS: ${r} - ${t.message}`)}return e.importCache&&V.set(o,n),n}async function P(o,e={}){let{config:r,css:n}=K(o);const s={...g,...e,...r};n=await X(n,s);let t=n,a=new Map;if(s.enableAlias){const{aliases:y,css:w}=J(t);a=y,t=w}let c=t,l=new Map;if(s.enableMacros){const{macros:y,css:w}=_(c,s);l=y,c=w;for(const[$,R]of l)M.set($,R)}let i=c;s.enableMacros&&l.size>0&&(i=ee(i,l,s));const{globalVariables:u,selectorVariables:h,cssWithoutVars:f}=ue(i,s);let p=f.trim();if(s.enableNesting&&f.includes("{"))try{p=fe(f,s,a,l)}catch(y){console.warn("\u5D4C\u5957\u89E3\u6790\u5931\u8D25\uFF0C\u4F7F\u7528\u539F\u59CBCSS:",y)}const d=he(u,s);let b=p;h.size>0&&(b=de(p,h,s)),b=pe(b,u,h,s);let m=d+b;for(const[y,w]of B)try{m=w.convert(m,s)}catch($){console.error("\u63D2\u4EF6\u5904\u7406\u5931\u8D25:",$)}return m}function q(o={}){const e={...g,...o},r=document.querySelectorAll(`style[${e.styleTagAttribute||"e"}]`);return r.forEach(n=>{let s=n.textContent;(async()=>{try{n.getAttribute("src")&&(s="@import "+n.getAttribute("src")+";");const a=await P(s,e),c=document.createElement("style");c.textContent=a,n.parentNode.insertBefore(c,n.nextSibling),e.preserveOriginal?n.style.display="none":n.remove()}catch(a){console.error("\u5904\u7406style\u6807\u7B7E\u5931\u8D25:",a)}})()}),r.length}function D(o={}){g={...g,...o}}function j(o,e={}){const r={...g,...e};if(o)return(async()=>{try{const n=await P(o,r),s=document.createElement("style");return s.textContent=n,document.head.appendChild(s),s}catch(n){return console.error("\u5E94\u7528CSS\u5931\u8D25:",n),null}})();document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>{q(r)}):q(r)}const ge={convert:P,apply:j,config:D,supportsP3:I(),detectP3Support:I,imports:{clearCache:function(){V.clear()},setBaseUrl:function(o){g.importBaseUrl=o},setCacheEnabled:function(o){g.importCache=o},setTimeout:function(o){g.importTimeout=o}},plugins:{use(o){return(o.created??(()=>{}))(),B.set(o.name,o),!0},remove(o){return(B.get(o).deleted??(()=>{}))(),B.delete(o),!0}},aliases:{add:function(o,e){W.set(o,e)},remove:function(o){W.delete(o)},getAll:function(){return Array.from(W.entries())},clear:function(){W.clear()}},macros:{define:function(o,e,r=[]){if(typeof e=="function"){const s=e.toString().match(/{([\s\S]*)}/);s&&M.set(o,{params:r.map(t=>typeof t=="string"?{name:t}:t),body:s[1].trim()})}else M.set(o,{params:r.map(n=>typeof n=="string"?{name:n}:n),body:e})},call:function(o,...e){const r=M.get(o);if(!r)throw new Error(`\u672A\u5B9A\u4E49\u7684\u5B8F: ${o}`);const n=new Map;for(let s=0;s<r.params.length;s++){const t=r.params[s],a=s<e.length?e[s]:t.defaultValue;if(a===void 0&&t.defaultValue===null)throw new Error(`\u7F3A\u5C11\u5FC5\u9700\u53C2\u6570: ${t.name}`);n.set(t.name,a!==void 0?a:"")}return E(r.body,n,g)},getAll:function(){return Array.from(M.entries())},remove:function(o){M.delete(o)},clear:function(){M.clear()},parse:function(o){const{macros:e}=_(o,g);for(const[r,n]of e)M.set(r,n)}},math:{evaluate:function(o){return N(o,g)}},colorUtils:{labToRGB:C,lchToLab:S,lchToRGB:function(o,e,r){const n=S(o,e,r);return C(n.L,n.a,n.b)},labToP3:A,lchToP3:function(o,e,r){const n=S(o,e,r);return A(n.L,n.a,n.b)},parseHexLab:function(o){const e=o.match(/lab#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})/i);if(!e)return null;const r=e[1],n=e[2],s=e[3],t=parseInt(r,16)/255*100,a=(parseInt(n,16)-128)*1.5,c=(parseInt(s,16)-128)*1.5;return C(t,a,c)},parseHexLch:function(o){const e=o.match(/lch#([0-9a-f]{2})([0-9a-f]{2})(\d{1,3})/i);if(!e)return null;const r=e[1],n=e[2],s=e[3],t=parseInt(r,16)/255*100,a=parseInt(n,16)/255*150,c=parseInt(s)/100*360,l=S(t,a,c);return C(l.L,l.a,l.b)},generateColor:function(o,e,r,n=null,s=!0){return x(o,e,r,{enableP3:s},n)},parseColor:function(o){try{const e=o.match(/lab\(\s*([\d.]+)(%?)\s+([\d.-]+)\s+([\d.-]+)(?:\s*\/\s*([\d.%]+))?\s*\)/i);if(e){let n=parseFloat(e[1]);const s=parseFloat(e[3]),t=parseFloat(e[4]),a=e[5]?e[5].includes("%")?parseFloat(e[5])/100:parseFloat(e[5]):null,c=x(n,s,t,g,a);return{L:n,A:s,B:t,alpha:a,rgb:C(n,s,t),p3:A(n,s,t),colorString:c}}const r=o.match(/lch\(\s*([\d.]+)(%?)\s+([\d.]+)\s+([\d.]+)(deg)?(?:\s*\/\s*([\d.%]+))?\s*\)/i);if(r){let n=parseFloat(r[1]);const s=parseFloat(r[3]);let t=parseFloat(r[4]);const a=r[6]?r[6].includes("%")?parseFloat(r[6])/100:parseFloat(r[6]):null,c=S(n,s,t),l=x(c.L,c.a,c.b,g,a);return{L:n,C:s,H:t,alpha:a,lab:c,rgb:C(c.L,c.a,c.b),p3:A(c.L,c.a,c.b),colorString:l}}return null}catch(e){return console.warn("\u65E0\u6CD5\u89E3\u6790\u989C\u8272:",o,e),null}}}},T=async function(...o){if(o.length>1||o[0]&&o[0].raw)return await be(...o);const e=o[0];if(typeof e=="string"){const r=await P(e,{...g,...o[1]});return r&&typeof r.then=="function",r}return typeof e=="object"&&e!==null?(g={...g,...e},T):o.length===0?j():T};async function be(o,...e){let r=o[0];for(let s=0;s<e.length;s++){const t=e[s];let a="";typeof t=="function"?a=t():Array.isArray(t)?a=t.join(" "):a=String(t??""),r+=a+o[s+1]}const n=await P(r,g);return n&&typeof n.then=="function",n}return Object.assign(T,ge),Object.setPrototypeOf(T,Function.prototype),typeof window<"u"&&(j(),Object.defineProperty(window.HTMLElement.prototype,"cssVar",{get(){const o=this;return new Proxy(()=>{},{get(e,r){const n=r.startsWith("--")?r:`--${r}`;return o.style.getPropertyValue(n)},set(e,r,n){const s=r.startsWith("--")?r:`--${r}`;return o.style.setProperty(s,n),!0},apply(e,r,n){const s=n[0],t=n[1],a=s.startsWith("--")?s:`--${s}`;if(t===void 0)return o.style.getPropertyValue(a);o.style.setProperty(a,t)}})}})),T})();if(typeof define=="function"&&define.amd)define([],g=>F);else if(typeof module=="object"&&module.exports)module.exports=F;else{const g=globalThis??(typeof self<"u"&&self)??(typeof window<"u"&&window)??global??{};g.styimat=F}export default F;export const{convert,apply,config,supportsP3,detectP3Support,imports,plugins,aliases,macros,math,colorUtils}=F;
package/dist/styimat.mjs CHANGED
@@ -105,7 +105,7 @@ const styimat = (function() {
105
105
  const trimmed = line.trim();
106
106
 
107
107
  if (trimmed.startsWith('@alias')) {
108
- const aliasMatch = trimmed.match(/^@alias\s+([a-zA-Z0-9_-]+)\s+(.+?)\s*;$/);
108
+ const aliasMatch = trimmed.match(/^@alias\s+([\w]+)\s+(.+?)\s*;$/);
109
109
  if (aliasMatch) {
110
110
  const aliasName = aliasMatch[1];
111
111
  const originalProperty = aliasMatch[2];
@@ -145,7 +145,7 @@ const styimat = (function() {
145
145
  const trimmed = line.trim();
146
146
 
147
147
  if (!inMacroDefinition && trimmed.startsWith('@macro')) {
148
- const macroMatch = trimmed.match(/^@macro\s+([a-zA-Z0-9_-]+)\s*\(([^)]*)\)\s*\{$/);
148
+ const macroMatch = trimmed.match(/^@macro\s+([\w]+)\s*\(([^)]*)\)\s*\{$/);
149
149
  if (macroMatch) {
150
150
  inMacroDefinition = true;
151
151
  currentMacroName = macroMatch[1];
@@ -436,7 +436,8 @@ const styimat = (function() {
436
436
 
437
437
  const result = [];
438
438
 
439
- for (const declaration of declarations) {
439
+ for (let declaration of declarations) {
440
+ declaration = declaration.replace(/\/\*[\s\S]*?\*\//g, '');
440
441
  if (!declaration.trim()) continue;
441
442
 
442
443
  const colonIndex = findFirstColonOutsideQuotes(declaration);
@@ -522,76 +523,6 @@ const styimat = (function() {
522
523
  .replace(/([\da-z])([+-])(-?[\da-z])/g, '$1 $2 $3')
523
524
  .replace(/([\da-z])([+-])(-?[\da-z])/g, '$1 $2 $3')})`;
524
525
  }
525
-
526
-
527
- /**
528
- * 解析带单位的数值
529
- */
530
- function parseValueWithUnit(str) {
531
- const match = str.match(/^([\d.]+)([a-zA-Z%]*)$/);
532
-
533
- if (!match) {
534
- throw new Error(`无法解析值: ${str}`);
535
- }
536
-
537
- const value = parseFloat(match[1]);
538
- const unit = match[2] || '';
539
-
540
- return { value, unit };
541
- }
542
-
543
- // 数学运算函数
544
- function multiply(a, b) {
545
- if (a.unit === b.unit || (!a.unit && !b.unit)) {
546
- return { value: a.value * b.value, unit: a.unit || b.unit };
547
- }
548
-
549
- return { value: `${a.value}${a.unit}*${b.value}${b.unit}`, unit: '' };
550
- }
551
-
552
- function divide(a, b) {
553
- if (b.value === 0) {
554
- throw new Error('除以零');
555
- }
556
-
557
- if (a.unit && !b.unit) {
558
- return { value: a.value / b.value, unit: a.unit };
559
- } else if (a.unit === b.unit) {
560
- return { value: a.value / b.value, unit: '' };
561
- }
562
-
563
- return { value: `${a.value}${a.unit}/${b.value}${b.unit}`, unit: '' };
564
- }
565
-
566
- function add(a, b) {
567
- if (a.unit === b.unit) {
568
- return { value: a.value + b.value, unit: a.unit };
569
- }
570
-
571
- return { value: `${a.value}${a.unit}+${b.value}${b.unit}`, unit: '' };
572
- }
573
-
574
- function subtract(a, b) {
575
- if (a.unit === b.unit) {
576
- return { value: a.value - b.value, unit: a.unit };
577
- }
578
-
579
- return { value: `${a.value}${a.unit}-${b.value}${b.unit}`, unit: '' };
580
- }
581
-
582
- /**
583
- * 四舍五入到指定精度
584
- */
585
- function roundNumber(num, precision = 6) {
586
- const factor = Math.pow(10, precision);
587
- const rounded = Math.round(num * factor) / factor;
588
-
589
- const str = rounded.toString();
590
- if (str.includes('.')) {
591
- return str.replace(/(\.\d*?)0+$/, '$1').replace(/\.$/, '');
592
- }
593
- return str;
594
- }
595
526
 
596
527
  /**
597
528
  * 处理所有的math()函数
@@ -1013,7 +944,7 @@ const styimat = (function() {
1013
944
  for (let line of lines) {
1014
945
  const trimmed = line.trim();
1015
946
 
1016
- const varMatch = trimmed.match(/^\$([a-zA-Z0-9_-]+)\s*:\s*(.+?);?$/);
947
+ const varMatch = trimmed.match(/^\$([\w]+)\s*:\s*(.+?);?$/);
1017
948
 
1018
949
  if (varMatch) {
1019
950
  const [, varName, varValue] = varMatch;
@@ -1202,9 +1133,9 @@ const styimat = (function() {
1202
1133
  * 替换变量值中的变量引用
1203
1134
  */
1204
1135
  function replaceVariableUsesInValue(value, variables) {
1205
- return value.replace(/\$([a-zA-Z0-9_-]+)/g, (match, varName) => {
1136
+ return value.replace(/\$([\w]+)(\W?)/g, (match, varName, char) => {
1206
1137
  if (variables[varName]) {
1207
- return `var(--${varName})`;
1138
+ return `var(--${varName})${char}`;
1208
1139
  }
1209
1140
  return match;
1210
1141
  });
@@ -1216,8 +1147,8 @@ const styimat = (function() {
1216
1147
  function replaceVariableUses(cssText, globalVariables, selectorVariables, config) {
1217
1148
  let result = cssText;
1218
1149
 
1219
- result = result.replace(/(?:\$\$|\$)([a-zA-Z0-9_-]+)/g, (match, varName) => {
1220
- return match.startsWith('$$') ? `attr(${varName})` : `var(--${varName})`;
1150
+ result = result.replace(/(?:\$\$|\$)([\w]+)(\W?)/g, (match, varName, char) => {
1151
+ return match.startsWith('$$') ? `attr(${varName})${char}` : `var(--${varName})${char}`;
1221
1152
  });
1222
1153
 
1223
1154
  result = processCSSValue(result, config);
@@ -1633,26 +1564,6 @@ const styimat = (function() {
1633
1564
  math: {
1634
1565
  evaluate: function(expression) {
1635
1566
  return evaluateMathExpression(expression, defaultConfig);
1636
- },
1637
- parseUnit: parseValueWithUnit,
1638
- round: roundNumber,
1639
- test: function(expression, testConfig = {}) {
1640
- const config = { ...defaultConfig, ...testConfig };
1641
- try {
1642
- const result = evaluateMathExpression(expression, config);
1643
- return {
1644
- success: true,
1645
- expression,
1646
- result,
1647
- parsed: parseValueWithUnit(result.replace(/^calc\(|\)$/g, ''))
1648
- };
1649
- } catch (error) {
1650
- return {
1651
- success: false,
1652
- expression,
1653
- error: error.message
1654
- };
1655
- }
1656
1567
  }
1657
1568
  },
1658
1569
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "styimat",
3
- "version": "6.0.0",
3
+ "version": "6.0.2",
4
4
  "description": "一个高效的CSS变量预处理库,支持Lab/LCH颜色空间自动转换、嵌套选择器和Display P3广色域,让现代CSS开发更简洁强大。",
5
5
  "keywords": [
6
6
  "css",