bootstrap.esm.js 140 KB
Newer Older
XhmikosR's avatar
Dist.  
XhmikosR committed
1
/*!
XhmikosR's avatar
XhmikosR committed
2
  * Bootstrap v5.0.0-alpha3 (https://getbootstrap.com/)
XhmikosR's avatar
XhmikosR committed
3
  * Copyright 2011-2020 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
XhmikosR's avatar
XhmikosR committed
4
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
XhmikosR's avatar
Dist.  
XhmikosR committed
5
6
7
  */
import Popper from 'popper.js';

XhmikosR's avatar
XhmikosR committed
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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);
  return Constructor;
}

XhmikosR's avatar
XhmikosR committed
24
25
26
27
28
29
30
31
32
33
function _extends() {
  _extends = Object.assign || 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];
        }
      }
XhmikosR's avatar
XhmikosR committed
34
35
    }

XhmikosR's avatar
XhmikosR committed
36
37
38
39
    return target;
  };

  return _extends.apply(this, arguments);
XhmikosR's avatar
XhmikosR committed
40
41
42
43
44
45
46
47
}

function _inheritsLoose(subClass, superClass) {
  subClass.prototype = Object.create(superClass.prototype);
  subClass.prototype.constructor = subClass;
  subClass.__proto__ = superClass;
}

XhmikosR's avatar
Dist.  
XhmikosR committed
48
49
/**
 * --------------------------------------------------------------------------
XhmikosR's avatar
XhmikosR committed
50
 * Bootstrap (v5.0.0-alpha3): util/index.js
XhmikosR's avatar
XhmikosR committed
51
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
XhmikosR's avatar
Dist.  
XhmikosR committed
52
53
 * --------------------------------------------------------------------------
 */
XhmikosR's avatar
XhmikosR committed
54
55
var MAX_UID = 1000000;
var MILLISECONDS_MULTIPLIER = 1000;
XhmikosR's avatar
XhmikosR committed
56
var TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
XhmikosR's avatar
XhmikosR committed
57
58

var toType = function toType(obj) {
XhmikosR's avatar
XhmikosR committed
59
60
61
62
  if (obj === null || obj === undefined) {
    return "" + obj;
  }

XhmikosR's avatar
XhmikosR committed
63
64
  return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
};
XhmikosR's avatar
Dist.  
XhmikosR committed
65
66
67
68
69
70
71
/**
 * --------------------------------------------------------------------------
 * Public Util Api
 * --------------------------------------------------------------------------
 */


XhmikosR's avatar
XhmikosR committed
72
var getUID = function getUID(prefix) {
XhmikosR's avatar
Dist.  
XhmikosR committed
73
  do {
Mark Otto's avatar
Mark Otto committed
74
    prefix += Math.floor(Math.random() * MAX_UID);
XhmikosR's avatar
Dist.  
XhmikosR committed
75
76
77
78
79
  } while (document.getElementById(prefix));

  return prefix;
};

XhmikosR's avatar
XhmikosR committed
80
var getSelector = function getSelector(element) {
XhmikosR's avatar
XhmikosR committed
81
  var selector = element.getAttribute('data-target');
XhmikosR's avatar
Dist.  
XhmikosR committed
82
83

  if (!selector || selector === '#') {
XhmikosR's avatar
XhmikosR committed
84
    var hrefAttr = element.getAttribute('href');
XhmikosR's avatar
XhmikosR committed
85
    selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;
XhmikosR's avatar
Dist.  
XhmikosR committed
86
87
  }

XhmikosR's avatar
XhmikosR committed
88
89
90
91
92
93
94
  return selector;
};

var getSelectorFromElement = function getSelectorFromElement(element) {
  var selector = getSelector(element);

  if (selector) {
XhmikosR's avatar
Dist.  
XhmikosR committed
95
96
    return document.querySelector(selector) ? selector : null;
  }
XhmikosR's avatar
XhmikosR committed
97
98
99
100
101
102
103

  return null;
};

var getElementFromSelector = function getElementFromSelector(element) {
  var selector = getSelector(element);
  return selector ? document.querySelector(selector) : null;
XhmikosR's avatar
Dist.  
XhmikosR committed
104
105
};

XhmikosR's avatar
XhmikosR committed
106
var getTransitionDurationFromElement = function getTransitionDurationFromElement(element) {
XhmikosR's avatar
Dist.  
XhmikosR committed
107
108
109
110
111
  if (!element) {
    return 0;
  } // Get transition-duration of the element


XhmikosR's avatar
XhmikosR committed
112
  var _window$getComputedSt = window.getComputedStyle(element),
XhmikosR's avatar
Dist.  
XhmikosR committed
113
114
115
      transitionDuration = _window$getComputedSt.transitionDuration,
      transitionDelay = _window$getComputedSt.transitionDelay;

XhmikosR's avatar
XhmikosR committed
116
117
  var floatTransitionDuration = parseFloat(transitionDuration);
  var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found
XhmikosR's avatar
Dist.  
XhmikosR committed
118
119
120
121
122
123
124
125
126
127
128

  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;
};

XhmikosR's avatar
XhmikosR committed
129
var triggerTransitionEnd = function triggerTransitionEnd(element) {
XhmikosR's avatar
XhmikosR committed
130
  element.dispatchEvent(new Event(TRANSITION_END));
XhmikosR's avatar
Dist.  
XhmikosR committed
131
132
};

XhmikosR's avatar
XhmikosR committed
133
134
135
var isElement = function isElement(obj) {
  return (obj[0] || obj).nodeType;
};
XhmikosR's avatar
Dist.  
XhmikosR committed
136

XhmikosR's avatar
XhmikosR committed
137
138
139
140
var emulateTransitionEnd = function emulateTransitionEnd(element, duration) {
  var called = false;
  var durationPadding = 5;
  var emulatedDuration = duration + durationPadding;
XhmikosR's avatar
Dist.  
XhmikosR committed
141
142
143
144
145
146
147

  function listener() {
    called = true;
    element.removeEventListener(TRANSITION_END, listener);
  }

  element.addEventListener(TRANSITION_END, listener);
XhmikosR's avatar
XhmikosR committed
148
  setTimeout(function () {
XhmikosR's avatar
Dist.  
XhmikosR committed
149
150
151
152
153
154
    if (!called) {
      triggerTransitionEnd(element);
    }
  }, emulatedDuration);
};

XhmikosR's avatar
XhmikosR committed
155
156
157
158
159
var typeCheckConfig = function typeCheckConfig(componentName, config, configTypes) {
  Object.keys(configTypes).forEach(function (property) {
    var expectedTypes = configTypes[property];
    var value = config[property];
    var valueType = value && isElement(value) ? 'element' : toType(value);
XhmikosR's avatar
Dist.  
XhmikosR committed
160
161

    if (!new RegExp(expectedTypes).test(valueType)) {
XhmikosR's avatar
XhmikosR committed
162
      throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\"."));
XhmikosR's avatar
Dist.  
XhmikosR committed
163
164
165
166
    }
  });
};

XhmikosR's avatar
XhmikosR committed
167
var isVisible = function isVisible(element) {
XhmikosR's avatar
Dist.  
XhmikosR committed
168
169
170
171
172
  if (!element) {
    return false;
  }

  if (element.style && element.parentNode && element.parentNode.style) {
XhmikosR's avatar
XhmikosR committed
173
174
175
    var elementStyle = getComputedStyle(element);
    var parentNodeStyle = getComputedStyle(element.parentNode);
    return elementStyle.display !== 'none' && parentNodeStyle.display !== 'none' && elementStyle.visibility !== 'hidden';
XhmikosR's avatar
Dist.  
XhmikosR committed
176
177
178
179
180
  }

  return false;
};

XhmikosR's avatar
XhmikosR committed
181
var findShadowRoot = function findShadowRoot(element) {
XhmikosR's avatar
Dist.  
XhmikosR committed
182
183
184
185
186
187
  if (!document.documentElement.attachShadow) {
    return null;
  } // Can find the shadow root otherwise it'll return the document


  if (typeof element.getRootNode === 'function') {
XhmikosR's avatar
XhmikosR committed
188
    var root = element.getRootNode();
XhmikosR's avatar
Dist.  
XhmikosR committed
189
190
191
192
193
194
195
196
197
198
199
200
201
    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 findShadowRoot(element.parentNode);
XhmikosR's avatar
XhmikosR committed
202
};
XhmikosR's avatar
Dist.  
XhmikosR committed
203

XhmikosR's avatar
XhmikosR committed
204
205
206
var noop = function noop() {
  return function () {};
};
XhmikosR's avatar
Dist.  
XhmikosR committed
207

XhmikosR's avatar
XhmikosR committed
208
209
210
var reflow = function reflow(element) {
  return element.offsetHeight;
};
XhmikosR's avatar
Dist.  
XhmikosR committed
211

XhmikosR's avatar
XhmikosR committed
212
213
214
215
216
217
218
219
220
221
222
var getjQuery = function getjQuery() {
  var _window = window,
      jQuery = _window.jQuery;

  if (jQuery && !document.body.hasAttribute('data-no-jquery')) {
    return jQuery;
  }

  return null;
};

XhmikosR's avatar
XhmikosR committed
223
224
225
226
227
228
229
230
var onDOMContentLoaded = function onDOMContentLoaded(callback) {
  if (document.readyState === 'loading') {
    document.addEventListener('DOMContentLoaded', callback);
  } else {
    callback();
  }
};

XhmikosR's avatar
Dist.  
XhmikosR committed
231
232
/**
 * --------------------------------------------------------------------------
XhmikosR's avatar
XhmikosR committed
233
 * Bootstrap (v5.0.0-alpha3): dom/data.js
XhmikosR's avatar
XhmikosR committed
234
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
XhmikosR's avatar
Dist.  
XhmikosR committed
235
236
237
238
239
240
241
242
 * --------------------------------------------------------------------------
 */

/**
 * ------------------------------------------------------------------------
 * Constants
 * ------------------------------------------------------------------------
 */
XhmikosR's avatar
XhmikosR committed
243
244
245
var mapData = function () {
  var storeData = {};
  var id = 1;
XhmikosR's avatar
Dist.  
XhmikosR committed
246
  return {
XhmikosR's avatar
XhmikosR committed
247
    set: function set(element, key, data) {
XhmikosR's avatar
XhmikosR committed
248
249
      if (typeof element.bsKey === 'undefined') {
        element.bsKey = {
XhmikosR's avatar
XhmikosR committed
250
251
          key: key,
          id: id
XhmikosR's avatar
Dist.  
XhmikosR committed
252
253
254
255
        };
        id++;
      }

XhmikosR's avatar
XhmikosR committed
256
      storeData[element.bsKey.id] = data;
XhmikosR's avatar
Dist.  
XhmikosR committed
257
    },
XhmikosR's avatar
XhmikosR committed
258
    get: function get(element, key) {
XhmikosR's avatar
XhmikosR committed
259
      if (!element || typeof element.bsKey === 'undefined') {
XhmikosR's avatar
Dist.  
XhmikosR committed
260
261
262
        return null;
      }

XhmikosR's avatar
XhmikosR committed
263
      var keyProperties = element.bsKey;
XhmikosR's avatar
Dist.  
XhmikosR committed
264
265
266
267
268
269
270

      if (keyProperties.key === key) {
        return storeData[keyProperties.id];
      }

      return null;
    },
XhmikosR's avatar
XhmikosR committed
271
    delete: function _delete(element, key) {
XhmikosR's avatar
XhmikosR committed
272
      if (typeof element.bsKey === 'undefined') {
XhmikosR's avatar
Dist.  
XhmikosR committed
273
274
275
        return;
      }

XhmikosR's avatar
XhmikosR committed
276
      var keyProperties = element.bsKey;
XhmikosR's avatar
Dist.  
XhmikosR committed
277
278
279

      if (keyProperties.key === key) {
        delete storeData[keyProperties.id];
XhmikosR's avatar
XhmikosR committed
280
        delete element.bsKey;
XhmikosR's avatar
Dist.  
XhmikosR committed
281
282
283
      }
    }
  };
XhmikosR's avatar
XhmikosR committed
284
}();
XhmikosR's avatar
Dist.  
XhmikosR committed
285

XhmikosR's avatar
XhmikosR committed
286
287
var Data = {
  setData: function setData(instance, key, data) {
XhmikosR's avatar
Dist.  
XhmikosR committed
288
289
    mapData.set(instance, key, data);
  },
XhmikosR's avatar
XhmikosR committed
290
  getData: function getData(instance, key) {
XhmikosR's avatar
Dist.  
XhmikosR committed
291
292
    return mapData.get(instance, key);
  },
XhmikosR's avatar
XhmikosR committed
293
  removeData: function removeData(instance, key) {
XhmikosR's avatar
Dist.  
XhmikosR committed
294
295
    mapData.delete(instance, key);
  }
XhmikosR's avatar
XhmikosR committed
296
};
XhmikosR's avatar
Dist.  
XhmikosR committed
297
298
299

/**
 * --------------------------------------------------------------------------
XhmikosR's avatar
XhmikosR committed
300
 * Bootstrap (v5.0.0-alpha3): dom/event-handler.js
XhmikosR's avatar
XhmikosR committed
301
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
XhmikosR's avatar
Dist.  
XhmikosR committed
302
303
304
305
306
307
308
309
 * --------------------------------------------------------------------------
 */
/**
 * ------------------------------------------------------------------------
 * Constants
 * ------------------------------------------------------------------------
 */

XhmikosR's avatar
XhmikosR committed
310
311
312
313
var namespaceRegex = /[^.]*(?=\..*)\.|.*/;
var stripNameRegex = /\..*/;
var stripUidRegex = /::\d+$/;
var eventRegistry = {}; // Events storage
XhmikosR's avatar
Dist.  
XhmikosR committed
314

XhmikosR's avatar
XhmikosR committed
315
316
var uidEvent = 1;
var customEvents = {
XhmikosR's avatar
Dist.  
XhmikosR committed
317
318
319
  mouseenter: 'mouseover',
  mouseleave: 'mouseout'
};
XhmikosR's avatar
XhmikosR committed
320
var nativeEvents = ['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll'];
XhmikosR's avatar
Dist.  
XhmikosR committed
321
322
323
324
325
326
327
/**
 * ------------------------------------------------------------------------
 * Private methods
 * ------------------------------------------------------------------------
 */

function getUidEvent(element, uid) {
XhmikosR's avatar
XhmikosR committed
328
  return uid && uid + "::" + uidEvent++ || element.uidEvent || uidEvent++;
XhmikosR's avatar
Dist.  
XhmikosR committed
329
330
331
}

function getEvent(element) {
XhmikosR's avatar
XhmikosR committed
332
  var uid = getUidEvent(element);
XhmikosR's avatar
Dist.  
XhmikosR committed
333
334
335
336
337
338
339
  element.uidEvent = uid;
  eventRegistry[uid] = eventRegistry[uid] || {};
  return eventRegistry[uid];
}

function bootstrapHandler(element, fn) {
  return function handler(event) {
XhmikosR's avatar
XhmikosR committed
340
341
    event.delegateTarget = element;

XhmikosR's avatar
Dist.  
XhmikosR committed
342
343
344
345
346
347
348
349
350
351
    if (handler.oneOff) {
      EventHandler.off(element, event.type, fn);
    }

    return fn.apply(element, [event]);
  };
}

function bootstrapDelegationHandler(element, selector, fn) {
  return function handler(event) {
XhmikosR's avatar
XhmikosR committed
352
    var domElements = element.querySelectorAll(selector);
XhmikosR's avatar
Dist.  
XhmikosR committed
353

XhmikosR's avatar
XhmikosR committed
354
355
    for (var target = event.target; target && target !== this; target = target.parentNode) {
      for (var i = domElements.length; i--;) {
XhmikosR's avatar
Dist.  
XhmikosR committed
356
        if (domElements[i] === target) {
XhmikosR's avatar
XhmikosR committed
357
358
          event.delegateTarget = target;

XhmikosR's avatar
Dist.  
XhmikosR committed
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
          if (handler.oneOff) {
            EventHandler.off(element, event.type, fn);
          }

          return fn.apply(target, [event]);
        }
      }
    } // To please ESLint


    return null;
  };
}

function findHandler(events, handler, delegationSelector) {
  if (delegationSelector === void 0) {
    delegationSelector = null;
  }

Mark Otto's avatar
dist v5    
Mark Otto committed
378
379
380
381
  var uidEventList = Object.keys(events);

  for (var i = 0, len = uidEventList.length; i < len; i++) {
    var event = events[uidEventList[i]];
XhmikosR's avatar
Dist.  
XhmikosR committed
382
383

    if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {
Mark Otto's avatar
dist v5    
Mark Otto committed
384
      return event;
XhmikosR's avatar
Dist.  
XhmikosR committed
385
386
387
388
389
390
391
    }
  }

  return null;
}

function normalizeParams(originalTypeEvent, handler, delegationFn) {
XhmikosR's avatar
XhmikosR committed
392
393
  var delegation = typeof handler === 'string';
  var originalHandler = delegation ? delegationFn : handler; // allow to get the native events from namespaced events ('click.bs.button' --> 'click')
XhmikosR's avatar
Dist.  
XhmikosR committed
394

XhmikosR's avatar
XhmikosR committed
395
396
  var typeEvent = originalTypeEvent.replace(stripNameRegex, '');
  var custom = customEvents[typeEvent];
XhmikosR's avatar
Dist.  
XhmikosR committed
397
398
399
400
401

  if (custom) {
    typeEvent = custom;
  }

XhmikosR's avatar
XhmikosR committed
402
  var isNative = nativeEvents.indexOf(typeEvent) > -1;
XhmikosR's avatar
Dist.  
XhmikosR committed
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420

  if (!isNative) {
    typeEvent = originalTypeEvent;
  }

  return [delegation, originalHandler, typeEvent];
}

function addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {
  if (typeof originalTypeEvent !== 'string' || !element) {
    return;
  }

  if (!handler) {
    handler = delegationFn;
    delegationFn = null;
  }

XhmikosR's avatar
XhmikosR committed
421
422
423
424
  var _normalizeParams = normalizeParams(originalTypeEvent, handler, delegationFn),
      delegation = _normalizeParams[0],
      originalHandler = _normalizeParams[1],
      typeEvent = _normalizeParams[2];
XhmikosR's avatar
Dist.  
XhmikosR committed
425

XhmikosR's avatar
XhmikosR committed
426
427
428
  var events = getEvent(element);
  var handlers = events[typeEvent] || (events[typeEvent] = {});
  var previousFn = findHandler(handlers, originalHandler, delegation ? handler : null);
XhmikosR's avatar
Dist.  
XhmikosR committed
429
430
431
432
433
434

  if (previousFn) {
    previousFn.oneOff = previousFn.oneOff && oneOff;
    return;
  }

XhmikosR's avatar
XhmikosR committed
435
436
  var uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''));
  var fn = delegation ? bootstrapDelegationHandler(element, handler, delegationFn) : bootstrapHandler(element, handler);
XhmikosR's avatar
Dist.  
XhmikosR committed
437
438
439
440
441
442
443
444
445
  fn.delegationSelector = delegation ? handler : null;
  fn.originalHandler = originalHandler;
  fn.oneOff = oneOff;
  fn.uidEvent = uid;
  handlers[uid] = fn;
  element.addEventListener(typeEvent, fn, delegation);
}

function removeHandler(element, events, typeEvent, handler, delegationSelector) {
XhmikosR's avatar
XhmikosR committed
446
  var fn = findHandler(events[typeEvent], handler, delegationSelector);
XhmikosR's avatar
Dist.  
XhmikosR committed
447

Mark Otto's avatar
dist v5    
Mark Otto committed
448
  if (!fn) {
XhmikosR's avatar
Dist.  
XhmikosR committed
449
450
451
452
453
454
455
456
    return;
  }

  element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));
  delete events[typeEvent][fn.uidEvent];
}

function removeNamespacedHandlers(element, events, typeEvent, namespace) {
XhmikosR's avatar
XhmikosR committed
457
458
  var storeElementEvent = events[typeEvent] || {};
  Object.keys(storeElementEvent).forEach(function (handlerKey) {
XhmikosR's avatar
Dist.  
XhmikosR committed
459
    if (handlerKey.indexOf(namespace) > -1) {
XhmikosR's avatar
XhmikosR committed
460
      var event = storeElementEvent[handlerKey];
XhmikosR's avatar
Dist.  
XhmikosR committed
461
462
463
464
465
      removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector);
    }
  });
}

XhmikosR's avatar
XhmikosR committed
466
467
var EventHandler = {
  on: function on(element, event, handler, delegationFn) {
XhmikosR's avatar
Dist.  
XhmikosR committed
468
469
    addHandler(element, event, handler, delegationFn, false);
  },
XhmikosR's avatar
XhmikosR committed
470
  one: function one(element, event, handler, delegationFn) {
XhmikosR's avatar
Dist.  
XhmikosR committed
471
472
    addHandler(element, event, handler, delegationFn, true);
  },
XhmikosR's avatar
XhmikosR committed
473
  off: function off(element, originalTypeEvent, handler, delegationFn) {
XhmikosR's avatar
Dist.  
XhmikosR committed
474
475
476
477
    if (typeof originalTypeEvent !== 'string' || !element) {
      return;
    }

XhmikosR's avatar
XhmikosR committed
478
479
480
481
    var _normalizeParams2 = normalizeParams(originalTypeEvent, handler, delegationFn),
        delegation = _normalizeParams2[0],
        originalHandler = _normalizeParams2[1],
        typeEvent = _normalizeParams2[2];
XhmikosR's avatar
Dist.  
XhmikosR committed
482

XhmikosR's avatar
XhmikosR committed
483
484
485
    var inNamespace = typeEvent !== originalTypeEvent;
    var events = getEvent(element);
    var isNamespace = originalTypeEvent.charAt(0) === '.';
XhmikosR's avatar
Dist.  
XhmikosR committed
486
487
488
489
490
491
492
493
494
495
496
497

    if (typeof originalHandler !== 'undefined') {
      // Simplest case: handler is passed, remove that listener ONLY.
      if (!events || !events[typeEvent]) {
        return;
      }

      removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null);
      return;
    }

    if (isNamespace) {
XhmikosR's avatar
XhmikosR committed
498
      Object.keys(events).forEach(function (elementEvent) {
XhmikosR's avatar
XhmikosR committed
499
        removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));
XhmikosR's avatar
Dist.  
XhmikosR committed
500
501
502
      });
    }

XhmikosR's avatar
XhmikosR committed
503
504
505
    var storeElementEvent = events[typeEvent] || {};
    Object.keys(storeElementEvent).forEach(function (keyHandlers) {
      var handlerKey = keyHandlers.replace(stripUidRegex, '');
XhmikosR's avatar
Dist.  
XhmikosR committed
506
507

      if (!inNamespace || originalTypeEvent.indexOf(handlerKey) > -1) {
XhmikosR's avatar
XhmikosR committed
508
        var event = storeElementEvent[keyHandlers];
XhmikosR's avatar
Dist.  
XhmikosR committed
509
510
511
512
        removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector);
      }
    });
  },
XhmikosR's avatar
XhmikosR committed
513
  trigger: function trigger(element, event, args) {
XhmikosR's avatar
Dist.  
XhmikosR committed
514
515
516
517
    if (typeof event !== 'string' || !element) {
      return null;
    }

XhmikosR's avatar
XhmikosR committed
518
    var $ = getjQuery();
XhmikosR's avatar
XhmikosR committed
519
520
521
522
523
524
525
526
    var typeEvent = event.replace(stripNameRegex, '');
    var inNamespace = event !== typeEvent;
    var isNative = nativeEvents.indexOf(typeEvent) > -1;
    var jQueryEvent;
    var bubbles = true;
    var nativeDispatch = true;
    var defaultPrevented = false;
    var evt = null;
XhmikosR's avatar
Dist.  
XhmikosR committed
527

XhmikosR's avatar
XhmikosR committed
528
529
530
    if (inNamespace && $) {
      jQueryEvent = $.Event(event, args);
      $(element).trigger(jQueryEvent);
XhmikosR's avatar
Dist.  
XhmikosR committed
531
532
533
534
535
536
537
538
539
      bubbles = !jQueryEvent.isPropagationStopped();
      nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();
      defaultPrevented = jQueryEvent.isDefaultPrevented();
    }

    if (isNative) {
      evt = document.createEvent('HTMLEvents');
      evt.initEvent(typeEvent, bubbles, true);
    } else {
XhmikosR's avatar
XhmikosR committed
540
      evt = new CustomEvent(event, {
XhmikosR's avatar
XhmikosR committed
541
        bubbles: bubbles,
XhmikosR's avatar
Dist.  
XhmikosR committed
542
543
        cancelable: true
      });
XhmikosR's avatar
XhmikosR committed
544
    } // merge custom information in our event
XhmikosR's avatar
Dist.  
XhmikosR committed
545
546
547


    if (typeof args !== 'undefined') {
XhmikosR's avatar
XhmikosR committed
548
      Object.keys(args).forEach(function (key) {
XhmikosR's avatar
Dist.  
XhmikosR committed
549
        Object.defineProperty(evt, key, {
XhmikosR's avatar
XhmikosR committed
550
          get: function get() {
XhmikosR's avatar
Dist.  
XhmikosR committed
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
            return args[key];
          }
        });
      });
    }

    if (defaultPrevented) {
      evt.preventDefault();
    }

    if (nativeDispatch) {
      element.dispatchEvent(evt);
    }

    if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {
      jQueryEvent.preventDefault();
    }

    return evt;
  }
};

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

XhmikosR's avatar
XhmikosR committed
579
var NAME = 'alert';
XhmikosR's avatar
XhmikosR committed
580
var VERSION = '5.0.0-alpha3';
XhmikosR's avatar
XhmikosR committed
581
582
583
var DATA_KEY = 'bs.alert';
var EVENT_KEY = "." + DATA_KEY;
var DATA_API_KEY = '.data-api';
XhmikosR's avatar
XhmikosR committed
584
585
586
587
588
589
590
var SELECTOR_DISMISS = '[data-dismiss="alert"]';
var EVENT_CLOSE = "close" + EVENT_KEY;
var EVENT_CLOSED = "closed" + EVENT_KEY;
var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
var CLASSNAME_ALERT = 'alert';
var CLASSNAME_FADE = 'fade';
var CLASSNAME_SHOW = 'show';
XhmikosR's avatar
XhmikosR committed
591
592
593
594
595
/**
 * ------------------------------------------------------------------------
 * Class Definition
 * ------------------------------------------------------------------------
 */
XhmikosR's avatar
Dist.  
XhmikosR committed
596

