bootstrap 4.5.2 → 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 (131) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/assets/javascripts/bootstrap-sprockets.js +12 -8
  4. data/assets/javascripts/bootstrap.js +1876 -1220
  5. data/assets/javascripts/bootstrap.min.js +2 -2
  6. data/assets/javascripts/bootstrap/alert.js +133 -48
  7. data/assets/javascripts/bootstrap/button.js +56 -123
  8. data/assets/javascripts/bootstrap/carousel.js +268 -129
  9. data/assets/javascripts/bootstrap/collapse.js +285 -106
  10. data/assets/javascripts/bootstrap/dom/data.js +81 -0
  11. data/assets/javascripts/bootstrap/dom/event-handler.js +311 -0
  12. data/assets/javascripts/bootstrap/dom/manipulator.js +100 -0
  13. data/assets/javascripts/bootstrap/dom/polyfill.js +110 -0
  14. data/assets/javascripts/bootstrap/dom/selector-engine.js +98 -0
  15. data/assets/javascripts/bootstrap/dropdown.js +235 -161
  16. data/assets/javascripts/bootstrap/modal.js +322 -193
  17. data/assets/javascripts/bootstrap/popover.js +72 -41
  18. data/assets/javascripts/bootstrap/scrollspy.js +151 -56
  19. data/assets/javascripts/bootstrap/tab.js +151 -64
  20. data/assets/javascripts/bootstrap/toast.js +163 -65
  21. data/assets/javascripts/bootstrap/tooltip.js +336 -155
  22. data/assets/stylesheets/_bootstrap-grid.scss +51 -15
  23. data/assets/stylesheets/_bootstrap-reboot.scss +4 -1
  24. data/assets/stylesheets/_bootstrap.scss +14 -8
  25. data/assets/stylesheets/bootstrap/_alert.scss +3 -3
  26. data/assets/stylesheets/bootstrap/_badge.scss +2 -27
  27. data/assets/stylesheets/bootstrap/_breadcrumb.scss +3 -17
  28. data/assets/stylesheets/bootstrap/_button-group.scss +16 -38
  29. data/assets/stylesheets/bootstrap/_buttons.scss +27 -45
  30. data/assets/stylesheets/bootstrap/_card.scss +18 -64
  31. data/assets/stylesheets/bootstrap/_carousel.scss +13 -15
  32. data/assets/stylesheets/bootstrap/_close.scss +9 -13
  33. data/assets/stylesheets/bootstrap/_containers.scss +41 -0
  34. data/assets/stylesheets/bootstrap/_dropdown.scss +10 -7
  35. data/assets/stylesheets/bootstrap/_forms.scss +9 -347
  36. data/assets/stylesheets/bootstrap/_functions.scss +82 -20
  37. data/assets/stylesheets/bootstrap/_grid.scss +3 -54
  38. data/assets/stylesheets/bootstrap/_helpers.scss +7 -0
  39. data/assets/stylesheets/bootstrap/_list-group.scss +6 -3
  40. data/assets/stylesheets/bootstrap/_mixins.scss +6 -12
  41. data/assets/stylesheets/bootstrap/_modal.scss +34 -39
  42. data/assets/stylesheets/bootstrap/_nav.scss +8 -8
  43. data/assets/stylesheets/bootstrap/_navbar.scss +42 -74
  44. data/assets/stylesheets/bootstrap/_pagination.scss +7 -20
  45. data/assets/stylesheets/bootstrap/_popover.scss +5 -5
  46. data/assets/stylesheets/bootstrap/_progress.scss +2 -4
  47. data/assets/stylesheets/bootstrap/_reboot.scss +300 -164
  48. data/assets/stylesheets/bootstrap/_root.scss +5 -9
  49. data/assets/stylesheets/bootstrap/_spinners.scss +2 -2
  50. data/assets/stylesheets/bootstrap/_tables.scss +80 -114
  51. data/assets/stylesheets/bootstrap/_toasts.scss +2 -4
  52. data/assets/stylesheets/bootstrap/_tooltip.scss +5 -5
  53. data/assets/stylesheets/bootstrap/_transitions.scss +0 -1
  54. data/assets/stylesheets/bootstrap/_type.scss +38 -59
  55. data/assets/stylesheets/bootstrap/_utilities.scss +503 -18
  56. data/assets/stylesheets/bootstrap/_variables.scss +544 -424
  57. data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +18 -0
  58. data/assets/stylesheets/bootstrap/forms/_form-check.scss +142 -0
  59. data/assets/stylesheets/bootstrap/forms/_form-control.scss +116 -0
  60. data/assets/stylesheets/bootstrap/forms/_form-file.scss +91 -0
  61. data/assets/stylesheets/bootstrap/forms/_form-range.scss +136 -0
  62. data/assets/stylesheets/bootstrap/forms/_form-select.scss +82 -0
  63. data/assets/stylesheets/bootstrap/forms/_form-text.scss +11 -0
  64. data/assets/stylesheets/bootstrap/forms/_input-group.scss +140 -0
  65. data/assets/stylesheets/bootstrap/forms/_labels.scss +36 -0
  66. data/assets/stylesheets/bootstrap/forms/_validation.scss +12 -0
  67. data/assets/stylesheets/bootstrap/{utilities → helpers}/_clearfix.scss +0 -0
  68. data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +12 -0
  69. data/assets/stylesheets/bootstrap/helpers/_embed.scss +31 -0
  70. data/assets/stylesheets/bootstrap/helpers/_position.scss +30 -0
  71. data/assets/stylesheets/bootstrap/helpers/_screenreaders.scss +8 -0
  72. data/assets/stylesheets/bootstrap/helpers/_stretched-link.scss +15 -0
  73. data/assets/stylesheets/bootstrap/helpers/_text-truncation.scss +7 -0
  74. data/assets/stylesheets/bootstrap/mixins/_alert.scss +0 -4
  75. data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +11 -8
  76. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +62 -47
  77. data/assets/stylesheets/bootstrap/mixins/_caret.scss +4 -4
  78. data/assets/stylesheets/bootstrap/mixins/_clearfix.scss +2 -0
  79. data/assets/stylesheets/bootstrap/mixins/_container.scss +9 -0
  80. data/assets/stylesheets/bootstrap/mixins/_forms.scss +22 -67
  81. data/assets/stylesheets/bootstrap/mixins/_gradients.scss +9 -11
  82. data/assets/stylesheets/bootstrap/mixins/_grid.scss +84 -32
  83. data/assets/stylesheets/bootstrap/mixins/_image.scss +1 -21
  84. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +2 -1
  85. data/assets/stylesheets/bootstrap/mixins/_lists.scss +1 -1
  86. data/assets/stylesheets/bootstrap/mixins/_pagination.scss +15 -8
  87. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +2 -2
  88. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +16 -22
  89. data/assets/stylesheets/bootstrap/mixins/_table-variants.scss +21 -0
  90. data/assets/stylesheets/bootstrap/mixins/_transition.scss +1 -1
  91. data/assets/stylesheets/bootstrap/mixins/_utilities.scss +49 -0
  92. data/assets/stylesheets/bootstrap/utilities/_api.scss +47 -0
  93. data/assets/stylesheets/bootstrap/vendor/_rfs.scss +234 -126
  94. data/lib/bootstrap/version.rb +2 -2
  95. data/tasks/updater/js.rb +3 -3
  96. metadata +31 -39
  97. data/assets/javascripts/bootstrap/util.js +0 -192
  98. data/assets/stylesheets/bootstrap/_code.scss +0 -48
  99. data/assets/stylesheets/bootstrap/_custom-forms.scss +0 -523
  100. data/assets/stylesheets/bootstrap/_input-group.scss +0 -192
  101. data/assets/stylesheets/bootstrap/_jumbotron.scss +0 -17
  102. data/assets/stylesheets/bootstrap/_media.scss +0 -8
  103. data/assets/stylesheets/bootstrap/_print.scss +0 -141
  104. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +0 -23
  105. data/assets/stylesheets/bootstrap/mixins/_badge.scss +0 -17
  106. data/assets/stylesheets/bootstrap/mixins/_float.scss +0 -14
  107. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +0 -80
  108. data/assets/stylesheets/bootstrap/mixins/_hover.scss +0 -37
  109. data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +0 -11
  110. data/assets/stylesheets/bootstrap/mixins/_size.scss +0 -7
  111. data/assets/stylesheets/bootstrap/mixins/_table-row.scss +0 -39
  112. data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +0 -17
  113. data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +0 -11
  114. data/assets/stylesheets/bootstrap/mixins/_visibility.scss +0 -8
  115. data/assets/stylesheets/bootstrap/utilities/_align.scss +0 -8
  116. data/assets/stylesheets/bootstrap/utilities/_background.scss +0 -19
  117. data/assets/stylesheets/bootstrap/utilities/_borders.scss +0 -75
  118. data/assets/stylesheets/bootstrap/utilities/_display.scss +0 -26
  119. data/assets/stylesheets/bootstrap/utilities/_embed.scss +0 -39
  120. data/assets/stylesheets/bootstrap/utilities/_flex.scss +0 -51
  121. data/assets/stylesheets/bootstrap/utilities/_float.scss +0 -11
  122. data/assets/stylesheets/bootstrap/utilities/_interactions.scss +0 -5
  123. data/assets/stylesheets/bootstrap/utilities/_overflow.scss +0 -5
  124. data/assets/stylesheets/bootstrap/utilities/_position.scss +0 -32
  125. data/assets/stylesheets/bootstrap/utilities/_screenreaders.scss +0 -11
  126. data/assets/stylesheets/bootstrap/utilities/_shadows.scss +0 -6
  127. data/assets/stylesheets/bootstrap/utilities/_sizing.scss +0 -20
  128. data/assets/stylesheets/bootstrap/utilities/_spacing.scss +0 -73
  129. data/assets/stylesheets/bootstrap/utilities/_stretched-link.scss +0 -19
  130. data/assets/stylesheets/bootstrap/utilities/_text.scss +0 -72
  131. data/assets/stylesheets/bootstrap/utilities/_visibility.scss +0 -13
