数通智联化工云平台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

85 lines
2.5 KiB

'use strict';
const core = require('@unocss/core');
const colors = require('./preset-mini.fcd935e5.cjs');
function variantMatcher(name, handler) {
let re;
return {
name,
match(input, ctx) {
if (!re)
re = new RegExp(`^${core.escapeRegExp(name)}(?:${ctx.generator.config.separators.join("|")})`);
const match = input.match(re);
if (match) {
return {
matcher: input.slice(match[0].length),
handle: (input2, next) => next({
...input2,
...handler(input2)
})
};
}
},
autocomplete: `${name}:`
};
}
function variantParentMatcher(name, parent) {
let re;
return {
name,
match(input, ctx) {
if (!re)
re = new RegExp(`^${core.escapeRegExp(name)}(?:${ctx.generator.config.separators.join("|")})`);
const match = input.match(re);
if (match) {
return {
matcher: input.slice(match[0].length),
handle: (input2, next) => next({
...input2,
parent: `${input2.parent ? `${input2.parent} $$ ` : ""}${parent}`
})
};
}
},
autocomplete: `${name}:`
};
}
function variantGetBracket(prefix, matcher, separators) {
if (matcher.startsWith(`${prefix}[`)) {
const [match, rest] = colors.getBracket(matcher.slice(prefix.length), "[", "]") ?? [];
if (match && rest) {
for (const separator of separators) {
if (rest.startsWith(separator))
return [match, rest.slice(separator.length), separator];
}
return [match, rest, ""];
}
}
}
function variantGetParameter(prefix, matcher, separators) {
if (matcher.startsWith(prefix)) {
const body = variantGetBracket(prefix, matcher, separators);
if (body) {
const [label = "", rest = body[1]] = variantGetParameter("/", body[1], separators) ?? [];
return [body[0], rest, label];
}
for (const separator of separators.filter((x) => x !== "/")) {
const pos = matcher.indexOf(separator, prefix.length);
if (pos !== -1) {
const labelPos = matcher.indexOf("/", prefix.length);
const unlabelled = labelPos === -1 || pos <= labelPos;
return [
matcher.slice(prefix.length, unlabelled ? pos : labelPos),
matcher.slice(pos + separator.length),
unlabelled ? "" : matcher.slice(labelPos + 1, pos)
];
}
}
}
}
exports.variantGetBracket = variantGetBracket;
exports.variantGetParameter = variantGetParameter;
exports.variantMatcher = variantMatcher;
exports.variantParentMatcher = variantParentMatcher;