XhmikosR's avatar
XhmikosR committed
597
var Alert = /*#__PURE__*/function () {
XhmikosR's avatar
XhmikosR committed
598
  function Alert(element) {
XhmikosR's avatar
Dist.  
XhmikosR committed
599
600
601
602
603
604
605
606
    this._element = element;

    if (this._element) {
      Data.setData(element, DATA_KEY, this);
    }
  } // Getters


XhmikosR's avatar
XhmikosR committed
607
  var _proto = Alert.prototype;
XhmikosR's avatar
Dist.  
XhmikosR committed
608

XhmikosR's avatar
XhmikosR committed
609
610
  // Public
  _proto.close = function close(element) {
XhmikosR's avatar
XhmikosR committed
611
    var rootElement = element ? this._getRootElement(element) : this._element;
XhmikosR's avatar
Dist.  
XhmikosR committed
612

XhmikosR's avatar
XhmikosR committed
613
    var customEvent = this._triggerCloseEvent(rootElement);
XhmikosR's avatar
Dist.  
XhmikosR committed
614
615
616
617
618
619

    if (customEvent === null || customEvent.defaultPrevented) {
      return;
    }

    this._removeElement(rootElement);
XhmikosR's avatar
XhmikosR committed
620
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
621

XhmikosR's avatar
XhmikosR committed
622
  _proto.dispose = function dispose() {
XhmikosR's avatar
Dist.  
XhmikosR committed
623
624
625
    Data.removeData(this._element, DATA_KEY);
    this._element = null;
  } // Private
XhmikosR's avatar
XhmikosR committed
626
  ;
XhmikosR's avatar
Dist.  
XhmikosR committed
627

XhmikosR's avatar
XhmikosR committed
628
  _proto._getRootElement = function _getRootElement(element) {
XhmikosR's avatar
XhmikosR committed
629
    return getElementFromSelector(element) || element.closest("." + CLASSNAME_ALERT);
XhmikosR's avatar
XhmikosR committed
630
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
631

XhmikosR's avatar
XhmikosR committed
632
  _proto._triggerCloseEvent = function _triggerCloseEvent(element) {
XhmikosR's avatar
XhmikosR committed
633
    return EventHandler.trigger(element, EVENT_CLOSE);
XhmikosR's avatar
XhmikosR committed
634
635
636
637
  };

  _proto._removeElement = function _removeElement(element) {
    var _this = this;
XhmikosR's avatar
Dist.  
XhmikosR committed
638

XhmikosR's avatar
XhmikosR committed
639
    element.classList.remove(CLASSNAME_SHOW);
XhmikosR's avatar
Dist.  
XhmikosR committed
640

XhmikosR's avatar
XhmikosR committed
641
    if (!element.classList.contains(CLASSNAME_FADE)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
642
643
644
645
646
      this._destroyElement(element);

      return;
    }

XhmikosR's avatar
XhmikosR committed
647
    var transitionDuration = getTransitionDurationFromElement(element);
648
649
    EventHandler.one(element, TRANSITION_END, function () {
      return _this._destroyElement(element);
XhmikosR's avatar
XhmikosR committed
650
    });
XhmikosR's avatar
Dist.  
XhmikosR committed
651
    emulateTransitionEnd(element, transitionDuration);
XhmikosR's avatar
XhmikosR committed
652
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
653

XhmikosR's avatar
XhmikosR committed
654
  _proto._destroyElement = function _destroyElement(element) {
XhmikosR's avatar
Dist.  
XhmikosR committed
655
656
657
658
    if (element.parentNode) {
      element.parentNode.removeChild(element);
    }

XhmikosR's avatar
XhmikosR committed
659
    EventHandler.trigger(element, EVENT_CLOSED);
XhmikosR's avatar
Dist.  
XhmikosR committed
660
  } // Static
XhmikosR's avatar
XhmikosR committed
661
  ;
XhmikosR's avatar
Dist.  
XhmikosR committed
662

XhmikosR's avatar
XhmikosR committed
663
  Alert.jQueryInterface = function jQueryInterface(config) {
XhmikosR's avatar
Dist.  
XhmikosR committed
664
    return this.each(function () {
XhmikosR's avatar
XhmikosR committed
665
      var data = Data.getData(this, DATA_KEY);
XhmikosR's avatar
Dist.  
XhmikosR committed
666
667
668
669
670
671
672
673
674

      if (!data) {
        data = new Alert(this);
      }

      if (config === 'close') {
        data[config](this);
      }
    });
XhmikosR's avatar
XhmikosR committed
675
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
676

XhmikosR's avatar
XhmikosR committed
677
  Alert.handleDismiss = function handleDismiss(alertInstance) {
XhmikosR's avatar
Dist.  
XhmikosR committed
678
679
680
681
682
683
684
    return function (event) {
      if (event) {
        event.preventDefault();
      }

      alertInstance.close(this);
    };
XhmikosR's avatar
XhmikosR committed
685
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
686

XhmikosR's avatar
XhmikosR committed
687
  Alert.getInstance = function getInstance(element) {
XhmikosR's avatar
Dist.  
XhmikosR committed
688
    return Data.getData(element, DATA_KEY);
XhmikosR's avatar
XhmikosR committed
689
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
690

XhmikosR's avatar
XhmikosR committed
691
692
693
694
695
696
697
698
699
  _createClass(Alert, null, [{
    key: "VERSION",
    get: function get() {
      return VERSION;
    }
  }]);

  return Alert;
}();
XhmikosR's avatar
Dist.  
XhmikosR committed
700
701
702
703
704
705
706
/**
 * ------------------------------------------------------------------------
 * Data Api implementation
 * ------------------------------------------------------------------------
 */


XhmikosR's avatar
XhmikosR committed
707
EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert.handleDismiss(new Alert()));
XhmikosR's avatar
Dist.  
XhmikosR committed
708
709
710
711
/**
 * ------------------------------------------------------------------------
 * jQuery
 * ------------------------------------------------------------------------
XhmikosR's avatar
XhmikosR committed
712
 * add .Alert to jQuery only if jQuery is present
XhmikosR's avatar
Dist.  
XhmikosR committed
713
714
 */

XhmikosR's avatar
XhmikosR committed
715
716
717
onDOMContentLoaded(function () {
  var $ = getjQuery();
  /* istanbul ignore if */
718

XhmikosR's avatar
XhmikosR committed
719
720
721
722
  if ($) {
    var JQUERY_NO_CONFLICT = $.fn[NAME];
    $.fn[NAME] = Alert.jQueryInterface;
    $.fn[NAME].Constructor = Alert;
XhmikosR's avatar
Dist.  
XhmikosR committed
723

XhmikosR's avatar
XhmikosR committed
724
725
726
727
728
729
    $.fn[NAME].noConflict = function () {
      $.fn[NAME] = JQUERY_NO_CONFLICT;
      return Alert.jQueryInterface;
    };
  }
});
XhmikosR's avatar
Dist.  
XhmikosR committed
730
731
732
733
734
735
736

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

XhmikosR's avatar
XhmikosR committed
737
var NAME$1 = 'button';
XhmikosR's avatar
XhmikosR committed
738
var VERSION$1 = '5.0.0-alpha3';
XhmikosR's avatar
XhmikosR committed
739
740
741
var DATA_KEY$1 = 'bs.button';
var EVENT_KEY$1 = "." + DATA_KEY$1;
var DATA_API_KEY$1 = '.data-api';
XhmikosR's avatar
XhmikosR committed
742
var CLASS_NAME_ACTIVE = 'active';
XhmikosR's avatar
XhmikosR committed
743
var SELECTOR_DATA_TOGGLE = '[data-toggle="button"]';
XhmikosR's avatar
XhmikosR committed
744
var EVENT_CLICK_DATA_API$1 = "click" + EVENT_KEY$1 + DATA_API_KEY$1;
XhmikosR's avatar
XhmikosR committed
745
746
747
748
749
/**
 * ------------------------------------------------------------------------
 * Class Definition
 * ------------------------------------------------------------------------
 */
XhmikosR's avatar
Dist.  
XhmikosR committed
750

XhmikosR's avatar
XhmikosR committed
751
var Button = /*#__PURE__*/function () {
XhmikosR's avatar
XhmikosR committed
752
  function Button(element) {
XhmikosR's avatar
Dist.  
XhmikosR committed
753
754
755
756
757
    this._element = element;
    Data.setData(element, DATA_KEY$1, this);
  } // Getters


XhmikosR's avatar
XhmikosR committed
758
  var _proto = Button.prototype;
XhmikosR's avatar
Dist.  
XhmikosR committed
759

XhmikosR's avatar
XhmikosR committed
760
761
  // Public
  _proto.toggle = function toggle() {
XhmikosR's avatar
XhmikosR committed
762
763
    // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method
    this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE));
XhmikosR's avatar
XhmikosR committed
764
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
765

XhmikosR's avatar
XhmikosR committed
766
  _proto.dispose = function dispose() {
XhmikosR's avatar
Dist.  
XhmikosR committed
767
768
769
    Data.removeData(this._element, DATA_KEY$1);
    this._element = null;
  } // Static
XhmikosR's avatar
XhmikosR committed
770
  ;
XhmikosR's avatar
Dist.  
XhmikosR committed
771

XhmikosR's avatar
XhmikosR committed
772
  Button.jQueryInterface = function jQueryInterface(config) {
XhmikosR's avatar
Dist.  
XhmikosR committed
773
    return this.each(function () {
XhmikosR's avatar
XhmikosR committed
774
      var data = Data.getData(this, DATA_KEY$1);
XhmikosR's avatar
Dist.  
XhmikosR committed
775
776
777
778
779
780
781
782
783

      if (!data) {
        data = new Button(this);
      }

      if (config === 'toggle') {
        data[config]();
      }
    });
XhmikosR's avatar
XhmikosR committed
784
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
785

XhmikosR's avatar
XhmikosR committed
786
  Button.getInstance = function getInstance(element) {
XhmikosR's avatar
Dist.  
XhmikosR committed
787
    return Data.getData(element, DATA_KEY$1);
XhmikosR's avatar
XhmikosR committed
788
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
789

XhmikosR's avatar
XhmikosR committed
790
791
792
793
794
795
796
797
798
  _createClass(Button, null, [{
    key: "VERSION",
    get: function get() {
      return VERSION$1;
    }
  }]);

  return Button;
}();
XhmikosR's avatar
Dist.  
XhmikosR committed
799
800
801
802
803
804
805
/**
 * ------------------------------------------------------------------------
 * Data Api implementation
 * ------------------------------------------------------------------------
 */


XhmikosR's avatar
XhmikosR committed
806
EventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE, function (event) {
XhmikosR's avatar
Dist.  
XhmikosR committed
807
  event.preventDefault();
XhmikosR's avatar
XhmikosR committed
808
  var button = event.target.closest(SELECTOR_DATA_TOGGLE);
XhmikosR's avatar
XhmikosR committed
809
  var data = Data.getData(button, DATA_KEY$1);
XhmikosR's avatar
Dist.  
XhmikosR committed
810
811
812
813
814
815
816
817
818
819
820

  if (!data) {
    data = new Button(button);
  }

  data.toggle();
});
/**
 * ------------------------------------------------------------------------
 * jQuery
 * ------------------------------------------------------------------------
XhmikosR's avatar
XhmikosR committed
821
 * add .Button to jQuery only if jQuery is present
XhmikosR's avatar
Dist.  
XhmikosR committed
822
823
 */

XhmikosR's avatar
XhmikosR committed
824
825
826
onDOMContentLoaded(function () {
  var $ = getjQuery();
  /* istanbul ignore if */
827

XhmikosR's avatar
XhmikosR committed
828
829
830
831
  if ($) {
    var JQUERY_NO_CONFLICT = $.fn[NAME$1];
    $.fn[NAME$1] = Button.jQueryInterface;
    $.fn[NAME$1].Constructor = Button;
XhmikosR's avatar
Dist.  
XhmikosR committed
832

XhmikosR's avatar
XhmikosR committed
833
834
835
836
837
838
    $.fn[NAME$1].noConflict = function () {
      $.fn[NAME$1] = JQUERY_NO_CONFLICT;
      return Button.jQueryInterface;
    };
  }
});
XhmikosR's avatar
Dist.  
XhmikosR committed
839
840
841

/**
 * --------------------------------------------------------------------------
XhmikosR's avatar
XhmikosR committed
842
 * Bootstrap (v5.0.0-alpha3): dom/manipulator.js
XhmikosR's avatar
XhmikosR committed
843
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
XhmikosR's avatar
Dist.  
XhmikosR committed
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
 * --------------------------------------------------------------------------
 */
function normalizeData(val) {
  if (val === 'true') {
    return true;
  }

  if (val === 'false') {
    return false;
  }

  if (val === Number(val).toString()) {
    return Number(val);
  }

  if (val === '' || val === 'null') {
    return null;
  }

  return val;
}

function normalizeDataKey(key) {
XhmikosR's avatar
XhmikosR committed
867
  return key.replace(/[A-Z]/g, function (chr) {
XhmikosR's avatar
XhmikosR committed
868
    return "-" + chr.toLowerCase();
XhmikosR's avatar
XhmikosR committed
869
  });
XhmikosR's avatar
Dist.  
XhmikosR committed
870
871
}

XhmikosR's avatar
XhmikosR committed
872
873
874
var Manipulator = {
  setDataAttribute: function setDataAttribute(element, key, value) {
    element.setAttribute("data-" + normalizeDataKey(key), value);
XhmikosR's avatar
Dist.  
XhmikosR committed
875
  },
XhmikosR's avatar
XhmikosR committed
876
877
  removeDataAttribute: function removeDataAttribute(element, key) {
    element.removeAttribute("data-" + normalizeDataKey(key));
XhmikosR's avatar
Dist.  
XhmikosR committed
878
  },
XhmikosR's avatar
XhmikosR committed
879
  getDataAttributes: function getDataAttributes(element) {
XhmikosR's avatar
Dist.  
XhmikosR committed
880
881
882
883
    if (!element) {
      return {};
    }

XhmikosR's avatar
XhmikosR committed
884
    var attributes = _extends({}, element.dataset);
XhmikosR's avatar
Dist.  
XhmikosR committed
885

XhmikosR's avatar
XhmikosR committed
886
    Object.keys(attributes).forEach(function (key) {
XhmikosR's avatar
Dist.  
XhmikosR committed
887
888
889
890
      attributes[key] = normalizeData(attributes[key]);
    });
    return attributes;
  },
XhmikosR's avatar
XhmikosR committed
891
892
  getDataAttribute: function getDataAttribute(element, key) {
    return normalizeData(element.getAttribute("data-" + normalizeDataKey(key)));
XhmikosR's avatar
Dist.  
XhmikosR committed
893
  },
XhmikosR's avatar
XhmikosR committed
894
895
  offset: function offset(element) {
    var rect = element.getBoundingClientRect();
XhmikosR's avatar
Dist.  
XhmikosR committed
896
897
898
899
900
    return {
      top: rect.top + document.body.scrollTop,
      left: rect.left + document.body.scrollLeft
    };
  },
XhmikosR's avatar
XhmikosR committed
901
  position: function position(element) {
XhmikosR's avatar
Dist.  
XhmikosR committed
902
903
904
905
906
907
908
    return {
      top: element.offsetTop,
      left: element.offsetLeft
    };
  }
};

XhmikosR's avatar
XhmikosR committed
909
910
/**
 * --------------------------------------------------------------------------
XhmikosR's avatar
XhmikosR committed
911
 * Bootstrap (v5.0.0-alpha3): dom/selector-engine.js
XhmikosR's avatar
XhmikosR committed
912
913
914
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 * --------------------------------------------------------------------------
 */
XhmikosR's avatar
XhmikosR committed
915

XhmikosR's avatar
XhmikosR committed
916
917
918
919
920
921
922
923
924
925
/**
 * ------------------------------------------------------------------------
 * Constants
 * ------------------------------------------------------------------------
 */
var NODE_TEXT = 3;
var SelectorEngine = {
  matches: function matches(element, selector) {
    return element.matches(selector);
  },
XhmikosR's avatar
XhmikosR committed
926
  find: function find(selector, element) {
XhmikosR's avatar
XhmikosR committed
927
928
929
930
931
932
    var _ref;

    if (element === void 0) {
      element = document.documentElement;
    }

XhmikosR's avatar
XhmikosR committed
933
    return (_ref = []).concat.apply(_ref, Element.prototype.querySelectorAll.call(element, selector));
XhmikosR's avatar
XhmikosR committed
934
  },
XhmikosR's avatar
XhmikosR committed
935
  findOne: function findOne(selector, element) {
XhmikosR's avatar
XhmikosR committed
936
937
938
939
    if (element === void 0) {
      element = document.documentElement;
    }

XhmikosR's avatar
XhmikosR committed
940
    return Element.prototype.querySelector.call(element, selector);
XhmikosR's avatar
XhmikosR committed
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
  },
  children: function children(element, selector) {
    var _ref2;

    var children = (_ref2 = []).concat.apply(_ref2, element.children);

    return children.filter(function (child) {
      return child.matches(selector);
    });
  },
  parents: function parents(element, selector) {
    var parents = [];
    var ancestor = element.parentNode;

    while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {
      if (this.matches(ancestor, selector)) {
        parents.push(ancestor);
      }

      ancestor = ancestor.parentNode;
    }

    return parents;
  },
  prev: function prev(element, selector) {
    var previous = element.previousElementSibling;

    while (previous) {
      if (previous.matches(selector)) {
        return [previous];
      }

      previous = previous.previousElementSibling;
    }

    return [];
  },
  next: function next(element, selector) {
    var next = element.nextElementSibling;

    while (next) {
      if (this.matches(next, selector)) {
        return [next];
      }

      next = next.nextElementSibling;
    }

    return [];
  }
};

XhmikosR's avatar
Dist.  
XhmikosR committed
993
994
995
996
997
998
/**
 * ------------------------------------------------------------------------
 * Constants
 * ------------------------------------------------------------------------
 */

XhmikosR's avatar
XhmikosR committed
999
var NAME$2 = 'carousel';
XhmikosR's avatar
XhmikosR committed
1000
var VERSION$2 = '5.0.0-alpha3';
XhmikosR's avatar
XhmikosR committed
1001
1002
1003
var DATA_KEY$2 = 'bs.carousel';
var EVENT_KEY$2 = "." + DATA_KEY$2;
var DATA_API_KEY$2 = '.data-api';
XhmikosR's avatar
XhmikosR committed
1004
1005
var ARROW_LEFT_KEY = 'ArrowLeft';
var ARROW_RIGHT_KEY = 'ArrowRight';
XhmikosR's avatar
XhmikosR committed
1006
var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch
XhmikosR's avatar
Dist.  
XhmikosR committed
1007

XhmikosR's avatar
XhmikosR committed
1008
1009
var SWIPE_THRESHOLD = 40;
var Default = {
XhmikosR's avatar
Dist.  
XhmikosR committed
1010
1011
1012
1013
1014
1015
1016
  interval: 5000,
  keyboard: true,
  slide: false,
  pause: 'hover',
  wrap: true,
  touch: true
};
XhmikosR's avatar
XhmikosR committed
1017
var DefaultType = {
XhmikosR's avatar
Dist.  
XhmikosR committed
1018
1019
1020
1021
1022
1023
1024
  interval: '(number|boolean)',
  keyboard: 'boolean',
  slide: '(boolean|string)',
  pause: '(string|boolean)',
  wrap: 'boolean',
  touch: 'boolean'
};
XhmikosR's avatar
XhmikosR committed
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
var DIRECTION_NEXT = 'next';
var DIRECTION_PREV = 'prev';
var DIRECTION_LEFT = 'left';
var DIRECTION_RIGHT = 'right';
var EVENT_SLIDE = "slide" + EVENT_KEY$2;
var EVENT_SLID = "slid" + EVENT_KEY$2;
var EVENT_KEYDOWN = "keydown" + EVENT_KEY$2;
var EVENT_MOUSEENTER = "mouseenter" + EVENT_KEY$2;
var EVENT_MOUSELEAVE = "mouseleave" + EVENT_KEY$2;
var EVENT_TOUCHSTART = "touchstart" + EVENT_KEY$2;
var EVENT_TOUCHMOVE = "touchmove" + EVENT_KEY$2;
var EVENT_TOUCHEND = "touchend" + EVENT_KEY$2;
var EVENT_POINTERDOWN = "pointerdown" + EVENT_KEY$2;
var EVENT_POINTERUP = "pointerup" + EVENT_KEY$2;
var EVENT_DRAG_START = "dragstart" + EVENT_KEY$2;
var EVENT_LOAD_DATA_API = "load" + EVENT_KEY$2 + DATA_API_KEY$2;
var EVENT_CLICK_DATA_API$2 = "click" + EVENT_KEY$2 + DATA_API_KEY$2;
var CLASS_NAME_CAROUSEL = 'carousel';
var CLASS_NAME_ACTIVE$1 = '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';
XhmikosR's avatar
XhmikosR committed
1050
var SELECTOR_ACTIVE = '.active';
XhmikosR's avatar
XhmikosR committed
1051
1052
1053
1054
1055
1056
1057
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"]';
XhmikosR's avatar
XhmikosR committed
1058
var PointerType = {
XhmikosR's avatar
Dist.  
XhmikosR committed
1059
1060
1061
  TOUCH: 'touch',
  PEN: 'pen'
};
XhmikosR's avatar
XhmikosR committed
1062
1063
1064
1065
1066
/**
 * ------------------------------------------------------------------------
 * Class Definition
 * ------------------------------------------------------------------------
 */
XhmikosR's avatar
Dist.  
XhmikosR committed
1067

XhmikosR's avatar
XhmikosR committed
1068
var Carousel = /*#__PURE__*/function () {
XhmikosR's avatar
XhmikosR committed
1069
  function Carousel(element, config) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
    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;
XhmikosR's avatar
XhmikosR committed
1080
    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);
XhmikosR's avatar
Dist.  
XhmikosR committed
1081
    this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;
XhmikosR's avatar
XhmikosR committed
1082
    this._pointerEvent = Boolean(window.PointerEvent);
XhmikosR's avatar
Dist.  
XhmikosR committed
1083
1084
1085
1086
1087
1088
1089

    this._addEventListeners();

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


XhmikosR's avatar
XhmikosR committed
1090
  var _proto = Carousel.prototype;
XhmikosR's avatar
Dist.  
XhmikosR committed
1091

XhmikosR's avatar
XhmikosR committed
1092
1093
  // Public
  _proto.next = function next() {
XhmikosR's avatar
Dist.  
XhmikosR committed
1094
    if (!this._isSliding) {
XhmikosR's avatar
XhmikosR committed
1095
      this._slide(DIRECTION_NEXT);
XhmikosR's avatar
Dist.  
XhmikosR committed
1096
    }
XhmikosR's avatar
XhmikosR committed
1097
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
1098

XhmikosR's avatar
XhmikosR committed
1099
  _proto.nextWhenVisible = function nextWhenVisible() {
XhmikosR's avatar
Dist.  
XhmikosR committed
1100
1101
1102
1103
1104
    // Don't call next when the page isn't visible
    // or the carousel or its parent isn't visible
    if (!document.hidden && isVisible(this._element)) {
      this.next();
    }
XhmikosR's avatar
XhmikosR committed
1105
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
1106

XhmikosR's avatar
XhmikosR committed
1107
  _proto.prev = function prev() {
XhmikosR's avatar
Dist.  
XhmikosR committed
1108
    if (!this._isSliding) {
XhmikosR's avatar
XhmikosR committed
1109
      this._slide(DIRECTION_PREV);
XhmikosR's avatar
Dist.  
XhmikosR committed
1110
    }
XhmikosR's avatar
XhmikosR committed
1111
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
1112

XhmikosR's avatar
XhmikosR committed
1113
  _proto.pause = function pause(event) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1114
1115
1116
1117
    if (!event) {
      this._isPaused = true;
    }

XhmikosR's avatar
XhmikosR committed
1118
    if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1119
1120
1121
1122
1123
1124
      triggerTransitionEnd(this._element);
      this.cycle(true);
    }

    clearInterval(this._interval);
    this._interval = null;
XhmikosR's avatar
XhmikosR committed
1125
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
1126

XhmikosR's avatar
XhmikosR committed
1127
  _proto.cycle = function cycle(event) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
    if (!event) {
      this._isPaused = false;
    }

    if (this._interval) {
      clearInterval(this._interval);
      this._interval = null;
    }

    if (this._config && this._config.interval && !this._isPaused) {
XhmikosR's avatar
XhmikosR committed
1138
1139
      this._updateInterval();

XhmikosR's avatar
Dist.  
XhmikosR committed
1140
1141
      this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);
    }
XhmikosR's avatar
XhmikosR committed
1142
1143
1144
1145
  };

  _proto.to = function to(index) {
    var _this = this;
XhmikosR's avatar
Dist.  
XhmikosR committed
1146

XhmikosR's avatar
XhmikosR committed
1147
    this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
XhmikosR's avatar
Dist.  
XhmikosR committed
1148

XhmikosR's avatar
XhmikosR committed
1149
    var activeIndex = this._getItemIndex(this._activeElement);
XhmikosR's avatar
Dist.  
XhmikosR committed
1150
1151
1152
1153
1154
1155

    if (index > this._items.length - 1 || index < 0) {
      return;
    }

    if (this._isSliding) {
XhmikosR's avatar
XhmikosR committed
1156
      EventHandler.one(this._element, EVENT_SLID, function () {
XhmikosR's avatar
XhmikosR committed
1157
1158
        return _this.to(index);
      });
XhmikosR's avatar
Dist.  
XhmikosR committed
1159
1160
1161
1162
1163
1164
1165
1166
1167
      return;
    }

    if (activeIndex === index) {
      this.pause();
      this.cycle();
      return;
    }

XhmikosR's avatar
XhmikosR committed
1168
    var direction = index > activeIndex ? DIRECTION_NEXT : DIRECTION_PREV;
XhmikosR's avatar
Dist.  
XhmikosR committed
1169
1170

    this._slide(direction, this._items[index]);
XhmikosR's avatar
XhmikosR committed
1171
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
1172

XhmikosR's avatar
XhmikosR committed
1173
  _proto.dispose = function dispose() {
XhmikosR's avatar
Dist.  
XhmikosR committed
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
    EventHandler.off(this._element, EVENT_KEY$2);
    Data.removeData(this._element, DATA_KEY$2);
    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
XhmikosR's avatar
XhmikosR committed
1185
  ;
XhmikosR's avatar
Dist.  
XhmikosR committed
1186

XhmikosR's avatar
XhmikosR committed
1187
  _proto._getConfig = function _getConfig(config) {
XhmikosR's avatar
XhmikosR committed
1188
    config = _extends({}, Default, config);
XhmikosR's avatar
Dist.  
XhmikosR committed
1189
1190
    typeCheckConfig(NAME$2, config, DefaultType);
    return config;
XhmikosR's avatar
XhmikosR committed
1191
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
1192

XhmikosR's avatar
XhmikosR committed
1193
1194
  _proto._handleSwipe = function _handleSwipe() {
    var absDeltax = Math.abs(this.touchDeltaX);
XhmikosR's avatar
Dist.  
XhmikosR committed
1195
1196
1197
1198
1199

    if (absDeltax <= SWIPE_THRESHOLD) {
      return;
    }

XhmikosR's avatar
XhmikosR committed
1200
1201
    var direction = absDeltax / this.touchDeltaX;
    this.touchDeltaX = 0; // swipe left
XhmikosR's avatar
Dist.  
XhmikosR committed
1202
1203
1204
1205
1206
1207
1208
1209
1210

    if (direction > 0) {
      this.prev();
    } // swipe right


    if (direction < 0) {
      this.next();
    }
XhmikosR's avatar
XhmikosR committed
1211
1212
1213
1214
  };

  _proto._addEventListeners = function _addEventListeners() {
    var _this2 = this;
XhmikosR's avatar
Dist.  
XhmikosR committed
1215
1216

    if (this._config.keyboard) {
XhmikosR's avatar
XhmikosR committed
1217
      EventHandler.on(this._element, EVENT_KEYDOWN, function (event) {
XhmikosR's avatar
XhmikosR committed
1218
1219
        return _this2._keydown(event);
      });
XhmikosR's avatar
Dist.  
XhmikosR committed
1220
1221
1222
    }

    if (this._config.pause === 'hover') {
XhmikosR's avatar
XhmikosR committed
1223
      EventHandler.on(this._element, EVENT_MOUSEENTER, function (event) {
XhmikosR's avatar
XhmikosR committed
1224
1225
        return _this2.pause(event);
      });
XhmikosR's avatar
XhmikosR committed
1226
      EventHandler.on(this._element, EVENT_MOUSELEAVE, function (event) {
XhmikosR's avatar
XhmikosR committed
1227
1228
        return _this2.cycle(event);
      });
XhmikosR's avatar
Dist.  
XhmikosR committed
1229
1230
    }

1231
    if (this._config.touch && this._touchSupported) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1232
1233
      this._addTouchEventListeners();
    }
XhmikosR's avatar
XhmikosR committed
1234
1235
1236
1237
  };

  _proto._addTouchEventListeners = function _addTouchEventListeners() {
    var _this3 = this;
XhmikosR's avatar
Dist.  
XhmikosR committed
1238

XhmikosR's avatar
XhmikosR committed
1239
1240
1241
1242
1243
    var start = function start(event) {
      if (_this3._pointerEvent && PointerType[event.pointerType.toUpperCase()]) {
        _this3.touchStartX = event.clientX;
      } else if (!_this3._pointerEvent) {
        _this3.touchStartX = event.touches[0].clientX;
XhmikosR's avatar
Dist.  
XhmikosR committed
1244
1245
1246
      }
    };

XhmikosR's avatar
XhmikosR committed
1247
    var move = function move(event) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1248
1249
      // ensure swiping with one touch and not pinching
      if (event.touches && event.touches.length > 1) {
XhmikosR's avatar
XhmikosR committed
1250
        _this3.touchDeltaX = 0;
XhmikosR's avatar
Dist.  
XhmikosR committed
1251
      } else {
XhmikosR's avatar
XhmikosR committed
1252
        _this3.touchDeltaX = event.touches[0].clientX - _this3.touchStartX;
XhmikosR's avatar
Dist.  
XhmikosR committed
1253
1254
1255
      }
    };

XhmikosR's avatar
XhmikosR committed
1256
1257
1258
    var end = function end(event) {
      if (_this3._pointerEvent && PointerType[event.pointerType.toUpperCase()]) {
        _this3.touchDeltaX = event.clientX - _this3.touchStartX;
XhmikosR's avatar
Dist.  
XhmikosR committed
1259
1260
      }

XhmikosR's avatar
XhmikosR committed
1261
      _this3._handleSwipe();
XhmikosR's avatar
Dist.  
XhmikosR committed
1262

XhmikosR's avatar
XhmikosR committed
1263
      if (_this3._config.pause === 'hover') {
XhmikosR's avatar
Dist.  
XhmikosR committed
1264
1265
1266
1267
1268
1269
1270
        // 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
XhmikosR's avatar
XhmikosR committed
1271
        _this3.pause();
XhmikosR's avatar
Dist.  
XhmikosR committed
1272

XhmikosR's avatar
XhmikosR committed
1273
1274
        if (_this3.touchTimeout) {
          clearTimeout(_this3.touchTimeout);
XhmikosR's avatar
Dist.  
XhmikosR committed
1275
1276
        }

XhmikosR's avatar
XhmikosR committed
1277
1278
1279
        _this3.touchTimeout = setTimeout(function (event) {
          return _this3.cycle(event);
        }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval);
XhmikosR's avatar
Dist.  
XhmikosR committed
1280
1281
1282
      }
    };

XhmikosR's avatar
XhmikosR committed
1283
1284
    SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(function (itemImg) {
      EventHandler.on(itemImg, EVENT_DRAG_START, function (e) {
XhmikosR's avatar
XhmikosR committed
1285
1286
        return e.preventDefault();
      });
XhmikosR's avatar
Dist.  
XhmikosR committed
1287
1288
1289
    });

    if (this._pointerEvent) {
XhmikosR's avatar
XhmikosR committed
1290
      EventHandler.on(this._element, EVENT_POINTERDOWN, function (event) {
XhmikosR's avatar
XhmikosR committed
1291
1292
        return start(event);
      });
XhmikosR's avatar
XhmikosR committed
1293
      EventHandler.on(this._element, EVENT_POINTERUP, function (event) {
XhmikosR's avatar
XhmikosR committed
1294
1295
        return end(event);
      });
XhmikosR's avatar
Dist.  
XhmikosR committed
1296

XhmikosR's avatar
XhmikosR committed
1297
      this._element.classList.add(CLASS_NAME_POINTER_EVENT);
XhmikosR's avatar
Dist.  
XhmikosR committed
1298
    } else {
XhmikosR's avatar
XhmikosR committed
1299
      EventHandler.on(this._element, EVENT_TOUCHSTART, function (event) {
XhmikosR's avatar
XhmikosR committed
1300
1301
        return start(event);
      });
XhmikosR's avatar
XhmikosR committed
1302
      EventHandler.on(this._element, EVENT_TOUCHMOVE, function (event) {
XhmikosR's avatar
XhmikosR committed
1303
1304
        return move(event);
      });
XhmikosR's avatar
XhmikosR committed
1305
      EventHandler.on(this._element, EVENT_TOUCHEND, function (event) {
XhmikosR's avatar
XhmikosR committed
1306
1307
        return end(event);
      });
XhmikosR's avatar
Dist.  
XhmikosR committed
1308
    }
XhmikosR's avatar
XhmikosR committed
1309
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
1310

XhmikosR's avatar
XhmikosR committed
1311
  _proto._keydown = function _keydown(event) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1312
1313
1314
1315
    if (/input|textarea/i.test(event.target.tagName)) {
      return;
    }

XhmikosR's avatar
XhmikosR committed
1316
1317
    switch (event.key) {
      case ARROW_LEFT_KEY:
XhmikosR's avatar
Dist.  
XhmikosR committed
1318
1319
1320
1321
        event.preventDefault();
        this.prev();
        break;

XhmikosR's avatar
XhmikosR committed
1322
      case ARROW_RIGHT_KEY:
XhmikosR's avatar
Dist.  
XhmikosR committed
1323
1324
1325
1326
        event.preventDefault();
        this.next();
        break;
    }
XhmikosR's avatar
XhmikosR committed
1327
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
1328

XhmikosR's avatar
XhmikosR committed
1329
  _proto._getItemIndex = function _getItemIndex(element) {
XhmikosR's avatar
XhmikosR committed
1330
    this._items = element && element.parentNode ? SelectorEngine.find(SELECTOR_ITEM, element.parentNode) : [];
XhmikosR's avatar
Dist.  
XhmikosR committed
1331
    return this._items.indexOf(element);
XhmikosR's avatar
XhmikosR committed
1332
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
1333

XhmikosR's avatar
XhmikosR committed
1334
  _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {
XhmikosR's avatar
XhmikosR committed
1335
1336
    var isNextDirection = direction === DIRECTION_NEXT;
    var isPrevDirection = direction === DIRECTION_PREV;
XhmikosR's avatar
Dist.  
XhmikosR committed
1337

XhmikosR's avatar
XhmikosR committed
1338
    var activeIndex = this._getItemIndex(activeElement);
XhmikosR's avatar
Dist.  
XhmikosR committed
1339

XhmikosR's avatar
XhmikosR committed
1340
1341
    var lastItemIndex = this._items.length - 1;
    var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;
XhmikosR's avatar
Dist.  
XhmikosR committed
1342
1343
1344
1345
1346

    if (isGoingToWrap && !this._config.wrap) {
      return activeElement;
    }

XhmikosR's avatar
XhmikosR committed
1347
    var delta = direction === DIRECTION_PREV ? -1 : 1;
XhmikosR's avatar
XhmikosR committed
1348
    var itemIndex = (activeIndex + delta) % this._items.length;
XhmikosR's avatar
Dist.  
XhmikosR committed
1349
    return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];
XhmikosR's avatar
XhmikosR committed
1350
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
1351

XhmikosR's avatar
XhmikosR committed
1352
1353
  _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {
    var targetIndex = this._getItemIndex(relatedTarget);
XhmikosR's avatar
Dist.  
XhmikosR committed
1354

XhmikosR's avatar
XhmikosR committed
1355
    var fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element));
XhmikosR's avatar
Dist.  
XhmikosR committed
1356

XhmikosR's avatar
XhmikosR committed
1357
    return EventHandler.trigger(this._element, EVENT_SLIDE, {
XhmikosR's avatar
XhmikosR committed
1358
      relatedTarget: relatedTarget,
XhmikosR's avatar
Dist.  
XhmikosR committed
1359
1360
1361
1362
      direction: eventDirectionName,
      from: fromIndex,
      to: targetIndex
    });
XhmikosR's avatar
XhmikosR committed
1363
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
1364

XhmikosR's avatar
XhmikosR committed
1365
  _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1366
    if (this._indicatorsElement) {
XhmikosR's avatar
XhmikosR committed
1367
      var indicators = SelectorEngine.find(SELECTOR_ACTIVE, this._indicatorsElement);
XhmikosR's avatar
Dist.  
XhmikosR committed
1368

XhmikosR's avatar
XhmikosR committed
1369
      for (var i = 0; i < indicators.length; i++) {
XhmikosR's avatar
XhmikosR committed
1370
        indicators[i].classList.remove(CLASS_NAME_ACTIVE$1);
XhmikosR's avatar
Dist.  
XhmikosR committed
1371
1372
      }

XhmikosR's avatar
XhmikosR committed
1373
      var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];
XhmikosR's avatar
Dist.  
XhmikosR committed
1374
1375

      if (nextIndicator) {
XhmikosR's avatar
XhmikosR committed
1376
        nextIndicator.classList.add(CLASS_NAME_ACTIVE$1);
XhmikosR's avatar
Dist.  
XhmikosR committed
1377
1378
      }
    }
XhmikosR's avatar
XhmikosR committed
1379
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
1380

XhmikosR's avatar
XhmikosR committed
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
  _proto._updateInterval = function _updateInterval() {
    var element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);

    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;
    }
  };

XhmikosR's avatar
XhmikosR committed
1398
1399
  _proto._slide = function _slide(direction, element) {
    var _this4 = this;
XhmikosR's avatar
Dist.  
XhmikosR committed
1400

XhmikosR's avatar
XhmikosR committed
1401
    var activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
XhmikosR's avatar
Dist.  
XhmikosR committed
1402

XhmikosR's avatar
XhmikosR committed
1403
    var activeElementIndex = this._getItemIndex(activeElement);
XhmikosR's avatar
Dist.  
XhmikosR committed
1404

XhmikosR's avatar
XhmikosR committed
1405
    var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);
XhmikosR's avatar
Dist.  
XhmikosR committed
1406

XhmikosR's avatar
XhmikosR committed
1407
1408
1409
1410
1411
1412
    var nextElementIndex = this._getItemIndex(nextElement);

    var isCycling = Boolean(this._interval);
    var directionalClassName;
    var orderClassName;
    var eventDirectionName;
XhmikosR's avatar
Dist.  
XhmikosR committed
1413

XhmikosR's avatar
XhmikosR committed
1414
1415
1416
1417
    if (direction === DIRECTION_NEXT) {
      directionalClassName = CLASS_NAME_LEFT;
      orderClassName = CLASS_NAME_NEXT;
      eventDirectionName = DIRECTION_LEFT;
XhmikosR's avatar
Dist.  
XhmikosR committed
1418
    } else {
XhmikosR's avatar
XhmikosR committed
1419
1420
1421
      directionalClassName = CLASS_NAME_RIGHT;
      orderClassName = CLASS_NAME_PREV;
      eventDirectionName = DIRECTION_RIGHT;
XhmikosR's avatar
Dist.  
XhmikosR committed
1422
1423
    }

XhmikosR's avatar
XhmikosR committed
1424
    if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE$1)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1425
1426
1427
1428
      this._isSliding = false;
      return;
    }

XhmikosR's avatar
XhmikosR committed
1429
    var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);
XhmikosR's avatar
Dist.  
XhmikosR committed
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447

    if (slideEvent.defaultPrevented) {
      return;
    }

    if (!activeElement || !nextElement) {
      // Some weirdness is happening, so we bail
      return;
    }

    this._isSliding = true;

    if (isCycling) {
      this.pause();
    }

    this._setActiveIndicatorElement(nextElement);

XhmikosR's avatar
XhmikosR committed
1448
1449
    this._activeElement = nextElement;

XhmikosR's avatar
XhmikosR committed
1450
    if (this._element.classList.contains(CLASS_NAME_SLIDE)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1451
1452
1453
1454
      nextElement.classList.add(orderClassName);
      reflow(nextElement);
      activeElement.classList.add(directionalClassName);
      nextElement.classList.add(directionalClassName);
XhmikosR's avatar
XhmikosR committed
1455
1456
      var transitionDuration = getTransitionDurationFromElement(activeElement);
      EventHandler.one(activeElement, TRANSITION_END, function () {
XhmikosR's avatar
XhmikosR committed
1457
        nextElement.classList.remove(directionalClassName, orderClassName);
XhmikosR's avatar
XhmikosR committed
1458
        nextElement.classList.add(CLASS_NAME_ACTIVE$1);
XhmikosR's avatar
XhmikosR committed
1459
        activeElement.classList.remove(CLASS_NAME_ACTIVE$1, orderClassName, directionalClassName);
XhmikosR's avatar
XhmikosR committed
1460
1461
        _this4._isSliding = false;
        setTimeout(function () {
XhmikosR's avatar
XhmikosR committed
1462
          EventHandler.trigger(_this4._element, EVENT_SLID, {
XhmikosR's avatar
Dist.  
XhmikosR committed
1463
1464
1465
1466
1467
1468
1469
1470
1471
            relatedTarget: nextElement,
            direction: eventDirectionName,
            from: activeElementIndex,
            to: nextElementIndex
          });
        }, 0);
      });
      emulateTransitionEnd(activeElement, transitionDuration);
    } else {
XhmikosR's avatar
XhmikosR committed
1472
1473
      activeElement.classList.remove(CLASS_NAME_ACTIVE$1);
      nextElement.classList.add(CLASS_NAME_ACTIVE$1);
XhmikosR's avatar
Dist.  
XhmikosR committed
1474
      this._isSliding = false;
XhmikosR's avatar
XhmikosR committed
1475
      EventHandler.trigger(this._element, EVENT_SLID, {
XhmikosR's avatar
Dist.  
XhmikosR committed
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
        relatedTarget: nextElement,
        direction: eventDirectionName,
        from: activeElementIndex,
        to: nextElementIndex
      });
    }

    if (isCycling) {
      this.cycle();
    }
  } // Static
