bootstrap 4.3.0 → 5.0.0.alpha1

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 (139) 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 +5 -1
  6. data/assets/javascripts/bootstrap.js +2292 -1514
  7. data/assets/javascripts/bootstrap.min.js +4 -4
  8. data/assets/javascripts/bootstrap/alert.js +148 -85
  9. data/assets/javascripts/bootstrap/button.js +69 -110
  10. data/assets/javascripts/bootstrap/carousel.js +320 -239
  11. data/assets/javascripts/bootstrap/collapse.js +300 -177
  12. data/assets/javascripts/bootstrap/dom/data.js +81 -0
  13. data/assets/javascripts/bootstrap/dom/event-handler.js +311 -0
  14. data/assets/javascripts/bootstrap/dom/manipulator.js +100 -0
  15. data/assets/javascripts/bootstrap/dom/polyfill.js +110 -0
  16. data/assets/javascripts/bootstrap/dom/selector-engine.js +98 -0
  17. data/assets/javascripts/bootstrap/dropdown.js +282 -265
  18. data/assets/javascripts/bootstrap/modal.js +348 -231
  19. data/assets/javascripts/bootstrap/popover.js +80 -105
  20. data/assets/javascripts/bootstrap/scrollspy.js +173 -138
  21. data/assets/javascripts/bootstrap/tab.js +180 -115
  22. data/assets/javascripts/bootstrap/toast.js +188 -132
  23. data/assets/javascripts/bootstrap/tooltip.js +508 -230
  24. data/assets/stylesheets/_bootstrap-grid.scss +54 -18
  25. data/assets/stylesheets/_bootstrap-reboot.scss +7 -4
  26. data/assets/stylesheets/_bootstrap.scss +17 -11
  27. data/assets/stylesheets/bootstrap/_alert.scss +3 -3
  28. data/assets/stylesheets/bootstrap/_badge.scss +2 -27
  29. data/assets/stylesheets/bootstrap/_breadcrumb.scss +7 -18
  30. data/assets/stylesheets/bootstrap/_button-group.scss +16 -38
  31. data/assets/stylesheets/bootstrap/_buttons.scss +26 -39
  32. data/assets/stylesheets/bootstrap/_card.scss +48 -97
  33. data/assets/stylesheets/bootstrap/_carousel.scss +16 -18
  34. data/assets/stylesheets/bootstrap/_close.scss +9 -14
  35. data/assets/stylesheets/bootstrap/_containers.scss +41 -0
  36. data/assets/stylesheets/bootstrap/_dropdown.scss +13 -9
  37. data/assets/stylesheets/bootstrap/_forms.scss +9 -330
  38. data/assets/stylesheets/bootstrap/_functions.scss +141 -24
  39. data/assets/stylesheets/bootstrap/_grid.scss +4 -34
  40. data/assets/stylesheets/bootstrap/_helpers.scss +7 -0
  41. data/assets/stylesheets/bootstrap/_images.scss +2 -2
  42. data/assets/stylesheets/bootstrap/_list-group.scss +41 -33
  43. data/assets/stylesheets/bootstrap/_mixins.scss +9 -15
  44. data/assets/stylesheets/bootstrap/_modal.scss +54 -48
  45. data/assets/stylesheets/bootstrap/_nav.scss +12 -9
  46. data/assets/stylesheets/bootstrap/_navbar.scss +54 -56
  47. data/assets/stylesheets/bootstrap/_pagination.scss +10 -22
  48. data/assets/stylesheets/bootstrap/_popover.scss +13 -14
  49. data/assets/stylesheets/bootstrap/_progress.scss +6 -4
  50. data/assets/stylesheets/bootstrap/_reboot.scss +318 -185
  51. data/assets/stylesheets/bootstrap/_root.scss +5 -8
  52. data/assets/stylesheets/bootstrap/_spinners.scss +3 -2
  53. data/assets/stylesheets/bootstrap/_tables.scss +80 -114
  54. data/assets/stylesheets/bootstrap/_tooltip.scss +5 -5
  55. data/assets/stylesheets/bootstrap/_transitions.scss +0 -1
  56. data/assets/stylesheets/bootstrap/_type.scss +40 -61
  57. data/assets/stylesheets/bootstrap/_utilities.scss +503 -17
  58. data/assets/stylesheets/bootstrap/_variables.scss +567 -430
  59. data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +18 -0
  60. data/assets/stylesheets/bootstrap/forms/_form-check.scss +142 -0
  61. data/assets/stylesheets/bootstrap/forms/_form-control.scss +116 -0
  62. data/assets/stylesheets/bootstrap/forms/_form-file.scss +91 -0
  63. data/assets/stylesheets/bootstrap/forms/_form-range.scss +136 -0
  64. data/assets/stylesheets/bootstrap/forms/_form-select.scss +82 -0
  65. data/assets/stylesheets/bootstrap/forms/_form-text.scss +11 -0
  66. data/assets/stylesheets/bootstrap/forms/_input-group.scss +140 -0
  67. data/assets/stylesheets/bootstrap/forms/_labels.scss +36 -0
  68. data/assets/stylesheets/bootstrap/forms/_validation.scss +12 -0
  69. data/assets/stylesheets/bootstrap/{utilities → helpers}/_clearfix.scss +0 -0
  70. data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +12 -0
  71. data/assets/stylesheets/bootstrap/helpers/_embed.scss +31 -0
  72. data/assets/stylesheets/bootstrap/helpers/_position.scss +30 -0
  73. data/assets/stylesheets/bootstrap/helpers/_screenreaders.scss +8 -0
  74. data/assets/stylesheets/bootstrap/helpers/_stretched-link.scss +15 -0
  75. data/assets/stylesheets/bootstrap/helpers/_text-truncation.scss +7 -0
  76. data/assets/stylesheets/bootstrap/mixins/_alert.scss +0 -4
  77. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +26 -13
  78. data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +11 -8
  79. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +68 -50
  80. data/assets/stylesheets/bootstrap/mixins/_caret.scss +4 -4
  81. data/assets/stylesheets/bootstrap/mixins/_clearfix.scss +2 -0
  82. data/assets/stylesheets/bootstrap/mixins/_container.scss +9 -0
  83. data/assets/stylesheets/bootstrap/mixins/_forms.scss +47 -106
  84. data/assets/stylesheets/bootstrap/mixins/_gradients.scss +9 -11
  85. data/assets/stylesheets/bootstrap/mixins/_grid.scss +99 -29
  86. data/assets/stylesheets/bootstrap/mixins/_image.scss +0 -20
  87. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +2 -1
  88. data/assets/stylesheets/bootstrap/mixins/_pagination.scss +15 -8
  89. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +1 -1
  90. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +14 -19
  91. data/assets/stylesheets/bootstrap/mixins/_table-variants.scss +21 -0
  92. data/assets/stylesheets/bootstrap/mixins/_transition.scss +17 -7
  93. data/assets/stylesheets/bootstrap/mixins/_utilities.scss +49 -0
  94. data/assets/stylesheets/bootstrap/utilities/_api.scss +47 -0
  95. data/assets/stylesheets/bootstrap/vendor/_rfs.scss +230 -130
  96. data/bootstrap.gemspec +1 -1
  97. data/lib/bootstrap/version.rb +2 -2
  98. data/tasks/updater/js.rb +3 -3
  99. data/tasks/updater/network.rb +2 -2
  100. data/test/dummy_rails/app/assets/config/manifest.js +3 -0
  101. data/test/dummy_rails/app/assets/stylesheets/.browserslistrc +1 -0
  102. data/test/gemfiles/rails_6_0.gemfile +7 -0
  103. data/test/support/dummy_rails_integration.rb +3 -1
  104. data/test/test_helper.rb +18 -13
  105. metadata +40 -42
  106. data/assets/javascripts/bootstrap/util.js +0 -171
  107. data/assets/stylesheets/bootstrap/_code.scss +0 -48
  108. data/assets/stylesheets/bootstrap/_custom-forms.scss +0 -507
  109. data/assets/stylesheets/bootstrap/_input-group.scss +0 -193
  110. data/assets/stylesheets/bootstrap/_jumbotron.scss +0 -17
  111. data/assets/stylesheets/bootstrap/_media.scss +0 -8
  112. data/assets/stylesheets/bootstrap/_print.scss +0 -141
  113. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +0 -21
  114. data/assets/stylesheets/bootstrap/mixins/_badge.scss +0 -17
  115. data/assets/stylesheets/bootstrap/mixins/_float.scss +0 -14
  116. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +0 -66
  117. data/assets/stylesheets/bootstrap/mixins/_hover.scss +0 -37
  118. data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +0 -10
  119. data/assets/stylesheets/bootstrap/mixins/_size.scss +0 -7
  120. data/assets/stylesheets/bootstrap/mixins/_table-row.scss +0 -39
  121. data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +0 -16
  122. data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +0 -11
  123. data/assets/stylesheets/bootstrap/mixins/_visibility.scss +0 -8
  124. data/assets/stylesheets/bootstrap/utilities/_align.scss +0 -8
  125. data/assets/stylesheets/bootstrap/utilities/_background.scss +0 -19
  126. data/assets/stylesheets/bootstrap/utilities/_borders.scss +0 -75
  127. data/assets/stylesheets/bootstrap/utilities/_display.scss +0 -26
  128. data/assets/stylesheets/bootstrap/utilities/_embed.scss +0 -39
  129. data/assets/stylesheets/bootstrap/utilities/_flex.scss +0 -51
  130. data/assets/stylesheets/bootstrap/utilities/_float.scss +0 -11
  131. data/assets/stylesheets/bootstrap/utilities/_overflow.scss +0 -5
  132. data/assets/stylesheets/bootstrap/utilities/_position.scss +0 -32
  133. data/assets/stylesheets/bootstrap/utilities/_screenreaders.scss +0 -11
  134. data/assets/stylesheets/bootstrap/utilities/_shadows.scss +0 -6
  135. data/assets/stylesheets/bootstrap/utilities/_sizing.scss +0 -20
  136. data/assets/stylesheets/bootstrap/utilities/_spacing.scss +0 -73
  137. data/assets/stylesheets/bootstrap/utilities/_stretched-link.scss +0 -19
  138. data/assets/stylesheets/bootstrap/utilities/_text.scss +0 -72
  139. data/assets/stylesheets/bootstrap/utilities/_visibility.scss +0 -13
