styimat 9.1.0 → 10.0.0

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/README.md CHANGED
@@ -249,16 +249,16 @@ $font-family: 'Inter', sans-serif;
249
249
 
250
250
  ### 2. 配置头语法
251
251
 
252
- 变量定义要用`#configname value`的格式,写在css顶部
252
+ 变量定义要用`@config name value`的格式,写在css顶部
253
253
 
254
254
  ```css
255
- #indent-size 4
256
- #auto-process-style-tags true
257
- #preserve-original true
258
- #enable-p3 false
259
- #root-selector :root
260
- #enable-nesting true
261
- #enable-math true
255
+ @config indent-size 4
256
+ @config auto-process-style-tags true
257
+ @config preserve-original true
258
+ @config enable-p3 false
259
+ @config root-selector :root
260
+ @config enable-nesting true
261
+ @config enable-math true
262
262
 
263
263
  /* 然后写您的CSS代码 */
264
264
  $primary-color: lab#32a852;
@@ -479,15 +479,16 @@ styimat.imports.setCacheEnabled(false); // 禁用导入缓存
479
479
  styimat.imports.setTimeout(10000); // 设置导入超时时间
480
480
 
481
481
  // 定义插件
482
- class compressPlugin {
482
+ class compressPlugin extends styimat.Plugin {
483
483
  name = "compress";
484
- constructor() {
485
- // 构造函数
484
+ install() {
485
+ // 下载时调用 (不必须)
486
486
  }
487
487
  destroy() {
488
- // 删除时调用
488
+ // 删除时调用 (不必须)
489
489
  }
490
490
  convert(css, config) {
491
+ // 必须,否则报错
491
492
  return css.replace(/[\n\s]/g, "");
492
493
  }
493
494
  }
@@ -501,10 +502,10 @@ styimat.plugins.remove("compress"); // 删除插件
501
502
  ### 插件的定义标准
502
503
 
503
504
  ```javascript
