All files / src base-component.js

100% Statements 23/23
100% Branches 8/8
100% Functions 10/10
100% Lines 23/23

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86                                14x               568x   568x 568x 2x     566x 566x   564x         25x 25x   25x 142x         2349x       463x 463x 463x 463x         477x       284x       13x       1647x       569x       519x          
/**
 * --------------------------------------------------------------------------
 * Bootstrap (v5.2.3): base-component.js
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 * --------------------------------------------------------------------------
 */
 
import Data from './dom/data'
import { executeAfterTransition, getElement } from './util/index'
import EventHandler from './dom/event-handler'
import Config from './util/config'
 
/**
 * Constants
 */
 
const VERSION = '5.2.3'
 
/**
 * Class definition
 */
 
class BaseComponent extends Config {
  constructor(element, config) {
    super()
 
    element = getElement(element)
    if (!element) {
      return
    }
 
    this._element = element
    this._config = this._getConfig(config)
 
    Data.set(this._element, this.constructor.DATA_KEY, this)
  }
 
  // Public
  dispose() {
    Data.remove(this._element, this.constructor.DATA_KEY)
    EventHandler.off(this._element, this.constructor.EVENT_KEY)
 
    for (const propertyName of Object.getOwnPropertyNames(this)) {
      this[propertyName] = null
    }
  }
 
  _queueCallback(callback, element, isAnimated = true) {
    executeAfterTransition(callback, element, isAnimated)
  }
 
  _getConfig(config) {
    config = this._mergeConfigObj(config, this._element)
    config = this._configAfterMerge(config)
    this._typeCheckConfig(config)
    return config
  }
 
  // Static
  static getInstance(element) {
    return Data.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 DATA_KEY() {
    return `bs.${this.NAME}`
  }
 
  static get EVENT_KEY() {
    return `.${this.DATA_KEY}`
  }
 
  static eventName(name) {
    return `${name}${this.EVENT_KEY}`
  }
}
 
export default BaseComponent