@mariusandra/simmerjs
Version:
A pure Javascript reverse CSS selector engine which calculates a DOM element's unique CSS selector on the current page.
30 lines (26 loc) • 858 B
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = _default;
var _validationHelpers = require("./validationHelpers");
/**
/**
* Inspect the elements' Tag names and add them to the calculates CSS selector
* @param {array} hierarchy. The hierarchy of elements
* @param {object} state. The current calculated CSS selector
*/
function _default(hierarchy, state) {
return hierarchy.reduce((selectorState, currentElem, index) => {
;
[currentElem.el.nodeName].filter(_validationHelpers.tagName).forEach(tagName => {
selectorState.stack[index].splice(0, 0, tagName); // custom elements get a few more points
if (tagName.includes('-')) {
selectorState.specificity += 30;
} else {
selectorState.specificity += 10;
}
});
return selectorState;
}, state);
}