@@ -1,67 +1,151 @@
1
1
  /*!
2
- * Bootstrap carousel.js v4.3.0 (https://getbootstrap.com/)
3
- * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2
+ * Bootstrap carousel.js v5.0.0-alpha1 (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' ? module.exports = factory(require('jquery'), require('./util.js')) :
8
- typeof define === 'function' && define.amd ? define(['jquery', './util.js'], factory) :
9
- (global = global || self, global.Carousel = factory(global.jQuery, global.Util));
10
- }(this, function ($, Util) { 'use strict';
11
-
12
- $ = $ && $.hasOwnProperty('default') ? $['default'] : $;
13
- Util = Util && Util.hasOwnProperty('default') ? Util['default'] : Util;
14
-
15
- function _defineProperties(target, props) {
16
- for (var i = 0; i < props.length; i++) {
17
- var descriptor = props[i];
18
- descriptor.enumerable = descriptor.enumerable || false;
19
- descriptor.configurable = true;
20
- if ("value" in descriptor) descriptor.writable = true;
21
- Object.defineProperty(target, descriptor.key, descriptor);
7
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/data.js'), require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./dom/selector-engine.js')) :
8
+ typeof define === 'function' && define.amd ? define(['./dom/data.js', './dom/event-handler.js', './dom/manipulator.js', './dom/selector-engine.js'], factory) :
9
+ (global = global || self, global.Carousel = factory(global.Data, global.EventHandler, global.Manipulator, global.SelectorEngine));
10
+ }(this, (function (Data, EventHandler, Manipulator, SelectorEngine) { 'use strict';
11
+
12
+ Data = Data && Object.prototype.hasOwnProperty.call(Data, 'default') ? Data['default'] : Data;
13
+ EventHandler = EventHandler && Object.prototype.hasOwnProperty.call(EventHandler, 'default') ? EventHandler['default'] : EventHandler;
14
+ Manipulator = Manipulator && Object.prototype.hasOwnProperty.call(Manipulator, 'default') ? Manipulator['default'] : Manipulator;
15
+ SelectorEngine = SelectorEngine && Object.prototype.hasOwnProperty.call(SelectorEngine, 'default') ? SelectorEngine['default'] : SelectorEngine;
16
+
17
+ /**
18
+ * --------------------------------------------------------------------------
19
+ * Bootstrap (v5.0.0-alpha1): util/index.js
20
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
21
+ * --------------------------------------------------------------------------
22
+ */
23
+ var MILLISECONDS_MULTIPLIER = 1000;
24
+ var TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
25
+
26
+ var toType = function toType(obj) {
27
+ if (obj === null || obj === undefined) {
28
+ return "" + obj;
22
29
  }
23
- }
24
30
 