XhmikosR's avatar
XhmikosR committed
1487
  ;
XhmikosR's avatar
Dist.  
XhmikosR committed
1488

XhmikosR's avatar
XhmikosR committed
1489
  Carousel.carouselInterface = function carouselInterface(element, config) {
XhmikosR's avatar
XhmikosR committed
1490
    var data = Data.getData(element, DATA_KEY$2);
XhmikosR's avatar
Dist.  
XhmikosR committed
1491

XhmikosR's avatar
XhmikosR committed
1492
    var _config = _extends({}, Default, Manipulator.getDataAttributes(element));
XhmikosR's avatar
Dist.  
XhmikosR committed
1493
1494

    if (typeof config === 'object') {
XhmikosR's avatar
XhmikosR committed
1495
      _config = _extends({}, _config, config);
XhmikosR's avatar
Dist.  
XhmikosR committed
1496
1497
    }

XhmikosR's avatar
XhmikosR committed
1498
    var action = typeof config === 'string' ? config : _config.slide;
XhmikosR's avatar
Dist.  
XhmikosR committed
1499
1500
1501
1502
1503
1504
1505
1506
1507

    if (!data) {
      data = new Carousel(element, _config);
    }

    if (typeof config === 'number') {
      data.to(config);
    } else if (typeof action === 'string') {
      if (typeof data[action] === 'undefined') {
XhmikosR's avatar
XhmikosR committed
1508
        throw new TypeError("No method named \"" + action + "\"");
XhmikosR's avatar
Dist.  
XhmikosR committed
1509
1510
1511
1512
1513
1514
1515
      }

      data[action]();
    } else if (_config.interval && _config.ride) {
      data.pause();
      data.cycle();
    }
XhmikosR's avatar
XhmikosR committed
1516
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
1517

XhmikosR's avatar
XhmikosR committed
1518
  Carousel.jQueryInterface = function jQueryInterface(config) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1519
    return this.each(function () {
XhmikosR's avatar
XhmikosR committed
1520
      Carousel.carouselInterface(this, config);
XhmikosR's avatar
Dist.  
XhmikosR committed
1521
    });
XhmikosR's avatar
XhmikosR committed
1522
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
1523

XhmikosR's avatar
XhmikosR committed
1524
1525
  Carousel.dataApiClickHandler = function dataApiClickHandler(event) {
    var target = getElementFromSelector(this);
XhmikosR's avatar
Dist.  
XhmikosR committed
1526

XhmikosR's avatar
XhmikosR committed
1527
    if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1528
1529
1530
      return;
    }

XhmikosR's avatar
XhmikosR committed
1531
    var config = _extends({}, Manipulator.getDataAttributes(target), Manipulator.getDataAttributes(this));
XhmikosR's avatar
Dist.  
XhmikosR committed
1532

XhmikosR's avatar
XhmikosR committed
1533
    var slideIndex = this.getAttribute('data-slide-to');
XhmikosR's avatar
Dist.  
XhmikosR committed
1534
1535
1536
1537
1538

    if (slideIndex) {
      config.interval = false;
    }

XhmikosR's avatar
XhmikosR committed
1539
    Carousel.carouselInterface(target, config);
XhmikosR's avatar
Dist.  
XhmikosR committed
1540
1541
1542
1543
1544
1545

    if (slideIndex) {
      Data.getData(target, DATA_KEY$2).to(slideIndex);
    }

    event.preventDefault();
XhmikosR's avatar
XhmikosR committed
1546
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
1547

XhmikosR's avatar
XhmikosR committed
1548
  Carousel.getInstance = function getInstance(element) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1549
    return Data.getData(element, DATA_KEY$2);
XhmikosR's avatar
XhmikosR committed
1550
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
1551

XhmikosR's avatar
XhmikosR committed
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
  _createClass(Carousel, null, [{
    key: "VERSION",
    get: function get() {
      return VERSION$2;
    }
  }, {
    key: "Default",
    get: function get() {
      return Default;
    }
  }]);

  return Carousel;
}();
XhmikosR's avatar
Dist.  
XhmikosR committed
1566
1567
1568
1569
1570
1571
1572
/**
 * ------------------------------------------------------------------------
 * Data Api implementation
 * ------------------------------------------------------------------------
 */


XhmikosR's avatar
XhmikosR committed
1573
1574
1575
EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler);
EventHandler.on(window, EVENT_LOAD_DATA_API, function () {
  var carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);
XhmikosR's avatar
Dist.  
XhmikosR committed
1576

XhmikosR's avatar
XhmikosR committed
1577
  for (var i = 0, len = carousels.length; i < len; i++) {
XhmikosR's avatar
XhmikosR committed
1578
    Carousel.carouselInterface(carousels[i], Data.getData(carousels[i], DATA_KEY$2));
XhmikosR's avatar
Dist.  
XhmikosR committed
1579
1580
1581
1582
1583
1584
  }
});
/**
 * ------------------------------------------------------------------------
 * jQuery
 * ------------------------------------------------------------------------
XhmikosR's avatar
XhmikosR committed
1585
 * add .Carousel to jQuery only if jQuery is present
XhmikosR's avatar
Dist.  
XhmikosR committed
1586
1587
 */

XhmikosR's avatar
XhmikosR committed
1588
1589
1590
onDOMContentLoaded(function () {
  var $ = getjQuery();
  /* istanbul ignore if */
1591

XhmikosR's avatar
XhmikosR committed
1592
1593
1594
1595
  if ($) {
    var JQUERY_NO_CONFLICT = $.fn[NAME$2];
    $.fn[NAME$2] = Carousel.jQueryInterface;
    $.fn[NAME$2].Constructor = Carousel;
XhmikosR's avatar
Dist.  
XhmikosR committed
1596

XhmikosR's avatar
XhmikosR committed
1597
1598
1599
1600
1601
1602
    $.fn[NAME$2].noConflict = function () {
      $.fn[NAME$2] = JQUERY_NO_CONFLICT;
      return Carousel.jQueryInterface;
    };
  }
});
XhmikosR's avatar
Dist.  
XhmikosR committed
1603
1604
1605
1606
1607
1608
1609

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

XhmikosR's avatar
XhmikosR committed
1610
var NAME$3 = 'collapse';
XhmikosR's avatar
XhmikosR committed
1611
var VERSION$3 = '5.0.0-alpha3';
XhmikosR's avatar
XhmikosR committed
1612
1613
1614
1615
var DATA_KEY$3 = 'bs.collapse';
var EVENT_KEY$3 = "." + DATA_KEY$3;
var DATA_API_KEY$3 = '.data-api';
var Default$1 = {
XhmikosR's avatar
Dist.  
XhmikosR committed
1616
1617
1618
  toggle: true,
  parent: ''
};
XhmikosR's avatar
XhmikosR committed
1619
var DefaultType$1 = {
XhmikosR's avatar
Dist.  
XhmikosR committed
1620
1621
1622
  toggle: 'boolean',
  parent: '(string|element)'
};
XhmikosR's avatar
XhmikosR committed
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
var EVENT_SHOW = "show" + EVENT_KEY$3;
var EVENT_SHOWN = "shown" + EVENT_KEY$3;
var EVENT_HIDE = "hide" + EVENT_KEY$3;
var EVENT_HIDDEN = "hidden" + EVENT_KEY$3;
var EVENT_CLICK_DATA_API$3 = "click" + EVENT_KEY$3 + DATA_API_KEY$3;
var CLASS_NAME_SHOW = 'show';
var CLASS_NAME_COLLAPSE = 'collapse';
var CLASS_NAME_COLLAPSING = 'collapsing';
var CLASS_NAME_COLLAPSED = 'collapsed';
var WIDTH = 'width';
var HEIGHT = 'height';
var SELECTOR_ACTIVES = '.show, .collapsing';
var SELECTOR_DATA_TOGGLE$1 = '[data-toggle="collapse"]';
XhmikosR's avatar
XhmikosR committed
1636
1637
1638
1639
1640
/**
 * ------------------------------------------------------------------------
 * Class Definition
 * ------------------------------------------------------------------------
 */
XhmikosR's avatar
Dist.  
XhmikosR committed
1641

XhmikosR's avatar
XhmikosR committed
1642
var Collapse = /*#__PURE__*/function () {
XhmikosR's avatar
XhmikosR committed
1643
  function Collapse(element, config) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1644
1645
1646
    this._isTransitioning = false;
    this._element = element;
    this._config = this._getConfig(config);
XhmikosR's avatar
XhmikosR committed
1647
1648
    this._triggerArray = SelectorEngine.find(SELECTOR_DATA_TOGGLE$1 + "[href=\"#" + element.id + "\"]," + (SELECTOR_DATA_TOGGLE$1 + "[data-target=\"#" + element.id + "\"]"));
    var toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$1);
XhmikosR's avatar
XhmikosR committed
1649
1650
1651
1652

    for (var i = 0, len = toggleList.length; i < len; i++) {
      var elem = toggleList[i];
      var selector = getSelectorFromElement(elem);
XhmikosR's avatar
XhmikosR committed
1653
      var filterElement = SelectorEngine.find(selector).filter(function (foundElem) {
XhmikosR's avatar
XhmikosR committed
1654
1655
        return foundElem === element;
      });
XhmikosR's avatar
Dist.  
XhmikosR committed
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677

      if (selector !== null && filterElement.length) {
        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();
    }

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


XhmikosR's avatar
XhmikosR committed
1678
  var _proto = Collapse.prototype;
XhmikosR's avatar
Dist.  
XhmikosR committed
1679

XhmikosR's avatar
XhmikosR committed
1680
1681
  // Public
  _proto.toggle = function toggle() {
XhmikosR's avatar
XhmikosR committed
1682
    if (this._element.classList.contains(CLASS_NAME_SHOW)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1683
1684
1685
1686
      this.hide();
    } else {
      this.show();
    }
XhmikosR's avatar
XhmikosR committed
1687
1688
1689
1690
  };

  _proto.show = function show() {
    var _this = this;
XhmikosR's avatar
Dist.  
XhmikosR committed
1691

XhmikosR's avatar
XhmikosR committed
1692
    if (this._isTransitioning || this._element.classList.contains(CLASS_NAME_SHOW)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1693
1694
1695
      return;
    }

XhmikosR's avatar
XhmikosR committed
1696
1697
    var actives;
    var activesData;
XhmikosR's avatar
Dist.  
XhmikosR committed
1698
1699

    if (this._parent) {
XhmikosR's avatar
XhmikosR committed
1700
      actives = SelectorEngine.find(SELECTOR_ACTIVES, this._parent).filter(function (elem) {
XhmikosR's avatar
XhmikosR committed
1701
1702
        if (typeof _this._config.parent === 'string') {
          return elem.getAttribute('data-parent') === _this._config.parent;
XhmikosR's avatar
Dist.  
XhmikosR committed
1703
1704
        }

XhmikosR's avatar
XhmikosR committed
1705
        return elem.classList.contains(CLASS_NAME_COLLAPSE);
XhmikosR's avatar
Dist.  
XhmikosR committed
1706
1707
1708
1709
1710
1711
1712
      });

      if (actives.length === 0) {
        actives = null;
      }
    }

XhmikosR's avatar
XhmikosR committed
1713
    var container = SelectorEngine.findOne(this._selector);
XhmikosR's avatar
Dist.  
XhmikosR committed
1714
1715

    if (actives) {
XhmikosR's avatar
XhmikosR committed
1716
1717
1718
      var tempActiveData = actives.filter(function (elem) {
        return container !== elem;
      });
XhmikosR's avatar
Dist.  
XhmikosR committed
1719
1720
1721
1722
1723
1724
1725
      activesData = tempActiveData[0] ? Data.getData(tempActiveData[0], DATA_KEY$3) : null;

      if (activesData && activesData._isTransitioning) {
        return;
      }
    }

XhmikosR's avatar
XhmikosR committed
1726
    var startEvent = EventHandler.trigger(this._element, EVENT_SHOW);
XhmikosR's avatar
Dist.  
XhmikosR committed
1727
1728
1729
1730
1731
1732

    if (startEvent.defaultPrevented) {
      return;
    }

    if (actives) {
XhmikosR's avatar
XhmikosR committed
1733
      actives.forEach(function (elemActive) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1734
        if (container !== elemActive) {
XhmikosR's avatar
XhmikosR committed
1735
          Collapse.collapseInterface(elemActive, 'hide');
XhmikosR's avatar
Dist.  
XhmikosR committed
1736
1737
1738
1739
1740
1741
1742
1743
        }

        if (!activesData) {
          Data.setData(elemActive, DATA_KEY$3, null);
        }
      });
    }

XhmikosR's avatar
XhmikosR committed
1744
    var dimension = this._getDimension();
XhmikosR's avatar
Dist.  
XhmikosR committed
1745

XhmikosR's avatar
XhmikosR committed
1746
    this._element.classList.remove(CLASS_NAME_COLLAPSE);
XhmikosR's avatar
Dist.  
XhmikosR committed
1747

XhmikosR's avatar
XhmikosR committed
1748
    this._element.classList.add(CLASS_NAME_COLLAPSING);
XhmikosR's avatar
Dist.  
XhmikosR committed
1749
1750
1751
1752

    this._element.style[dimension] = 0;

    if (this._triggerArray.length) {
XhmikosR's avatar
XhmikosR committed
1753
      this._triggerArray.forEach(function (element) {
XhmikosR's avatar
XhmikosR committed
1754
        element.classList.remove(CLASS_NAME_COLLAPSED);
XhmikosR's avatar
Dist.  
XhmikosR committed
1755
1756
1757
1758
1759
1760
        element.setAttribute('aria-expanded', true);
      });
    }

    this.setTransitioning(true);

XhmikosR's avatar
XhmikosR committed
1761
    var complete = function complete() {
XhmikosR's avatar
XhmikosR committed
1762
      _this._element.classList.remove(CLASS_NAME_COLLAPSING);
XhmikosR's avatar
XhmikosR committed
1763

XhmikosR's avatar
XhmikosR committed
1764
      _this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);
XhmikosR's avatar
Dist.  
XhmikosR committed
1765

XhmikosR's avatar
XhmikosR committed
1766
      _this._element.style[dimension] = '';
XhmikosR's avatar
Dist.  
XhmikosR committed
1767

XhmikosR's avatar
XhmikosR committed
1768
      _this.setTransitioning(false);
XhmikosR's avatar
Dist.  
XhmikosR committed
1769

XhmikosR's avatar
XhmikosR committed
1770
      EventHandler.trigger(_this._element, EVENT_SHOWN);
XhmikosR's avatar
Dist.  
XhmikosR committed
1771
1772
    };

XhmikosR's avatar
XhmikosR committed
1773
1774
1775
    var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
    var scrollSize = "scroll" + capitalizedDimension;
    var transitionDuration = getTransitionDurationFromElement(this._element);
XhmikosR's avatar
Dist.  
XhmikosR committed
1776
1777
    EventHandler.one(this._element, TRANSITION_END, complete);
    emulateTransitionEnd(this._element, transitionDuration);
XhmikosR's avatar
XhmikosR committed
1778
1779
1780
1781
1782
    this._element.style[dimension] = this._element[scrollSize] + "px";
  };

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

XhmikosR's avatar
XhmikosR committed
1784
    if (this._isTransitioning || !this._element.classList.contains(CLASS_NAME_SHOW)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1785
1786
1787
      return;
    }

XhmikosR's avatar
XhmikosR committed
1788
    var startEvent = EventHandler.trigger(this._element, EVENT_HIDE);
XhmikosR's avatar
Dist.  
XhmikosR committed
1789
1790
1791
1792
1793

    if (startEvent.defaultPrevented) {
      return;
    }

XhmikosR's avatar
XhmikosR committed
1794
    var dimension = this._getDimension();
XhmikosR's avatar
Dist.  
XhmikosR committed
1795

XhmikosR's avatar
XhmikosR committed
1796
    this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px";
XhmikosR's avatar
Dist.  
XhmikosR committed
1797
1798
    reflow(this._element);

XhmikosR's avatar
XhmikosR committed
1799
    this._element.classList.add(CLASS_NAME_COLLAPSING);
XhmikosR's avatar
Dist.  
XhmikosR committed
1800

XhmikosR's avatar
XhmikosR committed
1801
    this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);
XhmikosR's avatar
Dist.  
XhmikosR committed
1802

XhmikosR's avatar
XhmikosR committed
1803
    var triggerArrayLength = this._triggerArray.length;
XhmikosR's avatar
Dist.  
XhmikosR committed
1804
1805

    if (triggerArrayLength > 0) {
XhmikosR's avatar
XhmikosR committed
1806
1807
      for (var i = 0; i < triggerArrayLength; i++) {
        var trigger = this._triggerArray[i];
XhmikosR's avatar
XhmikosR committed
1808
        var elem = getElementFromSelector(trigger);
XhmikosR's avatar
Dist.  
XhmikosR committed
1809

XhmikosR's avatar
XhmikosR committed
1810
1811
        if (elem && !elem.classList.contains(CLASS_NAME_SHOW)) {
          trigger.classList.add(CLASS_NAME_COLLAPSED);
XhmikosR's avatar
XhmikosR committed
1812
          trigger.setAttribute('aria-expanded', false);
XhmikosR's avatar
Dist.  
XhmikosR committed
1813
1814
1815
1816
1817
1818
        }
      }
    }

    this.setTransitioning(true);

XhmikosR's avatar
XhmikosR committed
1819
1820
    var complete = function complete() {
      _this2.setTransitioning(false);
XhmikosR's avatar
Dist.  
XhmikosR committed
1821

XhmikosR's avatar
XhmikosR committed
1822
      _this2._element.classList.remove(CLASS_NAME_COLLAPSING);
XhmikosR's avatar
Dist.  
XhmikosR committed
1823

XhmikosR's avatar
XhmikosR committed
1824
      _this2._element.classList.add(CLASS_NAME_COLLAPSE);
XhmikosR's avatar
Dist.  
XhmikosR committed
1825

XhmikosR's avatar
XhmikosR committed
1826
      EventHandler.trigger(_this2._element, EVENT_HIDDEN);
XhmikosR's avatar
Dist.  
XhmikosR committed
1827
1828
1829
    };

    this._element.style[dimension] = '';
XhmikosR's avatar
XhmikosR committed
1830
    var transitionDuration = getTransitionDurationFromElement(this._element);
XhmikosR's avatar
Dist.  
XhmikosR committed
1831
1832
    EventHandler.one(this._element, TRANSITION_END, complete);
    emulateTransitionEnd(this._element, transitionDuration);
XhmikosR's avatar
XhmikosR committed
1833
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
1834

XhmikosR's avatar
XhmikosR committed
1835
  _proto.setTransitioning = function setTransitioning(isTransitioning) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1836
    this._isTransitioning = isTransitioning;
XhmikosR's avatar
XhmikosR committed
1837
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
1838

XhmikosR's avatar
XhmikosR committed
1839
  _proto.dispose = function dispose() {
XhmikosR's avatar
Dist.  
XhmikosR committed
1840
1841
1842
1843
1844
1845
1846
    Data.removeData(this._element, DATA_KEY$3);
    this._config = null;
    this._parent = null;
    this._element = null;
    this._triggerArray = null;
    this._isTransitioning = null;
  } // Private
XhmikosR's avatar
XhmikosR committed
1847
  ;
XhmikosR's avatar
Dist.  
XhmikosR committed
1848

