UNPKG

@laylazi/bootstrap-rtl

Version:

First and most accurate RTL edition of Bootstrap 4.x, the most popular front-end framework for developing responsive, mobile first projects on the web.

1,557 lines (1,258 loc) 139 kB
/*! * Bootstrap v4.6.2 (https://bootstrapper.ir/) * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) and Arash Laylazi (https://github.com/PerseusTheGreat) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery'), require('popper.js')) : typeof define === 'function' && define.amd ? define(['exports', 'jquery', 'popper.js'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.bootstrap = {}, global.jQuery, global.Popper)); })(this, (function (exports, $, Popper) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var $__default = /*#__PURE__*/_interopDefaultLegacy($); var Popper__default = /*#__PURE__*/_interopDefaultLegacy(Popper); /** * -------------------------------------------------------------------------- * Bootstrap (v4.6.2): rtl.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * Document Direction Detector * Used in Carousel.js to correct touch experience * -------------------------------------------------------------------------- */ var documentDirectionIsRtl = false; var htmlElement = document.getElementsByTagName('html')[0]; var htmlElementStyleDir = window.getComputedStyle(htmlElement).direction || ''; var htmlElementAttributeDir = htmlElement.getAttribute('dir') || ''; var documentDirection = htmlElementStyleDir || htmlElementAttributeDir; if (documentDirection && documentDirection.trim().toLowerCase() === 'rtl') { documentDirectionIsRtl = true; } var Rtl = { documentDirectionIsRtl: documentDirectionIsRtl }; function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } /** * -------------------------------------------------------------------------- * Bootstrap (v4.6.2): util.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ /** * Private TransitionEnd Helpers */ var TRANSITION_END = 'transitionend'; var MAX_UID = 1000000; var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp) function toType(obj) { if (obj === null || typeof obj === 'undefined') { return "" + obj; } return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase(); } function getSpecialTransitionEndEvent() { return { bindType: TRANSITION_END, delegateType: TRANSITION_END, handle: function handle(event) { if ($__default["default"](event.target).is(this)) { return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params } return undefined; } }; } function transitionEndEmulator(duration) { var _this = this; var called = false; $__default["default"](this).one(Util.TRANSITION_END, function () { called = true; }); setTimeout(function () { if (!called) { Util.triggerTransitionEnd(_this); } }, duration); return this; } function setTransitionEndSupport() { $__default["default"].fn.emulateTransitionEnd = transitionEndEmulator; $__default["default"].event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent(); } /** * Public Util API */ var Util = { TRANSITION_END: 'bsTransitionEnd', getUID: function getUID(prefix) { do { // eslint-disable-next-line no-bitwise prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here } while (document.getElementById(prefix)); return prefix; }, getSelectorFromElement: function getSelectorFromElement(element) { var selector = element.getAttribute('data-target'); if (!selector || selector === '#') { var hrefAttr = element.getAttribute('href'); selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : ''; } try { return document.querySelector(selector) ? selector : null; } catch (_) { return null; } }, getTransitionDurationFromElement: function getTransitionDurationFromElement(element) { if (!element) { return 0; } // Get transition-duration of the element var transitionDuration = $__default["default"](element).css('transition-duration'); var transitionDelay = $__default["default"](element).css('transition-delay'); var floatTransitionDuration = parseFloat(transitionDuration); var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found if (!floatTransitionDuration && !floatTransitionDelay) { return 0; } // If multiple durations are defined, take the first transitionDuration = transitionDuration.split(',')[0]; transitionDelay = transitionDelay.split(',')[0]; return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER; }, reflow: function reflow(element) { return element.offsetHeight; }, triggerTransitionEnd: function triggerTransitionEnd(element) { $__default["default"](element).trigger(TRANSITION_END); }, supportsTransitionEnd: function supportsTransitionEnd() { return Boolean(TRANSITION_END); }, isElement: function isElement(obj) { return (obj[0] || obj).nodeType; }, typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) { for (var property in configTypes) { if (Object.prototype.hasOwnProperty.call(configTypes, property)) { var expectedTypes = configTypes[property]; var value = config[property]; var valueType = value && Util.isElement(value) ? 'element' : toType(value); if (!new RegExp(expectedTypes).test(valueType)) { throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\".")); } } } }, findShadowRoot: function findShadowRoot(element) { if (!document.documentElement.attachShadow) { return null; } // Can find the shadow root otherwise it'll return the document if (typeof element.getRootNode === 'function') { var root = element.getRootNode(); return root instanceof ShadowRoot ? root : null; } if (element instanceof ShadowRoot) { return element; } // when we don't find a shadow root if (!element.parentNode) { return null; } return Util.findShadowRoot(element.parentNode); }, jQueryDetection: function jQueryDetection() { if (typeof $__default["default"] === 'undefined') { throw new TypeError('Bootstrap\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\'s JavaScript.'); } var version = $__default["default"].fn.jquery.split(' ')[0].split('.'); var minMajor = 1; var ltMajor = 2; var minMinor = 9; var minPatch = 1; var maxMajor = 4; if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) { throw new Error('Bootstrap\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0'); } } }; Util.jQueryDetection(); setTransitionEndSupport(); /** * Constants */ var NAME$a = 'alert'; var VERSION$a = '4.6.2'; var DATA_KEY$a = 'bs.alert'; var EVENT_KEY$a = "." + DATA_KEY$a; var DATA_API_KEY$7 = '.data-api'; var JQUERY_NO_CONFLICT$a = $__default["default"].fn[NAME$a]; var CLASS_NAME_ALERT = 'alert'; var CLASS_NAME_FADE$5 = 'fade'; var CLASS_NAME_SHOW$7 = 'show'; var EVENT_CLOSE = "close" + EVENT_KEY$a; var EVENT_CLOSED = "closed" + EVENT_KEY$a; var EVENT_CLICK_DATA_API$6 = "click" + EVENT_KEY$a + DATA_API_KEY$7; var SELECTOR_DISMISS = '[data-dismiss="alert"]'; /** * Class definition */ var Alert = /*#__PURE__*/function () { function Alert(element) { this._element = element; } // Getters var _proto = Alert.prototype; // Public _proto.close = function close(element) { var rootElement = this._element; if (element) { rootElement = this._getRootElement(element); } var customEvent = this._triggerCloseEvent(rootElement); if (customEvent.isDefaultPrevented()) { return; } this._removeElement(rootElement); }; _proto.dispose = function dispose() { $__default["default"].removeData(this._element, DATA_KEY$a); this._element = null; } // Private ; _proto._getRootElement = function _getRootElement(element) { var selector = Util.getSelectorFromElement(element); var parent = false; if (selector) { parent = document.querySelector(selector); } if (!parent) { parent = $__default["default"](element).closest("." + CLASS_NAME_ALERT)[0]; } return parent; }; _proto._triggerCloseEvent = function _triggerCloseEvent(element) { var closeEvent = $__default["default"].Event(EVENT_CLOSE); $__default["default"](element).trigger(closeEvent); return closeEvent; }; _proto._removeElement = function _removeElement(element) { var _this = this; $__default["default"](element).removeClass(CLASS_NAME_SHOW$7); if (!$__default["default"](element).hasClass(CLASS_NAME_FADE$5)) { this._destroyElement(element); return; } var transitionDuration = Util.getTransitionDurationFromElement(element); $__default["default"](element).one(Util.TRANSITION_END, function (event) { return _this._destroyElement(element, event); }).emulateTransitionEnd(transitionDuration); }; _proto._destroyElement = function _destroyElement(element) { $__default["default"](element).detach().trigger(EVENT_CLOSED).remove(); } // Static ; Alert._jQueryInterface = function _jQueryInterface(config) { return this.each(function () { var $element = $__default["default"](this); var data = $element.data(DATA_KEY$a); if (!data) { data = new Alert(this); $element.data(DATA_KEY$a, data); } if (config === 'close') { data[config](this); } }); }; Alert._handleDismiss = function _handleDismiss(alertInstance) { return function (event) { if (event) { event.preventDefault(); } alertInstance.close(this); }; }; _createClass(Alert, null, [{ key: "VERSION", get: function get() { return VERSION$a; } }]); return Alert; }(); /** * Data API implementation */ $__default["default"](document).on(EVENT_CLICK_DATA_API$6, SELECTOR_DISMISS, Alert._handleDismiss(new Alert())); /** * jQuery */ $__default["default"].fn[NAME$a] = Alert._jQueryInterface; $__default["default"].fn[NAME$a].Constructor = Alert; $__default["default"].fn[NAME$a].noConflict = function () { $__default["default"].fn[NAME$a] = JQUERY_NO_CONFLICT$a; return Alert._jQueryInterface; }; /** * Constants */ var NAME$9 = 'button'; var VERSION$9 = '4.6.2'; var DATA_KEY$9 = 'bs.button'; var EVENT_KEY$9 = "." + DATA_KEY$9; var DATA_API_KEY$6 = '.data-api'; var JQUERY_NO_CONFLICT$9 = $__default["default"].fn[NAME$9]; var CLASS_NAME_ACTIVE$3 = 'active'; var CLASS_NAME_BUTTON = 'btn'; var CLASS_NAME_FOCUS = 'focus'; var EVENT_CLICK_DATA_API$5 = "click" + EVENT_KEY$9 + DATA_API_KEY$6; var EVENT_FOCUS_BLUR_DATA_API = "focus" + EVENT_KEY$9 + DATA_API_KEY$6 + " " + ("blur" + EVENT_KEY$9 + DATA_API_KEY$6); var EVENT_LOAD_DATA_API$2 = "load" + EVENT_KEY$9 + DATA_API_KEY$6; var SELECTOR_DATA_TOGGLE_CARROT = '[data-toggle^="button"]'; var SELECTOR_DATA_TOGGLES = '[data-toggle="buttons"]'; var SELECTOR_DATA_TOGGLE$4 = '[data-toggle="button"]'; var SELECTOR_DATA_TOGGLES_BUTTONS = '[data-toggle="buttons"] .btn'; var SELECTOR_INPUT = 'input:not([type="hidden"])'; var SELECTOR_ACTIVE$2 = '.active'; var SELECTOR_BUTTON = '.btn'; /** * Class definition */ var Button = /*#__PURE__*/function () { function Button(element) { this._element = element; this.shouldAvoidTriggerChange = false; } // Getters var _proto = Button.prototype; // Public _proto.toggle = function toggle() { var triggerChangeEvent = true; var addAriaPressed = true; var rootElement = $__default["default"](this._element).closest(SELECTOR_DATA_TOGGLES)[0]; if (rootElement) { var input = this._element.querySelector(SELECTOR_INPUT); if (input) { if (input.type === 'radio') { if (input.checked && this._element.classList.contains(CLASS_NAME_ACTIVE$3)) { triggerChangeEvent = false; } else { var activeElement = rootElement.querySelector(SELECTOR_ACTIVE$2); if (activeElement) { $__default["default"](activeElement).removeClass(CLASS_NAME_ACTIVE$3); } } } if (triggerChangeEvent) { // if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input if (input.type === 'checkbox' || input.type === 'radio') { input.checked = !this._element.classList.contains(CLASS_NAME_ACTIVE$3); } if (!this.shouldAvoidTriggerChange) { $__default["default"](input).trigger('change'); } } input.focus(); addAriaPressed = false; } } if (!(this._element.hasAttribute('disabled') || this._element.classList.contains('disabled'))) { if (addAriaPressed) { this._element.setAttribute('aria-pressed', !this._element.classList.contains(CLASS_NAME_ACTIVE$3)); } if (triggerChangeEvent) { $__default["default"](this._element).toggleClass(CLASS_NAME_ACTIVE$3); } } }; _proto.dispose = function dispose() { $__default["default"].removeData(this._element, DATA_KEY$9); this._element = null; } // Static ; Button._jQueryInterface = function _jQueryInterface(config, avoidTriggerChange) { return this.each(function () { var $element = $__default["default"](this); var data = $element.data(DATA_KEY$9); if (!data) { data = new Button(this); $element.data(DATA_KEY$9, data); } data.shouldAvoidTriggerChange = avoidTriggerChange; if (config === 'toggle') { data[config](); } }); }; _createClass(Button, null, [{ key: "VERSION", get: function get() { return VERSION$9; } }]); return Button; }(); /** * Data API implementation */ $__default["default"](document).on(EVENT_CLICK_DATA_API$5, SELECTOR_DATA_TOGGLE_CARROT, function (event) { var button = event.target; var initialButton = button; if (!$__default["default"](button).hasClass(CLASS_NAME_BUTTON)) { button = $__default["default"](button).closest(SELECTOR_BUTTON)[0]; } if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) { event.preventDefault(); // work around Firefox bug #1540995 } else { var inputBtn = button.querySelector(SELECTOR_INPUT); if (inputBtn && (inputBtn.hasAttribute('disabled') || inputBtn.classList.contains('disabled'))) { event.preventDefault(); // work around Firefox bug #1540995 return; } if (initialButton.tagName === 'INPUT' || button.tagName !== 'LABEL') { Button._jQueryInterface.call($__default["default"](button), 'toggle', initialButton.tagName === 'INPUT'); } } }).on(EVENT_FOCUS_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function (event) { var button = $__default["default"](event.target).closest(SELECTOR_BUTTON)[0]; $__default["default"](button).toggleClass(CLASS_NAME_FOCUS, /^focus(in)?$/.test(event.type)); }); $__default["default"](window).on(EVENT_LOAD_DATA_API$2, function () { // ensure correct active class is set to match the controls' actual values/states // find all checkboxes/readio buttons inside data-toggle groups var buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS)); for (var i = 0, len = buttons.length; i < len; i++) { var button = buttons[i]; var input = button.querySelector(SELECTOR_INPUT); if (input.checked || input.hasAttribute('checked')) { button.classList.add(CLASS_NAME_ACTIVE$3); } else { button.classList.remove(CLASS_NAME_ACTIVE$3); } } // find all button toggles buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$4)); for (var _i = 0, _len = buttons.length; _i < _len; _i++) { var _button = buttons[_i]; if (_button.getAttribute('aria-pressed') === 'true') { _button.classList.add(CLASS_NAME_ACTIVE$3); } else { _button.classList.remove(CLASS_NAME_ACTIVE$3); } } }); /** * jQuery */ $__default["default"].fn[NAME$9] = Button._jQueryInterface; $__default["default"].fn[NAME$9].Constructor = Button; $__default["default"].fn[NAME$9].noConflict = function () { $__default["default"].fn[NAME$9] = JQUERY_NO_CONFLICT$9; return Button._jQueryInterface; }; /** * Constants */ var NAME$8 = 'carousel'; var VERSION$8 = '4.6.2'; var DATA_KEY$8 = 'bs.carousel'; var EVENT_KEY$8 = "." + DATA_KEY$8; var DATA_API_KEY$5 = '.data-api'; var JQUERY_NO_CONFLICT$8 = $__default["default"].fn[NAME$8]; var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch var SWIPE_THRESHOLD = 40; var CLASS_NAME_CAROUSEL = 'carousel'; var CLASS_NAME_ACTIVE$2 = 'active'; var CLASS_NAME_SLIDE = 'slide'; var CLASS_NAME_RIGHT = 'carousel-item-right'; var CLASS_NAME_LEFT = 'carousel-item-left'; var CLASS_NAME_NEXT = 'carousel-item-next'; var CLASS_NAME_PREV = 'carousel-item-prev'; var CLASS_NAME_POINTER_EVENT = 'pointer-event'; var DIRECTION_NEXT = 'next'; var DIRECTION_PREV = 'prev'; var DIRECTION_LEFT = 'left'; var DIRECTION_RIGHT = 'right'; var EVENT_SLIDE = "slide" + EVENT_KEY$8; var EVENT_SLID = "slid" + EVENT_KEY$8; var EVENT_KEYDOWN = "keydown" + EVENT_KEY$8; var EVENT_MOUSEENTER = "mouseenter" + EVENT_KEY$8; var EVENT_MOUSELEAVE = "mouseleave" + EVENT_KEY$8; var EVENT_TOUCHSTART = "touchstart" + EVENT_KEY$8; var EVENT_TOUCHMOVE = "touchmove" + EVENT_KEY$8; var EVENT_TOUCHEND = "touchend" + EVENT_KEY$8; var EVENT_POINTERDOWN = "pointerdown" + EVENT_KEY$8; var EVENT_POINTERUP = "pointerup" + EVENT_KEY$8; var EVENT_DRAG_START = "dragstart" + EVENT_KEY$8; var EVENT_LOAD_DATA_API$1 = "load" + EVENT_KEY$8 + DATA_API_KEY$5; var EVENT_CLICK_DATA_API$4 = "click" + EVENT_KEY$8 + DATA_API_KEY$5; var SELECTOR_ACTIVE$1 = '.active'; var SELECTOR_ACTIVE_ITEM = '.active.carousel-item'; var SELECTOR_ITEM = '.carousel-item'; var SELECTOR_ITEM_IMG = '.carousel-item img'; var SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'; var SELECTOR_INDICATORS = '.carousel-indicators'; var SELECTOR_DATA_SLIDE = '[data-slide], [data-slide-to]'; var SELECTOR_DATA_RIDE = '[data-ride="carousel"]'; var Default$7 = { interval: 5000, keyboard: true, slide: false, pause: 'hover', wrap: true, touch: true }; var DefaultType$7 = { interval: '(number|boolean)', keyboard: 'boolean', slide: '(boolean|string)', pause: '(string|boolean)', wrap: 'boolean', touch: 'boolean' }; var PointerType = { TOUCH: 'touch', PEN: 'pen' }; /** * Class definition */ var Carousel = /*#__PURE__*/function () { function Carousel(element, config) { this._items = null; this._interval = null; this._activeElement = null; this._isPaused = false; this._isSliding = false; this.touchTimeout = null; this.touchStartX = 0; this.touchDeltaX = 0; this._config = this._getConfig(config); this._element = element; this._indicatorsElement = this._element.querySelector(SELECTOR_INDICATORS); this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0; this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent); this._addEventListeners(); } // Getters var _proto = Carousel.prototype; // Public _proto.next = function next() { if (!this._isSliding) { this._slide(DIRECTION_NEXT); } }; _proto.nextWhenVisible = function nextWhenVisible() { var $element = $__default["default"](this._element); // Don't call next when the page isn't visible // or the carousel or its parent isn't visible if (!document.hidden && $element.is(':visible') && $element.css('visibility') !== 'hidden') { this.next(); } }; _proto.prev = function prev() { if (!this._isSliding) { this._slide(DIRECTION_PREV); } }; _proto.pause = function pause(event) { if (!event) { this._isPaused = true; } if (this._element.querySelector(SELECTOR_NEXT_PREV)) { Util.triggerTransitionEnd(this._element); this.cycle(true); } clearInterval(this._interval); this._interval = null; }; _proto.cycle = function cycle(event) { if (!event) { this._isPaused = false; } if (this._interval) { clearInterval(this._interval); this._interval = null; } if (this._config.interval && !this._isPaused) { this._updateInterval(); this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval); } }; _proto.to = function to(index) { var _this = this; this._activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM); var activeIndex = this._getItemIndex(this._activeElement); if (index > this._items.length - 1 || index < 0) { return; } if (this._isSliding) { $__default["default"](this._element).one(EVENT_SLID, function () { return _this.to(index); }); return; } if (activeIndex === index) { this.pause(); this.cycle(); return; } var direction = index > activeIndex ? DIRECTION_NEXT : DIRECTION_PREV; this._slide(direction, this._items[index]); }; _proto.dispose = function dispose() { $__default["default"](this._element).off(EVENT_KEY$8); $__default["default"].removeData(this._element, DATA_KEY$8); this._items = null; this._config = null; this._element = null; this._interval = null; this._isPaused = null; this._isSliding = null; this._activeElement = null; this._indicatorsElement = null; } // Private ; _proto._getConfig = function _getConfig(config) { config = _extends({}, Default$7, config); Util.typeCheckConfig(NAME$8, config, DefaultType$7); return config; }; _proto._handleSwipe = function _handleSwipe() { var absDeltax = Math.abs(this.touchDeltaX); if (absDeltax <= SWIPE_THRESHOLD) { return; } var direction = absDeltax / this.touchDeltaX; this.touchDeltaX = 0; // #region RTL touch experience patch /* // swipe left if (direction > 0) { this.prev() } // swipe right if (direction < 0) { this.next() } */ // swipe left if (direction > 0) { if (Rtl.documentDirectionIsRtl) { this.next(); } else { this.prev(); } } // swipe right if (direction < 0) { if (Rtl.documentDirectionIsRtl) { this.prev(); } else { this.next(); } } // #endregion RTL touch experience patch }; _proto._addEventListeners = function _addEventListeners() { var _this2 = this; if (this._config.keyboard) { $__default["default"](this._element).on(EVENT_KEYDOWN, function (event) { return _this2._keydown(event); }); } if (this._config.pause === 'hover') { $__default["default"](this._element).on(EVENT_MOUSEENTER, function (event) { return _this2.pause(event); }).on(EVENT_MOUSELEAVE, function (event) { return _this2.cycle(event); }); } if (this._config.touch) { this._addTouchEventListeners(); } }; _proto._addTouchEventListeners = function _addTouchEventListeners() { var _this3 = this; if (!this._touchSupported) { return; } var start = function start(event) { if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) { _this3.touchStartX = event.originalEvent.clientX; } else if (!_this3._pointerEvent) { _this3.touchStartX = event.originalEvent.touches[0].clientX; } }; var move = function move(event) { // ensure swiping with one touch and not pinching _this3.touchDeltaX = event.originalEvent.touches && event.originalEvent.touches.length > 1 ? 0 : event.originalEvent.touches[0].clientX - _this3.touchStartX; }; var end = function end(event) { if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) { _this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX; } _this3._handleSwipe(); if (_this3._config.pause === 'hover') { // If it's a touch-enabled device, mouseenter/leave are fired as // part of the mouse compatibility events on first tap - the carousel // would stop cycling until user tapped out of it; // here, we listen for touchend, explicitly pause the carousel // (as if it's the second time we tap on it, mouseenter compat event // is NOT fired) and after a timeout (to allow for mouse compatibility // events to fire) we explicitly restart cycling _this3.pause(); if (_this3.touchTimeout) { clearTimeout(_this3.touchTimeout); } _this3.touchTimeout = setTimeout(function (event) { return _this3.cycle(event); }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval); } }; $__default["default"](this._element.querySelectorAll(SELECTOR_ITEM_IMG)).on(EVENT_DRAG_START, function (e) { return e.preventDefault(); }); if (this._pointerEvent) { $__default["default"](this._element).on(EVENT_POINTERDOWN, function (event) { return start(event); }); $__default["default"](this._element).on(EVENT_POINTERUP, function (event) { return end(event); }); this._element.classList.add(CLASS_NAME_POINTER_EVENT); } else { $__default["default"](this._element).on(EVENT_TOUCHSTART, function (event) { return start(event); }); $__default["default"](this._element).on(EVENT_TOUCHMOVE, function (event) { return move(event); }); $__default["default"](this._element).on(EVENT_TOUCHEND, function (event) { return end(event); }); } }; _proto._keydown = function _keydown(event) { if (/input|textarea/i.test(event.target.tagName)) { return; } switch (event.which) { case ARROW_LEFT_KEYCODE: event.preventDefault(); this.prev(); break; case ARROW_RIGHT_KEYCODE: event.preventDefault(); this.next(); break; } }; _proto._getItemIndex = function _getItemIndex(element) { this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM)) : []; return this._items.indexOf(element); }; _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) { var isNextDirection = direction === DIRECTION_NEXT; var isPrevDirection = direction === DIRECTION_PREV; var activeIndex = this._getItemIndex(activeElement); var lastItemIndex = this._items.length - 1; var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex; if (isGoingToWrap && !this._config.wrap) { return activeElement; } var delta = direction === DIRECTION_PREV ? -1 : 1; var itemIndex = (activeIndex + delta) % this._items.length; return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex]; }; _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) { var targetIndex = this._getItemIndex(relatedTarget); var fromIndex = this._getItemIndex(this._element.querySelector(SELECTOR_ACTIVE_ITEM)); var slideEvent = $__default["default"].Event(EVENT_SLIDE, { relatedTarget: relatedTarget, direction: eventDirectionName, from: fromIndex, to: targetIndex }); $__default["default"](this._element).trigger(slideEvent); return slideEvent; }; _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) { if (this._indicatorsElement) { var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(SELECTOR_ACTIVE$1)); $__default["default"](indicators).removeClass(CLASS_NAME_ACTIVE$2); var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)]; if (nextIndicator) { $__default["default"](nextIndicator).addClass(CLASS_NAME_ACTIVE$2); } } }; _proto._updateInterval = function _updateInterval() { var element = this._activeElement || this._element.querySelector(SELECTOR_ACTIVE_ITEM); if (!element) { return; } var elementInterval = parseInt(element.getAttribute('data-interval'), 10); if (elementInterval) { this._config.defaultInterval = this._config.defaultInterval || this._config.interval; this._config.interval = elementInterval; } else { this._config.interval = this._config.defaultInterval || this._config.interval; } }; _proto._slide = function _slide(direction, element) { var _this4 = this; var activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM); var activeElementIndex = this._getItemIndex(activeElement); var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement); var nextElementIndex = this._getItemIndex(nextElement); var isCycling = Boolean(this._interval); var directionalClassName; var orderClassName; var eventDirectionName; if (direction === DIRECTION_NEXT) { directionalClassName = CLASS_NAME_LEFT; orderClassName = CLASS_NAME_NEXT; eventDirectionName = DIRECTION_LEFT; } else { directionalClassName = CLASS_NAME_RIGHT; orderClassName = CLASS_NAME_PREV; eventDirectionName = DIRECTION_RIGHT; } if (nextElement && $__default["default"](nextElement).hasClass(CLASS_NAME_ACTIVE$2)) { this._isSliding = false; return; } var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName); if (slideEvent.isDefaultPrevented()) { return; } if (!activeElement || !nextElement) { // Some weirdness is happening, so we bail return; } this._isSliding = true; if (isCycling) { this.pause(); } this._setActiveIndicatorElement(nextElement); this._activeElement = nextElement; var slidEvent = $__default["default"].Event(EVENT_SLID, { relatedTarget: nextElement, direction: eventDirectionName, from: activeElementIndex, to: nextElementIndex }); if ($__default["default"](this._element).hasClass(CLASS_NAME_SLIDE)) { $__default["default"](nextElement).addClass(orderClassName); Util.reflow(nextElement); $__default["default"](activeElement).addClass(directionalClassName); $__default["default"](nextElement).addClass(directionalClassName); var transitionDuration = Util.getTransitionDurationFromElement(activeElement); $__default["default"](activeElement).one(Util.TRANSITION_END, function () { $__default["default"](nextElement).removeClass(directionalClassName + " " + orderClassName).addClass(CLASS_NAME_ACTIVE$2); $__default["default"](activeElement).removeClass(CLASS_NAME_ACTIVE$2 + " " + orderClassName + " " + directionalClassName); _this4._isSliding = false; setTimeout(function () { return $__default["default"](_this4._element).trigger(slidEvent); }, 0); }).emulateTransitionEnd(transitionDuration); } else { $__default["default"](activeElement).removeClass(CLASS_NAME_ACTIVE$2); $__default["default"](nextElement).addClass(CLASS_NAME_ACTIVE$2); this._isSliding = false; $__default["default"](this._element).trigger(slidEvent); } if (isCycling) { this.cycle(); } } // Static ; Carousel._jQueryInterface = function _jQueryInterface(config) { return this.each(function () { var data = $__default["default"](this).data(DATA_KEY$8); var _config = _extends({}, Default$7, $__default["default"](this).data()); if (typeof config === 'object') { _config = _extends({}, _config, config); } var action = typeof config === 'string' ? config : _config.slide; if (!data) { data = new Carousel(this, _config); $__default["default"](this).data(DATA_KEY$8, data); } if (typeof config === 'number') { data.to(config); } else if (typeof action === 'string') { if (typeof data[action] === 'undefined') { throw new TypeError("No method named \"" + action + "\""); } data[action](); } else if (_config.interval && _config.ride) { data.pause(); data.cycle(); } }); }; Carousel._dataApiClickHandler = function _dataApiClickHandler(event) { var selector = Util.getSelectorFromElement(this); if (!selector) { return; } var target = $__default["default"](selector)[0]; if (!target || !$__default["default"](target).hasClass(CLASS_NAME_CAROUSEL)) { return; } var config = _extends({}, $__default["default"](target).data(), $__default["default"](this).data()); var slideIndex = this.getAttribute('data-slide-to'); if (slideIndex) { config.interval = false; } Carousel._jQueryInterface.call($__default["default"](target), config); if (slideIndex) { $__default["default"](target).data(DATA_KEY$8).to(slideIndex); } event.preventDefault(); }; _createClass(Carousel, null, [{ key: "VERSION", get: function get() { return VERSION$8; } }, { key: "Default", get: function get() { return Default$7; } }]); return Carousel; }(); /** * Data API implementation */ $__default["default"](document).on(EVENT_CLICK_DATA_API$4, SELECTOR_DATA_SLIDE, Carousel._dataApiClickHandler); $__default["default"](window).on(EVENT_LOAD_DATA_API$1, function () { var carousels = [].slice.call(document.querySelectorAll(SELECTOR_DATA_RIDE)); for (var i = 0, len = carousels.length; i < len; i++) { var $carousel = $__default["default"](carousels[i]); Carousel._jQueryInterface.call($carousel, $carousel.data()); } }); /** * jQuery */ $__default["default"].fn[NAME$8] = Carousel._jQueryInterface; $__default["default"].fn[NAME$8].Constructor = Carousel; $__default["default"].fn[NAME$8].noConflict = function () { $__default["default"].fn[NAME$8] = JQUERY_NO_CONFLICT$8; return Carousel._jQueryInterface; }; /** * Constants */ var NAME$7 = 'collapse'; var VERSION$7 = '4.6.2'; var DATA_KEY$7 = 'bs.collapse'; var EVENT_KEY$7 = "." + DATA_KEY$7; var DATA_API_KEY$4 = '.data-api'; var JQUERY_NO_CONFLICT$7 = $__default["default"].fn[NAME$7]; var CLASS_NAME_SHOW$6 = 'show'; var CLASS_NAME_COLLAPSE = 'collapse'; var CLASS_NAME_COLLAPSING = 'collapsing'; var CLASS_NAME_COLLAPSED = 'collapsed'; var DIMENSION_WIDTH = 'width'; var DIMENSION_HEIGHT = 'height'; var EVENT_SHOW$4 = "show" + EVENT_KEY$7; var EVENT_SHOWN$4 = "shown" + EVENT_KEY$7; var EVENT_HIDE$4 = "hide" + EVENT_KEY$7; var EVENT_HIDDEN$4 = "hidden" + EVENT_KEY$7; var EVENT_CLICK_DATA_API$3 = "click" + EVENT_KEY$7 + DATA_API_KEY$4; var SELECTOR_ACTIVES = '.show, .collapsing'; var SELECTOR_DATA_TOGGLE$3 = '[data-toggle="collapse"]'; var Default$6 = { toggle: true, parent: '' }; var DefaultType$6 = { toggle: 'boolean', parent: '(string|element)' }; /** * Class definition */ var Collapse = /*#__PURE__*/function () { function Collapse(element, config) { this._isTransitioning = false; this._element = element; this._config = this._getConfig(config); this._triggerArray = [].slice.call(document.querySelectorAll("[data-toggle=\"collapse\"][href=\"#" + element.id + "\"]," + ("[data-toggle=\"collapse\"][data-target=\"#" + element.id + "\"]"))); var toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$3)); for (var i = 0, len = toggleList.length; i < len; i++) { var elem = toggleList[i]; var selector = Util.getSelectorFromElement(elem); var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) { return foundElem === element; }); if (selector !== null && filterElement.length > 0) { this._selector = selector; this._triggerArray.push(elem); } } this._parent = this._config.parent ? this._getParent() : null; if (!this._config.parent) { this._addAriaAndCollapsedClass(this._element, this._triggerArray); } if (this._config.toggle) { this.toggle(); } } // Getters var _proto = Collapse.prototype; // Public _proto.toggle = function toggle() { if ($__default["default"](this._element).hasClass(CLASS_NAME_SHOW$6)) { this.hide(); } else { this.show(); } }; _proto.show = function show() { var _this = this; if (this._isTransitioning || $__default["default"](this._element).hasClass(CLASS_NAME_SHOW$6)) { return; } var actives; var activesData; if (this._parent) { actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES)).filter(function (elem) { if (typeof _this._config.parent === 'string') { return elem.getAttribute('data-parent') === _this._config.parent; } return elem.classList.contains(CLASS_NAME_COLLAPSE); }); if (actives.length === 0) { actives = null; } } if (actives) { activesData = $__default["default"](actives).not(this._selector).data(DATA_KEY$7); if (activesData && activesData._isTransitioning) { return; } } var startEvent = $__default["default"].Event(EVENT_SHOW$4); $__default["default"](this._element).trigger(startEvent); if (startEvent.isDefaultPrevented()) { return; } if (actives) { Collapse._jQueryInterface.call($__default["default"](actives).not(this._selector), 'hide'); if (!activesData) { $__default["default"](actives).data(DATA_KEY$7, null); } } var dimension = this._getDimension(); $__default["default"](this._element).removeClass(CLASS_NAME_COLLAPSE).addClass(CLASS_NAME_COLLAPSING); this._element.style[dimension] = 0; if (this._triggerArray.length) { $__default["default"](this._triggerArray).removeClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', true); } this.setTransitioning(true); var complete = function complete() { $__default["default"](_this._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE + " " + CLASS_NAME_SHOW$6); _this._element.style[dimension] = ''; _this.setTransitioning(false); $__default["default"](_this._element).trigger(EVENT_SHOWN$4); }; var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); var scrollSize = "scroll" + capitalizedDimension; var transitionDuration = Util.getTransitionDurationFromElement(this._element); $__default["default"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); this._element.style[dimension] = this._element[scrollSize] + "px"; }; _proto.hide = function hide() { var _this2 = this; if (this._isTransitioning || !$__default["default"](this._element).hasClass(CLASS_NAME_SHOW$6)) { return; } var startEvent = $__default["default"].Event(EVENT_HIDE$4); $__default["default"](this._element).trigger(startEvent); if (startEvent.isDefaultPrevented()) { return; } var dimension = this._getDimension(); this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px"; Util.reflow(this._element); $__default["default"](this._element).addClass(CLASS_NAME_COLLAPSING).removeClass(CLASS_NAME_COLLAPSE + " " + CLASS_NAME_SHOW$6); var triggerArrayLength = this._triggerArray.length; if (triggerArrayLength > 0) { for (var i = 0; i < triggerArrayLength; i++) { var trigger = this._triggerArray[i]; var selector = Util.getSelectorFromElement(trigger); if (selector !== null) { var $elem = $__default["default"]([].slice.call(document.querySelectorAll(selector))); if (!$elem.hasClass(CLASS_NAME_SHOW$6)) { $__default["default"](trigger).addClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', false); } } } } this.setTransitioning(true); var complete = function complete() { _this2.setTransitioning(false); $__default["default"](_this2._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE).trigger(EVENT_HIDDEN$4); }; this._element.style[dimension] = ''; var transitionDuration = Util.getTransitionDurationFromElement(this._element); $__default["default"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); }; _proto.setTransitioning = function setTransitioning(isTransitioning) { this._isTransitioning = isTransitioning; }; _proto.dispose = function dispose() { $__default["default"].removeData(this._element, DATA_KEY$7); this._config = null; this._parent = null; this._element = null; this._triggerArray = null; this._isTransitioning = null; } // Private ; _proto._getConfig = function _getConfig(config) { config = _extends({}, Default$6, config); config.toggle = Boolean(config.toggle); // Coerce string values Util.typeCheckConfig(NAME$7, config, DefaultType$6); return config; }; _proto._getDimension = function _getDimension() { var hasWidth = $__default["default"](this._element).hasClass(DIMENSION_WIDTH); return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT; }; _proto._getParent = function _getParent() { var _this3 = this; var parent; if (Util.isElement(this._config.parent)) { parent = this._config.parent; // It's a jQuery object if (typeof this._config.parent.jquery !== 'undefined') { parent = this._config.parent[0]; } } else { parent = document.querySelector(this._config.parent); } var selector = "[data-toggle=\"collapse\"][data-parent=\"" + this._config.parent + "\"]"; var children = [].slice.call(parent.querySelectorAll(selector)); $__default["default"](children).each(function (i, element) { _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]); }); return parent; }; _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) { var isOpen = $__default["default"](element).hasClass(CLASS_NAME_SHOW$6); if (triggerArray.length) { $__default["default"](triggerArray).toggleClass(CLASS_NAME_COLLAPSED, !isOpen).attr('aria-expanded', isOpen); } } // Static ; Collapse._getTargetFromElement = function _getTargetFromElement(element) { var selector = Util.getSelectorFromElement(element); return selector ? document.querySelector(selector) : null; }; Collapse._jQueryInterface = function _jQueryInterface(config) { return this.each(function () { var $element = $__default["default"](this); var data = $element.data(DATA_KEY$7); var _config = _extends({}, Default$6, $element.data(), typeof config === 'object' && config ? config : {}); if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) { _config.toggle = false; } if (!data) { data = new Collapse(this, _config); $element.data(DATA_KEY$7, data); } if (typeof config === 'string') { if (typeof data[config] === 'undefined') { throw new TypeError("No method named \"" + config + "\""); } data[config](); } }); }; _createClass(Collapse, null, [{ key: "VERSION", get: function get() { return VERSION$7; } }, { key: "Default", get: function get() { return Default$6; } }]); return Collapse; }(); /** * Data API implementation */ $__default["default"](document).on(EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) { // preventDefault only for <a> elements (which change the URL) not inside the collapsible element if (event.currentTarget.tagName === 'A') { event.preventDefault(); } var $trigger = $__default["default"](this); var selector = Util.getSelectorFromElement(this); var selectors = [].slice.call(document.querySelectorAll(selector)); $__default["default"](selectors).each(function () { var $target = $__default["default"](this); var data = $target.data(DATA_KEY$7); var config = data ? 'toggle' : $trigger.data(); Collapse._jQueryInterface.call($target, config); }); }); /** * jQuery */ $__default["default"].fn[NAME$7] = Collapse._jQueryInterface; $__default["default"].fn[NAME$7].Constructor = Collapse; $__default["default"].fn[NAME$7].noConflict = function () { $__default["default"].fn[NAME$7] = JQUERY_NO_CONFLICT$7; return Collapse._jQueryInterface; }; /** * Constants */ var NAME$6 = 'dropdown'; var VERSION$6 = '4.6.2'; var DATA_KEY$6 = 'bs.dropdown'; var EVENT_KEY$6 = "." + DATA_KEY$6; var DATA