25
- function _createClass(Constructor, protoProps, staticProps) {
26
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
27
- if (staticProps) _defineProperties(Constructor, staticProps);
28
- return Constructor;
29
- }
31
+ return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
32
+ };
30
33
 
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;
34
+ var getSelector = function getSelector(element) {
35
+ var selector = element.getAttribute('data-target');
36
+
37
+ if (!selector || selector === '#') {
38
+ var hrefAttr = element.getAttribute('href');
39
+ selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;
41
40
  }
42
41
 
43
- return obj;
44
- }
42
+ return selector;
43
+ };
44
+
45
+ var getElementFromSelector = function getElementFromSelector(element) {
46
+ var selector = getSelector(element);
47
+ return selector ? document.querySelector(selector) : null;
48
+ };
49
+
50
+ var getTransitionDurationFromElement = function getTransitionDurationFromElement(element) {
51
+ if (!element) {
52
+ return 0;
53
+ } // Get transition-duration of the element
54
+
55
+
56
+ var _window$getComputedSt = window.getComputedStyle(element),
57
+ transitionDuration = _window$getComputedSt.transitionDuration,
58
+ transitionDelay = _window$getComputedSt.transitionDelay;
59
+
60
+ var floatTransitionDuration = parseFloat(transitionDuration);
61
+ var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found
62
+
63
+ if (!floatTransitionDuration && !floatTransitionDelay) {
64
+ return 0;
65
+ } // If multiple durations are defined, take the first
66
+
67
+
68
+ transitionDuration = transitionDuration.split(',')[0];
69
+ transitionDelay = transitionDelay.split(',')[0];
70
+ return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
71
+ };
72
+
73
+ var triggerTransitionEnd = function triggerTransitionEnd(element) {
74
+ element.dispatchEvent(new Event(TRANSITION_END));
75
+ };
45
76
 
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);
77
+ var isElement = function isElement(obj) {
78
+ return (obj[0] || obj).nodeType;
79
+ };
80
+
81
+ var emulateTransitionEnd = function emulateTransitionEnd(element, duration) {
82
+ var called = false;
83
+ var durationPadding = 5;
84
+ var emulatedDuration = duration + durationPadding;
85
+
86
+ function listener() {
87
+ called = true;
88
+ element.removeEventListener(TRANSITION_END, listener);
89
+ }
50
90
 
51
- if (typeof Object.getOwnPropertySymbols === 'function') {
52
- ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
53
- return Object.getOwnPropertyDescriptor(source, sym).enumerable;
54
- }));
91
+ element.addEventListener(TRANSITION_END, listener);
92
+ setTimeout(function () {
93
+ if (!called) {
94
+ triggerTransitionEnd(element);
55
95
  }
96
+ }, emulatedDuration);
97
+ };
56
98
 
57
- ownKeys.forEach(function (key) {
58
- _defineProperty(target, key, source[key]);
59
- });
99
+ var typeCheckConfig = function typeCheckConfig(componentName, config, configTypes) {
100
+ Object.keys(configTypes).forEach(function (property) {
101
+ var expectedTypes = configTypes[property];
102
+ var value = config[property];
103
+ var valueType = value && isElement(value) ? 'element' : toType(value);
104
+
105
+ if (!new RegExp(expectedTypes).test(valueType)) {
106
+ throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\"."));
107
+ }
108
+ });
109
+ };
110
+
111
+ var isVisible = function isVisible(element) {
112
+ if (!element) {
113
+ return false;
60
114
  }
61
115
 
62
- return target;
63
- }
116
+ if (element.style && element.parentNode && element.parentNode.style) {
117
+ var elementStyle = getComputedStyle(element);
118
+ var parentNodeStyle = getComputedStyle(element.parentNode);
119
+ return elementStyle.display !== 'none' && parentNodeStyle.display !== 'none' && elementStyle.visibility !== 'hidden';
120
+ }
121
+
122
+ return false;
123
+ };
124
+
125
+ var reflow = function reflow(element) {
126
+ return element.offsetHeight;
127
+ };
128
+
129
+ var getjQuery = function getjQuery() {
130
+ var _window = window,
131
+ jQuery = _window.jQuery;
132
+
133
+ if (jQuery && !document.body.hasAttribute('data-no-jquery')) {
134
+ return jQuery;
135
+ }
136
+
137
+ return null;
138
+ };
139
+
140
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
141
+
142
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
143
+
144
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
64
145
 