504
- export defult class {
505
+ export defult class extends styimat.Plugin{
505
506
  name = "compress";
506
- constructor() {
507
- // 构造函数
507
+ install() {
508
+ // 下载时调用
508
509
  // 在这里做初始化工作
509
510
  }
510
511
  destroy() {
@@ -512,7 +513,7 @@ export defult class {
512
513
  // 记得清理
513
514
  }
514
515
  convert(css, config) {
515
- // 转换时调用
516
+ // 转换时调用,必须写
516
517
  return css.replace(/[\n\s]/g, "");
517
518
  }
518
519
  }
@@ -0,0 +1,57 @@
1
+ {
2
+ "generatedAt": "2026-01-06T13:45:19.383Z",
3
+ "files": [
4
+ {
5
+ "name": "dist/styimat.js",
6
+ "size": "54.87 KB"
7
+ },
8
+ {
9
+ "name": "dist/styimat.min.js",
10
+ "size": "17.27 KB"
11
+ },
12
+ {
13
+ "name": "dist/styimat.mjs",
14
+ "size": "55.03 KB"
15
+ },
16
+ {
17
+ "name": "dist/styimat.min.mjs",
18
+ "size": "17.40 KB"
19
+ },
20
+ {
21
+ "name": "dist/styimat.cjs",
22
+ "size": "54.89 KB"
23
+ },
24
+ {
25
+ "name": "dist/styimat.min.cjs",
26
+ "size": "17.29 KB"
27
+ },
28
+ {
29
+ "name": "dist/styimat.umd.js",
30
+ "size": "55.21 KB"
31
+ },
32
+ {
33
+ "name": "dist/styimat.umd.min.js",
34
+ "size": "17.51 KB"
35
+ },
36
+ {
37
+ "name": "dist/styimat.amd.js",
38
+ "size": "54.89 KB"
39
+ },
40
+ {
41
+ "name": "dist/styimat.amd.min.js",
42
+ "size": "17.29 KB"
43
+ },
44
+ {
45
+ "name": "dist/styimat.browser.js",
46
+ "size": "55.03 KB"
47
+ },
48
+ {
49
+ "name": "dist/styimat.browser.min.js",
50
+ "size": "17.38 KB"
51
+ },
52
+ {
53
+ "name": "bin/cli.min.js",
54
+ "size": "4.55 KB"
55
+ }
56
+ ]
57
+ }
@@ -102,8 +102,8 @@ const styimat = (function() {
102
102
  for (let line of lines) {
103
103
  const trimmed = line.trim();
104
104
 
105
- if (trimmed.startsWith('#')) {
106
- const configLine = trimmed.substring(1).trim();
105
+ if (trimmed.startsWith('@config ')) {
106
+ const configLine = trimmed.substring(8).trim();
107
107
  const firstSpace = configLine.indexOf(' ');
108
108
 
109
109
  if (~firstSpace) {
@@ -405,7 +405,7 @@ const styimat = (function() {
405
405
  declarations.push(currentDeclaration.trim());
406
406
  }
407
407
 
408
- const result = [];
408
+ const result = {};
409
409
 
410
410
  for (let declaration of declarations) {
411
411
  declaration = declaration.replace(REGEX.COMMENT, '');
@@ -438,7 +438,7 @@ const styimat = (function() {
438
438
  value = "";
439
439
  }
440
440
 
441
- result.push({ [property]: value });
441
+ result[property] = value;
442
442
  }
443
443
 
444
444
  return result;
@@ -703,12 +703,12 @@ const styimat = (function() {
703
703
  const kappa = 903.3;
704
704
 
705
705
  const fy = (L + 16) / 116;
706
- const fx = a / 500 + fy;
707
- const fz = fy - b / 200;
706
+ const fx = a * 0.002 + fy;
707
+ const fz = fy - b * 0.005;
708
708
 
709
- const xr = fx ** 3 > epsilon ? fx ** 3 : (116 * fx - 16) / kappa;
709
+ const xr = (fx * fx * fx) > epsilon ? (fx * fx * fx) : (116 * fx - 16) / kappa;
710
710
  const yr = L > kappa * epsilon ? ((L + 16) / 116) ** 3 : L / kappa;
711
- const zr = fz ** 3 > epsilon ? fz ** 3 : (116 * fz - 16) / kappa;
711
+ const zr = (fz * fz * fz) > epsilon ? fz * fz * fz : (116 * fz - 16) / kappa;
712
712
 
713
713
  return [
714
714
  xr * refX,
@@ -773,7 +773,7 @@ const styimat = (function() {
773
773
  const kappa = 903.3;
774
774
 
775
775
  const fy = (L + 16) / 116;
776
- const fx = a / 500 + fy;
776
+ const fx = a * 0.002 + fy;
777
777
  const fz = fy - b / 200;
778
778
 
779
779
  const xr = fx ** 3 > epsilon ? fx ** 3 : (116 * fx - 16) / kappa;
@@ -877,7 +877,7 @@ const styimat = (function() {
877
877
  }
878
878
 
879
879
  /**
880
- * 状态机解析嵌套规则(包含变量提取)
880
+ * 解析嵌套规则
881
881
  */
882
882
  function parseNestedRules(cssText, config, aliases, macros) {
883
883
  const rootRules = [];
@@ -912,7 +912,7 @@ function parseNestedRules(cssText, config, aliases, macros) {
912
912
  // 新规则开始
913
913
  currentRule = {
914
914
  selector: currentLine.trim(),
915
- properties: [],
915
+ properties: {},
916
916
  children: []
917
917
  };
918
918
  stack.push(currentRule);
@@ -922,18 +922,17 @@ function parseNestedRules(cssText, config, aliases, macros) {
922
922
  // 嵌套规则开始,需要先处理当前行的属性
923
923
  if (currentLine.trim() && currentLine.includes(':')) {
924
924
  const parsed = parseSingleLineCSS(currentLine.trim(), aliases, macros);
925
- parsed.forEach(obj => {
926
- const key = Object.keys(obj)[0];
927
- const value = processCSSValue(obj[key], config);
925
+ for (let key of Object.keys(parsed)){
926
+ const value = processCSSValue(parsed[key], config);
928
927
  if (currentRule) {
929
- currentRule.properties.push(!value.length ? key : `${key}: ${value}`);
928
+ currentRule.properties[key] = value;
930
929
  }
931
- });
930
+ }
932
931
  }
933
932
  // 开始嵌套规则
934
933
  const nestedRule = {
935
934
  selector: currentLine.trim(),
936
- properties: [],
935
+ properties: {},
937
936
  children: []
938
937
  };
939
938
  stack.push(nestedRule);
@@ -946,13 +945,12 @@ function parseNestedRules(cssText, config, aliases, macros) {
946
945
  // 处理当前行的属性(在}之前的属性)
947
946
  if (currentLine.trim() && currentLine.includes(':')) {
948
947
  const parsed = parseSingleLineCSS(currentLine.trim(), aliases, macros);
949
- parsed.forEach(obj => {
950
- const key = Object.keys(obj)[0];
951
- const value = processCSSValue(obj[key], config);
948
+ for (let key of Object.keys(parsed)){
949
+ const value = processCSSValue(parsed[key], config);
952
950
  if (currentRule) {
953
- currentRule.properties.push(!value.length ? key : `${key}: ${value}`);
951
+ currentRule.properties[key] = value;
954
952
  }
955
- });
953
+ }
956
954
  }
957
955
 
958
956
  // 规则结束
@@ -982,13 +980,12 @@ function parseNestedRules(cssText, config, aliases, macros) {
982
980
  // 行结束,处理当前行的属性或变量
983
981
  if (inRuleBlock && currentLine.trim() && currentLine.includes(':')) {
984
982
  const parsed = parseSingleLineCSS(currentLine.trim(), aliases, macros);
985
- parsed.forEach(obj => {
986
- const key = Object.keys(obj)[0];
987
- const value = processCSSValue(obj[key], config);
983
+ for (let key of Object.keys(parsed)){
984
+ const value = processCSSValue(parsed[key], config);
988
985
  if (currentRule) {
989
- currentRule.properties.push(!value.length ? key : `${key}: ${value}`);
986
+ currentRule.properties[key] = value;
990
987
  }
991
- });
988
+ }
992
989
  } else if (isGlobalScope && currentLine.trim()) {
993
990
  // 全局作用域中检查变量定义
994
991
  const varMatch = currentLine.trim().match(/^\$([a-zA-Z_][a-zA-Z0-9_]*)\s*:\s*(.+?);?$/);
@@ -1014,26 +1011,24 @@ function parseNestedRules(cssText, config, aliases, macros) {
1014
1011
  }
1015
1012
  } else if (inRuleBlock && currentLine.trim() && currentLine.includes(':')) {
1016
1013
  const parsed = parseSingleLineCSS(currentLine.trim(), aliases, macros);
1017
- parsed.forEach(obj => {
1018
- const key = Object.keys(obj)[0];
1019
- const value = processCSSValue(obj[key], config);
1014
+ for (let key of Object.keys(parsed)){
1015
+ const value = processCSSValue(parsed[key], config);
1020
1016
  if (currentRule) {
1021
- currentRule.properties.push(!value.length ? key : `${key}: ${value}`);
1017
+ currentRule.properties[key] = value;
1022
1018
  }
1023
- });
1019
+ }
1024
1020
  }
1025
1021
 
1026
1022
  // 如果存在全局变量,创建:root规则并添加到rootRules开头
1027
1023
  if (Object.keys(globalVariables).length > 0) {
1028
1024
  const rootVarsRule = {
1029
1025
  selector: config.rootSelector,
1030
- properties: [],
1026
+ properties: {},
1031
1027
  children: []
1032
1028
  };
1033
-
1034
1029
  // 将变量转换为CSS属性
1035
1030
  Object.entries(globalVariables).forEach(([name, value]) => {
1036
- rootVarsRule.properties.push(`--${name}: ${value}`);
1031
+ rootVarsRule.properties["--" + name] = value;
1037
1032
  });
1038
1033
 
1039
1034
  // 添加到rootRules的开头
@@ -1070,15 +1065,13 @@ function parseNestedRules(cssText, config, aliases, macros) {
1070
1065
 
1071
1066
  fullSelector = fullSelector;
1072
1067
 
1073
- if (rule.properties.length > 0) {
1068
+ if (Object.keys(rule.properties).length > 0) {
1074
1069
  result += (isRootAt ? " ".repeat(config.indentSize) : '') + fullSelector + ' {\n';
1075
- for (const prop of rule.properties) {
1076
- const parsed = parseSingleLineCSS(prop, aliases, macros);
1077
- parsed.forEach(obj => {
1078
- const key = Object.keys(obj)[0];
1079
- const value = processCSSValue(obj[key], config);
1080
- result += (isRootAt ? " ".repeat(config.indentSize) : '') + " ".repeat(config.indentSize) + (!value.length ? key : `${key}: ${value};\n`);
1081
- });
1070
+ for (let key in rule.properties) {
1071
+ if (rule.properties.hasOwnProperty(key)) {
1072
+ const value = processCSSValue(rule.properties[key], config);
1073
+ result += (isRootAt ? " ".repeat(config.indentSize) : '') + " ".repeat(config.indentSize) + (!value.length ? `${key}\n` : `${key}: ${value};\n`);
1074
+ }
1082
1075
  }
1083
1076
  result += isRootAt ? " ".repeat(config.indentSize) + '}\n' : '}\n\n';
1084
1077
  }
@@ -1559,6 +1552,48 @@ function parseNestedRules(cssText, config, aliases, macros) {
1559
1552
  }
1560
1553
  }
1561
1554
  };
1555
+
1556
+ /**
1557
+ * Styimat 插件基类
1558
+ */
1559
+ api.Plugin = class {
1560
+ /**
1561
+ * 插件名称
1562
+ */
1563
+ name = 'Plugin';
1564
+
1565
+ /**
1566
+ * 构造函数 - use时调用
1567
+ */
1568
+ constructor() {
1569
+ this.createdAt = Date.now();
1570
+ this.install();
1571
+ }
1572
+
1573
+ /**
1574
+ * 下载插件时调用
1575
+ */
1576
+ install() {
1577
+ // 清理资源
1578
+ }
1579
+
1580
+ /**
1581
+ * 卸载插件时调用
1582
+ */
1583
+ destroy() {
1584
+ // 清理资源
1585
+ }
1586
+
1587
+ /**
1588
+ * CSS 转换方法 - 必须由子类实现
1589
+ * @param {string} cssText - CSS 文本
1590
+ * @param {Object} config - 配置
1591
+ * @returns {string} 转换结果
1592
+ */
1593
+ convert(cssText, config) {
1594
+ throw new Error(`${this.name}.convert() 必须被实现`);
1595
+ }
1596
+ };
1562
1597
 
1563
1598
  // 创建主函数
1564
1599
  const styimat = async function(...args) {
@@ -1,17 +1,18 @@
1
1
  /*!
2
2
  * MIT License
3
3
  * Copyright (c) 2025 王小玗
4
- */const styimat=(function(){let M={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};const A={IMPORT:/@import\s+([^;]+?)\s*;/g,ALIAS:/^@alias\s+([a-zA-Z_][a-zA-Z0-9_]*)\s+(.+?)\s*;$/,MACRO:/^@macro\s+([a-zA-Z_][a-zA-Z0-9_]*)\s*\(([^)]*)\)\s*\{$/,COMMENT:/\/\*[\s\S]*?\*\//g,MATH_SYMBOL:/([\da-z])([+-])(-?[\da-z])/g,MATH:/math\(([^)]+)\)/gi,COLOR:/(lab|lch)\([^)]+\)/gi,HEXLAB:/lab#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})/gi,HEXLCH:/lch#([0-9a-f]{2})([0-9a-f]{2})(\d{1,3})/gi,SPACE:/\s+/g,AND:/&/g,HYPHEN:/-([a-z])/g,VARIABLE:/(?:\$\$|\$)([a-zA-Z_][a-zA-Z0-9_]*)(?=[^a-zA-Z0-9_])/g};let R=null;const O=new Map,F=new Map,L=new Map,v=new Map;function P(n,t=`
5
- `){const r=[],e=t.charCodeAt(0);let s=0;for(let o=0,l=n.length;o<l;o++)n.charCodeAt(o)===e&&((o>s||n.charAt(s)!=="\r")&&r.push(n.slice(s,o)),s=o+1);return s<n.length?r.push(n.substring(s)):s===n.length&&n.charCodeAt(n.length-1)===10&&r.push(""),r}function Q(n){const t={...M},r=P(n),e=[];for(let s of r){const o=s.trim();if(o.startsWith("#")){const l=o.substring(1).trim(),a=l.indexOf(" ");if(~a){const c=l.substring(0,a).trim(),u=l.substring(a+1).trim(),i=te(c);u==="true"||u==="false"?t[i]=u==="true":!isNaN(u)&&u.trim()!==""?t[i]=Number(u):t[i]=u}else console.warn(`\u65E0\u6548\u7684\u914D\u7F6E\u884C: ${o}`)}else e.push(s)}return{config:t,css:e.join(`
6
- `)}}function K(n){const t=new Map,r=P(n),e=[];for(let s of r){const o=s.trim();if(o.startsWith("@alias")){const l=o.match(A.ALIAS);if(l){const a=l[1],c=l[2];t.set(a,c);continue}}e.push(s)}return{aliases:t,css:e.join(`
7
- `)}}function V(n,t){if(!t.enableMacros)return{macros:new Map,css:n};const r=new Map,e=P(n),s=[];let o=!1,l="",a=[],c=[],u=0;for(let i of e){const p=i.trim();if(!o&&p.startsWith("@macro")){const f=p.match(A.MACRO);if(f){o=!0,l=f[1],a=P(f[2],",").map(h=>h.trim()).filter(h=>h).map(h=>{const g=P(h,":").map(C=>C.trim());return{name:g[0].slice(1),defaultValue:g[1]||null}}),c=[],u=1;continue}}if(o){for(const f of i)f==="{"&&u++,f==="}"&&u--;u===0?(r.set(l,{params:a,body:c.join(`
4
+ */const styimat=(function(){let y={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};const A={IMPORT:/@import\s+([^;]+?)\s*;/g,ALIAS:/^@alias\s+([a-zA-Z_][a-zA-Z0-9_]*)\s+(.+?)\s*;$/,MACRO:/^@macro\s+([a-zA-Z_][a-zA-Z0-9_]*)\s*\(([^)]*)\)\s*\{$/,COMMENT:/\/\*[\s\S]*?\*\//g,MATH_SYMBOL:/([\da-z])([+-])(-?[\da-z])/g,MATH:/math\(([^)]+)\)/gi,COLOR:/(lab|lch)\([^)]+\)/gi,HEXLAB:/lab#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})/gi,HEXLCH:/lch#([0-9a-f]{2})([0-9a-f]{2})(\d{1,3})/gi,SPACE:/\s+/g,AND:/&/g,HYPHEN:/-([a-z])/g,VARIABLE:/(?:\$\$|\$)([a-zA-Z_][a-zA-Z0-9_]*)(?=[^a-zA-Z0-9_])/g};let x=null;const O=new Map,F=new Map,L=new Map,$=new Map;function E(n,e=`
5
+ `){const r=[],t=e.charCodeAt(0);let s=0;for(let o=0,l=n.length;o<l;o++)n.charCodeAt(o)===t&&((o>s||n.charAt(s)!=="\r")&&r.push(n.slice(s,o)),s=o+1);return s<n.length?r.push(n.substring(s)):s===n.length&&n.charCodeAt(n.length-1)===10&&r.push(""),r}function K(n){const e={...y},r=E(n),t=[];for(let s of r){const o=s.trim();if(o.startsWith("@config ")){const l=o.substring(8).trim(),a=l.indexOf(" ");if(~a){const c=l.substring(0,a).trim(),u=l.substring(a+1).trim(),i=re(c);u==="true"||u==="false"?e[i]=u==="true":!isNaN(u)&&u.trim()!==""?e[i]=Number(u):e[i]=u}else console.warn(`\u65E0\u6548\u7684\u914D\u7F6E\u884C: ${o}`)}else t.push(s)}return{config:e,css:t.join(`
6
+ `)}}function J(n){const e=new Map,r=E(n),t=[];for(let s of r){const o=s.trim();if(o.startsWith("@alias")){const l=o.match(A.ALIAS);if(l){const a=l[1],c=l[2];e.set(a,c);continue}}t.push(s)}return{aliases:e,css:t.join(`
7
+ `)}}function V(n,e){if(!e.enableMacros)return{macros:new Map,css:n};const r=new Map,t=E(n),s=[];let o=!1,l="",a=[],c=[],u=0;for(let i of t){const p=i.trim();if(!o&&p.startsWith("@macro")){const f=p.match(A.MACRO);if(f){o=!0,l=f[1],a=E(f[2],",").map(h=>h.trim()).filter(h=>h).map(h=>{const b=E(h,":").map(C=>C.trim());return{name:b[0].slice(1),defaultValue:b[1]||null}}),c=[],u=1;continue}}if(o){for(const f of i)f==="{"&&u++,f==="}"&&u--;u===0?(r.set(l,{params:a,body:c.join(`
8
8
  `)}),o=!1,l="",a=[],c=[]):c.push(i);continue}s.push(i)}return{macros:r,css:s.join(`
9
- `)}}function J(n,t,r=","){const e=new Map,s=ee(n,r);for(let o=0,l=t.length;o<l;o++){const a=t[o];let c;o<s.length?c=s[o]:a.defaultValue!==null?c=a.defaultValue:c="none",e.set(a.name,c)}return e}function ee(n,t){const r=[];let e="",s=!1,o="",l=0,a=0;for(let c=0,u=n.length;c<u;c++){const i=n[c];(i==='"'||i==="'")&&!s?(s=!0,o=i):i===o&&s&&(s=!1,o=""),s||(i==="("&&l++,i===")"&&l--,i==="["&&a++,i==="]"&&a--),i===t&&!s&&l===0&&a===0?(r.push(e.trim()),e=""):e+=i}return e.trim()&&r.push(e.trim()),r}function W(n,t,r){let e=n;return e=e.replace(A.VARIABLE,(s,o)=>t.get(o)?t.get(o):s),e=$(e,r),e}function te(n){return n.replace(A.HYPHEN,function(t,r){return r.toUpperCase()})}function k(){if(R!==null)return R;if(typeof window>"u"||!window.CSS)return R=!1,!1;try{R=CSS.supports("color","color(display-p3 1 0 0)")}catch{R=!1}return R}function x(n,t,r){let e=n.trim();if(e.endsWith(";")&&(e=e.slice(0,-1)),!e)return[];const s=[];let o="",l=0,a=!1,c="";for(let i=0,p=e.length;i<p;i++){const f=e[i];(f==='"'||f==="'")&&!a?(a=!0,c=f):f===c&&a&&(a=!1,c=""),a||(f==="("?l++:f===")"&&l--),f===";"&&!a&&l===0?o.trim()&&(s.push(o.trim()),o=""):o+=f}o.trim()&&s.push(o.trim());const u=[];for(let i of s){if(i=i.replace(A.COMMENT,""),!i.trim())continue;const p=re(i);if(!~p){console.warn(`\u65E0\u6548\u7684CSS\u58F0\u660E: "${i}"`);continue}let f=i.substring(0,p).trim(),h=i.substring(p+1).trim();if(h.endsWith(";")&&(h=h.slice(0,-1).trim()),f.startsWith("$")&&(f="--"+f.slice(1)),f=t.get(f)??f,f.startsWith("@")&&r.get(f.slice(1))){const g=r.get(f.slice(1)),C=J(h,g.params," ");f=W(g.body,C,D),h=""}u.push({[f]:h})}return u}function re(n){let t=!1,r="";for(let e=0,s=n.length;e<s;e++){const o=n[e];if((o==='"'||o==="'")&&!t?(t=!0,r=o):o===r&&t&&(t=!1,r=""),o===":"&&!t)return e}return-1}function Z(n,t){let r=n.replace(A.SPACE,"");return ne(r)}function ne(n){return`calc(${n.replace(A.MATH_SYMBOL,"$1 $2 $3")})`}function se(n,t){let r=n;return r=(s=>s.replace(A.MATH,(o,l)=>Z(l,t)))(r),r}function oe(n,t){if(!t.convertLabToRGB&&!t.convertLchToRGB)return n;let r=n;r=ae(r,t);const e=new Map,s=l=>l.replace(A.COLOR,a=>{if(e.has(a))return e.get(a);let c=a;return a.toLowerCase().startsWith("lab(")?t.convertLabToRGB&&(c=ce(a,t)):a.toLowerCase().startsWith("lch(")&&t.convertLchToRGB&&(c=le(a,t)),e.set(a,c),c});let o;do o=r,r=s(r);while(r!==o);return r}function ae(n,t){let r=n;const e=new Map;return r=r.replace(A.HEXLAB,(s,o,l,a)=>{if(e.has(s))return e.get(s);try{const c=parseInt(o,16)/255*100,u=(parseInt(l,16)-128)*1.5,i=(parseInt(a,16)-128)*1.5,p=E(c,u,i,t);return e.set(s,p),p}catch(c){return console.warn(`\u65E0\u6CD5\u89E3\u6790lab#\u5341\u516D\u8FDB\u5236\u989C\u8272: ${s}`,c),s}}),r=r.replace(A.HEXLCH,(s,o,l,a)=>{if(e.has(s))return e.get(s);try{const c=parseInt(o,16)/255*100,u=parseInt(l,16)/255*150,i=parseInt(a)/100*360,p=T(c,u,i),f=E(p.L,p.a,p.b,t);return e.set(s,f),f}catch(c){return console.warn(`\u65E0\u6CD5\u89E3\u6790lch#\u5341\u516D\u8FDB\u5236\u989C\u8272: ${s}`,c),s}}),r}function ce(n,t){const r=/lab\(\s*([\d.]+)(%?)\s+([\d.-]+)\s+([\d.-]+)(?:\s*\/\s*([\d.%]+))?\s*\)/i,e=n.match(r);if(!e)return n;try{let s=parseFloat(e[1]);e[2]!=="%"&&(s<0&&(s=0),s>100&&(s=100));const o=parseFloat(e[3]),l=parseFloat(e[4]),a=e[5]!==void 0?e[5].includes("%")?parseFloat(e[5])/100:parseFloat(e[5]):null;return E(s,o,l,t,a)}catch(s){return console.warn(`\u65E0\u6CD5\u8F6C\u6362LAB\u989C\u8272: ${n}`,s),n}}function le(n,t){const r=/lch\(\s*([\d.]+)(%?)\s+([\d.]+)\s+([\d.]+)(deg)?(?:\s*\/\s*([\d.%]+))?\s*\)/i,e=n.match(r);if(!e)return n;try{let s=parseFloat(e[1]);e[2]==="%"?s=s:(s<0&&(s=0),s>100&&(s=100));const o=parseFloat(e[3]);let l=parseFloat(e[4]);o<0&&console.warn(`LCH\u4E2D\u7684C\u503C\u4E0D\u80FD\u4E3A\u8D1F: ${o}`),l=(l%360+360)%360;const a=T(s,o,l),c=e[6]!==void 0?e[6].includes("%")?parseFloat(e[6])/100:parseFloat(e[6]):null;return E(a.L,a.a,a.b,t,c)}catch(s){return console.warn(`\u65E0\u6CD5\u8F6C\u6362LCH\u989C\u8272: ${n}`,s),n}}function T(n,t,r){const e=r*Math.PI/180,s=t*Math.cos(e),o=t*Math.sin(e);return{L:n,a:s,b:o}}function S(n,t,r){const e=(d,m,b)=>{const q=(d+16)/116,z=m/500+q,N=q-b/200,de=z**3>.008856?z**3:(116*z-16)/903.3,me=d>903.3*.008856?((d+16)/116)**3:d/903.3,ge=N**3>.008856?N**3:(116*N-16)/903.3;return[de*.95047,me*1,ge*1.08883]},s=(d,m,b)=>{const y=[[3.2404542,-1.5371385,-.4985314],[-.969266,1.8760108,.041556],[.0556434,-.2040259,1.0572252]],w=y[0][0]*d+y[0][1]*m+y[0][2]*b,U=y[1][0]*d+y[1][1]*m+y[1][2]*b,Y=y[2][0]*d+y[2][1]*m+y[2][2]*b;return[w,U,Y]},o=d=>{const m=d<0?-1:1,b=m*d;return b<=.0031308?12.92*b:m*(1.055*Math.pow(b,.4166666666666667)-.055)},l=d=>Math.max(0,Math.min(255,d*255|0)),[a,c,u]=e(n,t,r),[i,p,f]=s(a,c,u),h=o(i),g=o(p),C=o(f);return{r:l(h),g:l(g),b:l(C)}}function _(n,t,r){const e=(a,c,u)=>{const C=(a+16)/116,d=c/500+C,m=C-u/200,b=d**3>.008856?d**3:(116*d-16)/903.3,y=a>903.3*.008856?((a+16)/116)**3:a/903.3,w=m**3>.008856?m**3:(116*m-16)/903.3;return[b*.95047,y*1,w*1.08883]},s=(a,c,u)=>{const i=[[2.493496911941425,-.9313836179191239,-.40271078445071684],[-.8294889695615747,1.7626640603183463,.023624685841943577],[.03584583024378447,-.07617238926804182,.9568845240076872]],p=i[0][0]*a+i[0][1]*c+i[0][2]*u,f=i[1][0]*a+i[1][1]*c+i[1][2]*u,h=i[2][0]*a+i[2][1]*c+i[2][2]*u;return[p,f,h]},o=a=>{const c=a<0?-1:1,u=Math.abs(a);return u<=.0031308?c*12.92*u:c*(1.055*Math.pow(u,.4166666666666667)-.055)},l=a=>Math.max(0,Math.min(255,a*255|0));try{const[a,c,u]=e(n,t,r),[i,p,f]=s(a,c,u),h=o(i),g=o(p),C=o(f);return{r:Math.max(0,Math.min(1,h)),g:Math.max(0,Math.min(1,g)),b:Math.max(0,Math.min(1,C))}}catch(a){console.warn("P3\u8F6C\u6362\u5931\u8D25:",a);const c=S(n,t,r);return{r:c.r/255,g:c.g/255,b:c.b/255}}}function E(n,t,r,e,s=null){if(!e.enableP3||!k()){const o=S(n,t,r);return s!==null?`rgba(${o.r}, ${o.g}, ${o.b}, ${s})`:`rgb(${o.r}, ${o.g}, ${o.b})`}else{const o=_(n,t,r);return s!==null?`color(display-p3 ${o.r.toFixed(4)} ${o.g.toFixed(4)} ${o.b.toFixed(4)} / ${s})`:`color(display-p3 ${o.r.toFixed(4)} ${o.g.toFixed(4)} ${o.b.toFixed(4)})`}}function $(n,t){let r=n;return t.enableMath&&(r=se(r,t)),(t.convertLabToRGB||t.convertLchToRGB)&&(r=oe(r,t)),r}function ie(n,t,r,e){const s=[],o=[],l={};let a=null,c="",u=!1,i=0,p=!0;for(let f=0,h=n.length;f<h;f++){const g=n[f],C=n.charCodeAt(f);if(C===123){if(i++,p&&c.trim()){const d=c.trim().match(/^\$([a-zA-Z_][a-zA-Z0-9_]*)\s*:\s*(.+?);?$/);if(d){const[,m,b]=d;l[m]=$(b.trim(),t),c="";continue}}if(!u)a={selector:c.trim(),properties:[],children:[]},o.push(a),u=!0,p=!1;else{c.trim()&&c.includes(":")&&x(c.trim(),r,e).forEach(b=>{const y=Object.keys(b)[0],w=$(b[y],t);a&&a.properties.push(w.length?`${y}: ${w}`:y)});const d={selector:c.trim(),properties:[],children:[]};o.push(d),a=d}c=""}else if(C===125){i--,c.trim()&&c.includes(":")&&x(c.trim(),r,e).forEach(b=>{const y=Object.keys(b)[0],w=$(b[y],t);a&&a.properties.push(w.length?`${y}: ${w}`:y)});const d=o.pop();if(o.length===0)s.push(d),u=!1,a=null,p=!0;else{const m=o[o.length-1];m.children||(m.children=[]),m.children.push(d),a=m}c="",i===0&&(u=!1,p=!0)}else if(C===10||C===59){if(u&&c.trim()&&c.includes(":"))x(c.trim(),r,e).forEach(m=>{const b=Object.keys(m)[0],y=$(m[b],t);a&&a.properties.push(y.length?`${b}: ${y}`:b)});else if(p&&c.trim()){const d=c.trim().match(/^\$([a-zA-Z_][a-zA-Z0-9_]*)\s*:\s*(.+?);?$/);if(d){const[,m,b]=d;l[m]=$(b.trim(),t),c="";continue}}c=""}else c+=g}if(p&&c.trim()){const f=c.trim().match(/^\$([a-zA-Z_][a-zA-Z0-9_]*)\s*:\s*(.+?);?$/);if(f){const[,h,g]=f;l[h]=$(g.trim(),t)}}else u&&c.trim()&&c.includes(":")&&x(c.trim(),r,e).forEach(h=>{const g=Object.keys(h)[0],C=$(h[g],t);a&&a.properties.push(C.length?`${g}: ${C}`:g)});if(Object.keys(l).length>0){const f={selector:t.rootSelector,properties:[],children:[]};Object.entries(l).forEach(([h,g])=>{f.properties.push(`--${h}: ${g}`)}),s.unshift(f)}return G(s,t,"",r,e)}function G(n,t,r="",e,s,o=!1){let l="";for(const a of n){const c=a.selector.startsWith("@");c&&(l+=a.selector+` {
10
- `);let u=a.selector;if(r&&(u.includes("&")?u=u.replace(A.AND,r):u.trim().startsWith(":")?u=r+u:u=r+" "+u),u=u,a.properties.length>0){l+=(o?" ".repeat(t.indentSize):"")+u+` {
11
- `;for(const i of a.properties)x(i,e,s).forEach(f=>{const h=Object.keys(f)[0],g=$(f[h],t);l+=(o?" ".repeat(t.indentSize):"")+" ".repeat(t.indentSize)+(g.length?`${h}: ${g};
12
- `:h)});l+=o?" ".repeat(t.indentSize)+`}
9
+ `)}}function ee(n,e,r=","){const t=new Map,s=te(n,r);for(let o=0,l=e.length;o<l;o++){const a=e[o];let c;o<s.length?c=s[o]:a.defaultValue!==null?c=a.defaultValue:c="none",t.set(a.name,c)}return t}function te(n,e){const r=[];let t="",s=!1,o="",l=0,a=0;for(let c=0,u=n.length;c<u;c++){const i=n[c];(i==='"'||i==="'")&&!s?(s=!0,o=i):i===o&&s&&(s=!1,o=""),s||(i==="("&&l++,i===")"&&l--,i==="["&&a++,i==="]"&&a--),i===e&&!s&&l===0&&a===0?(r.push(t.trim()),t=""):t+=i}return t.trim()&&r.push(t.trim()),r}function W(n,e,r){let t=n;return t=t.replace(A.VARIABLE,(s,o)=>e.get(o)?e.get(o):s),t=w(t,r),t}function re(n){return n.replace(A.HYPHEN,function(e,r){return r.toUpperCase()})}function z(){if(x!==null)return x;if(typeof window>"u"||!window.CSS)return x=!1,!1;try{x=CSS.supports("color","color(display-p3 1 0 0)")}catch{x=!1}return x}function H(n,e,r){let t=n.trim();if(t.endsWith(";")&&(t=t.slice(0,-1)),!t)return[];const s=[];let o="",l=0,a=!1,c="";for(let i=0,p=t.length;i<p;i++){const f=t[i];(f==='"'||f==="'")&&!a?(a=!0,c=f):f===c&&a&&(a=!1,c=""),a||(f==="("?l++:f===")"&&l--),f===";"&&!a&&l===0?o.trim()&&(s.push(o.trim()),o=""):o+=f}o.trim()&&s.push(o.trim());const u={};for(let i of s){if(i=i.replace(A.COMMENT,""),!i.trim())continue;const p=ne(i);if(!~p){console.warn(`\u65E0\u6548\u7684CSS\u58F0\u660E: "${i}"`);continue}let f=i.substring(0,p).trim(),h=i.substring(p+1).trim();if(h.endsWith(";")&&(h=h.slice(0,-1).trim()),f.startsWith("$")&&(f="--"+f.slice(1)),f=e.get(f)??f,f.startsWith("@")&&r.get(f.slice(1))){const b=r.get(f.slice(1)),C=ee(h,b.params," ");f=W(b.body,C,D),h=""}u[f]=h}return u}function ne(n){let e=!1,r="";for(let t=0,s=n.length;t<s;t++){const o=n[t];if((o==='"'||o==="'")&&!e?(e=!0,r=o):o===r&&e&&(e=!1,r=""),o===":"&&!e)return t}return-1}function Z(n,e){let r=n.replace(A.SPACE,"");return se(r)}function se(n){return`calc(${n.replace(A.MATH_SYMBOL,"$1 $2 $3")})`}function oe(n,e){let r=n;return r=(s=>s.replace(A.MATH,(o,l)=>Z(l,e)))(r),r}function ae(n,e){if(!e.convertLabToRGB&&!e.convertLchToRGB)return n;let r=n;r=ce(r,e);const t=new Map,s=l=>l.replace(A.COLOR,a=>{if(t.has(a))return t.get(a);let c=a;return a.toLowerCase().startsWith("lab(")?e.convertLabToRGB&&(c=le(a,e)):a.toLowerCase().startsWith("lch(")&&e.convertLchToRGB&&(c=ie(a,e)),t.set(a,c),c});let o;do o=r,r=s(r);while(r!==o);return r}function ce(n,e){let r=n;const t=new Map;return r=r.replace(A.HEXLAB,(s,o,l,a)=>{if(t.has(s))return t.get(s);try{const c=parseInt(o,16)/255*100,u=(parseInt(l,16)-128)*1.5,i=(parseInt(a,16)-128)*1.5,p=T(c,u,i,e);return t.set(s,p),p}catch(c){return console.warn(`\u65E0\u6CD5\u89E3\u6790lab#\u5341\u516D\u8FDB\u5236\u989C\u8272: ${s}`,c),s}}),r=r.replace(A.HEXLCH,(s,o,l,a)=>{if(t.has(s))return t.get(s);try{const c=parseInt(o,16)/255*100,u=parseInt(l,16)/255*150,i=parseInt(a)/100*360,p=v(c,u,i),f=T(p.L,p.a,p.b,e);return t.set(s,f),f}catch(c){return console.warn(`\u65E0\u6CD5\u89E3\u6790lch#\u5341\u516D\u8FDB\u5236\u989C\u8272: ${s}`,c),s}}),r}function le(n,e){const r=/lab\(\s*([\d.]+)(%?)\s+([\d.-]+)\s+([\d.-]+)(?:\s*\/\s*([\d.%]+))?\s*\)/i,t=n.match(r);if(!t)return n;try{let s=parseFloat(t[1]);t[2]!=="%"&&(s<0&&(s=0),s>100&&(s=100));const o=parseFloat(t[3]),l=parseFloat(t[4]),a=t[5]!==void 0?t[5].includes("%")?parseFloat(t[5])/100:parseFloat(t[5]):null;return T(s,o,l,e,a)}catch(s){return console.warn(`\u65E0\u6CD5\u8F6C\u6362LAB\u989C\u8272: ${n}`,s),n}}function ie(n,e){const r=/lch\(\s*([\d.]+)(%?)\s+([\d.]+)\s+([\d.]+)(deg)?(?:\s*\/\s*([\d.%]+))?\s*\)/i,t=n.match(r);if(!t)return n;try{let s=parseFloat(t[1]);t[2]==="%"?s=s:(s<0&&(s=0),s>100&&(s=100));const o=parseFloat(t[3]);let l=parseFloat(t[4]);o<0&&console.warn(`LCH\u4E2D\u7684C\u503C\u4E0D\u80FD\u4E3A\u8D1F: ${o}`),l=(l%360+360)%360;const a=v(s,o,l),c=t[6]!==void 0?t[6].includes("%")?parseFloat(t[6])/100:parseFloat(t[6]):null;return T(a.L,a.a,a.b,e,c)}catch(s){return console.warn(`\u65E0\u6CD5\u8F6C\u6362LCH\u989C\u8272: ${n}`,s),n}}function v(n,e,r){const t=r*Math.PI/180,s=e*Math.cos(t),o=e*Math.sin(t);return{L:n,a:s,b:o}}function S(n,e,r){const t=(d,m,g)=>{const Q=(d+16)/116,P=m*.002+Q,R=Q-g*.005,de=P*P*P>.008856?P*P*P:(116*P-16)/903.3,me=d>903.3*.008856?((d+16)/116)**3:d/903.3,ge=R*R*R>.008856?R*R*R:(116*R-16)/903.3;return[de*.95047,me*1,ge*1.08883]},s=(d,m,g)=>{const M=[[3.2404542,-1.5371385,-.4985314],[-.969266,1.8760108,.041556],[.0556434,-.2040259,1.0572252]],I=M[0][0]*d+M[0][1]*m+M[0][2]*g,Y=M[1][0]*d+M[1][1]*m+M[1][2]*g,q=M[2][0]*d+M[2][1]*m+M[2][2]*g;return[I,Y,q]},o=d=>{const m=d<0?-1:1,g=m*d;return g<=.0031308?12.92*g:m*(1.055*Math.pow(g,.4166666666666667)-.055)},l=d=>Math.max(0,Math.min(255,d*255|0)),[a,c,u]=t(n,e,r),[i,p,f]=s(a,c,u),h=o(i),b=o(p),C=o(f);return{r:l(h),g:l(b),b:l(C)}}function _(n,e,r){const t=(a,c,u)=>{const C=(a+16)/116,d=c*.002+C,m=C-u/200,g=d**3>.008856?d**3:(116*d-16)/903.3,M=a>903.3*.008856?((a+16)/116)**3:a/903.3,I=m**3>.008856?m**3:(116*m-16)/903.3;return[g*.95047,M*1,I*1.08883]},s=(a,c,u)=>{const i=[[2.493496911941425,-.9313836179191239,-.40271078445071684],[-.8294889695615747,1.7626640603183463,.023624685841943577],[.03584583024378447,-.07617238926804182,.9568845240076872]],p=i[0][0]*a+i[0][1]*c+i[0][2]*u,f=i[1][0]*a+i[1][1]*c+i[1][2]*u,h=i[2][0]*a+i[2][1]*c+i[2][2]*u;return[p,f,h]},o=a=>{const c=a<0?-1:1,u=Math.abs(a);return u<=.0031308?c*12.92*u:c*(1.055*Math.pow(u,.4166666666666667)-.055)},l=a=>Math.max(0,Math.min(255,a*255|0));try{const[a,c,u]=t(n,e,r),[i,p,f]=s(a,c,u),h=o(i),b=o(p),C=o(f);return{r:Math.max(0,Math.min(1,h)),g:Math.max(0,Math.min(1,b)),b:Math.max(0,Math.min(1,C))}}catch(a){console.warn("P3\u8F6C\u6362\u5931\u8D25:",a);const c=S(n,e,r);return{r:c.r/255,g:c.g/255,b:c.b/255}}}function T(n,e,r,t,s=null){if(!t.enableP3||!z()){const o=S(n,e,r);return s!==null?`rgba(${o.r}, ${o.g}, ${o.b}, ${s})`:`rgb(${o.r}, ${o.g}, ${o.b})`}else{const o=_(n,e,r);return s!==null?`color(display-p3 ${o.r.toFixed(4)} ${o.g.toFixed(4)} ${o.b.toFixed(4)} / ${s})`:`color(display-p3 ${o.r.toFixed(4)} ${o.g.toFixed(4)} ${o.b.toFixed(4)})`}}function w(n,e){let r=n;return e.enableMath&&(r=oe(r,e)),(e.convertLabToRGB||e.convertLchToRGB)&&(r=ae(r,e)),r}function ue(n,e,r,t){const s=[],o=[],l={};let a=null,c="",u=!1,i=0,p=!0;for(let f=0,h=n.length;f<h;f++){const b=n[f],C=n.charCodeAt(f);if(C===123){if(i++,p&&c.trim()){const d=c.trim().match(/^\$([a-zA-Z_][a-zA-Z0-9_]*)\s*:\s*(.+?);?$/);if(d){const[,m,g]=d;l[m]=w(g.trim(),e),c="";continue}}if(!u)a={selector:c.trim(),properties:{},children:[]},o.push(a),u=!0,p=!1;else{if(c.trim()&&c.includes(":")){const m=H(c.trim(),r,t);for(let g of Object.keys(m)){const M=w(m[g],e);a&&(a.properties[g]=M)}}const d={selector:c.trim(),properties:{},children:[]};o.push(d),a=d}c=""}else if(C===125){if(i--,c.trim()&&c.includes(":")){const m=H(c.trim(),r,t);for(let g of Object.keys(m)){const M=w(m[g],e);a&&(a.properties[g]=M)}}const d=o.pop();if(o.length===0)s.push(d),u=!1,a=null,p=!0;else{const m=o[o.length-1];m.children||(m.children=[]),m.children.push(d),a=m}c="",i===0&&(u=!1,p=!0)}else if(C===10||C===59){if(u&&c.trim()&&c.includes(":")){const d=H(c.trim(),r,t);for(let m of Object.keys(d)){const g=w(d[m],e);a&&(a.properties[m]=g)}}else if(p&&c.trim()){const d=c.trim().match(/^\$([a-zA-Z_][a-zA-Z0-9_]*)\s*:\s*(.+?);?$/);if(d){const[,m,g]=d;l[m]=w(g.trim(),e),c="";continue}}c=""}else c+=b}if(p&&c.trim()){const f=c.trim().match(/^\$([a-zA-Z_][a-zA-Z0-9_]*)\s*:\s*(.+?);?$/);if(f){const[,h,b]=f;l[h]=w(b.trim(),e)}}else if(u&&c.trim()&&c.includes(":")){const f=H(c.trim(),r,t);for(let h of Object.keys(f)){const b=w(f[h],e);a&&(a.properties[h]=b)}}if(Object.keys(l).length>0){const f={selector:e.rootSelector,properties:{},children:[]};Object.entries(l).forEach(([h,b])=>{f.properties["--"+h]=b}),s.unshift(f)}return j(s,e,"",r,t)}function j(n,e,r="",t,s,o=!1){let l="";for(const a of n){const c=a.selector.startsWith("@");c&&(l+=a.selector+` {
10
+ `);let u=a.selector;if(r&&(u.includes("&")?u=u.replace(A.AND,r):u.trim().startsWith(":")?u=r+u:u=r+" "+u),u=u,Object.keys(a.properties).length>0){l+=(o?" ".repeat(e.indentSize):"")+u+` {
11
+ `;for(let i in a.properties)if(a.properties.hasOwnProperty(i)){const p=w(a.properties[i],e);l+=(o?" ".repeat(e.indentSize):"")+" ".repeat(e.indentSize)+(p.length?`${i}: ${p};
12
+ `:`${i}
13
+ `)}l+=o?" ".repeat(e.indentSize)+`}
13
14
  `:`}
14
15
 
15
- `}a.children&&a.children.length>0&&(l+=G(a.children,t,c?"":u,e,s,o||c)),c&&(l+=`}
16
+ `}a.children&&a.children.length>0&&(l+=j(a.children,e,c?"":u,t,s,o||c)),c&&(l+=`}
16
17
 
17
- `)}return l}function ue(n,t){let r=n;return r=r.replace(A.VARIABLE,(e,s)=>e.startsWith("$$")?`attr(${s})`:`var(--${s})`),r=$(r,t),r}async function j(n,t){const r=A.IMPORT;return(async s=>{const o=[],l=s.replace(r,(a,c)=>{const u=fe(c,t).then(i=>j(i,t)).catch(i=>(console.warn(`\u65E0\u6CD5\u5BFC\u5165CSS\u6587\u4EF6: ${c}`,i),""));return o.push(u),`__IMPORT_PLACEHOLDER_${o.length-1}__`});if(o.length>0){const a=await Promise.all(o);let c=l;for(let u=a.length;u--;)c=c.replace(`__IMPORT_PLACEHOLDER_${u}__`,a[u]);return c}return l})(n)}async function fe(n,t){if(t.importCache&&O.has(n))return O.get(n);const r=t.importBaseUrl?new URL(n,t.importBaseUrl).href:n;let e;if(typeof process<"u"&&process.versions&&process.versions.node&&typeof require<"u")try{const o=require("fs"),l=require("path");let a=r;r.startsWith(".")&&(a=l.join(process.cwd(),r)),e=o.readFileSync(a,"utf-8")}catch(o){throw new Error(`Node.js\u6587\u4EF6\u8BFB\u53D6\u5931\u8D25: ${r} - ${o.message}`)}else try{const o=new AbortController,l=setTimeout(()=>o.abort(),t.importTimeout),a=await fetch(r,{signal:o.signal,headers:{Accept:"text/css"}});if(clearTimeout(l),!a.ok)throw new Error(`HTTP\u9519\u8BEF: ${a.status} ${a.statusText}`);e=await a.text()}catch(o){throw o.name==="AbortError"?new Error(`\u5BFC\u5165\u8D85\u65F6: ${r}`):new Error(`\u65E0\u6CD5\u83B7\u53D6CSS: ${r} - ${o.message}`)}return t.importCache&&O.set(n,e),e}async function B(n,t={}){let{config:r,css:e}=Q(n);const s={...M,...t,...r};e=await j(e,s);let o=e,l=new Map;if(s.enableAlias){const{aliases:p,css:f}=K(o);l=p,o=f}let a=o,c=new Map;if(s.enableMacros){const{macros:p,css:f}=V(a,s);c=p,a=f;for(const[h,g]of c)L.set(h,g)}let u=a.trim();if(s.enableNesting&&a.includes("{"))try{u=ie(a,s,l,c)}catch(p){console.warn("\u5D4C\u5957\u89E3\u6790\u5931\u8D25\uFF0C\u4F7F\u7528\u539F\u59CBCSS:",p)}let i=u;i=ue(i,s);for(const[p,f]of v)try{i=f.convert(i,s)}catch(h){console.error("\u63D2\u4EF6\u5904\u7406\u5931\u8D25:",h)}return i}function X(n={}){const t={...M,...n},r=document.querySelectorAll(`style[${t.styleTagAttribute||"e"}]`);return r.forEach(e=>{let s=e.textContent;(async()=>{try{e.getAttribute("src")&&(s="@import "+e.getAttribute("src")+";");const l=await B(s,t),a=document.createElement("style");a.textContent=l,e.parentNode.insertBefore(a,e.nextSibling),t.preserveOriginal?e.style.display="none":e.remove()}catch(l){console.error("\u5904\u7406style\u6807\u7B7E\u5931\u8D25:",l)}})()}),r.length}function D(n={}){M={...M,...n}}function I(n,t={}){const r={...M,...t};if(n)return(async()=>{try{const e=await B(n,r),s=document.createElement("style");return s.textContent=e,document.head.appendChild(s),s}catch(e){return console.error("\u5E94\u7528CSS\u5931\u8D25:",e),null}})();document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>{X(r)}):X(r)}const pe={convert:B,apply:I,config:D,supportsP3:k(),detectP3Support:k,imports:{clearCache:function(){O.clear()},setBaseUrl:function(n){M.importBaseUrl=n},setCacheEnabled:function(n){M.importCache=n},setTimeout:function(n){M.importTimeout=n}},plugins:{use(n){const t=new n;return v.set(t.name??n.name,t),!0},remove(n){return v.get(n)?.destroy&&v.get(n).destroy(),v.delete(n),!0},getAll:function(){return Array.from(v.entries())},clear:function(){v.clear()}},aliases:{add:function(n,t){F.set(n,t)},remove:function(n){F.delete(n)},getAll:function(){return Array.from(F.entries())},clear:function(){F.clear()}},macros:{define:function(n,t,r=[]){if(typeof t=="function"){const s=t.toString().match(/{([\s\S]*)}/);s&&L.set(n,{params:r.map(o=>typeof o=="string"?{name:o}:o),body:s[1].trim()})}else L.set(n,{params:r.map(e=>typeof e=="string"?{name:e}:e),body:t})},call:function(n,...t){const r=L.get(n);if(!r)throw new Error(`\u672A\u5B9A\u4E49\u7684\u5B8F: ${n}`);const e=new Map;for(let s=0,o=r.params.length;s<o;s++){const l=r.params[s],a=s<t.length?t[s]:l.defaultValue;if(a===void 0&&l.defaultValue===null)throw new Error(`\u7F3A\u5C11\u5FC5\u9700\u53C2\u6570: ${l.name}`);e.set(l.name,a!==void 0?a:"")}return W(r.body,e,M)},getAll:function(){return Array.from(L.entries())},remove:function(n){L.delete(n)},clear:function(){L.clear()},parse:function(n){const{macros:t}=V(n,M);for(const[r,e]of t)L.set(r,e)}},math:{evaluate:function(n){return Z(n,M)}},colorUtils:{labToRGB:S,lchToLab:T,lchToRGB:function(n,t,r){const e=T(n,t,r);return S(e.L,e.a,e.b)},labToP3:_,lchToP3:function(n,t,r){const e=T(n,t,r);return _(e.L,e.a,e.b)},parseHexLab:function(n){const t=n.match(/lab#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})/i);if(!t)return null;const r=t[1],e=t[2],s=t[3],o=parseInt(r,16)/255*100,l=(parseInt(e,16)-128)*1.5,a=(parseInt(s,16)-128)*1.5;return S(o,l,a)},parseHexLch:function(n){const t=n.match(/lch#([0-9a-f]{2})([0-9a-f]{2})(\d{1,3})/i);if(!t)return null;const r=t[1],e=t[2],s=t[3],o=parseInt(r,16)/255*100,l=parseInt(e,16)/255*150,a=parseInt(s)/100*360,c=T(o,l,a);return S(c.L,c.a,c.b)},generateColor:function(n,t,r,e=null,s=!0){return E(n,t,r,{enableP3:s},e)},parseColor:function(n){try{const t=n.match(/lab\(\s*([\d.]+)(%?)\s+([\d.-]+)\s+([\d.-]+)(?:\s*\/\s*([\d.%]+))?\s*\)/i);if(t){let e=parseFloat(t[1]);const s=parseFloat(t[3]),o=parseFloat(t[4]),l=t[5]?t[5].includes("%")?parseFloat(t[5])/100:parseFloat(t[5]):null,a=E(e,s,o,M,l);return{L:e,A:s,B:o,alpha:l,rgb:S(e,s,o),p3:_(e,s,o),colorString:a}}const r=n.match(/lch\(\s*([\d.]+)(%?)\s+([\d.]+)\s+([\d.]+)(deg)?(?:\s*\/\s*([\d.%]+))?\s*\)/i);if(r){let e=parseFloat(r[1]);const s=parseFloat(r[3]);let o=parseFloat(r[4]);const l=r[6]?r[6].includes("%")?parseFloat(r[6])/100:parseFloat(r[6]):null,a=T(e,s,o),c=E(a.L,a.a,a.b,M,l);return{L:e,C:s,H:o,alpha:l,lab:a,rgb:S(a.L,a.a,a.b),p3:_(a.L,a.a,a.b),colorString:c}}return null}catch(t){return console.warn("\u65E0\u6CD5\u89E3\u6790\u989C\u8272:",n,t),null}}}},H=async function(...n){if(n.length>1||n[0]&&n[0].raw)return await he(...n);const t=n[0];if(typeof t=="string"){const r=await B(t,n[1]);return r&&typeof r.then=="function",r}return typeof t=="object"&&t!==null?(M={...M,...t},H):n.length===0?I():H};async function he(n,...t){let r=n[0];for(let s=0,o=t.length;s<o;s++){const l=t[s];let a="";typeof l=="function"?a=l():Array.isArray(l)?a=l.join(" "):a=String(l??"none"),r+=a+n[s+1]}const e=await B(r,M);return e&&typeof e.then=="function",e}return Object.assign(H,pe),typeof window<"u"&&(I(),Object.defineProperty(window.HTMLElement.prototype,"cssVar",{get(){const n=this;return new Proxy(()=>{},{get(t,r){const e=r.startsWith("--")?r:`--${r}`;return n.style.getPropertyValue(e)},set(t,r,e){const s=r.startsWith("--")?r:`--${r}`;return n.style.setProperty(s,e),!0},apply(t,r,e){const s=e[0],o=e[1],l=s.startsWith("--")?s:`--${s}`;if(o===void 0)return n.style.getPropertyValue(l);n.style.setProperty(l,o)}})}})),H})();define([],M=>styimat);
18
+ `)}return l}function fe(n,e){let r=n;return r=r.replace(A.VARIABLE,(t,s)=>t.startsWith("$$")?`attr(${s})`:`var(--${s})`),r=w(r,e),r}async function G(n,e){const r=A.IMPORT;return(async s=>{const o=[],l=s.replace(r,(a,c)=>{const u=pe(c,e).then(i=>G(i,e)).catch(i=>(console.warn(`\u65E0\u6CD5\u5BFC\u5165CSS\u6587\u4EF6: ${c}`,i),""));return o.push(u),`__IMPORT_PLACEHOLDER_${o.length-1}__`});if(o.length>0){const a=await Promise.all(o);let c=l;for(let u=a.length;u--;)c=c.replace(`__IMPORT_PLACEHOLDER_${u}__`,a[u]);return c}return l})(n)}async function pe(n,e){if(e.importCache&&O.has(n))return O.get(n);const r=e.importBaseUrl?new URL(n,e.importBaseUrl).href:n;let t;if(typeof process<"u"&&process.versions&&process.versions.node&&typeof require<"u")try{const o=require("fs"),l=require("path");let a=r;r.startsWith(".")&&(a=l.join(process.cwd(),r)),t=o.readFileSync(a,"utf-8")}catch(o){throw new Error(`Node.js\u6587\u4EF6\u8BFB\u53D6\u5931\u8D25: ${r} - ${o.message}`)}else try{const o=new AbortController,l=setTimeout(()=>o.abort(),e.importTimeout),a=await fetch(r,{signal:o.signal,headers:{Accept:"text/css"}});if(clearTimeout(l),!a.ok)throw new Error(`HTTP\u9519\u8BEF: ${a.status} ${a.statusText}`);t=await a.text()}catch(o){throw o.name==="AbortError"?new Error(`\u5BFC\u5165\u8D85\u65F6: ${r}`):new Error(`\u65E0\u6CD5\u83B7\u53D6CSS: ${r} - ${o.message}`)}return e.importCache&&O.set(n,t),t}async function B(n,e={}){let{config:r,css:t}=K(n);const s={...y,...e,...r};t=await G(t,s);let o=t,l=new Map;if(s.enableAlias){const{aliases:p,css:f}=J(o);l=p,o=f}let a=o,c=new Map;if(s.enableMacros){const{macros:p,css:f}=V(a,s);c=p,a=f;for(const[h,b]of c)L.set(h,b)}let u=a.trim();if(s.enableNesting&&a.includes("{"))try{u=ue(a,s,l,c)}catch(p){console.warn("\u5D4C\u5957\u89E3\u6790\u5931\u8D25\uFF0C\u4F7F\u7528\u539F\u59CBCSS:",p)}let i=u;i=fe(i,s);for(const[p,f]of $)try{i=f.convert(i,s)}catch(h){console.error("\u63D2\u4EF6\u5904\u7406\u5931\u8D25:",h)}return i}function X(n={}){const e={...y,...n},r=document.querySelectorAll(`style[${e.styleTagAttribute||"e"}]`);return r.forEach(t=>{let s=t.textContent;(async()=>{try{t.getAttribute("src")&&(s="@import "+t.getAttribute("src")+";");const l=await B(s,e),a=document.createElement("style");a.textContent=l,t.parentNode.insertBefore(a,t.nextSibling),e.preserveOriginal?t.style.display="none":t.remove()}catch(l){console.error("\u5904\u7406style\u6807\u7B7E\u5931\u8D25:",l)}})()}),r.length}function D(n={}){y={...y,...n}}function N(n,e={}){const r={...y,...e};if(n)return(async()=>{try{const t=await B(n,r),s=document.createElement("style");return s.textContent=t,document.head.appendChild(s),s}catch(t){return console.error("\u5E94\u7528CSS\u5931\u8D25:",t),null}})();document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>{X(r)}):X(r)}const U={convert:B,apply:N,config:D,supportsP3:z(),detectP3Support:z,imports:{clearCache:function(){O.clear()},setBaseUrl:function(n){y.importBaseUrl=n},setCacheEnabled:function(n){y.importCache=n},setTimeout:function(n){y.importTimeout=n}},plugins:{use(n){const e=new n;return $.set(e.name??n.name,e),!0},remove(n){return $.get(n)?.destroy&&$.get(n).destroy(),$.delete(n),!0},getAll:function(){return Array.from($.entries())},clear:function(){$.clear()}},aliases:{add:function(n,e){F.set(n,e)},remove:function(n){F.delete(n)},getAll:function(){return Array.from(F.entries())},clear:function(){F.clear()}},macros:{define:function(n,e,r=[]){if(typeof e=="function"){const s=e.toString().match(/{([\s\S]*)}/);s&&L.set(n,{params:r.map(o=>typeof o=="string"?{name:o}:o),body:s[1].trim()})}else L.set(n,{params:r.map(t=>typeof t=="string"?{name:t}:t),body:e})},call:function(n,...e){const r=L.get(n);if(!r)throw new Error(`\u672A\u5B9A\u4E49\u7684\u5B8F: ${n}`);const t=new Map;for(let s=0,o=r.params.length;s<o;s++){const l=r.params[s],a=s<e.length?e[s]:l.defaultValue;if(a===void 0&&l.defaultValue===null)throw new Error(`\u7F3A\u5C11\u5FC5\u9700\u53C2\u6570: ${l.name}`);t.set(l.name,a!==void 0?a:"")}return W(r.body,t,y)},getAll:function(){return Array.from(L.entries())},remove:function(n){L.delete(n)},clear:function(){L.clear()},parse:function(n){const{macros:e}=V(n,y);for(const[r,t]of e)L.set(r,t)}},math:{evaluate:function(n){return Z(n,y)}},colorUtils:{labToRGB:S,lchToLab:v,lchToRGB:function(n,e,r){const t=v(n,e,r);return S(t.L,t.a,t.b)},labToP3:_,lchToP3:function(n,e,r){const t=v(n,e,r);return _(t.L,t.a,t.b)},parseHexLab:function(n){const e=n.match(/lab#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})/i);if(!e)return null;const r=e[1],t=e[2],s=e[3],o=parseInt(r,16)/255*100,l=(parseInt(t,16)-128)*1.5,a=(parseInt(s,16)-128)*1.5;return S(o,l,a)},parseHexLch:function(n){const e=n.match(/lch#([0-9a-f]{2})([0-9a-f]{2})(\d{1,3})/i);if(!e)return null;const r=e[1],t=e[2],s=e[3],o=parseInt(r,16)/255*100,l=parseInt(t,16)/255*150,a=parseInt(s)/100*360,c=v(o,l,a);return S(c.L,c.a,c.b)},generateColor:function(n,e,r,t=null,s=!0){return T(n,e,r,{enableP3:s},t)},parseColor:function(n){try{const e=n.match(/lab\(\s*([\d.]+)(%?)\s+([\d.-]+)\s+([\d.-]+)(?:\s*\/\s*([\d.%]+))?\s*\)/i);if(e){let t=parseFloat(e[1]);const s=parseFloat(e[3]),o=parseFloat(e[4]),l=e[5]?e[5].includes("%")?parseFloat(e[5])/100:parseFloat(e[5]):null,a=T(t,s,o,y,l);return{L:t,A:s,B:o,alpha:l,rgb:S(t,s,o),p3:_(t,s,o),colorString:a}}const r=n.match(/lch\(\s*([\d.]+)(%?)\s+([\d.]+)\s+([\d.]+)(deg)?(?:\s*\/\s*([\d.%]+))?\s*\)/i);if(r){let t=parseFloat(r[1]);const s=parseFloat(r[3]);let o=parseFloat(r[4]);const l=r[6]?r[6].includes("%")?parseFloat(r[6])/100:parseFloat(r[6]):null,a=v(t,s,o),c=T(a.L,a.a,a.b,y,l);return{L:t,C:s,H:o,alpha:l,lab:a,rgb:S(a.L,a.a,a.b),p3:_(a.L,a.a,a.b),colorString:c}}return null}catch(e){return console.warn("\u65E0\u6CD5\u89E3\u6790\u989C\u8272:",n,e),null}}}};U.Plugin=class{name="Plugin";constructor(){this.createdAt=Date.now(),this.install()}install(){}destroy(){}convert(n,e){throw new Error(`${this.name}.convert() \u5FC5\u987B\u88AB\u5B9E\u73B0`)}};const k=async function(...n){if(n.length>1||n[0]&&n[0].raw)return await he(...n);const e=n[0];if(typeof e=="string"){const r=await B(e,n[1]);return r&&typeof r.then=="function",r}return typeof e=="object"&&e!==null?(y={...y,...e},k):n.length===0?N():k};async function he(n,...e){let r=n[0];for(let s=0,o=e.length;s<o;s++){const l=e[s];let a="";typeof l=="function"?a=l():Array.isArray(l)?a=l.join(" "):a=String(l??"none"),r+=a+n[s+1]}const t=await B(r,y);return t&&typeof t.then=="function",t}return Object.assign(k,U),typeof window<"u"&&(N(),Object.defineProperty(window.HTMLElement.prototype,"cssVar",{get(){const n=this;return new Proxy(()=>{},{get(e,r){const t=r.startsWith("--")?r:`--${r}`;return n.style.getPropertyValue(t)},set(e,r,t){const s=r.startsWith("--")?r:`--${r}`;return n.style.setProperty(s,t),!0},apply(e,r,t){const s=t[0],o=t[1],l=s.startsWith("--")?s:`--${s}`;if(o===void 0)return n.style.getPropertyValue(l);n.style.setProperty(l,o)}})}})),k})();define([],y=>styimat);