unique-selector
Version:
Given a DOM node, return a unique CSS selector matching only that element
47 lines (41 loc) • 1.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getClasses = getClasses;
exports.getClassSelectors = getClassSelectors;
/**
* Get class names for an element
*
* @pararm { Element } el
* @return { Array }
*/
function getClasses(el) {
if (!el.hasAttribute('class')) {
return [];
}
try {
var classList = Array.prototype.slice.call(el.classList);
// return only the valid CSS selectors based on RegEx
return classList.filter(function (item) {
return !/^[a-z_-][a-z\d_-]*$/i.test(item) ? null : item;
});
} catch (e) {
var className = el.getAttribute('class');
// remove duplicate and leading/trailing whitespaces
className = className.trim().replace(/\s+/g, ' ');
// split into separate classnames
return className.split(' ');
}
}
/**
* Returns the Class selectors of the element
* @param { Object } element
* @return { Array }
*/
function getClassSelectors(el) {
var classList = getClasses(el).filter(Boolean);
return classList.map(function (cl) {
return '.' + cl;
});
}