simmerjs
Version:
A pure Javascript reverse CSS selector engine which calculates a DOM element's unique CSS selector on the current page.
44 lines (34 loc) • 1.42 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = function (element, config, query, onError) {
var selectorMaxLength = config.selectorMaxLength;
return function (state) {
var validated = false;
var selector = void 0;
var results = void 0;
for (var depth = 1; depth <= state.stack.length && !validated; depth += 1) {
// use selector to query an element and see if it is a one-to-one selection
selector = (0, _convertSelectorStateIntoCSSSelector2.default)(state, depth).trim();
if (!(selector && selector.length)) {
// too short
return false;
}
if (selectorMaxLength && selector.length > selectorMaxLength) {
// the selector is too long
return false;
}
results = query(selector, onError);
validated = results.length === 1 && (element.el !== undefined ? results[0] === element.el : results[0] === element);
// we have to mark how deep the valdiation passed at
if (validated) {
state.verificationDepth = depth;
}
}
return validated;
};
};
var _convertSelectorStateIntoCSSSelector = require('./convertSelectorStateIntoCSSSelector');
var _convertSelectorStateIntoCSSSelector2 = _interopRequireDefault(_convertSelectorStateIntoCSSSelector);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
;