bootstrap.esm.js 141 KB
Newer Older
XhmikosR's avatar
XhmikosR committed
3001
3002
3003
3004
3005

      this._element.focus();
    } else {
      this.hide();
    }
XhmikosR's avatar
Dist.  
XhmikosR committed
3006
3007
3008
  } // ----------------------------------------------------------------------
  // the following methods are used to handle overflowing modals
  // ----------------------------------------------------------------------
XhmikosR's avatar
XhmikosR committed
3009
  ;
XhmikosR's avatar
Dist.  
XhmikosR committed
3010

XhmikosR's avatar
XhmikosR committed
3011
3012
  _proto._adjustDialog = function _adjustDialog() {
    var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
XhmikosR's avatar
Dist.  
XhmikosR committed
3013
3014

    if (!this._isBodyOverflowing && isModalOverflowing) {
XhmikosR's avatar
XhmikosR committed
3015
      this._element.style.paddingLeft = this._scrollbarWidth + "px";
XhmikosR's avatar
Dist.  
XhmikosR committed
3016
3017
3018
    }

    if (this._isBodyOverflowing && !isModalOverflowing) {
XhmikosR's avatar
XhmikosR committed
3019
      this._element.style.paddingRight = this._scrollbarWidth + "px";
XhmikosR's avatar
Dist.  
XhmikosR committed
3020
    }
XhmikosR's avatar
XhmikosR committed
3021
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3022

XhmikosR's avatar
XhmikosR committed
3023
  _proto._resetAdjustments = function _resetAdjustments() {
XhmikosR's avatar
Dist.  
XhmikosR committed
3024
3025
    this._element.style.paddingLeft = '';
    this._element.style.paddingRight = '';
XhmikosR's avatar
XhmikosR committed
3026
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3027

XhmikosR's avatar
XhmikosR committed
3028
3029
  _proto._checkScrollbar = function _checkScrollbar() {
    var rect = document.body.getBoundingClientRect();
XhmikosR's avatar
XhmikosR committed
3030
    this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth;
XhmikosR's avatar
Dist.  
XhmikosR committed
3031
    this._scrollbarWidth = this._getScrollbarWidth();
XhmikosR's avatar
XhmikosR committed
3032
3033
3034
  };

  _proto._setScrollbar = function _setScrollbar() {
XhmikosR's avatar
XhmikosR committed
3035
    var _this10 = this;
XhmikosR's avatar
Dist.  
XhmikosR committed
3036
3037
3038
3039
3040

    if (this._isBodyOverflowing) {
      // Note: DOMNode.style.paddingRight returns the actual value or '' if not set
      //   while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set
      // Adjust fixed content padding
XhmikosR's avatar
XhmikosR committed
3041
      SelectorEngine.find(SELECTOR_FIXED_CONTENT).forEach(function (element) {
XhmikosR's avatar
XhmikosR committed
3042
3043
        var actualPadding = element.style.paddingRight;
        var calculatedPadding = window.getComputedStyle(element)['padding-right'];
XhmikosR's avatar
Dist.  
XhmikosR committed
3044
        Manipulator.setDataAttribute(element, 'padding-right', actualPadding);
XhmikosR's avatar
XhmikosR committed
3045
        element.style.paddingRight = parseFloat(calculatedPadding) + _this10._scrollbarWidth + "px";
XhmikosR's avatar
Dist.  
XhmikosR committed
3046
3047
      }); // Adjust sticky content margin

XhmikosR's avatar
XhmikosR committed
3048
      SelectorEngine.find(SELECTOR_STICKY_CONTENT).forEach(function (element) {
XhmikosR's avatar
XhmikosR committed
3049
3050
        var actualMargin = element.style.marginRight;
        var calculatedMargin = window.getComputedStyle(element)['margin-right'];
XhmikosR's avatar
Dist.  
XhmikosR committed
3051
        Manipulator.setDataAttribute(element, 'margin-right', actualMargin);
XhmikosR's avatar
XhmikosR committed
3052
        element.style.marginRight = parseFloat(calculatedMargin) - _this10._scrollbarWidth + "px";
XhmikosR's avatar
Dist.  
XhmikosR committed
3053
3054
      }); // Adjust body padding

XhmikosR's avatar
XhmikosR committed
3055
3056
      var actualPadding = document.body.style.paddingRight;
      var calculatedPadding = window.getComputedStyle(document.body)['padding-right'];
XhmikosR's avatar
Dist.  
XhmikosR committed
3057
      Manipulator.setDataAttribute(document.body, 'padding-right', actualPadding);
XhmikosR's avatar
XhmikosR committed
3058
      document.body.style.paddingRight = parseFloat(calculatedPadding) + this._scrollbarWidth + "px";
XhmikosR's avatar
Dist.  
XhmikosR committed
3059
3060
    }

XhmikosR's avatar
XhmikosR committed
3061
    document.body.classList.add(CLASS_NAME_OPEN);
XhmikosR's avatar
XhmikosR committed
3062
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3063

XhmikosR's avatar
XhmikosR committed
3064
  _proto._resetScrollbar = function _resetScrollbar() {
XhmikosR's avatar
Dist.  
XhmikosR committed
3065
    // Restore fixed content padding
XhmikosR's avatar
XhmikosR committed
3066
    SelectorEngine.find(SELECTOR_FIXED_CONTENT).forEach(function (element) {
XhmikosR's avatar
XhmikosR committed
3067
      var padding = Manipulator.getDataAttribute(element, 'padding-right');
XhmikosR's avatar
Dist.  
XhmikosR committed
3068
3069
3070
3071
3072
3073
3074

      if (typeof padding !== 'undefined') {
        Manipulator.removeDataAttribute(element, 'padding-right');
        element.style.paddingRight = padding;
      }
    }); // Restore sticky content and navbar-toggler margin

XhmikosR's avatar
XhmikosR committed
3075
    SelectorEngine.find("" + SELECTOR_STICKY_CONTENT).forEach(function (element) {
XhmikosR's avatar
XhmikosR committed
3076
      var margin = Manipulator.getDataAttribute(element, 'margin-right');
XhmikosR's avatar
Dist.  
XhmikosR committed
3077
3078
3079
3080
3081
3082
3083

      if (typeof margin !== 'undefined') {
        Manipulator.removeDataAttribute(element, 'margin-right');
        element.style.marginRight = margin;
      }
    }); // Restore body padding

XhmikosR's avatar
XhmikosR committed
3084
    var padding = Manipulator.getDataAttribute(document.body, 'padding-right');
XhmikosR's avatar
Dist.  
XhmikosR committed
3085
3086
3087
3088
3089
3090
3091

    if (typeof padding === 'undefined') {
      document.body.style.paddingRight = '';
    } else {
      Manipulator.removeDataAttribute(document.body, 'padding-right');
      document.body.style.paddingRight = padding;
    }
XhmikosR's avatar
XhmikosR committed
3092
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3093

XhmikosR's avatar
XhmikosR committed
3094
  _proto._getScrollbarWidth = function _getScrollbarWidth() {
XhmikosR's avatar
Dist.  
XhmikosR committed
3095
    // thx d.walsh
XhmikosR's avatar
XhmikosR committed
3096
    var scrollDiv = document.createElement('div');
XhmikosR's avatar
XhmikosR committed
3097
    scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER;
XhmikosR's avatar
Dist.  
XhmikosR committed
3098
    document.body.appendChild(scrollDiv);
XhmikosR's avatar
XhmikosR committed
3099
    var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
XhmikosR's avatar
Dist.  
XhmikosR committed
3100
3101
3102
    document.body.removeChild(scrollDiv);
    return scrollbarWidth;
  } // Static
XhmikosR's avatar
XhmikosR committed
3103
  ;
XhmikosR's avatar
Dist.  
XhmikosR committed
3104

XhmikosR's avatar
XhmikosR committed
3105
  Modal.jQueryInterface = function jQueryInterface(config, relatedTarget) {
XhmikosR's avatar
Dist.  
XhmikosR committed
3106
    return this.each(function () {
XhmikosR's avatar
XhmikosR committed
3107
      var data = Data.getData(this, DATA_KEY$5);
XhmikosR's avatar
Dist.  
XhmikosR committed
3108

XhmikosR's avatar
XhmikosR committed
3109
      var _config = _extends({}, Default$3, Manipulator.getDataAttributes(this), typeof config === 'object' && config ? config : {});
XhmikosR's avatar
Dist.  
XhmikosR committed
3110
3111
3112
3113
3114
3115
3116

      if (!data) {
        data = new Modal(this, _config);
      }

      if (typeof config === 'string') {
        if (typeof data[config] === 'undefined') {
XhmikosR's avatar
XhmikosR committed
3117
          throw new TypeError("No method named \"" + config + "\"");
XhmikosR's avatar
Dist.  
XhmikosR committed
3118
3119
3120
3121
3122
3123
3124
        }

        data[config](relatedTarget);
      } else if (_config.show) {
        data.show(relatedTarget);
      }
    });
XhmikosR's avatar
XhmikosR committed
3125
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3126

XhmikosR's avatar
XhmikosR committed
3127
  Modal.getInstance = function getInstance(element) {
XhmikosR's avatar
Dist.  
XhmikosR committed
3128
    return Data.getData(element, DATA_KEY$5);
XhmikosR's avatar
XhmikosR committed
3129
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3130

XhmikosR's avatar
XhmikosR committed
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
  _createClass(Modal, null, [{
    key: "VERSION",
    get: function get() {
      return VERSION$5;
    }
  }, {
    key: "Default",
    get: function get() {
      return Default$3;
    }
  }]);

  return Modal;
}();
XhmikosR's avatar
Dist.  
XhmikosR committed
3145
3146
3147
3148
3149
3150
3151
/**
 * ------------------------------------------------------------------------
 * Data Api implementation
 * ------------------------------------------------------------------------
 */


XhmikosR's avatar
XhmikosR committed
3152
EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_TOGGLE$3, function (event) {
XhmikosR's avatar
XhmikosR committed
3153
  var _this11 = this;
XhmikosR's avatar
XhmikosR committed
3154

XhmikosR's avatar
XhmikosR committed
3155
  var target = getElementFromSelector(this);
XhmikosR's avatar
Dist.  
XhmikosR committed
3156
3157
3158
3159
3160

  if (this.tagName === 'A' || this.tagName === 'AREA') {
    event.preventDefault();
  }

XhmikosR's avatar
XhmikosR committed
3161
  EventHandler.one(target, EVENT_SHOW$2, function (showEvent) {
XhmikosR's avatar
Dist.  
XhmikosR committed
3162
3163
3164
3165
3166
    if (showEvent.defaultPrevented) {
      // only register focus restorer if modal will actually get shown
      return;
    }

XhmikosR's avatar
XhmikosR committed
3167
    EventHandler.one(target, EVENT_HIDDEN$2, function () {
XhmikosR's avatar
XhmikosR committed
3168
3169
      if (isVisible(_this11)) {
        _this11.focus();
XhmikosR's avatar
Dist.  
XhmikosR committed
3170
3171
3172
      }
    });
  });
XhmikosR's avatar
XhmikosR committed
3173
  var data = Data.getData(target, DATA_KEY$5);
XhmikosR's avatar
Dist.  
XhmikosR committed
3174
3175

  if (!data) {
XhmikosR's avatar
XhmikosR committed
3176
    var config = _extends({}, Manipulator.getDataAttributes(target), Manipulator.getDataAttributes(this));
3177

XhmikosR's avatar
Dist.  
XhmikosR committed
3178
3179
3180
3181
3182
    data = new Modal(target, config);
  }

  data.show(this);
});
XhmikosR's avatar
XhmikosR committed
3183
var $$6 = getjQuery();
XhmikosR's avatar
Dist.  
XhmikosR committed
3184
3185
3186
3187
/**
 * ------------------------------------------------------------------------
 * jQuery
 * ------------------------------------------------------------------------
3188
 * add .modal to jQuery only if jQuery is present
XhmikosR's avatar
Dist.  
XhmikosR committed
3189
3190
 */

3191
3192
/* istanbul ignore if */

XhmikosR's avatar
XhmikosR committed
3193
3194
3195
3196
if ($$6) {
  var JQUERY_NO_CONFLICT$5 = $$6.fn[NAME$5];
  $$6.fn[NAME$5] = Modal.jQueryInterface;
  $$6.fn[NAME$5].Constructor = Modal;
XhmikosR's avatar
Dist.  
XhmikosR committed
3197

XhmikosR's avatar
XhmikosR committed
3198
3199
3200
  $$6.fn[NAME$5].noConflict = function () {
    $$6.fn[NAME$5] = JQUERY_NO_CONFLICT$5;
    return Modal.jQueryInterface;
XhmikosR's avatar
Dist.  
XhmikosR committed
3201
3202
3203
3204
3205
  };
}

/**
 * --------------------------------------------------------------------------
3206
 * Bootstrap (v5.0.0-alpha1): util/sanitizer.js
XhmikosR's avatar
XhmikosR committed
3207
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
XhmikosR's avatar
Dist.  
XhmikosR committed
3208
3209
 * --------------------------------------------------------------------------
 */
XhmikosR's avatar
XhmikosR committed
3210
3211
var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href'];
var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
XhmikosR's avatar
Dist.  
XhmikosR committed
3212
3213
3214
3215
3216
3217
/**
 * A pattern that recognizes a commonly useful subset of URLs that are safe.
 *
 * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
 */

XhmikosR's avatar
XhmikosR committed
3218
var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/gi;
XhmikosR's avatar
Dist.  
XhmikosR committed
3219
3220
3221
3222
3223
3224
/**
 * A pattern that matches safe data URLs. Only matches image, video and audio types.
 *
 * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
 */

XhmikosR's avatar
XhmikosR committed
3225
var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i;
XhmikosR's avatar
Dist.  
XhmikosR committed
3226

XhmikosR's avatar
XhmikosR committed
3227
3228
var allowedAttribute = function allowedAttribute(attr, allowedAttributeList) {
  var attrName = attr.nodeName.toLowerCase();
XhmikosR's avatar
Dist.  
XhmikosR committed
3229
3230
3231

  if (allowedAttributeList.indexOf(attrName) !== -1) {
    if (uriAttrs.indexOf(attrName) !== -1) {
Mark Otto's avatar
Mark Otto committed
3232
      return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN));
XhmikosR's avatar
Dist.  
XhmikosR committed
3233
3234
3235
3236
3237
    }

    return true;
  }

XhmikosR's avatar
XhmikosR committed
3238
3239
3240
  var regExp = allowedAttributeList.filter(function (attrRegex) {
    return attrRegex instanceof RegExp;
  }); // Check if a regular expression validates the attribute.
XhmikosR's avatar
Dist.  
XhmikosR committed
3241

XhmikosR's avatar
XhmikosR committed
3242
  for (var i = 0, len = regExp.length; i < len; i++) {
Mark Otto's avatar
Mark Otto committed
3243
    if (attrName.match(regExp[i])) {
XhmikosR's avatar
Dist.  
XhmikosR committed
3244
3245
3246
3247
3248
3249
3250
      return true;
    }
  }

  return false;
};

XhmikosR's avatar
XhmikosR committed
3251
var DefaultAllowlist = {
XhmikosR's avatar
Dist.  
XhmikosR committed
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
  // Global attributes allowed on any supplied element below.
  '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
  a: ['target', 'href', 'title', 'rel'],
  area: [],
  b: [],
  br: [],
  col: [],
  code: [],
  div: [],
  em: [],
  hr: [],
  h1: [],
  h2: [],
  h3: [],
  h4: [],
  h5: [],
  h6: [],
  i: [],
XhmikosR's avatar
XhmikosR committed
3270
  img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],
XhmikosR's avatar
Dist.  
XhmikosR committed
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
  li: [],
  ol: [],
  p: [],
  pre: [],
  s: [],
  small: [],
  span: [],
  sub: [],
  sup: [],
  strong: [],
  u: [],
  ul: []
};
XhmikosR's avatar
XhmikosR committed
3284
function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {
XhmikosR's avatar
XhmikosR committed
3285
3286
  var _ref;

XhmikosR's avatar
Dist.  
XhmikosR committed
3287
3288
3289
3290
3291
3292
3293
3294
  if (!unsafeHtml.length) {
    return unsafeHtml;
  }

  if (sanitizeFn && typeof sanitizeFn === 'function') {
    return sanitizeFn(unsafeHtml);
  }

XhmikosR's avatar
XhmikosR committed
3295
3296
  var domParser = new window.DOMParser();
  var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');
XhmikosR's avatar
XhmikosR committed
3297
  var allowlistKeys = Object.keys(allowList);
XhmikosR's avatar
XhmikosR committed
3298
3299

  var elements = (_ref = []).concat.apply(_ref, createdDocument.body.querySelectorAll('*'));
XhmikosR's avatar
Dist.  
XhmikosR committed
3300

XhmikosR's avatar
XhmikosR committed
3301
  var _loop = function _loop(i, len) {
XhmikosR's avatar
XhmikosR committed
3302
3303
    var _ref2;

XhmikosR's avatar
XhmikosR committed
3304
3305
    var el = elements[i];
    var elName = el.nodeName.toLowerCase();
XhmikosR's avatar
Dist.  
XhmikosR committed
3306

XhmikosR's avatar
XhmikosR committed
3307
    if (allowlistKeys.indexOf(elName) === -1) {
XhmikosR's avatar
Dist.  
XhmikosR committed
3308
      el.parentNode.removeChild(el);
XhmikosR's avatar
XhmikosR committed
3309
      return "continue";
XhmikosR's avatar
Dist.  
XhmikosR committed
3310
3311
    }

XhmikosR's avatar
XhmikosR committed
3312
3313
    var attributeList = (_ref2 = []).concat.apply(_ref2, el.attributes);

XhmikosR's avatar
XhmikosR committed
3314
    var allowedAttributes = [].concat(allowList['*'] || [], allowList[elName] || []);
XhmikosR's avatar
XhmikosR committed
3315
    attributeList.forEach(function (attr) {
XhmikosR's avatar
XhmikosR committed
3316
      if (!allowedAttribute(attr, allowedAttributes)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
3317
3318
3319
        el.removeAttribute(attr.nodeName);
      }
    });
XhmikosR's avatar
XhmikosR committed
3320
3321
3322
  };

  for (var i = 0, len = elements.length; i < len; i++) {
3323
    var _ret = _loop(i);
XhmikosR's avatar
XhmikosR committed
3324
3325

    if (_ret === "continue") continue;
XhmikosR's avatar
Dist.  
XhmikosR committed
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
  }

  return createdDocument.body.innerHTML;
}

/**
 * ------------------------------------------------------------------------
 * Constants
 * ------------------------------------------------------------------------
 */

XhmikosR's avatar
XhmikosR committed
3337
var NAME$6 = 'tooltip';
3338
var VERSION$6 = '5.0.0-alpha1';
XhmikosR's avatar
XhmikosR committed
3339
3340
3341
3342
var DATA_KEY$6 = 'bs.tooltip';
var EVENT_KEY$6 = "." + DATA_KEY$6;
var CLASS_PREFIX = 'bs-tooltip';
var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g');
XhmikosR's avatar
XhmikosR committed
3343
var DISALLOWED_ATTRIBUTES = ['sanitize', 'allowList', 'sanitizeFn'];
XhmikosR's avatar
XhmikosR committed
3344
var DefaultType$4 = {
XhmikosR's avatar
Dist.  
XhmikosR committed
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
  animation: 'boolean',
  template: 'string',
  title: '(string|element|function)',
  trigger: 'string',
  delay: '(number|object)',
  html: 'boolean',
  selector: '(string|boolean)',
  placement: '(string|function)',
  offset: '(number|string|function)',
  container: '(string|element|boolean)',
  fallbackPlacement: '(string|array)',
  boundary: '(string|element)',
  sanitize: 'boolean',
  sanitizeFn: '(null|function)',
XhmikosR's avatar
XhmikosR committed
3359
  allowList: 'object',
XhmikosR's avatar
XhmikosR committed
3360
  popperConfig: '(null|object)'
XhmikosR's avatar
Dist.  
XhmikosR committed
3361
};
XhmikosR's avatar
XhmikosR committed
3362
var AttachmentMap = {
XhmikosR's avatar
Dist.  
XhmikosR committed
3363
3364
3365
3366
3367
3368
  AUTO: 'auto',
  TOP: 'top',
  RIGHT: 'right',
  BOTTOM: 'bottom',
  LEFT: 'left'
};
XhmikosR's avatar
XhmikosR committed
3369
var Default$4 = {
XhmikosR's avatar
Dist.  
XhmikosR committed
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
3380
3381
3382
3383
  animation: true,
  template: '<div class="tooltip" role="tooltip">' + '<div class="tooltip-arrow"></div>' + '<div class="tooltip-inner"></div></div>',
  trigger: 'hover focus',
  title: '',
  delay: 0,
  html: false,
  selector: false,
  placement: 'top',
  offset: 0,
  container: false,
  fallbackPlacement: 'flip',
  boundary: 'scrollParent',
  sanitize: true,
  sanitizeFn: null,
XhmikosR's avatar
XhmikosR committed
3384
  allowList: DefaultAllowlist,
XhmikosR's avatar
XhmikosR committed
3385
  popperConfig: null
XhmikosR's avatar
Dist.  
XhmikosR committed
3386
};
XhmikosR's avatar
XhmikosR committed
3387
var Event$1 = {
XhmikosR's avatar
XhmikosR committed
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
  HIDE: "hide" + EVENT_KEY$6,
  HIDDEN: "hidden" + EVENT_KEY$6,
  SHOW: "show" + EVENT_KEY$6,
  SHOWN: "shown" + EVENT_KEY$6,
  INSERTED: "inserted" + EVENT_KEY$6,
  CLICK: "click" + EVENT_KEY$6,
  FOCUSIN: "focusin" + EVENT_KEY$6,
  FOCUSOUT: "focusout" + EVENT_KEY$6,
  MOUSEENTER: "mouseenter" + EVENT_KEY$6,
  MOUSELEAVE: "mouseleave" + EVENT_KEY$6
XhmikosR's avatar
Dist.  
XhmikosR committed
3398
};
XhmikosR's avatar
XhmikosR committed
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
var CLASS_NAME_FADE$1 = 'fade';
var CLASS_NAME_MODAL = 'modal';
var CLASS_NAME_SHOW$3 = 'show';
var HOVER_STATE_SHOW = 'show';
var HOVER_STATE_OUT = 'out';
var SELECTOR_TOOLTIP_INNER = '.tooltip-inner';
var TRIGGER_HOVER = 'hover';
var TRIGGER_FOCUS = 'focus';
var TRIGGER_CLICK = 'click';
var TRIGGER_MANUAL = 'manual';
XhmikosR's avatar
XhmikosR committed
3409
3410
3411
3412
3413
/**
 * ------------------------------------------------------------------------
 * Class Definition
 * ------------------------------------------------------------------------
 */
XhmikosR's avatar
Dist.  
XhmikosR committed
3414

XhmikosR's avatar
XhmikosR committed
3415
var Tooltip = /*#__PURE__*/function () {
XhmikosR's avatar
XhmikosR committed
3416
  function Tooltip(element, config) {
XhmikosR's avatar
Dist.  
XhmikosR committed
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
    if (typeof Popper === 'undefined') {
      throw new TypeError('Bootstrap\'s tooltips require Popper.js (https://popper.js.org)');
    } // private


    this._isEnabled = true;
    this._timeout = 0;
    this._hoverState = '';
    this._activeTrigger = {};
    this._popper = null; // Protected

    this.element = element;
    this.config = this._getConfig(config);
    this.tip = null;

    this._setListeners();

    Data.setData(element, this.constructor.DATA_KEY, this);
  } // Getters


XhmikosR's avatar
XhmikosR committed
3438
  var _proto = Tooltip.prototype;
XhmikosR's avatar
Dist.  
XhmikosR committed
3439

XhmikosR's avatar
XhmikosR committed
3440
3441
  // Public
  _proto.enable = function enable() {
XhmikosR's avatar
Dist.  
XhmikosR committed
3442
    this._isEnabled = true;
XhmikosR's avatar
XhmikosR committed
3443
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3444

XhmikosR's avatar
XhmikosR committed
3445
  _proto.disable = function disable() {
XhmikosR's avatar
Dist.  
XhmikosR committed
3446
    this._isEnabled = false;
XhmikosR's avatar
XhmikosR committed
3447
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3448

XhmikosR's avatar
XhmikosR committed
3449
  _proto.toggleEnabled = function toggleEnabled() {
XhmikosR's avatar
Dist.  
XhmikosR committed
3450
    this._isEnabled = !this._isEnabled;
XhmikosR's avatar
XhmikosR committed
3451
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3452

XhmikosR's avatar
XhmikosR committed
3453
  _proto.toggle = function toggle(event) {
XhmikosR's avatar
Dist.  
XhmikosR committed
3454
3455
3456
3457
3458
    if (!this._isEnabled) {
      return;
    }

    if (event) {
XhmikosR's avatar
XhmikosR committed
3459
      var dataKey = this.constructor.DATA_KEY;
XhmikosR's avatar
XhmikosR committed
3460
      var context = Data.getData(event.delegateTarget, dataKey);
XhmikosR's avatar
Dist.  
XhmikosR committed
3461
3462

      if (!context) {
XhmikosR's avatar
XhmikosR committed
3463
3464
        context = new this.constructor(event.delegateTarget, this._getDelegateConfig());
        Data.setData(event.delegateTarget, dataKey, context);
XhmikosR's avatar
Dist.  
XhmikosR committed
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474
      }

      context._activeTrigger.click = !context._activeTrigger.click;

      if (context._isWithActiveTrigger()) {
        context._enter(null, context);
      } else {
        context._leave(null, context);
      }
    } else {
XhmikosR's avatar
XhmikosR committed
3475
      if (this.getTipElement().classList.contains(CLASS_NAME_SHOW$3)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
3476
3477
3478
3479
3480
3481
3482
        this._leave(null, this);

        return;
      }

      this._enter(null, this);
    }
XhmikosR's avatar
XhmikosR committed
3483
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3484

XhmikosR's avatar
XhmikosR committed
3485
  _proto.dispose = function dispose() {
XhmikosR's avatar
Dist.  
XhmikosR committed
3486
3487
3488
    clearTimeout(this._timeout);
    Data.removeData(this.element, this.constructor.DATA_KEY);
    EventHandler.off(this.element, this.constructor.EVENT_KEY);
XhmikosR's avatar
XhmikosR committed
3489
    EventHandler.off(this.element.closest("." + CLASS_NAME_MODAL), 'hide.bs.modal', this._hideModalHandler);
XhmikosR's avatar
Dist.  
XhmikosR committed
3490
3491
3492
3493
3494
3495
3496
3497
3498
3499

    if (this.tip) {
      this.tip.parentNode.removeChild(this.tip);
    }

    this._isEnabled = null;
    this._timeout = null;
    this._hoverState = null;
    this._activeTrigger = null;

XhmikosR's avatar
XhmikosR committed
3500
    if (this._popper) {
XhmikosR's avatar
Dist.  
XhmikosR committed
3501
3502
3503
3504
3505
3506
3507
      this._popper.destroy();
    }

    this._popper = null;
    this.element = null;
    this.config = null;
    this.tip = null;
XhmikosR's avatar
XhmikosR committed
3508
3509
3510
3511
  };

  _proto.show = function show() {
    var _this = this;
XhmikosR's avatar
Dist.  
XhmikosR committed
3512
3513
3514
3515
3516
3517

    if (this.element.style.display === 'none') {
      throw new Error('Please use show on visible elements');
    }

    if (this.isWithContent() && this._isEnabled) {
XhmikosR's avatar
XhmikosR committed
3518
3519
3520
      var showEvent = EventHandler.trigger(this.element, this.constructor.Event.SHOW);
      var shadowRoot = findShadowRoot(this.element);
      var isInTheDom = shadowRoot === null ? this.element.ownerDocument.documentElement.contains(this.element) : shadowRoot.contains(this.element);
XhmikosR's avatar
Dist.  
XhmikosR committed
3521
3522
3523
3524
3525

      if (showEvent.defaultPrevented || !isInTheDom) {
        return;
      }

XhmikosR's avatar
XhmikosR committed
3526
3527
      var tip = this.getTipElement();
      var tipId = getUID(this.constructor.NAME);
XhmikosR's avatar
Dist.  
XhmikosR committed
3528
3529
3530
3531
3532
      tip.setAttribute('id', tipId);
      this.element.setAttribute('aria-describedby', tipId);
      this.setContent();

      if (this.config.animation) {
XhmikosR's avatar
XhmikosR committed
3533
        tip.classList.add(CLASS_NAME_FADE$1);
XhmikosR's avatar
Dist.  
XhmikosR committed
3534
3535
      }

XhmikosR's avatar
XhmikosR committed
3536
      var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;
XhmikosR's avatar
Dist.  
XhmikosR committed
3537

XhmikosR's avatar
XhmikosR committed
3538
      var attachment = this._getAttachment(placement);
XhmikosR's avatar
Dist.  
XhmikosR committed
3539

3540
      this._addAttachmentClass(attachment);
XhmikosR's avatar
Dist.  
XhmikosR committed
3541

XhmikosR's avatar
XhmikosR committed
3542
      var container = this._getContainer();
XhmikosR's avatar
Dist.  
XhmikosR committed
3543
3544
3545
3546
3547
3548
3549
3550

      Data.setData(tip, this.constructor.DATA_KEY, this);

      if (!this.element.ownerDocument.documentElement.contains(this.tip)) {
        container.appendChild(tip);
      }

      EventHandler.trigger(this.element, this.constructor.Event.INSERTED);
XhmikosR's avatar
XhmikosR committed
3551
      this._popper = new Popper(this.element, tip, this._getPopperConfig(attachment));
XhmikosR's avatar
XhmikosR committed
3552
      tip.classList.add(CLASS_NAME_SHOW$3); // If this is a touch-enabled device we add extra
XhmikosR's avatar
Dist.  
XhmikosR committed
3553
3554
3555
3556
3557
      // empty mouseover listeners to the body's immediate children;
      // only needed because of broken event delegation on iOS
      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html

      if ('ontouchstart' in document.documentElement) {
XhmikosR's avatar
XhmikosR committed
3558
3559
3560
        var _ref;

        (_ref = []).concat.apply(_ref, document.body.children).forEach(function (element) {
XhmikosR's avatar
Dist.  
XhmikosR committed
3561
3562
3563
3564
          EventHandler.on(element, 'mouseover', noop());
        });
      }

XhmikosR's avatar
XhmikosR committed
3565
3566
3567
      var complete = function complete() {
        if (_this.config.animation) {
          _this._fixTransition();
XhmikosR's avatar
Dist.  
XhmikosR committed
3568
3569
        }

XhmikosR's avatar
XhmikosR committed
3570
3571
3572
        var prevHoverState = _this._hoverState;
        _this._hoverState = null;
        EventHandler.trigger(_this.element, _this.constructor.Event.SHOWN);
XhmikosR's avatar
Dist.  
XhmikosR committed
3573

XhmikosR's avatar
XhmikosR committed
3574
        if (prevHoverState === HOVER_STATE_OUT) {
XhmikosR's avatar
XhmikosR committed
3575
          _this._leave(null, _this);
XhmikosR's avatar
Dist.  
XhmikosR committed
3576
3577
3578
        }
      };

XhmikosR's avatar
XhmikosR committed
3579
      if (this.tip.classList.contains(CLASS_NAME_FADE$1)) {
XhmikosR's avatar
XhmikosR committed
3580
        var transitionDuration = getTransitionDurationFromElement(this.tip);
XhmikosR's avatar
Dist.  
XhmikosR committed
3581
3582
3583
3584
3585
3586
        EventHandler.one(this.tip, TRANSITION_END, complete);
        emulateTransitionEnd(this.tip, transitionDuration);
      } else {
        complete();
      }
    }
XhmikosR's avatar
XhmikosR committed
3587
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3588

3589
  _proto.hide = function hide() {
XhmikosR's avatar
XhmikosR committed
3590
    var _this2 = this;
XhmikosR's avatar
Dist.  
XhmikosR committed
3591

XhmikosR's avatar
XhmikosR committed
3592
3593
3594
    var tip = this.getTipElement();

    var complete = function complete() {
XhmikosR's avatar
XhmikosR committed
3595
      if (_this2._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {
XhmikosR's avatar
Dist.  
XhmikosR committed
3596
3597
3598
        tip.parentNode.removeChild(tip);
      }

XhmikosR's avatar
XhmikosR committed
3599
3600
3601
      _this2._cleanTipClass();

      _this2.element.removeAttribute('aria-describedby');
XhmikosR's avatar
Dist.  
XhmikosR committed
3602

XhmikosR's avatar
XhmikosR committed
3603
      EventHandler.trigger(_this2.element, _this2.constructor.Event.HIDDEN);
XhmikosR's avatar
Dist.  
XhmikosR committed
3604

3605
      _this2._popper.destroy();
XhmikosR's avatar
Dist.  
XhmikosR committed
3606
3607
    };

XhmikosR's avatar
XhmikosR committed
3608
    var hideEvent = EventHandler.trigger(this.element, this.constructor.Event.HIDE);
XhmikosR's avatar
Dist.  
XhmikosR committed
3609
3610
3611
3612
3613

    if (hideEvent.defaultPrevented) {
      return;
    }

XhmikosR's avatar
XhmikosR committed
3614
    tip.classList.remove(CLASS_NAME_SHOW$3); // If this is a touch-enabled device we remove the extra
XhmikosR's avatar
Dist.  
XhmikosR committed
3615
3616
3617
    // empty mouseover listeners we added for iOS support

    if ('ontouchstart' in document.documentElement) {
XhmikosR's avatar
XhmikosR committed
3618
3619
3620
      var _ref2;

      (_ref2 = []).concat.apply(_ref2, document.body.children).forEach(function (element) {
XhmikosR's avatar
XhmikosR committed
3621
3622
        return EventHandler.off(element, 'mouseover', noop);
      });
XhmikosR's avatar
Dist.  
XhmikosR committed
3623
3624
    }

XhmikosR's avatar
XhmikosR committed
3625
3626
3627
    this._activeTrigger[TRIGGER_CLICK] = false;
    this._activeTrigger[TRIGGER_FOCUS] = false;
    this._activeTrigger[TRIGGER_HOVER] = false;
XhmikosR's avatar
Dist.  
XhmikosR committed
3628

XhmikosR's avatar
XhmikosR committed
3629
    if (this.tip.classList.contains(CLASS_NAME_FADE$1)) {
XhmikosR's avatar
XhmikosR committed
3630
      var transitionDuration = getTransitionDurationFromElement(tip);
XhmikosR's avatar
Dist.  
XhmikosR committed
3631
3632
3633
3634
3635
3636
3637
      EventHandler.one(tip, TRANSITION_END, complete);
      emulateTransitionEnd(tip, transitionDuration);
    } else {
      complete();
    }

    this._hoverState = '';
XhmikosR's avatar
XhmikosR committed
3638
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3639

XhmikosR's avatar
XhmikosR committed
3640
  _proto.update = function update() {
XhmikosR's avatar
Dist.  
XhmikosR committed
3641
3642
3643
3644
    if (this._popper !== null) {
      this._popper.scheduleUpdate();
    }
  } // Protected
XhmikosR's avatar
XhmikosR committed
3645
  ;
XhmikosR's avatar
Dist.  
XhmikosR committed
3646

XhmikosR's avatar
XhmikosR committed
3647
  _proto.isWithContent = function isWithContent() {
XhmikosR's avatar
Dist.  
XhmikosR committed
3648
    return Boolean(this.getTitle());
XhmikosR's avatar
XhmikosR committed
3649
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3650

XhmikosR's avatar
XhmikosR committed
3651
  _proto.getTipElement = function getTipElement() {
XhmikosR's avatar
Dist.  
XhmikosR committed
3652
3653
3654
3655
    if (this.tip) {
      return this.tip;
    }

XhmikosR's avatar
XhmikosR committed
3656
    var element = document.createElement('div');
XhmikosR's avatar
Dist.  
XhmikosR committed
3657
3658
3659
    element.innerHTML = this.config.template;
    this.tip = element.children[0];
    return this.tip;
XhmikosR's avatar
XhmikosR committed
3660
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3661

XhmikosR's avatar
XhmikosR committed
3662
3663
  _proto.setContent = function setContent() {
    var tip = this.getTipElement();
XhmikosR's avatar
XhmikosR committed
3664
    this.setElementContent(SelectorEngine.findOne(SELECTOR_TOOLTIP_INNER, tip), this.getTitle());
XhmikosR's avatar
XhmikosR committed
3665
    tip.classList.remove(CLASS_NAME_FADE$1, CLASS_NAME_SHOW$3);
XhmikosR's avatar
XhmikosR committed
3666
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3667

XhmikosR's avatar
XhmikosR committed
3668
  _proto.setElementContent = function setElementContent(element, content) {
XhmikosR's avatar
Dist.  
XhmikosR committed
3669
3670
3671
3672
    if (element === null) {
      return;
    }

3673
    if (typeof content === 'object' && isElement(content)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
3674
3675
3676
3677
3678
3679
3680
3681
3682
3683
3684
      if (content.jquery) {
        content = content[0];
      } // content is a DOM node or a jQuery


      if (this.config.html) {
        if (content.parentNode !== element) {
          element.innerHTML = '';
          element.appendChild(content);
        }
      } else {
XhmikosR's avatar
XhmikosR committed
3685
        element.textContent = content.textContent;
XhmikosR's avatar
Dist.  
XhmikosR committed
3686
3687
3688
3689
3690
3691
3692
      }

      return;
    }

    if (this.config.html) {
      if (this.config.sanitize) {
XhmikosR's avatar
XhmikosR committed
3693
        content = sanitizeHtml(content, this.config.allowList, this.config.sanitizeFn);
XhmikosR's avatar
Dist.  
XhmikosR committed
3694
3695
3696
3697
      }

      element.innerHTML = content;
    } else {
XhmikosR's avatar
XhmikosR committed
3698
      element.textContent = content;
XhmikosR's avatar
Dist.  
XhmikosR committed
3699
    }
XhmikosR's avatar
XhmikosR committed
3700
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3701

XhmikosR's avatar
XhmikosR committed
3702
3703
  _proto.getTitle = function getTitle() {
    var title = this.element.getAttribute('data-original-title');
XhmikosR's avatar
Dist.  
XhmikosR committed
3704
3705
3706
3707
3708
3709
3710

    if (!title) {
      title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;
    }

    return title;
  } // Private
XhmikosR's avatar
XhmikosR committed
3711
  ;
XhmikosR's avatar
Dist.  
XhmikosR committed
3712

XhmikosR's avatar
XhmikosR committed
3713
3714
3715
3716
3717
3718
3719
3720
3721
3722
3723
3724
3725
3726
3727
3728
3729
3730
3731
3732
3733
3734
3735
3736
3737
3738
  _proto._getPopperConfig = function _getPopperConfig(attachment) {
    var _this3 = this;

    var defaultBsConfig = {
      placement: attachment,
      modifiers: {
        offset: this._getOffset(),
        flip: {
          behavior: this.config.fallbackPlacement
        },
        arrow: {
          element: "." + this.constructor.NAME + "-arrow"
        },
        preventOverflow: {
          boundariesElement: this.config.boundary
        }
      },
      onCreate: function onCreate(data) {
        if (data.originalPlacement !== data.placement) {
          _this3._handlePopperPlacementChange(data);
        }
      },
      onUpdate: function onUpdate(data) {
        return _this3._handlePopperPlacementChange(data);
      }
    };
XhmikosR's avatar
XhmikosR committed
3739
    return _extends({}, defaultBsConfig, this.config.popperConfig);
XhmikosR's avatar
XhmikosR committed
3740
3741
  };

3742
3743
3744
3745
  _proto._addAttachmentClass = function _addAttachmentClass(attachment) {
    this.getTipElement().classList.add(CLASS_PREFIX + "-" + attachment);
  };

XhmikosR's avatar
XhmikosR committed
3746
  _proto._getOffset = function _getOffset() {
XhmikosR's avatar
XhmikosR committed
3747
    var _this4 = this;
XhmikosR's avatar
Dist.  
XhmikosR committed
3748

XhmikosR's avatar
XhmikosR committed
3749
    var offset = {};
XhmikosR's avatar
Dist.  
XhmikosR committed
3750
3751

    if (typeof this.config.offset === 'function') {
XhmikosR's avatar
XhmikosR committed
3752
      offset.fn = function (data) {
XhmikosR's avatar
XhmikosR committed
3753
        data.offsets = _extends({}, data.offsets, _this4.config.offset(data.offsets, _this4.element) || {});
XhmikosR's avatar
Dist.  
XhmikosR committed
3754
3755
3756
3757
3758
3759
3760
        return data;
      };
    } else {
      offset.offset = this.config.offset;
    }

    return offset;
XhmikosR's avatar
XhmikosR committed
3761
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3762

XhmikosR's avatar
XhmikosR committed
3763
  _proto._getContainer = function _getContainer() {
XhmikosR's avatar
Dist.  
XhmikosR committed
3764
3765
3766
3767
3768
3769
3770
3771
3772
    if (this.config.container === false) {
      return document.body;
    }

    if (isElement(this.config.container)) {
      return this.config.container;
    }

    return SelectorEngine.findOne(this.config.container);
XhmikosR's avatar
XhmikosR committed
3773
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3774

XhmikosR's avatar
XhmikosR committed
3775
  _proto._getAttachment = function _getAttachment(placement) {
XhmikosR's avatar
XhmikosR committed
3776
    return AttachmentMap[placement.toUpperCase()];
XhmikosR's avatar
XhmikosR committed
3777
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3778

XhmikosR's avatar
XhmikosR committed
3779
  _proto._setListeners = function _setListeners() {
XhmikosR's avatar
XhmikosR committed
3780
    var _this5 = this;
XhmikosR's avatar
XhmikosR committed
3781
3782
3783

    var triggers = this.config.trigger.split(' ');
    triggers.forEach(function (trigger) {
XhmikosR's avatar
Dist.  
XhmikosR committed
3784
      if (trigger === 'click') {
XhmikosR's avatar
XhmikosR committed
3785
3786
        EventHandler.on(_this5.element, _this5.constructor.Event.CLICK, _this5.config.selector, function (event) {
          return _this5.toggle(event);
XhmikosR's avatar
XhmikosR committed
3787
        });
XhmikosR's avatar
XhmikosR committed
3788
3789
3790
      } else if (trigger !== TRIGGER_MANUAL) {
        var eventIn = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSEENTER : _this5.constructor.Event.FOCUSIN;
        var eventOut = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSELEAVE : _this5.constructor.Event.FOCUSOUT;
XhmikosR's avatar
XhmikosR committed
3791
3792
        EventHandler.on(_this5.element, eventIn, _this5.config.selector, function (event) {
          return _this5._enter(event);
XhmikosR's avatar
XhmikosR committed
3793
        });
XhmikosR's avatar
XhmikosR committed
3794
3795
        EventHandler.on(_this5.element, eventOut, _this5.config.selector, function (event) {
          return _this5._leave(event);
XhmikosR's avatar
XhmikosR committed
3796
        });
XhmikosR's avatar
Dist.  
XhmikosR committed
3797
3798
      }
    });
Mark Otto's avatar
dist v5    
Mark Otto committed
3799
3800

    this._hideModalHandler = function () {
XhmikosR's avatar
XhmikosR committed
3801
3802
      if (_this5.element) {
        _this5.hide();
XhmikosR's avatar
Dist.  
XhmikosR committed
3803
      }
Mark Otto's avatar
dist v5    
Mark Otto committed
3804
3805
    };

XhmikosR's avatar
XhmikosR committed
3806
    EventHandler.on(this.element.closest("." + CLASS_NAME_MODAL), 'hide.bs.modal', this._hideModalHandler);
XhmikosR's avatar
Dist.  
XhmikosR committed
3807
3808

    if (this.config.selector) {
XhmikosR's avatar
XhmikosR committed
3809
      this.config = _extends({}, this.config, {
XhmikosR's avatar
Dist.  
XhmikosR committed
3810
3811
3812
3813
3814
3815
        trigger: 'manual',
        selector: ''
      });
    } else {
      this._fixTitle();
    }
XhmikosR's avatar
XhmikosR committed
3816
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3817

XhmikosR's avatar
XhmikosR committed
3818
3819
  _proto._fixTitle = function _fixTitle() {
    var titleType = typeof this.element.getAttribute('data-original-title');
XhmikosR's avatar
Dist.  
XhmikosR committed
3820
3821
3822
3823
3824

    if (this.element.getAttribute('title') || titleType !== 'string') {
      this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');
      this.element.setAttribute('title', '');
    }
XhmikosR's avatar
XhmikosR committed
3825
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3826

XhmikosR's avatar
XhmikosR committed
3827
3828
  _proto._enter = function _enter(event, context) {
    var dataKey = this.constructor.DATA_KEY;
XhmikosR's avatar
XhmikosR committed
3829
    context = context || Data.getData(event.delegateTarget, dataKey);
XhmikosR's avatar
Dist.  
XhmikosR committed
3830
3831

    if (!context) {
XhmikosR's avatar
XhmikosR committed
3832
3833
      context = new this.constructor(event.delegateTarget, this._getDelegateConfig());
      Data.setData(event.delegateTarget, dataKey, context);
XhmikosR's avatar
Dist.  
XhmikosR committed
3834
3835
3836
    }

    if (event) {
XhmikosR's avatar
XhmikosR committed
3837
      context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;
XhmikosR's avatar
Dist.  
XhmikosR committed
3838
3839
    }

XhmikosR's avatar
XhmikosR committed
3840
3841
    if (context.getTipElement().classList.contains(CLASS_NAME_SHOW$3) || context._hoverState === HOVER_STATE_SHOW) {
      context._hoverState = HOVER_STATE_SHOW;
XhmikosR's avatar
Dist.  
XhmikosR committed
3842
3843
3844
3845
      return;
    }

    clearTimeout(context._timeout);
XhmikosR's avatar
XhmikosR committed
3846
    context._hoverState = HOVER_STATE_SHOW;
XhmikosR's avatar
Dist.  
XhmikosR committed
3847
3848
3849
3850
3851
3852

    if (!context.config.delay || !context.config.delay.show) {
      context.show();
      return;
    }

XhmikosR's avatar
XhmikosR committed
3853
    context._timeout = setTimeout(function () {
XhmikosR's avatar
XhmikosR committed
3854
      if (context._hoverState === HOVER_STATE_SHOW) {
XhmikosR's avatar
Dist.  
XhmikosR committed
3855
3856
3857
        context.show();
      }
    }, context.config.delay.show);
XhmikosR's avatar
XhmikosR committed
3858
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3859

XhmikosR's avatar
XhmikosR committed
3860
3861
  _proto._leave = function _leave(event, context) {
    var dataKey = this.constructor.DATA_KEY;
XhmikosR's avatar
XhmikosR committed
3862
    context = context || Data.getData(event.delegateTarget, dataKey);
XhmikosR's avatar
Dist.  
XhmikosR committed
3863
3864

    if (!context) {
XhmikosR's avatar
XhmikosR committed
3865
3866
      context = new this.constructor(event.delegateTarget, this._getDelegateConfig());
      Data.setData(event.delegateTarget, dataKey, context);
XhmikosR's avatar
Dist.  
XhmikosR committed
3867
3868
3869
    }

    if (event) {
XhmikosR's avatar
XhmikosR committed
3870
      context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = false;
XhmikosR's avatar
Dist.  
XhmikosR committed
3871
3872
3873
3874
3875
3876
3877
    }

    if (context._isWithActiveTrigger()) {
      return;
    }

    clearTimeout(context._timeout);
XhmikosR's avatar
XhmikosR committed
3878
    context._hoverState = HOVER_STATE_OUT;
XhmikosR's avatar
Dist.  
XhmikosR committed
3879
3880
3881
3882
3883
3884

    if (!context.config.delay || !context.config.delay.hide) {
      context.hide();
      return;
    }

XhmikosR's avatar
XhmikosR committed
3885
    context._timeout = setTimeout(function () {
XhmikosR's avatar
XhmikosR committed
3886
      if (context._hoverState === HOVER_STATE_OUT) {
XhmikosR's avatar
Dist.  
XhmikosR committed
3887
3888
3889
        context.hide();
      }
    }, context.config.delay.hide);
XhmikosR's avatar
XhmikosR committed
3890
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3891

XhmikosR's avatar
XhmikosR committed
3892
3893
  _proto._isWithActiveTrigger = function _isWithActiveTrigger() {
    for (var trigger in this._activeTrigger) {
XhmikosR's avatar
Dist.  
XhmikosR committed
3894
3895
3896
3897
3898
3899
      if (this._activeTrigger[trigger]) {
        return true;
      }
    }

    return false;
XhmikosR's avatar
XhmikosR committed
3900
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3901

XhmikosR's avatar
XhmikosR committed
3902
3903
3904
  _proto._getConfig = function _getConfig(config) {
    var dataAttributes = Manipulator.getDataAttributes(this.element);
    Object.keys(dataAttributes).forEach(function (dataAttr) {
XhmikosR's avatar
Dist.  
XhmikosR committed
3905
3906
3907
3908
3909
3910
3911
3912
3913
      if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {
        delete dataAttributes[dataAttr];
      }
    });

    if (config && typeof config.container === 'object' && config.container.jquery) {
      config.container = config.container[0];
    }

XhmikosR's avatar
XhmikosR committed
3914
    config = _extends({}, this.constructor.Default, dataAttributes, typeof config === 'object' && config ? config : {});
XhmikosR's avatar
Dist.  
XhmikosR committed
3915
3916
3917
3918
3919
3920
3921
3922
3923
3924
3925
3926
3927
3928
3929
3930
3931
3932
3933

    if (typeof config.delay === 'number') {
      config.delay = {
        show: config.delay,
        hide: config.delay
      };
    }

    if (typeof config.title === 'number') {
      config.title = config.title.toString();
    }

    if (typeof config.content === 'number') {
      config.content = config.content.toString();
    }

    typeCheckConfig(NAME$6, config, this.constructor.DefaultType);

    if (config.sanitize) {
XhmikosR's avatar
XhmikosR committed
3934
      config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn);
XhmikosR's avatar
Dist.  
XhmikosR committed
3935
3936
3937
    }

    return config;
XhmikosR's avatar
XhmikosR committed
3938
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3939

XhmikosR's avatar
XhmikosR committed
3940
3941
  _proto._getDelegateConfig = function _getDelegateConfig() {
    var config = {};
XhmikosR's avatar
Dist.  
XhmikosR committed
3942
3943

    if (this.config) {
XhmikosR's avatar
XhmikosR committed
3944
      for (var key in this.config) {
XhmikosR's avatar
Dist.  
XhmikosR committed
3945
3946
3947
3948
3949
3950
3951
        if (this.constructor.Default[key] !== this.config[key]) {
          config[key] = this.config[key];
        }
      }
    }

    return config;
XhmikosR's avatar
XhmikosR committed
3952
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3953

XhmikosR's avatar
XhmikosR committed
3954
3955
3956
  _proto._cleanTipClass = function _cleanTipClass() {
    var tip = this.getTipElement();
    var tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX);
XhmikosR's avatar
Dist.  
XhmikosR committed
3957

XhmikosR's avatar
XhmikosR committed
3958
    if (tabClass !== null && tabClass.length > 0) {
XhmikosR's avatar
XhmikosR committed
3959
3960
3961
3962
3963
      tabClass.map(function (token) {
        return token.trim();
      }).forEach(function (tClass) {
        return tip.classList.remove(tClass);
      });
XhmikosR's avatar
Dist.  
XhmikosR committed
3964
    }
XhmikosR's avatar
XhmikosR committed
3965
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3966

XhmikosR's avatar
XhmikosR committed
3967
  _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) {
XhmikosR's avatar
XhmikosR committed
3968
    this.tip = popperData.instance.popper;
XhmikosR's avatar
Dist.  
XhmikosR committed
3969
3970
3971

    this._cleanTipClass();

3972
    this._addAttachmentClass(this._getAttachment(popperData.placement));
XhmikosR's avatar
XhmikosR committed
3973
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3974

XhmikosR's avatar
XhmikosR committed
3975
3976
3977
  _proto._fixTransition = function _fixTransition() {
    var tip = this.getTipElement();
    var initConfigAnimation = this.config.animation;
XhmikosR's avatar
Dist.  
XhmikosR committed
3978
3979
3980
3981
3982

    if (tip.getAttribute('x-placement') !== null) {
      return;
    }

XhmikosR's avatar
XhmikosR committed
3983
    tip.classList.remove(CLASS_NAME_FADE$1);
XhmikosR's avatar
Dist.  
XhmikosR committed
3984
3985
3986
3987
3988
    this.config.animation = false;
    this.hide();
    this.show();
    this.config.animation = initConfigAnimation;
  } // Static
XhmikosR's avatar
XhmikosR committed
3989
  ;
XhmikosR's avatar
Dist.  
XhmikosR committed
3990

XhmikosR's avatar
XhmikosR committed
3991
  Tooltip.jQueryInterface = function jQueryInterface(config) {
XhmikosR's avatar
Dist.  
XhmikosR committed
3992
    return this.each(function () {
XhmikosR's avatar
XhmikosR committed
3993
      var data = Data.getData(this, DATA_KEY$6);
XhmikosR's avatar
Dist.  
XhmikosR committed
3994

XhmikosR's avatar
XhmikosR committed
3995
      var _config = typeof config === 'object' && config;
XhmikosR's avatar
Dist.  
XhmikosR committed
3996
3997
3998
3999
4000

      if (!data && /dispose|hide/.test(config)) {
        return;
      }

For faster browsing, not all history is shown. View entire blame