XhmikosR's avatar
XhmikosR committed
1849
  _proto._getConfig = function _getConfig(config) {
XhmikosR's avatar
XhmikosR committed
1850
    config = _extends({}, Default$1, config);
XhmikosR's avatar
Dist.  
XhmikosR committed
1851
1852
1853
1854
    config.toggle = Boolean(config.toggle); // Coerce string values

    typeCheckConfig(NAME$3, config, DefaultType$1);
    return config;
XhmikosR's avatar
XhmikosR committed
1855
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
1856

XhmikosR's avatar
XhmikosR committed
1857
  _proto._getDimension = function _getDimension() {
XhmikosR's avatar
XhmikosR committed
1858
    return this._element.classList.contains(WIDTH) ? WIDTH : HEIGHT;
XhmikosR's avatar
XhmikosR committed
1859
1860
1861
1862
  };

  _proto._getParent = function _getParent() {
    var _this3 = this;
XhmikosR's avatar
Dist.  
XhmikosR committed
1863

XhmikosR's avatar
XhmikosR committed
1864
    var parent = this._config.parent;
XhmikosR's avatar
Dist.  
XhmikosR committed
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874

    if (isElement(parent)) {
      // it's a jQuery object
      if (typeof parent.jquery !== 'undefined' || typeof parent[0] !== 'undefined') {
        parent = parent[0];
      }
    } else {
      parent = SelectorEngine.findOne(parent);
    }

XhmikosR's avatar
XhmikosR committed
1875
1876
    var selector = SELECTOR_DATA_TOGGLE$1 + "[data-parent=\"" + parent + "\"]";
    SelectorEngine.find(selector, parent).forEach(function (element) {
XhmikosR's avatar
XhmikosR committed
1877
      var selected = getElementFromSelector(element);
1878
1879

      _this3._addAriaAndCollapsedClass(selected, [element]);
XhmikosR's avatar
Dist.  
XhmikosR committed
1880
1881
    });
    return parent;
XhmikosR's avatar
XhmikosR committed
1882
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
1883

XhmikosR's avatar
XhmikosR committed
1884
  _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {
XhmikosR's avatar
XhmikosR committed
1885
1886
1887
    if (!element || !triggerArray.length) {
      return;
    }
XhmikosR's avatar
Dist.  
XhmikosR committed
1888

XhmikosR's avatar
XhmikosR committed
1889
1890
1891
1892
1893
1894
    var isOpen = element.classList.contains(CLASS_NAME_SHOW);
    triggerArray.forEach(function (elem) {
      if (isOpen) {
        elem.classList.remove(CLASS_NAME_COLLAPSED);
      } else {
        elem.classList.add(CLASS_NAME_COLLAPSED);
XhmikosR's avatar
Dist.  
XhmikosR committed
1895
      }
XhmikosR's avatar
XhmikosR committed
1896
1897
1898

      elem.setAttribute('aria-expanded', isOpen);
    });
XhmikosR's avatar
Dist.  
XhmikosR committed
1899
  } // Static
XhmikosR's avatar
XhmikosR committed
1900
  ;
XhmikosR's avatar
Dist.  
XhmikosR committed
1901

XhmikosR's avatar
XhmikosR committed
1902
  Collapse.collapseInterface = function collapseInterface(element, config) {
XhmikosR's avatar
XhmikosR committed
1903
    var data = Data.getData(element, DATA_KEY$3);
XhmikosR's avatar
Dist.  
XhmikosR committed
1904

XhmikosR's avatar
XhmikosR committed
1905
    var _config = _extends({}, Default$1, Manipulator.getDataAttributes(element), typeof config === 'object' && config ? config : {});
XhmikosR's avatar
Dist.  
XhmikosR committed
1906

XhmikosR's avatar
XhmikosR committed
1907
    if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1908
1909
1910
1911
1912
1913
1914
1915
1916
      _config.toggle = false;
    }

    if (!data) {
      data = new Collapse(element, _config);
    }

    if (typeof config === 'string') {
      if (typeof data[config] === 'undefined') {
XhmikosR's avatar
XhmikosR committed
1917
        throw new TypeError("No method named \"" + config + "\"");
XhmikosR's avatar
Dist.  
XhmikosR committed
1918
1919
1920
1921
      }

      data[config]();
    }
XhmikosR's avatar
XhmikosR committed
1922
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
1923

XhmikosR's avatar
XhmikosR committed
1924
  Collapse.jQueryInterface = function jQueryInterface(config) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1925
    return this.each(function () {
XhmikosR's avatar
XhmikosR committed
1926
      Collapse.collapseInterface(this, config);
XhmikosR's avatar
Dist.  
XhmikosR committed
1927
    });
XhmikosR's avatar
XhmikosR committed
1928
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
1929

XhmikosR's avatar
XhmikosR committed
1930
  Collapse.getInstance = function getInstance(element) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1931
    return Data.getData(element, DATA_KEY$3);
XhmikosR's avatar
XhmikosR committed
1932
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
1933

XhmikosR's avatar
XhmikosR committed
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
  _createClass(Collapse, null, [{
    key: "VERSION",
    get: function get() {
      return VERSION$3;
    }
  }, {
    key: "Default",
    get: function get() {
      return Default$1;
    }
  }]);

  return Collapse;
}();
XhmikosR's avatar
Dist.  
XhmikosR committed
1948
1949
1950
1951
1952
1953
1954
/**
 * ------------------------------------------------------------------------
 * Data Api implementation
 * ------------------------------------------------------------------------
 */


XhmikosR's avatar
XhmikosR committed
1955
EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$1, function (event) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1956
1957
1958
1959
1960
  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
  if (event.target.tagName === 'A') {
    event.preventDefault();
  }

XhmikosR's avatar
XhmikosR committed
1961
1962
  var triggerData = Manipulator.getDataAttributes(this);
  var selector = getSelectorFromElement(this);
XhmikosR's avatar
XhmikosR committed
1963
  var selectorElements = SelectorEngine.find(selector);
XhmikosR's avatar
XhmikosR committed
1964
1965
1966
  selectorElements.forEach(function (element) {
    var data = Data.getData(element, DATA_KEY$3);
    var config;
XhmikosR's avatar
Dist.  
XhmikosR committed
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979

    if (data) {
      // update parent attribute
      if (data._parent === null && typeof triggerData.parent === 'string') {
        data._config.parent = triggerData.parent;
        data._parent = data._getParent();
      }

      config = 'toggle';
    } else {
      config = triggerData;
    }

XhmikosR's avatar
XhmikosR committed
1980
    Collapse.collapseInterface(element, config);
XhmikosR's avatar
Dist.  
XhmikosR committed
1981
1982
1983
1984
1985
1986
  });
});
/**
 * ------------------------------------------------------------------------
 * jQuery
 * ------------------------------------------------------------------------
XhmikosR's avatar
XhmikosR committed
1987
 * add .Collapse to jQuery only if jQuery is present
XhmikosR's avatar
Dist.  
XhmikosR committed
1988
1989
 */

XhmikosR's avatar
XhmikosR committed
1990
1991
1992
onDOMContentLoaded(function () {
  var $ = getjQuery();
  /* istanbul ignore if */
1993

XhmikosR's avatar
XhmikosR committed
1994
1995
1996
1997
  if ($) {
    var JQUERY_NO_CONFLICT = $.fn[NAME$3];
    $.fn[NAME$3] = Collapse.jQueryInterface;
    $.fn[NAME$3].Constructor = Collapse;
XhmikosR's avatar
Dist.  
XhmikosR committed
1998

XhmikosR's avatar
XhmikosR committed
1999
2000
2001
2002
2003
2004
    $.fn[NAME$3].noConflict = function () {
      $.fn[NAME$3] = JQUERY_NO_CONFLICT;
      return Collapse.jQueryInterface;
    };
  }
});
XhmikosR's avatar
Dist.  
XhmikosR committed
2005
2006
2007
2008
2009
2010
2011

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

XhmikosR's avatar
XhmikosR committed
2012
var NAME$4 = 'dropdown';
XhmikosR's avatar
XhmikosR committed
2013
var VERSION$4 = '5.0.0-alpha3';
XhmikosR's avatar
XhmikosR committed
2014
2015
2016
var DATA_KEY$4 = 'bs.dropdown';
var EVENT_KEY$4 = "." + DATA_KEY$4;
var DATA_API_KEY$4 = '.data-api';
XhmikosR's avatar
XhmikosR committed
2017
2018
2019
2020
2021
2022
2023
2024
var ESCAPE_KEY = 'Escape';
var SPACE_KEY = 'Space';
var TAB_KEY = 'Tab';
var ARROW_UP_KEY = 'ArrowUp';
var ARROW_DOWN_KEY = 'ArrowDown';
var RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button

var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEY + "|" + ARROW_DOWN_KEY + "|" + ESCAPE_KEY);
XhmikosR's avatar
XhmikosR committed
2025
2026
2027
2028
2029
2030
2031
2032
var EVENT_HIDE$1 = "hide" + EVENT_KEY$4;
var EVENT_HIDDEN$1 = "hidden" + EVENT_KEY$4;
var EVENT_SHOW$1 = "show" + EVENT_KEY$4;
var EVENT_SHOWN$1 = "shown" + EVENT_KEY$4;
var EVENT_CLICK = "click" + EVENT_KEY$4;
var EVENT_CLICK_DATA_API$4 = "click" + EVENT_KEY$4 + DATA_API_KEY$4;
var EVENT_KEYDOWN_DATA_API = "keydown" + EVENT_KEY$4 + DATA_API_KEY$4;
var EVENT_KEYUP_DATA_API = "keyup" + EVENT_KEY$4 + DATA_API_KEY$4;
XhmikosR's avatar
XhmikosR committed
2033
var CLASS_NAME_DISABLED = 'disabled';
XhmikosR's avatar
XhmikosR committed
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
var CLASS_NAME_SHOW$1 = 'show';
var CLASS_NAME_DROPUP = 'dropup';
var CLASS_NAME_DROPRIGHT = 'dropright';
var CLASS_NAME_DROPLEFT = 'dropleft';
var CLASS_NAME_MENURIGHT = 'dropdown-menu-right';
var CLASS_NAME_NAVBAR = 'navbar';
var CLASS_NAME_POSITION_STATIC = 'position-static';
var SELECTOR_DATA_TOGGLE$2 = '[data-toggle="dropdown"]';
var SELECTOR_FORM_CHILD = '.dropdown form';
var SELECTOR_MENU = '.dropdown-menu';
var SELECTOR_NAVBAR_NAV = '.navbar-nav';
var SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';
var PLACEMENT_TOP = 'top-start';
var PLACEMENT_TOPEND = 'top-end';
var PLACEMENT_BOTTOM = 'bottom-start';
var PLACEMENT_BOTTOMEND = 'bottom-end';
var PLACEMENT_RIGHT = 'right-start';
var PLACEMENT_LEFT = 'left-start';
XhmikosR's avatar
XhmikosR committed
2052
var Default$2 = {
XhmikosR's avatar
Dist.  
XhmikosR committed
2053
2054
2055
2056
  offset: 0,
  flip: true,
  boundary: 'scrollParent',
  reference: 'toggle',
XhmikosR's avatar
XhmikosR committed
2057
2058
  display: 'dynamic',
  popperConfig: null
XhmikosR's avatar
Dist.  
XhmikosR committed
2059
};
XhmikosR's avatar
XhmikosR committed
2060
var DefaultType$2 = {
XhmikosR's avatar
Dist.  
XhmikosR committed
2061
2062
2063
2064
  offset: '(number|string|function)',
  flip: 'boolean',
  boundary: '(string|element)',
  reference: '(string|element)',
XhmikosR's avatar
XhmikosR committed
2065
2066
  display: 'string',
  popperConfig: '(null|object)'
XhmikosR's avatar
Dist.  
XhmikosR committed
2067
};
XhmikosR's avatar
XhmikosR committed
2068
2069
2070
2071
2072
/**
 * ------------------------------------------------------------------------
 * Class Definition
 * ------------------------------------------------------------------------
 */
XhmikosR's avatar
Dist.  
XhmikosR committed
2073

XhmikosR's avatar
XhmikosR committed
2074
var Dropdown = /*#__PURE__*/function () {
XhmikosR's avatar
XhmikosR committed
2075
  function Dropdown(element, config) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
    this._element = element;
    this._popper = null;
    this._config = this._getConfig(config);
    this._menu = this._getMenuElement();
    this._inNavbar = this._detectNavbar();

    this._addEventListeners();

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


XhmikosR's avatar
XhmikosR committed
2088
  var _proto = Dropdown.prototype;
XhmikosR's avatar
Dist.  
XhmikosR committed
2089

XhmikosR's avatar
XhmikosR committed
2090
2091
  // Public
  _proto.toggle = function toggle() {
XhmikosR's avatar
XhmikosR committed
2092
    if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2093
2094
2095
      return;
    }

XhmikosR's avatar
XhmikosR committed
2096
    var isActive = this._element.classList.contains(CLASS_NAME_SHOW$1);
XhmikosR's avatar
Dist.  
XhmikosR committed
2097

XhmikosR's avatar
XhmikosR committed
2098
    Dropdown.clearMenus();
XhmikosR's avatar
Dist.  
XhmikosR committed
2099
2100
2101
2102
2103

    if (isActive) {
      return;
    }

XhmikosR's avatar
XhmikosR committed
2104
2105
2106
2107
    this.show();
  };

  _proto.show = function show() {
XhmikosR's avatar
XhmikosR committed
2108
    if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || this._menu.classList.contains(CLASS_NAME_SHOW$1)) {
XhmikosR's avatar
XhmikosR committed
2109
2110
2111
2112
      return;
    }

    var parent = Dropdown.getParentFromElement(this._element);
XhmikosR's avatar
XhmikosR committed
2113
    var relatedTarget = {
XhmikosR's avatar
Dist.  
XhmikosR committed
2114
2115
      relatedTarget: this._element
    };
XhmikosR's avatar
XhmikosR committed
2116
    var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$1, relatedTarget);
XhmikosR's avatar
Dist.  
XhmikosR committed
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127

    if (showEvent.defaultPrevented) {
      return;
    } // Disable totally Popper.js for Dropdown in Navbar


    if (!this._inNavbar) {
      if (typeof Popper === 'undefined') {
        throw new TypeError('Bootstrap\'s dropdowns require Popper.js (https://popper.js.org)');
      }

XhmikosR's avatar
XhmikosR committed
2128
      var referenceElement = this._element;
XhmikosR's avatar
Dist.  
XhmikosR committed
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143

      if (this._config.reference === 'parent') {
        referenceElement = parent;
      } else if (isElement(this._config.reference)) {
        referenceElement = this._config.reference; // Check if it's jQuery element

        if (typeof this._config.reference.jquery !== 'undefined') {
          referenceElement = this._config.reference[0];
        }
      } // If boundary is not `scrollParent`, then set position to `static`
      // to allow the menu to "escape" the scroll parent's boundaries
      // https://github.com/twbs/bootstrap/issues/24251


      if (this._config.boundary !== 'scrollParent') {
XhmikosR's avatar
XhmikosR committed
2144
        parent.classList.add(CLASS_NAME_POSITION_STATIC);
XhmikosR's avatar
Dist.  
XhmikosR committed
2145
2146
2147
2148
2149
2150
2151
2152
2153
      }

      this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig());
    } // If this is a touch-enabled device we add extra
    // 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


XhmikosR's avatar
XhmikosR committed
2154
    if ('ontouchstart' in document.documentElement && !parent.closest(SELECTOR_NAVBAR_NAV)) {
XhmikosR's avatar
XhmikosR committed
2155
2156
2157
      var _ref;

      (_ref = []).concat.apply(_ref, document.body.children).forEach(function (elem) {
XhmikosR's avatar
XhmikosR committed
2158
2159
        return EventHandler.on(elem, 'mouseover', null, noop());
      });
XhmikosR's avatar
Dist.  
XhmikosR committed
2160
2161
2162
2163
2164
2165
    }

    this._element.focus();

    this._element.setAttribute('aria-expanded', true);

Mark Otto's avatar
Mark Otto committed
2166
2167
2168
2169
    this._menu.classList.toggle(CLASS_NAME_SHOW$1);

    this._element.classList.toggle(CLASS_NAME_SHOW$1);

XhmikosR's avatar
XhmikosR committed
2170
    EventHandler.trigger(parent, EVENT_SHOWN$1, relatedTarget);
XhmikosR's avatar
XhmikosR committed
2171
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2172

XhmikosR's avatar
XhmikosR committed
2173
  _proto.hide = function hide() {
XhmikosR's avatar
XhmikosR committed
2174
    if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || !this._menu.classList.contains(CLASS_NAME_SHOW$1)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2175
2176
2177
      return;
    }

XhmikosR's avatar
XhmikosR committed
2178
    var parent = Dropdown.getParentFromElement(this._element);
XhmikosR's avatar
XhmikosR committed
2179
    var relatedTarget = {
XhmikosR's avatar
Dist.  
XhmikosR committed
2180
2181
      relatedTarget: this._element
    };
XhmikosR's avatar
XhmikosR committed
2182
    var hideEvent = EventHandler.trigger(parent, EVENT_HIDE$1, relatedTarget);
XhmikosR's avatar
Dist.  
XhmikosR committed
2183
2184
2185
2186
2187

    if (hideEvent.defaultPrevented) {
      return;
    }

XhmikosR's avatar
XhmikosR committed
2188
2189
2190
2191
    if (this._popper) {
      this._popper.destroy();
    }

Mark Otto's avatar
Mark Otto committed
2192
2193
2194
2195
    this._menu.classList.toggle(CLASS_NAME_SHOW$1);

    this._element.classList.toggle(CLASS_NAME_SHOW$1);

XhmikosR's avatar
XhmikosR committed
2196
    EventHandler.trigger(parent, EVENT_HIDDEN$1, relatedTarget);
XhmikosR's avatar
XhmikosR committed
2197
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2198

XhmikosR's avatar
XhmikosR committed
2199
  _proto.dispose = function dispose() {
XhmikosR's avatar
Dist.  
XhmikosR committed
2200
2201
2202
2203
2204
    Data.removeData(this._element, DATA_KEY$4);
    EventHandler.off(this._element, EVENT_KEY$4);
    this._element = null;
    this._menu = null;

XhmikosR's avatar
XhmikosR committed
2205
    if (this._popper) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2206
2207
2208
2209
      this._popper.destroy();

      this._popper = null;
    }
XhmikosR's avatar
XhmikosR committed
2210
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2211

XhmikosR's avatar
XhmikosR committed
2212
  _proto.update = function update() {
XhmikosR's avatar
Dist.  
XhmikosR committed
2213
2214
    this._inNavbar = this._detectNavbar();

XhmikosR's avatar
XhmikosR committed
2215
    if (this._popper) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2216
2217
2218
      this._popper.scheduleUpdate();
    }
  } // Private
XhmikosR's avatar
XhmikosR committed
2219
  ;
XhmikosR's avatar
Dist.  
XhmikosR committed
2220

XhmikosR's avatar
XhmikosR committed
2221
2222
  _proto._addEventListeners = function _addEventListeners() {
    var _this = this;
XhmikosR's avatar
Dist.  
XhmikosR committed
2223

XhmikosR's avatar
XhmikosR committed
2224
    EventHandler.on(this._element, EVENT_CLICK, function (event) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2225
2226
      event.preventDefault();
      event.stopPropagation();
XhmikosR's avatar
XhmikosR committed
2227
2228

      _this.toggle();
XhmikosR's avatar
Dist.  
XhmikosR committed
2229
    });
XhmikosR's avatar
XhmikosR committed
2230
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2231

XhmikosR's avatar
XhmikosR committed
2232
  _proto._getConfig = function _getConfig(config) {
XhmikosR's avatar
XhmikosR committed
2233
    config = _extends({}, this.constructor.Default, Manipulator.getDataAttributes(this._element), config);
XhmikosR's avatar
Dist.  
XhmikosR committed
2234
2235
    typeCheckConfig(NAME$4, config, this.constructor.DefaultType);
    return config;
XhmikosR's avatar
XhmikosR committed
2236
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2237

XhmikosR's avatar
XhmikosR committed
2238
  _proto._getMenuElement = function _getMenuElement() {
XhmikosR's avatar
XhmikosR committed
2239
    return SelectorEngine.next(this._element, SELECTOR_MENU)[0];
XhmikosR's avatar
XhmikosR committed
2240
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2241

XhmikosR's avatar
XhmikosR committed
2242
2243
  _proto._getPlacement = function _getPlacement() {
    var parentDropdown = this._element.parentNode;
XhmikosR's avatar
XhmikosR committed
2244
    var placement = PLACEMENT_BOTTOM; // Handle dropup
XhmikosR's avatar
Dist.  
XhmikosR committed
2245

XhmikosR's avatar
XhmikosR committed
2246
    if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {
XhmikosR's avatar
XhmikosR committed
2247
      placement = this._menu.classList.contains(CLASS_NAME_MENURIGHT) ? PLACEMENT_TOPEND : PLACEMENT_TOP;
XhmikosR's avatar
XhmikosR committed
2248
2249
2250
2251
2252
2253
    } else if (parentDropdown.classList.contains(CLASS_NAME_DROPRIGHT)) {
      placement = PLACEMENT_RIGHT;
    } else if (parentDropdown.classList.contains(CLASS_NAME_DROPLEFT)) {
      placement = PLACEMENT_LEFT;
    } else if (this._menu.classList.contains(CLASS_NAME_MENURIGHT)) {
      placement = PLACEMENT_BOTTOMEND;
XhmikosR's avatar
Dist.  
XhmikosR committed
2254
2255
2256
    }

    return placement;
XhmikosR's avatar
XhmikosR committed
2257
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2258

XhmikosR's avatar
XhmikosR committed
2259
  _proto._detectNavbar = function _detectNavbar() {
XhmikosR's avatar
XhmikosR committed
2260
    return Boolean(this._element.closest("." + CLASS_NAME_NAVBAR));
XhmikosR's avatar
XhmikosR committed
2261
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2262

XhmikosR's avatar
XhmikosR committed
2263
2264
2265
2266
  _proto._getOffset = function _getOffset() {
    var _this2 = this;

    var offset = {};
XhmikosR's avatar
Dist.  
XhmikosR committed
2267
2268

    if (typeof this._config.offset === 'function') {
XhmikosR's avatar
XhmikosR committed
2269
      offset.fn = function (data) {
XhmikosR's avatar
XhmikosR committed
2270
        data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets, _this2._element) || {});
XhmikosR's avatar
Dist.  
XhmikosR committed
2271
2272
2273
2274
2275
2276
2277
        return data;
      };
    } else {
      offset.offset = this._config.offset;
    }

    return offset;
XhmikosR's avatar
XhmikosR committed
2278
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2279

XhmikosR's avatar
XhmikosR committed
2280
2281
  _proto._getPopperConfig = function _getPopperConfig() {
    var popperConfig = {
XhmikosR's avatar
Dist.  
XhmikosR committed
2282
2283
2284
2285
2286
2287
2288
2289
2290
      placement: this._getPlacement(),
      modifiers: {
        offset: this._getOffset(),
        flip: {
          enabled: this._config.flip
        },
        preventOverflow: {
          boundariesElement: this._config.boundary
        }
XhmikosR's avatar
XhmikosR committed
2291
2292
      }
    }; // Disable Popper.js if we have a static display
XhmikosR's avatar
Dist.  
XhmikosR committed
2293
2294
2295
2296
2297
2298
2299

    if (this._config.display === 'static') {
      popperConfig.modifiers.applyStyle = {
        enabled: false
      };
    }

XhmikosR's avatar
XhmikosR committed
2300
    return _extends({}, popperConfig, this._config.popperConfig);
XhmikosR's avatar
Dist.  
XhmikosR committed
2301
  } // Static
XhmikosR's avatar
XhmikosR committed
2302
  ;
XhmikosR's avatar
Dist.  
XhmikosR committed
2303

XhmikosR's avatar
XhmikosR committed
2304
  Dropdown.dropdownInterface = function dropdownInterface(element, config) {
XhmikosR's avatar
XhmikosR committed
2305
    var data = Data.getData(element, DATA_KEY$4);
XhmikosR's avatar
Dist.  
XhmikosR committed
2306

XhmikosR's avatar
XhmikosR committed
2307
    var _config = typeof config === 'object' ? config : null;
XhmikosR's avatar
Dist.  
XhmikosR committed
2308
2309
2310
2311
2312
2313
2314

    if (!data) {
      data = new Dropdown(element, _config);
    }

    if (typeof config === 'string') {
      if (typeof data[config] === 'undefined') {
XhmikosR's avatar
XhmikosR committed
2315
        throw new TypeError("No method named \"" + config + "\"");
XhmikosR's avatar
Dist.  
XhmikosR committed
2316
2317
2318
2319
      }

      data[config]();
    }
XhmikosR's avatar
XhmikosR committed
2320
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2321

XhmikosR's avatar
XhmikosR committed
2322
  Dropdown.jQueryInterface = function jQueryInterface(config) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2323
    return this.each(function () {
XhmikosR's avatar
XhmikosR committed
2324
      Dropdown.dropdownInterface(this, config);
XhmikosR's avatar
Dist.  
XhmikosR committed
2325
    });
XhmikosR's avatar
XhmikosR committed
2326
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2327

XhmikosR's avatar
XhmikosR committed
2328
  Dropdown.clearMenus = function clearMenus(event) {
XhmikosR's avatar
XhmikosR committed
2329
    if (event && (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2330
2331
2332
      return;
    }

XhmikosR's avatar
XhmikosR committed
2333
    var toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE$2);
XhmikosR's avatar
Dist.  
XhmikosR committed
2334

XhmikosR's avatar
XhmikosR committed
2335
    for (var i = 0, len = toggles.length; i < len; i++) {
XhmikosR's avatar
XhmikosR committed
2336
      var parent = Dropdown.getParentFromElement(toggles[i]);
XhmikosR's avatar
XhmikosR committed
2337
2338
      var context = Data.getData(toggles[i], DATA_KEY$4);
      var relatedTarget = {
XhmikosR's avatar
Dist.  
XhmikosR committed
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
        relatedTarget: toggles[i]
      };

      if (event && event.type === 'click') {
        relatedTarget.clickEvent = event;
      }

      if (!context) {
        continue;
      }

XhmikosR's avatar
XhmikosR committed
2350
      var dropdownMenu = context._menu;
XhmikosR's avatar
Dist.  
XhmikosR committed
2351

XhmikosR's avatar
XhmikosR committed
2352
      if (!toggles[i].classList.contains(CLASS_NAME_SHOW$1)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2353
2354
2355
        continue;
      }

XhmikosR's avatar
XhmikosR committed
2356
      if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.key === TAB_KEY) && dropdownMenu.contains(event.target)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2357
2358
2359
        continue;
      }

XhmikosR's avatar
XhmikosR committed
2360
      var hideEvent = EventHandler.trigger(parent, EVENT_HIDE$1, relatedTarget);
XhmikosR's avatar
Dist.  
XhmikosR committed
2361
2362
2363
2364
2365
2366
2367
2368

      if (hideEvent.defaultPrevented) {
        continue;
      } // If this is a touch-enabled device we remove the extra
      // empty mouseover listeners we added for iOS support


      if ('ontouchstart' in document.documentElement) {
XhmikosR's avatar
XhmikosR committed
2369
2370
2371
        var _ref2;

        (_ref2 = []).concat.apply(_ref2, document.body.children).forEach(function (elem) {
XhmikosR's avatar
XhmikosR committed
2372
2373
          return EventHandler.off(elem, 'mouseover', null, noop());
        });
XhmikosR's avatar
Dist.  
XhmikosR committed
2374
2375
2376
      }

      toggles[i].setAttribute('aria-expanded', 'false');
XhmikosR's avatar
XhmikosR committed
2377
2378
2379
2380
2381

      if (context._popper) {
        context._popper.destroy();
      }

XhmikosR's avatar
XhmikosR committed
2382
2383
2384
      dropdownMenu.classList.remove(CLASS_NAME_SHOW$1);
      toggles[i].classList.remove(CLASS_NAME_SHOW$1);
      EventHandler.trigger(parent, EVENT_HIDDEN$1, relatedTarget);
XhmikosR's avatar
Dist.  
XhmikosR committed
2385
    }
XhmikosR's avatar
XhmikosR committed
2386
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2387

XhmikosR's avatar
XhmikosR committed
2388
2389
  Dropdown.getParentFromElement = function getParentFromElement(element) {
    return getElementFromSelector(element) || element.parentNode;
XhmikosR's avatar
XhmikosR committed
2390
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2391

XhmikosR's avatar
XhmikosR committed
2392
  Dropdown.dataApiKeydownHandler = function dataApiKeydownHandler(event) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2393
2394
2395
2396
2397
2398
2399
    // If not input/textarea:
    //  - And not a key in REGEXP_KEYDOWN => not a dropdown command
    // If input/textarea:
    //  - If space key => not a dropdown command
    //  - If key is other than escape
    //    - If key is not up or down => not a dropdown command
    //    - If trigger inside the menu => not a dropdown command
XhmikosR's avatar
XhmikosR committed
2400
    if (/input|textarea/i.test(event.target.tagName) ? event.key === SPACE_KEY || event.key !== ESCAPE_KEY && (event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY || event.target.closest(SELECTOR_MENU)) : !REGEXP_KEYDOWN.test(event.key)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2401
2402
2403
2404
2405
2406
      return;
    }

    event.preventDefault();
    event.stopPropagation();

XhmikosR's avatar
XhmikosR committed
2407
    if (this.disabled || this.classList.contains(CLASS_NAME_DISABLED)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2408
2409
2410
      return;
    }

XhmikosR's avatar
XhmikosR committed
2411
    var parent = Dropdown.getParentFromElement(this);
XhmikosR's avatar
XhmikosR committed
2412
    var isActive = this.classList.contains(CLASS_NAME_SHOW$1);
XhmikosR's avatar
Dist.  
XhmikosR committed
2413

XhmikosR's avatar
XhmikosR committed
2414
    if (event.key === ESCAPE_KEY) {
XhmikosR's avatar
XhmikosR committed
2415
2416
2417
2418
2419
      var button = this.matches(SELECTOR_DATA_TOGGLE$2) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$2)[0];
      button.focus();
      Dropdown.clearMenus();
      return;
    }
XhmikosR's avatar
Dist.  
XhmikosR committed
2420

XhmikosR's avatar
XhmikosR committed
2421
    if (!isActive || event.key === SPACE_KEY) {
XhmikosR's avatar
XhmikosR committed
2422
      Dropdown.clearMenus();
XhmikosR's avatar
Dist.  
XhmikosR committed
2423
2424
2425
      return;
    }

XhmikosR's avatar
XhmikosR committed
2426
    var items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, parent).filter(isVisible);
XhmikosR's avatar
Dist.  
XhmikosR committed
2427
2428
2429
2430
2431

    if (!items.length) {
      return;
    }

XhmikosR's avatar
XhmikosR committed
2432
    var index = items.indexOf(event.target);
XhmikosR's avatar
Dist.  
XhmikosR committed
2433

XhmikosR's avatar
XhmikosR committed
2434
    if (event.key === ARROW_UP_KEY && index > 0) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2435
2436
2437
2438
      // Up
      index--;
    }

XhmikosR's avatar
XhmikosR committed
2439
    if (event.key === ARROW_DOWN_KEY && index < items.length - 1) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2440
2441
      // Down
      index++;
XhmikosR's avatar
XhmikosR committed
2442
2443
    } // index is -1 if the first keydown is an ArrowUp

XhmikosR's avatar
Dist.  
XhmikosR committed
2444

XhmikosR's avatar
XhmikosR committed
2445
    index = index === -1 ? 0 : index;
XhmikosR's avatar
Dist.  
XhmikosR committed
2446
    items[index].focus();
XhmikosR's avatar
XhmikosR committed
2447
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2448

XhmikosR's avatar
XhmikosR committed
2449
  Dropdown.getInstance = function getInstance(element) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2450
    return Data.getData(element, DATA_KEY$4);
XhmikosR's avatar
XhmikosR committed
2451
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2452

XhmikosR's avatar
XhmikosR committed
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
  _createClass(Dropdown, null, [{
    key: "VERSION",
    get: function get() {
      return VERSION$4;
    }
  }, {
    key: "Default",
    get: function get() {
      return Default$2;
    }
  }, {
    key: "DefaultType",
    get: function get() {
      return DefaultType$2;
    }
  }]);

  return Dropdown;
}();
XhmikosR's avatar
Dist.  
XhmikosR committed
2472
2473
2474
2475
2476
2477
2478
/**
 * ------------------------------------------------------------------------
 * Data Api implementation
 * ------------------------------------------------------------------------
 */


XhmikosR's avatar
XhmikosR committed
2479
2480
2481
2482
2483
EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$2, Dropdown.dataApiKeydownHandler);
EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);
EventHandler.on(document, EVENT_CLICK_DATA_API$4, Dropdown.clearMenus);
EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);
EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$2, function (event) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2484
2485
  event.preventDefault();
  event.stopPropagation();
XhmikosR's avatar
XhmikosR committed
2486
  Dropdown.dropdownInterface(this, 'toggle');
XhmikosR's avatar
Dist.  
XhmikosR committed
2487
});
XhmikosR's avatar
XhmikosR committed
2488
EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_FORM_CHILD, function (e) {
XhmikosR's avatar
XhmikosR committed
2489
2490
  return e.stopPropagation();
});
XhmikosR's avatar
Dist.  
XhmikosR committed
2491
2492
2493
2494
/**
 * ------------------------------------------------------------------------
 * jQuery
 * ------------------------------------------------------------------------
XhmikosR's avatar
XhmikosR committed
2495
 * add .Dropdown to jQuery only if jQuery is present
XhmikosR's avatar
Dist.  
XhmikosR committed
2496
2497
 */

