UNPKG

unique-selector

Version:

Given a DOM node, return a unique CSS selector matching only that element

47 lines (41 loc) 1.09 kB
'use strict'; 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; }); }