146
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
147
+
148
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
65
149
  /**
66
150
  * ------------------------------------------------------------------------
67
151
  * Constants
@@ -69,15 +153,12 @@
69
153
  */
70
154
 
71
155
  var NAME = 'carousel';
72
- var VERSION = '4.3.0';
156
+ var VERSION = '5.0.0-alpha1';
73
157
  var DATA_KEY = 'bs.carousel';
74
158
  var EVENT_KEY = "." + DATA_KEY;
75
159
  var DATA_API_KEY = '.data-api';
76
- var JQUERY_NO_CONFLICT = $.fn[NAME];
77
- var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key
78
-
79
- var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key
80
-
160
+ var ARROW_LEFT_KEY = 'ArrowLeft';
161
+ var ARROW_RIGHT_KEY = 'ArrowRight';
81
162
  var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch
82
163
 
83
164
  var SWIPE_THRESHOLD = 40;
@@ -97,62 +178,50 @@
97
178
  wrap: 'boolean',
98
179
  touch: 'boolean'
99
180
  };
100
- var Direction = {
101
- NEXT: 'next',
102
- PREV: 'prev',
103
- LEFT: 'left',
104
- RIGHT: 'right'
105
- };
106
- var Event = {
107
- SLIDE: "slide" + EVENT_KEY,
108
- SLID: "slid" + EVENT_KEY,
109
- KEYDOWN: "keydown" + EVENT_KEY,
110
- MOUSEENTER: "mouseenter" + EVENT_KEY,
111
- MOUSELEAVE: "mouseleave" + EVENT_KEY,
112
- TOUCHSTART: "touchstart" + EVENT_KEY,
113
- TOUCHMOVE: "touchmove" + EVENT_KEY,
114
- TOUCHEND: "touchend" + EVENT_KEY,
115
- POINTERDOWN: "pointerdown" + EVENT_KEY,
116
- POINTERUP: "pointerup" + EVENT_KEY,
117
- DRAG_START: "dragstart" + EVENT_KEY,
118
- LOAD_DATA_API: "load" + EVENT_KEY + DATA_API_KEY,
119
- CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
120
- };
121
- var ClassName = {
122
- CAROUSEL: 'carousel',
123
- ACTIVE: 'active',
124
- SLIDE: 'slide',
125
- RIGHT: 'carousel-item-right',
126
- LEFT: 'carousel-item-left',
127
- NEXT: 'carousel-item-next',
128
- PREV: 'carousel-item-prev',
129
- ITEM: 'carousel-item',
130
- POINTER_EVENT: 'pointer-event'
131
- };
132
- var Selector = {
133
- ACTIVE: '.active',
134
- ACTIVE_ITEM: '.active.carousel-item',
135
- ITEM: '.carousel-item',
136
- ITEM_IMG: '.carousel-item img',
137
- NEXT_PREV: '.carousel-item-next, .carousel-item-prev',
138
- INDICATORS: '.carousel-indicators',
139
- DATA_SLIDE: '[data-slide], [data-slide-to]',
140
- DATA_RIDE: '[data-ride="carousel"]'
141
- };
181
+ var DIRECTION_NEXT = 'next';
182
+ var DIRECTION_PREV = 'prev';
183
+ var DIRECTION_LEFT = 'left';
184
+ var DIRECTION_RIGHT = 'right';
185
+ var EVENT_SLIDE = "slide" + EVENT_KEY;
186
+ var EVENT_SLID = "slid" + EVENT_KEY;
187
+ var EVENT_KEYDOWN = "keydown" + EVENT_KEY;
188
+ var EVENT_MOUSEENTER = "mouseenter" + EVENT_KEY;
189
+ var EVENT_MOUSELEAVE = "mouseleave" + EVENT_KEY;
190
+ var EVENT_TOUCHSTART = "touchstart" + EVENT_KEY;
191
+ var EVENT_TOUCHMOVE = "touchmove" + EVENT_KEY;
192
+ var EVENT_TOUCHEND = "touchend" + EVENT_KEY;
193
+ var EVENT_POINTERDOWN = "pointerdown" + EVENT_KEY;
194
+ var EVENT_POINTERUP = "pointerup" + EVENT_KEY;
195
+ var EVENT_DRAG_START = "dragstart" + EVENT_KEY;
196
+ var EVENT_LOAD_DATA_API = "load" + EVENT_KEY + DATA_API_KEY;
197
+ var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
198
+ var CLASS_NAME_CAROUSEL = 'carousel';
199
+ var CLASS_NAME_ACTIVE = 'active';
200
+ var CLASS_NAME_SLIDE = 'slide';
201
+ var CLASS_NAME_RIGHT = 'carousel-item-right';
202
+ var CLASS_NAME_LEFT = 'carousel-item-left';
203
+ var CLASS_NAME_NEXT = 'carousel-item-next';
204
+ var CLASS_NAME_PREV = 'carousel-item-prev';
205
+ var CLASS_NAME_POINTER_EVENT = 'pointer-event';
206
+ var SELECTOR_ACTIVE = '.active';
207
+ var SELECTOR_ACTIVE_ITEM = '.active.carousel-item';
208
+ var SELECTOR_ITEM = '.carousel-item';
209
+ var SELECTOR_ITEM_IMG = '.carousel-item img';
210
+ var SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev';
211
+ var SELECTOR_INDICATORS = '.carousel-indicators';
212
+ var SELECTOR_DATA_SLIDE = '[data-slide], [data-slide-to]';
213
+ var SELECTOR_DATA_RIDE = '[data-ride="carousel"]';
142
214
  var PointerType = {
143
215
  TOUCH: 'touch',
144
216
  PEN: 'pen'
145
- /**
146
- * ------------------------------------------------------------------------
147
- * Class Definition
148
- * ------------------------------------------------------------------------
149
- */
150
-
151
217
  };