@@ -1,18 +1,147 @@
1
1
  /*!
2
- * Bootstrap carousel.js v4.5.2 (https://getbootstrap.com/)
2
+ * Bootstrap carousel.js v5.0.0-alpha1 (https://getbootstrap.com/)
3
3
  * Copyright 2011-2020 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
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 = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Carousel = factory(global.jQuery, global.Util));
10
- }(this, (function ($, Util) { 'use strict';
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
11
 
12
- $ = $ && Object.prototype.hasOwnProperty.call($, 'default') ? $['default'] : $;
13
- Util = Util && Object.prototype.hasOwnProperty.call(Util, 'default') ? Util['default'] : Util;
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;
14
16
 
15
- 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); }
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;
29
+ }
30
+
31
+ return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
32
+ };
33
+
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;
40
+ }
41
+
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
+ };
76
+
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
+ }
90
+
91
+ element.addEventListener(TRANSITION_END, listener);
92
+ setTimeout(function () {
93
+ if (!called) {
94
+ triggerTransitionEnd(element);
95
+ }
96
+ }, emulatedDuration);
97
+ };
98
+
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;
114
+ }
115
+
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; }
16
145
 
17
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); } }
18
147
 
@@ -24,15 +153,12 @@
24
153
  */
25
154
 
26
155
  var NAME = 'carousel';
