| /*! |
| * Bootstrap base-component.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(require('./dom/data.js'), require('./dom/event-handler.js')) : |
| typeof define === 'function' && define.amd ? define(['./dom/data', './dom/event-handler'], factory) : |
| (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Base = factory(global.Data, global.EventHandler)); |
| })(this, (function (Data, EventHandler) { 'use strict'; |
| |
| const _interopDefaultLegacy = e => e && typeof e === 'object' && 'default' in e ? e : { default: e }; |
| |
| const Data__default = /*#__PURE__*/_interopDefaultLegacy(Data); |
| const EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler); |
| |
| /** |
| * -------------------------------------------------------------------------- |
| * Bootstrap (v5.1.3): util/index.js |
| * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) |
| * -------------------------------------------------------------------------- |
| */ |
| const MILLISECONDS_MULTIPLIER = 1000; |
| const TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp) |
| |
| const getTransitionDurationFromElement = element => { |
| if (!element) { |
| return 0; |
| } // Get transition-duration of the element |
| |
| |
| let { |
| transitionDuration, |
| transitionDelay |
| } = window.getComputedStyle(element); |
| const floatTransitionDuration = Number.parseFloat(transitionDuration); |
| const floatTransitionDelay = Number.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 (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER; |
| }; |
| |
| const triggerTransitionEnd = element => { |
| element.dispatchEvent(new Event(TRANSITION_END)); |
| }; |
| |
| const isElement = obj => { |
| if (!obj || typeof obj !== 'object') { |
| return false; |
| } |
| |
| if (typeof obj.jquery !== 'undefined') { |
| obj = obj[0]; |
| } |
| |
| return typeof obj.nodeType !== 'undefined'; |
| }; |
| |
| const getElement = obj => { |
| if (isElement(obj)) { |
| // it's a jQuery object or a node element |
| return obj.jquery ? obj[0] : obj; |
| } |
| |
| if (typeof obj === 'string' && obj.length > 0) { |
| return document.querySelector(obj); |
| } |
| |
| return null; |
| }; |
| |
| const execute = callback => { |
| if (typeof callback === 'function') { |
| callback(); |
| } |
| }; |
| |
| const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => { |
| if (!waitForTransition) { |
| execute(callback); |
| return; |
| } |
| |
| const durationPadding = 5; |
| const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding; |
| let called = false; |
| |
| const handler = ({ |
| target |
| }) => { |
| if (target !== transitionElement) { |
| return; |
| } |
| |
| called = true; |
| transitionElement.removeEventListener(TRANSITION_END, handler); |
| execute(callback); |
| }; |
| |
| transitionElement.addEventListener(TRANSITION_END, handler); |
| setTimeout(() => { |
| if (!called) { |
| triggerTransitionEnd(transitionElement); |
| } |
| }, emulatedDuration); |
| }; |
| |
| /** |
| * -------------------------------------------------------------------------- |
| * Bootstrap (v5.1.3): base-component.js |
| * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) |
| * -------------------------------------------------------------------------- |
| */ |
| /** |
| * ------------------------------------------------------------------------ |
| * Constants |
| * ------------------------------------------------------------------------ |
| */ |
| |
| const VERSION = '5.1.3'; |
| |
| class BaseComponent { |
| constructor(element) { |
| element = getElement(element); |
| |
| if (!element) { |
| return; |
| } |
| |
| this._element = element; |
| Data__default.default.set(this._element, this.constructor.DATA_KEY, this); |
| } |
| |
| dispose() { |
| Data__default.default.remove(this._element, this.constructor.DATA_KEY); |
| EventHandler__default.default.off(this._element, this.constructor.EVENT_KEY); |
| Object.getOwnPropertyNames(this).forEach(propertyName => { |
| this[propertyName] = null; |
| }); |
| } |
| |
| _queueCallback(callback, element, isAnimated = true) { |
| executeAfterTransition(callback, element, isAnimated); |
| } |
| /** Static */ |
| |
| |
| static getInstance(element) { |
| return Data__default.default.get(getElement(element), this.DATA_KEY); |
| } |
| |
| static getOrCreateInstance(element, config = {}) { |
| return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null); |
| } |
| |
| static get VERSION() { |
| return VERSION; |
| } |
| |
| static get NAME() { |
| throw new Error('You have to implement the static method "NAME", for each component!'); |
| } |
| |
| static get DATA_KEY() { |
| return `bs.${this.NAME}`; |
| } |
| |
| static get EVENT_KEY() { |
| return `.${this.DATA_KEY}`; |
| } |
| |
| } |
| |
| return BaseComponent; |
| |
| })); |
| //# sourceMappingURL=base-component.js.map |