218
+ /**
219
+ * ------------------------------------------------------------------------
220
+ * Class Definition
221
+ * ------------------------------------------------------------------------
222
+ */
152
223
 
153
- var Carousel =
154
- /*#__PURE__*/
155
- function () {
224
+ var Carousel = /*#__PURE__*/function () {
156
225
  function Carousel(element, config) {
157
226
  this._items = null;
158
227
  this._interval = null;
@@ -164,11 +233,13 @@
164
233
  this.touchDeltaX = 0;
165
234
  this._config = this._getConfig(config);
166
235
  this._element = element;
167
- this._indicatorsElement = this._element.querySelector(Selector.INDICATORS);
236
+ this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);
168
237
  this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;
169
- this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent);
238
+ this._pointerEvent = Boolean(window.PointerEvent);
170
239
 
171
240
  this._addEventListeners();
241
+
242
+ Data.setData(element, DATA_KEY, this);
172
243
  } // Getters
173
244
 
174
245
 
@@ -177,21 +248,21 @@
177
248
  // Public
178
249
  _proto.next = function next() {
179
250
  if (!this._isSliding) {
180
- this._slide(Direction.NEXT);
251
+ this._slide(DIRECTION_NEXT);
181
252
  }
182
253
  };
183
254
 
184
255
  _proto.nextWhenVisible = function nextWhenVisible() {
185
256
  // Don't call next when the page isn't visible
186
257
  // or the carousel or its parent isn't visible
187
- if (!document.hidden && $(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden') {
258
+ if (!document.hidden && isVisible(this._element)) {
188
259
  this.next();
189
260
  }
190
261
  };
191
262
 
192
263
  _proto.prev = function prev() {
193
264
  if (!this._isSliding) {
194
- this._slide(Direction.PREV);
265
+ this._slide(DIRECTION_PREV);
195
266
  }
196
267
  };
197
268
 
@@ -200,8 +271,8 @@
200
271
  this._isPaused = true;
201
272
  }
202
273
 
203
- if (this._element.querySelector(Selector.NEXT_PREV)) {
204
- Util.triggerTransitionEnd(this._element);
274
+ if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) {
275
+ triggerTransitionEnd(this._element);
205
276
  this.cycle(true);
206
277
  }
207
278
 
@@ -219,7 +290,7 @@
219
290
  this._interval = null;
220
291
  }
221
292
 
222
- if (this._config.interval && !this._isPaused) {
293
+ if (this._config && this._config.interval && !this._isPaused) {
223
294
  this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);
224
295
  }
225
296
  };
@@ -227,7 +298,7 @@
227
298
  _proto.to = function to(index) {
228
299
  var _this = this;
229
300
 
230
- this._activeElement = this._element.querySelector(Selector.ACTIVE_ITEM);
301
+ this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
231
302
 
232
303
  var activeIndex = this._getItemIndex(this._activeElement);
233
304
 
@@ -236,7 +307,7 @@
236
307
  }
237
308
 
