bootstrap 4.0.0 → 4.6.2.1

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 (116) hide show
  1. checksums.yaml +5 -5
  2. data/.travis.yml +15 -1
  3. data/CHANGELOG.md +4 -4
  4. data/README.md +8 -2
  5. data/Rakefile +18 -4
  6. data/assets/javascripts/bootstrap/alert.js +77 -66
  7. data/assets/javascripts/bootstrap/button.js +138 -76
  8. data/assets/javascripts/bootstrap/carousel.js +289 -152
  9. data/assets/javascripts/bootstrap/collapse.js +150 -128
  10. data/assets/javascripts/bootstrap/dropdown.js +249 -160
  11. data/assets/javascripts/bootstrap/modal.js +280 -199
  12. data/assets/javascripts/bootstrap/popover.js +99 -58
  13. data/assets/javascripts/bootstrap/scrollspy.js +123 -102
  14. data/assets/javascripts/bootstrap/tab.js +110 -98
  15. data/assets/javascripts/bootstrap/toast.js +267 -0
  16. data/assets/javascripts/bootstrap/tooltip.js +401 -183
  17. data/assets/javascripts/bootstrap/util.js +106 -55
  18. data/assets/javascripts/bootstrap-sprockets.js +7 -6
  19. data/assets/javascripts/bootstrap.js +1903 -1441
  20. data/assets/javascripts/bootstrap.min.js +4 -4
  21. data/assets/stylesheets/_bootstrap-grid.scss +6 -8
  22. data/assets/stylesheets/_bootstrap-reboot.scss +4 -4
  23. data/assets/stylesheets/_bootstrap.scss +6 -4
  24. data/assets/stylesheets/bootstrap/_alert.scss +2 -1
  25. data/assets/stylesheets/bootstrap/_badge.scss +8 -1
  26. data/assets/stylesheets/bootstrap/_breadcrumb.scss +10 -6
  27. data/assets/stylesheets/bootstrap/_button-group.scss +17 -20
  28. data/assets/stylesheets/bootstrap/_buttons.scss +20 -21
  29. data/assets/stylesheets/bootstrap/_card.scss +77 -61
  30. data/assets/stylesheets/bootstrap/_carousel.scss +72 -63
  31. data/assets/stylesheets/bootstrap/_close.scss +14 -8
  32. data/assets/stylesheets/bootstrap/_code.scss +6 -14
  33. data/assets/stylesheets/bootstrap/_custom-forms.scss +274 -45
  34. data/assets/stylesheets/bootstrap/_dropdown.scss +70 -9
  35. data/assets/stylesheets/bootstrap/_forms.scss +56 -42
  36. data/assets/stylesheets/bootstrap/_functions.scss +117 -13
  37. data/assets/stylesheets/bootstrap/_grid.scss +32 -11
  38. data/assets/stylesheets/bootstrap/_images.scss +4 -4
  39. data/assets/stylesheets/bootstrap/_input-group.scss +68 -16
  40. data/assets/stylesheets/bootstrap/_jumbotron.scss +2 -1
  41. data/assets/stylesheets/bootstrap/_list-group.scss +63 -24
  42. data/assets/stylesheets/bootstrap/_mixins.scss +9 -4
  43. data/assets/stylesheets/bootstrap/_modal.scss +96 -24
  44. data/assets/stylesheets/bootstrap/_nav.scss +14 -7
  45. data/assets/stylesheets/bootstrap/_navbar.scss +64 -43
  46. data/assets/stylesheets/bootstrap/_pagination.scss +7 -10
  47. data/assets/stylesheets/bootstrap/_popover.scss +55 -68
  48. data/assets/stylesheets/bootstrap/_print.scss +24 -16
  49. data/assets/stylesheets/bootstrap/_progress.scss +20 -6
  50. data/assets/stylesheets/bootstrap/_reboot.scss +88 -86
  51. data/assets/stylesheets/bootstrap/_spinners.scss +65 -0
  52. data/assets/stylesheets/bootstrap/_tables.scss +19 -14
  53. data/assets/stylesheets/bootstrap/_toasts.scss +46 -0
  54. data/assets/stylesheets/bootstrap/_tooltip.scss +5 -5
  55. data/assets/stylesheets/bootstrap/_transitions.scss +10 -20
  56. data/assets/stylesheets/bootstrap/_type.scss +19 -19
  57. data/assets/stylesheets/bootstrap/_utilities.scss +4 -0
  58. data/assets/stylesheets/bootstrap/_variables.scss +462 -207
  59. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +5 -3
  60. data/assets/stylesheets/bootstrap/mixins/_badge.scss +8 -3
  61. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +51 -10
  62. data/assets/stylesheets/bootstrap/mixins/_box-shadow.scss +16 -1
  63. data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +3 -3
  64. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +20 -19
  65. data/assets/stylesheets/bootstrap/mixins/_caret.scss +13 -16
  66. data/assets/stylesheets/bootstrap/mixins/_deprecate.scss +10 -0
  67. data/assets/stylesheets/bootstrap/mixins/_float.scss +6 -3
  68. data/assets/stylesheets/bootstrap/mixins/_forms.scss +96 -38
  69. data/assets/stylesheets/bootstrap/mixins/_gradients.scss +7 -7
  70. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +31 -18
  71. data/assets/stylesheets/bootstrap/mixins/_grid.scss +34 -17
  72. data/assets/stylesheets/bootstrap/mixins/_hover.scss +7 -9
  73. data/assets/stylesheets/bootstrap/mixins/_image.scss +4 -4
  74. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +2 -2
  75. data/assets/stylesheets/bootstrap/mixins/_lists.scss +1 -1
  76. data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +3 -2
  77. data/assets/stylesheets/bootstrap/mixins/_pagination.scss +1 -1
  78. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +3 -3
  79. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +5 -6
  80. data/assets/stylesheets/bootstrap/mixins/_size.scss +1 -0
  81. data/assets/stylesheets/bootstrap/mixins/_table-row.scss +11 -2
  82. data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +7 -4
  83. data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +3 -1
  84. data/assets/stylesheets/bootstrap/mixins/_transition.scss +20 -3
  85. data/assets/stylesheets/bootstrap/mixins/_visibility.scss +1 -0
  86. data/assets/stylesheets/bootstrap/utilities/_background.scss +2 -2
  87. data/assets/stylesheets/bootstrap/utilities/_borders.scss +17 -1
  88. data/assets/stylesheets/bootstrap/utilities/_display.scss +6 -18
  89. data/assets/stylesheets/bootstrap/utilities/_embed.scss +7 -20
  90. data/assets/stylesheets/bootstrap/utilities/_flex.scss +5 -0
  91. data/assets/stylesheets/bootstrap/utilities/_float.scss +5 -3
  92. data/assets/stylesheets/bootstrap/utilities/_interactions.scss +5 -0
  93. data/assets/stylesheets/bootstrap/utilities/_overflow.scss +5 -0
  94. data/assets/stylesheets/bootstrap/utilities/_position.scss +0 -4
  95. data/assets/stylesheets/bootstrap/utilities/_shadows.scss +6 -0
  96. data/assets/stylesheets/bootstrap/utilities/_sizing.scss +8 -0
  97. data/assets/stylesheets/bootstrap/utilities/_spacing.scss +23 -1
  98. data/assets/stylesheets/bootstrap/utilities/_stretched-link.scss +19 -0
  99. data/assets/stylesheets/bootstrap/utilities/_text.scss +28 -8
  100. data/assets/stylesheets/bootstrap/utilities/_visibility.scss +4 -2
  101. data/assets/stylesheets/bootstrap/vendor/_rfs.scss +228 -0
  102. data/bootstrap.gemspec +5 -4
  103. data/lib/bootstrap/engine.rb +19 -0
  104. data/lib/bootstrap/version.rb +4 -2
  105. data/lib/bootstrap.rb +10 -7
  106. data/tasks/updater/js.rb +18 -6
  107. data/tasks/updater/network.rb +8 -2
  108. data/test/dummy_rails/app/assets/config/manifest.js +3 -0
  109. data/test/dummy_rails/app/assets/stylesheets/.browserslistrc +1 -0
  110. data/test/gemfiles/rails_6_0.gemfile +7 -0
  111. data/test/gemfiles/rails_7_0_dartsass.gemfile +8 -0
  112. data/test/gemfiles/rails_7_0_sassc.gemfile +8 -0
  113. data/test/support/dummy_rails_integration.rb +3 -1
  114. data/test/test_helper.rb +21 -15
  115. metadata +28 -25
  116. data/assets/stylesheets/bootstrap/mixins/_navbar-align.scss +0 -10