27
- var VERSION = '4.5.2';
156
+ var VERSION = '5.0.0-alpha1';
28
157
  var DATA_KEY = 'bs.carousel';
29
158
  var EVENT_KEY = "." + DATA_KEY;
30
159
  var DATA_API_KEY = '.data-api';
31
- var JQUERY_NO_CONFLICT = $.fn[NAME];
32
- var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key
33
-
34
- var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key
35
-
160
+ var ARROW_LEFT_KEY = 'ArrowLeft';
161
+ var ARROW_RIGHT_KEY = 'ArrowRight';
36
162
  var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch
37
163
 
38
164
  var SWIPE_THRESHOLD = 40;
@@ -107,11 +233,13 @@
107
233
  this.touchDeltaX = 0;
108
234
  this._config = this._getConfig(config);
109
235
  this._element = element;
110
- this._indicatorsElement = this._element.querySelector(SELECTOR_INDICATORS);
236
+ this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);
111
237
  this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;
112
- this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent);
238
+ this._pointerEvent = Boolean(window.PointerEvent);
113
239
 
114
240
  this._addEventListeners();
241
+
242
+ Data.setData(element, DATA_KEY, this);
115
243
  } // Getters
116
244
 
117
245
 
@@ -127,7 +255,7 @@
127
255
  _proto.nextWhenVisible = function nextWhenVisible() {
128
256
  // Don't call next when the page isn't visible
129
257
  // or the carousel or its parent isn't visible
130
- if (!document.hidden && $(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden') {
258
+ if (!document.hidden && isVisible(this._element)) {
131
259
  this.next();
132
260
  }
133
261
  };
@@ -143,8 +271,8 @@
143
271
  this._isPaused = true;
144
272
  }
145
273
 
146
- if (this._element.querySelector(SELECTOR_NEXT_PREV)) {
147
- Util.triggerTransitionEnd(this._element);
274
+ if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) {
275
+ triggerTransitionEnd(this._element);
148
276
  this.cycle(true);
149
277
  }
150
278
 
@@ -162,7 +290,7 @@
162
290
  this._interval = null;
163
291
  }