238
309
  if (this._isSliding) {
239
- $(this._element).one(Event.SLID, function () {
310
+ EventHandler.one(this._element, EVENT_SLID, function () {
240
311
  return _this.to(index);
241
312
  });
242
313
  return;
@@ -248,14 +319,14 @@
248
319
  return;
249
320
  }
250
321
 
251
- var direction = index > activeIndex ? Direction.NEXT : Direction.PREV;
322
+ var direction = index > activeIndex ? DIRECTION_NEXT : DIRECTION_PREV;
252
323
 
253
324
  this._slide(direction, this._items[index]);
254
325
  };
255
326
 
256
327
  _proto.dispose = function dispose() {
257
- $(this._element).off(EVENT_KEY);
258
- $.removeData(this._element, DATA_KEY);
328
+ EventHandler.off(this._element, EVENT_KEY);
329
+ Data.removeData(this._element, DATA_KEY);
259
330
  this._items = null;
260
331
  this._config = null;
261
332
  this._element = null;
@@ -268,8 +339,8 @@
268
339
  ;
269
340
 
270
341
  _proto._getConfig = function _getConfig(config) {
271
- config = _objectSpread({}, Default, config);
272
- Util.typeCheckConfig(NAME, config, DefaultType);
342
+ config = _objectSpread(_objectSpread({}, Default), config);
343
+ typeCheckConfig(NAME, config, DefaultType);
273
344
  return config;
274
345
  };
275
346
 
@@ -280,7 +351,8 @@
280
351
  return;
281
352
  }
282
353
 
283
- var direction = absDeltax / this.touchDeltaX; // swipe left
354
+ var direction = absDeltax / this.touchDeltaX;
355
+ this.touchDeltaX = 0; // swipe left
284
356
 
285
357
  if (direction > 0) {
286
358
  this.prev();
@@ -296,20 +368,21 @@
296
368
  var _this2 = this;
297
369
 
298
370
  if (this._config.keyboard) {
299
- $(this._element).on(Event.KEYDOWN, function (event) {
371
+ EventHandler.on(this._element, EVENT_KEYDOWN, function (event) {
300
372
  return _this2._keydown(event);
301
373
  });
302
374
  }
303
375
 
304
376
  if (this._config.pause === 'hover') {
305
- $(this._element).on(Event.MOUSEENTER, function (event) {
377
+ EventHandler.on(this._element, EVENT_MOUSEENTER, function (event) {
306
378
  return _this2.pause(event);
307
- }).on(Event.MOUSELEAVE, function (event) {
379
+ });
380
+ EventHandler.on(this._element, EVENT_MOUSELEAVE, function (event) {
308
381
  return _this2.cycle(event);
309
382
  });
310
383
  }
311
384
 
312
- if (this._config.touch) {
385
+ if (this._config.touch && this._touchSupported) {
313
386
  this._addTouchEventListeners();
314
387
  }
315
388
  };
@@ -317,30 +390,26 @@
317
390
  _proto._addTouchEventListeners = function _addTouchEventListeners() {
318
391
  var _this3 = this;
319
392
 
320
- if (!this._touchSupported) {
321
- return;
322
- }
323
-
324
393
  var start = function start(event) {
325
- if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {
326
- _this3.touchStartX = event.originalEvent.clientX;
394
+ if (_this3._pointerEvent && PointerType[event.pointerType.toUpperCase()]) {
395
+ _this3.touchStartX = event.clientX;
327
396
  } else if (!_this3._pointerEvent) {
328
- _this3.touchStartX = event.originalEvent.touches[0].clientX;
397
+ _this3.touchStartX = event.touches[0].clientX;
329
398
  }
330
399
  };
331
400
 
332
401
  var move = function move(event) {
333
402
  // ensure swiping with one touch and not pinching
334
- if (event.originalEvent.touches && event.originalEvent.touches.length > 1) {
403
+ if (event.touches && event.touches.length > 1) {
335
404
  _this3.touchDeltaX = 0;
336
405
  } else {
337
- _this3.touchDeltaX = event.originalEvent.touches[0].clientX - _this3.touchStartX;
406
+ _this3.touchDeltaX = event.touches[0].clientX - _this3.touchStartX;
338
407
  }
339
408
  };
340
409
 
341
410
  var end = function end(event) {
342
- if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {
343
- _this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX;
411
+ if (_this3._pointerEvent && PointerType[event.pointerType.toUpperCase()]) {
412
+ _this3.touchDeltaX = event.clientX - _this3.touchStartX;
344
413
  }
345
414
 
346
415
  _this3._handleSwipe();
@@ -365,27 +434,29 @@
365
434
  }
366
435
  };
367
436
 
368
- $(this._element.querySelectorAll(Selector.ITEM_IMG)).on(Event.DRAG_START, function (e) {
369
- return e.preventDefault();
437
+ SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(function (itemImg) {
438
+ EventHandler.on(itemImg, EVENT_DRAG_START, function (e) {
439
+ return e.preventDefault();
440
+ });
370
441
  });
371
442
 
372
443
  if (this._pointerEvent) {
373
- $(this._element).on(Event.POINTERDOWN, function (event) {
444
+ EventHandler.on(this._element, EVENT_POINTERDOWN, function (event) {
374
445
  return start(event);
375
446
  });
376
- $(this._element).on(Event.POINTERUP, function (event) {
447
+ EventHandler.on(this._element, EVENT_POINTERUP, function (event) {
377
448
  return end(event);
378
449
  });
379
450
 
380
- this._element.classList.add(ClassName.POINTER_EVENT);
451
+ this._element.classList.add(CLASS_NAME_POINTER_EVENT);
381
452
  } else {
382
- $(this._element).on(Event.TOUCHSTART, function (event) {
453
+ EventHandler.on(this._element, EVENT_TOUCHSTART, function (event) {
383
454
  return start(event);
384
455
  });
385
- $(this._element).on(Event.TOUCHMOVE, function (event) {
456
+ EventHandler.on(this._element, EVENT_TOUCHMOVE, function (event) {
386
457
  return move(event);
387
458
  });
388
- $(this._element).on(Event.TOUCHEND, function (event) {
459
+ EventHandler.on(this._element, EVENT_TOUCHEND, function (event) {
389
460
  return end(event);
390
461
  });
391
462
  }
@@ -396,29 +467,27 @@
396
467
  return;
397
468
  }
398
469
 
399
- switch (event.which) {
400
- case ARROW_LEFT_KEYCODE:
470
+ switch (event.key) {
471
+ case ARROW_LEFT_KEY:
401
472
  event.preventDefault();
402
473
  this.prev();
403
474
  break;
404
475
 
405
- case ARROW_RIGHT_KEYCODE:
476
+ case ARROW_RIGHT_KEY:
406
477
  event.preventDefault();
407
478
  this.next();
408
479
  break;
409
-
410
- default:
411
480
  }
412
481
  };
413
482
 
414
483
  _proto._getItemIndex = function _getItemIndex(element) {
415
- this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(Selector.ITEM)) : [];
484
+ this._items = element && element.parentNode ? SelectorEngine.find(SELECTOR_ITEM, element.parentNode) : [];
416
485
  return this._items.indexOf(element);
417
486
  };
418
487
 
419
488
  _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {
420
- var isNextDirection = direction === Direction.NEXT;
421
- var isPrevDirection = direction === Direction.PREV;
489
+ var isNextDirection = direction === DIRECTION_NEXT;
490
+ var isPrevDirection = direction === DIRECTION_PREV;
422
491
 
423
492
  var activeIndex = this._getItemIndex(activeElement);
424
493
 
@@ -429,7 +498,7 @@
429
498
  return activeElement;
430
499
  }
431
500
 
432
- var delta = direction === Direction.PREV ? -1 : 1;
501
+ var delta = direction === DIRECTION_PREV ? -1 : 1;
433
502
  var itemIndex = (activeIndex + delta) % this._items.length;
434
503
  return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];
435
504
  };
@@ -437,27 +506,28 @@
437
506
  _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {
438
507
  var targetIndex = this._getItemIndex(relatedTarget);
439
508
 
440
- var fromIndex = this._getItemIndex(this._element.querySelector(Selector.ACTIVE_ITEM));
509
+ var fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element));
441
510
 
442
- var slideEvent = $.Event(Event.SLIDE, {
511
+ return EventHandler.trigger(this._element, EVENT_SLIDE, {
443
512
  relatedTarget: relatedTarget,
444
513
  direction: eventDirectionName,
445
514
  from: fromIndex,
446
515
  to: targetIndex
447
516
  });
448
- $(this._element).trigger(slideEvent);
449
- return slideEvent;
450
517
  };
451
518
 
452
519
  _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {
453
520
  if (this._indicatorsElement) {
454
- var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(Selector.ACTIVE));
455
- $(indicators).removeClass(ClassName.ACTIVE);
521
+ var indicators = SelectorEngine.find(SELECTOR_ACTIVE, this._indicatorsElement);
522
+
523
+ for (var i = 0; i < indicators.length; i++) {
524
+ indicators[i].classList.remove(CLASS_NAME_ACTIVE);
525
+ }
456
526
 
457
527
  var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];
458
528
 
459
529
  if (nextIndicator) {
460
- $(nextIndicator).addClass(ClassName.ACTIVE);
530
+ nextIndicator.classList.add(CLASS_NAME_ACTIVE);
461
531
  }
462
532
  }
463
533
  };
@@ -465,7 +535,7 @@
465
535
  _proto._slide = function _slide(direction, element) {
466
536
  var _this4 = this;
467
537
 
468
- var activeElement = this._element.querySelector(Selector.ACTIVE_ITEM);
538
+ var activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
469
539
 
470
540
  var activeElementIndex = this._getItemIndex(activeElement);
471
541
 
@@ -478,24 +548,24 @@
478
548
  var orderClassName;
479
549
  var eventDirectionName;
480
550
 
481
- if (direction === Direction.NEXT) {
482
- directionalClassName = ClassName.LEFT;
483
- orderClassName = ClassName.NEXT;
484
- eventDirectionName = Direction.LEFT;
551
+ if (direction === DIRECTION_NEXT) {
552
+ directionalClassName = CLASS_NAME_LEFT;
553
+ orderClassName = CLASS_NAME_NEXT;
554
+ eventDirectionName = DIRECTION_LEFT;
485
555
  } else {
486
- directionalClassName = ClassName.RIGHT;
487
- orderClassName = ClassName.PREV;
488
- eventDirectionName = Direction.RIGHT;
556
+ directionalClassName = CLASS_NAME_RIGHT;
557
+ orderClassName = CLASS_NAME_PREV;
558
+ eventDirectionName = DIRECTION_RIGHT;
489
559
  }
490
560
 
491
- if (nextElement && $(nextElement).hasClass(ClassName.ACTIVE)) {
561
+ if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE)) {
492
562
  this._isSliding = false;
493
563
  return;
494
564
  }
495
565
 
496
566
  var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);
497
567
 
498
- if (slideEvent.isDefaultPrevented()) {
568
+ if (slideEvent.defaultPrevented) {
499
569
  return;
500
570
  }
501
571
 
@@ -512,18 +582,11 @@
512
582
 
513
583
  this._setActiveIndicatorElement(nextElement);
514
584
 
515
- var slidEvent = $.Event(Event.SLID, {
516
- relatedTarget: nextElement,
517
- direction: eventDirectionName,
518
- from: activeElementIndex,
519
- to: nextElementIndex
520
- });
521
-
522
- if ($(this._element).hasClass(ClassName.SLIDE)) {
523
- $(nextElement).addClass(orderClassName);
524
- Util.reflow(nextElement);
525
- $(activeElement).addClass(directionalClassName);
526
- $(nextElement).addClass(directionalClassName);
585
+ if (this._element.classList.contains(CLASS_NAME_SLIDE)) {
586
+ nextElement.classList.add(orderClassName);
587
+ reflow(nextElement);
588
+ activeElement.classList.add(directionalClassName);
589
+ nextElement.classList.add(directionalClassName);
527
590
  var nextElementInterval = parseInt(nextElement.getAttribute('data-interval'), 10);
528
591
 
529
592
  if (nextElementInterval) {
@@ -533,20 +596,32 @@
533
596
  this._config.interval = this._config.defaultInterval || this._config.interval;
534
597
  }
535
598
 
536
- var transitionDuration = Util.getTransitionDurationFromElement(activeElement);
537
- $(activeElement).one(Util.TRANSITION_END, function () {
538
- $(nextElement).removeClass(directionalClassName + " " + orderClassName).addClass(ClassName.ACTIVE);
539
- $(activeElement).removeClass(ClassName.ACTIVE + " " + orderClassName + " " + directionalClassName);
599
+ var transitionDuration = getTransitionDurationFromElement(activeElement);
600
+ EventHandler.one(activeElement, TRANSITION_END, function () {
601
+ nextElement.classList.remove(directionalClassName, orderClassName);
602
+ nextElement.classList.add(CLASS_NAME_ACTIVE);
603
+ activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName);
540
604
  _this4._isSliding = false;
541
605
  setTimeout(function () {
542
- return $(_this4._element).trigger(slidEvent);
606
+ EventHandler.trigger(_this4._element, EVENT_SLID, {
607
+ relatedTarget: nextElement,
608
+ direction: eventDirectionName,
609
+ from: activeElementIndex,
610
+ to: nextElementIndex
611
+ });
543
612
  }, 0);
544
- }).emulateTransitionEnd(transitionDuration);
613
+ });
614
+ emulateTransitionEnd(activeElement, transitionDuration);
545
615
  } else {
546
- $(activeElement).removeClass(ClassName.ACTIVE);
547
- $(nextElement).addClass(ClassName.ACTIVE);
616
+ activeElement.classList.remove(CLASS_NAME_ACTIVE);
617
+ nextElement.classList.add(CLASS_NAME_ACTIVE);
548
618
  this._isSliding = false;
549
- $(this._element).trigger(slidEvent);
619
+ EventHandler.trigger(this._element, EVENT_SLID, {
620
+ relatedTarget: nextElement,
621
+ direction: eventDirectionName,
622
+ from: activeElementIndex,
623
+ to: nextElementIndex
624
+ });
550
625
  }
551
626
 
552
627
  if (isCycling) {
@@ -555,52 +630,49 @@
555
630
  } // Static
556
631
  ;
557
632
 
558
- Carousel._jQueryInterface = function _jQueryInterface(config) {
559
- return this.each(function () {
560
- var data = $(this).data(DATA_KEY);
633
+ Carousel.carouselInterface = function carouselInterface(element, config) {
634
+ var data = Data.getData(element, DATA_KEY);
561
635
 
562
- var _config = _objectSpread({}, Default, $(this).data());
636
+ var _config = _objectSpread(_objectSpread({}, Default), Manipulator.getDataAttributes(element));
563
637
 
564
- if (typeof config === 'object') {
565
- _config = _objectSpread({}, _config, config);
566
- }
638
+ if (typeof config === 'object') {
639
+ _config = _objectSpread(_objectSpread({}, _config), config);
640
+ }
641
+
642
+ var action = typeof config === 'string' ? config : _config.slide;
567
643
 
568
- var action = typeof config === 'string' ? config : _config.slide;
644
+ if (!data) {
645
+ data = new Carousel(element, _config);
646
+ }
569
647
 
570
- if (!data) {
571
- data = new Carousel(this, _config);
572
- $(this).data(DATA_KEY, data);
648
+ if (typeof config === 'number') {
649
+ data.to(config);
650
+ } else if (typeof action === 'string') {
651
+ if (typeof data[action] === 'undefined') {
652
+ throw new TypeError("No method named \"" + action + "\"");
573
653
  }
574
654
 
575
- if (typeof config === 'number') {
576
- data.to(config);
577
- } else if (typeof action === 'string') {
578
- if (typeof data[action] === 'undefined') {
579
- throw new TypeError("No method named \"" + action + "\"");
580
- }
655
+ data[action]();
656
+ } else if (_config.interval && _config.ride) {
657
+ data.pause();
658
+ data.cycle();
659
+ }
660
+ };
581
661
 
582
- data[action]();
583
- } else if (_config.interval && _config.ride) {
584
- data.pause();
585
- data.cycle();
586
- }
662
+ Carousel.jQueryInterface = function jQueryInterface(config) {
663
+ return this.each(function () {
664
+ Carousel.carouselInterface(this, config);
587
665
  });
588
666
  };
589
667
 
590
- Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {
591
- var selector = Util.getSelectorFromElement(this);
668
+ Carousel.dataApiClickHandler = function dataApiClickHandler(event) {
669
+ var target = getElementFromSelector(this);
592
670
 
593
- if (!selector) {
671
+ if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {
594
672
  return;
595
673
  }
596
674
 
597
- var target = $(selector)[0];
598
-
599
- if (!target || !$(target).hasClass(ClassName.CAROUSEL)) {
600
- return;
601
- }
602
-
603
- var config = _objectSpread({}, $(target).data(), $(this).data());
675
+ var config = _objectSpread(_objectSpread({}, Manipulator.getDataAttributes(target)), Manipulator.getDataAttributes(this));
604
676
 
605
677
  var slideIndex = this.getAttribute('data-slide-to');
606
678
 
@@ -608,15 +680,19 @@
608
680
  config.interval = false;
609
681
  }
610
682
 
611
- Carousel._jQueryInterface.call($(target), config);
683
+ Carousel.carouselInterface(target, config);
612
684
 
613
685
  if (slideIndex) {
614
- $(target).data(DATA_KEY).to(slideIndex);
686
+ Data.getData(target, DATA_KEY).to(slideIndex);
615
687
  }
616
688
 
617
689
  event.preventDefault();
618
690
  };
619
691
 
692
+ Carousel.getInstance = function getInstance(element) {
693
+ return Data.getData(element, DATA_KEY);
694
+ };
695
+
620
696
  _createClass(Carousel, null, [{
621
697
  key: "VERSION",
622
698
  get: function get() {
@@ -638,30 +714,35 @@
638
714
  */
639
715
 
640
716
 
641
- $(document).on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler);
642
- $(window).on(Event.LOAD_DATA_API, function () {
643
- var carousels = [].slice.call(document.querySelectorAll(Selector.DATA_RIDE));
717
+ EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler);
718
+ EventHandler.on(window, EVENT_LOAD_DATA_API, function () {
719
+ var carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);
644
720
 
645
721
  for (var i = 0, len = carousels.length; i < len; i++) {
646
- var $carousel = $(carousels[i]);
647
-
648
- Carousel._jQueryInterface.call($carousel, $carousel.data());
722
+ Carousel.carouselInterface(carousels[i], Data.getData(carousels[i], DATA_KEY));
649
723
  }
650
724
  });
725
+ var $ = getjQuery();
651
726
  /**
652
727
  * ------------------------------------------------------------------------
653
728
  * jQuery
654
729
  * ------------------------------------------------------------------------
730
+ * add .carousel to jQuery only if jQuery is present
655
731
  */
656
732
 
657
- $.fn[NAME] = Carousel._jQueryInterface;
658
- $.fn[NAME].Constructor = Carousel;
733
+ /* istanbul ignore if */
659
734
 
660
- $.fn[NAME].noConflict = function () {
661
- $.fn[NAME] = JQUERY_NO_CONFLICT;
662
- return Carousel._jQueryInterface;
663
- };
735
+ if ($) {
736
+ var JQUERY_NO_CONFLICT = $.fn[NAME];
737
+ $.fn[NAME] = Carousel.jQueryInterface;
738
+ $.fn[NAME].Constructor = Carousel;
739
+
740
+ $.fn[NAME].noConflict = function () {
741
+ $.fn[NAME] = JQUERY_NO_CONFLICT;
742
+ return Carousel.jQueryInterface;
743
+ };
744
+ }
664
745
 
665
746
  return Carousel;
666
747
 
667
- }));
748
+ })));