|
|
/*! * Bootstrap selector-engine.js v5.1.3 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.SelectorEngine = factory()); })(this, (function () { 'use strict';
/** * -------------------------------------------------------------------------- * Bootstrap (v5.1.3): util/index.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* -------------------------------------------------------------------------- */
const isElement = obj => { if (!obj || typeof obj !== 'object') { return false; }
if (typeof obj.jquery !== 'undefined') { obj = obj[0]; }
return typeof obj.nodeType !== 'undefined'; };
const isVisible = element => { if (!isElement(element) || element.getClientRects().length === 0) { return false; }
return getComputedStyle(element).getPropertyValue('visibility') === 'visible'; };
const isDisabled = element => { if (!element || element.nodeType !== Node.ELEMENT_NODE) { return true; }
if (element.classList.contains('disabled')) { return true; }
if (typeof element.disabled !== 'undefined') { return element.disabled; }
return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'; };
/** * -------------------------------------------------------------------------- * Bootstrap (v5.1.3): dom/selector-engine.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* -------------------------------------------------------------------------- */ const NODE_TEXT = 3; const SelectorEngine = { find(selector, element = document.documentElement) { return [].concat(...Element.prototype.querySelectorAll.call(element, selector)); },
findOne(selector, element = document.documentElement) { return Element.prototype.querySelector.call(element, selector); },
children(element, selector) { return [].concat(...element.children).filter(child => child.matches(selector)); },
parents(element, selector) { const parents = []; let ancestor = element.parentNode;
while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) { if (ancestor.matches(selector)) { parents.push(ancestor); }
ancestor = ancestor.parentNode; }
return parents; },
prev(element, selector) { let previous = element.previousElementSibling;
while (previous) { if (previous.matches(selector)) { return [previous]; }
previous = previous.previousElementSibling; }
return []; },
next(element, selector) { let next = element.nextElementSibling;
while (next) { if (next.matches(selector)) { return [next]; }
next = next.nextElementSibling; }
return []; },
focusableChildren(element) { const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable="true"]'].map(selector => `${selector}:not([tabindex^="-"])`).join(', '); return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el)); }
};
return SelectorEngine;
})); //# sourceMappingURL=selector-engine.js.map
|