@@ -1,93 +1,130 @@
1
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
1
+ /*!
2
+ * Bootstrap carousel.js v4.6.2 (https://getbootstrap.com/)
3
+ * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
+ */
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'], factory) :
9
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Carousel = factory(global.jQuery, global.Util));
10
+ })(this, (function ($, Util) { 'use strict';
11
+
12
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
13
+
14
+ var $__default = /*#__PURE__*/_interopDefaultLegacy($);
15
+ var Util__default = /*#__PURE__*/_interopDefaultLegacy(Util);
16
+
17
+ function _defineProperties(target, props) {
18
+ for (var i = 0; i < props.length; i++) {
19
+ var descriptor = props[i];
20
+ descriptor.enumerable = descriptor.enumerable || false;
21
+ descriptor.configurable = true;
22
+ if ("value" in descriptor) descriptor.writable = true;
23
+ Object.defineProperty(target, descriptor.key, descriptor);
24
+ }
25
+ }
26
+
27
+ function _createClass(Constructor, protoProps, staticProps) {
28
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
29
+ if (staticProps) _defineProperties(Constructor, staticProps);
30
+ Object.defineProperty(Constructor, "prototype", {
31
+ writable: false
32
+ });
33
+ return Constructor;
34
+ }
2
35
 
3
- 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); } }
36
+ function _extends() {
37
+ _extends = Object.assign ? Object.assign.bind() : function (target) {
38
+ for (var i = 1; i < arguments.length; i++) {
39
+ var source = arguments[i];
4
40
 
5
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
41
+ for (var key in source) {
42
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
43
+ target[key] = source[key];
44
+ }
45
+ }
46
+ }
47
+
48
+ return target;
49
+ };
50
+ return _extends.apply(this, arguments);
51
+ }
6
52
 
