import { parse } from "css-what"; import { filters } from "./filters.js"; import { pseudos, verifyPseudoArgs } from "./pseudos.js"; import { aliases } from "./aliases.js"; import { subselects } from "./subselects.js"; export { filters, pseudos, aliases }; export function compilePseudoSelector(next, selector, options, context, compileToken) { var _a; const { name, data } = selector; if (Array.isArray(data)) { if (!(name in subselects)) { throw new Error(`Unknown pseudo-class :${name}(${data})`); } return subselects[name](next, data, options, context, compileToken); } const userPseudo = (_a = options.pseudos) === null || _a === void 0 ? void 0 : _a[name]; const stringPseudo = typeof userPseudo === "string" ? userPseudo : aliases[name]; if (typeof stringPseudo === "string") { if (data != null) { throw new Error(`Pseudo ${name} doesn't have any arguments`); } // The alias has to be parsed here, to make sure options are respected. const alias = parse(stringPseudo); return subselects["is"](next, alias, options, context, compileToken); } if (typeof userPseudo === "function") { verifyPseudoArgs(userPseudo, name, data, 1); return (elem) => userPseudo(elem, data) && next(elem); } if (name in filters) { return filters[name](next, data, options, context); } if (name in pseudos) { const pseudo = pseudos[name]; verifyPseudoArgs(pseudo, name, data, 2); return (elem) => pseudo(elem, options, data) && next(elem); } throw new Error(`Unknown pseudo-class :${name}`); } //# sourceMappingURL=index.js.map