styimat 6.0.2 → 7.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 +14 -12
- package/dist/styimat.js +11 -5
- package/dist/styimat.min.js +8 -8
- package/dist/styimat.min.mjs +8 -8
- package/dist/styimat.mjs +11 -5
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
|
|
2
1
|
# Styimat
|
|
3
2
|
[](https://gitee.com/wxy6987/styimat/stargazers)
|
|
4
3
|
[](https://gitee.com/wxy6987/styimat/members)
|
|
@@ -453,19 +452,22 @@ styimat.imports.setBaseUrl('/css/'); // 设置导入基础URL
|
|
|
453
452
|
styimat.imports.setCacheEnabled(false); // 禁用导入缓存
|
|
454
453
|
styimat.imports.setTimeout(10000); // 设置导入超时时间
|
|
455
454
|
|
|
456
|
-
//
|
|
457
|
-
|
|
458
|
-
name
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
}
|
|
462
|
-
|
|
463
|
-
// 创建时调用
|
|
464
|
-
},
|
|
465
|
-
deleted() {
|
|
455
|
+
// 定义插件
|
|
456
|
+
class compressPlugin {
|
|
457
|
+
static name = "compress";
|
|
458
|
+
constructor() {
|
|
459
|
+
// 构造函数
|
|
460
|
+
}
|
|
461
|
+
destroy() {
|
|
466
462
|
// 删除时调用
|
|
467
463
|
}
|
|
468
|
-
|
|
464
|
+
convert(css, config) {
|
|
465
|
+
return css.replace(/[\n\b]/g, "");
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
// 设置插件
|
|
470
|
+
styimat.plugins.use(compressPlugin);
|
|
469
471
|
|
|
470
472
|
styimat.plugins.remove("compress"); // 删除插件
|
|
471
473
|
```
|
package/dist/styimat.js
CHANGED
|
@@ -1475,16 +1475,22 @@ const styimat = (function() {
|
|
|
1475
1475
|
|
|
1476
1476
|
plugins: {
|
|
1477
1477
|
use(plugin) {
|
|
1478
|
-
const
|
|
1479
|
-
|
|
1480
|
-
pluginMap.set(plugin.name, plugin);
|
|
1478
|
+
const pluginObj = new plugin();
|
|
1479
|
+
pluginMap.set(plugin.name, pluginObj);
|
|
1481
1480
|
return true;
|
|
1482
1481
|
},
|
|
1483
1482
|
remove(name) {
|
|
1484
|
-
|
|
1485
|
-
|
|
1483
|
+
if (pluginMap.get(name).destroy) {
|
|
1484
|
+
pluginMap.get(name).destroy()
|
|
1485
|
+
}
|
|
1486
1486
|
pluginMap.delete(name);
|
|
1487
1487
|
return true;
|
|
1488
|
+
},
|
|
1489
|
+
getAll: function() {
|
|
1490
|
+
return Array.from(pluginMap.entries());
|
|
1491
|
+
},
|
|
1492
|
+
clear: function() {
|
|
1493
|
+
pluginMap.clear();
|
|
1488
1494
|
}
|
|
1489
1495
|
},
|
|
1490
1496
|
|
package/dist/styimat.min.js
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
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},
|
|
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},R=null;const V=new Map,W=new Map,M=new Map,S=new Map;function Q(o){const e={...g},r=o.split(`
|
|
5
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
6
|
`)}}function K(o){const e=new Map,r=o.split(`
|
|
7
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
8
|
`)}}function z(o,e){if(!e.enableMacros)return{macros:new Map,css:o};const r=new Map,n=o.split(`
|
|
9
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
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=
|
|
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=
|
|
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=v(n,r),n}function te(o){return o.replace(/-([a-z])/g,function(e,r){return r.toUpperCase()})}function j(){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(o){console.warn("P3\u652F\u6301\u68C0\u6D4B\u5931\u8D25:",o),R=!1}return R}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=L(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=x(u,h,f),d=L(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 L(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=x(s,t,a),l=n[6]!==void 0?n[6].includes("%")?parseFloat(n[6])/100:parseFloat(n[6]):null;return L(c.L,c.a,c.b,e,l)}catch(s){return console.warn(`\u65E0\u6CD5\u8F6C\u6362LCH\u989C\u8272: ${o}`,s),o}}function x(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,I=y/500+Z,O=Z-w/200,be=I**3>.008856?I**3:(116*I-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]],A=$[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[A,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 T(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,A=y**3>.008856?y**3:(116*y-16)/903.3;return[w*.95047,$*1,A*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 L(o,e,r,n,s=null){if(!n.enableP3||!j()){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=T(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 v(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=v(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
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
14
|
`}c=!1,a=null}t+=i+`
|
|
15
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=
|
|
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=v(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
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=
|
|
18
|
+
`;for(const u of c.properties)_(u,n,s).forEach(f=>{const p=Object.keys(f)[0],d=v(f[p],e);t+=(a?" ".repeat(e.indentSize):"")+" ".repeat(e.indentSize)+(d===""?p:`${p}: ${d};
|
|
19
19
|
`)});t+=a?" ".repeat(e.indentSize)+`}
|
|
20
20
|
`:`}
|
|
21
21
|
|
|
@@ -23,11 +23,11 @@
|
|
|
23
23
|
|
|
24
24
|
`)}return t.trim()+`
|
|
25
25
|
|
|
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=
|
|
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=v(s,n),s}function pe(o,e){if(Object.keys(o).length===0)return"";const r=Object.entries(o).map(([n,s])=>{const t=v(G(s,o),e);return" ".repeat(e.indentSize)+`--${n}: ${t};`}).join(`
|
|
27
27
|
`);return`${e.rootSelector} {
|
|
28
28
|
${r}
|
|
29
29
|
}
|
|
30
30
|
|
|
31
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+=
|
|
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&&
|
|
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+=v(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&&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}=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[$,A]of l)M.set($,A)}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 S)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 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 q(o={}){g={...g,...o}}function k(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",()=>{X(r)}):X(r)}const me={convert:P,apply:k,config:q,supportsP3:j(),detectP3Support:j,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){const e=new o;return S.set(o.name,e),!0},remove(o){return S.get(o).destroy&&S.get(o).destroy(),S.delete(o),!0},getAll:function(){return Array.from(S.entries())},clear:function(){S.clear()}},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 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:x,lchToRGB:function(o,e,r){const n=x(o,e,r);return C(n.L,n.a,n.b)},labToP3:T,lchToP3:function(o,e,r){const n=x(o,e,r);return T(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=x(t,a,c);return C(l.L,l.a,l.b)},generateColor:function(o,e,r,n=null,s=!0){return L(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=L(n,s,t,g,a);return{L:n,A:s,B:t,alpha:a,rgb:C(n,s,t),p3:T(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=x(n,s,t),l=L(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:T(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 P(e,{...g,...o[1]});return r&&typeof r.then=="function",r}return typeof e=="object"&&e!==null?(g={...g,...e},F):o.length===0?k():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 P(r,g);return n&&typeof n.then=="function",n}return Object.assign(F,me),Object.setPrototypeOf(F,Function.prototype),typeof window<"u"&&(k(),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}
|
package/dist/styimat.min.mjs
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* MIT License
|
|
3
3
|
* Copyright (c) 2025 王小玗
|
|
4
|
-
*/const
|
|
4
|
+
*/const V=(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},R=null;const W=new Map,B=new Map,M=new Map,S=new Map;function K(o){const e={...g},r=o.split(`
|
|
5
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
6
|
`)}}function J(o){const e=new Map,r=o.split(`
|
|
7
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
8
|
`)}}function _(o,e){if(!e.enableMacros)return{macros:new Map,css:o};const r=new Map,n=o.split(`
|
|
9
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
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=
|
|
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=
|
|
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=j(h,f.params);return E(f.body,p,r)});while(l);return c})(o)}function j(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=j(i,u.params);return E(u.body,h,r)});while(a)}}return n=v(n,r),n}function ne(o){return o.replace(/-([a-z])/g,function(e,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(o){console.warn("P3\u652F\u6301\u68C0\u6D4B\u5931\u8D25:",o),R=!1}return R}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=j(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=L(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=x(u,h,f),d=L(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 L(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=x(s,t,a),l=n[6]!==void 0?n[6].includes("%")?parseFloat(n[6])/100:parseFloat(n[6]):null;return L(c.L,c.a,c.b,e,l)}catch(s){return console.warn(`\u65E0\u6CD5\u8F6C\u6362LCH\u989C\u8272: ${o}`,s),o}}function x(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]],A=$[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[A,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 P(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,A=y**3>.008856?y**3:(116*y-16)/903.3;return[w*.95047,$*1,A*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 L(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=P(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 v(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=v(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
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
14
|
`}c=!1,a=null}t+=i+`
|
|
15
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=
|
|
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=v(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
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=
|
|
18
|
+
`;for(const u of c.properties)H(u,n,s).forEach(f=>{const p=Object.keys(f)[0],d=v(f[p],e);t+=(a?" ".repeat(e.indentSize):"")+" ".repeat(e.indentSize)+(d===""?p:`${p}: ${d};
|
|
19
19
|
`)});t+=a?" ".repeat(e.indentSize)+`}
|
|
20
20
|
`:`}
|
|
21
21
|
|
|
@@ -23,11 +23,11 @@
|
|
|
23
23
|
|
|
24
24
|
`)}return t.trim()+`
|
|
25
25
|
|
|
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=
|
|
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=v(s,n),s}function he(o,e){if(Object.keys(o).length===0)return"";const r=Object.entries(o).map(([n,s])=>{const t=v(U(s,o),e);return" ".repeat(e.indentSize)+`--${n}: ${t};`}).join(`
|
|
27
27
|
`);return`${e.rootSelector} {
|
|
28
28
|
${r}
|
|
29
29
|
}
|
|
30
30
|
|
|
31
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+=
|
|
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&&
|
|
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+=v(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&&W.has(o))return W.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&&W.set(o,n),n}async function T(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[$,A]of l)M.set($,A)}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 S)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 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 D(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",()=>{q(r)}):q(r)}const ge={convert:T,apply:I,config:D,supportsP3:k(),detectP3Support:k,imports:{clearCache:function(){W.clear()},setBaseUrl:function(o){g.importBaseUrl=o},setCacheEnabled:function(o){g.importCache=o},setTimeout:function(o){g.importTimeout=o}},plugins:{use(o){const e=new o;return S.set(o.name,e),!0},remove(o){return S.get(o).destroy&&S.get(o).destroy(),S.delete(o),!0},getAll:function(){return Array.from(S.entries())},clear:function(){S.clear()}},aliases:{add:function(o,e){B.set(o,e)},remove:function(o){B.delete(o)},getAll:function(){return Array.from(B.entries())},clear:function(){B.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:x,lchToRGB:function(o,e,r){const n=x(o,e,r);return C(n.L,n.a,n.b)},labToP3:P,lchToP3:function(o,e,r){const n=x(o,e,r);return P(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=x(t,a,c);return C(l.L,l.a,l.b)},generateColor:function(o,e,r,n=null,s=!0){return L(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=L(n,s,t,g,a);return{L:n,A:s,B:t,alpha:a,rgb:C(n,s,t),p3:P(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=x(n,s,t),l=L(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:P(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 be(...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 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 T(r,g);return n&&typeof n.then=="function",n}return Object.assign(F,ge),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=>V);else if(typeof module=="object"&&module.exports)module.exports=V;else{const g=globalThis??(typeof self<"u"&&self)??(typeof window<"u"&&window)??global??{};g.styimat=V}export default V;export const{convert,apply,config,supportsP3,detectP3Support,imports,plugins,aliases,macros,math,colorUtils}=V;
|
package/dist/styimat.mjs
CHANGED
|
@@ -1475,16 +1475,22 @@ const styimat = (function() {
|
|
|
1475
1475
|
|
|
1476
1476
|
plugins: {
|
|
1477
1477
|
use(plugin) {
|
|
1478
|
-
const
|
|
1479
|
-
|
|
1480
|
-
pluginMap.set(plugin.name, plugin);
|
|
1478
|
+
const pluginObj = new plugin();
|
|
1479
|
+
pluginMap.set(plugin.name, pluginObj);
|
|
1481
1480
|
return true;
|
|
1482
1481
|
},
|
|
1483
1482
|
remove(name) {
|
|
1484
|
-
|
|
1485
|
-
|
|
1483
|
+
if (pluginMap.get(name).destroy) {
|
|
1484
|
+
pluginMap.get(name).destroy()
|
|
1485
|
+
}
|
|
1486
1486
|
pluginMap.delete(name);
|
|
1487
1487
|
return true;
|
|
1488
|
+
},
|
|
1489
|
+
getAll: function() {
|
|
1490
|
+
return Array.from(pluginMap.entries());
|
|
1491
|
+
},
|
|
1492
|
+
clear: function() {
|
|
1493
|
+
pluginMap.clear();
|
|
1488
1494
|
}
|
|
1489
1495
|
},
|
|
1490
1496
|
|