unocss-preset-weapp
Version:
the unocss preset for wechat miniprogram (uniapp, taro)
357 lines (350 loc) • 15 kB
JavaScript
import { l as colorResolver, a as h, g as globalKeywords, m as colorableShadows, h as handler, t as isCSSMathFn, n as hasParseableColor, p as positionMap, q as makeGlobalStaticRules, w as transformXYZ } from './unocss-preset-weapp.nctVdKFd.mjs';
import { cacheRestoreSelector } from 'unplugin-transform-class/utils';
const varEmpty = "var(--un-empty,/*!*/ /*!*/)";
const filterBase = {
"--un-blur": varEmpty,
"--un-brightness": varEmpty,
"--un-contrast": varEmpty,
"--un-drop-shadow": varEmpty,
"--un-grayscale": varEmpty,
"--un-hue-rotate": varEmpty,
"--un-invert": varEmpty,
"--un-saturate": varEmpty,
"--un-sepia": varEmpty
};
const filterProperty = "var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia)";
const backdropFilterBase = {
"--un-backdrop-blur": varEmpty,
"--un-backdrop-brightness": varEmpty,
"--un-backdrop-contrast": varEmpty,
"--un-backdrop-grayscale": varEmpty,
"--un-backdrop-hue-rotate": varEmpty,
"--un-backdrop-invert": varEmpty,
"--un-backdrop-opacity": varEmpty,
"--un-backdrop-saturate": varEmpty,
"--un-backdrop-sepia": varEmpty
};
const backdropFilterProperty = "var(--un-backdrop-blur) var(--un-backdrop-brightness) var(--un-backdrop-contrast) var(--un-backdrop-grayscale) var(--un-backdrop-hue-rotate) var(--un-backdrop-invert) var(--un-backdrop-opacity) var(--un-backdrop-saturate) var(--un-backdrop-sepia)";
function percentWithDefault(str) {
let v = h.bracket.cssvar(str || "");
if (v != null)
return v;
v = str ? h.percent(str) : "1";
if (v != null && Number.parseFloat(v) <= 1)
return v;
}
function toFilter(varName, resolver) {
return ([, b, s], { theme }) => {
const value = resolver(s, theme) ?? (s === "none" ? "0" : "");
if (value !== "") {
if (b) {
return {
[`--un-${b}${varName}`]: `${varName}(${value})`,
"-webkit-backdrop-filter": backdropFilterProperty,
"backdrop-filter": backdropFilterProperty
};
} else {
return {
[`--un-${varName}`]: `${varName}(${value})`,
filter: filterProperty
};
}
}
};
}
function dropShadowResolver([, s], { theme }) {
let v = theme.dropShadow?.[s || "DEFAULT"];
if (v != null) {
const shadows = colorableShadows(v, "--un-drop-shadow-color");
return {
"--un-drop-shadow": `drop-shadow(${shadows.join(") drop-shadow(")})`,
"filter": filterProperty
};
}
v = h.bracket.cssvar(s);
if (v != null) {
return {
"--un-drop-shadow": `drop-shadow(${v})`,
"filter": filterProperty
};
}
}
const filters = [
// filters
[/^(?:(backdrop-)|filter-)?blur(?:-(.+))?$/, toFilter("blur", (s, theme) => theme.blur?.[s || "DEFAULT"] || h.bracket.cssvar.px(s)), { autocomplete: ["(backdrop|filter)-blur-$blur", "blur-$blur", "filter-blur"] }],
[/^(?:(backdrop-)|filter-)?brightness-(.+)$/, toFilter("brightness", (s) => h.bracket.cssvar.percent(s)), { autocomplete: ["(backdrop|filter)-brightness-<percent>", "brightness-<percent>"] }],
[/^(?:(backdrop-)|filter-)?contrast-(.+)$/, toFilter("contrast", (s) => h.bracket.cssvar.percent(s)), { autocomplete: ["(backdrop|filter)-contrast-<percent>", "contrast-<percent>"] }],
// drop-shadow only on filter
[/^(?:filter-)?drop-shadow(?:-(.+))?$/, dropShadowResolver, {
autocomplete: [
"filter-drop",
"filter-drop-shadow",
"filter-drop-shadow-color",
"drop-shadow",
"drop-shadow-color",
"filter-drop-shadow-$dropShadow",
"drop-shadow-$dropShadow",
"filter-drop-shadow-color-$colors",
"drop-shadow-color-$colors",
"filter-drop-shadow-color-(op|opacity)",
"drop-shadow-color-(op|opacity)",
"filter-drop-shadow-color-(op|opacity)-<percent>",
"drop-shadow-color-(op|opacity)-<percent>"
]
}],
[/^(?:filter-)?drop-shadow-color-(.+)$/, colorResolver("--un-drop-shadow-color", "drop-shadow", "shadowColor")],
[/^(?:filter-)?drop-shadow-color-op(?:acity)?-?(.+)$/, ([, opacity]) => ({ "--un-drop-shadow-opacity": h.bracket.percent(opacity) })],
[/^(?:(backdrop-)|filter-)?grayscale(?:-(.+))?$/, toFilter("grayscale", percentWithDefault), { autocomplete: ["(backdrop|filter)-grayscale", "(backdrop|filter)-grayscale-<percent>", "grayscale-<percent>"] }],
[/^(?:(backdrop-)|filter-)?hue-rotate-(.+)$/, toFilter("hue-rotate", (s) => h.bracket.cssvar.degree(s))],
[/^(?:(backdrop-)|filter-)?invert(?:-(.+))?$/, toFilter("invert", percentWithDefault), { autocomplete: ["(backdrop|filter)-invert", "(backdrop|filter)-invert-<percent>", "invert-<percent>"] }],
// opacity only on backdrop-filter
[/^(backdrop-)opacity-(.+)$/, toFilter("opacity", (s) => h.bracket.cssvar.percent(s)), { autocomplete: ["backdrop-(op|opacity)", "backdrop-(op|opacity)-<percent>"] }],
[/^(?:(backdrop-)|filter-)?saturate-(.+)$/, toFilter("saturate", (s) => h.bracket.cssvar.percent(s)), { autocomplete: ["(backdrop|filter)-saturate", "(backdrop|filter)-saturate-<percent>", "saturate-<percent>"] }],
[/^(?:(backdrop-)|filter-)?sepia(?:-(.+))?$/, toFilter("sepia", percentWithDefault), { autocomplete: ["(backdrop|filter)-sepia", "(backdrop|filter)-sepia-<percent>", "sepia-<percent>"] }],
// base
["filter", { filter: filterProperty }],
["backdrop-filter", {
"-webkit-backdrop-filter": backdropFilterProperty,
"backdrop-filter": backdropFilterProperty
}],
// nones
["filter-none", { filter: "none" }],
["backdrop-filter-none", {
"-webkit-backdrop-filter": "none",
"backdrop-filter": "none"
}],
...globalKeywords.map((keyword) => [`filter-${keyword}`, { filter: keyword }]),
...globalKeywords.map((keyword) => [`backdrop-filter-${keyword}`, {
"-webkit-backdrop-filter": keyword,
"backdrop-filter": keyword
}])
];
const ringBase = {
"--un-ring-inset": varEmpty,
"--un-ring-offset-width": "0px",
"--un-ring-offset-color": "#fff",
"--un-ring-width": "0px",
"--un-ring-color": "rgb(147 197 253 / 0.5)",
"--un-shadow": "0 0 rgb(0 0 0 / 0)"
};
const preflightKeys$2 = Object.keys(ringBase);
const rings = [
// size
[/^ring(?:-(.+))?$/, ([, d], { theme }) => {
const value = theme.ringWidth?.[d || "DEFAULT"] ?? handler.px(d || "1");
if (value) {
return {
"--un-ring-width": value,
"--un-ring-offset-shadow": "var(--un-ring-inset) 0 0 0 var(--un-ring-offset-width) var(--un-ring-offset-color)",
"--un-ring-shadow": "var(--un-ring-inset) 0 0 0 calc(var(--un-ring-width) + var(--un-ring-offset-width)) var(--un-ring-color)",
"box-shadow": "var(--un-ring-offset-shadow), var(--un-ring-shadow), var(--un-shadow)"
};
}
}, { custom: { preflightKeys: preflightKeys$2 }, autocomplete: "ring-$ringWidth" }],
// size
[/^ring-(?:width-|size-)(.+)$/, handleWidth, { autocomplete: "ring-(width|size)-$lineWidth" }],
// offset size
["ring-offset", { "--un-ring-offset-width": "1px" }],
[/^ring-offset-(?:width-|size-)?(.+)$/, ([, d], { theme }) => ({ "--un-ring-offset-width": theme.lineWidth?.[d] ?? handler.bracket.cssvar.px(d) }), { autocomplete: "ring-offset-(width|size)-$lineWidth" }],
// colors
[/^ring-(.+)$/, handleColorOrWidth, { autocomplete: "ring-$colors" }],
[/^ring-op(?:acity)?-?(.+)$/, ([, opacity]) => ({ "--un-ring-opacity": handler.bracket.percent.cssvar(opacity) }), { autocomplete: "ring-(op|opacity)-<percent>" }],
// offset color
[/^ring-offset-(.+)$/, colorResolver("--un-ring-offset-color", "ring-offset", "borderColor"), { autocomplete: "ring-offset-$colors" }],
[/^ring-offset-op(?:acity)?-?(.+)$/, ([, opacity]) => ({ "--un-ring-offset-opacity": handler.bracket.percent.cssvar(opacity) }), { autocomplete: "ring-offset-(op|opacity)-<percent>" }],
// style
["ring-inset", { "--un-ring-inset": "inset" }]
];
function handleWidth([, b], { theme }) {
return { "--un-ring-width": theme.ringWidth?.[b] ?? handler.bracket.cssvar.px(b) };
}
function handleColorOrWidth(match, ctx) {
if (isCSSMathFn(handler.bracket(match[1])))
return handleWidth(match, ctx);
return colorResolver("--un-ring-color", "ring", "borderColor")(match, ctx);
}
const boxShadowsBase = {
"--un-ring-offset-shadow": "0 0 rgb(0 0 0 / 0)",
"--un-ring-shadow": "0 0 rgb(0 0 0 / 0)",
"--un-shadow-inset": varEmpty,
"--un-shadow": "0 0 rgb(0 0 0 / 0)"
};
const preflightKeys$1 = Object.keys(boxShadowsBase);
const boxShadows = [
[/^shadow(?:-(.+))?$/, (match, context) => {
let [, d] = match;
const { theme } = context;
d = cacheRestoreSelector(d, theme.transformRules);
const v = theme.boxShadow?.[d || "DEFAULT"];
const c = d ? handler.bracket.cssvar(d) : void 0;
if ((v != null || c != null) && !hasParseableColor(c, theme, "shadowColor")) {
return {
"--un-shadow": colorableShadows(v || c, "--un-shadow-color").join(","),
"box-shadow": "var(--un-ring-offset-shadow), var(--un-ring-shadow), var(--un-shadow)"
};
}
return colorResolver("--un-shadow-color", "shadow", "shadowColor")(match, context);
}, { custom: { preflightKeys: preflightKeys$1 }, autocomplete: ["shadow-$colors", "shadow-$boxShadow"] }],
[/^shadow-op(?:acity)?-?(.+)$/, ([, opacity]) => ({ "--un-shadow-opacity": handler.bracket.percent.cssvar(opacity) }), { autocomplete: "shadow-(op|opacity)-<percent>" }],
// inset
["shadow-inset", { "--un-shadow-inset": "inset" }]
];
const transformValues = [
"translate",
"rotate",
"scale"
];
const transformCpu = [
"translateX(var(--un-translate-x))",
"translateY(var(--un-translate-y))",
// 'translateZ(var(--un-translate-z))',
"rotate(var(--un-rotate))",
// 'rotateX(var(--un-rotate-x))',
// 'rotateY(var(--un-rotate-y))',
"rotateZ(var(--un-rotate-z))",
"skewX(var(--un-skew-x))",
"skewY(var(--un-skew-y))",
"scaleX(var(--un-scale-x))",
"scaleY(var(--un-scale-y))"
// 'scaleZ(var(--un-scale-z))',
].join(" ");
const transform = [
"translateX(var(--un-translate-x))",
"translateY(var(--un-translate-y))",
"translateZ(var(--un-translate-z))",
"rotate(var(--un-rotate))",
"rotateX(var(--un-rotate-x))",
"rotateY(var(--un-rotate-y))",
"rotateZ(var(--un-rotate-z))",
"skewX(var(--un-skew-x))",
"skewY(var(--un-skew-y))",
"scaleX(var(--un-scale-x))",
"scaleY(var(--un-scale-y))",
"scaleZ(var(--un-scale-z))"
].join(" ");
const transformGpu = [
"translate3d(var(--un-translate-x), var(--un-translate-y), var(--un-translate-z))",
"rotate(var(--un-rotate))",
"rotateX(var(--un-rotate-x))",
"rotateY(var(--un-rotate-y))",
"rotateZ(var(--un-rotate-z))",
"skewX(var(--un-skew-x))",
"skewY(var(--un-skew-y))",
"scaleX(var(--un-scale-x))",
"scaleY(var(--un-scale-y))",
"scaleZ(var(--un-scale-z))"
].join(" ");
const transformBase = {
// transform
"--un-rotate": 0,
"--un-rotate-x": 0,
"--un-rotate-y": 0,
"--un-rotate-z": 0,
"--un-scale-x": 1,
"--un-scale-y": 1,
"--un-scale-z": 1,
"--un-skew-x": 0,
"--un-skew-y": 0,
"--un-translate-x": 0,
"--un-translate-y": 0,
"--un-translate-z": 0
};
const preflightKeys = Object.keys(transformBase);
const transforms = [
// origins
[
/^(?:transform-)?origin-(.+)$/,
([, s]) => ({ "transform-origin": positionMap[s] ?? handler.bracket.cssvar(s) }),
{ autocomplete: [`transform-origin-(${Object.keys(positionMap).join("|")})`, `origin-(${Object.keys(positionMap).join("|")})`] }
],
// perspectives
[/^(?:transform-)?perspect(?:ive)?-(.+)$/, ([, s]) => {
const v = handler.bracket.cssvar.px.numberWithUnit(s);
if (v != null) {
return {
"-webkit-perspective": v,
"perspective": v
};
}
}],
// skip 1 & 2 letters shortcut
[/^(?:transform-)?perspect(?:ive)?-origin-(.+)$/, ([, s]) => {
const v = handler.bracket.cssvar(s) ?? (s.length >= 3 ? positionMap[s] : void 0);
if (v != null) {
return {
"-webkit-perspective-origin": v,
"perspective-origin": v
};
}
}],
// modifiers
[/^(?:transform-)?translate-()(.+)$/, handleTranslate, { custom: { preflightKeys } }],
[/^(?:transform-)?translate-([xyz])-(.+)$/, handleTranslate, { custom: { preflightKeys } }],
[/^(?:transform-)?rotate-()(.+)$/, handleRotate, { custom: { preflightKeys } }],
[/^(?:transform-)?rotate-([xyz])-(.+)$/, handleRotate, { custom: { preflightKeys } }],
[/^(?:transform-)?skew-()(.+)$/, handleSkew, { custom: { preflightKeys } }],
[/^(?:transform-)?skew-([xy])-(.+)$/, handleSkew, { custom: { preflightKeys }, autocomplete: ["transform-skew-(x|y)-<percent>", "skew-(x|y)-<percent>"] }],
[/^(?:transform-)?scale-()(.+)$/, handleScale, { custom: { preflightKeys } }],
[/^(?:transform-)?scale-([xyz])-(.+)$/, handleScale, { custom: { preflightKeys }, autocomplete: [`transform-(${transformValues.join("|")})-<percent>`, `transform-(${transformValues.join("|")})-(x|y|z)-<percent>`, `(${transformValues.join("|")})-<percent>`, `(${transformValues.join("|")})-(x|y|z)-<percent>`] }],
// style
[/^(?:transform-)?preserve-3d$/, () => ({ "transform-style": "preserve-3d" })],
[/^(?:transform-)?preserve-flat$/, () => ({ "transform-style": "flat" })],
// base
["transform", { transform }, { custom: { preflightKeys } }],
["transform-cpu", { transform: transformCpu }, {
custom: { preflightKeys: ["--un-translate-x", "--un-translate-y", "--un-rotate", "--un-rotate-z", "--un-skew-x", "--un-skew-y", "--un-scale-x", "--un-scale-y"] }
}],
["transform-gpu", { transform: transformGpu }, { custom: { preflightKeys } }],
["transform-none", { transform: "none" }],
...makeGlobalStaticRules("transform")
];
function handleTranslate([, d, b], { theme }) {
b = cacheRestoreSelector(b, theme?.transformRules);
const v = theme.spacing?.[b] ?? handler.bracket.cssvar.fraction.remToRpx(b);
if (v != null) {
return [
...transformXYZ(d, v, "translate"),
["transform", transform]
];
}
}
function handleScale([, d, b], { theme }) {
b = cacheRestoreSelector(b, theme?.transformRules);
const v = handler.bracket.cssvar.fraction.percent(b);
if (v != null) {
return [
...transformXYZ(d, v, "scale"),
["transform", transform]
];
}
}
function handleRotate([, d = "", b]) {
const v = handler.bracket.cssvar.degree(b);
if (v != null) {
if (d) {
return {
"--un-rotate": 0,
[`--un-rotate-${d}`]: v,
"transform": transform
};
} else {
return {
"--un-rotate-x": 0,
"--un-rotate-y": 0,
"--un-rotate-z": 0,
"--un-rotate": v,
"transform": transform
};
}
}
}
function handleSkew([, d, b]) {
const v = handler.bracket.cssvar.degree(b);
if (v != null) {
return [
...transformXYZ(d, v, "skew"),
["transform", transform]
];
}
}
export { filters as a, backdropFilterBase as b, rings as c, boxShadowsBase as d, boxShadows as e, filterBase as f, transforms as g, ringBase as r, transformBase as t };