| | "use strict"; |
| | var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { |
| | if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { |
| | if (ar || !(i in from)) { |
| | if (!ar) ar = Array.prototype.slice.call(from, 0, i); |
| | ar[i] = from[i]; |
| | } |
| | } |
| | return to.concat(ar || Array.prototype.slice.call(from)); |
| | }; |
| | var __importDefault = (this && this.__importDefault) || function (mod) { |
| | return (mod && mod.__esModule) ? mod : { "default": mod }; |
| | }; |
| | Object.defineProperty(exports, "__esModule", { value: true }); |
| | exports.subselects = exports.getNextSiblings = exports.ensureIsTag = exports.PLACEHOLDER_ELEMENT = void 0; |
| | var boolbase_1 = __importDefault(require("boolbase")); |
| | var sort_js_1 = require("../sort.js"); |
| | |
| | exports.PLACEHOLDER_ELEMENT = {}; |
| | function ensureIsTag(next, adapter) { |
| | if (next === boolbase_1.default.falseFunc) |
| | return boolbase_1.default.falseFunc; |
| | return function (elem) { return adapter.isTag(elem) && next(elem); }; |
| | } |
| | exports.ensureIsTag = ensureIsTag; |
| | function getNextSiblings(elem, adapter) { |
| | var siblings = adapter.getSiblings(elem); |
| | if (siblings.length <= 1) |
| | return []; |
| | var elemIndex = siblings.indexOf(elem); |
| | if (elemIndex < 0 || elemIndex === siblings.length - 1) |
| | return []; |
| | return siblings.slice(elemIndex + 1).filter(adapter.isTag); |
| | } |
| | exports.getNextSiblings = getNextSiblings; |
| | function copyOptions(options) { |
| | |
| | return { |
| | xmlMode: !!options.xmlMode, |
| | lowerCaseAttributeNames: !!options.lowerCaseAttributeNames, |
| | lowerCaseTags: !!options.lowerCaseTags, |
| | quirksMode: !!options.quirksMode, |
| | cacheResults: !!options.cacheResults, |
| | pseudos: options.pseudos, |
| | adapter: options.adapter, |
| | equals: options.equals, |
| | }; |
| | } |
| | var is = function (next, token, options, context, compileToken) { |
| | var func = compileToken(token, copyOptions(options), context); |
| | return func === boolbase_1.default.trueFunc |
| | ? next |
| | : func === boolbase_1.default.falseFunc |
| | ? boolbase_1.default.falseFunc |
| | : function (elem) { return func(elem) && next(elem); }; |
| | }; |
| | |
| | |
| | |
| | |
| | |
| | exports.subselects = { |
| | is: is, |
| | |
| | |
| | |
| | matches: is, |
| | where: is, |
| | not: function (next, token, options, context, compileToken) { |
| | var func = compileToken(token, copyOptions(options), context); |
| | return func === boolbase_1.default.falseFunc |
| | ? next |
| | : func === boolbase_1.default.trueFunc |
| | ? boolbase_1.default.falseFunc |
| | : function (elem) { return !func(elem) && next(elem); }; |
| | }, |
| | has: function (next, subselect, options, _context, compileToken) { |
| | var adapter = options.adapter; |
| | var opts = copyOptions(options); |
| | opts.relativeSelector = true; |
| | var context = subselect.some(function (s) { return s.some(sort_js_1.isTraversal); }) |
| | ? |
| | [exports.PLACEHOLDER_ELEMENT] |
| | : undefined; |
| | var compiled = compileToken(subselect, opts, context); |
| | if (compiled === boolbase_1.default.falseFunc) |
| | return boolbase_1.default.falseFunc; |
| | var hasElement = ensureIsTag(compiled, adapter); |
| | |
| | if (context && compiled !== boolbase_1.default.trueFunc) { |
| | |
| | |
| | |
| | |
| | var _a = compiled.shouldTestNextSiblings, shouldTestNextSiblings_1 = _a === void 0 ? false : _a; |
| | return function (elem) { |
| | if (!next(elem)) |
| | return false; |
| | context[0] = elem; |
| | var childs = adapter.getChildren(elem); |
| | var nextElements = shouldTestNextSiblings_1 |
| | ? __spreadArray(__spreadArray([], childs, true), getNextSiblings(elem, adapter), true) : childs; |
| | return adapter.existsOne(hasElement, nextElements); |
| | }; |
| | } |
| | return function (elem) { |
| | return next(elem) && |
| | adapter.existsOne(hasElement, adapter.getChildren(elem)); |
| | }; |
| | }, |
| | }; |
| | |