7
- /**
8
- * --------------------------------------------------------------------------
9
- * Bootstrap (v4.0.0): carousel.js
10
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
11
- * --------------------------------------------------------------------------
12
- */
13
- var Carousel = function ($) {
14
53
  /**
15
- * ------------------------------------------------------------------------
16
54
  * Constants
17
- * ------------------------------------------------------------------------
18
55
  */
56
+
19
57
  var NAME = 'carousel';
20
- var VERSION = '4.0.0';
58
+ var VERSION = '4.6.2';
21
59
  var DATA_KEY = 'bs.carousel';
22
60
  var EVENT_KEY = "." + DATA_KEY;
23
61
  var DATA_API_KEY = '.data-api';
24
- var JQUERY_NO_CONFLICT = $.fn[NAME];
25
- var TRANSITION_DURATION = 600;
62
+ var JQUERY_NO_CONFLICT = $__default["default"].fn[NAME];
26
63
  var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key
27
64
 
28
65
  var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key
29
66
 
30
67
  var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch
31
68
 
69
+ var SWIPE_THRESHOLD = 40;
70
+ var CLASS_NAME_CAROUSEL = 'carousel';
71
+ var CLASS_NAME_ACTIVE = 'active';
72
+ var CLASS_NAME_SLIDE = 'slide';
73
+ var CLASS_NAME_RIGHT = 'carousel-item-right';
74
+ var CLASS_NAME_LEFT = 'carousel-item-left';
75
+ var CLASS_NAME_NEXT = 'carousel-item-next';
76
+ var CLASS_NAME_PREV = 'carousel-item-prev';
77
+ var CLASS_NAME_POINTER_EVENT = 'pointer-event';
78
+ var DIRECTION_NEXT = 'next';
79
+ var DIRECTION_PREV = 'prev';
80
+ var DIRECTION_LEFT = 'left';
81
+ var DIRECTION_RIGHT = 'right';
82
+ var EVENT_SLIDE = "slide" + EVENT_KEY;
83
+ var EVENT_SLID = "slid" + EVENT_KEY;
84
+ var EVENT_KEYDOWN = "keydown" + EVENT_KEY;
85
+ var EVENT_MOUSEENTER = "mouseenter" + EVENT_KEY;
86
+ var EVENT_MOUSELEAVE = "mouseleave" + EVENT_KEY;
87
+ var EVENT_TOUCHSTART = "touchstart" + EVENT_KEY;
88
+ var EVENT_TOUCHMOVE = "touchmove" + EVENT_KEY;
89
+ var EVENT_TOUCHEND = "touchend" + EVENT_KEY;
90
+ var EVENT_POINTERDOWN = "pointerdown" + EVENT_KEY;
91
+ var EVENT_POINTERUP = "pointerup" + EVENT_KEY;
92
+ var EVENT_DRAG_START = "dragstart" + EVENT_KEY;
93
+ var EVENT_LOAD_DATA_API = "load" + EVENT_KEY + DATA_API_KEY;
94
+ var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
95
+ var SELECTOR_ACTIVE = '.active';
96
+ var SELECTOR_ACTIVE_ITEM = '.active.carousel-item';
97
+ var SELECTOR_ITEM = '.carousel-item';
98
+ var SELECTOR_ITEM_IMG = '.carousel-item img';
99
+ var SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev';
100
+ var SELECTOR_INDICATORS = '.carousel-indicators';
101
+ var SELECTOR_DATA_SLIDE = '[data-slide], [data-slide-to]';
102
+ var SELECTOR_DATA_RIDE = '[data-ride="carousel"]';
32
103
  var Default = {
33
104
  interval: 5000,
34
105
  keyboard: true,
35
106
  slide: false,
36
107
  pause: 'hover',
37
- wrap: true
108
+ wrap: true,
109
+ touch: true
38
110
  };
39
111
  var DefaultType = {
40
112
  interval: '(number|boolean)',
41
113
  keyboard: 'boolean',
42
114
  slide: '(boolean|string)',
43
115
  pause: '(string|boolean)',
44
- wrap: 'boolean'
45
- };
46
- var Direction = {
47
- NEXT: 'next',
48
- PREV: 'prev',
49
- LEFT: 'left',
50
- RIGHT: 'right'
51
- };
52
- var Event = {
53
- SLIDE: "slide" + EVENT_KEY,
54
- SLID: "slid" + EVENT_KEY,
55
- KEYDOWN: "keydown" + EVENT_KEY,
56
- MOUSEENTER: "mouseenter" + EVENT_KEY,
57
- MOUSELEAVE: "mouseleave" + EVENT_KEY,
58
- TOUCHEND: "touchend" + EVENT_KEY,
59
- LOAD_DATA_API: "load" + EVENT_KEY + DATA_API_KEY,
60
- CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
116
+ wrap: 'boolean',
117
+ touch: 'boolean'
61
118
  };
62
- var ClassName = {
63
- CAROUSEL: 'carousel',
64
- ACTIVE: 'active',
65
- SLIDE: 'slide',
66
- RIGHT: 'carousel-item-right',
67
- LEFT: 'carousel-item-left',
68
- NEXT: 'carousel-item-next',
69
- PREV: 'carousel-item-prev',
70
- ITEM: 'carousel-item'
71
- };
72
- var Selector = {
73
- ACTIVE: '.active',
74
- ACTIVE_ITEM: '.active.carousel-item',
75
- ITEM: '.carousel-item',
76
- NEXT_PREV: '.carousel-item-next, .carousel-item-prev',
77
- INDICATORS: '.carousel-indicators',
78
- DATA_SLIDE: '[data-slide], [data-slide-to]',
79
- DATA_RIDE: '[data-ride="carousel"]'
80
- /**
81
- * ------------------------------------------------------------------------
82
- * Class Definition
83
- * ------------------------------------------------------------------------
84
- */
85
-
119
+ var PointerType = {
120
+ TOUCH: 'touch',
121
+ PEN: 'pen'
86
122
  };
123
+ /**
124
+ * Class definition
125
+ */
87
126
 
88
- var Carousel =
89
- /*#__PURE__*/
90
- function () {
127
+ var Carousel = /*#__PURE__*/function () {
91
128
  function Carousel(element, config) {
92
129
  this._items = null;
93
130
  this._interval = null;
@@ -95,9 +132,13 @@ var Carousel = function ($) {
95
132
  this._isPaused = false;
96
133
  this._isSliding = false;
97
134
  this.touchTimeout = null;
135
+ this.touchStartX = 0;
136
+ this.touchDeltaX = 0;
98
137
  this._config = this._getConfig(config);
99
- this._element = $(element)[0];
100
- this._indicatorsElement = $(this._element).find(Selector.INDICATORS)[0];
138
+ this._element = element;
139
+ this._indicatorsElement = this._element.querySelector(SELECTOR_INDICATORS);
140
+ this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;
141
+ this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent);
101
142
 
102
143
  this._addEventListeners();
103
144
  } // Getters
@@ -108,21 +149,22 @@ var Carousel = function ($) {
108
149
  // Public
109
150
  _proto.next = function next() {
110
151
  if (!this._isSliding) {
111
- this._slide(Direction.NEXT);
152
+ this._slide(DIRECTION_NEXT);
112
153
  }
113
154
  };
114
155
 
115
156
  _proto.nextWhenVisible = function nextWhenVisible() {
116
- // Don't call next when the page isn't visible
157
+ var $element = $__default["default"](this._element); // Don't call next when the page isn't visible
117
158
  // or the carousel or its parent isn't visible
118
- if (!document.hidden && $(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden') {
159
+
160
+ if (!document.hidden && $element.is(':visible') && $element.css('visibility') !== 'hidden') {
119
161
  this.next();
120
162
  }
121
163
  };
122
164
 
123
165
  _proto.prev = function prev() {
124
166
  if (!this._isSliding) {
125
- this._slide(Direction.PREV);
167
+ this._slide(DIRECTION_PREV);
126
168
  }
127
169
  };
128
170
 
@@ -131,8 +173,8 @@ var Carousel = function ($) {
131
173
  this._isPaused = true;
132
174
  }
133
175
 
134
- if ($(this._element).find(Selector.NEXT_PREV)[0] && Util.supportsTransitionEnd()) {
135
- Util.triggerTransitionEnd(this._element);
176
+ if (this._element.querySelector(SELECTOR_NEXT_PREV)) {
177
+ Util__default["default"].triggerTransitionEnd(this._element);
136
178
  this.cycle(true);
137
179
  }
138
180
 
@@ -151,6 +193,8 @@ var Carousel = function ($) {
151
193
  }
152
194
 
153
195
  if (this._config.interval && !this._isPaused) {
196
+ this._updateInterval();
197
+
154
198
  this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);
155
199
  }
156
200
  };
@@ -158,7 +202,7 @@ var Carousel = function ($) {
158
202
  _proto.to = function to(index) {
159
203
  var _this = this;
160
204
 
161
- this._activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0];
205
+ this._activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);
162
206
 
163
207
  var activeIndex = this._getItemIndex(this._activeElement);
164
208
 
@@ -167,7 +211,7 @@ var Carousel = function ($) {
167
211
  }
168
212
 
169
213
  if (this._isSliding) {
170
- $(this._element).one(Event.SLID, function () {
214
+ $__default["default"](this._element).one(EVENT_SLID, function () {
171
215
  return _this.to(index);
172
216
  });
173
217
  return;
@@ -179,14 +223,14 @@ var Carousel = function ($) {
179
223
  return;
180
224
  }
181
225
 
182
- var direction = index > activeIndex ? Direction.NEXT : Direction.PREV;
226
+ var direction = index > activeIndex ? DIRECTION_NEXT : DIRECTION_PREV;
183
227
 
184
228
  this._slide(direction, this._items[index]);
185
229
  };
186
230
 
187
231
  _proto.dispose = function dispose() {
188
- $(this._element).off(EVENT_KEY);
189
- $.removeData(this._element, DATA_KEY);
232
+ $__default["default"](this._element).off(EVENT_KEY);
233
+ $__default["default"].removeData(this._element, DATA_KEY);
190
234
  this._items = null;
191
235
  this._config = null;
192
236
  this._element = null;
@@ -195,32 +239,85 @@ var Carousel = function ($) {
195
239
  this._isSliding = null;
196
240
  this._activeElement = null;
197
241
  this._indicatorsElement = null;
198
- }; // Private
199
-
242
+ } // Private
243
+ ;
200
244
 
201
245
  _proto._getConfig = function _getConfig(config) {
202
246
  config = _extends({}, Default, config);
203
- Util.typeCheckConfig(NAME, config, DefaultType);
247
+ Util__default["default"].typeCheckConfig(NAME, config, DefaultType);
204
248
  return config;
205
249
  };
206
250
 
251
+ _proto._handleSwipe = function _handleSwipe() {
252
+ var absDeltax = Math.abs(this.touchDeltaX);
253
+
254
+ if (absDeltax <= SWIPE_THRESHOLD) {
255
+ return;
256
+ }
257
+
258
+ var direction = absDeltax / this.touchDeltaX;
259
+ this.touchDeltaX = 0; // swipe left
260
+
261
+ if (direction > 0) {
262
+ this.prev();
263
+ } // swipe right
264
+
265
+
266
+ if (direction < 0) {
267
+ this.next();
268
+ }
269
+ };
270
+
207
271
  _proto._addEventListeners = function _addEventListeners() {
208
272
  var _this2 = this;
209
273
 
210
274
  if (this._config.keyboard) {
211
- $(this._element).on(Event.KEYDOWN, function (event) {
275
+ $__default["default"](this._element).on(EVENT_KEYDOWN, function (event) {
212
276
  return _this2._keydown(event);
213
277
  });
214
278
  }
215
279
 
216
280
  if (this._config.pause === 'hover') {
217
- $(this._element).on(Event.MOUSEENTER, function (event) {
281
+ $__default["default"](this._element).on(EVENT_MOUSEENTER, function (event) {
218
282
  return _this2.pause(event);
219
- }).on(Event.MOUSELEAVE, function (event) {
283
+ }).on(EVENT_MOUSELEAVE, function (event) {
220
284
  return _this2.cycle(event);
221
285
  });
286
+ }
287
+
288
+ if (this._config.touch) {
289
+ this._addTouchEventListeners();
290
+ }
291
+ };
292
+
293
+ _proto._addTouchEventListeners = function _addTouchEventListeners() {
294
+ var _this3 = this;
295
+
296
+ if (!this._touchSupported) {
297
+ return;
298
+ }
299
+
300
+ var start = function start(event) {
301
+ if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {
302
+ _this3.touchStartX = event.originalEvent.clientX;
303
+ } else if (!_this3._pointerEvent) {
304
+ _this3.touchStartX = event.originalEvent.touches[0].clientX;
305
+ }
306
+ };
307
+
308
+ var move = function move(event) {
309
+ // ensure swiping with one touch and not pinching
310
+ _this3.touchDeltaX = event.originalEvent.touches && event.originalEvent.touches.length > 1 ? 0 : event.originalEvent.touches[0].clientX - _this3.touchStartX;
311
+ };
222
312
 
223
- if ('ontouchstart' in document.documentElement) {
313
+ var end = function end(event) {
314
+ if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {
315
+ _this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX;
316
+ }
317
+
318
+ _this3._handleSwipe();
319
+
320
+ if (_this3._config.pause === 'hover') {
224
321
  // If it's a touch-enabled device, mouseenter/leave are fired as
225
322
  // part of the mouse compatibility events on first tap - the carousel
226
323
  // would stop cycling until user tapped out of it;
@@ -228,18 +325,41 @@ var Carousel = function ($) {
228
325
  // (as if it's the second time we tap on it, mouseenter compat event
229
326
  // is NOT fired) and after a timeout (to allow for mouse compatibility
230
327
  // events to fire) we explicitly restart cycling
231
- $(this._element).on(Event.TOUCHEND, function () {
232
- _this2.pause();
328
+ _this3.pause();
233
329
 
234
- if (_this2.touchTimeout) {
235
- clearTimeout(_this2.touchTimeout);
236
- }
330
+ if (_this3.touchTimeout) {
331
+ clearTimeout(_this3.touchTimeout);
332
+ }
237
333
 
238
- _this2.touchTimeout = setTimeout(function (event) {
239
- return _this2.cycle(event);
240
- }, TOUCHEVENT_COMPAT_WAIT + _this2._config.interval);
241
- });
334
+ _this3.touchTimeout = setTimeout(function (event) {
335
+ return _this3.cycle(event);
336
+ }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval);
242
337
  }
338
+ };
339
+
340
+ $__default["default"](this._element.querySelectorAll(SELECTOR_ITEM_IMG)).on(EVENT_DRAG_START, function (e) {
341
+ return e.preventDefault();
342
+ });
343
+
344
+ if (this._pointerEvent) {
345
+ $__default["default"](this._element).on(EVENT_POINTERDOWN, function (event) {
346
+ return start(event);
347
+ });
348
+ $__default["default"](this._element).on(EVENT_POINTERUP, function (event) {
349
+ return end(event);
350
+ });
351
+
352
+ this._element.classList.add(CLASS_NAME_POINTER_EVENT);
353
+ } else {
354
+ $__default["default"](this._element).on(EVENT_TOUCHSTART, function (event) {
355
+ return start(event);
356
+ });
357
+ $__default["default"](this._element).on(EVENT_TOUCHMOVE, function (event) {
358
+ return move(event);
359
+ });
360
+ $__default["default"](this._element).on(EVENT_TOUCHEND, function (event) {
361
+ return end(event);
362
+ });
243
363
  }
244
364
  };
245
365
 
@@ -258,19 +378,17 @@ var Carousel = function ($) {
258
378
  event.preventDefault();
259
379
  this.next();
260
380
  break;
261
-
262
- default:
263
381
  }
264
382
  };
265
383
 
266
384
  _proto._getItemIndex = function _getItemIndex(element) {
267
- this._items = $.makeArray($(element).parent().find(Selector.ITEM));
385
+ this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM)) : [];
268
386
  return this._items.indexOf(element);
269
387
  };
270
388
 
271
389
  _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {
272
- var isNextDirection = direction === Direction.NEXT;
273
- var isPrevDirection = direction === Direction.PREV;
390
+ var isNextDirection = direction === DIRECTION_NEXT;
391
+ var isPrevDirection = direction === DIRECTION_PREV;
274
392
 
275
393
  var activeIndex = this._getItemIndex(activeElement);
276
394
 
@@ -281,7 +399,7 @@ var Carousel = function ($) {
281
399
  return activeElement;
282
400
  }
283
401
 
284
- var delta = direction === Direction.PREV ? -1 : 1;
402
+ var delta = direction === DIRECTION_PREV ? -1 : 1;
285
403
  var itemIndex = (activeIndex + delta) % this._items.length;
286
404
  return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];
287
405
  };
@@ -289,34 +407,52 @@ var Carousel = function ($) {
289
407
  _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {
290
408
  var targetIndex = this._getItemIndex(relatedTarget);
291
409
 
292
- var fromIndex = this._getItemIndex($(this._element).find(Selector.ACTIVE_ITEM)[0]);
410
+ var fromIndex = this._getItemIndex(this._element.querySelector(SELECTOR_ACTIVE_ITEM));
293
411
 
294
- var slideEvent = $.Event(Event.SLIDE, {
412
+ var slideEvent = $__default["default"].Event(EVENT_SLIDE, {
295
413
  relatedTarget: relatedTarget,
296
414
  direction: eventDirectionName,
297
415
  from: fromIndex,
298
416
  to: targetIndex
299
417
  });
300
- $(this._element).trigger(slideEvent);
418
+ $__default["default"](this._element).trigger(slideEvent);
301
419
  return slideEvent;
302
420
  };
303
421
 
304
422
  _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {
305
423
  if (this._indicatorsElement) {
306
- $(this._indicatorsElement).find(Selector.ACTIVE).removeClass(ClassName.ACTIVE);
424
+ var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(SELECTOR_ACTIVE));
425
+ $__default["default"](indicators).removeClass(CLASS_NAME_ACTIVE);
307
426
 
308
427
  var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];
309
428
 
310
429
  if (nextIndicator) {
311
- $(nextIndicator).addClass(ClassName.ACTIVE);
430
+ $__default["default"](nextIndicator).addClass(CLASS_NAME_ACTIVE);
312
431
  }
313
432
  }
314
433
  };
315
434
 
435
+ _proto._updateInterval = function _updateInterval() {
436
+ var element = this._activeElement || this._element.querySelector(SELECTOR_ACTIVE_ITEM);
437
+
438
+ if (!element) {
439
+ return;
440
+ }
441
+
442
+ var elementInterval = parseInt(element.getAttribute('data-interval'), 10);
443
+
444
+ if (elementInterval) {
445
+ this._config.defaultInterval = this._config.defaultInterval || this._config.interval;
446
+ this._config.interval = elementInterval;
447
+ } else {
448
+ this._config.interval = this._config.defaultInterval || this._config.interval;
449
+ }
450
+ };
451
+
316
452
  _proto._slide = function _slide(direction, element) {
317
- var _this3 = this;
453
+ var _this4 = this;
318
454
 
319
- var activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0];
455
+ var activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);
320
456
 
321
457
  var activeElementIndex = this._getItemIndex(activeElement);
322
458
 
@@ -329,17 +465,17 @@ var Carousel = function ($) {
329
465
  var orderClassName;
330
466
  var eventDirectionName;
331
467
 
332
- if (direction === Direction.NEXT) {
333
- directionalClassName = ClassName.LEFT;
334
- orderClassName = ClassName.NEXT;
335
- eventDirectionName = Direction.LEFT;
468
+ if (direction === DIRECTION_NEXT) {
469
+ directionalClassName = CLASS_NAME_LEFT;
470
+ orderClassName = CLASS_NAME_NEXT;
471
+ eventDirectionName = DIRECTION_LEFT;
336
472
  } else {
337
- directionalClassName = ClassName.RIGHT;
338
- orderClassName = ClassName.PREV;
339
- eventDirectionName = Direction.RIGHT;
473
+ directionalClassName = CLASS_NAME_RIGHT;
474
+ orderClassName = CLASS_NAME_PREV;
475
+ eventDirectionName = DIRECTION_RIGHT;
340
476
  }
341
477
 
342
- if (nextElement && $(nextElement).hasClass(ClassName.ACTIVE)) {
478
+ if (nextElement && $__default["default"](nextElement).hasClass(CLASS_NAME_ACTIVE)) {
343
479
  this._isSliding = false;
344
480
  return;
345
481
  }
@@ -363,44 +499,46 @@ var Carousel = function ($) {
363
499
 
364
500
  this._setActiveIndicatorElement(nextElement);
365
501
 
366
- var slidEvent = $.Event(Event.SLID, {
502
+ this._activeElement = nextElement;
503
+ var slidEvent = $__default["default"].Event(EVENT_SLID, {
367
504
  relatedTarget: nextElement,
368
505
  direction: eventDirectionName,
369
506
  from: activeElementIndex,
370
507
  to: nextElementIndex
371
508
  });
372
509
 
373
- if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.SLIDE)) {
374
- $(nextElement).addClass(orderClassName);
375
- Util.reflow(nextElement);
376
- $(activeElement).addClass(directionalClassName);
377
- $(nextElement).addClass(directionalClassName);
378
- $(activeElement).one(Util.TRANSITION_END, function () {
379
- $(nextElement).removeClass(directionalClassName + " " + orderClassName).addClass(ClassName.ACTIVE);
380
- $(activeElement).removeClass(ClassName.ACTIVE + " " + orderClassName + " " + directionalClassName);
381
- _this3._isSliding = false;
510
+ if ($__default["default"](this._element).hasClass(CLASS_NAME_SLIDE)) {
511
+ $__default["default"](nextElement).addClass(orderClassName);
512
+ Util__default["default"].reflow(nextElement);
513
+ $__default["default"](activeElement).addClass(directionalClassName);
514
+ $__default["default"](nextElement).addClass(directionalClassName);
515
+ var transitionDuration = Util__default["default"].getTransitionDurationFromElement(activeElement);
516
+ $__default["default"](activeElement).one(Util__default["default"].TRANSITION_END, function () {
517
+ $__default["default"](nextElement).removeClass(directionalClassName + " " + orderClassName).addClass(CLASS_NAME_ACTIVE);
518
+ $__default["default"](activeElement).removeClass(CLASS_NAME_ACTIVE + " " + orderClassName + " " + directionalClassName);
519
+ _this4._isSliding = false;
382
520
  setTimeout(function () {
383
- return $(_this3._element).trigger(slidEvent);
521
+ return $__default["default"](_this4._element).trigger(slidEvent);
384
522
  }, 0);
385
- }).emulateTransitionEnd(TRANSITION_DURATION);
523
+ }).emulateTransitionEnd(transitionDuration);
386
524
  } else {
387
- $(activeElement).removeClass(ClassName.ACTIVE);
388
- $(nextElement).addClass(ClassName.ACTIVE);
525
+ $__default["default"](activeElement).removeClass(CLASS_NAME_ACTIVE);
526
+ $__default["default"](nextElement).addClass(CLASS_NAME_ACTIVE);
389
527
  this._isSliding = false;
390
- $(this._element).trigger(slidEvent);
528
+ $__default["default"](this._element).trigger(slidEvent);
391
529
  }
392
530
 
393
531
  if (isCycling) {
394
532
  this.cycle();
395
533
  }
396
- }; // Static
397
-
534
+ } // Static
535
+ ;
398
536
 
399
537
  Carousel._jQueryInterface = function _jQueryInterface(config) {
400
538
  return this.each(function () {
401
- var data = $(this).data(DATA_KEY);
539
+ var data = $__default["default"](this).data(DATA_KEY);
402
540
 
403
- var _config = _extends({}, Default, $(this).data());
541
+ var _config = _extends({}, Default, $__default["default"](this).data());
404
542
 
405
543
  if (typeof config === 'object') {
406
544
  _config = _extends({}, _config, config);
@@ -410,7 +548,7 @@ var Carousel = function ($) {
410
548
 
411
549
  if (!data) {
412
550
  data = new Carousel(this, _config);
413
- $(this).data(DATA_KEY, data);
551
+ $__default["default"](this).data(DATA_KEY, data);
414
552
  }
415
553
 
416
554
  if (typeof config === 'number') {
@@ -421,7 +559,7 @@ var Carousel = function ($) {
421
559
  }
422
560
 
423
561
  data[action]();
424
- } else if (_config.interval) {
562
+ } else if (_config.interval && _config.ride) {
425
563
  data.pause();
426
564
  data.cycle();
427
565
  }
@@ -429,19 +567,19 @@ var Carousel = function ($) {
429
567
  };
430
568
 
431
569
  Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {
432
- var selector = Util.getSelectorFromElement(this);
570
+ var selector = Util__default["default"].getSelectorFromElement(this);
433
571
 
434
572
  if (!selector) {
435
573
  return;
436
574
  }
437
575
 
438
- var target = $(selector)[0];
576
+ var target = $__default["default"](selector)[0];
439
577
 
440
- if (!target || !$(target).hasClass(ClassName.CAROUSEL)) {
578
+ if (!target || !$__default["default"](target).hasClass(CLASS_NAME_CAROUSEL)) {
441
579
  return;
442
580
  }
443
581
 
444
- var config = _extends({}, $(target).data(), $(this).data());
582
+ var config = _extends({}, $__default["default"](target).data(), $__default["default"](this).data());
445
583
 
446
584
  var slideIndex = this.getAttribute('data-slide-to');
447
585
 
@@ -449,10 +587,10 @@ var Carousel = function ($) {
449
587
  config.interval = false;
450
588
  }
451
589
 
452
- Carousel._jQueryInterface.call($(target), config);
590
+ Carousel._jQueryInterface.call($__default["default"](target), config);
453
591
 
454
592
  if (slideIndex) {
455
- $(target).data(DATA_KEY).to(slideIndex);
593
+ $__default["default"](target).data(DATA_KEY).to(slideIndex);
456
594
  }
457
595
 
458
596
  event.preventDefault();
@@ -473,33 +611,32 @@ var Carousel = function ($) {
473
611
  return Carousel;
474
612
  }();
475
613
  /**
476
- * ------------------------------------------------------------------------
477
- * Data Api implementation
478
- * ------------------------------------------------------------------------
614
+ * Data API implementation
479
615
  */
480
616
 
481
617
 
482
- $(document).on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler);
483
- $(window).on(Event.LOAD_DATA_API, function () {
484
- $(Selector.DATA_RIDE).each(function () {
485
- var $carousel = $(this);
618
+ $__default["default"](document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel._dataApiClickHandler);
619
+ $__default["default"](window).on(EVENT_LOAD_DATA_API, function () {
620
+ var carousels = [].slice.call(document.querySelectorAll(SELECTOR_DATA_RIDE));
621
+
622
+ for (var i = 0, len = carousels.length; i < len; i++) {
623
+ var $carousel = $__default["default"](carousels[i]);
486
624
 
487
625
  Carousel._jQueryInterface.call($carousel, $carousel.data());
488
- });
626
+ }
489
627
  });
490
628
  /**
491
- * ------------------------------------------------------------------------
492
629
  * jQuery
493
- * ------------------------------------------------------------------------
494
630
  */
495
631
 
496
- $.fn[NAME] = Carousel._jQueryInterface;
497
- $.fn[NAME].Constructor = Carousel;
632
+ $__default["default"].fn[NAME] = Carousel._jQueryInterface;
633
+ $__default["default"].fn[NAME].Constructor = Carousel;
498
634
 
499
- $.fn[NAME].noConflict = function () {
500
- $.fn[NAME] = JQUERY_NO_CONFLICT;
635
+ $__default["default"].fn[NAME].noConflict = function () {
636
+ $__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
501
637
  return Carousel._jQueryInterface;
502
638
  };
503
639
 
504
640
  return Carousel;
505
- }($);
641
+
642
+ }));