"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const element_analysis_1 = require("@opticss/element-analysis");
const util_1 = require("@opticss/util");
const SelectorParser = require("postcss-selector-parser");
const Match_1 = require("./Match");
const Matcher_1 = require("./Matcher");
function isTag(tag) {
Eif (tag) {
return tag.type === SelectorParser.TAG;
}
else {
return false;
}
}
exports.isTag = isTag;
class TagMatcher extends Matcher_1.Matcher {
constructor() { super(); }
static get instance() {
return TagMatcher._instance;
}
matchSelectorNode(tag, node) {
Eif (isTag(node)) {
if (element_analysis_1.isConstant(tag.value)) {
return Match_1.boolToMatch(node.value === tag.value.constant);
}
else if (element_analysis_1.isTagChoice(tag.value)) {
return Match_1.boolToMatch(tag.value.oneOf.some(v => v === node.value));
}
else Eif (element_analysis_1.isUnknown(tag.value)) {
return Match_1.Match.maybe;
}
else {
return util_1.assertNever(node);
}
}
else {
return Match_1.Match.pass;
}
}
matchSelectorComponent(tag, selector) {
let tagNode = this.getTag(selector);
if (tagNode) {
return this.matchSelectorNode(tag, tagNode);
}
else {
return Match_1.Match.pass;
}
}
getTag(selector) {
let node = selector.nodes.find((node) => isTag(node));
if (node) {
return node;
}
else {
return undefined;
}
}
}
TagMatcher._instance = new TagMatcher();
exports.TagMatcher = TagMatcher;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFnTWF0Y2hlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9NYXRjaC9UYWdNYXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsZ0VBS21DO0FBQ25DLHdDQUE0QztBQUM1QywwREFBMEQ7QUFFMUQsbUNBQTZDO0FBQzdDLHVDQUFzRDtBQUV0RCxlQUFzQixHQUFpQztJQUNyRCxJQUFJLEdBQUcsRUFBRTtRQUNQLE9BQU8sR0FBRyxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsR0FBRyxDQUFDO0tBQ3hDO1NBQU07UUFDTCxPQUFPLEtBQUssQ0FBQztLQUNkO0FBQ0gsQ0FBQztBQU5ELHNCQU1DO0FBRUQsZ0JBQXdCLFNBQVEsaUJBQVk7SUFDMUMsZ0JBQXdCLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUUzQixNQUFNLEtBQUssUUFBUTtRQUN4QixPQUFPLFVBQVUsQ0FBQyxTQUFTLENBQUM7SUFDOUIsQ0FBQztJQUNELGlCQUFpQixDQUFDLEdBQVEsRUFBRSxJQUF5QjtRQUNuRCxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNmLElBQUksNkJBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3pCLE9BQU8sbUJBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDdkQ7aUJBQU0sSUFBSSw4QkFBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDakMsT0FBTyxtQkFBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUNqRTtpQkFBTSxJQUFJLDRCQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUMvQixPQUFPLGFBQUssQ0FBQyxLQUFLLENBQUM7YUFDcEI7aUJBQU07Z0JBQ0wsT0FBTyxrQkFBVyxDQUFRLElBQUksQ0FBQyxDQUFDO2FBQ2pDO1NBQ0Y7YUFBTTtZQUNMLE9BQU8sYUFBSyxDQUFDLElBQUksQ0FBQztTQUNuQjtJQUNILENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxHQUFRLEVBQUUsUUFBMEI7UUFDekQsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwQyxJQUFJLE9BQU8sRUFBRTtZQUNYLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUM3QzthQUFNO1lBQ0wsT0FBTyxhQUFLLENBQUMsSUFBSSxDQUFDO1NBQ25CO0lBQ0gsQ0FBQztJQUVPLE1BQU0sQ0FBQyxRQUEwQjtRQUN2QyxJQUFJLElBQUksR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDdEQsSUFBSSxJQUFJLEVBQUU7WUFDUixPQUFPLElBQTBCLENBQUM7U0FDbkM7YUFBTTtZQUNMLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQzs7QUFwQ2Msb0JBQVMsR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO0FBRjlDLGdDQXdDQyJ9 |