UNPKG

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
'use strict'; 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 }; }