mostly-dom
Version:
A virtual-dom for TypeScript
21 lines • 1.12 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
var matchAttribute_1 = require("./matchAttribute");
var matchBasicCssSelector_1 = require("./matchBasicCssSelector");
var matchPsuedoSelector_1 = require("./matchPsuedoSelector");
var EMPTY = Object.freeze({});
function matchesSelector(cssSelector, vNode) {
cssSelector = cssSelector.trim();
// if working with an ElementVNode return use native implementation
if (vNode.element && vNode.element.matches)
return vNode.element.matches(cssSelector);
if (cssSelector[0] === '[' && cssSelector[cssSelector.length - 1] === ']')
return matchAttribute_1.matchAttribute(cssSelector.slice(1, -1), vNode.props.attrs || EMPTY);
if (cssSelector.indexOf(':') > -1)
return matchPsuedoSelector_1.matchPsuedoSelector(cssSelector, vNode);
if (cssSelector.indexOf(' ') > -1)
throw new Error('Basic CSS selectors can not contain spaces');
return matchBasicCssSelector_1.matchBasicCssSelector(cssSelector, vNode);
}
exports.matchesSelector = matchesSelector;
//# sourceMappingURL=matchesSelector.js.map
;