aliascss
Version:
AliasCSS is a CSS post processor.
80 lines (79 loc) • 4.35 kB
JavaScript
import prefix, { createRegexForPseudo } from './PseudoPrefixNew.js';
import extractPrefix from './extractPrefix.js';
export default function PseudoEleStateNew(data) {
var _a;
const match = createRegexForPseudo(prefix);
if (!match.test(data))
return null;
const matchAndFunc = [
{
match: /^-([-]?(not|has|is|where|n|hs|w))\((.+)\)/,
func(value) {
const matched = value.match(this.match);
const newData = matched === null || matched === void 0 ? void 0 : matched[3];
if (newData) {
const [result, className] = extractPrefix(newData + '-display-none');
return [value.replace(matched[0], ''), `${prefix['-' + matched[1]]}(${result})`];
}
return [value.replace((matched === null || matched === void 0 ? void 0 : matched[0]) ? matched[0] : '', ''), ''];
}
},
{
match: /^-([-]?n(th(-child|-last-child|-last-of-type|-of-type)|c|lc|lot|ot))\((.+)\)/,
func(value) {
const matched = value.match(this.match);
return [value.replace((matched === null || matched === void 0 ? void 0 : matched[0]) ? matched[0] : '', ''), `${prefix['-' + (matched === null || matched === void 0 ? void 0 : matched[1])]}(${matched === null || matched === void 0 ? void 0 : matched[4]})`];
}
},
];
// accept (acss-selector)
if (data.match(matchAndFunc[0].match)) {
return matchAndFunc[0].func(data);
}
if (data.match(matchAndFunc[1].match)) {
return matchAndFunc[1].func(data);
}
// case 1. nth
if (/(^--nth(-child-|-last-child-|-last-of-type|-of-type-))([0-9]+[n]?)(?=[-|_])/.test(data)) {
const mch = data.match(/^(--nth(-child-|-last-child-|-last-of-type|-of-type-))([0-9]+[n]?)(?=[-|_])/);
const cn = (mch === null || mch === void 0 ? void 0 : mch[0]) ? data.replace(mch[0], '') : '';
const alias = (mch === null || mch === void 0 ? void 0 : mch[1]) ? prefix[mch[1].replace(/-$/, '')] : '';
const cont = mch === null || mch === void 0 ? void 0 : mch[3];
return [cn, `${alias}(${cont})`];
// return pseudoHandlerNthChild(data,/(^--nth(-child-|-last-child-|-last-of-type|-of-type-))([0-9]+[n]?)(?=[-|_])/)
}
else if (/^(--(nc|nlc|nlot|nthot)-)([a-z0-9]+)(?=[-|_])/.test(data)) {
const mch = data.match(/^(--(n|nc|nlc|nlot|not)-)([a-z0-9]+)(?=[-|_])/);
const cn = (mch === null || mch === void 0 ? void 0 : mch[0]) ? data.replace(mch[0], '') : '';
const alias = (mch === null || mch === void 0 ? void 0 : mch[1]) ? prefix[mch[1].replace(/-$/, '')] : '';
const cont = mch === null || mch === void 0 ? void 0 : mch[3];
// console.log(data,cn,alias,mch)
return [cn, `${alias}(${cont})`];
}
else if (/(^-(-not|-has|-is|-where|-n|-hs|-w|-is)[-_])/.test(data)) {
const mch = data.match(/(^-(-not|-has|-is|-where|-n|-hs|-w|-is)([_-]+[a-zA-Z0-9\.]+)(?=[-|_]))/);
const cn = (mch === null || mch === void 0 ? void 0 : mch[1]) ? data.replace(mch[1], '') : '';
const alias = (mch === null || mch === void 0 ? void 0 : mch[2]) ? prefix['-' + mch[2].replace(/-$/, '')] : '';
const cont = (_a = PseudoEleStateNew((mch === null || mch === void 0 ? void 0 : mch[3]) + '-dn')) === null || _a === void 0 ? void 0 : _a[1];
const [result, className] = extractPrefix((mch === null || mch === void 0 ? void 0 : mch[3]) + '-display-none');
// console.log('PseudoMatch',result,cont)
return [cn, `${alias}(${result})`];
}
else if (/(^--lang-([a-z]+)(?=[-|_]))/.test(data)) {
const mch = data.match(/(^--lang-([a-z0-9]+)(?=[-|_]))/);
const cn = (mch === null || mch === void 0 ? void 0 : mch[1]) ? data.replace(mch[1], '') : '';
// const alias=mch?.[1]?prefix[mch[1].replace(/-$/,'')]:'';
const cont = mch === null || mch === void 0 ? void 0 : mch[2];
return [cn, `:lang(${cont})`];
}
else {
const alias = data.match(match);
if (alias) {
if (prefix.hasOwnProperty(alias[0])) {
return [data.replace(alias[0], ''), prefix[alias[0]]];
}
}
// return [data, ''];
return null;
}
}