XhmikosR's avatar
XhmikosR committed
2498
2499
2500
onDOMContentLoaded(function () {
  var $ = getjQuery();
  /* istanbul ignore if */
2501

XhmikosR's avatar
XhmikosR committed
2502
2503
2504
2505
  if ($) {
    var JQUERY_NO_CONFLICT = $.fn[NAME$4];
    $.fn[NAME$4] = Dropdown.jQueryInterface;
    $.fn[NAME$4].Constructor = Dropdown;
XhmikosR's avatar
Dist.  
XhmikosR committed
2506

XhmikosR's avatar
XhmikosR committed
2507
2508
2509
2510
2511
2512
    $.fn[NAME$4].noConflict = function () {
      $.fn[NAME$4] = JQUERY_NO_CONFLICT;
      return Dropdown.jQueryInterface;
    };
  }
});
XhmikosR's avatar
Dist.  
XhmikosR committed
2513
2514
2515
2516
2517
2518
2519

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

XhmikosR's avatar
XhmikosR committed
2520
var NAME$5 = 'modal';
XhmikosR's avatar
XhmikosR committed
2521
var VERSION$5 = '5.0.0-alpha3';
XhmikosR's avatar
XhmikosR committed
2522
2523
2524
var DATA_KEY$5 = 'bs.modal';
var EVENT_KEY$5 = "." + DATA_KEY$5;
var DATA_API_KEY$5 = '.data-api';
XhmikosR's avatar
XhmikosR committed
2525
var ESCAPE_KEY$1 = 'Escape';
XhmikosR's avatar
XhmikosR committed
2526
var Default$3 = {
XhmikosR's avatar
Dist.  
XhmikosR committed
2527
2528
2529
2530
2531
  backdrop: true,
  keyboard: true,
  focus: true,
  show: true
};
XhmikosR's avatar
XhmikosR committed
2532
var DefaultType$3 = {
XhmikosR's avatar
Dist.  
XhmikosR committed
2533
2534
2535
2536
2537
  backdrop: '(boolean|string)',
  keyboard: 'boolean',
  focus: 'boolean',
  show: 'boolean'
};
XhmikosR's avatar
XhmikosR committed
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
var EVENT_HIDE$2 = "hide" + EVENT_KEY$5;
var EVENT_HIDE_PREVENTED = "hidePrevented" + EVENT_KEY$5;
var EVENT_HIDDEN$2 = "hidden" + EVENT_KEY$5;
var EVENT_SHOW$2 = "show" + EVENT_KEY$5;
var EVENT_SHOWN$2 = "shown" + EVENT_KEY$5;
var EVENT_FOCUSIN = "focusin" + EVENT_KEY$5;
var EVENT_RESIZE = "resize" + EVENT_KEY$5;
var EVENT_CLICK_DISMISS = "click.dismiss" + EVENT_KEY$5;
var EVENT_KEYDOWN_DISMISS = "keydown.dismiss" + EVENT_KEY$5;
var EVENT_MOUSEUP_DISMISS = "mouseup.dismiss" + EVENT_KEY$5;
var EVENT_MOUSEDOWN_DISMISS = "mousedown.dismiss" + EVENT_KEY$5;
var EVENT_CLICK_DATA_API$5 = "click" + EVENT_KEY$5 + DATA_API_KEY$5;
var CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure';
var CLASS_NAME_BACKDROP = 'modal-backdrop';
var CLASS_NAME_OPEN = 'modal-open';
var CLASS_NAME_FADE = 'fade';
var CLASS_NAME_SHOW$2 = 'show';
var CLASS_NAME_STATIC = 'modal-static';
var SELECTOR_DIALOG = '.modal-dialog';
var SELECTOR_MODAL_BODY = '.modal-body';
var SELECTOR_DATA_TOGGLE$3 = '[data-toggle="modal"]';
var SELECTOR_DATA_DISMISS = '[data-dismiss="modal"]';
var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';
var SELECTOR_STICKY_CONTENT = '.sticky-top';
XhmikosR's avatar
XhmikosR committed
2562
2563
2564
2565
2566
/**
 * ------------------------------------------------------------------------
 * Class Definition
 * ------------------------------------------------------------------------
 */
XhmikosR's avatar
Dist.  
XhmikosR committed
2567

XhmikosR's avatar
XhmikosR committed
2568
var Modal = /*#__PURE__*/function () {
XhmikosR's avatar
XhmikosR committed
2569
  function Modal(element, config) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2570
2571
    this._config = this._getConfig(config);
    this._element = element;
XhmikosR's avatar
XhmikosR committed
2572
    this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, element);
XhmikosR's avatar
Dist.  
XhmikosR committed
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
    this._backdrop = null;
    this._isShown = false;
    this._isBodyOverflowing = false;
    this._ignoreBackdropClick = false;
    this._isTransitioning = false;
    this._scrollbarWidth = 0;
    Data.setData(element, DATA_KEY$5, this);
  } // Getters


XhmikosR's avatar
XhmikosR committed
2583
  var _proto = Modal.prototype;
XhmikosR's avatar
Dist.  
XhmikosR committed
2584

XhmikosR's avatar
XhmikosR committed
2585
2586
  // Public
  _proto.toggle = function toggle(relatedTarget) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2587
    return this._isShown ? this.hide() : this.show(relatedTarget);
XhmikosR's avatar
XhmikosR committed
2588
2589
2590
2591
  };

  _proto.show = function show(relatedTarget) {
    var _this = this;
XhmikosR's avatar
Dist.  
XhmikosR committed
2592
2593
2594
2595
2596

    if (this._isShown || this._isTransitioning) {
      return;
    }

XhmikosR's avatar
XhmikosR committed
2597
    if (this._element.classList.contains(CLASS_NAME_FADE)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2598
2599
2600
      this._isTransitioning = true;
    }

XhmikosR's avatar
XhmikosR committed
2601
    var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$2, {
XhmikosR's avatar
XhmikosR committed
2602
      relatedTarget: relatedTarget
XhmikosR's avatar
Dist.  
XhmikosR committed
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
    });

    if (this._isShown || showEvent.defaultPrevented) {
      return;
    }

    this._isShown = true;

    this._checkScrollbar();

    this._setScrollbar();

    this._adjustDialog();

    this._setEscapeEvent();

    this._setResizeEvent();

XhmikosR's avatar
XhmikosR committed
2621
    EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function (event) {
XhmikosR's avatar
XhmikosR committed
2622
2623
      return _this.hide(event);
    });
XhmikosR's avatar
XhmikosR committed
2624
2625
    EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, function () {
      EventHandler.one(_this._element, EVENT_MOUSEUP_DISMISS, function (event) {
XhmikosR's avatar
XhmikosR committed
2626
2627
        if (event.target === _this._element) {
          _this._ignoreBackdropClick = true;
XhmikosR's avatar
Dist.  
XhmikosR committed
2628
2629
2630
2631
        }
      });
    });

XhmikosR's avatar
XhmikosR committed
2632
2633
2634
2635
2636
2637
2638
    this._showBackdrop(function () {
      return _this._showElement(relatedTarget);
    });
  };

  _proto.hide = function hide(event) {
    var _this2 = this;
XhmikosR's avatar
Dist.  
XhmikosR committed
2639
2640
2641
2642
2643
2644
2645
2646
2647

    if (event) {
      event.preventDefault();
    }

    if (!this._isShown || this._isTransitioning) {
      return;
    }

XhmikosR's avatar
XhmikosR committed
2648
    var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$2);
XhmikosR's avatar
Dist.  
XhmikosR committed
2649

2650
    if (hideEvent.defaultPrevented) {
XhmikosR's avatar
Dist.  
XhmikosR committed
2651
2652
2653
2654
2655
      return;
    }

    this._isShown = false;

XhmikosR's avatar
XhmikosR committed
2656
    var transition = this._element.classList.contains(CLASS_NAME_FADE);
XhmikosR's avatar
Dist.  
XhmikosR committed
2657
2658
2659
2660
2661
2662
2663
2664
2665

    if (transition) {
      this._isTransitioning = true;
    }

    this._setEscapeEvent();

    this._setResizeEvent();

XhmikosR's avatar
XhmikosR committed
2666
    EventHandler.off(document, EVENT_FOCUSIN);
XhmikosR's avatar
Dist.  
XhmikosR committed
2667

XhmikosR's avatar
XhmikosR committed
2668
    this._element.classList.remove(CLASS_NAME_SHOW$2);
XhmikosR's avatar
Dist.  
XhmikosR committed
2669

XhmikosR's avatar
XhmikosR committed
2670
2671
    EventHandler.off(this._element, EVENT_CLICK_DISMISS);
    EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS);
XhmikosR's avatar
Dist.  
XhmikosR committed
2672
2673

    if (transition) {
XhmikosR's avatar
XhmikosR committed
2674
2675
2676
2677
      var transitionDuration = getTransitionDurationFromElement(this._element);
      EventHandler.one(this._element, TRANSITION_END, function (event) {
        return _this2._hideModal(event);
      });
XhmikosR's avatar
Dist.  
XhmikosR committed
2678
2679
2680
2681
      emulateTransitionEnd(this._element, transitionDuration);
    } else {
      this._hideModal();
    }
XhmikosR's avatar
XhmikosR committed
2682
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2683

XhmikosR's avatar
XhmikosR committed
2684
2685
2686
2687
  _proto.dispose = function dispose() {
    [window, this._element, this._dialog].forEach(function (htmlElement) {
      return EventHandler.off(htmlElement, EVENT_KEY$5);
    });
XhmikosR's avatar
Dist.  
XhmikosR committed
2688
    /**
XhmikosR's avatar
XhmikosR committed
2689
     * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`
XhmikosR's avatar
Dist.  
XhmikosR committed
2690
     * Do not move `document` in `htmlElements` array
XhmikosR's avatar
XhmikosR committed
2691
     * It will remove `EVENT_CLICK_DATA_API` event that should remain
XhmikosR's avatar
Dist.  
XhmikosR committed
2692
2693
     */

XhmikosR's avatar
XhmikosR committed
2694
    EventHandler.off(document, EVENT_FOCUSIN);
XhmikosR's avatar
Dist.  
XhmikosR committed
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
    Data.removeData(this._element, DATA_KEY$5);
    this._config = null;
    this._element = null;
    this._dialog = null;
    this._backdrop = null;
    this._isShown = null;
    this._isBodyOverflowing = null;
    this._ignoreBackdropClick = null;
    this._isTransitioning = null;
    this._scrollbarWidth = null;
XhmikosR's avatar
XhmikosR committed
2705
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2706

XhmikosR's avatar
XhmikosR committed
2707
  _proto.handleUpdate = function handleUpdate() {
XhmikosR's avatar
Dist.  
XhmikosR committed
2708
2709
    this._adjustDialog();
  } // Private
XhmikosR's avatar
XhmikosR committed
2710
  ;
XhmikosR's avatar
Dist.  
XhmikosR committed
2711

XhmikosR's avatar
XhmikosR committed
2712
  _proto._getConfig = function _getConfig(config) {
XhmikosR's avatar
XhmikosR committed
2713
    config = _extends({}, Default$3, config);
XhmikosR's avatar
Dist.  
XhmikosR committed
2714
2715
    typeCheckConfig(NAME$5, config, DefaultType$3);
    return config;
XhmikosR's avatar
XhmikosR committed
2716
2717
2718
2719
  };

  _proto._showElement = function _showElement(relatedTarget) {
    var _this3 = this;
XhmikosR's avatar
Dist.  
XhmikosR committed
2720

XhmikosR's avatar
XhmikosR committed
2721
    var transition = this._element.classList.contains(CLASS_NAME_FADE);
XhmikosR's avatar
Dist.  
XhmikosR committed
2722

XhmikosR's avatar
XhmikosR committed
2723
    var modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);
XhmikosR's avatar
XhmikosR committed
2724

XhmikosR's avatar
Dist.  
XhmikosR committed
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
    if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
      // Don't move modal's DOM position
      document.body.appendChild(this._element);
    }

    this._element.style.display = 'block';

    this._element.removeAttribute('aria-hidden');

    this._element.setAttribute('aria-modal', true);

Mark Otto's avatar
Mark Otto committed
2736
2737
    this._element.setAttribute('role', 'dialog');

XhmikosR's avatar
XhmikosR committed
2738
2739
2740
    this._element.scrollTop = 0;

    if (modalBody) {
XhmikosR's avatar
XhmikosR committed
2741
      modalBody.scrollTop = 0;
XhmikosR's avatar
Dist.  
XhmikosR committed
2742
2743
2744
2745
2746
2747
    }

    if (transition) {
      reflow(this._element);
    }

XhmikosR's avatar
XhmikosR committed
2748
    this._element.classList.add(CLASS_NAME_SHOW$2);
XhmikosR's avatar
Dist.  
XhmikosR committed
2749
2750
2751
2752
2753

    if (this._config.focus) {
      this._enforceFocus();
    }

XhmikosR's avatar
XhmikosR committed
2754
2755
2756
    var transitionComplete = function transitionComplete() {
      if (_this3._config.focus) {
        _this3._element.focus();
XhmikosR's avatar
Dist.  
XhmikosR committed
2757
2758
      }

XhmikosR's avatar
XhmikosR committed
2759
      _this3._isTransitioning = false;
XhmikosR's avatar
XhmikosR committed
2760
      EventHandler.trigger(_this3._element, EVENT_SHOWN$2, {
XhmikosR's avatar
XhmikosR committed
2761
        relatedTarget: relatedTarget
XhmikosR's avatar
Dist.  
XhmikosR committed
2762
2763
2764
2765
      });
    };

    if (transition) {
XhmikosR's avatar
XhmikosR committed
2766
      var transitionDuration = getTransitionDurationFromElement(this._dialog);
XhmikosR's avatar
Dist.  
XhmikosR committed
2767
2768
2769
2770
2771
      EventHandler.one(this._dialog, TRANSITION_END, transitionComplete);
      emulateTransitionEnd(this._dialog, transitionDuration);
    } else {
      transitionComplete();
    }
XhmikosR's avatar
XhmikosR committed
2772
2773
2774
2775
  };

  _proto._enforceFocus = function _enforceFocus() {
    var _this4 = this;
XhmikosR's avatar
Dist.  
XhmikosR committed
2776

XhmikosR's avatar
XhmikosR committed
2777
    EventHandler.off(document, EVENT_FOCUSIN); // guard against infinite focus loop
XhmikosR's avatar
Dist.  
XhmikosR committed
2778

XhmikosR's avatar
XhmikosR committed
2779
    EventHandler.on(document, EVENT_FOCUSIN, function (event) {
XhmikosR's avatar
XhmikosR committed
2780
2781
      if (document !== event.target && _this4._element !== event.target && !_this4._element.contains(event.target)) {
        _this4._element.focus();
XhmikosR's avatar
Dist.  
XhmikosR committed
2782
2783
      }
    });
XhmikosR's avatar
XhmikosR committed
2784
2785
2786
2787
  };

  _proto._setEscapeEvent = function _setEscapeEvent() {
    var _this5 = this;
XhmikosR's avatar
Dist.  
XhmikosR committed
2788

XhmikosR's avatar
XhmikosR committed
2789
2790
    if (this._isShown) {
      EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, function (event) {
XhmikosR's avatar
XhmikosR committed
2791
        if (_this5._config.keyboard && event.key === ESCAPE_KEY$1) {
XhmikosR's avatar
XhmikosR committed
2792
2793
2794
          event.preventDefault();

          _this5.hide();
XhmikosR's avatar
XhmikosR committed
2795
        } else if (!_this5._config.keyboard && event.key === ESCAPE_KEY$1) {
XhmikosR's avatar
XhmikosR committed
2796
          _this5._triggerBackdropTransition();
XhmikosR's avatar
Dist.  
XhmikosR committed
2797
2798
        }
      });
2799
    } else {
XhmikosR's avatar
XhmikosR committed
2800
      EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS);
XhmikosR's avatar
Dist.  
XhmikosR committed
2801
    }
XhmikosR's avatar
XhmikosR committed
2802
2803
2804
2805
  };

  _proto._setResizeEvent = function _setResizeEvent() {
    var _this6 = this;
XhmikosR's avatar
Dist.  
XhmikosR committed
2806
2807

    if (this._isShown) {
XhmikosR's avatar
XhmikosR committed
2808
      EventHandler.on(window, EVENT_RESIZE, function () {
2809
        return _this6._adjustDialog();
XhmikosR's avatar
XhmikosR committed
2810
      });
XhmikosR's avatar
Dist.  
XhmikosR committed
2811
    } else {
XhmikosR's avatar
XhmikosR committed
2812
      EventHandler.off(window, EVENT_RESIZE);
XhmikosR's avatar
Dist.  
XhmikosR committed
2813
    }
XhmikosR's avatar
XhmikosR committed
2814
2815
2816
2817
  };

  _proto._hideModal = function _hideModal() {
    var _this7 = this;
XhmikosR's avatar
Dist.  
XhmikosR committed
2818
2819
2820
2821
2822
2823
2824

    this._element.style.display = 'none';

    this._element.setAttribute('aria-hidden', true);

    this._element.removeAttribute('aria-modal');

Mark Otto's avatar
Mark Otto committed
2825
2826
    this._element.removeAttribute('role');

XhmikosR's avatar
Dist.  
XhmikosR committed
2827
2828
    this._isTransitioning = false;

XhmikosR's avatar
XhmikosR committed
2829
    this._showBackdrop(function () {
XhmikosR's avatar
XhmikosR committed
2830
      document.body.classList.remove(CLASS_NAME_OPEN);
XhmikosR's avatar
Dist.  
XhmikosR committed
2831

XhmikosR's avatar
XhmikosR committed
2832
      _this7._resetAdjustments();
XhmikosR's avatar
Dist.  
XhmikosR committed
2833

XhmikosR's avatar
XhmikosR committed
2834
      _this7._resetScrollbar();
XhmikosR's avatar
Dist.  
XhmikosR committed
2835

XhmikosR's avatar
XhmikosR committed
2836
      EventHandler.trigger(_this7._element, EVENT_HIDDEN$2);
XhmikosR's avatar
Dist.  
XhmikosR committed
2837
    });
XhmikosR's avatar
XhmikosR committed
2838
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2839

XhmikosR's avatar
XhmikosR committed
2840
  _proto._removeBackdrop = function _removeBackdrop() {
2841
    this._backdrop.parentNode.removeChild(this._backdrop);
XhmikosR's avatar
Dist.  
XhmikosR committed
2842

2843
    this._backdrop = null;
XhmikosR's avatar
XhmikosR committed
2844
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2845

XhmikosR's avatar
XhmikosR committed
2846
2847
2848
  _proto._showBackdrop = function _showBackdrop(callback) {
    var _this8 = this;

XhmikosR's avatar
XhmikosR committed
2849
    var animate = this._element.classList.contains(CLASS_NAME_FADE) ? CLASS_NAME_FADE : '';
XhmikosR's avatar
Dist.  
XhmikosR committed
2850
2851
2852

    if (this._isShown && this._config.backdrop) {
      this._backdrop = document.createElement('div');
XhmikosR's avatar
XhmikosR committed
2853
      this._backdrop.className = CLASS_NAME_BACKDROP;
XhmikosR's avatar
Dist.  
XhmikosR committed
2854
2855
2856
2857
2858
2859

      if (animate) {
        this._backdrop.classList.add(animate);
      }

      document.body.appendChild(this._backdrop);
XhmikosR's avatar
XhmikosR committed
2860
      EventHandler.on(this._element, EVENT_CLICK_DISMISS, function (event) {
XhmikosR's avatar
XhmikosR committed
2861
2862
        if (_this8._ignoreBackdropClick) {
          _this8._ignoreBackdropClick = false;
XhmikosR's avatar
Dist.  
XhmikosR committed
2863
2864
2865
2866
2867
2868
2869
          return;
        }

        if (event.target !== event.currentTarget) {
          return;
        }

XhmikosR's avatar
XhmikosR committed
2870
        _this8._triggerBackdropTransition();
XhmikosR's avatar
Dist.  
XhmikosR committed
2871
2872
2873
2874
2875
2876
      });

      if (animate) {
        reflow(this._backdrop);
      }

XhmikosR's avatar
XhmikosR committed
2877
      this._backdrop.classList.add(CLASS_NAME_SHOW$2);
XhmikosR's avatar
Dist.  
XhmikosR committed
2878
2879
2880
2881
2882
2883

      if (!animate) {
        callback();
        return;
      }

XhmikosR's avatar
XhmikosR committed
2884
      var backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop);
XhmikosR's avatar
Dist.  
XhmikosR committed
2885
2886
2887
      EventHandler.one(this._backdrop, TRANSITION_END, callback);
      emulateTransitionEnd(this._backdrop, backdropTransitionDuration);
    } else if (!this._isShown && this._backdrop) {
XhmikosR's avatar
XhmikosR committed
2888
      this._backdrop.classList.remove(CLASS_NAME_SHOW$2);
XhmikosR's avatar
Dist.  
XhmikosR committed
2889

XhmikosR's avatar
XhmikosR committed
2890
2891
      var callbackRemove = function callbackRemove() {
        _this8._removeBackdrop();
XhmikosR's avatar
Dist.  
XhmikosR committed
2892

2893
        callback();
XhmikosR's avatar
Dist.  
XhmikosR committed
2894
2895
      };

XhmikosR's avatar
XhmikosR committed
2896
      if (this._element.classList.contains(CLASS_NAME_FADE)) {
XhmikosR's avatar
XhmikosR committed
2897
2898
        var _backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop);

XhmikosR's avatar
Dist.  
XhmikosR committed
2899
        EventHandler.one(this._backdrop, TRANSITION_END, callbackRemove);
XhmikosR's avatar
XhmikosR committed
2900
        emulateTransitionEnd(this._backdrop, _backdropTransitionDuration);
XhmikosR's avatar
Dist.  
XhmikosR committed
2901
2902
2903
      } else {
        callbackRemove();
      }
2904
    } else {
XhmikosR's avatar
Dist.  
XhmikosR committed
2905
2906
      callback();
    }
XhmikosR's avatar
XhmikosR committed
2907
2908
2909
2910
2911
2912
  };

  _proto._triggerBackdropTransition = function _triggerBackdropTransition() {
    var _this9 = this;

    if (this._config.backdrop === 'static') {
XhmikosR's avatar
XhmikosR committed
2913
      var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);
XhmikosR's avatar
XhmikosR committed
2914
2915
2916
2917
2918

      if (hideEvent.defaultPrevented) {
        return;
      }

XhmikosR's avatar
XhmikosR committed
2919
2920
2921
2922
2923
2924
      var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;

      if (!isModalOverflowing) {
        this._element.style.overflowY = 'hidden';
      }

XhmikosR's avatar
XhmikosR committed
2925
      this._element.classList.add(CLASS_NAME_STATIC);
XhmikosR's avatar
XhmikosR committed
2926

XhmikosR's avatar
XhmikosR committed
2927
2928
      var modalTransitionDuration = getTransitionDurationFromElement(this._dialog);
      EventHandler.off(this._element, TRANSITION_END);
XhmikosR's avatar
XhmikosR committed
2929
      EventHandler.one(this._element, TRANSITION_END, function () {
XhmikosR's avatar
XhmikosR committed
2930
        _this9._element.classList.remove(CLASS_NAME_STATIC);
XhmikosR's avatar
XhmikosR committed
2931
2932
2933
2934
2935
2936
2937

        if (!isModalOverflowing) {
          EventHandler.one(_this9._element, TRANSITION_END, function () {
            _this9._element.style.overflowY = '';
          });
          emulateTransitionEnd(_this9._element, modalTransitionDuration);
        }
XhmikosR's avatar
XhmikosR committed
2938
2939
2940
2941
2942
2943
2944
      });
      emulateTransitionEnd(this._element, modalTransitionDuration);

      this._element.focus();
    } else {
      this.hide();
    }
XhmikosR's avatar
Dist.  
XhmikosR committed
2945
2946
2947
  } // ----------------------------------------------------------------------
  // the following methods are used to handle overflowing modals
  // ----------------------------------------------------------------------
XhmikosR's avatar
XhmikosR committed
2948
  ;
XhmikosR's avatar
Dist.  
XhmikosR committed
2949