164
292
 
165
- if (this._config.interval && !this._isPaused) {
293
+ if (this._config && this._config.interval && !this._isPaused) {
166
294
  this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);
167
295
  }
168
296
  };
@@ -170,7 +298,7 @@
170
298
  _proto.to = function to(index) {
171
299
  var _this = this;
172
300
 
173
- this._activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);
301
+ this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
174
302
 
175
303
  var activeIndex = this._getItemIndex(this._activeElement);
176
304
 
@@ -179,7 +307,7 @@
179
307
  }
180
308
 
181
309
  if (this._isSliding) {
182
- $(this._element).one(EVENT_SLID, function () {
310
+ EventHandler.one(this._element, EVENT_SLID, function () {
183
311
  return _this.to(index);
184
312
  });
185
313
  return;
@@ -197,8 +325,8 @@
197
325
  };
198
326
 
199
327
  _proto.dispose = function dispose() {
200
- $(this._element).off(EVENT_KEY);
201
- $.removeData(this._element, DATA_KEY);
328
+ EventHandler.off(this._element, EVENT_KEY);
329
+ Data.removeData(this._element, DATA_KEY);
202
330
  this._items = null;
203
331
  this._config = null;
204
332
  this._element = null;
@@ -211,8 +339,8 @@
211
339
  ;
212
340
 
213
341
  _proto._getConfig = function _getConfig(config) {
214
- config = _extends({}, Default, config);
215
- Util.typeCheckConfig(NAME, config, DefaultType);
342
+ config = _objectSpread(_objectSpread({}, Default), config);
343
+ typeCheckConfig(NAME, config, DefaultType);
216
344
  return config;
217
345
  };
218
346
 
@@ -240,20 +368,21 @@
240
368
  var _this2 = this;
241
369
 
242
370
  if (this._config.keyboard) {
243
- $(this._element).on(EVENT_KEYDOWN, function (event) {
371
+ EventHandler.on(this._element, EVENT_KEYDOWN, function (event) {
244
372
  return _this2._keydown(event);
245
373
  });
246
374
  }
247
375
 
248
376
  if (this._config.pause === 'hover') {
249
- $(this._element).on(EVENT_MOUSEENTER, function (event) {
377
+ EventHandler.on(this._element, EVENT_MOUSEENTER, function (event) {
250
378
  return _this2.pause(event);
251
- }).on(EVENT_MOUSELEAVE, function (event) {
379
+ });
380
+ EventHandler.on(this._element, EVENT_MOUSELEAVE, function (event) {
252
381
  return _this2.cycle(event);
253
382
  });
254
383
  }
255
384
 
256
- if (this._config.touch) {
385
+ if (this._config.touch && this._touchSupported) {
257
386
  this._addTouchEventListeners();
258
387
  }
259
388
  };
@@ -261,30 +390,26 @@
261
390
  _proto._addTouchEventListeners = function _addTouchEventListeners() {
262
391
  var _this3 = this;
263
392
 
264
- if (!this._touchSupported) {
265
- return;
266
- }
267
-
268
393
  var start = function start(event) {
269
- if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {
270
- _this3.touchStartX = event.originalEvent.clientX;
394
+ if (_this3._pointerEvent && PointerType[event.pointerType.toUpperCase()]) {
395
+ _this3.touchStartX = event.clientX;
271
396
  } else if (!_this3._pointerEvent) {
272
- _this3.touchStartX = event.originalEvent.touches[0].clientX;
397
+ _this3.touchStartX = event.touches[0].clientX;
273
398
  }
274
399
  };
275
400
 
276
401
  var move = function move(event) {
277
402
  // ensure swiping with one touch and not pinching
278
- if (event.originalEvent.touches && event.originalEvent.touches.length > 1) {
403
+ if (event.touches && event.touches.length > 1) {
279
404
  _this3.touchDeltaX = 0;
280
405
  } else {
281
- _this3.touchDeltaX = event.originalEvent.touches[0].clientX - _this3.touchStartX;
406
+ _this3.touchDeltaX = event.touches[0].clientX - _this3.touchStartX;
282
407
  }
283
408
  };
284
409
 
285
410
  var end = function end(event) {
286
- if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {
287
- _this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX;
411
+ if (_this3._pointerEvent && PointerType[event.pointerType.toUpperCase()]) {
412
+ _this3.touchDeltaX = event.clientX - _this3.touchStartX;
288
413
  }
289
414
 
290
415
  _this3._handleSwipe();
@@ -309,27 +434,29 @@
309
434
  }
310
435
  };
311
436
 
312
- $(this._element.querySelectorAll(SELECTOR_ITEM_IMG)).on(EVENT_DRAG_START, function (e) {
313
- 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
+ });
314
441
  });
315
442
 
316
443
  if (this._pointerEvent) {
317
- $(this._element).on(EVENT_POINTERDOWN, function (event) {
444
+ EventHandler.on(this._element, EVENT_POINTERDOWN, function (event) {
318
445
  return start(event);
319
446
  });
320
- $(this._element).on(EVENT_POINTERUP, function (event) {
447
+ EventHandler.on(this._element, EVENT_POINTERUP, function (event) {
321
448
  return end(event);
322
449
  });
323
450
 
324
451
  this._element.classList.add(CLASS_NAME_POINTER_EVENT);
325
452
  } else {
326
- $(this._element).on(EVENT_TOUCHSTART, function (event) {
453
+ EventHandler.on(this._element, EVENT_TOUCHSTART, function (event) {
327
454
  return start(event);
328
455
  });
329
- $(this._element).on(EVENT_TOUCHMOVE, function (event) {
456
+ EventHandler.on(this._element, EVENT_TOUCHMOVE, function (event) {
330
457
  return move(event);
331
458
  });
332
- $(this._element).on(EVENT_TOUCHEND, function (event) {
459
+ EventHandler.on(this._element, EVENT_TOUCHEND, function (event) {
333
460
  return end(event);
334
461
  });
335
462
  }
@@ -340,13 +467,13 @@
340
467
  return;
341
468
  }
342
469
 
343
- switch (event.which) {
344
- case ARROW_LEFT_KEYCODE:
470
+ switch (event.key) {
471
+ case ARROW_LEFT_KEY:
345
472
  event.preventDefault();
346
473
  this.prev();
347
474
  break;
348
475
 
349
- case ARROW_RIGHT_KEYCODE:
476
+ case ARROW_RIGHT_KEY:
350
477
  event.preventDefault();
351
478
  this.next();
352
479
  break;
@@ -354,7 +481,7 @@
354
481
  };
355
482
 
356
483
  _proto._getItemIndex = function _getItemIndex(element) {
357
- this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM)) : [];
484
+ this._items = element && element.parentNode ? SelectorEngine.find(SELECTOR_ITEM, element.parentNode) : [];
358
485
  return this._items.indexOf(element);
359
486
  };
360
487
 
@@ -379,27 +506,28 @@
379
506
  _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {
380
507
  var targetIndex = this._getItemIndex(relatedTarget);
381
508
 
382
- var fromIndex = this._getItemIndex(this._element.querySelector(SELECTOR_ACTIVE_ITEM));
509
+ var fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element));
383
510
 
384
- var slideEvent = $.Event(EVENT_SLIDE, {
511
+ return EventHandler.trigger(this._element, EVENT_SLIDE, {
385
512
  relatedTarget: relatedTarget,
386
513
  direction: eventDirectionName,
387
514
  from: fromIndex,
388
515
  to: targetIndex
389
516
  });
390
- $(this._element).trigger(slideEvent);
391
- return slideEvent;
392
517
  };
393
518
 
394
519
  _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {
395
520
  if (this._indicatorsElement) {
396
- var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(SELECTOR_ACTIVE));
397
- $(indicators).removeClass(CLASS_NAME_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
+ }
398
526
 
399
527
  var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];
400
528
 
401
529
  if (nextIndicator) {
402
- $(nextIndicator).addClass(CLASS_NAME_ACTIVE);
530
+ nextIndicator.classList.add(CLASS_NAME_ACTIVE);
403
531
  }
404
532
  }
405
533
  };
@@ -407,7 +535,7 @@
407
535
  _proto._slide = function _slide(direction, element) {
408
536
  var _this4 = this;
409
537
 
410
- var activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);
538
+ var activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
411
539
 
412
540
  var activeElementIndex = this._getItemIndex(activeElement);
413
541
 
@@ -430,14 +558,14 @@
430
558
  eventDirectionName = DIRECTION_RIGHT;
431
559
  }
432
560
 
433
- if (nextElement && $(nextElement).hasClass(CLASS_NAME_ACTIVE)) {
561
+ if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE)) {
434
562
  this._isSliding = false;
435
563
  return;
436
564
  }
437
565
 
438
566
  var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);
439
567
 
440
- if (slideEvent.isDefaultPrevented()) {
568
+ if (slideEvent.defaultPrevented) {
441
569
  return;
442
570
  }
443
571
 
@@ -454,18 +582,11 @@
454
582
 
455
583
  this._setActiveIndicatorElement(nextElement);
456
584
 
457
- var slidEvent = $.Event(EVENT_SLID, {
458
- relatedTarget: nextElement,
459
- direction: eventDirectionName,
460
- from: activeElementIndex,
461
- to: nextElementIndex
462
- });
463
-
464
- if ($(this._element).hasClass(CLASS_NAME_SLIDE)) {
465
- $(nextElement).addClass(orderClassName);
466
- Util.reflow(nextElement);
467
- $(activeElement).addClass(directionalClassName);
468
- $(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);
469
590
  var nextElementInterval = parseInt(nextElement.getAttribute('data-interval'), 10);
470
591
 
471
592
  if (nextElementInterval) {
@@ -475,20 +596,32 @@
475
596
  this._config.interval = this._config.defaultInterval || this._config.interval;
476
597
  }
477
598
 
478
- var transitionDuration = Util.getTransitionDurationFromElement(activeElement);
479
- $(activeElement).one(Util.TRANSITION_END, function () {
480
- $(nextElement).removeClass(directionalClassName + " " + orderClassName).addClass(CLASS_NAME_ACTIVE);
481
- $(activeElement).removeClass(CLASS_NAME_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);
482
604
  _this4._isSliding = false;
483
605
  setTimeout(function () {
484
- 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
+ });
485
612
  }, 0);
486
- }).emulateTransitionEnd(transitionDuration);
613
+ });
614
+ emulateTransitionEnd(activeElement, transitionDuration);
487
615
  } else {
488
- $(activeElement).removeClass(CLASS_NAME_ACTIVE);
489
- $(nextElement).addClass(CLASS_NAME_ACTIVE);
616
+ activeElement.classList.remove(CLASS_NAME_ACTIVE);
617
+ nextElement.classList.add(CLASS_NAME_ACTIVE);
490
618
  this._isSliding = false;
491
- $(this._element).trigger(slidEvent);
619
+ EventHandler.trigger(this._element, EVENT_SLID, {
620
+ relatedTarget: nextElement,
621
+ direction: eventDirectionName,
622
+ from: activeElementIndex,
623
+ to: nextElementIndex
624
+ });
492
625
  }
493
626
 
494
627
  if (isCycling) {
@@ -497,52 +630,49 @@
497
630
  } // Static
498
631
  ;
499
632
 
500
- Carousel._jQueryInterface = function _jQueryInterface(config) {
501
- return this.each(function () {
502
- var data = $(this).data(DATA_KEY);
633
+ Carousel.carouselInterface = function carouselInterface(element, config) {
634
+ var data = Data.getData(element, DATA_KEY);
503
635
 
504
- var _config = _extends({}, Default, $(this).data());
636
+ var _config = _objectSpread(_objectSpread({}, Default), Manipulator.getDataAttributes(element));
505
637
 
506
- if (typeof config === 'object') {
507
- _config = _extends({}, _config, config);
508
- }
638
+ if (typeof config === 'object') {
639
+ _config = _objectSpread(_objectSpread({}, _config), config);
640
+ }
641
+
642
+ var action = typeof config === 'string' ? config : _config.slide;
509
643
 
510
- var action = typeof config === 'string' ? config : _config.slide;
644
+ if (!data) {
645
+ data = new Carousel(element, _config);
646
+ }
511
647
 
512
- if (!data) {
513
- data = new Carousel(this, _config);
514
- $(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 + "\"");
515
653
  }
516
654
 
517
- if (typeof config === 'number') {
518
- data.to(config);
519
- } else if (typeof action === 'string') {
520
- if (typeof data[action] === 'undefined') {
521
- throw new TypeError("No method named \"" + action + "\"");
522
- }
655
+ data[action]();
656
+ } else if (_config.interval && _config.ride) {
657
+ data.pause();
658
+ data.cycle();
659
+ }
660
+ };
523
661
 
524
- data[action]();
525
- } else if (_config.interval && _config.ride) {
526
- data.pause();
527
- data.cycle();
528
- }
662
+ Carousel.jQueryInterface = function jQueryInterface(config) {
663
+ return this.each(function () {
664
+ Carousel.carouselInterface(this, config);
529
665
  });
530
666
  };
531
667
 
532
- Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {
533
- var selector = Util.getSelectorFromElement(this);
668
+ Carousel.dataApiClickHandler = function dataApiClickHandler(event) {
669
+ var target = getElementFromSelector(this);
534
670
 
535
- if (!selector) {
671
+ if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {
536
672
  return;
537
673
  }
538
674
 
539
- var target = $(selector)[0];
540
-
541
- if (!target || !$(target).hasClass(CLASS_NAME_CAROUSEL)) {
542
- return;
543
- }
544
-
545
- var config = _extends({}, $(target).data(), $(this).data());
675
+ var config = _objectSpread(_objectSpread({}, Manipulator.getDataAttributes(target)), Manipulator.getDataAttributes(this));
546
676
 
547
677
  var slideIndex = this.getAttribute('data-slide-to');
548
678
 
@@ -550,15 +680,19 @@
550
680
  config.interval = false;
551
681
  }
552
682
 
553
- Carousel._jQueryInterface.call($(target), config);
683
+ Carousel.carouselInterface(target, config);
554
684
 
555
685
  if (slideIndex) {
556
- $(target).data(DATA_KEY).to(slideIndex);
686
+ Data.getData(target, DATA_KEY).to(slideIndex);
557
687
  }
558
688
 
559
689
  event.preventDefault();
560
690
  };
561
691
 
692
+ Carousel.getInstance = function getInstance(element) {
693
+ return Data.getData(element, DATA_KEY);
694
+ };
695
+
562
696
  _createClass(Carousel, null, [{
563
697
  key: "VERSION",
564
698
  get: function get() {
@@ -580,29 +714,34 @@
580
714
  */
581
715
 
582
716
 
583
- $(document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel._dataApiClickHandler);
584
- $(window).on(EVENT_LOAD_DATA_API, function () {
585
- 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);
586
720
 
587
721
  for (var i = 0, len = carousels.length; i < len; i++) {
588
- var $carousel = $(carousels[i]);
589
-
590
- Carousel._jQueryInterface.call($carousel, $carousel.data());
722
+ Carousel.carouselInterface(carousels[i], Data.getData(carousels[i], DATA_KEY));
591
723
  }
592
724
  });
725
+ var $ = getjQuery();
593
726
  /**
594
727
  * ------------------------------------------------------------------------
595
728
  * jQuery
596
729
  * ------------------------------------------------------------------------
730
+ * add .carousel to jQuery only if jQuery is present
597
731
  */
598
732
 
599
- $.fn[NAME] = Carousel._jQueryInterface;
600
- $.fn[NAME].Constructor = Carousel;
733
+ /* istanbul ignore if */
601
734
 
602
- $.fn[NAME].noConflict = function () {
603
- $.fn[NAME] = JQUERY_NO_CONFLICT;
604
- return Carousel._jQueryInterface;
605
- };
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
+ }
606
745
 
607
746
  return Carousel;
608
747