bootstrap 4.5.0 → 5.0.0.alpha3
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.
- checksums.yaml +4 -4
- data/.travis.yml +1 -1
- data/README.md +5 -2
- data/assets/javascripts/bootstrap-sprockets.js +12 -9
- data/assets/javascripts/bootstrap.js +1852 -1266
- data/assets/javascripts/bootstrap.min.js +3 -3
- data/assets/javascripts/bootstrap/alert.js +149 -69
- data/assets/javascripts/bootstrap/button.js +71 -141
- data/assets/javascripts/bootstrap/carousel.js +291 -192
- data/assets/javascripts/bootstrap/collapse.js +285 -161
- data/assets/javascripts/bootstrap/dom/data.js +81 -0
- data/assets/javascripts/bootstrap/dom/event-handler.js +307 -0
- data/assets/javascripts/bootstrap/dom/manipulator.js +85 -0
- data/assets/javascripts/bootstrap/dom/selector-engine.js +98 -0
- data/assets/javascripts/bootstrap/dropdown.js +240 -218
- data/assets/javascripts/bootstrap/modal.js +342 -234
- data/assets/javascripts/bootstrap/popover.js +82 -106
- data/assets/javascripts/bootstrap/scrollspy.js +154 -114
- data/assets/javascripts/bootstrap/tab.js +166 -80
- data/assets/javascripts/bootstrap/toast.js +171 -113
- data/assets/javascripts/bootstrap/tooltip.js +351 -219
- data/assets/stylesheets/_bootstrap-grid.scss +52 -16
- data/assets/stylesheets/_bootstrap-reboot.scss +5 -2
- data/assets/stylesheets/_bootstrap.scss +16 -9
- data/assets/stylesheets/bootstrap/_accordion.scss +125 -0
- data/assets/stylesheets/bootstrap/_alert.scss +15 -9
- data/assets/stylesheets/bootstrap/_badge.scss +2 -27
- data/assets/stylesheets/bootstrap/_breadcrumb.scss +3 -19
- data/assets/stylesheets/bootstrap/_button-group.scss +16 -40
- data/assets/stylesheets/bootstrap/_buttons.scss +27 -60
- data/assets/stylesheets/bootstrap/_card.scss +30 -97
- data/assets/stylesheets/bootstrap/_carousel.scss +30 -15
- data/assets/stylesheets/bootstrap/_close.scss +30 -30
- data/assets/stylesheets/bootstrap/_containers.scss +41 -0
- data/assets/stylesheets/bootstrap/_dropdown.scss +52 -8
- data/assets/stylesheets/bootstrap/_forms.scss +9 -347
- data/assets/stylesheets/bootstrap/_functions.scss +88 -23
- data/assets/stylesheets/bootstrap/_grid.scss +3 -58
- data/assets/stylesheets/bootstrap/_helpers.scss +7 -0
- data/assets/stylesheets/bootstrap/_list-group.scss +14 -5
- data/assets/stylesheets/bootstrap/_mixins.scss +7 -13
- data/assets/stylesheets/bootstrap/_modal.scss +41 -47
- data/assets/stylesheets/bootstrap/_nav.scss +14 -8
- data/assets/stylesheets/bootstrap/_navbar.scss +43 -74
- data/assets/stylesheets/bootstrap/_pagination.scss +10 -20
- data/assets/stylesheets/bootstrap/_popover.scss +6 -6
- data/assets/stylesheets/bootstrap/_progress.scss +3 -5
- data/assets/stylesheets/bootstrap/_reboot.scss +310 -171
- data/assets/stylesheets/bootstrap/_root.scss +5 -9
- data/assets/stylesheets/bootstrap/_spinners.scss +13 -4
- data/assets/stylesheets/bootstrap/_tables.scss +80 -114
- data/assets/stylesheets/bootstrap/_toasts.scss +6 -2
- data/assets/stylesheets/bootstrap/_tooltip.scss +5 -5
- data/assets/stylesheets/bootstrap/_transitions.scss +0 -1
- data/assets/stylesheets/bootstrap/_type.scss +38 -59
- data/assets/stylesheets/bootstrap/_utilities.scss +545 -18
- data/assets/stylesheets/bootstrap/_variables.scss +653 -469
- data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +18 -0
- data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +61 -0
- data/assets/stylesheets/bootstrap/forms/_form-check.scss +151 -0
- data/assets/stylesheets/bootstrap/forms/_form-control.scss +223 -0
- data/assets/stylesheets/bootstrap/forms/_form-range.scss +91 -0
- data/assets/stylesheets/bootstrap/forms/_form-select.scss +68 -0
- data/assets/stylesheets/bootstrap/forms/_form-text.scss +11 -0
- data/assets/stylesheets/bootstrap/forms/_input-group.scss +121 -0
- data/assets/stylesheets/bootstrap/forms/_labels.scss +36 -0
- data/assets/stylesheets/bootstrap/forms/_validation.scss +12 -0
- data/assets/stylesheets/bootstrap/{utilities → helpers}/_clearfix.scss +0 -0
- data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +12 -0
- data/assets/stylesheets/bootstrap/helpers/_position.scss +30 -0
- data/assets/stylesheets/bootstrap/helpers/_ratio.scss +26 -0
- data/assets/stylesheets/bootstrap/helpers/_stretched-link.scss +15 -0
- data/assets/stylesheets/bootstrap/helpers/_text-truncation.scss +7 -0
- data/assets/stylesheets/bootstrap/helpers/_visually-hidden.scss +8 -0
- data/assets/stylesheets/bootstrap/mixins/_alert.scss +1 -5
- data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +9 -9
- data/assets/stylesheets/bootstrap/mixins/_box-shadow.scss +7 -9
- data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +14 -10
- data/assets/stylesheets/bootstrap/mixins/_buttons.scss +65 -47
- data/assets/stylesheets/bootstrap/mixins/_caret.scss +4 -4
- data/assets/stylesheets/bootstrap/mixins/_clearfix.scss +2 -0
- data/assets/stylesheets/bootstrap/mixins/_container.scss +11 -0
- data/assets/stylesheets/bootstrap/mixins/_forms.scss +17 -77
- data/assets/stylesheets/bootstrap/mixins/_gradients.scss +9 -11
- data/assets/stylesheets/bootstrap/mixins/_grid.scss +84 -33
- data/assets/stylesheets/bootstrap/mixins/_image.scss +1 -21
- data/assets/stylesheets/bootstrap/mixins/_list-group.scss +3 -2
- data/assets/stylesheets/bootstrap/mixins/_lists.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_pagination.scss +15 -8
- data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +2 -2
- data/assets/stylesheets/bootstrap/mixins/_table-variants.scss +21 -0
- data/assets/stylesheets/bootstrap/mixins/_transition.scss +2 -2
- data/assets/stylesheets/bootstrap/mixins/_utilities.scss +49 -0
- data/assets/stylesheets/bootstrap/mixins/_visually-hidden.scss +28 -0
- data/assets/stylesheets/bootstrap/utilities/_api.scss +47 -0
- data/assets/stylesheets/bootstrap/vendor/_rfs.scss +234 -126
- data/lib/bootstrap/version.rb +2 -2
- data/tasks/updater/js.rb +3 -3
- metadata +33 -41
- data/assets/javascripts/bootstrap/util.js +0 -192
- data/assets/stylesheets/bootstrap/_code.scss +0 -48
- data/assets/stylesheets/bootstrap/_custom-forms.scss +0 -522
- data/assets/stylesheets/bootstrap/_input-group.scss +0 -192
- data/assets/stylesheets/bootstrap/_jumbotron.scss +0 -17
- data/assets/stylesheets/bootstrap/_media.scss +0 -8
- data/assets/stylesheets/bootstrap/_print.scss +0 -141
- data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +0 -23
- data/assets/stylesheets/bootstrap/mixins/_badge.scss +0 -17
- data/assets/stylesheets/bootstrap/mixins/_float.scss +0 -14
- data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +0 -81
- data/assets/stylesheets/bootstrap/mixins/_hover.scss +0 -37
- data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +0 -11
- data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +0 -34
- data/assets/stylesheets/bootstrap/mixins/_size.scss +0 -7
- data/assets/stylesheets/bootstrap/mixins/_table-row.scss +0 -39
- data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +0 -17
- data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +0 -11
- data/assets/stylesheets/bootstrap/mixins/_visibility.scss +0 -8
- data/assets/stylesheets/bootstrap/utilities/_align.scss +0 -8
- data/assets/stylesheets/bootstrap/utilities/_background.scss +0 -19
- data/assets/stylesheets/bootstrap/utilities/_borders.scss +0 -75
- data/assets/stylesheets/bootstrap/utilities/_display.scss +0 -26
- data/assets/stylesheets/bootstrap/utilities/_embed.scss +0 -39
- data/assets/stylesheets/bootstrap/utilities/_flex.scss +0 -51
- data/assets/stylesheets/bootstrap/utilities/_float.scss +0 -11
- data/assets/stylesheets/bootstrap/utilities/_interactions.scss +0 -5
- data/assets/stylesheets/bootstrap/utilities/_overflow.scss +0 -5
- data/assets/stylesheets/bootstrap/utilities/_position.scss +0 -32
- data/assets/stylesheets/bootstrap/utilities/_screenreaders.scss +0 -11
- data/assets/stylesheets/bootstrap/utilities/_shadows.scss +0 -6
- data/assets/stylesheets/bootstrap/utilities/_sizing.scss +0 -20
- data/assets/stylesheets/bootstrap/utilities/_spacing.scss +0 -73
- data/assets/stylesheets/bootstrap/utilities/_stretched-link.scss +0 -19
- data/assets/stylesheets/bootstrap/utilities/_text.scss +0 -71
- data/assets/stylesheets/bootstrap/utilities/_visibility.scss +0 -13
|
@@ -1,82 +1,157 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Bootstrap carousel.js
|
|
2
|
+
* Bootstrap carousel.js v5.0.0-alpha3 (https://getbootstrap.com/)
|
|
3
3
|
* Copyright 2011-2020 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
|
4
|
-
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/
|
|
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('
|
|
8
|
-
typeof define === 'function' && define.amd ? define(['
|
|
9
|
-
(global = global || self, global.Carousel = factory(global.
|
|
10
|
-
}(this, (function (
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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 = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Carousel = factory(global.Data, global.EventHandler, global.Manipulator, global.SelectorEngine));
|
|
10
|
+
}(this, (function (Data, EventHandler, Manipulator, SelectorEngine) { 'use strict';
|
|
11
|
+
|
|
12
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
13
|
+
|
|
14
|
+
var Data__default = /*#__PURE__*/_interopDefaultLegacy(Data);
|
|
15
|
+
var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
|
|
16
|
+
var Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator);
|
|
17
|
+
var SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* --------------------------------------------------------------------------
|
|
21
|
+
* Bootstrap (v5.0.0-alpha3): util/index.js
|
|
22
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
23
|
+
* --------------------------------------------------------------------------
|
|
24
|
+
*/
|
|
25
|
+
var MILLISECONDS_MULTIPLIER = 1000;
|
|
26
|
+
var TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
|
|
27
|
+
|
|
28
|
+
var toType = function toType(obj) {
|
|
29
|
+
if (obj === null || obj === undefined) {
|
|
30
|
+
return "" + obj;
|
|
22
31
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
Object.defineProperty(obj, key, {
|
|
34
|
-
value: value,
|
|
35
|
-
enumerable: true,
|
|
36
|
-
configurable: true,
|
|
37
|
-
writable: true
|
|
38
|
-
});
|
|
39
|
-
} else {
|
|
40
|
-
obj[key] = value;
|
|
32
|
+
|
|
33
|
+
return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
var getSelector = function getSelector(element) {
|
|
37
|
+
var selector = element.getAttribute('data-target');
|
|
38
|
+
|
|
39
|
+
if (!selector || selector === '#') {
|
|
40
|
+
var hrefAttr = element.getAttribute('href');
|
|
41
|
+
selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;
|
|
41
42
|
}
|
|
42
43
|
|
|
43
|
-
return
|
|
44
|
-
}
|
|
44
|
+
return selector;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
var getElementFromSelector = function getElementFromSelector(element) {
|
|
48
|
+
var selector = getSelector(element);
|
|
49
|
+
return selector ? document.querySelector(selector) : null;
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
var getTransitionDurationFromElement = function getTransitionDurationFromElement(element) {
|
|
53
|
+
if (!element) {
|
|
54
|
+
return 0;
|
|
55
|
+
} // Get transition-duration of the element
|
|
45
56
|
|
|
46
|
-
function ownKeys(object, enumerableOnly) {
|
|
47
|
-
var keys = Object.keys(object);
|
|
48
57
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
58
|
+
var _window$getComputedSt = window.getComputedStyle(element),
|
|
59
|
+
transitionDuration = _window$getComputedSt.transitionDuration,
|
|
60
|
+
transitionDelay = _window$getComputedSt.transitionDelay;
|
|
61
|
+
|
|
62
|
+
var floatTransitionDuration = parseFloat(transitionDuration);
|
|
63
|
+
var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found
|
|
64
|
+
|
|
65
|
+
if (!floatTransitionDuration && !floatTransitionDelay) {
|
|
66
|
+
return 0;
|
|
67
|
+
} // If multiple durations are defined, take the first
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
transitionDuration = transitionDuration.split(',')[0];
|
|
71
|
+
transitionDelay = transitionDelay.split(',')[0];
|
|
72
|
+
return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
var triggerTransitionEnd = function triggerTransitionEnd(element) {
|
|
76
|
+
element.dispatchEvent(new Event(TRANSITION_END));
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
var isElement = function isElement(obj) {
|
|
80
|
+
return (obj[0] || obj).nodeType;
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
var emulateTransitionEnd = function emulateTransitionEnd(element, duration) {
|
|
84
|
+
var called = false;
|
|
85
|
+
var durationPadding = 5;
|
|
86
|
+
var emulatedDuration = duration + durationPadding;
|
|
87
|
+
|
|
88
|
+
function listener() {
|
|
89
|
+
called = true;
|
|
90
|
+
element.removeEventListener(TRANSITION_END, listener);
|
|
55
91
|
}
|
|
56
92
|
|
|
57
|
-
|
|
58
|
-
|
|
93
|
+
element.addEventListener(TRANSITION_END, listener);
|
|
94
|
+
setTimeout(function () {
|
|
95
|
+
if (!called) {
|
|
96
|
+
triggerTransitionEnd(element);
|
|
97
|
+
}
|
|
98
|
+
}, emulatedDuration);
|
|
99
|
+
};
|
|
59
100
|
|
|
60
|
-
function
|
|
61
|
-
|
|
62
|
-
var
|
|
101
|
+
var typeCheckConfig = function typeCheckConfig(componentName, config, configTypes) {
|
|
102
|
+
Object.keys(configTypes).forEach(function (property) {
|
|
103
|
+
var expectedTypes = configTypes[property];
|
|
104
|
+
var value = config[property];
|
|
105
|
+
var valueType = value && isElement(value) ? 'element' : toType(value);
|
|
63
106
|
|
|
64
|
-
if (
|
|
65
|
-
|
|
66
|
-
_defineProperty(target, key, source[key]);
|
|
67
|
-
});
|
|
68
|
-
} else if (Object.getOwnPropertyDescriptors) {
|
|
69
|
-
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
|
|
70
|
-
} else {
|
|
71
|
-
ownKeys(Object(source)).forEach(function (key) {
|
|
72
|
-
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
73
|
-
});
|
|
107
|
+
if (!new RegExp(expectedTypes).test(valueType)) {
|
|
108
|
+
throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\"."));
|
|
74
109
|
}
|
|
110
|
+
});
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
var isVisible = function isVisible(element) {
|
|
114
|
+
if (!element) {
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
if (element.style && element.parentNode && element.parentNode.style) {
|
|
119
|
+
var elementStyle = getComputedStyle(element);
|
|
120
|
+
var parentNodeStyle = getComputedStyle(element.parentNode);
|
|
121
|
+
return elementStyle.display !== 'none' && parentNodeStyle.display !== 'none' && elementStyle.visibility !== 'hidden';
|
|
75
122
|
}
|
|
76
123
|
|
|
77
|
-
return
|
|
78
|
-
}
|
|
124
|
+
return false;
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
var reflow = function reflow(element) {
|
|
128
|
+
return element.offsetHeight;
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
var getjQuery = function getjQuery() {
|
|
132
|
+
var _window = window,
|
|
133
|
+
jQuery = _window.jQuery;
|
|
134
|
+
|
|
135
|
+
if (jQuery && !document.body.hasAttribute('data-no-jquery')) {
|
|
136
|
+
return jQuery;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
return null;
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
var onDOMContentLoaded = function onDOMContentLoaded(callback) {
|
|
143
|
+
if (document.readyState === 'loading') {
|
|
144
|
+
document.addEventListener('DOMContentLoaded', callback);
|
|
145
|
+
} else {
|
|
146
|
+
callback();
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
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); }
|
|
151
|
+
|
|
152
|
+
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); } }
|
|
79
153
|
|
|
154
|
+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
|
80
155
|
/**
|
|
81
156
|
* ------------------------------------------------------------------------
|
|
82
157
|
* Constants
|
|
@@ -84,15 +159,12 @@
|
|
|
84
159
|
*/
|
|
85
160
|
|
|
86
161
|
var NAME = 'carousel';
|
|
87
|
-
var VERSION = '
|
|
162
|
+
var VERSION = '5.0.0-alpha3';
|
|
88
163
|
var DATA_KEY = 'bs.carousel';
|
|
89
164
|
var EVENT_KEY = "." + DATA_KEY;
|
|
90
165
|
var DATA_API_KEY = '.data-api';
|
|
91
|
-
var
|
|
92
|
-
var
|
|
93
|
-
|
|
94
|
-
var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key
|
|
95
|
-
|
|
166
|
+
var ARROW_LEFT_KEY = 'ArrowLeft';
|
|
167
|
+
var ARROW_RIGHT_KEY = 'ArrowRight';
|
|
96
168
|
var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch
|
|
97
169
|
|
|
98
170
|
var SWIPE_THRESHOLD = 40;
|
|
@@ -167,11 +239,13 @@
|
|
|
167
239
|
this.touchDeltaX = 0;
|
|
168
240
|
this._config = this._getConfig(config);
|
|
169
241
|
this._element = element;
|
|
170
|
-
this._indicatorsElement = this._element
|
|
242
|
+
this._indicatorsElement = SelectorEngine__default['default'].findOne(SELECTOR_INDICATORS, this._element);
|
|
171
243
|
this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;
|
|
172
|
-
this._pointerEvent = Boolean(window.PointerEvent
|
|
244
|
+
this._pointerEvent = Boolean(window.PointerEvent);
|
|
173
245
|
|
|
174
246
|
this._addEventListeners();
|
|
247
|
+
|
|
248
|
+
Data__default['default'].setData(element, DATA_KEY, this);
|
|
175
249
|
} // Getters
|
|
176
250
|
|
|
177
251
|
|
|
@@ -187,7 +261,7 @@
|
|
|
187
261
|
_proto.nextWhenVisible = function nextWhenVisible() {
|
|
188
262
|
// Don't call next when the page isn't visible
|
|
189
263
|
// or the carousel or its parent isn't visible
|
|
190
|
-
if (!document.hidden &&
|
|
264
|
+
if (!document.hidden && isVisible(this._element)) {
|
|
191
265
|
this.next();
|
|
192
266
|
}
|
|
193
267
|
};
|
|
@@ -203,8 +277,8 @@
|
|
|
203
277
|
this._isPaused = true;
|
|
204
278
|
}
|
|
205
279
|
|
|
206
|
-
if (this._element
|
|
207
|
-
|
|
280
|
+
if (SelectorEngine__default['default'].findOne(SELECTOR_NEXT_PREV, this._element)) {
|
|
281
|
+
triggerTransitionEnd(this._element);
|
|
208
282
|
this.cycle(true);
|
|
209
283
|
}
|
|
210
284
|
|
|
@@ -222,7 +296,9 @@
|
|
|
222
296
|
this._interval = null;
|
|
223
297
|
}
|
|
224
298
|
|
|
225
|
-
if (this._config.interval && !this._isPaused) {
|
|
299
|
+
if (this._config && this._config.interval && !this._isPaused) {
|
|
300
|
+
this._updateInterval();
|
|
301
|
+
|
|
226
302
|
this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);
|
|
227
303
|
}
|
|
228
304
|
};
|
|
@@ -230,7 +306,7 @@
|
|
|
230
306
|
_proto.to = function to(index) {
|
|
231
307
|
var _this = this;
|
|
232
308
|
|
|
233
|
-
this._activeElement = this._element
|
|
309
|
+
this._activeElement = SelectorEngine__default['default'].findOne(SELECTOR_ACTIVE_ITEM, this._element);
|
|
234
310
|
|
|
235
311
|
var activeIndex = this._getItemIndex(this._activeElement);
|
|
236
312
|
|
|
@@ -239,7 +315,7 @@
|
|
|
239
315
|
}
|
|
240
316
|
|
|
241
317
|
if (this._isSliding) {
|
|
242
|
-
|
|
318
|
+
EventHandler__default['default'].one(this._element, EVENT_SLID, function () {
|
|
243
319
|
return _this.to(index);
|
|
244
320
|
});
|
|
245
321
|
return;
|
|
@@ -257,8 +333,8 @@
|
|
|
257
333
|
};
|
|
258
334
|
|
|
259
335
|
_proto.dispose = function dispose() {
|
|
260
|
-
|
|
261
|
-
|
|
336
|
+
EventHandler__default['default'].off(this._element, EVENT_KEY);
|
|
337
|
+
Data__default['default'].removeData(this._element, DATA_KEY);
|
|
262
338
|
this._items = null;
|
|
263
339
|
this._config = null;
|
|
264
340
|
this._element = null;
|
|
@@ -271,8 +347,8 @@
|
|
|
271
347
|
;
|
|
272
348
|
|
|
273
349
|
_proto._getConfig = function _getConfig(config) {
|
|
274
|
-
config =
|
|
275
|
-
|
|
350
|
+
config = _extends({}, Default, config);
|
|
351
|
+
typeCheckConfig(NAME, config, DefaultType);
|
|
276
352
|
return config;
|
|
277
353
|
};
|
|
278
354
|
|
|
@@ -300,20 +376,21 @@
|
|
|
300
376
|
var _this2 = this;
|
|
301
377
|
|
|
302
378
|
if (this._config.keyboard) {
|
|
303
|
-
|
|
379
|
+
EventHandler__default['default'].on(this._element, EVENT_KEYDOWN, function (event) {
|
|
304
380
|
return _this2._keydown(event);
|
|
305
381
|
});
|
|
306
382
|
}
|
|
307
383
|
|
|
308
384
|
if (this._config.pause === 'hover') {
|
|
309
|
-
|
|
385
|
+
EventHandler__default['default'].on(this._element, EVENT_MOUSEENTER, function (event) {
|
|
310
386
|
return _this2.pause(event);
|
|
311
|
-
})
|
|
387
|
+
});
|
|
388
|
+
EventHandler__default['default'].on(this._element, EVENT_MOUSELEAVE, function (event) {
|
|
312
389
|
return _this2.cycle(event);
|
|
313
390
|
});
|
|
314
391
|
}
|
|
315
392
|
|
|
316
|
-
if (this._config.touch) {
|
|
393
|
+
if (this._config.touch && this._touchSupported) {
|
|
317
394
|
this._addTouchEventListeners();
|
|
318
395
|
}
|
|
319
396
|
};
|
|
@@ -321,30 +398,26 @@
|
|
|
321
398
|
_proto._addTouchEventListeners = function _addTouchEventListeners() {
|
|
322
399
|
var _this3 = this;
|
|
323
400
|
|
|
324
|
-
if (!this._touchSupported) {
|
|
325
|
-
return;
|
|
326
|
-
}
|
|
327
|
-
|
|
328
401
|
var start = function start(event) {
|
|
329
|
-
if (_this3._pointerEvent && PointerType[event.
|
|
330
|
-
_this3.touchStartX = event.
|
|
402
|
+
if (_this3._pointerEvent && PointerType[event.pointerType.toUpperCase()]) {
|
|
403
|
+
_this3.touchStartX = event.clientX;
|
|
331
404
|
} else if (!_this3._pointerEvent) {
|
|
332
|
-
_this3.touchStartX = event.
|
|
405
|
+
_this3.touchStartX = event.touches[0].clientX;
|
|
333
406
|
}
|
|
334
407
|
};
|
|
335
408
|
|
|
336
409
|
var move = function move(event) {
|
|
337
410
|
// ensure swiping with one touch and not pinching
|
|
338
|
-
if (event.
|
|
411
|
+
if (event.touches && event.touches.length > 1) {
|
|
339
412
|
_this3.touchDeltaX = 0;
|
|
340
413
|
} else {
|
|
341
|
-
_this3.touchDeltaX = event.
|
|
414
|
+
_this3.touchDeltaX = event.touches[0].clientX - _this3.touchStartX;
|
|
342
415
|
}
|
|
343
416
|
};
|
|
344
417
|
|
|
345
418
|
var end = function end(event) {
|
|
346
|
-
if (_this3._pointerEvent && PointerType[event.
|
|
347
|
-
_this3.touchDeltaX = event.
|
|
419
|
+
if (_this3._pointerEvent && PointerType[event.pointerType.toUpperCase()]) {
|
|
420
|
+
_this3.touchDeltaX = event.clientX - _this3.touchStartX;
|
|
348
421
|
}
|
|
349
422
|
|
|
350
423
|
_this3._handleSwipe();
|
|
@@ -369,27 +442,29 @@
|
|
|
369
442
|
}
|
|
370
443
|
};
|
|
371
444
|
|
|
372
|
-
|
|
373
|
-
|
|
445
|
+
SelectorEngine__default['default'].find(SELECTOR_ITEM_IMG, this._element).forEach(function (itemImg) {
|
|
446
|
+
EventHandler__default['default'].on(itemImg, EVENT_DRAG_START, function (e) {
|
|
447
|
+
return e.preventDefault();
|
|
448
|
+
});
|
|
374
449
|
});
|
|
375
450
|
|
|
376
451
|
if (this._pointerEvent) {
|
|
377
|
-
|
|
452
|
+
EventHandler__default['default'].on(this._element, EVENT_POINTERDOWN, function (event) {
|
|
378
453
|
return start(event);
|
|
379
454
|
});
|
|
380
|
-
|
|
455
|
+
EventHandler__default['default'].on(this._element, EVENT_POINTERUP, function (event) {
|
|
381
456
|
return end(event);
|
|
382
457
|
});
|
|
383
458
|
|
|
384
459
|
this._element.classList.add(CLASS_NAME_POINTER_EVENT);
|
|
385
460
|
} else {
|
|
386
|
-
|
|
461
|
+
EventHandler__default['default'].on(this._element, EVENT_TOUCHSTART, function (event) {
|
|
387
462
|
return start(event);
|
|
388
463
|
});
|
|
389
|
-
|
|
464
|
+
EventHandler__default['default'].on(this._element, EVENT_TOUCHMOVE, function (event) {
|
|
390
465
|
return move(event);
|
|
391
466
|
});
|
|
392
|
-
|
|
467
|
+
EventHandler__default['default'].on(this._element, EVENT_TOUCHEND, function (event) {
|
|
393
468
|
return end(event);
|
|
394
469
|
});
|
|
395
470
|
}
|
|
@@ -400,13 +475,13 @@
|
|
|
400
475
|
return;
|
|
401
476
|
}
|
|
402
477
|
|
|
403
|
-
switch (event.
|
|
404
|
-
case
|
|
478
|
+
switch (event.key) {
|
|
479
|
+
case ARROW_LEFT_KEY:
|
|
405
480
|
event.preventDefault();
|
|
406
481
|
this.prev();
|
|
407
482
|
break;
|
|
408
483
|
|
|
409
|
-
case
|
|
484
|
+
case ARROW_RIGHT_KEY:
|
|
410
485
|
event.preventDefault();
|
|
411
486
|
this.next();
|
|
412
487
|
break;
|
|
@@ -414,7 +489,7 @@
|
|
|
414
489
|
};
|
|
415
490
|
|
|
416
491
|
_proto._getItemIndex = function _getItemIndex(element) {
|
|
417
|
-
this._items = element && element.parentNode ? [].
|
|
492
|
+
this._items = element && element.parentNode ? SelectorEngine__default['default'].find(SELECTOR_ITEM, element.parentNode) : [];
|
|
418
493
|
return this._items.indexOf(element);
|
|
419
494
|
};
|
|
420
495
|
|
|
@@ -439,35 +514,53 @@
|
|
|
439
514
|
_proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {
|
|
440
515
|
var targetIndex = this._getItemIndex(relatedTarget);
|
|
441
516
|
|
|
442
|
-
var fromIndex = this._getItemIndex(this._element
|
|
517
|
+
var fromIndex = this._getItemIndex(SelectorEngine__default['default'].findOne(SELECTOR_ACTIVE_ITEM, this._element));
|
|
443
518
|
|
|
444
|
-
|
|
519
|
+
return EventHandler__default['default'].trigger(this._element, EVENT_SLIDE, {
|
|
445
520
|
relatedTarget: relatedTarget,
|
|
446
521
|
direction: eventDirectionName,
|
|
447
522
|
from: fromIndex,
|
|
448
523
|
to: targetIndex
|
|
449
524
|
});
|
|
450
|
-
$(this._element).trigger(slideEvent);
|
|
451
|
-
return slideEvent;
|
|
452
525
|
};
|
|
453
526
|
|
|
454
527
|
_proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {
|
|
455
528
|
if (this._indicatorsElement) {
|
|
456
|
-
var indicators = [].
|
|
457
|
-
|
|
529
|
+
var indicators = SelectorEngine__default['default'].find(SELECTOR_ACTIVE, this._indicatorsElement);
|
|
530
|
+
|
|
531
|
+
for (var i = 0; i < indicators.length; i++) {
|
|
532
|
+
indicators[i].classList.remove(CLASS_NAME_ACTIVE);
|
|
533
|
+
}
|
|
458
534
|
|
|
459
535
|
var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];
|
|
460
536
|
|
|
461
537
|
if (nextIndicator) {
|
|
462
|
-
|
|
538
|
+
nextIndicator.classList.add(CLASS_NAME_ACTIVE);
|
|
463
539
|
}
|
|
464
540
|
}
|
|
465
541
|
};
|
|
466
542
|
|
|
543
|
+
_proto._updateInterval = function _updateInterval() {
|
|
544
|
+
var element = this._activeElement || SelectorEngine__default['default'].findOne(SELECTOR_ACTIVE_ITEM, this._element);
|
|
545
|
+
|
|
546
|
+
if (!element) {
|
|
547
|
+
return;
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
var elementInterval = parseInt(element.getAttribute('data-interval'), 10);
|
|
551
|
+
|
|
552
|
+
if (elementInterval) {
|
|
553
|
+
this._config.defaultInterval = this._config.defaultInterval || this._config.interval;
|
|
554
|
+
this._config.interval = elementInterval;
|
|
555
|
+
} else {
|
|
556
|
+
this._config.interval = this._config.defaultInterval || this._config.interval;
|
|
557
|
+
}
|
|
558
|
+
};
|
|
559
|
+
|
|
467
560
|
_proto._slide = function _slide(direction, element) {
|
|
468
561
|
var _this4 = this;
|
|
469
562
|
|
|
470
|
-
var activeElement = this._element
|
|
563
|
+
var activeElement = SelectorEngine__default['default'].findOne(SELECTOR_ACTIVE_ITEM, this._element);
|
|
471
564
|
|
|
472
565
|
var activeElementIndex = this._getItemIndex(activeElement);
|
|
473
566
|
|
|
@@ -490,14 +583,14 @@
|
|
|
490
583
|
eventDirectionName = DIRECTION_RIGHT;
|
|
491
584
|
}
|
|
492
585
|
|
|
493
|
-
if (nextElement &&
|
|
586
|
+
if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE)) {
|
|
494
587
|
this._isSliding = false;
|
|
495
588
|
return;
|
|
496
589
|
}
|
|
497
590
|
|
|
498
591
|
var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);
|
|
499
592
|
|
|
500
|
-
if (slideEvent.
|
|
593
|
+
if (slideEvent.defaultPrevented) {
|
|
501
594
|
return;
|
|
502
595
|
}
|
|
503
596
|
|
|
@@ -514,41 +607,39 @@
|
|
|
514
607
|
|
|
515
608
|
this._setActiveIndicatorElement(nextElement);
|
|
516
609
|
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
var nextElementInterval = parseInt(nextElement.getAttribute('data-interval'), 10);
|
|
530
|
-
|
|
531
|
-
if (nextElementInterval) {
|
|
532
|
-
this._config.defaultInterval = this._config.defaultInterval || this._config.interval;
|
|
533
|
-
this._config.interval = nextElementInterval;
|
|
534
|
-
} else {
|
|
535
|
-
this._config.interval = this._config.defaultInterval || this._config.interval;
|
|
536
|
-
}
|
|
537
|
-
|
|
538
|
-
var transitionDuration = Util.getTransitionDurationFromElement(activeElement);
|
|
539
|
-
$(activeElement).one(Util.TRANSITION_END, function () {
|
|
540
|
-
$(nextElement).removeClass(directionalClassName + " " + orderClassName).addClass(CLASS_NAME_ACTIVE);
|
|
541
|
-
$(activeElement).removeClass(CLASS_NAME_ACTIVE + " " + orderClassName + " " + directionalClassName);
|
|
610
|
+
this._activeElement = nextElement;
|
|
611
|
+
|
|
612
|
+
if (this._element.classList.contains(CLASS_NAME_SLIDE)) {
|
|
613
|
+
nextElement.classList.add(orderClassName);
|
|
614
|
+
reflow(nextElement);
|
|
615
|
+
activeElement.classList.add(directionalClassName);
|
|
616
|
+
nextElement.classList.add(directionalClassName);
|
|
617
|
+
var transitionDuration = getTransitionDurationFromElement(activeElement);
|
|
618
|
+
EventHandler__default['default'].one(activeElement, TRANSITION_END, function () {
|
|
619
|
+
nextElement.classList.remove(directionalClassName, orderClassName);
|
|
620
|
+
nextElement.classList.add(CLASS_NAME_ACTIVE);
|
|
621
|
+
activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName);
|
|
542
622
|
_this4._isSliding = false;
|
|
543
623
|
setTimeout(function () {
|
|
544
|
-
|
|
624
|
+
EventHandler__default['default'].trigger(_this4._element, EVENT_SLID, {
|
|
625
|
+
relatedTarget: nextElement,
|
|
626
|
+
direction: eventDirectionName,
|
|
627
|
+
from: activeElementIndex,
|
|
628
|
+
to: nextElementIndex
|
|
629
|
+
});
|
|
545
630
|
}, 0);
|
|
546
|
-
})
|
|
631
|
+
});
|
|
632
|
+
emulateTransitionEnd(activeElement, transitionDuration);
|
|
547
633
|
} else {
|
|
548
|
-
|
|
549
|
-
|
|
634
|
+
activeElement.classList.remove(CLASS_NAME_ACTIVE);
|
|
635
|
+
nextElement.classList.add(CLASS_NAME_ACTIVE);
|
|
550
636
|
this._isSliding = false;
|
|
551
|
-
|
|
637
|
+
EventHandler__default['default'].trigger(this._element, EVENT_SLID, {
|
|
638
|
+
relatedTarget: nextElement,
|
|
639
|
+
direction: eventDirectionName,
|
|
640
|
+
from: activeElementIndex,
|
|
641
|
+
to: nextElementIndex
|
|
642
|
+
});
|
|
552
643
|
}
|
|
553
644
|
|
|
554
645
|
if (isCycling) {
|
|
@@ -557,52 +648,49 @@
|
|
|
557
648
|
} // Static
|
|
558
649
|
;
|
|
559
650
|
|
|
560
|
-
Carousel.
|
|
561
|
-
|
|
562
|
-
var data = $(this).data(DATA_KEY);
|
|
651
|
+
Carousel.carouselInterface = function carouselInterface(element, config) {
|
|
652
|
+
var data = Data__default['default'].getData(element, DATA_KEY);
|
|
563
653
|
|
|
564
|
-
|
|
654
|
+
var _config = _extends({}, Default, Manipulator__default['default'].getDataAttributes(element));
|
|
565
655
|
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
656
|
+
if (typeof config === 'object') {
|
|
657
|
+
_config = _extends({}, _config, config);
|
|
658
|
+
}
|
|
569
659
|
|
|
570
|
-
|
|
660
|
+
var action = typeof config === 'string' ? config : _config.slide;
|
|
571
661
|
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
662
|
+
if (!data) {
|
|
663
|
+
data = new Carousel(element, _config);
|
|
664
|
+
}
|
|
665
|
+
|
|
666
|
+
if (typeof config === 'number') {
|
|
667
|
+
data.to(config);
|
|
668
|
+
} else if (typeof action === 'string') {
|
|
669
|
+
if (typeof data[action] === 'undefined') {
|
|
670
|
+
throw new TypeError("No method named \"" + action + "\"");
|
|
575
671
|
}
|
|
576
672
|
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
673
|
+
data[action]();
|
|
674
|
+
} else if (_config.interval && _config.ride) {
|
|
675
|
+
data.pause();
|
|
676
|
+
data.cycle();
|
|
677
|
+
}
|
|
678
|
+
};
|
|
583
679
|
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
data.cycle();
|
|
588
|
-
}
|
|
680
|
+
Carousel.jQueryInterface = function jQueryInterface(config) {
|
|
681
|
+
return this.each(function () {
|
|
682
|
+
Carousel.carouselInterface(this, config);
|
|
589
683
|
});
|
|
590
684
|
};
|
|
591
685
|
|
|
592
|
-
Carousel.
|
|
593
|
-
var
|
|
686
|
+
Carousel.dataApiClickHandler = function dataApiClickHandler(event) {
|
|
687
|
+
var target = getElementFromSelector(this);
|
|
594
688
|
|
|
595
|
-
if (!
|
|
689
|
+
if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {
|
|
596
690
|
return;
|
|
597
691
|
}
|
|
598
692
|
|
|
599
|
-
var
|
|
600
|
-
|
|
601
|
-
if (!target || !$(target).hasClass(CLASS_NAME_CAROUSEL)) {
|
|
602
|
-
return;
|
|
603
|
-
}
|
|
604
|
-
|
|
605
|
-
var config = _objectSpread2(_objectSpread2({}, $(target).data()), $(this).data());
|
|
693
|
+
var config = _extends({}, Manipulator__default['default'].getDataAttributes(target), Manipulator__default['default'].getDataAttributes(this));
|
|
606
694
|
|
|
607
695
|
var slideIndex = this.getAttribute('data-slide-to');
|
|
608
696
|
|
|
@@ -610,15 +698,19 @@
|
|
|
610
698
|
config.interval = false;
|
|
611
699
|
}
|
|
612
700
|
|
|
613
|
-
Carousel.
|
|
701
|
+
Carousel.carouselInterface(target, config);
|
|
614
702
|
|
|
615
703
|
if (slideIndex) {
|
|
616
|
-
|
|
704
|
+
Data__default['default'].getData(target, DATA_KEY).to(slideIndex);
|
|
617
705
|
}
|
|
618
706
|
|
|
619
707
|
event.preventDefault();
|
|
620
708
|
};
|
|
621
709
|
|
|
710
|
+
Carousel.getInstance = function getInstance(element) {
|
|
711
|
+
return Data__default['default'].getData(element, DATA_KEY);
|
|
712
|
+
};
|
|
713
|
+
|
|
622
714
|
_createClass(Carousel, null, [{
|
|
623
715
|
key: "VERSION",
|
|
624
716
|
get: function get() {
|
|
@@ -640,29 +732,36 @@
|
|
|
640
732
|
*/
|
|
641
733
|
|
|
642
734
|
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
var carousels = [].
|
|
735
|
+
EventHandler__default['default'].on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler);
|
|
736
|
+
EventHandler__default['default'].on(window, EVENT_LOAD_DATA_API, function () {
|
|
737
|
+
var carousels = SelectorEngine__default['default'].find(SELECTOR_DATA_RIDE);
|
|
646
738
|
|
|
647
739
|
for (var i = 0, len = carousels.length; i < len; i++) {
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
Carousel._jQueryInterface.call($carousel, $carousel.data());
|
|
740
|
+
Carousel.carouselInterface(carousels[i], Data__default['default'].getData(carousels[i], DATA_KEY));
|
|
651
741
|
}
|
|
652
742
|
});
|
|
653
743
|
/**
|
|
654
744
|
* ------------------------------------------------------------------------
|
|
655
745
|
* jQuery
|
|
656
746
|
* ------------------------------------------------------------------------
|
|
747
|
+
* add .Carousel to jQuery only if jQuery is present
|
|
657
748
|
*/
|
|
658
749
|
|
|
659
|
-
|
|
660
|
-
|
|
750
|
+
onDOMContentLoaded(function () {
|
|
751
|
+
var $ = getjQuery();
|
|
752
|
+
/* istanbul ignore if */
|
|
661
753
|
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
754
|
+
if ($) {
|
|
755
|
+
var JQUERY_NO_CONFLICT = $.fn[NAME];
|
|
756
|
+
$.fn[NAME] = Carousel.jQueryInterface;
|
|
757
|
+
$.fn[NAME].Constructor = Carousel;
|
|
758
|
+
|
|
759
|
+
$.fn[NAME].noConflict = function () {
|
|
760
|
+
$.fn[NAME] = JQUERY_NO_CONFLICT;
|
|
761
|
+
return Carousel.jQueryInterface;
|
|
762
|
+
};
|
|
763
|
+
}
|
|
764
|
+
});
|
|
666
765
|
|
|
667
766
|
return Carousel;
|
|
668
767
|
|