XhmikosR's avatar
XhmikosR committed
2950
2951
  _proto._adjustDialog = function _adjustDialog() {
    var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
XhmikosR's avatar
Dist.  
XhmikosR committed
2952
2953

    if (!this._isBodyOverflowing && isModalOverflowing) {
XhmikosR's avatar
XhmikosR committed
2954
      this._element.style.paddingLeft = this._scrollbarWidth + "px";
XhmikosR's avatar
Dist.  
XhmikosR committed
2955
2956
2957
    }

    if (this._isBodyOverflowing && !isModalOverflowing) {
XhmikosR's avatar
XhmikosR committed
2958
      this._element.style.paddingRight = this._scrollbarWidth + "px";
XhmikosR's avatar
Dist.  
XhmikosR committed
2959
    }
XhmikosR's avatar
XhmikosR committed
2960
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2961

XhmikosR's avatar
XhmikosR committed
2962
  _proto._resetAdjustments = function _resetAdjustments() {
XhmikosR's avatar
Dist.  
XhmikosR committed
2963
2964
    this._element.style.paddingLeft = '';
    this._element.style.paddingRight = '';
XhmikosR's avatar
XhmikosR committed
2965
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
2966

XhmikosR's avatar
XhmikosR committed
2967
2968
  _proto._checkScrollbar = function _checkScrollbar() {
    var rect = document.body.getBoundingClientRect();
XhmikosR's avatar
XhmikosR committed
2969
    this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth;
XhmikosR's avatar
Dist.  
XhmikosR committed
2970
    this._scrollbarWidth = this._getScrollbarWidth();
XhmikosR's avatar
XhmikosR committed
2971
2972
2973
  };

  _proto._setScrollbar = function _setScrollbar() {
XhmikosR's avatar
XhmikosR committed
2974
    var _this10 = this;
XhmikosR's avatar
Dist.  
XhmikosR committed
2975
2976
2977
2978
2979

    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
2980
      SelectorEngine.find(SELECTOR_FIXED_CONTENT).forEach(function (element) {
XhmikosR's avatar
XhmikosR committed
2981
2982
        var actualPadding = element.style.paddingRight;
        var calculatedPadding = window.getComputedStyle(element)['padding-right'];
XhmikosR's avatar
Dist.  
XhmikosR committed
2983
        Manipulator.setDataAttribute(element, 'padding-right', actualPadding);
XhmikosR's avatar
XhmikosR committed
2984
        element.style.paddingRight = parseFloat(calculatedPadding) + _this10._scrollbarWidth + "px";
XhmikosR's avatar
Dist.  
XhmikosR committed
2985
2986
      }); // Adjust sticky content margin

XhmikosR's avatar
XhmikosR committed
2987
      SelectorEngine.find(SELECTOR_STICKY_CONTENT).forEach(function (element) {
XhmikosR's avatar
XhmikosR committed
2988
2989
        var actualMargin = element.style.marginRight;
        var calculatedMargin = window.getComputedStyle(element)['margin-right'];
XhmikosR's avatar
Dist.  
XhmikosR committed
2990
        Manipulator.setDataAttribute(element, 'margin-right', actualMargin);
XhmikosR's avatar
XhmikosR committed
2991
        element.style.marginRight = parseFloat(calculatedMargin) - _this10._scrollbarWidth + "px";
XhmikosR's avatar
Dist.  
XhmikosR committed
2992
2993
      }); // Adjust body padding

XhmikosR's avatar
XhmikosR committed
2994
2995
      var actualPadding = document.body.style.paddingRight;
      var calculatedPadding = window.getComputedStyle(document.body)['padding-right'];
XhmikosR's avatar
Dist.  
XhmikosR committed
2996
      Manipulator.setDataAttribute(document.body, 'padding-right', actualPadding);
XhmikosR's avatar
XhmikosR committed
2997
      document.body.style.paddingRight = parseFloat(calculatedPadding) + this._scrollbarWidth + "px";
XhmikosR's avatar
Dist.  
XhmikosR committed
2998
2999
    }

XhmikosR's avatar
XhmikosR committed
3000
    document.body.classList.add(CLASS_NAME_OPEN);
XhmikosR's avatar
XhmikosR committed
3001
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3002

XhmikosR's avatar
XhmikosR committed
3003
  _proto._resetScrollbar = function _resetScrollbar() {
XhmikosR's avatar
Dist.  
XhmikosR committed
3004
    // Restore fixed content padding
XhmikosR's avatar
XhmikosR committed
3005
    SelectorEngine.find(SELECTOR_FIXED_CONTENT).forEach(function (element) {
XhmikosR's avatar
XhmikosR committed
3006
      var padding = Manipulator.getDataAttribute(element, 'padding-right');
XhmikosR's avatar
Dist.  
XhmikosR committed
3007
3008
3009
3010
3011
3012
3013

      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
3014
    SelectorEngine.find("" + SELECTOR_STICKY_CONTENT).forEach(function (element) {
XhmikosR's avatar
XhmikosR committed
3015
      var margin = Manipulator.getDataAttribute(element, 'margin-right');
XhmikosR's avatar
Dist.  
XhmikosR committed
3016
3017
3018
3019
3020
3021
3022

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

XhmikosR's avatar
XhmikosR committed
3023
    var padding = Manipulator.getDataAttribute(document.body, 'padding-right');
XhmikosR's avatar
Dist.  
XhmikosR committed
3024
3025
3026
3027
3028
3029
3030

    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
3031
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3032

XhmikosR's avatar
XhmikosR committed
3033
  _proto._getScrollbarWidth = function _getScrollbarWidth() {
XhmikosR's avatar
Dist.  
XhmikosR committed
3034
    // thx d.walsh
XhmikosR's avatar
XhmikosR committed
3035
    var scrollDiv = document.createElement('div');
XhmikosR's avatar
XhmikosR committed
3036
    scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER;
XhmikosR's avatar
Dist.  
XhmikosR committed
3037
    document.body.appendChild(scrollDiv);
XhmikosR's avatar
XhmikosR committed
3038
    var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
XhmikosR's avatar
Dist.  
XhmikosR committed
3039
3040
3041
    document.body.removeChild(scrollDiv);
    return scrollbarWidth;
  } // Static
XhmikosR's avatar
XhmikosR committed
3042
  ;
XhmikosR's avatar
Dist.  
XhmikosR committed
3043

XhmikosR's avatar
XhmikosR committed
3044
  Modal.jQueryInterface = function jQueryInterface(config, relatedTarget) {
XhmikosR's avatar
Dist.  
XhmikosR committed
3045
    return this.each(function () {
XhmikosR's avatar
XhmikosR committed
3046
      var data = Data.getData(this, DATA_KEY$5);
XhmikosR's avatar
Dist.  
XhmikosR committed
3047

XhmikosR's avatar
XhmikosR committed
3048
      var _config = _extends({}, Default$3, Manipulator.getDataAttributes(this), typeof config === 'object' && config ? config : {});
XhmikosR's avatar
Dist.  
XhmikosR committed
3049
3050
3051
3052
3053
3054
3055

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

      if (typeof config === 'string') {
        if (typeof data[config] === 'undefined') {
XhmikosR's avatar
XhmikosR committed
3056
          throw new TypeError("No method named \"" + config + "\"");
XhmikosR's avatar
Dist.  
XhmikosR committed
3057
3058
3059
3060
3061
3062
3063
        }

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

XhmikosR's avatar
XhmikosR committed
3066
  Modal.getInstance = function getInstance(element) {
XhmikosR's avatar
Dist.  
XhmikosR committed
3067
    return Data.getData(element, DATA_KEY$5);
XhmikosR's avatar
XhmikosR committed
3068
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3069

XhmikosR's avatar
XhmikosR committed
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
  _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
3084
3085
3086
3087
3088
3089
3090
/**
 * ------------------------------------------------------------------------
 * Data Api implementation
 * ------------------------------------------------------------------------
 */


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

XhmikosR's avatar
XhmikosR committed
3094
  var target = getElementFromSelector(this);
XhmikosR's avatar
Dist.  
XhmikosR committed
3095
3096
3097
3098
3099

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

XhmikosR's avatar
XhmikosR committed
3100
  EventHandler.one(target, EVENT_SHOW$2, function (showEvent) {
XhmikosR's avatar
Dist.  
XhmikosR committed
3101
3102
3103
3104
3105
    if (showEvent.defaultPrevented) {
      // only register focus restorer if modal will actually get shown
      return;
    }

XhmikosR's avatar
XhmikosR committed
3106
    EventHandler.one(target, EVENT_HIDDEN$2, function () {
XhmikosR's avatar
XhmikosR committed
3107
3108
      if (isVisible(_this11)) {
        _this11.focus();
XhmikosR's avatar
Dist.  
XhmikosR committed
3109
3110
3111
      }
    });
  });
XhmikosR's avatar
XhmikosR committed
3112
  var data = Data.getData(target, DATA_KEY$5);
XhmikosR's avatar
Dist.  
XhmikosR committed
3113
3114

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

XhmikosR's avatar
Dist.  
XhmikosR committed
3117
3118
3119
3120
3121
3122
3123
3124
3125
    data = new Modal(target, config);
  }

  data.show(this);
});
/**
 * ------------------------------------------------------------------------
 * jQuery
 * ------------------------------------------------------------------------
XhmikosR's avatar
XhmikosR committed
3126
 * add .Modal to jQuery only if jQuery is present
XhmikosR's avatar
Dist.  
XhmikosR committed
3127
3128
 */

XhmikosR's avatar
XhmikosR committed
3129
3130
3131
onDOMContentLoaded(function () {
  var $ = getjQuery();
  /* istanbul ignore if */
3132

XhmikosR's avatar
XhmikosR committed
3133
3134
3135
3136
  if ($) {
    var JQUERY_NO_CONFLICT = $.fn[NAME$5];
    $.fn[NAME$5] = Modal.jQueryInterface;
    $.fn[NAME$5].Constructor = Modal;
XhmikosR's avatar
Dist.  
XhmikosR committed
3137

XhmikosR's avatar
XhmikosR committed
3138
3139
3140
3141
3142
3143
    $.fn[NAME$5].noConflict = function () {
      $.fn[NAME$5] = JQUERY_NO_CONFLICT;
      return Modal.jQueryInterface;
    };
  }
});
XhmikosR's avatar
Dist.  
XhmikosR committed
3144
3145
3146

/**
 * --------------------------------------------------------------------------
XhmikosR's avatar
XhmikosR committed
3147
 * Bootstrap (v5.0.0-alpha3): util/sanitizer.js
XhmikosR's avatar
XhmikosR committed
3148
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
XhmikosR's avatar
Dist.  
XhmikosR committed
3149
3150
 * --------------------------------------------------------------------------
 */
XhmikosR's avatar
XhmikosR committed
3151
3152
var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href'];
var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
XhmikosR's avatar
Dist.  
XhmikosR committed
3153
3154
3155
3156
3157
3158
/**
 * 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
3159
var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/gi;
XhmikosR's avatar
Dist.  
XhmikosR committed
3160
3161
3162
3163
3164
3165
/**
 * 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
3166
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
3167

XhmikosR's avatar
XhmikosR committed
3168
3169
var allowedAttribute = function allowedAttribute(attr, allowedAttributeList) {
  var attrName = attr.nodeName.toLowerCase();
XhmikosR's avatar
Dist.  
XhmikosR committed
3170
3171
3172

  if (allowedAttributeList.indexOf(attrName) !== -1) {
    if (uriAttrs.indexOf(attrName) !== -1) {
Mark Otto's avatar
Mark Otto committed
3173
      return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN));
XhmikosR's avatar
Dist.  
XhmikosR committed
3174
3175
3176
3177
3178
    }

    return true;
  }

XhmikosR's avatar
XhmikosR committed
3179
3180
3181
  var regExp = allowedAttributeList.filter(function (attrRegex) {
    return attrRegex instanceof RegExp;
  }); // Check if a regular expression validates the attribute.
XhmikosR's avatar
Dist.  
XhmikosR committed
3182

XhmikosR's avatar
XhmikosR committed
3183
  for (var i = 0, len = regExp.length; i < len; i++) {
Mark Otto's avatar
Mark Otto committed
3184
    if (attrName.match(regExp[i])) {
XhmikosR's avatar
Dist.  
XhmikosR committed
3185
3186
3187
3188
3189
3190
3191
      return true;
    }
  }

  return false;
};

XhmikosR's avatar
XhmikosR committed
3192
var DefaultAllowlist = {
XhmikosR's avatar
Dist.  
XhmikosR committed
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
  // 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
3211
  img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],
XhmikosR's avatar
Dist.  
XhmikosR committed
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
  li: [],
  ol: [],
  p: [],
  pre: [],
  s: [],
  small: [],
  span: [],
  sub: [],
  sup: [],
  strong: [],
  u: [],
  ul: []
};
XhmikosR's avatar
XhmikosR committed
3225
function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {
XhmikosR's avatar
XhmikosR committed
3226
3227
  var _ref;

XhmikosR's avatar
Dist.  
XhmikosR committed
3228
3229
3230
3231
3232
3233
3234
3235
  if (!unsafeHtml.length) {
    return unsafeHtml;
  }

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

XhmikosR's avatar
XhmikosR committed
3236
3237
  var domParser = new window.DOMParser();
  var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');
XhmikosR's avatar
XhmikosR committed
3238
  var allowlistKeys = Object.keys(allowList);
XhmikosR's avatar
XhmikosR committed
3239
3240

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

XhmikosR's avatar
XhmikosR committed
3242
  var _loop = function _loop(i, len) {
XhmikosR's avatar
XhmikosR committed
3243
3244
    var _ref2;

XhmikosR's avatar
XhmikosR committed
3245
3246
    var el = elements[i];
    var elName = el.nodeName.toLowerCase();
XhmikosR's avatar
Dist.  
XhmikosR committed
3247

XhmikosR's avatar
XhmikosR committed
3248
    if (allowlistKeys.indexOf(elName) === -1) {
XhmikosR's avatar
Dist.  
XhmikosR committed
3249
      el.parentNode.removeChild(el);
XhmikosR's avatar
XhmikosR committed
3250
      return "continue";
XhmikosR's avatar
Dist.  
XhmikosR committed
3251
3252
    }

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

XhmikosR's avatar
XhmikosR committed
3255
    var allowedAttributes = [].concat(allowList['*'] || [], allowList[elName] || []);
XhmikosR's avatar
XhmikosR committed
3256
    attributeList.forEach(function (attr) {
XhmikosR's avatar
XhmikosR committed
3257
      if (!allowedAttribute(attr, allowedAttributes)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
3258
3259
3260
        el.removeAttribute(attr.nodeName);
      }
    });
XhmikosR's avatar
XhmikosR committed
3261
3262
3263
  };

  for (var i = 0, len = elements.length; i < len; i++) {
3264
    var _ret = _loop(i);
XhmikosR's avatar
XhmikosR committed
3265
3266

    if (_ret === "continue") continue;
XhmikosR's avatar
Dist.  
XhmikosR committed
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
  }

  return createdDocument.body.innerHTML;
}

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

XhmikosR's avatar
XhmikosR committed
3278
var NAME$6 = 'tooltip';
XhmikosR's avatar
XhmikosR committed
3279
var VERSION$6 = '5.0.0-alpha3';
XhmikosR's avatar
XhmikosR committed
3280
3281
3282
3283
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
3284
var DISALLOWED_ATTRIBUTES = ['sanitize', 'allowList', 'sanitizeFn'];
XhmikosR's avatar
XhmikosR committed
3285
var DefaultType$4 = {
XhmikosR's avatar
Dist.  
XhmikosR committed
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
  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
3300
  allowList: 'object',
XhmikosR's avatar
XhmikosR committed
3301
  popperConfig: '(null|object)'
XhmikosR's avatar
Dist.  
XhmikosR committed
3302
};
XhmikosR's avatar
XhmikosR committed
3303
var AttachmentMap = {
XhmikosR's avatar
Dist.  
XhmikosR committed
3304
3305
3306
3307
3308
3309
  AUTO: 'auto',
  TOP: 'top',
  RIGHT: 'right',
  BOTTOM: 'bottom',
  LEFT: 'left'
};
XhmikosR's avatar
XhmikosR committed
3310
var Default$4 = {
XhmikosR's avatar
Dist.  
XhmikosR committed
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
  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
3325
  allowList: DefaultAllowlist,
XhmikosR's avatar
XhmikosR committed
3326
  popperConfig: null
XhmikosR's avatar
Dist.  
XhmikosR committed
3327
};
XhmikosR's avatar
XhmikosR committed
3328
var Event$1 = {
XhmikosR's avatar
XhmikosR committed
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
  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
3339
};
XhmikosR's avatar
XhmikosR committed
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
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
3350
3351
3352
3353
3354
/**
 * ------------------------------------------------------------------------
 * Class Definition
 * ------------------------------------------------------------------------
 */
XhmikosR's avatar
Dist.  
XhmikosR committed
3355

XhmikosR's avatar
XhmikosR committed
3356
var Tooltip = /*#__PURE__*/function () {
XhmikosR's avatar
XhmikosR committed
3357
  function Tooltip(element, config) {
XhmikosR's avatar
Dist.  
XhmikosR committed
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
    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
3379
  var _proto = Tooltip.prototype;
XhmikosR's avatar
Dist.  
XhmikosR committed
3380

XhmikosR's avatar
XhmikosR committed
3381
3382
  // Public
  _proto.enable = function enable() {
XhmikosR's avatar
Dist.  
XhmikosR committed
3383
    this._isEnabled = true;
XhmikosR's avatar
XhmikosR committed
3384
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3385

XhmikosR's avatar
XhmikosR committed
3386
  _proto.disable = function disable() {
XhmikosR's avatar
Dist.  
XhmikosR committed
3387
    this._isEnabled = false;
XhmikosR's avatar
XhmikosR committed
3388
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3389

XhmikosR's avatar
XhmikosR committed
3390
  _proto.toggleEnabled = function toggleEnabled() {
XhmikosR's avatar
Dist.  
XhmikosR committed
3391
    this._isEnabled = !this._isEnabled;
XhmikosR's avatar
XhmikosR committed
3392
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3393

XhmikosR's avatar
XhmikosR committed
3394
  _proto.toggle = function toggle(event) {
XhmikosR's avatar
Dist.  
XhmikosR committed
3395
3396
3397
3398
3399
    if (!this._isEnabled) {
      return;
    }

    if (event) {
XhmikosR's avatar
XhmikosR committed
3400
      var dataKey = this.constructor.DATA_KEY;
XhmikosR's avatar
XhmikosR committed
3401
      var context = Data.getData(event.delegateTarget, dataKey);
XhmikosR's avatar
Dist.  
XhmikosR committed
3402
3403

      if (!context) {
XhmikosR's avatar
XhmikosR committed
3404
3405
        context = new this.constructor(event.delegateTarget, this._getDelegateConfig());
        Data.setData(event.delegateTarget, dataKey, context);
XhmikosR's avatar
Dist.  
XhmikosR committed
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
      }

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

      if (context._isWithActiveTrigger()) {
        context._enter(null, context);
      } else {
        context._leave(null, context);
      }
    } else {
XhmikosR's avatar
XhmikosR committed
3416
      if (this.getTipElement().classList.contains(CLASS_NAME_SHOW$3)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
3417
3418
3419
3420
3421
3422
3423
        this._leave(null, this);

        return;
      }

      this._enter(null, this);
    }
XhmikosR's avatar
XhmikosR committed
3424
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3425

XhmikosR's avatar
XhmikosR committed
3426
  _proto.dispose = function dispose() {
XhmikosR's avatar
Dist.  
XhmikosR committed
3427
3428
3429
    clearTimeout(this._timeout);
    Data.removeData(this.element, this.constructor.DATA_KEY);
    EventHandler.off(this.element, this.constructor.EVENT_KEY);
XhmikosR's avatar
XhmikosR committed
3430
    EventHandler.off(this.element.closest("." + CLASS_NAME_MODAL), 'hide.bs.modal', this._hideModalHandler);
XhmikosR's avatar
Dist.  
XhmikosR committed
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440

    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
3441
    if (this._popper) {
XhmikosR's avatar
Dist.  
XhmikosR committed
3442
3443
3444
3445
3446
3447
3448
      this._popper.destroy();
    }

    this._popper = null;
    this.element = null;
    this.config = null;
    this.tip = null;
XhmikosR's avatar
XhmikosR committed
3449
3450
3451
3452
  };

  _proto.show = function show() {
    var _this = this;
XhmikosR's avatar
Dist.  
XhmikosR committed
3453
3454
3455
3456
3457
3458

    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
3459
3460
3461
      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
3462
3463
3464
3465
3466

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

XhmikosR's avatar
XhmikosR committed
3467
3468
      var tip = this.getTipElement();
      var tipId = getUID(this.constructor.NAME);
XhmikosR's avatar
Dist.  
XhmikosR committed
3469
3470
3471
3472
3473
      tip.setAttribute('id', tipId);
      this.element.setAttribute('aria-describedby', tipId);
      this.setContent();

      if (this.config.animation) {
XhmikosR's avatar
XhmikosR committed
3474
        tip.classList.add(CLASS_NAME_FADE$1);
XhmikosR's avatar
Dist.  
XhmikosR committed
3475
3476
      }

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

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

3481
      this._addAttachmentClass(attachment);
XhmikosR's avatar
Dist.  
XhmikosR committed
3482

XhmikosR's avatar
XhmikosR committed
3483
      var container = this._getContainer();
XhmikosR's avatar
Dist.  
XhmikosR committed
3484
3485
3486
3487
3488
3489
3490
3491

      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
3492
      this._popper = new Popper(this.element, tip, this._getPopperConfig(attachment));
XhmikosR's avatar
XhmikosR committed
3493
      tip.classList.add(CLASS_NAME_SHOW$3); // If this is a touch-enabled device we add extra
XhmikosR's avatar
Dist.  
XhmikosR committed
3494
3495
3496
3497
3498
      // 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
3499
3500
3501
        var _ref;

        (_ref = []).concat.apply(_ref, document.body.children).forEach(function (element) {
XhmikosR's avatar
Dist.  
XhmikosR committed
3502
3503
3504
3505
          EventHandler.on(element, 'mouseover', noop());
        });
      }

XhmikosR's avatar
XhmikosR committed
3506
3507
3508
      var complete = function complete() {
        if (_this.config.animation) {
          _this._fixTransition();
XhmikosR's avatar
Dist.  
XhmikosR committed
3509
3510
        }

XhmikosR's avatar
XhmikosR committed
3511
3512
3513
        var prevHoverState = _this._hoverState;
        _this._hoverState = null;
        EventHandler.trigger(_this.element, _this.constructor.Event.SHOWN);
XhmikosR's avatar
Dist.  
XhmikosR committed
3514

XhmikosR's avatar
XhmikosR committed
3515
        if (prevHoverState === HOVER_STATE_OUT) {
XhmikosR's avatar
XhmikosR committed
3516
          _this._leave(null, _this);
XhmikosR's avatar
Dist.  
XhmikosR committed
3517
3518
3519
        }
      };

XhmikosR's avatar
XhmikosR committed
3520
      if (this.tip.classList.contains(CLASS_NAME_FADE$1)) {
XhmikosR's avatar
XhmikosR committed
3521
        var transitionDuration = getTransitionDurationFromElement(this.tip);
XhmikosR's avatar
Dist.  
XhmikosR committed
3522
3523
3524
3525
3526
3527
        EventHandler.one(this.tip, TRANSITION_END, complete);
        emulateTransitionEnd(this.tip, transitionDuration);
      } else {
        complete();
      }
    }
XhmikosR's avatar
XhmikosR committed
3528
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3529

3530
  _proto.hide = function hide() {
XhmikosR's avatar
XhmikosR committed
3531
    var _this2 = this;
XhmikosR's avatar
Dist.  
XhmikosR committed
3532

XhmikosR's avatar
XhmikosR committed
3533
3534
3535
3536
    if (!this._popper) {
      return;
    }

XhmikosR's avatar
XhmikosR committed
3537
3538
3539
    var tip = this.getTipElement();

    var complete = function complete() {
XhmikosR's avatar
XhmikosR committed
3540
      if (_this2._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {
XhmikosR's avatar
Dist.  
XhmikosR committed
3541
3542
3543
        tip.parentNode.removeChild(tip);
      }

XhmikosR's avatar
XhmikosR committed
3544
3545
3546
      _this2._cleanTipClass();

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

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

3550
      _this2._popper.destroy();
XhmikosR's avatar
Dist.  
XhmikosR committed
3551
3552
    };

XhmikosR's avatar
XhmikosR committed
3553
    var hideEvent = EventHandler.trigger(this.element, this.constructor.Event.HIDE);
XhmikosR's avatar
Dist.  
XhmikosR committed
3554
3555
3556
3557
3558

    if (hideEvent.defaultPrevented) {
      return;
    }

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

    if ('ontouchstart' in document.documentElement) {
XhmikosR's avatar
XhmikosR committed
3563
3564
3565
      var _ref2;

      (_ref2 = []).concat.apply(_ref2, document.body.children).forEach(function (element) {
XhmikosR's avatar
XhmikosR committed
3566
3567
        return EventHandler.off(element, 'mouseover', noop);
      });
XhmikosR's avatar
Dist.  
XhmikosR committed
3568
3569
    }

XhmikosR's avatar
XhmikosR committed
3570
3571
3572
    this._activeTrigger[TRIGGER_CLICK] = false;
    this._activeTrigger[TRIGGER_FOCUS] = false;
    this._activeTrigger[TRIGGER_HOVER] = false;
XhmikosR's avatar
Dist.  
XhmikosR committed
3573

XhmikosR's avatar
XhmikosR committed
3574
    if (this.tip.classList.contains(CLASS_NAME_FADE$1)) {
XhmikosR's avatar
XhmikosR committed
3575
      var transitionDuration = getTransitionDurationFromElement(tip);
XhmikosR's avatar
Dist.  
XhmikosR committed
3576
3577
3578
3579
3580
3581
3582
      EventHandler.one(tip, TRANSITION_END, complete);
      emulateTransitionEnd(tip, transitionDuration);
    } else {
      complete();
    }

    this._hoverState = '';
XhmikosR's avatar
XhmikosR committed
3583
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3584

XhmikosR's avatar
XhmikosR committed
3585
  _proto.update = function update() {
XhmikosR's avatar
Dist.  
XhmikosR committed
3586
3587
3588
3589
    if (this._popper !== null) {
      this._popper.scheduleUpdate();
    }
  } // Protected
XhmikosR's avatar
XhmikosR committed
3590
  ;
XhmikosR's avatar
Dist.  
XhmikosR committed
3591

XhmikosR's avatar
XhmikosR committed
3592
  _proto.isWithContent = function isWithContent() {
XhmikosR's avatar
Dist.  
XhmikosR committed
3593
    return Boolean(this.getTitle());
XhmikosR's avatar
XhmikosR committed
3594
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3595

XhmikosR's avatar
XhmikosR committed
3596
  _proto.getTipElement = function getTipElement() {
XhmikosR's avatar
Dist.  
XhmikosR committed
3597
3598
3599
3600
    if (this.tip) {
      return this.tip;
    }

XhmikosR's avatar
XhmikosR committed
3601
    var element = document.createElement('div');
XhmikosR's avatar
Dist.  
XhmikosR committed
3602
3603
3604
    element.innerHTML = this.config.template;
    this.tip = element.children[0];
    return this.tip;
XhmikosR's avatar
XhmikosR committed
3605
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3606

XhmikosR's avatar
XhmikosR committed
3607
3608
  _proto.setContent = function setContent() {
    var tip = this.getTipElement();
XhmikosR's avatar
XhmikosR committed
3609
    this.setElementContent(SelectorEngine.findOne(SELECTOR_TOOLTIP_INNER, tip), this.getTitle());
XhmikosR's avatar
XhmikosR committed
3610
    tip.classList.remove(CLASS_NAME_FADE$1, CLASS_NAME_SHOW$3);
XhmikosR's avatar
XhmikosR committed
3611
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3612

XhmikosR's avatar
XhmikosR committed
3613
  _proto.setElementContent = function setElementContent(element, content) {
XhmikosR's avatar
Dist.  
XhmikosR committed
3614
3615
3616
3617
    if (element === null) {
      return;
    }

3618
    if (typeof content === 'object' && isElement(content)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
      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
3630
        element.textContent = content.textContent;
XhmikosR's avatar
Dist.  
XhmikosR committed
3631
3632
3633
3634
3635
3636
3637
      }

      return;
    }

    if (this.config.html) {
      if (this.config.sanitize) {
XhmikosR's avatar
XhmikosR committed
3638
        content = sanitizeHtml(content, this.config.allowList, this.config.sanitizeFn);
XhmikosR's avatar
Dist.  
XhmikosR committed
3639
3640
3641
3642
      }

      element.innerHTML = content;
    } else {
XhmikosR's avatar
XhmikosR committed
3643
      element.textContent = content;
XhmikosR's avatar
Dist.  
XhmikosR committed
3644
    }
XhmikosR's avatar
XhmikosR committed
3645
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3646

XhmikosR's avatar
XhmikosR committed
3647
3648
  _proto.getTitle = function getTitle() {
    var title = this.element.getAttribute('data-original-title');
XhmikosR's avatar
Dist.  
XhmikosR committed
3649
3650
3651
3652
3653
3654
3655

    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
3656
  ;
XhmikosR's avatar
Dist.  
XhmikosR committed
3657

XhmikosR's avatar
XhmikosR committed
3658
3659
3660
3661
3662
3663
3664
3665
3666
3667
3668
3669
3670
3671
3672
3673
3674
3675
3676
3677
3678
3679
3680
3681
3682
3683
  _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
3684
    return _extends({}, defaultBsConfig, this.config.popperConfig);
XhmikosR's avatar
XhmikosR committed
3685
3686
  };

3687
3688
3689
3690
  _proto._addAttachmentClass = function _addAttachmentClass(attachment) {
    this.getTipElement().classList.add(CLASS_PREFIX + "-" + attachment);
  };

XhmikosR's avatar
XhmikosR committed
3691
  _proto._getOffset = function _getOffset() {
XhmikosR's avatar
XhmikosR committed
3692
    var _this4 = this;
XhmikosR's avatar
Dist.  
XhmikosR committed
3693

XhmikosR's avatar
XhmikosR committed
3694
    var offset = {};
XhmikosR's avatar
Dist.  
XhmikosR committed
3695
3696

    if (typeof this.config.offset === 'function') {
XhmikosR's avatar
XhmikosR committed
3697
      offset.fn = function (data) {
XhmikosR's avatar
XhmikosR committed
3698
        data.offsets = _extends({}, data.offsets, _this4.config.offset(data.offsets, _this4.element) || {});
XhmikosR's avatar
Dist.  
XhmikosR committed
3699
3700
3701
3702
3703
3704
3705
        return data;
      };
    } else {
      offset.offset = this.config.offset;
    }

    return offset;
XhmikosR's avatar
XhmikosR committed
3706
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3707

XhmikosR's avatar
XhmikosR committed
3708
  _proto._getContainer = function _getContainer() {
XhmikosR's avatar
Dist.  
XhmikosR committed
3709
3710
3711
3712
3713
3714
3715
3716
3717
    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
3718
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3719

XhmikosR's avatar
XhmikosR committed
3720
  _proto._getAttachment = function _getAttachment(placement) {
XhmikosR's avatar
XhmikosR committed
3721
    return AttachmentMap[placement.toUpperCase()];
XhmikosR's avatar
XhmikosR committed
3722
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3723

XhmikosR's avatar
XhmikosR committed
3724
  _proto._setListeners = function _setListeners() {
XhmikosR's avatar
XhmikosR committed
3725
    var _this5 = this;
XhmikosR's avatar
XhmikosR committed
3726
3727
3728

    var triggers = this.config.trigger.split(' ');
    triggers.forEach(function (trigger) {
XhmikosR's avatar
Dist.  
XhmikosR committed
3729
      if (trigger === 'click') {
XhmikosR's avatar
XhmikosR committed
3730
3731
        EventHandler.on(_this5.element, _this5.constructor.Event.CLICK, _this5.config.selector, function (event) {
          return _this5.toggle(event);
XhmikosR's avatar
XhmikosR committed
3732
        });
XhmikosR's avatar
XhmikosR committed
3733
3734
3735
      } 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
3736
3737
        EventHandler.on(_this5.element, eventIn, _this5.config.selector, function (event) {
          return _this5._enter(event);
XhmikosR's avatar
XhmikosR committed
3738
        });
XhmikosR's avatar
XhmikosR committed
3739
3740
        EventHandler.on(_this5.element, eventOut, _this5.config.selector, function (event) {
          return _this5._leave(event);
XhmikosR's avatar
XhmikosR committed
3741
        });
XhmikosR's avatar
Dist.  
XhmikosR committed
3742
3743
      }
    });
Mark Otto's avatar
dist v5    
Mark Otto committed
3744
3745

    this._hideModalHandler = function () {
XhmikosR's avatar
XhmikosR committed
3746
3747
      if (_this5.element) {
        _this5.hide();
XhmikosR's avatar
Dist.  
XhmikosR committed
3748
      }
Mark Otto's avatar
dist v5    
Mark Otto committed
3749
3750
    };

XhmikosR's avatar
XhmikosR committed
3751
    EventHandler.on(this.element.closest("." + CLASS_NAME_MODAL), 'hide.bs.modal', this._hideModalHandler);
XhmikosR's avatar
Dist.  
XhmikosR committed
3752
3753

    if (this.config.selector) {
XhmikosR's avatar
XhmikosR committed
3754
      this.config = _extends({}, this.config, {
XhmikosR's avatar
Dist.  
XhmikosR committed
3755
3756
3757
3758
3759
3760
        trigger: 'manual',
        selector: ''
      });
    } else {
      this._fixTitle();
    }
XhmikosR's avatar
XhmikosR committed
3761
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3762

XhmikosR's avatar
XhmikosR committed
3763
3764
  _proto._fixTitle = function _fixTitle() {
    var titleType = typeof this.element.getAttribute('data-original-title');
XhmikosR's avatar
Dist.  
XhmikosR committed
3765
3766
3767
3768
3769

    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
3770
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3771

XhmikosR's avatar
XhmikosR committed
3772
3773
  _proto._enter = function _enter(event, context) {
    var dataKey = this.constructor.DATA_KEY;
XhmikosR's avatar
XhmikosR committed
3774
    context = context || Data.getData(event.delegateTarget, dataKey);
XhmikosR's avatar
Dist.  
XhmikosR committed
3775
3776

    if (!context) {
XhmikosR's avatar
XhmikosR committed
3777
3778
      context = new this.constructor(event.delegateTarget, this._getDelegateConfig());
      Data.setData(event.delegateTarget, dataKey, context);
XhmikosR's avatar
Dist.  
XhmikosR committed
3779
3780
3781
    }

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

XhmikosR's avatar
XhmikosR committed
3785
3786
    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
3787
3788
3789
3790
      return;
    }

    clearTimeout(context._timeout);
XhmikosR's avatar
XhmikosR committed
3791
    context._hoverState = HOVER_STATE_SHOW;
XhmikosR's avatar
Dist.  
XhmikosR committed
3792
3793
3794
3795
3796
3797

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

XhmikosR's avatar
XhmikosR committed
3798
    context._timeout = setTimeout(function () {
XhmikosR's avatar
XhmikosR committed
3799
      if (context._hoverState === HOVER_STATE_SHOW) {
XhmikosR's avatar
Dist.  
XhmikosR committed
3800
3801
3802
        context.show();
      }
    }, context.config.delay.show);
XhmikosR's avatar
XhmikosR committed
3803
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3804

XhmikosR's avatar
XhmikosR committed
3805
3806
  _proto._leave = function _leave(event, context) {
    var dataKey = this.constructor.DATA_KEY;
XhmikosR's avatar
XhmikosR committed
3807
    context = context || Data.getData(event.delegateTarget, dataKey);
XhmikosR's avatar
Dist.  
XhmikosR committed
3808
3809

    if (!context) {
XhmikosR's avatar
XhmikosR committed
3810
3811
      context = new this.constructor(event.delegateTarget, this._getDelegateConfig());
      Data.setData(event.delegateTarget, dataKey, context);
XhmikosR's avatar
Dist.  
XhmikosR committed
3812
3813
3814
    }

    if (event) {
XhmikosR's avatar
XhmikosR committed
3815
      context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = false;
XhmikosR's avatar
Dist.  
XhmikosR committed
3816
3817
3818
3819
3820
3821
3822
    }

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

    clearTimeout(context._timeout);
XhmikosR's avatar
XhmikosR committed
3823
    context._hoverState = HOVER_STATE_OUT;
XhmikosR's avatar
Dist.  
XhmikosR committed
3824
3825
3826
3827
3828
3829

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

XhmikosR's avatar
XhmikosR committed
3830
    context._timeout = setTimeout(function () {
XhmikosR's avatar
XhmikosR committed
3831
      if (context._hoverState === HOVER_STATE_OUT) {
XhmikosR's avatar
Dist.  
XhmikosR committed
3832
3833
3834
        context.hide();
      }
    }, context.config.delay.hide);
XhmikosR's avatar
XhmikosR committed
3835
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3836

XhmikosR's avatar
XhmikosR committed
3837
3838
  _proto._isWithActiveTrigger = function _isWithActiveTrigger() {
    for (var trigger in this._activeTrigger) {
XhmikosR's avatar
Dist.  
XhmikosR committed
3839
3840
3841
3842
3843
3844
      if (this._activeTrigger[trigger]) {
        return true;
      }
    }

    return false;
XhmikosR's avatar
XhmikosR committed
3845
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3846

XhmikosR's avatar
XhmikosR committed
3847
3848
3849
  _proto._getConfig = function _getConfig(config) {
    var dataAttributes = Manipulator.getDataAttributes(this.element);
    Object.keys(dataAttributes).forEach(function (dataAttr) {
XhmikosR's avatar
Dist.  
XhmikosR committed
3850
3851
3852
3853
3854
3855
3856
3857
3858
      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
3859
    config = _extends({}, this.constructor.Default, dataAttributes, typeof config === 'object' && config ? config : {});
XhmikosR's avatar
Dist.  
XhmikosR committed
3860
3861
3862
3863
3864
3865
3866
3867
3868
3869
3870
3871
3872
3873
3874
3875
3876
3877
3878

    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
3879
      config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn);
XhmikosR's avatar
Dist.  
XhmikosR committed
3880
3881
3882
    }

    return config;
XhmikosR's avatar
XhmikosR committed
3883
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3884

XhmikosR's avatar
XhmikosR committed
3885
3886
  _proto._getDelegateConfig = function _getDelegateConfig() {
    var config = {};
XhmikosR's avatar
Dist.  
XhmikosR committed
3887
3888

    if (this.config) {
XhmikosR's avatar
XhmikosR committed
3889
      for (var key in this.config) {
XhmikosR's avatar
Dist.  
XhmikosR committed
3890
3891
3892
3893
3894
3895
3896
        if (this.constructor.Default[key] !== this.config[key]) {
          config[key] = this.config[key];
        }
      }
    }

    return config;
XhmikosR's avatar
XhmikosR committed
3897
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3898

XhmikosR's avatar
XhmikosR committed
3899
3900
3901
  _proto._cleanTipClass = function _cleanTipClass() {
    var tip = this.getTipElement();
    var tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX);
XhmikosR's avatar
Dist.  
XhmikosR committed
3902

XhmikosR's avatar
XhmikosR committed
3903
    if (tabClass !== null && tabClass.length > 0) {
XhmikosR's avatar
XhmikosR committed
3904
3905
3906
3907
3908
      tabClass.map(function (token) {
        return token.trim();
      }).forEach(function (tClass) {
        return tip.classList.remove(tClass);
      });
XhmikosR's avatar
Dist.  
XhmikosR committed
3909
    }
XhmikosR's avatar
XhmikosR committed
3910
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3911

XhmikosR's avatar
XhmikosR committed
3912
  _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) {
XhmikosR's avatar
XhmikosR committed
3913
    this.tip = popperData.instance.popper;
XhmikosR's avatar
Dist.  
XhmikosR committed
3914
3915
3916

    this._cleanTipClass();

3917
    this._addAttachmentClass(this._getAttachment(popperData.placement));
XhmikosR's avatar
XhmikosR committed
3918
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3919

XhmikosR's avatar
XhmikosR committed
3920
3921
3922
  _proto._fixTransition = function _fixTransition() {
    var tip = this.getTipElement();
    var initConfigAnimation = this.config.animation;
XhmikosR's avatar
Dist.  
XhmikosR committed
3923
3924
3925
3926
3927

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

XhmikosR's avatar
XhmikosR committed
3928
    tip.classList.remove(CLASS_NAME_FADE$1);
XhmikosR's avatar
Dist.  
XhmikosR committed
3929
3930
3931
3932
3933
    this.config.animation = false;
    this.hide();
    this.show();
    this.config.animation = initConfigAnimation;
  } // Static
XhmikosR's avatar
XhmikosR committed
3934
  ;
XhmikosR's avatar
Dist.  
XhmikosR committed
3935

XhmikosR's avatar
XhmikosR committed
3936
  Tooltip.jQueryInterface = function jQueryInterface(config) {
XhmikosR's avatar
Dist.  
XhmikosR committed
3937
    return this.each(function () {
XhmikosR's avatar
XhmikosR committed
3938
      var data = Data.getData(this, DATA_KEY$6);
XhmikosR's avatar
Dist.  
XhmikosR committed
3939

XhmikosR's avatar
XhmikosR committed
3940
      var _config = typeof config === 'object' && config;
XhmikosR's avatar
Dist.  
XhmikosR committed
3941
3942
3943
3944
3945
3946
3947
3948
3949
3950
3951

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

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

      if (typeof config === 'string') {
        if (typeof data[config] === 'undefined') {
XhmikosR's avatar
XhmikosR committed
3952
          throw new TypeError("No method named \"" + config + "\"");
XhmikosR's avatar
Dist.  
XhmikosR committed
3953
3954
3955
3956
3957
        }

        data[config]();
      }
    });
XhmikosR's avatar
XhmikosR committed
3958
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3959

XhmikosR's avatar
XhmikosR committed
3960
  Tooltip.getInstance = function getInstance(element) {
XhmikosR's avatar
Dist.  
XhmikosR committed
3961
    return Data.getData(element, DATA_KEY$6);
XhmikosR's avatar
XhmikosR committed
3962
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
3963

XhmikosR's avatar
XhmikosR committed
3964
3965
3966
3967
3968
3969
3970
3971
3972
3973
3974
3975
3976
3977
3978
3979
3980
3981
3982
3983
3984
3985
3986
  _createClass(Tooltip, null, [{
    key: "VERSION",
    get: function get() {
      return VERSION$6;
    }
  }, {
    key: "Default",
    get: function get() {
      return Default$4;
    }
  }, {
    key: "NAME",
    get: function get() {
      return NAME$6;
    }
  }, {
    key: "DATA_KEY",
    get: function get() {
      return DATA_KEY$6;
    }
  }, {
    key: "Event",
    get: function get() {
XhmikosR's avatar
XhmikosR committed
3987
      return Event$1;
XhmikosR's avatar
XhmikosR committed
3988
3989
3990
3991
3992
3993
3994
3995
3996
3997
3998
3999
4000
4001
4002
    }
  }, {
    key: "EVENT_KEY",
    get: function get() {
      return EVENT_KEY$6;
    }
  }, {
    key: "DefaultType",
    get: function get() {
      return DefaultType$4;
    }
  }]);

  return Tooltip;
}();
XhmikosR's avatar
Dist.  
XhmikosR committed
4003
4004
4005
4006
/**
 * ------------------------------------------------------------------------
 * jQuery
 * ------------------------------------------------------------------------
XhmikosR's avatar
XhmikosR committed
4007
 * add .Tooltip to jQuery only if jQuery is present
XhmikosR's avatar
Dist.  
XhmikosR committed
4008
4009
 */

4010

XhmikosR's avatar
XhmikosR committed
4011
4012
4013
onDOMContentLoaded(function () {
  var $ = getjQuery();
  /* istanbul ignore if */
XhmikosR's avatar
Dist.  
XhmikosR committed
4014

XhmikosR's avatar
XhmikosR committed
4015
4016
4017
4018
4019
4020
4021
4022
4023
4024
4025
  if ($) {
    var JQUERY_NO_CONFLICT = $.fn[NAME$6];
    $.fn[NAME$6] = Tooltip.jQueryInterface;
    $.fn[NAME$6].Constructor = Tooltip;

    $.fn[NAME$6].noConflict = function () {
      $.fn[NAME$6] = JQUERY_NO_CONFLICT;
      return Tooltip.jQueryInterface;
    };
  }
});
XhmikosR's avatar
Dist.  
XhmikosR committed
4026
4027
4028
4029
4030
4031
4032

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

XhmikosR's avatar
XhmikosR committed
4033
var NAME$7 = 'popover';
XhmikosR's avatar
XhmikosR committed
4034
var VERSION$7 = '5.0.0-alpha3';
XhmikosR's avatar
XhmikosR committed
4035
4036
4037
4038
var DATA_KEY$7 = 'bs.popover';
var EVENT_KEY$7 = "." + DATA_KEY$7;
var CLASS_PREFIX$1 = 'bs-popover';
var BSCLS_PREFIX_REGEX$1 = new RegExp("(^|\\s)" + CLASS_PREFIX$1 + "\\S+", 'g');
XhmikosR's avatar
Dist.  
XhmikosR committed
4039

XhmikosR's avatar
XhmikosR committed
4040
var Default$5 = _extends({}, Tooltip.Default, {
XhmikosR's avatar
Dist.  
XhmikosR committed
4041
4042
4043
4044
4045
4046
  placement: 'right',
  trigger: 'click',
  content: '',
  template: '<div class="popover" role="tooltip">' + '<div class="popover-arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div></div>'
});

XhmikosR's avatar
XhmikosR committed
4047
var DefaultType$5 = _extends({}, Tooltip.DefaultType, {
XhmikosR's avatar
Dist.  
XhmikosR committed
4048
4049
4050
  content: '(string|element|function)'
});

XhmikosR's avatar
XhmikosR committed
4051
var Event$2 = {
XhmikosR's avatar
XhmikosR committed
4052
4053
4054
4055
4056
4057
4058
4059
4060
4061
  HIDE: "hide" + EVENT_KEY$7,
  HIDDEN: "hidden" + EVENT_KEY$7,
  SHOW: "show" + EVENT_KEY$7,
  SHOWN: "shown" + EVENT_KEY$7,
  INSERTED: "inserted" + EVENT_KEY$7,
  CLICK: "click" + EVENT_KEY$7,
  FOCUSIN: "focusin" + EVENT_KEY$7,
  FOCUSOUT: "focusout" + EVENT_KEY$7,
  MOUSEENTER: "mouseenter" + EVENT_KEY$7,
  MOUSELEAVE: "mouseleave" + EVENT_KEY$7
XhmikosR's avatar
Dist.  
XhmikosR committed
4062
};
XhmikosR's avatar
XhmikosR committed
4063
4064
4065
4066
var CLASS_NAME_FADE$2 = 'fade';
var CLASS_NAME_SHOW$4 = 'show';
var SELECTOR_TITLE = '.popover-header';
var SELECTOR_CONTENT = '.popover-body';
XhmikosR's avatar
XhmikosR committed
4067
4068
4069
4070
4071
/**
 * ------------------------------------------------------------------------
 * Class Definition
 * ------------------------------------------------------------------------
 */
XhmikosR's avatar
Dist.  
XhmikosR committed
4072

XhmikosR's avatar
XhmikosR committed
4073
var Popover = /*#__PURE__*/function (_Tooltip) {
XhmikosR's avatar
XhmikosR committed
4074
  _inheritsLoose(Popover, _Tooltip);
XhmikosR's avatar
Dist.  
XhmikosR committed
4075

XhmikosR's avatar
XhmikosR committed
4076
4077
  function Popover() {
    return _Tooltip.apply(this, arguments) || this;
XhmikosR's avatar
Dist.  
XhmikosR committed
4078
4079
  }

XhmikosR's avatar
XhmikosR committed
4080
  var _proto = Popover.prototype;
XhmikosR's avatar
Dist.  
XhmikosR committed
4081

XhmikosR's avatar
XhmikosR committed
4082
4083
  // Overrides
  _proto.isWithContent = function isWithContent() {
XhmikosR's avatar
Dist.  
XhmikosR committed
4084
    return this.getTitle() || this._getContent();
XhmikosR's avatar
XhmikosR committed
4085
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
4086

XhmikosR's avatar
XhmikosR committed
4087
4088
  _proto.setContent = function setContent() {
    var tip = this.getTipElement(); // we use append for html objects to maintain js events
XhmikosR's avatar
Dist.  
XhmikosR committed
4089

XhmikosR's avatar
XhmikosR committed
4090
    this.setElementContent(SelectorEngine.findOne(SELECTOR_TITLE, tip), this.getTitle());
XhmikosR's avatar
Dist.  
XhmikosR committed
4091

XhmikosR's avatar
XhmikosR committed
4092
    var content = this._getContent();
XhmikosR's avatar
Dist.  
XhmikosR committed
4093
4094
4095
4096
4097

    if (typeof content === 'function') {
      content = content.call(this.element);
    }

XhmikosR's avatar
XhmikosR committed
4098
    this.setElementContent(SelectorEngine.findOne(SELECTOR_CONTENT, tip), content);
XhmikosR's avatar
XhmikosR committed
4099
    tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$4);
XhmikosR's avatar
XhmikosR committed
4100
4101
  } // Private
  ;
XhmikosR's avatar
XhmikosR committed
4102
4103
4104

  _proto._addAttachmentClass = function _addAttachmentClass(attachment) {
    this.getTipElement().classList.add(CLASS_PREFIX$1 + "-" + attachment);
XhmikosR's avatar
XhmikosR committed
4105
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
4106

XhmikosR's avatar
XhmikosR committed
4107
  _proto._getContent = function _getContent() {
XhmikosR's avatar
Dist.  
XhmikosR committed
4108
    return this.element.getAttribute('data-content') || this.config.content;
XhmikosR's avatar
XhmikosR committed
4109
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
4110

XhmikosR's avatar
XhmikosR committed
4111
4112
4113
  _proto._cleanTipClass = function _cleanTipClass() {
    var tip = this.getTipElement();
    var tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX$1);
XhmikosR's avatar
Dist.  
XhmikosR committed
4114
4115

    if (tabClass !== null && tabClass.length > 0) {
XhmikosR's avatar
XhmikosR committed
4116
4117
4118
4119
4120
      tabClass.map(function (token) {
        return token.trim();
      }).forEach(function (tClass) {
        return tip.classList.remove(tClass);
      });
XhmikosR's avatar
Dist.  
XhmikosR committed
4121
4122
    }
  } // Static
XhmikosR's avatar
XhmikosR committed
4123
  ;
XhmikosR's avatar
Dist.  
XhmikosR committed
4124

XhmikosR's avatar
XhmikosR committed
4125
  Popover.jQueryInterface = function jQueryInterface(config) {
XhmikosR's avatar
Dist.  
XhmikosR committed
4126
    return this.each(function () {
XhmikosR's avatar
XhmikosR committed
4127
      var data = Data.getData(this, DATA_KEY$7);
XhmikosR's avatar
Dist.  
XhmikosR committed
4128

XhmikosR's avatar
XhmikosR committed
4129
      var _config = typeof config === 'object' ? config : null;
XhmikosR's avatar
Dist.  
XhmikosR committed
4130
4131
4132
4133
4134
4135
4136
4137
4138
4139
4140
4141

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

      if (!data) {
        data = new Popover(this, _config);
        Data.setData(this, DATA_KEY$7, data);
      }

      if (typeof config === 'string') {
        if (typeof data[config] === 'undefined') {
XhmikosR's avatar
XhmikosR committed
4142
          throw new TypeError("No method named \"" + config + "\"");
XhmikosR's avatar
Dist.  
XhmikosR committed
4143
4144
4145
4146
4147
        }

        data[config]();
      }
    });
XhmikosR's avatar
XhmikosR committed
4148
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
4149

XhmikosR's avatar
XhmikosR committed
4150
  Popover.getInstance = function getInstance(element) {
XhmikosR's avatar
Dist.  
XhmikosR committed
4151
    return Data.getData(element, DATA_KEY$7);
XhmikosR's avatar
XhmikosR committed
4152
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
4153

XhmikosR's avatar
XhmikosR committed
4154
4155
4156
4157
4158
4159
4160
4161
4162
4163
4164
4165
4166
4167
4168
4169
4170
4171
4172
4173
4174
4175
4176
4177
  _createClass(Popover, null, [{
    key: "VERSION",
    // Getters
    get: function get() {
      return VERSION$7;
    }
  }, {
    key: "Default",
    get: function get() {
      return Default$5;
    }
  }, {
    key: "NAME",
    get: function get() {
      return NAME$7;
    }
  }, {
    key: "DATA_KEY",
    get: function get() {
      return DATA_KEY$7;
    }
  }, {
    key: "Event",
    get: function get() {
XhmikosR's avatar
XhmikosR committed
4178
      return Event$2;
XhmikosR's avatar
XhmikosR committed
4179
4180
4181
4182
4183
4184
4185
4186
4187
4188
4189
4190
4191
4192
4193
    }
  }, {
    key: "EVENT_KEY",
    get: function get() {
      return EVENT_KEY$7;
    }
  }, {
    key: "DefaultType",
    get: function get() {
      return DefaultType$5;
    }
  }]);

  return Popover;
}(Tooltip);
XhmikosR's avatar
Dist.  
XhmikosR committed
4194
4195
4196
4197
/**
 * ------------------------------------------------------------------------
 * jQuery
 * ------------------------------------------------------------------------
XhmikosR's avatar
XhmikosR committed
4198
 * add .Popover to jQuery only if jQuery is present
XhmikosR's avatar
Dist.  
XhmikosR committed
4199
4200
 */

4201

XhmikosR's avatar
XhmikosR committed
4202
4203
4204
onDOMContentLoaded(function () {
  var $ = getjQuery();
  /* istanbul ignore if */
XhmikosR's avatar
Dist.  
XhmikosR committed
4205

XhmikosR's avatar
XhmikosR committed
4206
4207
4208
4209
4210
4211
4212
4213
4214
4215
4216
  if ($) {
    var JQUERY_NO_CONFLICT = $.fn[NAME$7];
    $.fn[NAME$7] = Popover.jQueryInterface;
    $.fn[NAME$7].Constructor = Popover;

    $.fn[NAME$7].noConflict = function () {
      $.fn[NAME$7] = JQUERY_NO_CONFLICT;
      return Popover.jQueryInterface;
    };
  }
});
XhmikosR's avatar
Dist.  
XhmikosR committed
4217
4218
4219
4220
4221
4222
4223

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

XhmikosR's avatar
XhmikosR committed
4224
var NAME$8 = 'scrollspy';
XhmikosR's avatar
XhmikosR committed
4225
var VERSION$8 = '5.0.0-alpha3';
XhmikosR's avatar
XhmikosR committed
4226
4227
4228
4229
var DATA_KEY$8 = 'bs.scrollspy';
var EVENT_KEY$8 = "." + DATA_KEY$8;
var DATA_API_KEY$6 = '.data-api';
var Default$6 = {
XhmikosR's avatar
Dist.  
XhmikosR committed
4230
4231
4232
4233
  offset: 10,
  method: 'auto',
  target: ''
};
XhmikosR's avatar
XhmikosR committed
4234
var DefaultType$6 = {
XhmikosR's avatar
Dist.  
XhmikosR committed
4235
4236
4237
4238
  offset: 'number',
  method: 'string',
  target: '(string|element)'
};
XhmikosR's avatar
XhmikosR committed
4239
4240
4241
4242
4243
4244
4245
4246
4247
4248
4249
4250
4251
4252
var EVENT_ACTIVATE = "activate" + EVENT_KEY$8;
var EVENT_SCROLL = "scroll" + EVENT_KEY$8;
var EVENT_LOAD_DATA_API$1 = "load" + EVENT_KEY$8 + DATA_API_KEY$6;
var CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';
var CLASS_NAME_ACTIVE$2 = 'active';
var SELECTOR_DATA_SPY = '[data-spy="scroll"]';
var SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';
var SELECTOR_NAV_LINKS = '.nav-link';
var SELECTOR_NAV_ITEMS = '.nav-item';
var SELECTOR_LIST_ITEMS = '.list-group-item';
var SELECTOR_DROPDOWN = '.dropdown';
var SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';
var METHOD_OFFSET = 'offset';
var METHOD_POSITION = 'position';
XhmikosR's avatar
XhmikosR committed
4253
4254
4255
4256
4257
/**
 * ------------------------------------------------------------------------
 * Class Definition
 * ------------------------------------------------------------------------
 */
XhmikosR's avatar
Dist.  
XhmikosR committed
4258

XhmikosR's avatar
XhmikosR committed
4259
var ScrollSpy = /*#__PURE__*/function () {
XhmikosR's avatar
XhmikosR committed
4260
4261
4262
  function ScrollSpy(element, config) {
    var _this = this;

XhmikosR's avatar
Dist.  
XhmikosR committed
4263
4264
4265
    this._element = element;
    this._scrollElement = element.tagName === 'BODY' ? window : element;
    this._config = this._getConfig(config);
XhmikosR's avatar
XhmikosR committed
4266
    this._selector = this._config.target + " " + SELECTOR_NAV_LINKS + ", " + this._config.target + " " + SELECTOR_LIST_ITEMS + ", " + this._config.target + " ." + CLASS_NAME_DROPDOWN_ITEM;
XhmikosR's avatar
Dist.  
XhmikosR committed
4267
4268
4269
4270
    this._offsets = [];
    this._targets = [];
    this._activeTarget = null;
    this._scrollHeight = 0;
XhmikosR's avatar
XhmikosR committed
4271
    EventHandler.on(this._scrollElement, EVENT_SCROLL, function (event) {
XhmikosR's avatar
XhmikosR committed
4272
4273
      return _this._process(event);
    });
XhmikosR's avatar
Dist.  
XhmikosR committed
4274
4275
4276
4277
4278
4279
4280
4281
    this.refresh();

    this._process();

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


XhmikosR's avatar
XhmikosR committed
4282
  var _proto = ScrollSpy.prototype;
XhmikosR's avatar
Dist.  
XhmikosR committed
4283

XhmikosR's avatar
XhmikosR committed
4284
4285
4286
  // Public
  _proto.refresh = function refresh() {
    var _this2 = this;
XhmikosR's avatar
Dist.  
XhmikosR committed
4287

XhmikosR's avatar
XhmikosR committed
4288
    var autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION;
XhmikosR's avatar
XhmikosR committed
4289
    var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;
XhmikosR's avatar
XhmikosR committed
4290
    var offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0;
XhmikosR's avatar
Dist.  
XhmikosR committed
4291
4292
4293
    this._offsets = [];
    this._targets = [];
    this._scrollHeight = this._getScrollHeight();
XhmikosR's avatar
XhmikosR committed
4294
    var targets = SelectorEngine.find(this._selector);
XhmikosR's avatar
XhmikosR committed
4295
4296
    targets.map(function (element) {
      var targetSelector = getSelectorFromElement(element);
XhmikosR's avatar
XhmikosR committed
4297
      var target = targetSelector ? SelectorEngine.findOne(targetSelector) : null;
XhmikosR's avatar
Dist.  
XhmikosR committed
4298
4299

      if (target) {
XhmikosR's avatar
XhmikosR committed
4300
        var targetBCR = target.getBoundingClientRect();
XhmikosR's avatar
Dist.  
XhmikosR committed
4301
4302
4303
4304
4305
4306
4307

        if (targetBCR.width || targetBCR.height) {
          return [Manipulator[offsetMethod](target).top + offsetBase, targetSelector];
        }
      }

      return null;
XhmikosR's avatar
XhmikosR committed
4308
4309
4310
4311
4312
4313
4314
4315
    }).filter(function (item) {
      return item;
    }).sort(function (a, b) {
      return a[0] - b[0];
    }).forEach(function (item) {
      _this2._offsets.push(item[0]);

      _this2._targets.push(item[1]);
XhmikosR's avatar
Dist.  
XhmikosR committed
4316
    });
XhmikosR's avatar
XhmikosR committed
4317
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
4318

XhmikosR's avatar
XhmikosR committed
4319
  _proto.dispose = function dispose() {
XhmikosR's avatar
Dist.  
XhmikosR committed
4320
4321
4322
4323
4324
4325
4326
4327
4328
4329
4330
    Data.removeData(this._element, DATA_KEY$8);
    EventHandler.off(this._scrollElement, EVENT_KEY$8);
    this._element = null;
    this._scrollElement = null;
    this._config = null;
    this._selector = null;
    this._offsets = null;
    this._targets = null;
    this._activeTarget = null;
    this._scrollHeight = null;
  } // Private
XhmikosR's avatar
XhmikosR committed
4331
  ;
XhmikosR's avatar
Dist.  
XhmikosR committed
4332

XhmikosR's avatar
XhmikosR committed
4333
  _proto._getConfig = function _getConfig(config) {
XhmikosR's avatar
XhmikosR committed
4334
    config = _extends({}, Default$6, typeof config === 'object' && config ? config : {});
XhmikosR's avatar
Dist.  
XhmikosR committed
4335

XhmikosR's avatar
XhmikosR committed
4336
    if (typeof config.target !== 'string' && isElement(config.target)) {
XhmikosR's avatar
XhmikosR committed
4337
      var id = config.target.id;
XhmikosR's avatar
Dist.  
XhmikosR committed
4338
4339
4340
4341
4342
4343

      if (!id) {
        id = getUID(NAME$8);
        config.target.id = id;
      }

XhmikosR's avatar
XhmikosR committed
4344
      config.target = "#" + id;
XhmikosR's avatar
Dist.  
XhmikosR committed
4345
4346
4347
4348
    }

    typeCheckConfig(NAME$8, config, DefaultType$6);
    return config;
XhmikosR's avatar
XhmikosR committed
4349
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
4350

XhmikosR's avatar
XhmikosR committed
4351
  _proto._getScrollTop = function _getScrollTop() {
XhmikosR's avatar
Dist.  
XhmikosR committed
4352
    return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;
XhmikosR's avatar
XhmikosR committed
4353
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
4354

XhmikosR's avatar
XhmikosR committed
4355
  _proto._getScrollHeight = function _getScrollHeight() {
XhmikosR's avatar
Dist.  
XhmikosR committed
4356
    return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
XhmikosR's avatar
XhmikosR committed
4357
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
4358

XhmikosR's avatar
XhmikosR committed
4359
  _proto._getOffsetHeight = function _getOffsetHeight() {
XhmikosR's avatar
Dist.  
XhmikosR committed
4360
    return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;
XhmikosR's avatar
XhmikosR committed
4361
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
4362

XhmikosR's avatar
XhmikosR committed
4363
4364
  _proto._process = function _process() {
    var scrollTop = this._getScrollTop() + this._config.offset;
XhmikosR's avatar
Dist.  
XhmikosR committed
4365

XhmikosR's avatar
XhmikosR committed
4366
    var scrollHeight = this._getScrollHeight();
XhmikosR's avatar
Dist.  
XhmikosR committed
4367

XhmikosR's avatar
XhmikosR committed
4368
    var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();
XhmikosR's avatar
Dist.  
XhmikosR committed
4369
4370
4371
4372
4373
4374

    if (this._scrollHeight !== scrollHeight) {
      this.refresh();
    }

    if (scrollTop >= maxScroll) {
XhmikosR's avatar
XhmikosR committed
4375
      var target = this._targets[this._targets.length - 1];
XhmikosR's avatar
Dist.  
XhmikosR committed
4376
4377
4378
4379
4380
4381
4382
4383
4384
4385
4386
4387
4388
4389
4390
4391

      if (this._activeTarget !== target) {
        this._activate(target);
      }

      return;
    }

    if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {
      this._activeTarget = null;

      this._clear();

      return;
    }

XhmikosR's avatar
XhmikosR committed
4392
    for (var i = this._offsets.length; i--;) {
XhmikosR's avatar
XhmikosR committed
4393
      var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);
XhmikosR's avatar
Dist.  
XhmikosR committed
4394
4395
4396
4397
4398

      if (isActiveTarget) {
        this._activate(this._targets[i]);
      }
    }
XhmikosR's avatar
XhmikosR committed
4399
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
4400

XhmikosR's avatar
XhmikosR committed
4401
  _proto._activate = function _activate(target) {
XhmikosR's avatar
Dist.  
XhmikosR committed
4402
4403
4404
4405
    this._activeTarget = target;

    this._clear();

XhmikosR's avatar
XhmikosR committed
4406
4407
4408
    var queries = this._selector.split(',').map(function (selector) {
      return selector + "[data-target=\"" + target + "\"]," + selector + "[href=\"" + target + "\"]";
    });
XhmikosR's avatar
Dist.  
XhmikosR committed
4409

XhmikosR's avatar
XhmikosR committed
4410
    var link = SelectorEngine.findOne(queries.join(','));
XhmikosR's avatar
Dist.  
XhmikosR committed
4411

XhmikosR's avatar
XhmikosR committed
4412
    if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {
XhmikosR's avatar
XhmikosR committed
4413
      SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, link.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$2);
XhmikosR's avatar
XhmikosR committed
4414
      link.classList.add(CLASS_NAME_ACTIVE$2);
XhmikosR's avatar
Dist.  
XhmikosR committed
4415
4416
    } else {
      // Set triggered link as active
XhmikosR's avatar
XhmikosR committed
4417
4418
      link.classList.add(CLASS_NAME_ACTIVE$2);
      SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP).forEach(function (listGroup) {
XhmikosR's avatar
Dist.  
XhmikosR committed
4419
4420
        // Set triggered links parents as active
        // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
XhmikosR's avatar
XhmikosR committed
4421
4422
        SelectorEngine.prev(listGroup, SELECTOR_NAV_LINKS + ", " + SELECTOR_LIST_ITEMS).forEach(function (item) {
          return item.classList.add(CLASS_NAME_ACTIVE$2);
XhmikosR's avatar
XhmikosR committed
4423
        }); // Handle special case when .nav-link is inside .nav-item
XhmikosR's avatar
Dist.  
XhmikosR committed
4424

XhmikosR's avatar
XhmikosR committed
4425
4426
4427
        SelectorEngine.prev(listGroup, SELECTOR_NAV_ITEMS).forEach(function (navItem) {
          SelectorEngine.children(navItem, SELECTOR_NAV_LINKS).forEach(function (item) {
            return item.classList.add(CLASS_NAME_ACTIVE$2);
XhmikosR's avatar
XhmikosR committed
4428
          });
XhmikosR's avatar
Dist.  
XhmikosR committed
4429
4430
4431
4432
        });
      });
    }

XhmikosR's avatar
XhmikosR committed
4433
    EventHandler.trigger(this._scrollElement, EVENT_ACTIVATE, {
XhmikosR's avatar
Dist.  
XhmikosR committed
4434
4435
      relatedTarget: target
    });
XhmikosR's avatar
XhmikosR committed
4436
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
4437

XhmikosR's avatar
XhmikosR committed
4438
  _proto._clear = function _clear() {
XhmikosR's avatar
XhmikosR committed
4439
4440
    SelectorEngine.find(this._selector).filter(function (node) {
      return node.classList.contains(CLASS_NAME_ACTIVE$2);
XhmikosR's avatar
XhmikosR committed
4441
    }).forEach(function (node) {
XhmikosR's avatar
XhmikosR committed
4442
      return node.classList.remove(CLASS_NAME_ACTIVE$2);
XhmikosR's avatar
XhmikosR committed
4443
    });
XhmikosR's avatar
Dist.  
XhmikosR committed
4444
  } // Static
XhmikosR's avatar
XhmikosR committed
4445
  ;
XhmikosR's avatar
Dist.  
XhmikosR committed
4446

XhmikosR's avatar
XhmikosR committed
4447
  ScrollSpy.jQueryInterface = function jQueryInterface(config) {
XhmikosR's avatar
Dist.  
XhmikosR committed
4448
    return this.each(function () {
XhmikosR's avatar
XhmikosR committed
4449
      var data = Data.getData(this, DATA_KEY$8);
XhmikosR's avatar
Dist.  
XhmikosR committed
4450

XhmikosR's avatar
XhmikosR committed
4451
      var _config = typeof config === 'object' && config;
XhmikosR's avatar
Dist.  
XhmikosR committed
4452
4453
4454
4455
4456
4457
4458

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

      if (typeof config === 'string') {
        if (typeof data[config] === 'undefined') {
XhmikosR's avatar
XhmikosR committed
4459
          throw new TypeError("No method named \"" + config + "\"");
XhmikosR's avatar
Dist.  
XhmikosR committed
4460
4461
4462
4463
4464
        }

        data[config]();
      }
    });
XhmikosR's avatar
XhmikosR committed
4465
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
4466

XhmikosR's avatar
XhmikosR committed
4467
  ScrollSpy.getInstance = function getInstance(element) {
XhmikosR's avatar
Dist.  
XhmikosR committed
4468
    return Data.getData(element, DATA_KEY$8);
XhmikosR's avatar
XhmikosR committed
4469
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
4470

XhmikosR's avatar
XhmikosR committed
4471
4472
4473
4474
4475
4476
4477
4478
4479
4480
4481
4482
4483
4484
  _createClass(ScrollSpy, null, [{
    key: "VERSION",
    get: function get() {
      return VERSION$8;
    }
  }, {
    key: "Default",
    get: function get() {
      return Default$6;
    }
  }]);

  return ScrollSpy;
}();
XhmikosR's avatar
Dist.  
XhmikosR committed
4485
4486
4487
4488
4489
4490
4491
/**
 * ------------------------------------------------------------------------
 * Data Api implementation
 * ------------------------------------------------------------------------
 */


XhmikosR's avatar
XhmikosR committed
4492
4493
EventHandler.on(window, EVENT_LOAD_DATA_API$1, function () {
  SelectorEngine.find(SELECTOR_DATA_SPY).forEach(function (spy) {
XhmikosR's avatar
XhmikosR committed
4494
4495
    return new ScrollSpy(spy, Manipulator.getDataAttributes(spy));
  });
XhmikosR's avatar
Dist.  
XhmikosR committed
4496
4497
4498
4499
4500
});
/**
 * ------------------------------------------------------------------------
 * jQuery
 * ------------------------------------------------------------------------
XhmikosR's avatar
XhmikosR committed
4501
 * add .ScrollSpy to jQuery only if jQuery is present
XhmikosR's avatar
Dist.  
XhmikosR committed
4502
4503
 */

XhmikosR's avatar
XhmikosR committed
4504
4505
4506
onDOMContentLoaded(function () {
  var $ = getjQuery();
  /* istanbul ignore if */
4507

XhmikosR's avatar
XhmikosR committed
4508
4509
4510
4511
  if ($) {
    var JQUERY_NO_CONFLICT = $.fn[NAME$8];
    $.fn[NAME$8] = ScrollSpy.jQueryInterface;
    $.fn[NAME$8].Constructor = ScrollSpy;
XhmikosR's avatar
Dist.  
XhmikosR committed
4512

XhmikosR's avatar
XhmikosR committed
4513
4514
4515
4516
4517
4518
    $.fn[NAME$8].noConflict = function () {
      $.fn[NAME$8] = JQUERY_NO_CONFLICT;
      return ScrollSpy.jQueryInterface;
    };
  }
});
XhmikosR's avatar
Dist.  
XhmikosR committed
4519
4520
4521
4522
4523
4524
4525

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

XhmikosR's avatar
XhmikosR committed
4526
var NAME$9 = 'tab';
XhmikosR's avatar
XhmikosR committed
4527
var VERSION$9 = '5.0.0-alpha3';
XhmikosR's avatar
XhmikosR committed
4528
4529
4530
var DATA_KEY$9 = 'bs.tab';
var EVENT_KEY$9 = "." + DATA_KEY$9;
var DATA_API_KEY$7 = '.data-api';
XhmikosR's avatar
XhmikosR committed
4531
4532
4533
4534
4535
4536
4537
var EVENT_HIDE$3 = "hide" + EVENT_KEY$9;
var EVENT_HIDDEN$3 = "hidden" + EVENT_KEY$9;
var EVENT_SHOW$3 = "show" + EVENT_KEY$9;
var EVENT_SHOWN$3 = "shown" + EVENT_KEY$9;
var EVENT_CLICK_DATA_API$6 = "click" + EVENT_KEY$9 + DATA_API_KEY$7;
var CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu';
var CLASS_NAME_ACTIVE$3 = 'active';
XhmikosR's avatar
XhmikosR committed
4538
var CLASS_NAME_DISABLED$1 = 'disabled';
XhmikosR's avatar
XhmikosR committed
4539
4540
4541
4542
var CLASS_NAME_FADE$3 = 'fade';
var CLASS_NAME_SHOW$5 = 'show';
var SELECTOR_DROPDOWN$1 = '.dropdown';
var SELECTOR_NAV_LIST_GROUP$1 = '.nav, .list-group';
XhmikosR's avatar
XhmikosR committed
4543
var SELECTOR_ACTIVE$1 = '.active';
XhmikosR's avatar
XhmikosR committed
4544
4545
4546
4547
var SELECTOR_ACTIVE_UL = ':scope > li > .active';
var SELECTOR_DATA_TOGGLE$4 = '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]';
var SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';
var SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active';
XhmikosR's avatar
XhmikosR committed
4548
4549
4550
4551
4552
/**
 * ------------------------------------------------------------------------
 * Class Definition
 * ------------------------------------------------------------------------
 */
XhmikosR's avatar
Dist.  
XhmikosR committed
4553

XhmikosR's avatar
XhmikosR committed
4554
var Tab = /*#__PURE__*/function () {
XhmikosR's avatar
XhmikosR committed
4555
  function Tab(element) {
XhmikosR's avatar
Dist.  
XhmikosR committed
4556
4557
4558
4559
4560
    this._element = element;
    Data.setData(this._element, DATA_KEY$9, this);
  } // Getters


XhmikosR's avatar
XhmikosR committed
4561
  var _proto = Tab.prototype;
XhmikosR's avatar
Dist.  
XhmikosR committed
4562

XhmikosR's avatar
XhmikosR committed
4563
4564
4565
  // Public
  _proto.show = function show() {
    var _this = this;
XhmikosR's avatar
Dist.  
XhmikosR committed
4566

XhmikosR's avatar
XhmikosR committed
4567
    if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && this._element.classList.contains(CLASS_NAME_ACTIVE$3) || this._element.classList.contains(CLASS_NAME_DISABLED$1)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
4568
4569
4570
      return;
    }

XhmikosR's avatar
XhmikosR committed
4571
    var previous;
XhmikosR's avatar
XhmikosR committed
4572
    var target = getElementFromSelector(this._element);
XhmikosR's avatar
XhmikosR committed
4573
4574

    var listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP$1);
XhmikosR's avatar
Dist.  
XhmikosR committed
4575
4576

    if (listElement) {
XhmikosR's avatar
XhmikosR committed
4577
      var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE$1;
XhmikosR's avatar
XhmikosR committed
4578
      previous = SelectorEngine.find(itemSelector, listElement);
XhmikosR's avatar
Dist.  
XhmikosR committed
4579
4580
4581
      previous = previous[previous.length - 1];
    }

XhmikosR's avatar
XhmikosR committed
4582
    var hideEvent = null;
XhmikosR's avatar
Dist.  
XhmikosR committed
4583
4584

    if (previous) {
XhmikosR's avatar
XhmikosR committed
4585
      hideEvent = EventHandler.trigger(previous, EVENT_HIDE$3, {
XhmikosR's avatar
Dist.  
XhmikosR committed
4586
4587
4588
4589
        relatedTarget: this._element
      });
    }

XhmikosR's avatar
XhmikosR committed
4590
    var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, {
XhmikosR's avatar
Dist.  
XhmikosR committed
4591
4592
4593
4594
4595
4596
4597
4598
4599
      relatedTarget: previous
    });

    if (showEvent.defaultPrevented || hideEvent !== null && hideEvent.defaultPrevented) {
      return;
    }

    this._activate(this._element, listElement);

XhmikosR's avatar
XhmikosR committed
4600
    var complete = function complete() {
XhmikosR's avatar
XhmikosR committed
4601
      EventHandler.trigger(previous, EVENT_HIDDEN$3, {
XhmikosR's avatar
XhmikosR committed
4602
        relatedTarget: _this._element
XhmikosR's avatar
Dist.  
XhmikosR committed
4603
      });
XhmikosR's avatar
XhmikosR committed
4604
      EventHandler.trigger(_this._element, EVENT_SHOWN$3, {
XhmikosR's avatar
Dist.  
XhmikosR committed
4605
4606
4607
4608
4609
4610
4611
4612
4613
        relatedTarget: previous
      });
    };

    if (target) {
      this._activate(target, target.parentNode, complete);
    } else {
      complete();
    }
XhmikosR's avatar
XhmikosR committed
4614
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
4615

XhmikosR's avatar
XhmikosR committed
4616
  _proto.dispose = function dispose() {
XhmikosR's avatar
Dist.  
XhmikosR committed
4617
4618
4619
    Data.removeData(this._element, DATA_KEY$9);
    this._element = null;
  } // Private
XhmikosR's avatar
XhmikosR committed
4620
  ;
XhmikosR's avatar
Dist.  
XhmikosR committed
4621

XhmikosR's avatar
XhmikosR committed
4622
4623
  _proto._activate = function _activate(element, container, callback) {
    var _this2 = this;
XhmikosR's avatar
Dist.  
XhmikosR committed
4624

XhmikosR's avatar
XhmikosR committed
4625
    var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? SelectorEngine.find(SELECTOR_ACTIVE_UL, container) : SelectorEngine.children(container, SELECTOR_ACTIVE$1);
XhmikosR's avatar
XhmikosR committed
4626
    var active = activeElements[0];
XhmikosR's avatar
XhmikosR committed
4627
    var isTransitioning = callback && active && active.classList.contains(CLASS_NAME_FADE$3);
XhmikosR's avatar
Dist.  
XhmikosR committed
4628

XhmikosR's avatar
XhmikosR committed
4629
4630
4631
    var complete = function complete() {
      return _this2._transitionComplete(element, active, callback);
    };
XhmikosR's avatar
Dist.  
XhmikosR committed
4632
4633

    if (active && isTransitioning) {
XhmikosR's avatar
XhmikosR committed
4634
      var transitionDuration = getTransitionDurationFromElement(active);
XhmikosR's avatar
XhmikosR committed
4635
      active.classList.remove(CLASS_NAME_SHOW$5);
XhmikosR's avatar
Dist.  
XhmikosR committed
4636
4637
4638
4639
4640
      EventHandler.one(active, TRANSITION_END, complete);
      emulateTransitionEnd(active, transitionDuration);
    } else {
      complete();
    }
XhmikosR's avatar
XhmikosR committed
4641
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
4642

XhmikosR's avatar
XhmikosR committed
4643
  _proto._transitionComplete = function _transitionComplete(element, active, callback) {
XhmikosR's avatar
Dist.  
XhmikosR committed
4644
    if (active) {
XhmikosR's avatar
XhmikosR committed
4645
4646
      active.classList.remove(CLASS_NAME_ACTIVE$3);
      var dropdownChild = SelectorEngine.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD, active.parentNode);
XhmikosR's avatar
Dist.  
XhmikosR committed
4647
4648

      if (dropdownChild) {
XhmikosR's avatar
XhmikosR committed
4649
        dropdownChild.classList.remove(CLASS_NAME_ACTIVE$3);
XhmikosR's avatar
Dist.  
XhmikosR committed
4650
4651
4652
4653
4654
4655
4656
      }

      if (active.getAttribute('role') === 'tab') {
        active.setAttribute('aria-selected', false);
      }
    }

XhmikosR's avatar
XhmikosR committed
4657
    element.classList.add(CLASS_NAME_ACTIVE$3);
XhmikosR's avatar
Dist.  
XhmikosR committed
4658
4659
4660
4661
4662
4663
4664

    if (element.getAttribute('role') === 'tab') {
      element.setAttribute('aria-selected', true);
    }

    reflow(element);

XhmikosR's avatar
XhmikosR committed
4665
4666
    if (element.classList.contains(CLASS_NAME_FADE$3)) {
      element.classList.add(CLASS_NAME_SHOW$5);
XhmikosR's avatar
Dist.  
XhmikosR committed
4667
4668
    }

XhmikosR's avatar
XhmikosR committed
4669
    if (element.parentNode && element.parentNode.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {
XhmikosR's avatar
XhmikosR committed
4670
      var dropdownElement = element.closest(SELECTOR_DROPDOWN$1);
XhmikosR's avatar
Dist.  
XhmikosR committed
4671
4672

      if (dropdownElement) {
XhmikosR's avatar
XhmikosR committed
4673
4674
        SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE$1).forEach(function (dropdown) {
          return dropdown.classList.add(CLASS_NAME_ACTIVE$3);
XhmikosR's avatar
XhmikosR committed
4675
        });
XhmikosR's avatar
Dist.  
XhmikosR committed
4676
4677
4678
4679
4680
4681
4682
4683
4684
      }

      element.setAttribute('aria-expanded', true);
    }

    if (callback) {
      callback();
    }
  } // Static
XhmikosR's avatar
XhmikosR committed
4685
  ;
XhmikosR's avatar
Dist.  
XhmikosR committed
4686

XhmikosR's avatar
XhmikosR committed
4687
  Tab.jQueryInterface = function jQueryInterface(config) {
XhmikosR's avatar
Dist.  
XhmikosR committed
4688
    return this.each(function () {
XhmikosR's avatar
XhmikosR committed
4689
      var data = Data.getData(this, DATA_KEY$9) || new Tab(this);
XhmikosR's avatar
Dist.  
XhmikosR committed
4690
4691
4692

      if (typeof config === 'string') {
        if (typeof data[config] === 'undefined') {
XhmikosR's avatar
XhmikosR committed
4693
          throw new TypeError("No method named \"" + config + "\"");
XhmikosR's avatar
Dist.  
XhmikosR committed
4694
4695
4696
4697
4698
        }

        data[config]();
      }
    });
XhmikosR's avatar
XhmikosR committed
4699
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
4700

XhmikosR's avatar
XhmikosR committed
4701
  Tab.getInstance = function getInstance(element) {
XhmikosR's avatar
Dist.  
XhmikosR committed
4702
    return Data.getData(element, DATA_KEY$9);
XhmikosR's avatar
XhmikosR committed
4703
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
4704

XhmikosR's avatar
XhmikosR committed
4705
4706
4707
4708
4709
4710
4711
4712
4713
  _createClass(Tab, null, [{
    key: "VERSION",
    get: function get() {
      return VERSION$9;
    }
  }]);

  return Tab;
}();
XhmikosR's avatar
Dist.  
XhmikosR committed
4714
4715
4716
4717
4718
4719
4720
/**
 * ------------------------------------------------------------------------
 * Data Api implementation
 * ------------------------------------------------------------------------
 */


XhmikosR's avatar
XhmikosR committed
4721
EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$4, function (event) {
XhmikosR's avatar
Dist.  
XhmikosR committed
4722
  event.preventDefault();
XhmikosR's avatar
XhmikosR committed
4723
  var data = Data.getData(this, DATA_KEY$9) || new Tab(this);
XhmikosR's avatar
Dist.  
XhmikosR committed
4724
4725
4726
4727
4728
4729
  data.show();
});
/**
 * ------------------------------------------------------------------------
 * jQuery
 * ------------------------------------------------------------------------
XhmikosR's avatar
XhmikosR committed
4730
 * add .Tab to jQuery only if jQuery is present
XhmikosR's avatar
Dist.  
XhmikosR committed
4731
4732
 */

XhmikosR's avatar
XhmikosR committed
4733
4734
4735
onDOMContentLoaded(function () {
  var $ = getjQuery();
  /* istanbul ignore if */
4736

XhmikosR's avatar
XhmikosR committed
4737
4738
4739
4740
  if ($) {
    var JQUERY_NO_CONFLICT = $.fn[NAME$9];
    $.fn[NAME$9] = Tab.jQueryInterface;
    $.fn[NAME$9].Constructor = Tab;
XhmikosR's avatar
Dist.  
XhmikosR committed
4741

XhmikosR's avatar
XhmikosR committed
4742
4743
4744
4745
4746
4747
    $.fn[NAME$9].noConflict = function () {
      $.fn[NAME$9] = JQUERY_NO_CONFLICT;
      return Tab.jQueryInterface;
    };
  }
});
XhmikosR's avatar
Dist.  
XhmikosR committed
4748
4749
4750
4751
4752
4753
4754

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

XhmikosR's avatar
XhmikosR committed
4755
var NAME$a = 'toast';
XhmikosR's avatar
XhmikosR committed
4756
var VERSION$a = '5.0.0-alpha3';
XhmikosR's avatar
XhmikosR committed
4757
4758
var DATA_KEY$a = 'bs.toast';
var EVENT_KEY$a = "." + DATA_KEY$a;
XhmikosR's avatar
XhmikosR committed
4759
4760
4761
4762
4763
4764
4765
4766
4767
var EVENT_CLICK_DISMISS$1 = "click.dismiss" + EVENT_KEY$a;
var EVENT_HIDE$4 = "hide" + EVENT_KEY$a;
var EVENT_HIDDEN$4 = "hidden" + EVENT_KEY$a;
var EVENT_SHOW$4 = "show" + EVENT_KEY$a;
var EVENT_SHOWN$4 = "shown" + EVENT_KEY$a;
var CLASS_NAME_FADE$4 = 'fade';
var CLASS_NAME_HIDE = 'hide';
var CLASS_NAME_SHOW$6 = 'show';
var CLASS_NAME_SHOWING = 'showing';
XhmikosR's avatar
XhmikosR committed
4768
var DefaultType$7 = {
XhmikosR's avatar
Dist.  
XhmikosR committed
4769
4770
4771
4772
  animation: 'boolean',
  autohide: 'boolean',
  delay: 'number'
};
XhmikosR's avatar
XhmikosR committed
4773
var Default$7 = {
XhmikosR's avatar
Dist.  
XhmikosR committed
4774
4775
  animation: true,
  autohide: true,
XhmikosR's avatar
XhmikosR committed
4776
  delay: 5000
XhmikosR's avatar
Dist.  
XhmikosR committed
4777
};
XhmikosR's avatar
XhmikosR committed
4778
var SELECTOR_DATA_DISMISS$1 = '[data-dismiss="toast"]';
XhmikosR's avatar
XhmikosR committed
4779
4780
4781
4782
4783
/**
 * ------------------------------------------------------------------------
 * Class Definition
 * ------------------------------------------------------------------------
 */
XhmikosR's avatar
Dist.  
XhmikosR committed
4784

XhmikosR's avatar
XhmikosR committed
4785
var Toast = /*#__PURE__*/function () {
XhmikosR's avatar
XhmikosR committed
4786
  function Toast(element, config) {
XhmikosR's avatar
Dist.  
XhmikosR committed
4787
4788
4789
4790
4791
4792
4793
4794
4795
4796
    this._element = element;
    this._config = this._getConfig(config);
    this._timeout = null;

    this._setListeners();

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


XhmikosR's avatar
XhmikosR committed
4797
  var _proto = Toast.prototype;
XhmikosR's avatar
Dist.  
XhmikosR committed
4798

XhmikosR's avatar
XhmikosR committed
4799
4800
4801
  // Public
  _proto.show = function show() {
    var _this = this;
XhmikosR's avatar
Dist.  
XhmikosR committed
4802

XhmikosR's avatar
XhmikosR committed
4803
    var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4);
Mark Otto's avatar
dist v5    
Mark Otto committed
4804
4805
4806
4807

    if (showEvent.defaultPrevented) {
      return;
    }
XhmikosR's avatar
Dist.  
XhmikosR committed
4808

XhmikosR's avatar
XhmikosR committed
4809
4810
    this._clearTimeout();

XhmikosR's avatar
Dist.  
XhmikosR committed
4811
    if (this._config.animation) {
XhmikosR's avatar
XhmikosR committed
4812
      this._element.classList.add(CLASS_NAME_FADE$4);
XhmikosR's avatar
Dist.  
XhmikosR committed
4813
4814
    }

XhmikosR's avatar
XhmikosR committed
4815
    var complete = function complete() {
XhmikosR's avatar
XhmikosR committed
4816
      _this._element.classList.remove(CLASS_NAME_SHOWING);
XhmikosR's avatar
Dist.  
XhmikosR committed
4817

XhmikosR's avatar
XhmikosR committed
4818
      _this._element.classList.add(CLASS_NAME_SHOW$6);
XhmikosR's avatar
Dist.  
XhmikosR committed
4819

XhmikosR's avatar
XhmikosR committed
4820
      EventHandler.trigger(_this._element, EVENT_SHOWN$4);
XhmikosR's avatar
Dist.  
XhmikosR committed
4821

XhmikosR's avatar
XhmikosR committed
4822
4823
4824
4825
      if (_this._config.autohide) {
        _this._timeout = setTimeout(function () {
          _this.hide();
        }, _this._config.delay);
XhmikosR's avatar
Dist.  
XhmikosR committed
4826
4827
4828
      }
    };

XhmikosR's avatar
XhmikosR committed
4829
    this._element.classList.remove(CLASS_NAME_HIDE);
XhmikosR's avatar
Dist.  
XhmikosR committed
4830

4831
4832
    reflow(this._element);

XhmikosR's avatar
XhmikosR committed
4833
    this._element.classList.add(CLASS_NAME_SHOWING);
XhmikosR's avatar
Dist.  
XhmikosR committed
4834
4835

    if (this._config.animation) {
XhmikosR's avatar
XhmikosR committed
4836
      var transitionDuration = getTransitionDurationFromElement(this._element);
XhmikosR's avatar
Dist.  
XhmikosR committed
4837
4838
4839
4840
4841
      EventHandler.one(this._element, TRANSITION_END, complete);
      emulateTransitionEnd(this._element, transitionDuration);
    } else {
      complete();
    }
XhmikosR's avatar
XhmikosR committed
4842
4843
4844
4845
  };

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

XhmikosR's avatar
XhmikosR committed
4847
    if (!this._element.classList.contains(CLASS_NAME_SHOW$6)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
4848
4849
4850
      return;
    }

XhmikosR's avatar
XhmikosR committed
4851
    var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4);
Mark Otto's avatar
dist v5    
Mark Otto committed
4852
4853
4854
4855

    if (hideEvent.defaultPrevented) {
      return;
    }
XhmikosR's avatar
Dist.  
XhmikosR committed
4856

XhmikosR's avatar
XhmikosR committed
4857
    var complete = function complete() {
XhmikosR's avatar
XhmikosR committed
4858
      _this2._element.classList.add(CLASS_NAME_HIDE);
XhmikosR's avatar
XhmikosR committed
4859

XhmikosR's avatar
XhmikosR committed
4860
      EventHandler.trigger(_this2._element, EVENT_HIDDEN$4);
XhmikosR's avatar
XhmikosR committed
4861
4862
    };

XhmikosR's avatar
XhmikosR committed
4863
    this._element.classList.remove(CLASS_NAME_SHOW$6);
XhmikosR's avatar
XhmikosR committed
4864
4865
4866
4867
4868

    if (this._config.animation) {
      var transitionDuration = getTransitionDurationFromElement(this._element);
      EventHandler.one(this._element, TRANSITION_END, complete);
      emulateTransitionEnd(this._element, transitionDuration);
XhmikosR's avatar
Dist.  
XhmikosR committed
4869
    } else {
XhmikosR's avatar
XhmikosR committed
4870
      complete();
XhmikosR's avatar
Dist.  
XhmikosR committed
4871
    }
XhmikosR's avatar
XhmikosR committed
4872
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
4873

XhmikosR's avatar
XhmikosR committed
4874
  _proto.dispose = function dispose() {
XhmikosR's avatar
XhmikosR committed
4875
    this._clearTimeout();
XhmikosR's avatar
Dist.  
XhmikosR committed
4876

XhmikosR's avatar
XhmikosR committed
4877
4878
    if (this._element.classList.contains(CLASS_NAME_SHOW$6)) {
      this._element.classList.remove(CLASS_NAME_SHOW$6);
XhmikosR's avatar
Dist.  
XhmikosR committed
4879
4880
    }

XhmikosR's avatar
XhmikosR committed
4881
    EventHandler.off(this._element, EVENT_CLICK_DISMISS$1);
XhmikosR's avatar
Dist.  
XhmikosR committed
4882
4883
4884
4885
    Data.removeData(this._element, DATA_KEY$a);
    this._element = null;
    this._config = null;
  } // Private
XhmikosR's avatar
XhmikosR committed
4886
  ;
XhmikosR's avatar
Dist.  
XhmikosR committed
4887

XhmikosR's avatar
XhmikosR committed
4888
  _proto._getConfig = function _getConfig(config) {
XhmikosR's avatar
XhmikosR committed
4889
    config = _extends({}, Default$7, Manipulator.getDataAttributes(this._element), typeof config === 'object' && config ? config : {});
XhmikosR's avatar
Dist.  
XhmikosR committed
4890
4891
    typeCheckConfig(NAME$a, config, this.constructor.DefaultType);
    return config;
XhmikosR's avatar
XhmikosR committed
4892
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
4893

XhmikosR's avatar
XhmikosR committed
4894
4895
  _proto._setListeners = function _setListeners() {
    var _this3 = this;
XhmikosR's avatar
Dist.  
XhmikosR committed
4896

XhmikosR's avatar
XhmikosR committed
4897
    EventHandler.on(this._element, EVENT_CLICK_DISMISS$1, SELECTOR_DATA_DISMISS$1, function () {
XhmikosR's avatar
XhmikosR committed
4898
4899
      return _this3.hide();
    });
XhmikosR's avatar
XhmikosR committed
4900
4901
4902
4903
4904
  };

  _proto._clearTimeout = function _clearTimeout() {
    clearTimeout(this._timeout);
    this._timeout = null;
XhmikosR's avatar
Dist.  
XhmikosR committed
4905
  } // Static
XhmikosR's avatar
XhmikosR committed
4906
  ;
XhmikosR's avatar
Dist.  
XhmikosR committed
4907

XhmikosR's avatar
XhmikosR committed
4908
  Toast.jQueryInterface = function jQueryInterface(config) {
XhmikosR's avatar
Dist.  
XhmikosR committed
4909
    return this.each(function () {
XhmikosR's avatar
XhmikosR committed
4910
      var data = Data.getData(this, DATA_KEY$a);
XhmikosR's avatar
Dist.  
XhmikosR committed
4911

XhmikosR's avatar
XhmikosR committed
4912
      var _config = typeof config === 'object' && config;
XhmikosR's avatar
Dist.  
XhmikosR committed
4913
4914
4915
4916
4917
4918
4919

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

      if (typeof config === 'string') {
        if (typeof data[config] === 'undefined') {
XhmikosR's avatar
XhmikosR committed
4920
          throw new TypeError("No method named \"" + config + "\"");
XhmikosR's avatar
Dist.  
XhmikosR committed
4921
4922
4923
4924
4925
        }

        data[config](this);
      }
    });
XhmikosR's avatar
XhmikosR committed
4926
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
4927

XhmikosR's avatar
XhmikosR committed
4928
  Toast.getInstance = function getInstance(element) {
XhmikosR's avatar
Dist.  
XhmikosR committed
4929
    return Data.getData(element, DATA_KEY$a);
XhmikosR's avatar
XhmikosR committed
4930
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
4931

XhmikosR's avatar
XhmikosR committed
4932
4933
4934
4935
4936
4937
4938
4939
4940
4941
4942
4943
4944
4945
4946
4947
4948
4949
4950
  _createClass(Toast, null, [{
    key: "VERSION",
    get: function get() {
      return VERSION$a;
    }
  }, {
    key: "DefaultType",
    get: function get() {
      return DefaultType$7;
    }
  }, {
    key: "Default",
    get: function get() {
      return Default$7;
    }
  }]);

  return Toast;
}();
XhmikosR's avatar
Dist.  
XhmikosR committed
4951
4952
4953
4954
/**
 * ------------------------------------------------------------------------
 * jQuery
 * ------------------------------------------------------------------------
XhmikosR's avatar
XhmikosR committed
4955
 * add .Toast to jQuery only if jQuery is present
XhmikosR's avatar
Dist.  
XhmikosR committed
4956
4957
 */

4958

XhmikosR's avatar
XhmikosR committed
4959
4960
4961
onDOMContentLoaded(function () {
  var $ = getjQuery();
  /* istanbul ignore if */
XhmikosR's avatar
Dist.  
XhmikosR committed
4962

XhmikosR's avatar
XhmikosR committed
4963
4964
4965
4966
4967
4968
4969
4970
4971
4972
4973
  if ($) {
    var JQUERY_NO_CONFLICT = $.fn[NAME$a];
    $.fn[NAME$a] = Toast.jQueryInterface;
    $.fn[NAME$a].Constructor = Toast;

    $.fn[NAME$a].noConflict = function () {
      $.fn[NAME$a] = JQUERY_NO_CONFLICT;
      return Toast.jQueryInterface;
    };
  }
});
XhmikosR's avatar
Dist.  
XhmikosR committed
4974
4975
4976

export { Alert, Button, Carousel, Collapse, Dropdown, Modal, Popover, ScrollSpy, Tab, Toast, Tooltip };
//# sourceMappingURL=bootstrap.esm.js.map