bootstrap 4.2.1 → 4.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +15 -1
  3. data/CHANGELOG.md +2 -14
  4. data/README.md +1 -1
  5. data/assets/javascripts/bootstrap-sprockets.js +7 -7
  6. data/assets/javascripts/bootstrap.js +1054 -893
  7. data/assets/javascripts/bootstrap.min.js +4 -4
  8. data/assets/javascripts/bootstrap/alert.js +35 -57
  9. data/assets/javascripts/bootstrap/button.js +95 -69
  10. data/assets/javascripts/bootstrap/carousel.js +109 -165
  11. data/assets/javascripts/bootstrap/collapse.js +58 -114
  12. data/assets/javascripts/bootstrap/dropdown.js +138 -191
  13. data/assets/javascripts/bootstrap/modal.js +170 -176
  14. data/assets/javascripts/bootstrap/popover.js +31 -87
  15. data/assets/javascripts/bootstrap/scrollspy.js +54 -114
  16. data/assets/javascripts/bootstrap/tab.js +62 -81
  17. data/assets/javascripts/bootstrap/toast.js +80 -117
  18. data/assets/javascripts/bootstrap/tooltip.js +269 -157
  19. data/assets/javascripts/bootstrap/util.js +34 -9
  20. data/assets/stylesheets/_bootstrap-grid.scss +4 -4
  21. data/assets/stylesheets/_bootstrap-reboot.scss +4 -4
  22. data/assets/stylesheets/_bootstrap.scss +4 -4
  23. data/assets/stylesheets/bootstrap/_badge.scss +3 -2
  24. data/assets/stylesheets/bootstrap/_breadcrumb.scss +4 -1
  25. data/assets/stylesheets/bootstrap/_button-group.scss +1 -1
  26. data/assets/stylesheets/bootstrap/_buttons.scss +13 -11
  27. data/assets/stylesheets/bootstrap/_card.scss +49 -73
  28. data/assets/stylesheets/bootstrap/_carousel.scss +7 -8
  29. data/assets/stylesheets/bootstrap/_close.scss +3 -7
  30. data/assets/stylesheets/bootstrap/_code.scss +6 -6
  31. data/assets/stylesheets/bootstrap/_custom-forms.scss +40 -24
  32. data/assets/stylesheets/bootstrap/_dropdown.scss +24 -23
  33. data/assets/stylesheets/bootstrap/_forms.scss +38 -25
  34. data/assets/stylesheets/bootstrap/_functions.scss +62 -7
  35. data/assets/stylesheets/bootstrap/_grid.scss +32 -11
  36. data/assets/stylesheets/bootstrap/_images.scss +3 -3
  37. data/assets/stylesheets/bootstrap/_input-group.scss +4 -5
  38. data/assets/stylesheets/bootstrap/_jumbotron.scss +1 -0
  39. data/assets/stylesheets/bootstrap/_list-group.scss +62 -29
  40. data/assets/stylesheets/bootstrap/_mixins.scss +9 -3
  41. data/assets/stylesheets/bootstrap/_modal.scss +65 -11
  42. data/assets/stylesheets/bootstrap/_nav.scss +6 -3
  43. data/assets/stylesheets/bootstrap/_navbar.scss +48 -23
  44. data/assets/stylesheets/bootstrap/_pagination.scss +3 -7
  45. data/assets/stylesheets/bootstrap/_popover.scss +54 -67
  46. data/assets/stylesheets/bootstrap/_print.scss +3 -3
  47. data/assets/stylesheets/bootstrap/_progress.scss +19 -6
  48. data/assets/stylesheets/bootstrap/_reboot.scss +51 -33
  49. data/assets/stylesheets/bootstrap/_root.scss +1 -0
  50. data/assets/stylesheets/bootstrap/_spinners.scss +3 -0
  51. data/assets/stylesheets/bootstrap/_tables.scss +6 -8
  52. data/assets/stylesheets/bootstrap/_toasts.scss +7 -4
  53. data/assets/stylesheets/bootstrap/_tooltip.scss +1 -1
  54. data/assets/stylesheets/bootstrap/_transitions.scss +0 -2
  55. data/assets/stylesheets/bootstrap/_type.scss +17 -17
  56. data/assets/stylesheets/bootstrap/_utilities.scss +2 -0
  57. data/assets/stylesheets/bootstrap/_variables.scss +168 -119
  58. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +5 -3
  59. data/assets/stylesheets/bootstrap/mixins/_badge.scss +7 -1
  60. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +51 -10
  61. data/assets/stylesheets/bootstrap/mixins/_box-shadow.scss +16 -1
  62. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +14 -15
  63. data/assets/stylesheets/bootstrap/mixins/_caret.scss +12 -12
  64. data/assets/stylesheets/bootstrap/mixins/_deprecate.scss +10 -0
  65. data/assets/stylesheets/bootstrap/mixins/_float.scss +6 -3
  66. data/assets/stylesheets/bootstrap/mixins/_forms.scss +40 -60
  67. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +29 -15
  68. data/assets/stylesheets/bootstrap/mixins/_grid.scss +25 -7
  69. data/assets/stylesheets/bootstrap/mixins/_hover.scss +4 -4
  70. data/assets/stylesheets/bootstrap/mixins/_image.scss +3 -3
  71. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +1 -1
  72. data/assets/stylesheets/bootstrap/mixins/_lists.scss +1 -1
  73. data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +2 -1
  74. data/assets/stylesheets/bootstrap/mixins/_pagination.scss +1 -1
  75. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +2 -2
  76. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +3 -2
  77. data/assets/stylesheets/bootstrap/mixins/_size.scss +1 -0
  78. data/assets/stylesheets/bootstrap/mixins/_table-row.scss +1 -1
  79. data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +7 -4
  80. data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +1 -3
  81. data/assets/stylesheets/bootstrap/mixins/_transition.scss +17 -7
  82. data/assets/stylesheets/bootstrap/mixins/_visibility.scss +1 -0
  83. data/assets/stylesheets/bootstrap/utilities/_background.scss +2 -2
  84. data/assets/stylesheets/bootstrap/utilities/_borders.scss +13 -1
  85. data/assets/stylesheets/bootstrap/utilities/_display.scss +6 -18
  86. data/assets/stylesheets/bootstrap/utilities/_float.scss +5 -3
  87. data/assets/stylesheets/bootstrap/utilities/_interactions.scss +5 -0
  88. data/assets/stylesheets/bootstrap/utilities/_stretched-link.scss +19 -0
  89. data/assets/stylesheets/bootstrap/utilities/_text.scss +8 -3
  90. data/assets/stylesheets/bootstrap/utilities/_visibility.scss +4 -2
  91. data/assets/stylesheets/bootstrap/vendor/_rfs.scss +204 -0
  92. data/bootstrap.gemspec +1 -1
  93. data/lib/bootstrap/version.rb +2 -2
  94. data/tasks/updater/js.rb +1 -1
  95. data/tasks/updater/network.rb +2 -2
  96. data/test/dummy_rails/app/assets/config/manifest.js +3 -0
  97. data/test/dummy_rails/app/assets/stylesheets/.browserslistrc +1 -0
  98. data/test/gemfiles/rails_6_0.gemfile +7 -0
  99. data/test/support/dummy_rails_integration.rb +3 -1
  100. data/test/test_helper.rb +18 -13
  101. metadata +14 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4c5064e9852b6cfec7df1033d5b2cc94342799a3c53bc278e6552756b6f5d0e9
4
- data.tar.gz: 4e3704e4ed47651c051af561b538982f63c678f2fbd203c4eb253c0284e70b79
3
+ metadata.gz: 2171d8ce117aff320aea2f3204a285ad130b4c2e78062fb0754c1b0696efea6d
4
+ data.tar.gz: df1049fb4cf2bba189cc638e1648fdc0853f83ad60a98442179bfbee3d43477b
5
5
  SHA512:
6
- metadata.gz: 30575258691fe670f36446c9f4f5ba6740fc912f4bb30d46be967b0e9c5ec11db6540a0d05931095b6f914b76ecc5d3199472cdde6e91358f2abd54aa7e3c856
7
- data.tar.gz: f7c8f39173cbef39ee524dc6ccc01ff00b568f64cbf91d0057ad4cc269641a12dde316c9dd2b2d54b34cd85952feb31bb3e1b5c554117aaefd4c9869570de94e
6
+ metadata.gz: 2405404e4053bb1965a86ada95ad1c87f2d0b13ada60461ee8c338a0ae36feae54135acf84f5c20ffacd9dfd58b7c75ff2baed5416d785f062ae82112ee26dfd
7
+ data.tar.gz: 40a91880121bda2ecc860ca8ff4a23785526e0d918d0b968dd027f68350ad9e7001571455fa48eeef27b3d8d0782a55c9edbdc38d15fec16a500303e792b4153
@@ -1,11 +1,25 @@
1
1
  language: ruby
2
2
  sudo: false
3
+ addons:
4
+ apt:
5
+ packages:
6
+ - chromium-browser
3
7
  rvm:
4
- - 2.3.8
8
+ - 2.5
9
+ - 2.6
10
+ - 2.7
11
+
5
12
  gemfile:
6
13
  - test/gemfiles/rails_4_2.gemfile
7
14
  - test/gemfiles/rails_5_0.gemfile
8
15
  - test/gemfiles/rails_5_1.gemfile
16
+ - test/gemfiles/rails_6_0.gemfile
17
+
18
+ jobs:
19
+ exclude:
20
+ rvm: 2.7
21
+ gemfile: test/gemfiles/rails_4_2.gemfile
22
+
9
23
  cache: bundler
10
24
  bundler_args: --path ../../vendor/bundle --without debug
11
25
  notifications:
@@ -6,21 +6,9 @@ The changelog only includes changes specific to the RubyGem.
6
6
  The Bootstrap framework changes can be found in [the Releases section of twbs/bootstrap](https://github.com/twbs/bootstrap/releases).
7
7
  Release announcement posts on [the official Bootstrap blog](http://blog.getbootstrap.com) contain summaries of the most noteworthy changes made in each release of Bootstrap.
8
8
 
9
- # 4.1.1
9
+ # 4.2.1
10
10
 
11
- No gem-specific changes.
12
-
13
- # 4.1.0
14
-
15
- No gem-specific changes.
16
-
17
- # 4.0.0
18
-
19
- No gem-specific changes.
20
-
21
- # 4.0.0.beta3
22
-
23
- No gem-specific changes.
11
+ * Bootstrap rubygem now depends on SassC instead of Sass.
24
12
 
25
13
  # 4.0.0.beta2.1
26
14
 
data/README.md CHANGED
@@ -17,7 +17,7 @@ Please see the appropriate guide for your environment of choice:
17
17
  Add `bootstrap` to your Gemfile:
18
18
 
19
19
  ```ruby
20
- gem 'bootstrap', '~> 4.2.1'
20
+ gem 'bootstrap', '~> 4.5.2'
21
21
  ```
22
22
 
23
23
  Ensure that `sprockets-rails` is at least v2.3.2.
@@ -1,12 +1,12 @@
1
1
  //= require ./bootstrap/util
2
- //= require ./bootstrap/scrollspy
3
- //= require ./bootstrap/button
4
- //= require ./bootstrap/collapse
5
- //= require ./bootstrap/modal
6
- //= require ./bootstrap/dropdown
7
- //= require ./bootstrap/carousel
8
- //= require ./bootstrap/toast
9
2
  //= require ./bootstrap/tooltip
3
+ //= require ./bootstrap/modal
10
4
  //= require ./bootstrap/popover
11
5
  //= require ./bootstrap/alert
6
+ //= require ./bootstrap/dropdown
7
+ //= require ./bootstrap/collapse
12
8
  //= require ./bootstrap/tab
9
+ //= require ./bootstrap/carousel
10
+ //= require ./bootstrap/toast
11
+ //= require ./bootstrap/button
12
+ //= require ./bootstrap/scrollspy
@@ -1,16 +1,16 @@
1
1
  /*!
2
- * Bootstrap v4.2.1 (https://getbootstrap.com/)
3
- * Copyright 2011-2018 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2
+ * Bootstrap v4.5.2 (https://getbootstrap.com/)
3
+ * Copyright 2011-2020 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
5
  */
6
6
  (function (global, factory) {
7
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('popper.js'), require('jquery')) :
8
- typeof define === 'function' && define.amd ? define(['exports', 'popper.js', 'jquery'], factory) :
9
- (factory((global.bootstrap = {}),global.Popper,global.jQuery));
10
- }(this, (function (exports,Popper,$) { 'use strict';
7
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery'), require('popper.js')) :
8
+ typeof define === 'function' && define.amd ? define(['exports', 'jquery', 'popper.js'], factory) :
9
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.bootstrap = {}, global.jQuery, global.Popper));
10
+ }(this, (function (exports, $, Popper) { 'use strict';
11
11
 
12
- Popper = Popper && Popper.hasOwnProperty('default') ? Popper['default'] : Popper;
13
- $ = $ && $.hasOwnProperty('default') ? $['default'] : $;
12
+ $ = $ && Object.prototype.hasOwnProperty.call($, 'default') ? $['default'] : $;
13
+ Popper = Popper && Object.prototype.hasOwnProperty.call(Popper, 'default') ? Popper['default'] : Popper;
14
14
 
15
15
  function _defineProperties(target, props) {
16
16
  for (var i = 0; i < props.length; i++) {
@@ -28,38 +28,22 @@
28
28
  return Constructor;
29
29
  }
30
30
 
31
- function _defineProperty(obj, key, value) {
32
- if (key in obj) {
33
- Object.defineProperty(obj, key, {
34
- value: value,
35
- enumerable: true,
36
- configurable: true,
37
- writable: true
38
- });
39
- } else {
40
- obj[key] = value;
41
- }
31
+ function _extends() {
32
+ _extends = Object.assign || function (target) {
33
+ for (var i = 1; i < arguments.length; i++) {
34
+ var source = arguments[i];
42
35
 
43
- return obj;
44
- }
45
-
46
- function _objectSpread(target) {
47
- for (var i = 1; i < arguments.length; i++) {
48
- var source = arguments[i] != null ? arguments[i] : {};
49
- var ownKeys = Object.keys(source);
50
-
51
- if (typeof Object.getOwnPropertySymbols === 'function') {
52
- ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
53
- return Object.getOwnPropertyDescriptor(source, sym).enumerable;
54
- }));
36
+ for (var key in source) {
37
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
38
+ target[key] = source[key];
39
+ }
40
+ }
55
41
  }
56
42
 
57
- ownKeys.forEach(function (key) {
58
- _defineProperty(target, key, source[key]);
59
- });
60
- }
43
+ return target;
44
+ };
61
45
 
62
- return target;
46
+ return _extends.apply(this, arguments);
63
47
  }
64
48
 
65
49
  function _inheritsLoose(subClass, superClass) {
@@ -70,8 +54,8 @@
70
54
 
71
55
  /**
72
56
  * --------------------------------------------------------------------------
73
- * Bootstrap (v4.2.1): util.js
74
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
57
+ * Bootstrap (v4.5.2): util.js
58
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
75
59
  * --------------------------------------------------------------------------
76
60
  */
77
61
  /**
@@ -85,6 +69,10 @@
85
69
  var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
86
70
 
87
71
  function toType(obj) {
72
+ if (obj === null || typeof obj === 'undefined') {
73
+ return "" + obj;
74
+ }
75
+
88
76
  return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
89
77
  }
90
78
 
@@ -97,7 +85,7 @@
97
85
  return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params
98
86
  }
99
87
 
100
- return undefined; // eslint-disable-line no-undefined
88
+ return undefined;
101
89
  }
102
90
  };
103
91
  }
@@ -146,7 +134,11 @@
146
134
  selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : '';
147
135
  }
148
136
 
149
- return selector && document.querySelector(selector) ? selector : null;
137
+ try {
138
+ return document.querySelector(selector) ? selector : null;
139
+ } catch (err) {
140
+ return null;
141
+ }
150
142
  },
151
143
  getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {
152
144
  if (!element) {
@@ -215,8 +207,25 @@
215
207
  }
216
208
 
217
209
  return Util.findShadowRoot(element.parentNode);
210
+ },
211
+ jQueryDetection: function jQueryDetection() {
212
+ if (typeof $ === 'undefined') {
213
+ throw new TypeError('Bootstrap\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\'s JavaScript.');
214
+ }
215
+
216
+ var version = $.fn.jquery.split(' ')[0].split('.');
217
+ var minMajor = 1;
218
+ var ltMajor = 2;
219
+ var minMinor = 9;
220
+ var minPatch = 1;
221
+ var maxMajor = 4;
222
+
223
+ if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {
224
+ throw new Error('Bootstrap\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');
225
+ }
218
226
  }
219
227
  };
228
+ Util.jQueryDetection();
220
229
  setTransitionEndSupport();
221
230
 
222
231
  /**
@@ -226,34 +235,25 @@
226
235
  */
227
236
 
228
237
  var NAME = 'alert';
229
- var VERSION = '4.2.1';
238
+ var VERSION = '4.5.2';
230
239
  var DATA_KEY = 'bs.alert';
231
240
  var EVENT_KEY = "." + DATA_KEY;
232
241
  var DATA_API_KEY = '.data-api';
233
242
  var JQUERY_NO_CONFLICT = $.fn[NAME];
234
- var Selector = {
235
- DISMISS: '[data-dismiss="alert"]'
236
- };
237
- var Event = {
238
- CLOSE: "close" + EVENT_KEY,
239
- CLOSED: "closed" + EVENT_KEY,
240
- CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
241
- };
242
- var ClassName = {
243
- ALERT: 'alert',
244
- FADE: 'fade',
245
- SHOW: 'show'
246
- /**
247
- * ------------------------------------------------------------------------
248
- * Class Definition
249
- * ------------------------------------------------------------------------
250
- */
251
-
252
- };
243
+ var SELECTOR_DISMISS = '[data-dismiss="alert"]';
244
+ var EVENT_CLOSE = "close" + EVENT_KEY;
245
+ var EVENT_CLOSED = "closed" + EVENT_KEY;
246
+ var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
247
+ var CLASS_NAME_ALERT = 'alert';
248
+ var CLASS_NAME_FADE = 'fade';
249
+ var CLASS_NAME_SHOW = 'show';
250
+ /**
251
+ * ------------------------------------------------------------------------
252
+ * Class Definition
253
+ * ------------------------------------------------------------------------
254
+ */
253
255
 
254
- var Alert =
255
- /*#__PURE__*/
256
- function () {
256
+ var Alert = /*#__PURE__*/function () {
257
257
  function Alert(element) {
258
258
  this._element = element;
259
259
  } // Getters
@@ -281,8 +281,8 @@
281
281
  _proto.dispose = function dispose() {
282
282
  $.removeData(this._element, DATA_KEY);
283
283
  this._element = null;
284
- }; // Private
285
-
284
+ } // Private
285
+ ;
286
286
 
287
287
  _proto._getRootElement = function _getRootElement(element) {
288
288
  var selector = Util.getSelectorFromElement(element);
@@ -293,14 +293,14 @@
293
293
  }
294
294
 
295
295
  if (!parent) {
296
- parent = $(element).closest("." + ClassName.ALERT)[0];
296
+ parent = $(element).closest("." + CLASS_NAME_ALERT)[0];
297
297
  }
298
298
 
299
299
  return parent;
300
300
  };
301
301
 
302
302
  _proto._triggerCloseEvent = function _triggerCloseEvent(element) {
303
- var closeEvent = $.Event(Event.CLOSE);
303
+ var closeEvent = $.Event(EVENT_CLOSE);
304
304
  $(element).trigger(closeEvent);
305
305
  return closeEvent;
306
306
  };
@@ -308,9 +308,9 @@
308
308
  _proto._removeElement = function _removeElement(element) {
309
309
  var _this = this;
310
310
 
311
- $(element).removeClass(ClassName.SHOW);
311
+ $(element).removeClass(CLASS_NAME_SHOW);
312
312
 
313
- if (!$(element).hasClass(ClassName.FADE)) {
313
+ if (!$(element).hasClass(CLASS_NAME_FADE)) {
314
314
  this._destroyElement(element);
315
315
 
316
316
  return;
@@ -323,9 +323,9 @@
323
323
  };
324
324
 
325
325
  _proto._destroyElement = function _destroyElement(element) {
326
- $(element).detach().trigger(Event.CLOSED).remove();
327
- }; // Static
328
-
326
+ $(element).detach().trigger(EVENT_CLOSED).remove();
327
+ } // Static
328
+ ;
329
329
 
330
330
  Alert._jQueryInterface = function _jQueryInterface(config) {
331
331
  return this.each(function () {
@@ -369,7 +369,7 @@
369
369
  */
370
370
 
371
371
 
372
- $(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert()));
372
+ $(document).on(EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert._handleDismiss(new Alert()));
373
373
  /**
374
374
  * ------------------------------------------------------------------------
375
375
  * jQuery
@@ -391,37 +391,31 @@
391
391
  */
392
392
 
393
393
  var NAME$1 = 'button';
394
- var VERSION$1 = '4.2.1';
394
+ var VERSION$1 = '4.5.2';
395
395
  var DATA_KEY$1 = 'bs.button';
396
396
  var EVENT_KEY$1 = "." + DATA_KEY$1;
397
397
  var DATA_API_KEY$1 = '.data-api';
398
398
  var JQUERY_NO_CONFLICT$1 = $.fn[NAME$1];
399
- var ClassName$1 = {
400
- ACTIVE: 'active',
401
- BUTTON: 'btn',
402
- FOCUS: 'focus'
403
- };
404
- var Selector$1 = {
405
- DATA_TOGGLE_CARROT: '[data-toggle^="button"]',
406
- DATA_TOGGLE: '[data-toggle="buttons"]',
407
- INPUT: 'input:not([type="hidden"])',
408
- ACTIVE: '.active',
409
- BUTTON: '.btn'
410
- };
411
- var Event$1 = {
412
- CLICK_DATA_API: "click" + EVENT_KEY$1 + DATA_API_KEY$1,
413
- FOCUS_BLUR_DATA_API: "focus" + EVENT_KEY$1 + DATA_API_KEY$1 + " " + ("blur" + EVENT_KEY$1 + DATA_API_KEY$1)
414
- /**
415
- * ------------------------------------------------------------------------
416
- * Class Definition
417
- * ------------------------------------------------------------------------
418
- */
419
-
420
- };
399
+ var CLASS_NAME_ACTIVE = 'active';
400
+ var CLASS_NAME_BUTTON = 'btn';
401
+ var CLASS_NAME_FOCUS = 'focus';
402
+ var SELECTOR_DATA_TOGGLE_CARROT = '[data-toggle^="button"]';
403
+ var SELECTOR_DATA_TOGGLES = '[data-toggle="buttons"]';
404
+ var SELECTOR_DATA_TOGGLE = '[data-toggle="button"]';
405
+ var SELECTOR_DATA_TOGGLES_BUTTONS = '[data-toggle="buttons"] .btn';
406
+ var SELECTOR_INPUT = 'input:not([type="hidden"])';
407
+ var SELECTOR_ACTIVE = '.active';
408
+ var SELECTOR_BUTTON = '.btn';
409
+ var EVENT_CLICK_DATA_API$1 = "click" + EVENT_KEY$1 + DATA_API_KEY$1;
410
+ var EVENT_FOCUS_BLUR_DATA_API = "focus" + EVENT_KEY$1 + DATA_API_KEY$1 + " " + ("blur" + EVENT_KEY$1 + DATA_API_KEY$1);
411
+ var EVENT_LOAD_DATA_API = "load" + EVENT_KEY$1 + DATA_API_KEY$1;
412
+ /**
413
+ * ------------------------------------------------------------------------
414
+ * Class Definition
415
+ * ------------------------------------------------------------------------
416
+ */
421
417
 
422
- var Button =
423
- /*#__PURE__*/
424
- function () {
418
+ var Button = /*#__PURE__*/function () {
425
419
  function Button(element) {
426
420
  this._element = element;
427
421
  } // Getters
@@ -433,30 +427,30 @@
433
427
  _proto.toggle = function toggle() {
434
428
  var triggerChangeEvent = true;
435
429
  var addAriaPressed = true;
436
- var rootElement = $(this._element).closest(Selector$1.DATA_TOGGLE)[0];
430
+ var rootElement = $(this._element).closest(SELECTOR_DATA_TOGGLES)[0];
437
431
 
438
432
  if (rootElement) {
439
- var input = this._element.querySelector(Selector$1.INPUT);
433
+ var input = this._element.querySelector(SELECTOR_INPUT);
440
434
 
441
435
  if (input) {
442
436
  if (input.type === 'radio') {
443
- if (input.checked && this._element.classList.contains(ClassName$1.ACTIVE)) {
437
+ if (input.checked && this._element.classList.contains(CLASS_NAME_ACTIVE)) {
444
438
  triggerChangeEvent = false;
445
439
  } else {
446
- var activeElement = rootElement.querySelector(Selector$1.ACTIVE);
440
+ var activeElement = rootElement.querySelector(SELECTOR_ACTIVE);
447
441
 
448
442
  if (activeElement) {
449
- $(activeElement).removeClass(ClassName$1.ACTIVE);
443
+ $(activeElement).removeClass(CLASS_NAME_ACTIVE);
450
444
  }
451
445
  }
452
446
  }
453
447
 
454
448
  if (triggerChangeEvent) {
455
- if (input.hasAttribute('disabled') || rootElement.hasAttribute('disabled') || input.classList.contains('disabled') || rootElement.classList.contains('disabled')) {
456
- return;
449
+ // if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input
450
+ if (input.type === 'checkbox' || input.type === 'radio') {
451
+ input.checked = !this._element.classList.contains(CLASS_NAME_ACTIVE);
457
452
  }
458
453
 
459
- input.checked = !this._element.classList.contains(ClassName$1.ACTIVE);
460
454
  $(input).trigger('change');
461
455
  }
462
456
 
@@ -465,20 +459,22 @@
465
459
  }
466
460
  }
467
461
 
468
- if (addAriaPressed) {
469
- this._element.setAttribute('aria-pressed', !this._element.classList.contains(ClassName$1.ACTIVE));
470
- }
462
+ if (!(this._element.hasAttribute('disabled') || this._element.classList.contains('disabled'))) {
463
+ if (addAriaPressed) {
464
+ this._element.setAttribute('aria-pressed', !this._element.classList.contains(CLASS_NAME_ACTIVE));
465
+ }
471
466
 
472
- if (triggerChangeEvent) {
473
- $(this._element).toggleClass(ClassName$1.ACTIVE);
467
+ if (triggerChangeEvent) {
468
+ $(this._element).toggleClass(CLASS_NAME_ACTIVE);
469
+ }
474
470
  }
475
471
  };
476
472
 
477
473
  _proto.dispose = function dispose() {
478
474
  $.removeData(this._element, DATA_KEY$1);
479
475
  this._element = null;
480
- }; // Static
481
-
476
+ } // Static
477
+ ;
482
478
 
483
479
  Button._jQueryInterface = function _jQueryInterface(config) {
484
480
  return this.each(function () {
@@ -511,18 +507,61 @@
511
507
  */
512
508
 
513
509
 
514
- $(document).on(Event$1.CLICK_DATA_API, Selector$1.DATA_TOGGLE_CARROT, function (event) {
515
- event.preventDefault();
510
+ $(document).on(EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE_CARROT, function (event) {
516
511
  var button = event.target;
512
+ var initialButton = button;
517
513
 
518
- if (!$(button).hasClass(ClassName$1.BUTTON)) {
519
- button = $(button).closest(Selector$1.BUTTON);
514
+ if (!$(button).hasClass(CLASS_NAME_BUTTON)) {
515
+ button = $(button).closest(SELECTOR_BUTTON)[0];
520
516
  }
521
517
 
522
- Button._jQueryInterface.call($(button), 'toggle');
523
- }).on(Event$1.FOCUS_BLUR_DATA_API, Selector$1.DATA_TOGGLE_CARROT, function (event) {
524
- var button = $(event.target).closest(Selector$1.BUTTON)[0];
525
- $(button).toggleClass(ClassName$1.FOCUS, /^focus(in)?$/.test(event.type));
518
+ if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) {
519
+ event.preventDefault(); // work around Firefox bug #1540995
520
+ } else {
521
+ var inputBtn = button.querySelector(SELECTOR_INPUT);
522
+
523
+ if (inputBtn && (inputBtn.hasAttribute('disabled') || inputBtn.classList.contains('disabled'))) {
524
+ event.preventDefault(); // work around Firefox bug #1540995
525
+
526
+ return;
527
+ }
528
+
529
+ if (initialButton.tagName !== 'LABEL' || inputBtn && inputBtn.type !== 'checkbox') {
530
+ Button._jQueryInterface.call($(button), 'toggle');
531
+ }
532
+ }
533
+ }).on(EVENT_FOCUS_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function (event) {
534
+ var button = $(event.target).closest(SELECTOR_BUTTON)[0];
535
+ $(button).toggleClass(CLASS_NAME_FOCUS, /^focus(in)?$/.test(event.type));
536
+ });
537
+ $(window).on(EVENT_LOAD_DATA_API, function () {
538
+ // ensure correct active class is set to match the controls' actual values/states
539
+ // find all checkboxes/readio buttons inside data-toggle groups
540
+ var buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS));
541
+
542
+ for (var i = 0, len = buttons.length; i < len; i++) {
543
+ var button = buttons[i];
544
+ var input = button.querySelector(SELECTOR_INPUT);
545
+
546
+ if (input.checked || input.hasAttribute('checked')) {
547
+ button.classList.add(CLASS_NAME_ACTIVE);
548
+ } else {
549
+ button.classList.remove(CLASS_NAME_ACTIVE);
550
+ }
551
+ } // find all button toggles
552
+
553
+
554
+ buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE));
555
+
556
+ for (var _i = 0, _len = buttons.length; _i < _len; _i++) {
557
+ var _button = buttons[_i];
558
+
559
+ if (_button.getAttribute('aria-pressed') === 'true') {
560
+ _button.classList.add(CLASS_NAME_ACTIVE);
561
+ } else {
562
+ _button.classList.remove(CLASS_NAME_ACTIVE);
563
+ }
564
+ }
526
565
  });
527
566
  /**
528
567
  * ------------------------------------------------------------------------
@@ -545,7 +584,7 @@
545
584
  */
546
585
 
547
586
  var NAME$2 = 'carousel';
548
- var VERSION$2 = '4.2.1';
587
+ var VERSION$2 = '4.5.2';
549
588
  var DATA_KEY$2 = 'bs.carousel';
550
589
  var EVENT_KEY$2 = "." + DATA_KEY$2;
551
590
  var DATA_API_KEY$2 = '.data-api';
@@ -573,62 +612,50 @@
573
612
  wrap: 'boolean',
574
613
  touch: 'boolean'
575
614
  };
576
- var Direction = {
577
- NEXT: 'next',
578
- PREV: 'prev',
579
- LEFT: 'left',
580
- RIGHT: 'right'
581
- };
582
- var Event$2 = {
583
- SLIDE: "slide" + EVENT_KEY$2,
584
- SLID: "slid" + EVENT_KEY$2,
585
- KEYDOWN: "keydown" + EVENT_KEY$2,
586
- MOUSEENTER: "mouseenter" + EVENT_KEY$2,
587
- MOUSELEAVE: "mouseleave" + EVENT_KEY$2,
588
- TOUCHSTART: "touchstart" + EVENT_KEY$2,
589
- TOUCHMOVE: "touchmove" + EVENT_KEY$2,
590
- TOUCHEND: "touchend" + EVENT_KEY$2,
591
- POINTERDOWN: "pointerdown" + EVENT_KEY$2,
592
- POINTERUP: "pointerup" + EVENT_KEY$2,
593
- DRAG_START: "dragstart" + EVENT_KEY$2,
594
- LOAD_DATA_API: "load" + EVENT_KEY$2 + DATA_API_KEY$2,
595
- CLICK_DATA_API: "click" + EVENT_KEY$2 + DATA_API_KEY$2
596
- };
597
- var ClassName$2 = {
598
- CAROUSEL: 'carousel',
599
- ACTIVE: 'active',
600
- SLIDE: 'slide',
601
- RIGHT: 'carousel-item-right',
602
- LEFT: 'carousel-item-left',
603
- NEXT: 'carousel-item-next',
604
- PREV: 'carousel-item-prev',
605
- ITEM: 'carousel-item',
606
- POINTER_EVENT: 'pointer-event'
607
- };
608
- var Selector$2 = {
609
- ACTIVE: '.active',
610
- ACTIVE_ITEM: '.active.carousel-item',
611
- ITEM: '.carousel-item',
612
- ITEM_IMG: '.carousel-item img',
613
- NEXT_PREV: '.carousel-item-next, .carousel-item-prev',
614
- INDICATORS: '.carousel-indicators',
615
- DATA_SLIDE: '[data-slide], [data-slide-to]',
616
- DATA_RIDE: '[data-ride="carousel"]'
617
- };
615
+ var DIRECTION_NEXT = 'next';
616
+ var DIRECTION_PREV = 'prev';
617
+ var DIRECTION_LEFT = 'left';
618
+ var DIRECTION_RIGHT = 'right';
619
+ var EVENT_SLIDE = "slide" + EVENT_KEY$2;
620
+ var EVENT_SLID = "slid" + EVENT_KEY$2;
621
+ var EVENT_KEYDOWN = "keydown" + EVENT_KEY$2;
622
+ var EVENT_MOUSEENTER = "mouseenter" + EVENT_KEY$2;
623
+ var EVENT_MOUSELEAVE = "mouseleave" + EVENT_KEY$2;
624
+ var EVENT_TOUCHSTART = "touchstart" + EVENT_KEY$2;
625
+ var EVENT_TOUCHMOVE = "touchmove" + EVENT_KEY$2;
626
+ var EVENT_TOUCHEND = "touchend" + EVENT_KEY$2;
627
+ var EVENT_POINTERDOWN = "pointerdown" + EVENT_KEY$2;
628
+ var EVENT_POINTERUP = "pointerup" + EVENT_KEY$2;
629
+ var EVENT_DRAG_START = "dragstart" + EVENT_KEY$2;
630
+ var EVENT_LOAD_DATA_API$1 = "load" + EVENT_KEY$2 + DATA_API_KEY$2;
631
+ var EVENT_CLICK_DATA_API$2 = "click" + EVENT_KEY$2 + DATA_API_KEY$2;
632
+ var CLASS_NAME_CAROUSEL = 'carousel';
633
+ var CLASS_NAME_ACTIVE$1 = 'active';
634
+ var CLASS_NAME_SLIDE = 'slide';
635
+ var CLASS_NAME_RIGHT = 'carousel-item-right';
636
+ var CLASS_NAME_LEFT = 'carousel-item-left';
637
+ var CLASS_NAME_NEXT = 'carousel-item-next';
638
+ var CLASS_NAME_PREV = 'carousel-item-prev';
639
+ var CLASS_NAME_POINTER_EVENT = 'pointer-event';
640
+ var SELECTOR_ACTIVE$1 = '.active';
641
+ var SELECTOR_ACTIVE_ITEM = '.active.carousel-item';
642
+ var SELECTOR_ITEM = '.carousel-item';
643
+ var SELECTOR_ITEM_IMG = '.carousel-item img';
644
+ var SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev';
645
+ var SELECTOR_INDICATORS = '.carousel-indicators';
646
+ var SELECTOR_DATA_SLIDE = '[data-slide], [data-slide-to]';
647
+ var SELECTOR_DATA_RIDE = '[data-ride="carousel"]';
618
648
  var PointerType = {
619
649
  TOUCH: 'touch',
620
650
  PEN: 'pen'
621
- /**
622
- * ------------------------------------------------------------------------
623
- * Class Definition
624
- * ------------------------------------------------------------------------
625
- */
626
-
627
651
  };
652
+ /**
653
+ * ------------------------------------------------------------------------
654
+ * Class Definition
655
+ * ------------------------------------------------------------------------
656
+ */
628
657
 
629
- var Carousel =
630
- /*#__PURE__*/
631
- function () {
658
+ var Carousel = /*#__PURE__*/function () {
632
659
  function Carousel(element, config) {
633
660
  this._items = null;
634
661
  this._interval = null;
@@ -640,7 +667,7 @@
640
667
  this.touchDeltaX = 0;
641
668
  this._config = this._getConfig(config);
642
669
  this._element = element;
643
- this._indicatorsElement = this._element.querySelector(Selector$2.INDICATORS);
670
+ this._indicatorsElement = this._element.querySelector(SELECTOR_INDICATORS);
644
671
  this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;
645
672
  this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent);
646
673
 
@@ -653,7 +680,7 @@
653
680
  // Public
654
681
  _proto.next = function next() {
655
682
  if (!this._isSliding) {
656
- this._slide(Direction.NEXT);
683
+ this._slide(DIRECTION_NEXT);
657
684
  }
658
685
  };
659
686
 
@@ -667,7 +694,7 @@
667
694
 
668
695
  _proto.prev = function prev() {
669
696
  if (!this._isSliding) {
670
- this._slide(Direction.PREV);
697
+ this._slide(DIRECTION_PREV);
671
698
  }
672
699
  };
673
700
 
@@ -676,7 +703,7 @@
676
703
  this._isPaused = true;
677
704
  }
678
705
 
679
- if (this._element.querySelector(Selector$2.NEXT_PREV)) {
706
+ if (this._element.querySelector(SELECTOR_NEXT_PREV)) {
680
707
  Util.triggerTransitionEnd(this._element);
681
708
  this.cycle(true);
682
709
  }
@@ -703,7 +730,7 @@
703
730
  _proto.to = function to(index) {
704
731
  var _this = this;
705
732
 
706
- this._activeElement = this._element.querySelector(Selector$2.ACTIVE_ITEM);
733
+ this._activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);
707
734
 
708
735
  var activeIndex = this._getItemIndex(this._activeElement);
709
736
 
@@ -712,7 +739,7 @@
712
739
  }
713
740
 
714
741
  if (this._isSliding) {
715
- $(this._element).one(Event$2.SLID, function () {
742
+ $(this._element).one(EVENT_SLID, function () {
716
743
  return _this.to(index);
717
744
  });
718
745
  return;
@@ -724,7 +751,7 @@
724
751
  return;
725
752
  }
726
753
 
727
- var direction = index > activeIndex ? Direction.NEXT : Direction.PREV;
754
+ var direction = index > activeIndex ? DIRECTION_NEXT : DIRECTION_PREV;
728
755
 
729
756
  this._slide(direction, this._items[index]);
730
757
  };
@@ -740,11 +767,11 @@
740
767
  this._isSliding = null;
741
768
  this._activeElement = null;
742
769
  this._indicatorsElement = null;
743
- }; // Private
744
-
770
+ } // Private
771
+ ;
745
772
 
746
773
  _proto._getConfig = function _getConfig(config) {
747
- config = _objectSpread({}, Default, config);
774
+ config = _extends({}, Default, config);
748
775
  Util.typeCheckConfig(NAME$2, config, DefaultType);
749
776
  return config;
750
777
  };
@@ -756,7 +783,8 @@
756
783
  return;
757
784
  }
758
785
 
759
- var direction = absDeltax / this.touchDeltaX; // swipe left
786
+ var direction = absDeltax / this.touchDeltaX;
787
+ this.touchDeltaX = 0; // swipe left
760
788
 
761
789
  if (direction > 0) {
762
790
  this.prev();
@@ -772,20 +800,22 @@
772
800
  var _this2 = this;
773
801
 
774
802
  if (this._config.keyboard) {
775
- $(this._element).on(Event$2.KEYDOWN, function (event) {
803
+ $(this._element).on(EVENT_KEYDOWN, function (event) {
776
804
  return _this2._keydown(event);
777
805
  });
778
806
  }
779
807
 
780
808
  if (this._config.pause === 'hover') {
781
- $(this._element).on(Event$2.MOUSEENTER, function (event) {
809
+ $(this._element).on(EVENT_MOUSEENTER, function (event) {
782
810
  return _this2.pause(event);
783
- }).on(Event$2.MOUSELEAVE, function (event) {
811
+ }).on(EVENT_MOUSELEAVE, function (event) {
784
812
  return _this2.cycle(event);
785
813
  });
786
814
  }
787
815
 
788
- this._addTouchEventListeners();
816
+ if (this._config.touch) {
817
+ this._addTouchEventListeners();
818
+ }
789
819
  };
790
820
 
791
821
  _proto._addTouchEventListeners = function _addTouchEventListeners() {
@@ -839,27 +869,27 @@
839
869
  }
840
870
  };
841
871
 
842
- $(this._element.querySelectorAll(Selector$2.ITEM_IMG)).on(Event$2.DRAG_START, function (e) {
872
+ $(this._element.querySelectorAll(SELECTOR_ITEM_IMG)).on(EVENT_DRAG_START, function (e) {
843
873
  return e.preventDefault();
844
874
  });
845
875
 
846
876
  if (this._pointerEvent) {
847
- $(this._element).on(Event$2.POINTERDOWN, function (event) {
877
+ $(this._element).on(EVENT_POINTERDOWN, function (event) {
848
878
  return start(event);
849
879
  });
850
- $(this._element).on(Event$2.POINTERUP, function (event) {
880
+ $(this._element).on(EVENT_POINTERUP, function (event) {
851
881
  return end(event);
852
882
  });
853
883
 
854
- this._element.classList.add(ClassName$2.POINTER_EVENT);
884
+ this._element.classList.add(CLASS_NAME_POINTER_EVENT);
855
885
  } else {
856
- $(this._element).on(Event$2.TOUCHSTART, function (event) {
886
+ $(this._element).on(EVENT_TOUCHSTART, function (event) {
857
887
  return start(event);
858
888
  });
859
- $(this._element).on(Event$2.TOUCHMOVE, function (event) {
889
+ $(this._element).on(EVENT_TOUCHMOVE, function (event) {
860
890
  return move(event);
861
891
  });
862
- $(this._element).on(Event$2.TOUCHEND, function (event) {
892
+ $(this._element).on(EVENT_TOUCHEND, function (event) {
863
893
  return end(event);
864
894
  });
865
895
  }
@@ -880,19 +910,17 @@
880
910
  event.preventDefault();
881
911
  this.next();
882
912
  break;
883
-
884
- default:
885
913
  }
886
914
  };
887
915
 
888
916
  _proto._getItemIndex = function _getItemIndex(element) {
889
- this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(Selector$2.ITEM)) : [];
917
+ this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM)) : [];
890
918
  return this._items.indexOf(element);
891
919
  };
892
920
 
893
921
  _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {
894
- var isNextDirection = direction === Direction.NEXT;
895
- var isPrevDirection = direction === Direction.PREV;
922
+ var isNextDirection = direction === DIRECTION_NEXT;
923
+ var isPrevDirection = direction === DIRECTION_PREV;
896
924
 
897
925
  var activeIndex = this._getItemIndex(activeElement);
898
926
 
@@ -903,7 +931,7 @@
903
931
  return activeElement;
904
932
  }
905
933
 
906
- var delta = direction === Direction.PREV ? -1 : 1;
934
+ var delta = direction === DIRECTION_PREV ? -1 : 1;
907
935
  var itemIndex = (activeIndex + delta) % this._items.length;
908
936
  return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];
909
937
  };
@@ -911,9 +939,9 @@
911
939
  _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {
912
940
  var targetIndex = this._getItemIndex(relatedTarget);
913
941
 
914
- var fromIndex = this._getItemIndex(this._element.querySelector(Selector$2.ACTIVE_ITEM));
942
+ var fromIndex = this._getItemIndex(this._element.querySelector(SELECTOR_ACTIVE_ITEM));
915
943
 
916
- var slideEvent = $.Event(Event$2.SLIDE, {
944
+ var slideEvent = $.Event(EVENT_SLIDE, {
917
945
  relatedTarget: relatedTarget,
918
946
  direction: eventDirectionName,
919
947
  from: fromIndex,
@@ -925,13 +953,13 @@
925
953
 
926
954
  _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {
927
955
  if (this._indicatorsElement) {
928
- var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(Selector$2.ACTIVE));
929
- $(indicators).removeClass(ClassName$2.ACTIVE);
956
+ var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(SELECTOR_ACTIVE$1));
957
+ $(indicators).removeClass(CLASS_NAME_ACTIVE$1);
930
958
 
931
959
  var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];
932
960
 
933
961
  if (nextIndicator) {
934
- $(nextIndicator).addClass(ClassName$2.ACTIVE);
962
+ $(nextIndicator).addClass(CLASS_NAME_ACTIVE$1);
935
963
  }
936
964
  }
937
965
  };
@@ -939,7 +967,7 @@
939
967
  _proto._slide = function _slide(direction, element) {
940
968
  var _this4 = this;
941
969
 
942
- var activeElement = this._element.querySelector(Selector$2.ACTIVE_ITEM);
970
+ var activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);
943
971
 
944
972
  var activeElementIndex = this._getItemIndex(activeElement);
945
973
 
@@ -952,17 +980,17 @@
952
980
  var orderClassName;
953
981
  var eventDirectionName;
954
982
 
955
- if (direction === Direction.NEXT) {
956
- directionalClassName = ClassName$2.LEFT;
957
- orderClassName = ClassName$2.NEXT;
958
- eventDirectionName = Direction.LEFT;
983
+ if (direction === DIRECTION_NEXT) {
984
+ directionalClassName = CLASS_NAME_LEFT;
985
+ orderClassName = CLASS_NAME_NEXT;
986
+ eventDirectionName = DIRECTION_LEFT;
959
987
  } else {
960
- directionalClassName = ClassName$2.RIGHT;
961
- orderClassName = ClassName$2.PREV;
962
- eventDirectionName = Direction.RIGHT;
988
+ directionalClassName = CLASS_NAME_RIGHT;
989
+ orderClassName = CLASS_NAME_PREV;
990
+ eventDirectionName = DIRECTION_RIGHT;
963
991
  }
964
992
 
965
- if (nextElement && $(nextElement).hasClass(ClassName$2.ACTIVE)) {
993
+ if (nextElement && $(nextElement).hasClass(CLASS_NAME_ACTIVE$1)) {
966
994
  this._isSliding = false;
967
995
  return;
968
996
  }
@@ -986,14 +1014,14 @@
986
1014
 
987
1015
  this._setActiveIndicatorElement(nextElement);
988
1016
 
989
- var slidEvent = $.Event(Event$2.SLID, {
1017
+ var slidEvent = $.Event(EVENT_SLID, {
990
1018
  relatedTarget: nextElement,
991
1019
  direction: eventDirectionName,
992
1020
  from: activeElementIndex,
993
1021
  to: nextElementIndex
994
1022
  });
995
1023
 
996
- if ($(this._element).hasClass(ClassName$2.SLIDE)) {
1024
+ if ($(this._element).hasClass(CLASS_NAME_SLIDE)) {
997
1025
  $(nextElement).addClass(orderClassName);
998
1026
  Util.reflow(nextElement);
999
1027
  $(activeElement).addClass(directionalClassName);
@@ -1009,16 +1037,16 @@
1009
1037
 
1010
1038
  var transitionDuration = Util.getTransitionDurationFromElement(activeElement);
1011
1039
  $(activeElement).one(Util.TRANSITION_END, function () {
1012
- $(nextElement).removeClass(directionalClassName + " " + orderClassName).addClass(ClassName$2.ACTIVE);
1013
- $(activeElement).removeClass(ClassName$2.ACTIVE + " " + orderClassName + " " + directionalClassName);
1040
+ $(nextElement).removeClass(directionalClassName + " " + orderClassName).addClass(CLASS_NAME_ACTIVE$1);
1041
+ $(activeElement).removeClass(CLASS_NAME_ACTIVE$1 + " " + orderClassName + " " + directionalClassName);
1014
1042
  _this4._isSliding = false;
1015
1043
  setTimeout(function () {
1016
1044
  return $(_this4._element).trigger(slidEvent);
1017
1045
  }, 0);
1018
1046
  }).emulateTransitionEnd(transitionDuration);
1019
1047
  } else {
1020
- $(activeElement).removeClass(ClassName$2.ACTIVE);
1021
- $(nextElement).addClass(ClassName$2.ACTIVE);
1048
+ $(activeElement).removeClass(CLASS_NAME_ACTIVE$1);
1049
+ $(nextElement).addClass(CLASS_NAME_ACTIVE$1);
1022
1050
  this._isSliding = false;
1023
1051
  $(this._element).trigger(slidEvent);
1024
1052
  }
@@ -1026,17 +1054,17 @@
1026
1054
  if (isCycling) {
1027
1055
  this.cycle();
1028
1056
  }
1029
- }; // Static
1030
-
1057
+ } // Static
1058
+ ;
1031
1059
 
1032
1060
  Carousel._jQueryInterface = function _jQueryInterface(config) {
1033
1061
  return this.each(function () {
1034
1062
  var data = $(this).data(DATA_KEY$2);
1035
1063
 
1036
- var _config = _objectSpread({}, Default, $(this).data());
1064
+ var _config = _extends({}, Default, $(this).data());
1037
1065
 
1038
1066
  if (typeof config === 'object') {
1039
- _config = _objectSpread({}, _config, config);
1067
+ _config = _extends({}, _config, config);
1040
1068
  }
1041
1069
 
1042
1070
  var action = typeof config === 'string' ? config : _config.slide;
@@ -1054,7 +1082,7 @@
1054
1082
  }
1055
1083
 
1056
1084
  data[action]();
1057
- } else if (_config.interval) {
1085
+ } else if (_config.interval && _config.ride) {
1058
1086
  data.pause();
1059
1087
  data.cycle();
1060
1088
  }
@@ -1070,11 +1098,11 @@
1070
1098
 
1071
1099
  var target = $(selector)[0];
1072
1100
 
1073
- if (!target || !$(target).hasClass(ClassName$2.CAROUSEL)) {
1101
+ if (!target || !$(target).hasClass(CLASS_NAME_CAROUSEL)) {
1074
1102
  return;
1075
1103
  }
1076
1104
 
1077
- var config = _objectSpread({}, $(target).data(), $(this).data());
1105
+ var config = _extends({}, $(target).data(), $(this).data());
1078
1106
 
1079
1107
  var slideIndex = this.getAttribute('data-slide-to');
1080
1108
 
@@ -1112,9 +1140,9 @@
1112
1140
  */
1113
1141
 
1114
1142
 
1115
- $(document).on(Event$2.CLICK_DATA_API, Selector$2.DATA_SLIDE, Carousel._dataApiClickHandler);
1116
- $(window).on(Event$2.LOAD_DATA_API, function () {
1117
- var carousels = [].slice.call(document.querySelectorAll(Selector$2.DATA_RIDE));
1143
+ $(document).on(EVENT_CLICK_DATA_API$2, SELECTOR_DATA_SLIDE, Carousel._dataApiClickHandler);
1144
+ $(window).on(EVENT_LOAD_DATA_API$1, function () {
1145
+ var carousels = [].slice.call(document.querySelectorAll(SELECTOR_DATA_RIDE));
1118
1146
 
1119
1147
  for (var i = 0, len = carousels.length; i < len; i++) {
1120
1148
  var $carousel = $(carousels[i]);
@@ -1143,7 +1171,7 @@
1143
1171
  */
1144
1172
 
1145
1173
  var NAME$3 = 'collapse';
1146
- var VERSION$3 = '4.2.1';
1174
+ var VERSION$3 = '4.5.2';
1147
1175
  var DATA_KEY$3 = 'bs.collapse';
1148
1176
  var EVENT_KEY$3 = "." + DATA_KEY$3;
1149
1177
  var DATA_API_KEY$3 = '.data-api';
@@ -1156,43 +1184,32 @@
1156
1184
  toggle: 'boolean',
1157
1185
  parent: '(string|element)'
1158
1186
  };
1159
- var Event$3 = {
1160
- SHOW: "show" + EVENT_KEY$3,
1161
- SHOWN: "shown" + EVENT_KEY$3,
1162
- HIDE: "hide" + EVENT_KEY$3,
1163
- HIDDEN: "hidden" + EVENT_KEY$3,
1164
- CLICK_DATA_API: "click" + EVENT_KEY$3 + DATA_API_KEY$3
1165
- };
1166
- var ClassName$3 = {
1167
- SHOW: 'show',
1168
- COLLAPSE: 'collapse',
1169
- COLLAPSING: 'collapsing',
1170
- COLLAPSED: 'collapsed'
1171
- };
1172
- var Dimension = {
1173
- WIDTH: 'width',
1174
- HEIGHT: 'height'
1175
- };
1176
- var Selector$3 = {
1177
- ACTIVES: '.show, .collapsing',
1178
- DATA_TOGGLE: '[data-toggle="collapse"]'
1179
- /**
1180
- * ------------------------------------------------------------------------
1181
- * Class Definition
1182
- * ------------------------------------------------------------------------
1183
- */
1184
-
1185
- };
1187
+ var EVENT_SHOW = "show" + EVENT_KEY$3;
1188
+ var EVENT_SHOWN = "shown" + EVENT_KEY$3;
1189
+ var EVENT_HIDE = "hide" + EVENT_KEY$3;
1190
+ var EVENT_HIDDEN = "hidden" + EVENT_KEY$3;
1191
+ var EVENT_CLICK_DATA_API$3 = "click" + EVENT_KEY$3 + DATA_API_KEY$3;
1192
+ var CLASS_NAME_SHOW$1 = 'show';
1193
+ var CLASS_NAME_COLLAPSE = 'collapse';
1194
+ var CLASS_NAME_COLLAPSING = 'collapsing';
1195
+ var CLASS_NAME_COLLAPSED = 'collapsed';
1196
+ var DIMENSION_WIDTH = 'width';
1197
+ var DIMENSION_HEIGHT = 'height';
1198
+ var SELECTOR_ACTIVES = '.show, .collapsing';
1199
+ var SELECTOR_DATA_TOGGLE$1 = '[data-toggle="collapse"]';
1200
+ /**
1201
+ * ------------------------------------------------------------------------
1202
+ * Class Definition
1203
+ * ------------------------------------------------------------------------
1204
+ */
1186
1205
 
1187
- var Collapse =
1188
- /*#__PURE__*/
1189
- function () {
1206
+ var Collapse = /*#__PURE__*/function () {
1190
1207
  function Collapse(element, config) {
1191
1208
  this._isTransitioning = false;
1192
1209
  this._element = element;
1193
1210
  this._config = this._getConfig(config);
1194
1211
  this._triggerArray = [].slice.call(document.querySelectorAll("[data-toggle=\"collapse\"][href=\"#" + element.id + "\"]," + ("[data-toggle=\"collapse\"][data-target=\"#" + element.id + "\"]")));
1195
- var toggleList = [].slice.call(document.querySelectorAll(Selector$3.DATA_TOGGLE));
1212
+ var toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$1));
1196
1213
 
1197
1214
  for (var i = 0, len = toggleList.length; i < len; i++) {
1198
1215
  var elem = toggleList[i];
@@ -1224,7 +1241,7 @@
1224
1241
 
1225
1242
  // Public
1226
1243
  _proto.toggle = function toggle() {
1227
- if ($(this._element).hasClass(ClassName$3.SHOW)) {
1244
+ if ($(this._element).hasClass(CLASS_NAME_SHOW$1)) {
1228
1245
  this.hide();
1229
1246
  } else {
1230
1247
  this.show();
@@ -1234,7 +1251,7 @@
1234
1251
  _proto.show = function show() {
1235
1252
  var _this = this;
1236
1253
 
1237
- if (this._isTransitioning || $(this._element).hasClass(ClassName$3.SHOW)) {
1254
+ if (this._isTransitioning || $(this._element).hasClass(CLASS_NAME_SHOW$1)) {
1238
1255
  return;
1239
1256
  }
1240
1257
 
@@ -1242,12 +1259,12 @@
1242
1259
  var activesData;
1243
1260
 
1244
1261
  if (this._parent) {
1245
- actives = [].slice.call(this._parent.querySelectorAll(Selector$3.ACTIVES)).filter(function (elem) {
1262
+ actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES)).filter(function (elem) {
1246
1263
  if (typeof _this._config.parent === 'string') {
1247
1264
  return elem.getAttribute('data-parent') === _this._config.parent;
1248
1265
  }
1249
1266
 
1250
- return elem.classList.contains(ClassName$3.COLLAPSE);
1267
+ return elem.classList.contains(CLASS_NAME_COLLAPSE);
1251
1268
  });
1252
1269
 
1253
1270
  if (actives.length === 0) {
@@ -1263,7 +1280,7 @@
1263
1280
  }
1264
1281
  }
1265
1282
 
1266
- var startEvent = $.Event(Event$3.SHOW);
1283
+ var startEvent = $.Event(EVENT_SHOW);
1267
1284
  $(this._element).trigger(startEvent);
1268
1285
 
1269
1286
  if (startEvent.isDefaultPrevented()) {
@@ -1280,22 +1297,22 @@
1280
1297
 
1281
1298
  var dimension = this._getDimension();
1282
1299
 
1283
- $(this._element).removeClass(ClassName$3.COLLAPSE).addClass(ClassName$3.COLLAPSING);
1300
+ $(this._element).removeClass(CLASS_NAME_COLLAPSE).addClass(CLASS_NAME_COLLAPSING);
1284
1301
  this._element.style[dimension] = 0;
1285
1302
 
1286
1303
  if (this._triggerArray.length) {
1287
- $(this._triggerArray).removeClass(ClassName$3.COLLAPSED).attr('aria-expanded', true);
1304
+ $(this._triggerArray).removeClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', true);
1288
1305
  }
1289
1306
 
1290
1307
  this.setTransitioning(true);
1291
1308
 
1292
1309
  var complete = function complete() {
1293
- $(_this._element).removeClass(ClassName$3.COLLAPSING).addClass(ClassName$3.COLLAPSE).addClass(ClassName$3.SHOW);
1310
+ $(_this._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE + " " + CLASS_NAME_SHOW$1);
1294
1311
  _this._element.style[dimension] = '';
1295
1312
 
1296
1313
  _this.setTransitioning(false);
1297
1314
 
1298
- $(_this._element).trigger(Event$3.SHOWN);
1315
+ $(_this._element).trigger(EVENT_SHOWN);
1299
1316
  };
1300
1317
 
1301
1318
  var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
@@ -1308,11 +1325,11 @@
1308
1325
  _proto.hide = function hide() {
1309
1326
  var _this2 = this;
1310
1327
 
1311
- if (this._isTransitioning || !$(this._element).hasClass(ClassName$3.SHOW)) {
1328
+ if (this._isTransitioning || !$(this._element).hasClass(CLASS_NAME_SHOW$1)) {
1312
1329
  return;
1313
1330
  }
1314
1331
 
1315
- var startEvent = $.Event(Event$3.HIDE);
1332
+ var startEvent = $.Event(EVENT_HIDE);
1316
1333
  $(this._element).trigger(startEvent);
1317
1334
 
1318
1335
  if (startEvent.isDefaultPrevented()) {
@@ -1323,7 +1340,7 @@
1323
1340
 
1324
1341
  this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px";
1325
1342
  Util.reflow(this._element);
1326
- $(this._element).addClass(ClassName$3.COLLAPSING).removeClass(ClassName$3.COLLAPSE).removeClass(ClassName$3.SHOW);
1343
+ $(this._element).addClass(CLASS_NAME_COLLAPSING).removeClass(CLASS_NAME_COLLAPSE + " " + CLASS_NAME_SHOW$1);
1327
1344
  var triggerArrayLength = this._triggerArray.length;
1328
1345
 
1329
1346
  if (triggerArrayLength > 0) {
@@ -1334,8 +1351,8 @@
1334
1351
  if (selector !== null) {
1335
1352
  var $elem = $([].slice.call(document.querySelectorAll(selector)));
1336
1353
 
1337
- if (!$elem.hasClass(ClassName$3.SHOW)) {
1338
- $(trigger).addClass(ClassName$3.COLLAPSED).attr('aria-expanded', false);
1354
+ if (!$elem.hasClass(CLASS_NAME_SHOW$1)) {
1355
+ $(trigger).addClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', false);
1339
1356
  }
1340
1357
  }
1341
1358
  }
@@ -1346,7 +1363,7 @@
1346
1363
  var complete = function complete() {
1347
1364
  _this2.setTransitioning(false);
1348
1365
 
1349
- $(_this2._element).removeClass(ClassName$3.COLLAPSING).addClass(ClassName$3.COLLAPSE).trigger(Event$3.HIDDEN);
1366
+ $(_this2._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE).trigger(EVENT_HIDDEN);
1350
1367
  };
1351
1368
 
1352
1369
  this._element.style[dimension] = '';
@@ -1365,11 +1382,11 @@
1365
1382
  this._element = null;
1366
1383
  this._triggerArray = null;
1367
1384
  this._isTransitioning = null;
1368
- }; // Private
1369
-
1385
+ } // Private
1386
+ ;
1370
1387
 
1371
1388
  _proto._getConfig = function _getConfig(config) {
1372
- config = _objectSpread({}, Default$1, config);
1389
+ config = _extends({}, Default$1, config);
1373
1390
  config.toggle = Boolean(config.toggle); // Coerce string values
1374
1391
 
1375
1392
  Util.typeCheckConfig(NAME$3, config, DefaultType$1);
@@ -1377,8 +1394,8 @@
1377
1394
  };
1378
1395
 
1379
1396
  _proto._getDimension = function _getDimension() {
1380
- var hasWidth = $(this._element).hasClass(Dimension.WIDTH);
1381
- return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT;
1397
+ var hasWidth = $(this._element).hasClass(DIMENSION_WIDTH);
1398
+ return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT;
1382
1399
  };
1383
1400
 
1384
1401
  _proto._getParent = function _getParent() {
@@ -1405,13 +1422,13 @@
1405
1422
  };
1406
1423
 
1407
1424
  _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {
1408
- var isOpen = $(element).hasClass(ClassName$3.SHOW);
1425
+ var isOpen = $(element).hasClass(CLASS_NAME_SHOW$1);
1409
1426
 
1410
1427
  if (triggerArray.length) {
1411
- $(triggerArray).toggleClass(ClassName$3.COLLAPSED, !isOpen).attr('aria-expanded', isOpen);
1428
+ $(triggerArray).toggleClass(CLASS_NAME_COLLAPSED, !isOpen).attr('aria-expanded', isOpen);
1412
1429
  }
1413
- }; // Static
1414
-
1430
+ } // Static
1431
+ ;
1415
1432
 
1416
1433
  Collapse._getTargetFromElement = function _getTargetFromElement(element) {
1417
1434
  var selector = Util.getSelectorFromElement(element);
@@ -1423,9 +1440,9 @@
1423
1440
  var $this = $(this);
1424
1441
  var data = $this.data(DATA_KEY$3);
1425
1442
 
1426
- var _config = _objectSpread({}, Default$1, $this.data(), typeof config === 'object' && config ? config : {});
1443
+ var _config = _extends({}, Default$1, $this.data(), typeof config === 'object' && config ? config : {});
1427
1444
 
1428
- if (!data && _config.toggle && /show|hide/.test(config)) {
1445
+ if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {
1429
1446
  _config.toggle = false;
1430
1447
  }
1431
1448
 
@@ -1465,7 +1482,7 @@
1465
1482
  */
1466
1483
 
1467
1484
 
1468
- $(document).on(Event$3.CLICK_DATA_API, Selector$3.DATA_TOGGLE, function (event) {
1485
+ $(document).on(EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$1, function (event) {
1469
1486
  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
1470
1487
  if (event.currentTarget.tagName === 'A') {
1471
1488
  event.preventDefault();
@@ -1503,7 +1520,7 @@
1503
1520
  */
1504
1521
 
1505
1522
  var NAME$4 = 'dropdown';
1506
- var VERSION$4 = '4.2.1';
1523
+ var VERSION$4 = '4.5.2';
1507
1524
  var DATA_KEY$4 = 'bs.dropdown';
1508
1525
  var EVENT_KEY$4 = "." + DATA_KEY$4;
1509
1526
  var DATA_API_KEY$4 = '.data-api';
@@ -1521,67 +1538,55 @@
1521
1538
  var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)
1522
1539
 
1523
1540
  var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE);
1524
- var Event$4 = {
1525
- HIDE: "hide" + EVENT_KEY$4,
1526
- HIDDEN: "hidden" + EVENT_KEY$4,
1527
- SHOW: "show" + EVENT_KEY$4,
1528
- SHOWN: "shown" + EVENT_KEY$4,
1529
- CLICK: "click" + EVENT_KEY$4,
1530
- CLICK_DATA_API: "click" + EVENT_KEY$4 + DATA_API_KEY$4,
1531
- KEYDOWN_DATA_API: "keydown" + EVENT_KEY$4 + DATA_API_KEY$4,
1532
- KEYUP_DATA_API: "keyup" + EVENT_KEY$4 + DATA_API_KEY$4
1533
- };
1534
- var ClassName$4 = {
1535
- DISABLED: 'disabled',
1536
- SHOW: 'show',
1537
- DROPUP: 'dropup',
1538
- DROPRIGHT: 'dropright',
1539
- DROPLEFT: 'dropleft',
1540
- MENURIGHT: 'dropdown-menu-right',
1541
- MENULEFT: 'dropdown-menu-left',
1542
- POSITION_STATIC: 'position-static'
1543
- };
1544
- var Selector$4 = {
1545
- DATA_TOGGLE: '[data-toggle="dropdown"]',
1546
- FORM_CHILD: '.dropdown form',
1547
- MENU: '.dropdown-menu',
1548
- NAVBAR_NAV: '.navbar-nav',
1549
- VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'
1550
- };
1551
- var AttachmentMap = {
1552
- TOP: 'top-start',
1553
- TOPEND: 'top-end',
1554
- BOTTOM: 'bottom-start',
1555
- BOTTOMEND: 'bottom-end',
1556
- RIGHT: 'right-start',
1557
- RIGHTEND: 'right-end',
1558
- LEFT: 'left-start',
1559
- LEFTEND: 'left-end'
1560
- };
1541
+ var EVENT_HIDE$1 = "hide" + EVENT_KEY$4;
1542
+ var EVENT_HIDDEN$1 = "hidden" + EVENT_KEY$4;
1543
+ var EVENT_SHOW$1 = "show" + EVENT_KEY$4;
1544
+ var EVENT_SHOWN$1 = "shown" + EVENT_KEY$4;
1545
+ var EVENT_CLICK = "click" + EVENT_KEY$4;
1546
+ var EVENT_CLICK_DATA_API$4 = "click" + EVENT_KEY$4 + DATA_API_KEY$4;
1547
+ var EVENT_KEYDOWN_DATA_API = "keydown" + EVENT_KEY$4 + DATA_API_KEY$4;
1548
+ var EVENT_KEYUP_DATA_API = "keyup" + EVENT_KEY$4 + DATA_API_KEY$4;
1549
+ var CLASS_NAME_DISABLED = 'disabled';
1550
+ var CLASS_NAME_SHOW$2 = 'show';
1551
+ var CLASS_NAME_DROPUP = 'dropup';
1552
+ var CLASS_NAME_DROPRIGHT = 'dropright';
1553
+ var CLASS_NAME_DROPLEFT = 'dropleft';
1554
+ var CLASS_NAME_MENURIGHT = 'dropdown-menu-right';
1555
+ var CLASS_NAME_POSITION_STATIC = 'position-static';
1556
+ var SELECTOR_DATA_TOGGLE$2 = '[data-toggle="dropdown"]';
1557
+ var SELECTOR_FORM_CHILD = '.dropdown form';
1558
+ var SELECTOR_MENU = '.dropdown-menu';
1559
+ var SELECTOR_NAVBAR_NAV = '.navbar-nav';
1560
+ var SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';
1561
+ var PLACEMENT_TOP = 'top-start';
1562
+ var PLACEMENT_TOPEND = 'top-end';
1563
+ var PLACEMENT_BOTTOM = 'bottom-start';
1564
+ var PLACEMENT_BOTTOMEND = 'bottom-end';
1565
+ var PLACEMENT_RIGHT = 'right-start';
1566
+ var PLACEMENT_LEFT = 'left-start';
1561
1567
  var Default$2 = {
1562
1568
  offset: 0,
1563
1569
  flip: true,
1564
1570
  boundary: 'scrollParent',
1565
1571
  reference: 'toggle',
1566
- display: 'dynamic'
1572
+ display: 'dynamic',
1573
+ popperConfig: null
1567
1574
  };
1568
1575
  var DefaultType$2 = {
1569
1576
  offset: '(number|string|function)',
1570
1577
  flip: 'boolean',
1571
1578
  boundary: '(string|element)',
1572
1579
  reference: '(string|element)',
1573
- display: 'string'
1574
- /**
1575
- * ------------------------------------------------------------------------
1576
- * Class Definition
1577
- * ------------------------------------------------------------------------
1578
- */
1579
-
1580
+ display: 'string',
1581
+ popperConfig: '(null|object)'
1580
1582
  };
1583
+ /**
1584
+ * ------------------------------------------------------------------------
1585
+ * Class Definition
1586
+ * ------------------------------------------------------------------------
1587
+ */
1581
1588
 
1582
- var Dropdown =
1583
- /*#__PURE__*/
1584
- function () {
1589
+ var Dropdown = /*#__PURE__*/function () {
1585
1590
  function Dropdown(element, config) {
1586
1591
  this._element = element;
1587
1592
  this._popper = null;
@@ -1597,13 +1602,11 @@
1597
1602
 
1598
1603
  // Public
1599
1604
  _proto.toggle = function toggle() {
1600
- if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED)) {
1605
+ if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED)) {
1601
1606
  return;
1602
1607
  }
1603
1608
 
1604
- var parent = Dropdown._getParentFromElement(this._element);
1605
-
1606
- var isActive = $(this._menu).hasClass(ClassName$4.SHOW);
1609
+ var isActive = $(this._menu).hasClass(CLASS_NAME_SHOW$2);
1607
1610
 
1608
1611
  Dropdown._clearMenus();
1609
1612
 
@@ -1611,10 +1614,25 @@
1611
1614
  return;
1612
1615
  }
1613
1616
 
1617
+ this.show(true);
1618
+ };
1619
+
1620
+ _proto.show = function show(usePopper) {
1621
+ if (usePopper === void 0) {
1622
+ usePopper = false;
1623
+ }
1624
+
1625
+ if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED) || $(this._menu).hasClass(CLASS_NAME_SHOW$2)) {
1626
+ return;
1627
+ }
1628
+
1614
1629
  var relatedTarget = {
1615
1630
  relatedTarget: this._element
1616
1631
  };
1617
- var showEvent = $.Event(Event$4.SHOW, relatedTarget);
1632
+ var showEvent = $.Event(EVENT_SHOW$1, relatedTarget);
1633
+
1634
+ var parent = Dropdown._getParentFromElement(this._element);
1635
+
1618
1636
  $(parent).trigger(showEvent);
1619
1637
 
1620
1638
  if (showEvent.isDefaultPrevented()) {
@@ -1622,7 +1640,7 @@
1622
1640
  } // Disable totally Popper.js for Dropdown in Navbar
1623
1641
 
1624
1642
 
1625
- if (!this._inNavbar) {
1643
+ if (!this._inNavbar && usePopper) {
1626
1644
  /**
1627
1645
  * Check for Popper dependency
1628
1646
  * Popper - https://popper.js.org
@@ -1647,7 +1665,7 @@
1647
1665
 
1648
1666
 
1649
1667
  if (this._config.boundary !== 'scrollParent') {
1650
- $(parent).addClass(ClassName$4.POSITION_STATIC);
1668
+ $(parent).addClass(CLASS_NAME_POSITION_STATIC);
1651
1669
  }
1652
1670
 
1653
1671
  this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig());
@@ -1657,7 +1675,7 @@
1657
1675
  // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
1658
1676
 
1659
1677
 
1660
- if ('ontouchstart' in document.documentElement && $(parent).closest(Selector$4.NAVBAR_NAV).length === 0) {
1678
+ if ('ontouchstart' in document.documentElement && $(parent).closest(SELECTOR_NAVBAR_NAV).length === 0) {
1661
1679
  $(document.body).children().on('mouseover', null, $.noop);
1662
1680
  }
1663
1681
 
@@ -1665,41 +1683,19 @@
1665
1683
 
1666
1684
  this._element.setAttribute('aria-expanded', true);
1667
1685
 
1668
- $(this._menu).toggleClass(ClassName$4.SHOW);
1669
- $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.SHOWN, relatedTarget));
1670
- };
1671
-
1672
- _proto.show = function show() {
1673
- if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED) || $(this._menu).hasClass(ClassName$4.SHOW)) {
1674
- return;
1675
- }
1676
-
1677
- var relatedTarget = {
1678
- relatedTarget: this._element
1679
- };
1680
- var showEvent = $.Event(Event$4.SHOW, relatedTarget);
1681
-
1682
- var parent = Dropdown._getParentFromElement(this._element);
1683
-
1684
- $(parent).trigger(showEvent);
1685
-
1686
- if (showEvent.isDefaultPrevented()) {
1687
- return;
1688
- }
1689
-
1690
- $(this._menu).toggleClass(ClassName$4.SHOW);
1691
- $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.SHOWN, relatedTarget));
1686
+ $(this._menu).toggleClass(CLASS_NAME_SHOW$2);
1687
+ $(parent).toggleClass(CLASS_NAME_SHOW$2).trigger($.Event(EVENT_SHOWN$1, relatedTarget));
1692
1688
  };
1693
1689
 
1694
1690
  _proto.hide = function hide() {
1695
- if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED) || !$(this._menu).hasClass(ClassName$4.SHOW)) {
1691
+ if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED) || !$(this._menu).hasClass(CLASS_NAME_SHOW$2)) {
1696
1692
  return;
1697
1693
  }
1698
1694
 
1699
1695
  var relatedTarget = {
1700
1696
  relatedTarget: this._element
1701
1697
  };
1702
- var hideEvent = $.Event(Event$4.HIDE, relatedTarget);
1698
+ var hideEvent = $.Event(EVENT_HIDE$1, relatedTarget);
1703
1699
 
1704
1700
  var parent = Dropdown._getParentFromElement(this._element);
1705
1701
 
@@ -1709,8 +1705,12 @@
1709
1705
  return;
1710
1706
  }
1711
1707
 
1712
- $(this._menu).toggleClass(ClassName$4.SHOW);
1713
- $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.HIDDEN, relatedTarget));
1708
+ if (this._popper) {
1709
+ this._popper.destroy();
1710
+ }
1711
+
1712
+ $(this._menu).toggleClass(CLASS_NAME_SHOW$2);
1713
+ $(parent).toggleClass(CLASS_NAME_SHOW$2).trigger($.Event(EVENT_HIDDEN$1, relatedTarget));
1714
1714
  };
1715
1715
 
1716
1716
  _proto.dispose = function dispose() {
@@ -1732,13 +1732,13 @@
1732
1732
  if (this._popper !== null) {
1733
1733
  this._popper.scheduleUpdate();
1734
1734
  }
1735
- }; // Private
1736
-
1735
+ } // Private
1736
+ ;
1737
1737
 
1738
1738
  _proto._addEventListeners = function _addEventListeners() {
1739
1739
  var _this = this;
1740
1740
 
1741
- $(this._element).on(Event$4.CLICK, function (event) {
1741
+ $(this._element).on(EVENT_CLICK, function (event) {
1742
1742
  event.preventDefault();
1743
1743
  event.stopPropagation();
1744
1744
 
@@ -1747,7 +1747,7 @@
1747
1747
  };
1748
1748
 
1749
1749
  _proto._getConfig = function _getConfig(config) {
1750
- config = _objectSpread({}, this.constructor.Default, $(this._element).data(), config);
1750
+ config = _extends({}, this.constructor.Default, $(this._element).data(), config);
1751
1751
  Util.typeCheckConfig(NAME$4, config, this.constructor.DefaultType);
1752
1752
  return config;
1753
1753
  };
@@ -1757,7 +1757,7 @@
1757
1757
  var parent = Dropdown._getParentFromElement(this._element);
1758
1758
 
1759
1759
  if (parent) {
1760
- this._menu = parent.querySelector(Selector$4.MENU);
1760
+ this._menu = parent.querySelector(SELECTOR_MENU);
1761
1761
  }
1762
1762
  }
1763
1763
 
@@ -1766,20 +1766,16 @@
1766
1766
 
1767
1767
  _proto._getPlacement = function _getPlacement() {
1768
1768
  var $parentDropdown = $(this._element.parentNode);
1769
- var placement = AttachmentMap.BOTTOM; // Handle dropup
1770
-
1771
- if ($parentDropdown.hasClass(ClassName$4.DROPUP)) {
1772
- placement = AttachmentMap.TOP;
1769
+ var placement = PLACEMENT_BOTTOM; // Handle dropup
1773
1770
 
1774
- if ($(this._menu).hasClass(ClassName$4.MENURIGHT)) {
1775
- placement = AttachmentMap.TOPEND;
1776
- }
1777
- } else if ($parentDropdown.hasClass(ClassName$4.DROPRIGHT)) {
1778
- placement = AttachmentMap.RIGHT;
1779
- } else if ($parentDropdown.hasClass(ClassName$4.DROPLEFT)) {
1780
- placement = AttachmentMap.LEFT;
1781
- } else if ($(this._menu).hasClass(ClassName$4.MENURIGHT)) {
1782
- placement = AttachmentMap.BOTTOMEND;
1771
+ if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) {
1772
+ placement = $(this._menu).hasClass(CLASS_NAME_MENURIGHT) ? PLACEMENT_TOPEND : PLACEMENT_TOP;
1773
+ } else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) {
1774
+ placement = PLACEMENT_RIGHT;
1775
+ } else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) {
1776
+ placement = PLACEMENT_LEFT;
1777
+ } else if ($(this._menu).hasClass(CLASS_NAME_MENURIGHT)) {
1778
+ placement = PLACEMENT_BOTTOMEND;
1783
1779
  }
1784
1780
 
1785
1781
  return placement;
@@ -1789,33 +1785,36 @@
1789
1785
  return $(this._element).closest('.navbar').length > 0;
1790
1786
  };
1791
1787
 
1792
- _proto._getPopperConfig = function _getPopperConfig() {
1788
+ _proto._getOffset = function _getOffset() {
1793
1789
  var _this2 = this;
1794
1790
 
1795
- var offsetConf = {};
1791
+ var offset = {};
1796
1792
 
1797
1793
  if (typeof this._config.offset === 'function') {
1798
- offsetConf.fn = function (data) {
1799
- data.offsets = _objectSpread({}, data.offsets, _this2._config.offset(data.offsets) || {});
1794
+ offset.fn = function (data) {
1795
+ data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets, _this2._element) || {});
1800
1796
  return data;
1801
1797
  };
1802
1798
  } else {
1803
- offsetConf.offset = this._config.offset;
1799
+ offset.offset = this._config.offset;
1804
1800
  }
1805
1801
 
1802
+ return offset;
1803
+ };
1804
+
1805
+ _proto._getPopperConfig = function _getPopperConfig() {
1806
1806
  var popperConfig = {
1807
1807
  placement: this._getPlacement(),
1808
1808
  modifiers: {
1809
- offset: offsetConf,
1809
+ offset: this._getOffset(),
1810
1810
  flip: {
1811
1811
  enabled: this._config.flip
1812
1812
  },
1813
1813
  preventOverflow: {
1814
1814
  boundariesElement: this._config.boundary
1815
1815
  }
1816
- } // Disable Popper.js if we have a static display
1817
-
1818
- };
1816
+ }
1817
+ }; // Disable Popper.js if we have a static display
1819
1818
 
1820
1819
  if (this._config.display === 'static') {
1821
1820
  popperConfig.modifiers.applyStyle = {
@@ -1823,9 +1822,9 @@
1823
1822
  };
1824
1823
  }
1825
1824
 
1826
- return popperConfig;
1827
- }; // Static
1828
-
1825
+ return _extends({}, popperConfig, this._config.popperConfig);
1826
+ } // Static
1827
+ ;
1829
1828
 
1830
1829
  Dropdown._jQueryInterface = function _jQueryInterface(config) {
1831
1830
  return this.each(function () {
@@ -1853,7 +1852,7 @@
1853
1852
  return;
1854
1853
  }
1855
1854
 
1856
- var toggles = [].slice.call(document.querySelectorAll(Selector$4.DATA_TOGGLE));
1855
+ var toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$2));
1857
1856
 
1858
1857
  for (var i = 0, len = toggles.length; i < len; i++) {
1859
1858
  var parent = Dropdown._getParentFromElement(toggles[i]);
@@ -1873,7 +1872,7 @@
1873
1872
 
1874
1873
  var dropdownMenu = context._menu;
1875
1874
 
1876
- if (!$(parent).hasClass(ClassName$4.SHOW)) {
1875
+ if (!$(parent).hasClass(CLASS_NAME_SHOW$2)) {
1877
1876
  continue;
1878
1877
  }
1879
1878
 
@@ -1881,7 +1880,7 @@
1881
1880
  continue;
1882
1881
  }
1883
1882
 
1884
- var hideEvent = $.Event(Event$4.HIDE, relatedTarget);
1883
+ var hideEvent = $.Event(EVENT_HIDE$1, relatedTarget);
1885
1884
  $(parent).trigger(hideEvent);
1886
1885
 
1887
1886
  if (hideEvent.isDefaultPrevented()) {
@@ -1895,8 +1894,13 @@
1895
1894
  }
1896
1895
 
1897
1896
  toggles[i].setAttribute('aria-expanded', 'false');
1898
- $(dropdownMenu).removeClass(ClassName$4.SHOW);
1899
- $(parent).removeClass(ClassName$4.SHOW).trigger($.Event(Event$4.HIDDEN, relatedTarget));
1897
+
1898
+ if (context._popper) {
1899
+ context._popper.destroy();
1900
+ }
1901
+
1902
+ $(dropdownMenu).removeClass(CLASS_NAME_SHOW$2);
1903
+ $(parent).removeClass(CLASS_NAME_SHOW$2).trigger($.Event(EVENT_HIDDEN$1, relatedTarget));
1900
1904
  }
1901
1905
  };
1902
1906
 
@@ -1909,8 +1913,8 @@
1909
1913
  }
1910
1914
 
1911
1915
  return parent || element.parentNode;
1912
- }; // eslint-disable-next-line complexity
1913
-
1916
+ } // eslint-disable-next-line complexity
1917
+ ;
1914
1918
 
1915
1919
  Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {
1916
1920
  // If not input/textarea:
@@ -1920,32 +1924,37 @@
1920
1924
  // - If key is other than escape
1921
1925
  // - If key is not up or down => not a dropdown command
1922
1926
  // - If trigger inside the menu => not a dropdown command
1923
- if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $(event.target).closest(Selector$4.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {
1927
+ if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $(event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {
1924
1928
  return;
1925
1929
  }
1926
1930
 
1927
- event.preventDefault();
1928
- event.stopPropagation();
1929
-
1930
- if (this.disabled || $(this).hasClass(ClassName$4.DISABLED)) {
1931
+ if (this.disabled || $(this).hasClass(CLASS_NAME_DISABLED)) {
1931
1932
  return;
1932
1933
  }
1933
1934
 
1934
1935
  var parent = Dropdown._getParentFromElement(this);
1935
1936
 
1936
- var isActive = $(parent).hasClass(ClassName$4.SHOW);
1937
+ var isActive = $(parent).hasClass(CLASS_NAME_SHOW$2);
1938
+
1939
+ if (!isActive && event.which === ESCAPE_KEYCODE) {
1940
+ return;
1941
+ }
1942
+
1943
+ event.preventDefault();
1944
+ event.stopPropagation();
1937
1945
 
1938
1946
  if (!isActive || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {
1939
1947
  if (event.which === ESCAPE_KEYCODE) {
1940
- var toggle = parent.querySelector(Selector$4.DATA_TOGGLE);
1941
- $(toggle).trigger('focus');
1948
+ $(parent.querySelector(SELECTOR_DATA_TOGGLE$2)).trigger('focus');
1942
1949
  }
1943
1950
 
1944
1951
  $(this).trigger('click');
1945
1952
  return;
1946
1953
  }
1947
1954
 
1948
- var items = [].slice.call(parent.querySelectorAll(Selector$4.VISIBLE_ITEMS));
1955
+ var items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS)).filter(function (item) {
1956
+ return $(item).is(':visible');
1957
+ });
1949
1958
 
1950
1959
  if (items.length === 0) {
1951
1960
  return;
@@ -1996,12 +2005,12 @@
1996
2005
  */
1997
2006
 
1998
2007
 
1999
- $(document).on(Event$4.KEYDOWN_DATA_API, Selector$4.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event$4.KEYDOWN_DATA_API, Selector$4.MENU, Dropdown._dataApiKeydownHandler).on(Event$4.CLICK_DATA_API + " " + Event$4.KEYUP_DATA_API, Dropdown._clearMenus).on(Event$4.CLICK_DATA_API, Selector$4.DATA_TOGGLE, function (event) {
2008
+ $(document).on(EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$2, Dropdown._dataApiKeydownHandler).on(EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown._dataApiKeydownHandler).on(EVENT_CLICK_DATA_API$4 + " " + EVENT_KEYUP_DATA_API, Dropdown._clearMenus).on(EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$2, function (event) {
2000
2009
  event.preventDefault();
2001
2010
  event.stopPropagation();
2002
2011
 
2003
2012
  Dropdown._jQueryInterface.call($(this), 'toggle');
2004
- }).on(Event$4.CLICK_DATA_API, Selector$4.FORM_CHILD, function (e) {
2013
+ }).on(EVENT_CLICK_DATA_API$4, SELECTOR_FORM_CHILD, function (e) {
2005
2014
  e.stopPropagation();
2006
2015
  });
2007
2016
  /**
@@ -2025,7 +2034,7 @@
2025
2034
  */
2026
2035
 
2027
2036
  var NAME$5 = 'modal';
2028
- var VERSION$5 = '4.2.1';
2037
+ var VERSION$5 = '4.5.2';
2029
2038
  var DATA_KEY$5 = 'bs.modal';
2030
2039
  var EVENT_KEY$5 = "." + DATA_KEY$5;
2031
2040
  var DATA_API_KEY$5 = '.data-api';
@@ -2044,47 +2053,42 @@
2044
2053
  focus: 'boolean',
2045
2054
  show: 'boolean'
2046
2055
  };
2047
- var Event$5 = {
2048
- HIDE: "hide" + EVENT_KEY$5,
2049
- HIDDEN: "hidden" + EVENT_KEY$5,
2050
- SHOW: "show" + EVENT_KEY$5,
2051
- SHOWN: "shown" + EVENT_KEY$5,
2052
- FOCUSIN: "focusin" + EVENT_KEY$5,
2053
- RESIZE: "resize" + EVENT_KEY$5,
2054
- CLICK_DISMISS: "click.dismiss" + EVENT_KEY$5,
2055
- KEYDOWN_DISMISS: "keydown.dismiss" + EVENT_KEY$5,
2056
- MOUSEUP_DISMISS: "mouseup.dismiss" + EVENT_KEY$5,
2057
- MOUSEDOWN_DISMISS: "mousedown.dismiss" + EVENT_KEY$5,
2058
- CLICK_DATA_API: "click" + EVENT_KEY$5 + DATA_API_KEY$5
2059
- };
2060
- var ClassName$5 = {
2061
- SCROLLBAR_MEASURER: 'modal-scrollbar-measure',
2062
- BACKDROP: 'modal-backdrop',
2063
- OPEN: 'modal-open',
2064
- FADE: 'fade',
2065
- SHOW: 'show'
2066
- };
2067
- var Selector$5 = {
2068
- DIALOG: '.modal-dialog',
2069
- DATA_TOGGLE: '[data-toggle="modal"]',
2070
- DATA_DISMISS: '[data-dismiss="modal"]',
2071
- FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',
2072
- STICKY_CONTENT: '.sticky-top'
2073
- /**
2074
- * ------------------------------------------------------------------------
2075
- * Class Definition
2076
- * ------------------------------------------------------------------------
2077
- */
2078
-
2079
- };
2056
+ var EVENT_HIDE$2 = "hide" + EVENT_KEY$5;
2057
+ var EVENT_HIDE_PREVENTED = "hidePrevented" + EVENT_KEY$5;
2058
+ var EVENT_HIDDEN$2 = "hidden" + EVENT_KEY$5;
2059
+ var EVENT_SHOW$2 = "show" + EVENT_KEY$5;
2060
+ var EVENT_SHOWN$2 = "shown" + EVENT_KEY$5;
2061
+ var EVENT_FOCUSIN = "focusin" + EVENT_KEY$5;
2062
+ var EVENT_RESIZE = "resize" + EVENT_KEY$5;
2063
+ var EVENT_CLICK_DISMISS = "click.dismiss" + EVENT_KEY$5;
2064
+ var EVENT_KEYDOWN_DISMISS = "keydown.dismiss" + EVENT_KEY$5;
2065
+ var EVENT_MOUSEUP_DISMISS = "mouseup.dismiss" + EVENT_KEY$5;
2066
+ var EVENT_MOUSEDOWN_DISMISS = "mousedown.dismiss" + EVENT_KEY$5;
2067
+ var EVENT_CLICK_DATA_API$5 = "click" + EVENT_KEY$5 + DATA_API_KEY$5;
2068
+ var CLASS_NAME_SCROLLABLE = 'modal-dialog-scrollable';
2069
+ var CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure';
2070
+ var CLASS_NAME_BACKDROP = 'modal-backdrop';
2071
+ var CLASS_NAME_OPEN = 'modal-open';
2072
+ var CLASS_NAME_FADE$1 = 'fade';
2073
+ var CLASS_NAME_SHOW$3 = 'show';
2074
+ var CLASS_NAME_STATIC = 'modal-static';
2075
+ var SELECTOR_DIALOG = '.modal-dialog';
2076
+ var SELECTOR_MODAL_BODY = '.modal-body';
2077
+ var SELECTOR_DATA_TOGGLE$3 = '[data-toggle="modal"]';
2078
+ var SELECTOR_DATA_DISMISS = '[data-dismiss="modal"]';
2079
+ var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';
2080
+ var SELECTOR_STICKY_CONTENT = '.sticky-top';
2081
+ /**
2082
+ * ------------------------------------------------------------------------
2083
+ * Class Definition
2084
+ * ------------------------------------------------------------------------
2085
+ */
2080
2086
 
2081
- var Modal =
2082
- /*#__PURE__*/
2083
- function () {
2087
+ var Modal = /*#__PURE__*/function () {
2084
2088
  function Modal(element, config) {
2085
2089
  this._config = this._getConfig(config);
2086
2090
  this._element = element;
2087
- this._dialog = element.querySelector(Selector$5.DIALOG);
2091
+ this._dialog = element.querySelector(SELECTOR_DIALOG);
2088
2092
  this._backdrop = null;
2089
2093
  this._isShown = false;
2090
2094
  this._isBodyOverflowing = false;
@@ -2108,11 +2112,11 @@
2108
2112
  return;
2109
2113
  }
2110
2114
 
2111
- if ($(this._element).hasClass(ClassName$5.FADE)) {
2115
+ if ($(this._element).hasClass(CLASS_NAME_FADE$1)) {
2112
2116
  this._isTransitioning = true;
2113
2117
  }
2114
2118
 
2115
- var showEvent = $.Event(Event$5.SHOW, {
2119
+ var showEvent = $.Event(EVENT_SHOW$2, {
2116
2120
  relatedTarget: relatedTarget
2117
2121
  });
2118
2122
  $(this._element).trigger(showEvent);
@@ -2133,11 +2137,11 @@
2133
2137
 
2134
2138
  this._setResizeEvent();
2135
2139
 
2136
- $(this._element).on(Event$5.CLICK_DISMISS, Selector$5.DATA_DISMISS, function (event) {
2140
+ $(this._element).on(EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function (event) {
2137
2141
  return _this.hide(event);
2138
2142
  });
2139
- $(this._dialog).on(Event$5.MOUSEDOWN_DISMISS, function () {
2140
- $(_this._element).one(Event$5.MOUSEUP_DISMISS, function (event) {
2143
+ $(this._dialog).on(EVENT_MOUSEDOWN_DISMISS, function () {
2144
+ $(_this._element).one(EVENT_MOUSEUP_DISMISS, function (event) {
2141
2145
  if ($(event.target).is(_this._element)) {
2142
2146
  _this._ignoreBackdropClick = true;
2143
2147
  }
@@ -2160,7 +2164,7 @@
2160
2164
  return;
2161
2165
  }
2162
2166
 
2163
- var hideEvent = $.Event(Event$5.HIDE);
2167
+ var hideEvent = $.Event(EVENT_HIDE$2);
2164
2168
  $(this._element).trigger(hideEvent);
2165
2169
 
2166
2170
  if (!this._isShown || hideEvent.isDefaultPrevented()) {
@@ -2168,7 +2172,7 @@
2168
2172
  }
2169
2173
 
2170
2174
  this._isShown = false;
2171
- var transition = $(this._element).hasClass(ClassName$5.FADE);
2175
+ var transition = $(this._element).hasClass(CLASS_NAME_FADE$1);
2172
2176
 
2173
2177
  if (transition) {
2174
2178
  this._isTransitioning = true;
@@ -2178,10 +2182,10 @@
2178
2182
 
2179
2183
  this._setResizeEvent();
2180
2184
 
2181
- $(document).off(Event$5.FOCUSIN);
2182
- $(this._element).removeClass(ClassName$5.SHOW);
2183
- $(this._element).off(Event$5.CLICK_DISMISS);
2184
- $(this._dialog).off(Event$5.MOUSEDOWN_DISMISS);
2185
+ $(document).off(EVENT_FOCUSIN);
2186
+ $(this._element).removeClass(CLASS_NAME_SHOW$3);
2187
+ $(this._element).off(EVENT_CLICK_DISMISS);
2188
+ $(this._dialog).off(EVENT_MOUSEDOWN_DISMISS);
2185
2189
 
2186
2190
  if (transition) {
2187
2191
  var transitionDuration = Util.getTransitionDurationFromElement(this._element);
@@ -2198,12 +2202,12 @@
2198
2202
  return $(htmlElement).off(EVENT_KEY$5);
2199
2203
  });
2200
2204
  /**
2201
- * `document` has 2 events `Event.FOCUSIN` and `Event.CLICK_DATA_API`
2205
+ * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`
2202
2206
  * Do not move `document` in `htmlElements` array
2203
- * It will remove `Event.CLICK_DATA_API` event that should remain
2207
+ * It will remove `EVENT_CLICK_DATA_API` event that should remain
2204
2208
  */
2205
2209
 
2206
- $(document).off(Event$5.FOCUSIN);
2210
+ $(document).off(EVENT_FOCUSIN);
2207
2211
  $.removeData(this._element, DATA_KEY$5);
2208
2212
  this._config = null;
2209
2213
  this._element = null;
@@ -2218,19 +2222,57 @@
2218
2222
 
2219
2223
  _proto.handleUpdate = function handleUpdate() {
2220
2224
  this._adjustDialog();
2221
- }; // Private
2222
-
2225
+ } // Private
2226
+ ;
2223
2227
 
2224
2228
  _proto._getConfig = function _getConfig(config) {
2225
- config = _objectSpread({}, Default$3, config);
2229
+ config = _extends({}, Default$3, config);
2226
2230
  Util.typeCheckConfig(NAME$5, config, DefaultType$3);
2227
2231
  return config;
2228
2232
  };
2229
2233
 
2230
- _proto._showElement = function _showElement(relatedTarget) {
2234
+ _proto._triggerBackdropTransition = function _triggerBackdropTransition() {
2231
2235
  var _this3 = this;
2232
2236
 
2233
- var transition = $(this._element).hasClass(ClassName$5.FADE);
2237
+ if (this._config.backdrop === 'static') {
2238
+ var hideEventPrevented = $.Event(EVENT_HIDE_PREVENTED);
2239
+ $(this._element).trigger(hideEventPrevented);
2240
+
2241
+ if (hideEventPrevented.defaultPrevented) {
2242
+ return;
2243
+ }
2244
+
2245
+ var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
2246
+
2247
+ if (!isModalOverflowing) {
2248
+ this._element.style.overflowY = 'hidden';
2249
+ }
2250
+
2251
+ this._element.classList.add(CLASS_NAME_STATIC);
2252
+
2253
+ var modalTransitionDuration = Util.getTransitionDurationFromElement(this._dialog);
2254
+ $(this._element).off(Util.TRANSITION_END);
2255
+ $(this._element).one(Util.TRANSITION_END, function () {
2256
+ _this3._element.classList.remove(CLASS_NAME_STATIC);
2257
+
2258
+ if (!isModalOverflowing) {
2259
+ $(_this3._element).one(Util.TRANSITION_END, function () {
2260
+ _this3._element.style.overflowY = '';
2261
+ }).emulateTransitionEnd(_this3._element, modalTransitionDuration);
2262
+ }
2263
+ }).emulateTransitionEnd(modalTransitionDuration);
2264
+
2265
+ this._element.focus();
2266
+ } else {
2267
+ this.hide();
2268
+ }
2269
+ };
2270
+
2271
+ _proto._showElement = function _showElement(relatedTarget) {
2272
+ var _this4 = this;
2273
+
2274
+ var transition = $(this._element).hasClass(CLASS_NAME_FADE$1);
2275
+ var modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null;
2234
2276
 
2235
2277
  if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
2236
2278
  // Don't move modal's DOM position
@@ -2243,29 +2285,35 @@
2243
2285
 
2244
2286
  this._element.setAttribute('aria-modal', true);
2245
2287
 
2246
- this._element.scrollTop = 0;
2288
+ this._element.setAttribute('role', 'dialog');
2289
+
2290
+ if ($(this._dialog).hasClass(CLASS_NAME_SCROLLABLE) && modalBody) {
2291
+ modalBody.scrollTop = 0;
2292
+ } else {
2293
+ this._element.scrollTop = 0;
2294
+ }
2247
2295
 
2248
2296
  if (transition) {
2249
2297
  Util.reflow(this._element);
2250
2298
  }
2251
2299
 
2252
- $(this._element).addClass(ClassName$5.SHOW);
2300
+ $(this._element).addClass(CLASS_NAME_SHOW$3);
2253
2301
 
2254
2302
  if (this._config.focus) {
2255
2303
  this._enforceFocus();
2256
2304
  }
2257
2305
 
2258
- var shownEvent = $.Event(Event$5.SHOWN, {
2306
+ var shownEvent = $.Event(EVENT_SHOWN$2, {
2259
2307
  relatedTarget: relatedTarget
2260
2308
  });
2261
2309
 
2262
2310
  var transitionComplete = function transitionComplete() {
2263
- if (_this3._config.focus) {
2264
- _this3._element.focus();
2311
+ if (_this4._config.focus) {
2312
+ _this4._element.focus();
2265
2313
  }
2266
2314
 
2267
- _this3._isTransitioning = false;
2268
- $(_this3._element).trigger(shownEvent);
2315
+ _this4._isTransitioning = false;
2316
+ $(_this4._element).trigger(shownEvent);
2269
2317
  };
2270
2318
 
2271
2319
  if (transition) {
@@ -2277,46 +2325,48 @@
2277
2325
  };
2278
2326
 
2279
2327
  _proto._enforceFocus = function _enforceFocus() {
2280
- var _this4 = this;
2328
+ var _this5 = this;
2281
2329
 
2282
- $(document).off(Event$5.FOCUSIN) // Guard against infinite focus loop
2283
- .on(Event$5.FOCUSIN, function (event) {
2284
- if (document !== event.target && _this4._element !== event.target && $(_this4._element).has(event.target).length === 0) {
2285
- _this4._element.focus();
2330
+ $(document).off(EVENT_FOCUSIN) // Guard against infinite focus loop
2331
+ .on(EVENT_FOCUSIN, function (event) {
2332
+ if (document !== event.target && _this5._element !== event.target && $(_this5._element).has(event.target).length === 0) {
2333
+ _this5._element.focus();
2286
2334
  }
2287
2335
  });
2288
2336
  };
2289
2337
 
2290
2338
  _proto._setEscapeEvent = function _setEscapeEvent() {
2291
- var _this5 = this;
2339
+ var _this6 = this;
2292
2340
 
2293
- if (this._isShown && this._config.keyboard) {
2294
- $(this._element).on(Event$5.KEYDOWN_DISMISS, function (event) {
2295
- if (event.which === ESCAPE_KEYCODE$1) {
2341
+ if (this._isShown) {
2342
+ $(this._element).on(EVENT_KEYDOWN_DISMISS, function (event) {
2343
+ if (_this6._config.keyboard && event.which === ESCAPE_KEYCODE$1) {
2296
2344
  event.preventDefault();
2297
2345
 
2298
- _this5.hide();
2346
+ _this6.hide();
2347
+ } else if (!_this6._config.keyboard && event.which === ESCAPE_KEYCODE$1) {
2348
+ _this6._triggerBackdropTransition();
2299
2349
  }
2300
2350
  });
2301
2351
  } else if (!this._isShown) {
2302
- $(this._element).off(Event$5.KEYDOWN_DISMISS);
2352
+ $(this._element).off(EVENT_KEYDOWN_DISMISS);
2303
2353
  }
2304
2354
  };
2305
2355
 
2306
2356
  _proto._setResizeEvent = function _setResizeEvent() {
2307
- var _this6 = this;
2357
+ var _this7 = this;
2308
2358
 
2309
2359
  if (this._isShown) {
2310
- $(window).on(Event$5.RESIZE, function (event) {
2311
- return _this6.handleUpdate(event);
2360
+ $(window).on(EVENT_RESIZE, function (event) {
2361
+ return _this7.handleUpdate(event);
2312
2362
  });
2313
2363
  } else {
2314
- $(window).off(Event$5.RESIZE);
2364
+ $(window).off(EVENT_RESIZE);
2315
2365
  }
2316
2366
  };
2317
2367
 
2318
2368
  _proto._hideModal = function _hideModal() {
2319
- var _this7 = this;
2369
+ var _this8 = this;
2320
2370
 
2321
2371
  this._element.style.display = 'none';
2322
2372
 
@@ -2324,16 +2374,18 @@
2324
2374
 
2325
2375
  this._element.removeAttribute('aria-modal');
2326
2376
 
2377
+ this._element.removeAttribute('role');
2378
+
2327
2379
  this._isTransitioning = false;
2328
2380
 
2329
2381
  this._showBackdrop(function () {
2330
- $(document.body).removeClass(ClassName$5.OPEN);
2382
+ $(document.body).removeClass(CLASS_NAME_OPEN);
2331
2383
 
2332
- _this7._resetAdjustments();
2384
+ _this8._resetAdjustments();
2333
2385
 
2334
- _this7._resetScrollbar();
2386
+ _this8._resetScrollbar();
2335
2387
 
2336
- $(_this7._element).trigger(Event$5.HIDDEN);
2388
+ $(_this8._element).trigger(EVENT_HIDDEN$2);
2337
2389
  });
2338
2390
  };
2339
2391
 
@@ -2345,22 +2397,22 @@
2345
2397
  };
2346
2398
 
2347
2399
  _proto._showBackdrop = function _showBackdrop(callback) {
2348
- var _this8 = this;
2400
+ var _this9 = this;
2349
2401
 
2350
- var animate = $(this._element).hasClass(ClassName$5.FADE) ? ClassName$5.FADE : '';
2402
+ var animate = $(this._element).hasClass(CLASS_NAME_FADE$1) ? CLASS_NAME_FADE$1 : '';
2351
2403
 
2352
2404
  if (this._isShown && this._config.backdrop) {
2353
2405
  this._backdrop = document.createElement('div');
2354
- this._backdrop.className = ClassName$5.BACKDROP;
2406
+ this._backdrop.className = CLASS_NAME_BACKDROP;
2355
2407
 
2356
2408
  if (animate) {
2357
2409
  this._backdrop.classList.add(animate);
2358
2410
  }
2359
2411
 
2360
2412
  $(this._backdrop).appendTo(document.body);
2361
- $(this._element).on(Event$5.CLICK_DISMISS, function (event) {
2362
- if (_this8._ignoreBackdropClick) {
2363
- _this8._ignoreBackdropClick = false;
2413
+ $(this._element).on(EVENT_CLICK_DISMISS, function (event) {
2414
+ if (_this9._ignoreBackdropClick) {
2415
+ _this9._ignoreBackdropClick = false;
2364
2416
  return;
2365
2417
  }
2366
2418
 
@@ -2368,18 +2420,14 @@
2368
2420
  return;
2369
2421
  }
2370
2422
 
2371
- if (_this8._config.backdrop === 'static') {
2372
- _this8._element.focus();
2373
- } else {
2374
- _this8.hide();
2375
- }
2423
+ _this9._triggerBackdropTransition();
2376
2424
  });
2377
2425
 
2378
2426
  if (animate) {
2379
2427
  Util.reflow(this._backdrop);
2380
2428
  }
2381
2429
 
2382
- $(this._backdrop).addClass(ClassName$5.SHOW);
2430
+ $(this._backdrop).addClass(CLASS_NAME_SHOW$3);
2383
2431
 
2384
2432
  if (!callback) {
2385
2433
  return;
@@ -2393,17 +2441,17 @@
2393
2441
  var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);
2394
2442
  $(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);
2395
2443
  } else if (!this._isShown && this._backdrop) {
2396
- $(this._backdrop).removeClass(ClassName$5.SHOW);
2444
+ $(this._backdrop).removeClass(CLASS_NAME_SHOW$3);
2397
2445
 
2398
2446
  var callbackRemove = function callbackRemove() {
2399
- _this8._removeBackdrop();
2447
+ _this9._removeBackdrop();
2400
2448
 
2401
2449
  if (callback) {
2402
2450
  callback();
2403
2451
  }
2404
2452
  };
2405
2453
 
2406
- if ($(this._element).hasClass(ClassName$5.FADE)) {
2454
+ if ($(this._element).hasClass(CLASS_NAME_FADE$1)) {
2407
2455
  var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);
2408
2456
 
2409
2457
  $(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);
@@ -2413,11 +2461,11 @@
2413
2461
  } else if (callback) {
2414
2462
  callback();
2415
2463
  }
2416
- }; // ----------------------------------------------------------------------
2464
+ } // ----------------------------------------------------------------------
2417
2465
  // the following methods are used to handle overflowing modals
2418
2466
  // todo (fat): these should probably be refactored out of modal.js
2419
2467
  // ----------------------------------------------------------------------
2420
-
2468
+ ;
2421
2469
 
2422
2470
  _proto._adjustDialog = function _adjustDialog() {
2423
2471
  var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
@@ -2438,29 +2486,29 @@
2438
2486
 
2439
2487
  _proto._checkScrollbar = function _checkScrollbar() {
2440
2488
  var rect = document.body.getBoundingClientRect();
2441
- this._isBodyOverflowing = rect.left + rect.right < window.innerWidth;
2489
+ this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth;
2442
2490
  this._scrollbarWidth = this._getScrollbarWidth();
2443
2491
  };
2444
2492
 
2445
2493
  _proto._setScrollbar = function _setScrollbar() {
2446
- var _this9 = this;
2494
+ var _this10 = this;
2447
2495
 
2448
2496
  if (this._isBodyOverflowing) {
2449
2497
  // Note: DOMNode.style.paddingRight returns the actual value or '' if not set
2450
2498
  // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set
2451
- var fixedContent = [].slice.call(document.querySelectorAll(Selector$5.FIXED_CONTENT));
2452
- var stickyContent = [].slice.call(document.querySelectorAll(Selector$5.STICKY_CONTENT)); // Adjust fixed content padding
2499
+ var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));
2500
+ var stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT)); // Adjust fixed content padding
2453
2501
 
2454
2502
  $(fixedContent).each(function (index, element) {
2455
2503
  var actualPadding = element.style.paddingRight;
2456
2504
  var calculatedPadding = $(element).css('padding-right');
2457
- $(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this9._scrollbarWidth + "px");
2505
+ $(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this10._scrollbarWidth + "px");
2458
2506
  }); // Adjust sticky content margin
2459
2507
 
2460
2508
  $(stickyContent).each(function (index, element) {
2461
2509
  var actualMargin = element.style.marginRight;
2462
2510
  var calculatedMargin = $(element).css('margin-right');
2463
- $(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this9._scrollbarWidth + "px");
2511
+ $(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this10._scrollbarWidth + "px");
2464
2512
  }); // Adjust body padding
2465
2513
 
2466
2514
  var actualPadding = document.body.style.paddingRight;
@@ -2468,19 +2516,19 @@
2468
2516
  $(document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + "px");
2469
2517
  }
2470
2518
 
2471
- $(document.body).addClass(ClassName$5.OPEN);
2519
+ $(document.body).addClass(CLASS_NAME_OPEN);
2472
2520
  };
2473
2521
 
2474
2522
  _proto._resetScrollbar = function _resetScrollbar() {
2475
2523
  // Restore fixed content padding
2476
- var fixedContent = [].slice.call(document.querySelectorAll(Selector$5.FIXED_CONTENT));
2524
+ var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));
2477
2525
  $(fixedContent).each(function (index, element) {
2478
2526
  var padding = $(element).data('padding-right');
2479
2527
  $(element).removeData('padding-right');
2480
2528
  element.style.paddingRight = padding ? padding : '';
2481
2529
  }); // Restore sticky content
2482
2530
 
2483
- var elements = [].slice.call(document.querySelectorAll("" + Selector$5.STICKY_CONTENT));
2531
+ var elements = [].slice.call(document.querySelectorAll("" + SELECTOR_STICKY_CONTENT));
2484
2532
  $(elements).each(function (index, element) {
2485
2533
  var margin = $(element).data('margin-right');
2486
2534
 
@@ -2497,19 +2545,19 @@
2497
2545
  _proto._getScrollbarWidth = function _getScrollbarWidth() {
2498
2546
  // thx d.walsh
2499
2547
  var scrollDiv = document.createElement('div');
2500
- scrollDiv.className = ClassName$5.SCROLLBAR_MEASURER;
2548
+ scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER;
2501
2549
  document.body.appendChild(scrollDiv);
2502
2550
  var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
2503
2551
  document.body.removeChild(scrollDiv);
2504
2552
  return scrollbarWidth;
2505
- }; // Static
2506
-
2553
+ } // Static
2554
+ ;
2507
2555
 
2508
2556
  Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {
2509
2557
  return this.each(function () {
2510
2558
  var data = $(this).data(DATA_KEY$5);
2511
2559
 
2512
- var _config = _objectSpread({}, Default$3, $(this).data(), typeof config === 'object' && config ? config : {});
2560
+ var _config = _extends({}, Default$3, $(this).data(), typeof config === 'object' && config ? config : {});
2513
2561
 
2514
2562
  if (!data) {
2515
2563
  data = new Modal(this, _config);
@@ -2549,8 +2597,8 @@
2549
2597
  */
2550
2598
 
2551
2599
 
2552
- $(document).on(Event$5.CLICK_DATA_API, Selector$5.DATA_TOGGLE, function (event) {
2553
- var _this10 = this;
2600
+ $(document).on(EVENT_CLICK_DATA_API$5, SELECTOR_DATA_TOGGLE$3, function (event) {
2601
+ var _this11 = this;
2554
2602
 
2555
2603
  var target;
2556
2604
  var selector = Util.getSelectorFromElement(this);
@@ -2559,21 +2607,21 @@
2559
2607
  target = document.querySelector(selector);
2560
2608
  }
2561
2609
 
2562
- var config = $(target).data(DATA_KEY$5) ? 'toggle' : _objectSpread({}, $(target).data(), $(this).data());
2610
+ var config = $(target).data(DATA_KEY$5) ? 'toggle' : _extends({}, $(target).data(), $(this).data());
2563
2611
 
2564
2612
  if (this.tagName === 'A' || this.tagName === 'AREA') {
2565
2613
  event.preventDefault();
2566
2614
  }
2567
2615
 
2568
- var $target = $(target).one(Event$5.SHOW, function (showEvent) {
2616
+ var $target = $(target).one(EVENT_SHOW$2, function (showEvent) {
2569
2617
  if (showEvent.isDefaultPrevented()) {
2570
2618
  // Only register focus restorer if modal will actually get shown
2571
2619
  return;
2572
2620
  }
2573
2621
 
2574
- $target.one(Event$5.HIDDEN, function () {
2575
- if ($(_this10).is(':visible')) {
2576
- _this10.focus();
2622
+ $target.one(EVENT_HIDDEN$2, function () {
2623
+ if ($(_this11).is(':visible')) {
2624
+ _this11.focus();
2577
2625
  }
2578
2626
  });
2579
2627
  });
@@ -2594,6 +2642,127 @@
2594
2642
  return Modal._jQueryInterface;
2595
2643
  };
2596
2644
 
2645
+ /**
2646
+ * --------------------------------------------------------------------------
2647
+ * Bootstrap (v4.5.2): tools/sanitizer.js
2648
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
2649
+ * --------------------------------------------------------------------------
2650
+ */
2651
+ var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href'];
2652
+ var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
2653
+ var DefaultWhitelist = {
2654
+ // Global attributes allowed on any supplied element below.
2655
+ '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
2656
+ a: ['target', 'href', 'title', 'rel'],
2657
+ area: [],
2658
+ b: [],
2659
+ br: [],
2660
+ col: [],
2661
+ code: [],
2662
+ div: [],
2663
+ em: [],
2664
+ hr: [],
2665
+ h1: [],
2666
+ h2: [],
2667
+ h3: [],
2668
+ h4: [],
2669
+ h5: [],
2670
+ h6: [],
2671
+ i: [],
2672
+ img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],
2673
+ li: [],
2674
+ ol: [],
2675
+ p: [],
2676
+ pre: [],
2677
+ s: [],
2678
+ small: [],
2679
+ span: [],
2680
+ sub: [],
2681
+ sup: [],
2682
+ strong: [],
2683
+ u: [],
2684
+ ul: []
2685
+ };
2686
+ /**
2687
+ * A pattern that recognizes a commonly useful subset of URLs that are safe.
2688
+ *
2689
+ * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
2690
+ */
2691
+
2692
+ var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/gi;
2693
+ /**
2694
+ * A pattern that matches safe data URLs. Only matches image, video and audio types.
2695
+ *
2696
+ * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
2697
+ */
2698
+
2699
+ 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;
2700
+
2701
+ function allowedAttribute(attr, allowedAttributeList) {
2702
+ var attrName = attr.nodeName.toLowerCase();
2703
+
2704
+ if (allowedAttributeList.indexOf(attrName) !== -1) {
2705
+ if (uriAttrs.indexOf(attrName) !== -1) {
2706
+ return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN));
2707
+ }
2708
+
2709
+ return true;
2710
+ }
2711
+
2712
+ var regExp = allowedAttributeList.filter(function (attrRegex) {
2713
+ return attrRegex instanceof RegExp;
2714
+ }); // Check if a regular expression validates the attribute.
2715
+
2716
+ for (var i = 0, len = regExp.length; i < len; i++) {
2717
+ if (attrName.match(regExp[i])) {
2718
+ return true;
2719
+ }
2720
+ }
2721
+
2722
+ return false;
2723
+ }
2724
+
2725
+ function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {
2726
+ if (unsafeHtml.length === 0) {
2727
+ return unsafeHtml;
2728
+ }
2729
+
2730
+ if (sanitizeFn && typeof sanitizeFn === 'function') {
2731
+ return sanitizeFn(unsafeHtml);
2732
+ }
2733
+
2734
+ var domParser = new window.DOMParser();
2735
+ var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');
2736
+ var whitelistKeys = Object.keys(whiteList);
2737
+ var elements = [].slice.call(createdDocument.body.querySelectorAll('*'));
2738
+
2739
+ var _loop = function _loop(i, len) {
2740
+ var el = elements[i];
2741
+ var elName = el.nodeName.toLowerCase();
2742
+
2743
+ if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {
2744
+ el.parentNode.removeChild(el);
2745
+ return "continue";
2746
+ }
2747
+
2748
+ var attributeList = [].slice.call(el.attributes);
2749
+ var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []);
2750
+ attributeList.forEach(function (attr) {
2751
+ if (!allowedAttribute(attr, whitelistedAttributes)) {
2752
+ el.removeAttribute(attr.nodeName);
2753
+ }
2754
+ });
2755
+ };
2756
+
2757
+ for (var i = 0, len = elements.length; i < len; i++) {
2758
+ var _ret = _loop(i);
2759
+
2760
+ if (_ret === "continue") continue;
2761
+ }
2762
+
2763
+ return createdDocument.body.innerHTML;
2764
+ }
2765
+
2597
2766
  /**
2598
2767
  * ------------------------------------------------------------------------
2599
2768
  * Constants
@@ -2601,12 +2770,13 @@
2601
2770
  */
2602
2771
 
2603
2772
  var NAME$6 = 'tooltip';
2604
- var VERSION$6 = '4.2.1';
2773
+ var VERSION$6 = '4.5.2';
2605
2774
  var DATA_KEY$6 = 'bs.tooltip';
2606
2775
  var EVENT_KEY$6 = "." + DATA_KEY$6;
2607
2776
  var JQUERY_NO_CONFLICT$6 = $.fn[NAME$6];
2608
2777
  var CLASS_PREFIX = 'bs-tooltip';
2609
2778
  var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g');
2779
+ var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn'];
2610
2780
  var DefaultType$4 = {
2611
2781
  animation: 'boolean',
2612
2782
  template: 'string',
@@ -2616,12 +2786,16 @@
2616
2786
  html: 'boolean',
2617
2787
  selector: '(string|boolean)',
2618
2788
  placement: '(string|function)',
2619
- offset: '(number|string)',
2789
+ offset: '(number|string|function)',
2620
2790
  container: '(string|element|boolean)',
2621
2791
  fallbackPlacement: '(string|array)',
2622
- boundary: '(string|element)'
2792
+ boundary: '(string|element)',
2793
+ sanitize: 'boolean',
2794
+ sanitizeFn: '(null|function)',
2795
+ whiteList: 'object',
2796
+ popperConfig: '(null|object)'
2623
2797
  };
2624
- var AttachmentMap$1 = {
2798
+ var AttachmentMap = {
2625
2799
  AUTO: 'auto',
2626
2800
  TOP: 'top',
2627
2801
  RIGHT: 'right',
@@ -2640,13 +2814,15 @@
2640
2814
  offset: 0,
2641
2815
  container: false,
2642
2816
  fallbackPlacement: 'flip',
2643
- boundary: 'scrollParent'
2644
- };
2645
- var HoverState = {
2646
- SHOW: 'show',
2647
- OUT: 'out'
2817
+ boundary: 'scrollParent',
2818
+ sanitize: true,
2819
+ sanitizeFn: null,
2820
+ whiteList: DefaultWhitelist,
2821
+ popperConfig: null
2648
2822
  };
2649
- var Event$6 = {
2823
+ var HOVER_STATE_SHOW = 'show';
2824
+ var HOVER_STATE_OUT = 'out';
2825
+ var Event = {
2650
2826
  HIDE: "hide" + EVENT_KEY$6,
2651
2827
  HIDDEN: "hidden" + EVENT_KEY$6,
2652
2828
  SHOW: "show" + EVENT_KEY$6,
@@ -2658,36 +2834,22 @@
2658
2834
  MOUSEENTER: "mouseenter" + EVENT_KEY$6,
2659
2835
  MOUSELEAVE: "mouseleave" + EVENT_KEY$6
2660
2836
  };
2661
- var ClassName$6 = {
2662
- FADE: 'fade',
2663
- SHOW: 'show'
2664
- };
2665
- var Selector$6 = {
2666
- TOOLTIP: '.tooltip',
2667
- TOOLTIP_INNER: '.tooltip-inner',
2668
- ARROW: '.arrow'
2669
- };
2670
- var Trigger = {
2671
- HOVER: 'hover',
2672
- FOCUS: 'focus',
2673
- CLICK: 'click',
2674
- MANUAL: 'manual'
2675
- /**
2676
- * ------------------------------------------------------------------------
2677
- * Class Definition
2678
- * ------------------------------------------------------------------------
2679
- */
2680
-
2681
- };
2837
+ var CLASS_NAME_FADE$2 = 'fade';
2838
+ var CLASS_NAME_SHOW$4 = 'show';
2839
+ var SELECTOR_TOOLTIP_INNER = '.tooltip-inner';
2840
+ var SELECTOR_ARROW = '.arrow';
2841
+ var TRIGGER_HOVER = 'hover';
2842
+ var TRIGGER_FOCUS = 'focus';
2843
+ var TRIGGER_CLICK = 'click';
2844
+ var TRIGGER_MANUAL = 'manual';
2845
+ /**
2846
+ * ------------------------------------------------------------------------
2847
+ * Class Definition
2848
+ * ------------------------------------------------------------------------
2849
+ */
2682
2850
 
2683
- var Tooltip =
2684
- /*#__PURE__*/
2685
- function () {
2851
+ var Tooltip = /*#__PURE__*/function () {
2686
2852
  function Tooltip(element, config) {
2687
- /**
2688
- * Check for Popper dependency
2689
- * Popper - https://popper.js.org
2690
- */
2691
2853
  if (typeof Popper === 'undefined') {
2692
2854
  throw new TypeError('Bootstrap\'s tooltips require Popper.js (https://popper.js.org/)');
2693
2855
  } // private
@@ -2744,7 +2906,7 @@
2744
2906
  context._leave(null, context);
2745
2907
  }
2746
2908
  } else {
2747
- if ($(this.getTipElement()).hasClass(ClassName$6.SHOW)) {
2909
+ if ($(this.getTipElement()).hasClass(CLASS_NAME_SHOW$4)) {
2748
2910
  this._leave(null, this);
2749
2911
 
2750
2912
  return;
@@ -2758,7 +2920,7 @@
2758
2920
  clearTimeout(this._timeout);
2759
2921
  $.removeData(this.element, this.constructor.DATA_KEY);
2760
2922
  $(this.element).off(this.constructor.EVENT_KEY);
2761
- $(this.element).closest('.modal').off('hide.bs.modal');
2923
+ $(this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler);
2762
2924
 
2763
2925
  if (this.tip) {
2764
2926
  $(this.tip).remove();
@@ -2769,7 +2931,7 @@
2769
2931
  this._hoverState = null;
2770
2932
  this._activeTrigger = null;
2771
2933
 
2772
- if (this._popper !== null) {
2934
+ if (this._popper) {
2773
2935
  this._popper.destroy();
2774
2936
  }
2775
2937
 
@@ -2804,7 +2966,7 @@
2804
2966
  this.setContent();
2805
2967
 
2806
2968
  if (this.config.animation) {
2807
- $(tip).addClass(ClassName$6.FADE);
2969
+ $(tip).addClass(CLASS_NAME_FADE$2);
2808
2970
  }
2809
2971
 
2810
2972
  var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;
@@ -2822,32 +2984,8 @@
2822
2984
  }
2823
2985
 
2824
2986
  $(this.element).trigger(this.constructor.Event.INSERTED);
2825
- this._popper = new Popper(this.element, tip, {
2826
- placement: attachment,
2827
- modifiers: {
2828
- offset: {
2829
- offset: this.config.offset
2830
- },
2831
- flip: {
2832
- behavior: this.config.fallbackPlacement
2833
- },
2834
- arrow: {
2835
- element: Selector$6.ARROW
2836
- },
2837
- preventOverflow: {
2838
- boundariesElement: this.config.boundary
2839
- }
2840
- },
2841
- onCreate: function onCreate(data) {
2842
- if (data.originalPlacement !== data.placement) {
2843
- _this._handlePopperPlacementChange(data);
2844
- }
2845
- },
2846
- onUpdate: function onUpdate(data) {
2847
- return _this._handlePopperPlacementChange(data);
2848
- }
2849
- });
2850
- $(tip).addClass(ClassName$6.SHOW); // If this is a touch-enabled device we add extra
2987
+ this._popper = new Popper(this.element, tip, this._getPopperConfig(attachment));
2988
+ $(tip).addClass(CLASS_NAME_SHOW$4); // If this is a touch-enabled device we add extra
2851
2989
  // empty mouseover listeners to the body's immediate children;
2852
2990
  // only needed because of broken event delegation on iOS
2853
2991
  // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
@@ -2865,12 +3003,12 @@
2865
3003
  _this._hoverState = null;
2866
3004
  $(_this.element).trigger(_this.constructor.Event.SHOWN);
2867
3005
 
2868
- if (prevHoverState === HoverState.OUT) {
3006
+ if (prevHoverState === HOVER_STATE_OUT) {
2869
3007
  _this._leave(null, _this);
2870
3008
  }
2871
3009
  };
2872
3010
 
2873
- if ($(this.tip).hasClass(ClassName$6.FADE)) {
3011
+ if ($(this.tip).hasClass(CLASS_NAME_FADE$2)) {
2874
3012
  var transitionDuration = Util.getTransitionDurationFromElement(this.tip);
2875
3013
  $(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
2876
3014
  } else {
@@ -2886,7 +3024,7 @@
2886
3024
  var hideEvent = $.Event(this.constructor.Event.HIDE);
2887
3025
 
2888
3026
  var complete = function complete() {
2889
- if (_this2._hoverState !== HoverState.SHOW && tip.parentNode) {
3027
+ if (_this2._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {
2890
3028
  tip.parentNode.removeChild(tip);
2891
3029
  }
2892
3030
 
@@ -2911,18 +3049,18 @@
2911
3049
  return;
2912
3050
  }
2913
3051
 
2914
- $(tip).removeClass(ClassName$6.SHOW); // If this is a touch-enabled device we remove the extra
3052
+ $(tip).removeClass(CLASS_NAME_SHOW$4); // If this is a touch-enabled device we remove the extra
2915
3053
  // empty mouseover listeners we added for iOS support
2916
3054
 
2917
3055
  if ('ontouchstart' in document.documentElement) {
2918
3056
  $(document.body).children().off('mouseover', null, $.noop);
2919
3057
  }
2920
3058
 
2921
- this._activeTrigger[Trigger.CLICK] = false;
2922
- this._activeTrigger[Trigger.FOCUS] = false;
2923
- this._activeTrigger[Trigger.HOVER] = false;
3059
+ this._activeTrigger[TRIGGER_CLICK] = false;
3060
+ this._activeTrigger[TRIGGER_FOCUS] = false;
3061
+ this._activeTrigger[TRIGGER_HOVER] = false;
2924
3062
 
2925
- if ($(this.tip).hasClass(ClassName$6.FADE)) {
3063
+ if ($(this.tip).hasClass(CLASS_NAME_FADE$2)) {
2926
3064
  var transitionDuration = Util.getTransitionDurationFromElement(tip);
2927
3065
  $(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
2928
3066
  } else {
@@ -2936,8 +3074,8 @@
2936
3074
  if (this._popper !== null) {
2937
3075
  this._popper.scheduleUpdate();
2938
3076
  }
2939
- }; // Protected
2940
-
3077
+ } // Protected
3078
+ ;
2941
3079
 
2942
3080
  _proto.isWithContent = function isWithContent() {
2943
3081
  return Boolean(this.getTitle());
@@ -2954,24 +3092,32 @@
2954
3092
 
2955
3093
  _proto.setContent = function setContent() {
2956
3094
  var tip = this.getTipElement();
2957
- this.setElementContent($(tip.querySelectorAll(Selector$6.TOOLTIP_INNER)), this.getTitle());
2958
- $(tip).removeClass(ClassName$6.FADE + " " + ClassName$6.SHOW);
3095
+ this.setElementContent($(tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), this.getTitle());
3096
+ $(tip).removeClass(CLASS_NAME_FADE$2 + " " + CLASS_NAME_SHOW$4);
2959
3097
  };
2960
3098
 
2961
3099
  _proto.setElementContent = function setElementContent($element, content) {
2962
- var html = this.config.html;
2963
-
2964
3100
  if (typeof content === 'object' && (content.nodeType || content.jquery)) {
2965
3101
  // Content is a DOM node or a jQuery
2966
- if (html) {
3102
+ if (this.config.html) {
2967
3103
  if (!$(content).parent().is($element)) {
2968
3104
  $element.empty().append(content);
2969
3105
  }
2970
3106
  } else {
2971
3107
  $element.text($(content).text());
2972
3108
  }
3109
+
3110
+ return;
3111
+ }
3112
+
3113
+ if (this.config.html) {
3114
+ if (this.config.sanitize) {
3115
+ content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn);
3116
+ }
3117
+
3118
+ $element.html(content);
2973
3119
  } else {
2974
- $element[html ? 'html' : 'text'](content);
3120
+ $element.text(content);
2975
3121
  }
2976
3122
  };
2977
3123
 
@@ -2983,8 +3129,54 @@
2983
3129
  }
2984
3130
 
2985
3131
  return title;
2986
- }; // Private
3132
+ } // Private
3133
+ ;
3134
+
3135
+ _proto._getPopperConfig = function _getPopperConfig(attachment) {
3136
+ var _this3 = this;
3137
+
3138
+ var defaultBsConfig = {
3139
+ placement: attachment,
3140
+ modifiers: {
3141
+ offset: this._getOffset(),
3142
+ flip: {
3143
+ behavior: this.config.fallbackPlacement
3144
+ },
3145
+ arrow: {
3146
+ element: SELECTOR_ARROW
3147
+ },
3148
+ preventOverflow: {
3149
+ boundariesElement: this.config.boundary
3150
+ }
3151
+ },
3152
+ onCreate: function onCreate(data) {
3153
+ if (data.originalPlacement !== data.placement) {
3154
+ _this3._handlePopperPlacementChange(data);
3155
+ }
3156
+ },
3157
+ onUpdate: function onUpdate(data) {
3158
+ return _this3._handlePopperPlacementChange(data);
3159
+ }
3160
+ };
3161
+ return _extends({}, defaultBsConfig, this.config.popperConfig);
3162
+ };
3163
+
3164
+ _proto._getOffset = function _getOffset() {
3165
+ var _this4 = this;
3166
+
3167
+ var offset = {};
3168
+
3169
+ if (typeof this.config.offset === 'function') {
3170
+ offset.fn = function (data) {
3171
+ data.offsets = _extends({}, data.offsets, _this4.config.offset(data.offsets, _this4.element) || {});
3172
+ return data;
3173
+ };
3174
+ } else {
3175
+ offset.offset = this.config.offset;
3176
+ }
2987
3177
 
3178
+ return offset;
3179
+ };
2988
3180
 
2989
3181
  _proto._getContainer = function _getContainer() {
2990
3182
  if (this.config.container === false) {
@@ -2999,36 +3191,39 @@
2999
3191
  };
3000
3192
 
3001
3193
  _proto._getAttachment = function _getAttachment(placement) {
3002
- return AttachmentMap$1[placement.toUpperCase()];
3194
+ return AttachmentMap[placement.toUpperCase()];
3003
3195
  };
3004
3196
 
3005
3197
  _proto._setListeners = function _setListeners() {
3006
- var _this3 = this;
3198
+ var _this5 = this;
3007
3199
 
3008
3200
  var triggers = this.config.trigger.split(' ');
3009
3201
  triggers.forEach(function (trigger) {
3010
3202
  if (trigger === 'click') {
3011
- $(_this3.element).on(_this3.constructor.Event.CLICK, _this3.config.selector, function (event) {
3012
- return _this3.toggle(event);
3203
+ $(_this5.element).on(_this5.constructor.Event.CLICK, _this5.config.selector, function (event) {
3204
+ return _this5.toggle(event);
3013
3205
  });
3014
- } else if (trigger !== Trigger.MANUAL) {
3015
- var eventIn = trigger === Trigger.HOVER ? _this3.constructor.Event.MOUSEENTER : _this3.constructor.Event.FOCUSIN;
3016
- var eventOut = trigger === Trigger.HOVER ? _this3.constructor.Event.MOUSELEAVE : _this3.constructor.Event.FOCUSOUT;
3017
- $(_this3.element).on(eventIn, _this3.config.selector, function (event) {
3018
- return _this3._enter(event);
3019
- }).on(eventOut, _this3.config.selector, function (event) {
3020
- return _this3._leave(event);
3206
+ } else if (trigger !== TRIGGER_MANUAL) {
3207
+ var eventIn = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSEENTER : _this5.constructor.Event.FOCUSIN;
3208
+ var eventOut = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSELEAVE : _this5.constructor.Event.FOCUSOUT;
3209
+ $(_this5.element).on(eventIn, _this5.config.selector, function (event) {
3210
+ return _this5._enter(event);
3211
+ }).on(eventOut, _this5.config.selector, function (event) {
3212
+ return _this5._leave(event);
3021
3213
  });
3022
3214
  }
3023
3215
  });
3024
- $(this.element).closest('.modal').on('hide.bs.modal', function () {
3025
- if (_this3.element) {
3026
- _this3.hide();
3216
+
3217
+ this._hideModalHandler = function () {
3218
+ if (_this5.element) {
3219
+ _this5.hide();
3027
3220
  }
3028
- });
3221
+ };
3222
+
3223
+ $(this.element).closest('.modal').on('hide.bs.modal', this._hideModalHandler);
3029
3224
 
3030
3225
  if (this.config.selector) {
3031
- this.config = _objectSpread({}, this.config, {
3226
+ this.config = _extends({}, this.config, {
3032
3227
  trigger: 'manual',
3033
3228
  selector: ''
3034
3229
  });
@@ -3056,16 +3251,16 @@
3056
3251
  }
3057
3252
 
3058
3253
  if (event) {
3059
- context._activeTrigger[event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true;
3254
+ context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;
3060
3255
  }
3061
3256
 
3062
- if ($(context.getTipElement()).hasClass(ClassName$6.SHOW) || context._hoverState === HoverState.SHOW) {
3063
- context._hoverState = HoverState.SHOW;
3257
+ if ($(context.getTipElement()).hasClass(CLASS_NAME_SHOW$4) || context._hoverState === HOVER_STATE_SHOW) {
3258
+ context._hoverState = HOVER_STATE_SHOW;
3064
3259
  return;
3065
3260
  }
3066
3261
 
3067
3262
  clearTimeout(context._timeout);
3068
- context._hoverState = HoverState.SHOW;
3263
+ context._hoverState = HOVER_STATE_SHOW;
3069
3264
 
3070
3265
  if (!context.config.delay || !context.config.delay.show) {
3071
3266
  context.show();
@@ -3073,7 +3268,7 @@
3073
3268
  }
3074
3269
 
3075
3270
  context._timeout = setTimeout(function () {
3076
- if (context._hoverState === HoverState.SHOW) {
3271
+ if (context._hoverState === HOVER_STATE_SHOW) {
3077
3272
  context.show();
3078
3273
  }
3079
3274
  }, context.config.delay.show);
@@ -3089,7 +3284,7 @@
3089
3284
  }
3090
3285
 
3091
3286
  if (event) {
3092
- context._activeTrigger[event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false;
3287
+ context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = false;
3093
3288
  }
3094
3289
 
3095
3290
  if (context._isWithActiveTrigger()) {
@@ -3097,7 +3292,7 @@
3097
3292
  }
3098
3293
 
3099
3294
  clearTimeout(context._timeout);
3100
- context._hoverState = HoverState.OUT;
3295
+ context._hoverState = HOVER_STATE_OUT;
3101
3296
 
3102
3297
  if (!context.config.delay || !context.config.delay.hide) {
3103
3298
  context.hide();
@@ -3105,7 +3300,7 @@
3105
3300
  }
3106
3301
 
3107
3302
  context._timeout = setTimeout(function () {
3108
- if (context._hoverState === HoverState.OUT) {
3303
+ if (context._hoverState === HOVER_STATE_OUT) {
3109
3304
  context.hide();
3110
3305
  }
3111
3306
  }, context.config.delay.hide);
@@ -3122,7 +3317,13 @@
3122
3317
  };
3123
3318
 
3124
3319
  _proto._getConfig = function _getConfig(config) {
3125
- config = _objectSpread({}, this.constructor.Default, $(this.element).data(), typeof config === 'object' && config ? config : {});
3320
+ var dataAttributes = $(this.element).data();
3321
+ Object.keys(dataAttributes).forEach(function (dataAttr) {
3322
+ if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {
3323
+ delete dataAttributes[dataAttr];
3324
+ }
3325
+ });
3326
+ config = _extends({}, this.constructor.Default, dataAttributes, typeof config === 'object' && config ? config : {});
3126
3327
 
3127
3328
  if (typeof config.delay === 'number') {
3128
3329
  config.delay = {
@@ -3140,6 +3341,11 @@
3140
3341
  }
3141
3342
 
3142
3343
  Util.typeCheckConfig(NAME$6, config, this.constructor.DefaultType);
3344
+
3345
+ if (config.sanitize) {
3346
+ config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn);
3347
+ }
3348
+
3143
3349
  return config;
3144
3350
  };
3145
3351
 
@@ -3167,8 +3373,7 @@
3167
3373
  };
3168
3374
 
3169
3375
  _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) {
3170
- var popperInstance = popperData.instance;
3171
- this.tip = popperInstance.popper;
3376
+ this.tip = popperData.instance.popper;
3172
3377
 
3173
3378
  this._cleanTipClass();
3174
3379
 
@@ -3183,13 +3388,13 @@
3183
3388
  return;
3184
3389
  }
3185
3390
 
3186
- $(tip).removeClass(ClassName$6.FADE);
3391
+ $(tip).removeClass(CLASS_NAME_FADE$2);
3187
3392
  this.config.animation = false;
3188
3393
  this.hide();
3189
3394
  this.show();
3190
3395
  this.config.animation = initConfigAnimation;
3191
- }; // Static
3192
-
3396
+ } // Static
3397
+ ;
3193
3398
 
3194
3399
  Tooltip._jQueryInterface = function _jQueryInterface(config) {
3195
3400
  return this.each(function () {
@@ -3239,7 +3444,7 @@
3239
3444
  }, {
3240
3445
  key: "Event",
3241
3446
  get: function get() {
3242
- return Event$6;
3447
+ return Event;
3243
3448
  }
3244
3449
  }, {
3245
3450
  key: "EVENT_KEY",
@@ -3277,33 +3482,29 @@
3277
3482
  */
3278
3483
 
3279
3484
  var NAME$7 = 'popover';
3280
- var VERSION$7 = '4.2.1';
3485
+ var VERSION$7 = '4.5.2';
3281
3486
  var DATA_KEY$7 = 'bs.popover';
3282
3487
  var EVENT_KEY$7 = "." + DATA_KEY$7;
3283
3488
  var JQUERY_NO_CONFLICT$7 = $.fn[NAME$7];
3284
3489
  var CLASS_PREFIX$1 = 'bs-popover';
3285
3490
  var BSCLS_PREFIX_REGEX$1 = new RegExp("(^|\\s)" + CLASS_PREFIX$1 + "\\S+", 'g');
3286
3491
 
3287
- var Default$5 = _objectSpread({}, Tooltip.Default, {
3492
+ var Default$5 = _extends({}, Tooltip.Default, {
3288
3493
  placement: 'right',
3289
3494
  trigger: 'click',
3290
3495
  content: '',
3291
3496
  template: '<div class="popover" role="tooltip">' + '<div class="arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div></div>'
3292
3497
  });
3293
3498
 
3294
- var DefaultType$5 = _objectSpread({}, Tooltip.DefaultType, {
3499
+ var DefaultType$5 = _extends({}, Tooltip.DefaultType, {
3295
3500
  content: '(string|element|function)'
3296
3501
  });
3297
3502
 
3298
- var ClassName$7 = {
3299
- FADE: 'fade',
3300
- SHOW: 'show'
3301
- };
3302
- var Selector$7 = {
3303
- TITLE: '.popover-header',
3304
- CONTENT: '.popover-body'
3305
- };
3306
- var Event$7 = {
3503
+ var CLASS_NAME_FADE$3 = 'fade';
3504
+ var CLASS_NAME_SHOW$5 = 'show';
3505
+ var SELECTOR_TITLE = '.popover-header';
3506
+ var SELECTOR_CONTENT = '.popover-body';
3507
+ var Event$1 = {
3307
3508
  HIDE: "hide" + EVENT_KEY$7,
3308
3509
  HIDDEN: "hidden" + EVENT_KEY$7,
3309
3510
  SHOW: "show" + EVENT_KEY$7,
@@ -3314,17 +3515,14 @@
3314
3515
  FOCUSOUT: "focusout" + EVENT_KEY$7,
3315
3516
  MOUSEENTER: "mouseenter" + EVENT_KEY$7,
3316
3517
  MOUSELEAVE: "mouseleave" + EVENT_KEY$7
3317
- /**
3318
- * ------------------------------------------------------------------------
3319
- * Class Definition
3320
- * ------------------------------------------------------------------------
3321
- */
3322
-
3323
3518
  };
3519
+ /**
3520
+ * ------------------------------------------------------------------------
3521
+ * Class Definition
3522
+ * ------------------------------------------------------------------------
3523
+ */
3324
3524
 
3325
- var Popover =
3326
- /*#__PURE__*/
3327
- function (_Tooltip) {
3525
+ var Popover = /*#__PURE__*/function (_Tooltip) {
3328
3526
  _inheritsLoose(Popover, _Tooltip);
3329
3527
 
3330
3528
  function Popover() {
@@ -3350,7 +3548,7 @@
3350
3548
  _proto.setContent = function setContent() {
3351
3549
  var $tip = $(this.getTipElement()); // We use append for html objects to maintain js events
3352
3550
 
3353
- this.setElementContent($tip.find(Selector$7.TITLE), this.getTitle());
3551
+ this.setElementContent($tip.find(SELECTOR_TITLE), this.getTitle());
3354
3552
 
3355
3553
  var content = this._getContent();
3356
3554
 
@@ -3358,10 +3556,10 @@
3358
3556
  content = content.call(this.element);
3359
3557
  }
3360
3558
 
3361
- this.setElementContent($tip.find(Selector$7.CONTENT), content);
3362
- $tip.removeClass(ClassName$7.FADE + " " + ClassName$7.SHOW);
3363
- }; // Private
3364
-
3559
+ this.setElementContent($tip.find(SELECTOR_CONTENT), content);
3560
+ $tip.removeClass(CLASS_NAME_FADE$3 + " " + CLASS_NAME_SHOW$5);
3561
+ } // Private
3562
+ ;
3365
3563
 
3366
3564
  _proto._getContent = function _getContent() {
3367
3565
  return this.element.getAttribute('data-content') || this.config.content;
@@ -3374,8 +3572,8 @@
3374
3572
  if (tabClass !== null && tabClass.length > 0) {
3375
3573
  $tip.removeClass(tabClass.join(''));
3376
3574
  }
3377
- }; // Static
3378
-
3575
+ } // Static
3576
+ ;
3379
3577
 
3380
3578
  Popover._jQueryInterface = function _jQueryInterface(config) {
3381
3579
  return this.each(function () {
@@ -3426,7 +3624,7 @@
3426
3624
  }, {
3427
3625
  key: "Event",
3428
3626
  get: function get() {
3429
- return Event$7;
3627
+ return Event$1;
3430
3628
  }
3431
3629
  }, {
3432
3630
  key: "EVENT_KEY",
@@ -3464,7 +3662,7 @@
3464
3662
  */
3465
3663
 
3466
3664
  var NAME$8 = 'scrollspy';
3467
- var VERSION$8 = '4.2.1';
3665
+ var VERSION$8 = '4.5.2';
3468
3666
  var DATA_KEY$8 = 'bs.scrollspy';
3469
3667
  var EVENT_KEY$8 = "." + DATA_KEY$8;
3470
3668
  var DATA_API_KEY$6 = '.data-api';
@@ -3479,53 +3677,40 @@
3479
3677
  method: 'string',
3480
3678
  target: '(string|element)'
3481
3679
  };
3482
- var Event$8 = {
3483
- ACTIVATE: "activate" + EVENT_KEY$8,
3484
- SCROLL: "scroll" + EVENT_KEY$8,
3485
- LOAD_DATA_API: "load" + EVENT_KEY$8 + DATA_API_KEY$6
3486
- };
3487
- var ClassName$8 = {
3488
- DROPDOWN_ITEM: 'dropdown-item',
3489
- DROPDOWN_MENU: 'dropdown-menu',
3490
- ACTIVE: 'active'
3491
- };
3492
- var Selector$8 = {
3493
- DATA_SPY: '[data-spy="scroll"]',
3494
- ACTIVE: '.active',
3495
- NAV_LIST_GROUP: '.nav, .list-group',
3496
- NAV_LINKS: '.nav-link',
3497
- NAV_ITEMS: '.nav-item',
3498
- LIST_ITEMS: '.list-group-item',
3499
- DROPDOWN: '.dropdown',
3500
- DROPDOWN_ITEMS: '.dropdown-item',
3501
- DROPDOWN_TOGGLE: '.dropdown-toggle'
3502
- };
3503
- var OffsetMethod = {
3504
- OFFSET: 'offset',
3505
- POSITION: 'position'
3506
- /**
3507
- * ------------------------------------------------------------------------
3508
- * Class Definition
3509
- * ------------------------------------------------------------------------
3510
- */
3511
-
3512
- };
3680
+ var EVENT_ACTIVATE = "activate" + EVENT_KEY$8;
3681
+ var EVENT_SCROLL = "scroll" + EVENT_KEY$8;
3682
+ var EVENT_LOAD_DATA_API$2 = "load" + EVENT_KEY$8 + DATA_API_KEY$6;
3683
+ var CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';
3684
+ var CLASS_NAME_ACTIVE$2 = 'active';
3685
+ var SELECTOR_DATA_SPY = '[data-spy="scroll"]';
3686
+ var SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';
3687
+ var SELECTOR_NAV_LINKS = '.nav-link';
3688
+ var SELECTOR_NAV_ITEMS = '.nav-item';
3689
+ var SELECTOR_LIST_ITEMS = '.list-group-item';
3690
+ var SELECTOR_DROPDOWN = '.dropdown';
3691
+ var SELECTOR_DROPDOWN_ITEMS = '.dropdown-item';
3692
+ var SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';
3693
+ var METHOD_OFFSET = 'offset';
3694
+ var METHOD_POSITION = 'position';
3695
+ /**
3696
+ * ------------------------------------------------------------------------
3697
+ * Class Definition
3698
+ * ------------------------------------------------------------------------
3699
+ */
3513
3700
 
3514
- var ScrollSpy =
3515
- /*#__PURE__*/
3516
- function () {
3701
+ var ScrollSpy = /*#__PURE__*/function () {
3517
3702
  function ScrollSpy(element, config) {
3518
3703
  var _this = this;
3519
3704
 
3520
3705
  this._element = element;
3521
3706
  this._scrollElement = element.tagName === 'BODY' ? window : element;
3522
3707
  this._config = this._getConfig(config);
3523
- this._selector = this._config.target + " " + Selector$8.NAV_LINKS + "," + (this._config.target + " " + Selector$8.LIST_ITEMS + ",") + (this._config.target + " " + Selector$8.DROPDOWN_ITEMS);
3708
+ this._selector = this._config.target + " " + SELECTOR_NAV_LINKS + "," + (this._config.target + " " + SELECTOR_LIST_ITEMS + ",") + (this._config.target + " " + SELECTOR_DROPDOWN_ITEMS);
3524
3709
  this._offsets = [];
3525
3710
  this._targets = [];
3526
3711
  this._activeTarget = null;
3527
3712
  this._scrollHeight = 0;
3528
- $(this._scrollElement).on(Event$8.SCROLL, function (event) {
3713
+ $(this._scrollElement).on(EVENT_SCROLL, function (event) {
3529
3714
  return _this._process(event);
3530
3715
  });
3531
3716
  this.refresh();
@@ -3540,9 +3725,9 @@
3540
3725
  _proto.refresh = function refresh() {
3541
3726
  var _this2 = this;
3542
3727
 
3543
- var autoMethod = this._scrollElement === this._scrollElement.window ? OffsetMethod.OFFSET : OffsetMethod.POSITION;
3728
+ var autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION;
3544
3729
  var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;
3545
- var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0;
3730
+ var offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0;
3546
3731
  this._offsets = [];
3547
3732
  this._targets = [];
3548
3733
  this._scrollHeight = this._getScrollHeight();
@@ -3587,13 +3772,13 @@
3587
3772
  this._targets = null;
3588
3773
  this._activeTarget = null;
3589
3774
  this._scrollHeight = null;
3590
- }; // Private
3591
-
3775
+ } // Private
3776
+ ;
3592
3777
 
3593
3778
  _proto._getConfig = function _getConfig(config) {
3594
- config = _objectSpread({}, Default$6, typeof config === 'object' && config ? config : {});
3779
+ config = _extends({}, Default$6, typeof config === 'object' && config ? config : {});
3595
3780
 
3596
- if (typeof config.target !== 'string') {
3781
+ if (typeof config.target !== 'string' && Util.isElement(config.target)) {
3597
3782
  var id = $(config.target).attr('id');
3598
3783
 
3599
3784
  if (!id) {
@@ -3649,9 +3834,7 @@
3649
3834
  return;
3650
3835
  }
3651
3836
 
3652
- var offsetLength = this._offsets.length;
3653
-
3654
- for (var i = offsetLength; i--;) {
3837
+ for (var i = this._offsets.length; i--;) {
3655
3838
  var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);
3656
3839
 
3657
3840
  if (isActiveTarget) {
@@ -3671,32 +3854,32 @@
3671
3854
 
3672
3855
  var $link = $([].slice.call(document.querySelectorAll(queries.join(','))));
3673
3856
 
3674
- if ($link.hasClass(ClassName$8.DROPDOWN_ITEM)) {
3675
- $link.closest(Selector$8.DROPDOWN).find(Selector$8.DROPDOWN_TOGGLE).addClass(ClassName$8.ACTIVE);
3676
- $link.addClass(ClassName$8.ACTIVE);
3857
+ if ($link.hasClass(CLASS_NAME_DROPDOWN_ITEM)) {
3858
+ $link.closest(SELECTOR_DROPDOWN).find(SELECTOR_DROPDOWN_TOGGLE).addClass(CLASS_NAME_ACTIVE$2);
3859
+ $link.addClass(CLASS_NAME_ACTIVE$2);
3677
3860
  } else {
3678
3861
  // Set triggered link as active
3679
- $link.addClass(ClassName$8.ACTIVE); // Set triggered links parents as active
3862
+ $link.addClass(CLASS_NAME_ACTIVE$2); // Set triggered links parents as active
3680
3863
  // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
3681
3864
 
3682
- $link.parents(Selector$8.NAV_LIST_GROUP).prev(Selector$8.NAV_LINKS + ", " + Selector$8.LIST_ITEMS).addClass(ClassName$8.ACTIVE); // Handle special case when .nav-link is inside .nav-item
3865
+ $link.parents(SELECTOR_NAV_LIST_GROUP).prev(SELECTOR_NAV_LINKS + ", " + SELECTOR_LIST_ITEMS).addClass(CLASS_NAME_ACTIVE$2); // Handle special case when .nav-link is inside .nav-item
3683
3866
 
3684
- $link.parents(Selector$8.NAV_LIST_GROUP).prev(Selector$8.NAV_ITEMS).children(Selector$8.NAV_LINKS).addClass(ClassName$8.ACTIVE);
3867
+ $link.parents(SELECTOR_NAV_LIST_GROUP).prev(SELECTOR_NAV_ITEMS).children(SELECTOR_NAV_LINKS).addClass(CLASS_NAME_ACTIVE$2);
3685
3868
  }
3686
3869
 
3687
- $(this._scrollElement).trigger(Event$8.ACTIVATE, {
3870
+ $(this._scrollElement).trigger(EVENT_ACTIVATE, {
3688
3871
  relatedTarget: target
3689
3872
  });
3690
3873
  };
3691
3874
 
3692
3875
  _proto._clear = function _clear() {
3693
3876
  [].slice.call(document.querySelectorAll(this._selector)).filter(function (node) {
3694
- return node.classList.contains(ClassName$8.ACTIVE);
3877
+ return node.classList.contains(CLASS_NAME_ACTIVE$2);
3695
3878
  }).forEach(function (node) {
3696
- return node.classList.remove(ClassName$8.ACTIVE);
3879
+ return node.classList.remove(CLASS_NAME_ACTIVE$2);
3697
3880
  });
3698
- }; // Static
3699
-
3881
+ } // Static
3882
+ ;
3700
3883
 
3701
3884
  ScrollSpy._jQueryInterface = function _jQueryInterface(config) {
3702
3885
  return this.each(function () {
@@ -3740,8 +3923,8 @@
3740
3923
  */
3741
3924
 
3742
3925
 
3743
- $(window).on(Event$8.LOAD_DATA_API, function () {
3744
- var scrollSpys = [].slice.call(document.querySelectorAll(Selector$8.DATA_SPY));
3926
+ $(window).on(EVENT_LOAD_DATA_API$2, function () {
3927
+ var scrollSpys = [].slice.call(document.querySelectorAll(SELECTOR_DATA_SPY));
3745
3928
  var scrollSpysLength = scrollSpys.length;
3746
3929
 
3747
3930
  for (var i = scrollSpysLength; i--;) {
@@ -3771,44 +3954,35 @@
3771
3954
  */
3772
3955
 
3773
3956
  var NAME$9 = 'tab';
3774
- var VERSION$9 = '4.2.1';
3957
+ var VERSION$9 = '4.5.2';
3775
3958
  var DATA_KEY$9 = 'bs.tab';
3776
3959
  var EVENT_KEY$9 = "." + DATA_KEY$9;
3777
3960
  var DATA_API_KEY$7 = '.data-api';
3778
3961
  var JQUERY_NO_CONFLICT$9 = $.fn[NAME$9];
3779
- var Event$9 = {
3780
- HIDE: "hide" + EVENT_KEY$9,
3781
- HIDDEN: "hidden" + EVENT_KEY$9,
3782
- SHOW: "show" + EVENT_KEY$9,
3783
- SHOWN: "shown" + EVENT_KEY$9,
3784
- CLICK_DATA_API: "click" + EVENT_KEY$9 + DATA_API_KEY$7
3785
- };
3786
- var ClassName$9 = {
3787
- DROPDOWN_MENU: 'dropdown-menu',
3788
- ACTIVE: 'active',
3789
- DISABLED: 'disabled',
3790
- FADE: 'fade',
3791
- SHOW: 'show'
3792
- };
3793
- var Selector$9 = {
3794
- DROPDOWN: '.dropdown',
3795
- NAV_LIST_GROUP: '.nav, .list-group',
3796
- ACTIVE: '.active',
3797
- ACTIVE_UL: '> li > .active',
3798
- DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',
3799
- DROPDOWN_TOGGLE: '.dropdown-toggle',
3800
- DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active'
3801
- /**
3802
- * ------------------------------------------------------------------------
3803
- * Class Definition
3804
- * ------------------------------------------------------------------------
3805
- */
3806
-
3807
- };
3962
+ var EVENT_HIDE$3 = "hide" + EVENT_KEY$9;
3963
+ var EVENT_HIDDEN$3 = "hidden" + EVENT_KEY$9;
3964
+ var EVENT_SHOW$3 = "show" + EVENT_KEY$9;
3965
+ var EVENT_SHOWN$3 = "shown" + EVENT_KEY$9;
3966
+ var EVENT_CLICK_DATA_API$6 = "click" + EVENT_KEY$9 + DATA_API_KEY$7;
3967
+ var CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu';
3968
+ var CLASS_NAME_ACTIVE$3 = 'active';
3969
+ var CLASS_NAME_DISABLED$1 = 'disabled';
3970
+ var CLASS_NAME_FADE$4 = 'fade';
3971
+ var CLASS_NAME_SHOW$6 = 'show';
3972
+ var SELECTOR_DROPDOWN$1 = '.dropdown';
3973
+ var SELECTOR_NAV_LIST_GROUP$1 = '.nav, .list-group';
3974
+ var SELECTOR_ACTIVE$2 = '.active';
3975
+ var SELECTOR_ACTIVE_UL = '> li > .active';
3976
+ var SELECTOR_DATA_TOGGLE$4 = '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]';
3977
+ var SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';
3978
+ var SELECTOR_DROPDOWN_ACTIVE_CHILD = '> .dropdown-menu .active';
3979
+ /**
3980
+ * ------------------------------------------------------------------------
3981
+ * Class Definition
3982
+ * ------------------------------------------------------------------------
3983
+ */
3808
3984
 
3809
- var Tab =
3810
- /*#__PURE__*/
3811
- function () {
3985
+ var Tab = /*#__PURE__*/function () {
3812
3986
  function Tab(element) {
3813
3987
  this._element = element;
3814
3988
  } // Getters
@@ -3820,25 +3994,25 @@
3820
3994
  _proto.show = function show() {
3821
3995
  var _this = this;
3822
3996
 
3823
- if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $(this._element).hasClass(ClassName$9.ACTIVE) || $(this._element).hasClass(ClassName$9.DISABLED)) {
3997
+ if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $(this._element).hasClass(CLASS_NAME_ACTIVE$3) || $(this._element).hasClass(CLASS_NAME_DISABLED$1)) {
3824
3998
  return;
3825
3999
  }
3826
4000
 
3827
4001
  var target;
3828
4002
  var previous;
3829
- var listElement = $(this._element).closest(Selector$9.NAV_LIST_GROUP)[0];
4003
+ var listElement = $(this._element).closest(SELECTOR_NAV_LIST_GROUP$1)[0];
3830
4004
  var selector = Util.getSelectorFromElement(this._element);
3831
4005
 
3832
4006
  if (listElement) {
3833
- var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? Selector$9.ACTIVE_UL : Selector$9.ACTIVE;
4007
+ var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE$2;
3834
4008
  previous = $.makeArray($(listElement).find(itemSelector));
3835
4009
  previous = previous[previous.length - 1];
3836
4010
  }
3837
4011
 
3838
- var hideEvent = $.Event(Event$9.HIDE, {
4012
+ var hideEvent = $.Event(EVENT_HIDE$3, {
3839
4013
  relatedTarget: this._element
3840
4014
  });
3841
- var showEvent = $.Event(Event$9.SHOW, {
4015
+ var showEvent = $.Event(EVENT_SHOW$3, {
3842
4016
  relatedTarget: previous
3843
4017
  });
3844
4018
 
@@ -3859,10 +4033,10 @@
3859
4033
  this._activate(this._element, listElement);
3860
4034
 
3861
4035
  var complete = function complete() {
3862
- var hiddenEvent = $.Event(Event$9.HIDDEN, {
4036
+ var hiddenEvent = $.Event(EVENT_HIDDEN$3, {
3863
4037
  relatedTarget: _this._element
3864
4038
  });
3865
- var shownEvent = $.Event(Event$9.SHOWN, {
4039
+ var shownEvent = $.Event(EVENT_SHOWN$3, {
3866
4040
  relatedTarget: previous
3867
4041
  });
3868
4042
  $(previous).trigger(hiddenEvent);
@@ -3879,15 +4053,15 @@
3879
4053
  _proto.dispose = function dispose() {
3880
4054
  $.removeData(this._element, DATA_KEY$9);
3881
4055
  this._element = null;
3882
- }; // Private
3883
-
4056
+ } // Private
4057
+ ;
3884
4058
 
3885
4059
  _proto._activate = function _activate(element, container, callback) {
3886
4060
  var _this2 = this;
3887
4061
 
3888
- var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? $(container).find(Selector$9.ACTIVE_UL) : $(container).children(Selector$9.ACTIVE);
4062
+ var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? $(container).find(SELECTOR_ACTIVE_UL) : $(container).children(SELECTOR_ACTIVE$2);
3889
4063
  var active = activeElements[0];
3890
- var isTransitioning = callback && active && $(active).hasClass(ClassName$9.FADE);
4064
+ var isTransitioning = callback && active && $(active).hasClass(CLASS_NAME_FADE$4);
3891
4065
 
3892
4066
  var complete = function complete() {
3893
4067
  return _this2._transitionComplete(element, active, callback);
@@ -3895,7 +4069,7 @@
3895
4069
 
3896
4070
  if (active && isTransitioning) {
3897
4071
  var transitionDuration = Util.getTransitionDurationFromElement(active);
3898
- $(active).removeClass(ClassName$9.SHOW).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
4072
+ $(active).removeClass(CLASS_NAME_SHOW$6).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
3899
4073
  } else {
3900
4074
  complete();
3901
4075
  }
@@ -3903,11 +4077,11 @@
3903
4077
 
3904
4078
  _proto._transitionComplete = function _transitionComplete(element, active, callback) {
3905
4079
  if (active) {
3906
- $(active).removeClass(ClassName$9.ACTIVE);
3907
- var dropdownChild = $(active.parentNode).find(Selector$9.DROPDOWN_ACTIVE_CHILD)[0];
4080
+ $(active).removeClass(CLASS_NAME_ACTIVE$3);
4081
+ var dropdownChild = $(active.parentNode).find(SELECTOR_DROPDOWN_ACTIVE_CHILD)[0];
3908
4082
 
3909
4083
  if (dropdownChild) {
3910
- $(dropdownChild).removeClass(ClassName$9.ACTIVE);
4084
+ $(dropdownChild).removeClass(CLASS_NAME_ACTIVE$3);
3911
4085
  }
3912
4086
 
3913
4087
  if (active.getAttribute('role') === 'tab') {
@@ -3915,21 +4089,24 @@
3915
4089
  }
3916
4090
  }
3917
4091
 
3918
- $(element).addClass(ClassName$9.ACTIVE);
4092
+ $(element).addClass(CLASS_NAME_ACTIVE$3);
3919
4093
 
3920
4094
  if (element.getAttribute('role') === 'tab') {
3921
4095
  element.setAttribute('aria-selected', true);
3922
4096
  }
3923
4097
 
3924
4098
  Util.reflow(element);
3925
- $(element).addClass(ClassName$9.SHOW);
3926
4099
 
3927
- if (element.parentNode && $(element.parentNode).hasClass(ClassName$9.DROPDOWN_MENU)) {
3928
- var dropdownElement = $(element).closest(Selector$9.DROPDOWN)[0];
4100
+ if (element.classList.contains(CLASS_NAME_FADE$4)) {
4101
+ element.classList.add(CLASS_NAME_SHOW$6);
4102
+ }
4103
+
4104
+ if (element.parentNode && $(element.parentNode).hasClass(CLASS_NAME_DROPDOWN_MENU)) {
4105
+ var dropdownElement = $(element).closest(SELECTOR_DROPDOWN$1)[0];
3929
4106
 
3930
4107
  if (dropdownElement) {
3931
- var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(Selector$9.DROPDOWN_TOGGLE));
3932
- $(dropdownToggleList).addClass(ClassName$9.ACTIVE);
4108
+ var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(SELECTOR_DROPDOWN_TOGGLE$1));
4109
+ $(dropdownToggleList).addClass(CLASS_NAME_ACTIVE$3);
3933
4110
  }
3934
4111
 
3935
4112
  element.setAttribute('aria-expanded', true);
@@ -3938,8 +4115,8 @@
3938
4115
  if (callback) {
3939
4116
  callback();
3940
4117
  }
3941
- }; // Static
3942
-
4118
+ } // Static
4119
+ ;
3943
4120
 
3944
4121
  Tab._jQueryInterface = function _jQueryInterface(config) {
3945
4122
  return this.each(function () {
@@ -3977,7 +4154,7 @@
3977
4154
  */
3978
4155
 
3979
4156
 
3980
- $(document).on(Event$9.CLICK_DATA_API, Selector$9.DATA_TOGGLE, function (event) {
4157
+ $(document).on(EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$4, function (event) {
3981
4158
  event.preventDefault();
3982
4159
 
3983
4160
  Tab._jQueryInterface.call($(this), 'show');
@@ -4003,23 +4180,19 @@
4003
4180
  */
4004
4181
 
4005
4182
  var NAME$a = 'toast';
4006
- var VERSION$a = '4.2.1';
4183
+ var VERSION$a = '4.5.2';
4007
4184
  var DATA_KEY$a = 'bs.toast';
4008
4185
  var EVENT_KEY$a = "." + DATA_KEY$a;
4009
4186
  var JQUERY_NO_CONFLICT$a = $.fn[NAME$a];
4010
- var Event$a = {
4011
- CLICK_DISMISS: "click.dismiss" + EVENT_KEY$a,
4012
- HIDE: "hide" + EVENT_KEY$a,
4013
- HIDDEN: "hidden" + EVENT_KEY$a,
4014
- SHOW: "show" + EVENT_KEY$a,
4015
- SHOWN: "shown" + EVENT_KEY$a
4016
- };
4017
- var ClassName$a = {
4018
- FADE: 'fade',
4019
- HIDE: 'hide',
4020
- SHOW: 'show',
4021
- SHOWING: 'showing'
4022
- };
4187
+ var EVENT_CLICK_DISMISS$1 = "click.dismiss" + EVENT_KEY$a;
4188
+ var EVENT_HIDE$4 = "hide" + EVENT_KEY$a;
4189
+ var EVENT_HIDDEN$4 = "hidden" + EVENT_KEY$a;
4190
+ var EVENT_SHOW$4 = "show" + EVENT_KEY$a;
4191
+ var EVENT_SHOWN$4 = "shown" + EVENT_KEY$a;
4192
+ var CLASS_NAME_FADE$5 = 'fade';
4193
+ var CLASS_NAME_HIDE = 'hide';
4194
+ var CLASS_NAME_SHOW$7 = 'show';
4195
+ var CLASS_NAME_SHOWING = 'showing';
4023
4196
  var DefaultType$7 = {
4024
4197
  animation: 'boolean',
4025
4198
  autohide: 'boolean',
@@ -4030,19 +4203,14 @@
4030
4203
  autohide: true,
4031
4204
  delay: 500
4032
4205
  };
4033
- var Selector$a = {
4034
- DATA_DISMISS: '[data-dismiss="toast"]'
4035
- /**
4036
- * ------------------------------------------------------------------------
4037
- * Class Definition
4038
- * ------------------------------------------------------------------------
4039
- */
4040
-
4041
- };
4206
+ var SELECTOR_DATA_DISMISS$1 = '[data-dismiss="toast"]';
4207
+ /**
4208
+ * ------------------------------------------------------------------------
4209
+ * Class Definition
4210
+ * ------------------------------------------------------------------------
4211
+ */
4042
4212
 
4043
- var Toast =
4044
- /*#__PURE__*/
4045
- function () {
4213
+ var Toast = /*#__PURE__*/function () {
4046
4214
  function Toast(element, config) {
4047
4215
  this._element = element;
4048
4216
  this._config = this._getConfig(config);
@@ -4058,27 +4226,38 @@
4058
4226
  _proto.show = function show() {
4059
4227
  var _this = this;
4060
4228
 
4061
- $(this._element).trigger(Event$a.SHOW);
4229
+ var showEvent = $.Event(EVENT_SHOW$4);
4230
+ $(this._element).trigger(showEvent);
4231
+
4232
+ if (showEvent.isDefaultPrevented()) {
4233
+ return;
4234
+ }
4235
+
4236
+ this._clearTimeout();
4062
4237
 
4063
4238
  if (this._config.animation) {
4064
- this._element.classList.add(ClassName$a.FADE);
4239
+ this._element.classList.add(CLASS_NAME_FADE$5);
4065
4240
  }
4066
4241
 
4067
4242
  var complete = function complete() {
4068
- _this._element.classList.remove(ClassName$a.SHOWING);
4243
+ _this._element.classList.remove(CLASS_NAME_SHOWING);
4069
4244
 
4070
- _this._element.classList.add(ClassName$a.SHOW);
4245
+ _this._element.classList.add(CLASS_NAME_SHOW$7);
4071
4246
 
4072
- $(_this._element).trigger(Event$a.SHOWN);
4247
+ $(_this._element).trigger(EVENT_SHOWN$4);
4073
4248
 
4074
4249
  if (_this._config.autohide) {
4075
- _this.hide();
4250
+ _this._timeout = setTimeout(function () {
4251
+ _this.hide();
4252
+ }, _this._config.delay);
4076
4253
  }
4077
4254
  };
4078
4255
 
4079
- this._element.classList.remove(ClassName$a.HIDE);
4256
+ this._element.classList.remove(CLASS_NAME_HIDE);
4080
4257
 
4081
- this._element.classList.add(ClassName$a.SHOWING);
4258
+ Util.reflow(this._element);
4259
+
4260
+ this._element.classList.add(CLASS_NAME_SHOWING);
4082
4261
 
4083
4262
  if (this._config.animation) {
4084
4263
  var transitionDuration = Util.getTransitionDurationFromElement(this._element);
@@ -4088,63 +4267,59 @@
4088
4267
  }
4089
4268
  };
4090
4269
 
4091
- _proto.hide = function hide(withoutTimeout) {
4092
- var _this2 = this;
4093
-
4094
- if (!this._element.classList.contains(ClassName$a.SHOW)) {
4270
+ _proto.hide = function hide() {
4271
+ if (!this._element.classList.contains(CLASS_NAME_SHOW$7)) {
4095
4272
  return;
4096
4273
  }
4097
4274
 
4098
- $(this._element).trigger(Event$a.HIDE);
4275
+ var hideEvent = $.Event(EVENT_HIDE$4);
4276
+ $(this._element).trigger(hideEvent);
4099
4277
 
4100
- if (withoutTimeout) {
4101
- this._close();
4102
- } else {
4103
- this._timeout = setTimeout(function () {
4104
- _this2._close();
4105
- }, this._config.delay);
4278
+ if (hideEvent.isDefaultPrevented()) {
4279
+ return;
4106
4280
  }
4281
+
4282
+ this._close();
4107
4283
  };
4108
4284
 
4109
4285
  _proto.dispose = function dispose() {
4110
- clearTimeout(this._timeout);
4111
- this._timeout = null;
4286
+ this._clearTimeout();
4112
4287
 
4113
- if (this._element.classList.contains(ClassName$a.SHOW)) {
4114
- this._element.classList.remove(ClassName$a.SHOW);
4288
+ if (this._element.classList.contains(CLASS_NAME_SHOW$7)) {
4289
+ this._element.classList.remove(CLASS_NAME_SHOW$7);
4115
4290
  }
4116
4291
 
4117
- $(this._element).off(Event$a.CLICK_DISMISS);
4292
+ $(this._element).off(EVENT_CLICK_DISMISS$1);
4118
4293
  $.removeData(this._element, DATA_KEY$a);
4119
4294
  this._element = null;
4120
4295
  this._config = null;
4121
- }; // Private
4122
-
4296
+ } // Private
4297
+ ;
4123
4298
 
4124
4299
  _proto._getConfig = function _getConfig(config) {
4125
- config = _objectSpread({}, Default$7, $(this._element).data(), typeof config === 'object' && config ? config : {});
4300
+ config = _extends({}, Default$7, $(this._element).data(), typeof config === 'object' && config ? config : {});
4126
4301
  Util.typeCheckConfig(NAME$a, config, this.constructor.DefaultType);
4127
4302
  return config;
4128
4303
  };
4129
4304
 
4130
4305
  _proto._setListeners = function _setListeners() {
4131
- var _this3 = this;
4306
+ var _this2 = this;
4132
4307
 
4133
- $(this._element).on(Event$a.CLICK_DISMISS, Selector$a.DATA_DISMISS, function () {
4134
- return _this3.hide(true);
4308
+ $(this._element).on(EVENT_CLICK_DISMISS$1, SELECTOR_DATA_DISMISS$1, function () {
4309
+ return _this2.hide();
4135
4310
  });
4136
4311
  };
4137
4312
 
4138
4313
  _proto._close = function _close() {
4139
- var _this4 = this;
4314
+ var _this3 = this;
4140
4315
 
4141
4316
  var complete = function complete() {
4142
- _this4._element.classList.add(ClassName$a.HIDE);
4317
+ _this3._element.classList.add(CLASS_NAME_HIDE);
4143
4318
 
4144
- $(_this4._element).trigger(Event$a.HIDDEN);
4319
+ $(_this3._element).trigger(EVENT_HIDDEN$4);
4145
4320
  };
4146
4321
 
4147
- this._element.classList.remove(ClassName$a.SHOW);
4322
+ this._element.classList.remove(CLASS_NAME_SHOW$7);
4148
4323
 
4149
4324
  if (this._config.animation) {
4150
4325
  var transitionDuration = Util.getTransitionDurationFromElement(this._element);
@@ -4152,8 +4327,13 @@
4152
4327
  } else {
4153
4328
  complete();
4154
4329
  }
4155
- }; // Static
4330
+ };
4156
4331
 
4332
+ _proto._clearTimeout = function _clearTimeout() {
4333
+ clearTimeout(this._timeout);
4334
+ this._timeout = null;
4335
+ } // Static
4336
+ ;
4157
4337
 
4158
4338
  Toast._jQueryInterface = function _jQueryInterface(config) {
4159
4339
  return this.each(function () {
@@ -4187,6 +4367,11 @@
4187
4367
  get: function get() {
4188
4368
  return DefaultType$7;
4189
4369
  }
4370
+ }, {
4371
+ key: "Default",
4372
+ get: function get() {
4373
+ return Default$7;
4374
+ }
4190
4375
  }]);
4191
4376
 
4192
4377
  return Toast;
@@ -4206,31 +4391,6 @@
4206
4391
  return Toast._jQueryInterface;
4207
4392
  };
4208
4393
 
4209
- /**
4210
- * --------------------------------------------------------------------------
4211
- * Bootstrap (v4.2.1): index.js
4212
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
4213
- * --------------------------------------------------------------------------
4214
- */
4215
-
4216
- (function () {
4217
- if (typeof $ === 'undefined') {
4218
- throw new TypeError('Bootstrap\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\'s JavaScript.');
4219
- }
4220
-
4221
- var version = $.fn.jquery.split(' ')[0].split('.');
4222
- var minMajor = 1;
4223
- var ltMajor = 2;
4224
- var minMinor = 9;
4225
- var minPatch = 1;
4226
- var maxMajor = 4;
4227
-
4228
- if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {
4229
- throw new Error('Bootstrap\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');
4230
- }
4231
- })();
4232
-
4233
- exports.Util = Util;
4234
4394
  exports.Alert = Alert;
4235
4395
  exports.Button = Button;
4236
4396
  exports.Carousel = Carousel;
@@ -4242,6 +4402,7 @@
4242
4402
  exports.Tab = Tab;
4243
4403
  exports.Toast = Toast;
4244
4404
  exports.Tooltip = Tooltip;
4405
+ exports.Util = Util;
4245
4406
 
4246
4407
  Object.defineProperty(exports, '__esModule', { value: true });
4247
4408