bootstrap.js 101 KB
Newer Older
XhmikosR's avatar
XhmikosR committed
1
/*!
Mark Otto's avatar
Mark Otto committed
2
 * Bootstrap v4.0.0-alpha.6 (https://getbootstrap.com)
Heinrich Fenkart's avatar
grunt    
Heinrich Fenkart committed
3
 * Copyright 2011-2017 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
XhmikosR's avatar
XhmikosR committed
4
5
6
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 */

Heinrich Fenkart's avatar
grunt    
Heinrich Fenkart committed
7
if (typeof jQuery === 'undefined') {
Mark Otto's avatar
grunt    
Mark Otto committed
8
  throw new Error('Bootstrap\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\'s JavaScript.')
Heinrich Fenkart's avatar
grunt    
Heinrich Fenkart committed
9
10
11
12
}

+function ($) {
  var version = $.fn.jquery.split(' ')[0].split('.')
XhmikosR's avatar
XhmikosR committed
13
14
  if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] >= 4)) {
    throw new Error('Bootstrap\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0')
Heinrich Fenkart's avatar
grunt    
Heinrich Fenkart committed
15
16
  }
}(jQuery);
XhmikosR's avatar
XhmikosR committed
17

Mark Otto's avatar
Mark Otto committed
18

Mark Otto's avatar
grunt    
Mark Otto committed
19
20
21
22
23
24
25
26
27
28
29
+function () {

var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };

var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();

function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }

function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }

function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
Mark Otto's avatar
Mark Otto committed
30
31

/**
32
 * --------------------------------------------------------------------------
Mark Otto's avatar
Mark Otto committed
33
 * Bootstrap (v4.0.0-alpha.6): util.js
34
35
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * --------------------------------------------------------------------------
Mark Otto's avatar
Mark Otto committed
36
37
 */

Mark Otto's avatar
grunt    
Mark Otto committed
38
var Util = function ($) {
Mark Otto's avatar
Mark Otto committed
39

40
41
42
43
44
  /**
   * ------------------------------------------------------------------------
   * Private TransitionEnd Helpers
   * ------------------------------------------------------------------------
   */
Mark Otto's avatar
Mark Otto committed
45

46
  var transition = false;
Mark Otto's avatar
Mark Otto committed
47

Chris Rebert's avatar
grunt    
Chris Rebert committed
48
49
  var MAX_UID = 1000000;

50
51
52
53
54
55
  var TransitionEndEvent = {
    WebkitTransition: 'webkitTransitionEnd',
    MozTransition: 'transitionend',
    OTransition: 'oTransitionEnd otransitionend',
    transition: 'transitionend'
  };
Mark Otto's avatar
Mark Otto committed
56

57
58
  // shoutout AngusCroll (https://goo.gl/pxwQGp)
  function toType(obj) {
Mark Otto's avatar
grunt    
Mark Otto committed
59
    return {}.toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase();
Mark Otto's avatar
Mark Otto committed
60
61
  }

62
63
64
  function isElement(obj) {
    return (obj[0] || obj).nodeType;
  }
Mark Otto's avatar
Mark Otto committed
65

66
67
68
69
70
71
  function getSpecialTransitionEndEvent() {
    return {
      bindType: transition.end,
      delegateType: transition.end,
      handle: function handle(event) {
        if ($(event.target).is(this)) {
72
          return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params
73
        }
Chris Rebert's avatar
grunt    
Chris Rebert committed
74
        return undefined;
75
76
77
      }
    };
  }
Mark Otto's avatar
Mark Otto committed
78

79
80
81
82
  function transitionEndTest() {
    if (window.QUnit) {
      return false;
    }
Mark Otto's avatar
Mark Otto committed
83

84
    var el = document.createElement('bootstrap');
Mark Otto's avatar
Mark Otto committed
85

Mark Otto's avatar
grunt    
Mark Otto committed
86
87
    for (var name in TransitionEndEvent) {
      if (el.style[name] !== undefined) {
Mark Otto's avatar
grunt    
Mark Otto committed
88
89
90
        return {
          end: TransitionEndEvent[name]
        };
91
92
93
94
      }
    }

    return false;
Mark Otto's avatar
Mark Otto committed
95
96
  }

97
98
  function transitionEndEmulator(duration) {
    var _this = this;
Mark Otto's avatar
Mark Otto committed
99

100
    var called = false;
Mark Otto's avatar
Mark Otto committed
101

102
103
104
    $(this).one(Util.TRANSITION_END, function () {
      called = true;
    });
Mark Otto's avatar
Mark Otto committed
105

106
107
108
109
110
    setTimeout(function () {
      if (!called) {
        Util.triggerTransitionEnd(_this);
      }
    }, duration);
Mark Otto's avatar
Mark Otto committed
111

112
    return this;
Mark Otto's avatar
Mark Otto committed
113
114
  }

115
116
  function setTransitionEndSupport() {
    transition = transitionEndTest();
Mark Otto's avatar
Mark Otto committed
117

118
    $.fn.emulateTransitionEnd = transitionEndEmulator;
Mark Otto's avatar
Mark Otto committed
119

120
121
    if (Util.supportsTransitionEnd()) {
      $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();
Mark Otto's avatar
Mark Otto committed
122
    }
123
  }
Mark Otto's avatar
Mark Otto committed
124

125
126
127
128
129
  /**
   * --------------------------------------------------------------------------
   * Public Util Api
   * --------------------------------------------------------------------------
   */
Mark Otto's avatar
Mark Otto committed
130

131
  var Util = {
Mark Otto's avatar
Mark Otto committed
132

133
    TRANSITION_END: 'bsTransitionEnd',
Mark Otto's avatar
Mark Otto committed
134

135
    getUID: function getUID(prefix) {
Mark Otto's avatar
Mark Otto committed
136
      do {
Mark Otto's avatar
grunt    
Mark Otto committed
137
        // eslint-disable-next-line no-bitwise
Mark Otto's avatar
grunt    
Mark Otto committed
138
        prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here
Mark Otto's avatar
Mark Otto committed
139
      } while (document.getElementById(prefix));
140
141
142
143
      return prefix;
    },
    getSelectorFromElement: function getSelectorFromElement(element) {
      var selector = element.getAttribute('data-target');
Mark Otto's avatar
grunt    
Mark Otto committed
144
      if (!selector || selector === '#') {
145
146
        selector = element.getAttribute('href') || '';
      }
Mark Otto's avatar
Mark Otto committed
147

Mark Otto's avatar
grunt    
Mark Otto committed
148
149
150
151
152
153
      try {
        var $selector = $(selector);
        return $selector.length > 0 ? selector : null;
      } catch (error) {
        return null;
      }
154
155
    },
    reflow: function reflow(element) {
Mark Otto's avatar
grunt    
Mark Otto committed
156
      return element.offsetHeight;
157
158
159
160
161
    },
    triggerTransitionEnd: function triggerTransitionEnd(element) {
      $(element).trigger(transition.end);
    },
    supportsTransitionEnd: function supportsTransitionEnd() {
Mark Otto's avatar
Mark Otto committed
162
      return Boolean(transition);
163
164
165
    },
    typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {
      for (var property in configTypes) {
Mark Otto's avatar
Mark Otto committed
166
167
168
        if (configTypes.hasOwnProperty(property)) {
          var expectedTypes = configTypes[property];
          var value = config[property];
Mark Otto's avatar
grunt    
Mark Otto committed
169
          var valueType = value && isElement(value) ? 'element' : toType(value);
Mark Otto's avatar
Mark Otto committed
170

Mark Otto's avatar
Mark Otto committed
171
172
173
          if (!new RegExp(expectedTypes).test(valueType)) {
            throw new Error(componentName.toUpperCase() + ': ' + ('Option "' + property + '" provided type "' + valueType + '" ') + ('but expected type "' + expectedTypes + '".'));
          }
174
175
176
177
        }
      }
    }
  };
Mark Otto's avatar
Mark Otto committed
178

179
  setTransitionEndSupport();
Mark Otto's avatar
Mark Otto committed
180

181
  return Util;
Mark Otto's avatar
grunt    
Mark Otto committed
182
}(jQuery);
Mark Otto's avatar
Mark Otto committed
183
184

/**
185
 * --------------------------------------------------------------------------
Mark Otto's avatar
Mark Otto committed
186
 * Bootstrap (v4.0.0-alpha.6): alert.js
187
188
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * --------------------------------------------------------------------------
Mark Otto's avatar
Mark Otto committed
189
190
 */

Mark Otto's avatar
grunt    
Mark Otto committed
191
var Alert = function ($) {
Mark Otto's avatar
Mark Otto committed
192

193
194
195
196
197
  /**
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
   */
Mark Otto's avatar
Mark Otto committed
198

199
  var NAME = 'alert';
Mark Otto's avatar
Mark Otto committed
200
  var VERSION = '4.0.0-alpha.6';
201
202
203
204
205
  var DATA_KEY = 'bs.alert';
  var EVENT_KEY = '.' + DATA_KEY;
  var DATA_API_KEY = '.data-api';
  var JQUERY_NO_CONFLICT = $.fn[NAME];
  var TRANSITION_DURATION = 150;
Mark Otto's avatar
Mark Otto committed
206

207
208
209
  var Selector = {
    DISMISS: '[data-dismiss="alert"]'
  };
Mark Otto's avatar
Mark Otto committed
210

211
212
213
  var Event = {
    CLOSE: 'close' + EVENT_KEY,
    CLOSED: 'closed' + EVENT_KEY,
Jacob Thornton's avatar
Jacob Thornton committed
214
    CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY
215
  };
Mark Otto's avatar
Mark Otto committed
216

217
218
219
  var ClassName = {
    ALERT: 'alert',
    FADE: 'fade',
Mark Otto's avatar
grunt    
Mark Otto committed
220
    SHOW: 'show'
221
  };
Mark Otto's avatar
Mark Otto committed
222

223
224
225
226
227
  /**
   * ------------------------------------------------------------------------
   * Class Definition
   * ------------------------------------------------------------------------
   */
Mark Otto's avatar
Mark Otto committed
228

Mark Otto's avatar
grunt    
Mark Otto committed
229
  var Alert = function () {
230
231
    function Alert(element) {
      _classCallCheck(this, Alert);
Mark Otto's avatar
Mark Otto committed
232

233
234
      this._element = element;
    }
Mark Otto's avatar
Mark Otto committed
235

Jacob Thornton's avatar
Jacob Thornton committed
236
237
    // getters

Mark Otto's avatar
grunt    
Mark Otto committed
238
    // public
Mark Otto's avatar
Mark Otto committed
239

Mark Otto's avatar
grunt    
Mark Otto committed
240
241
    Alert.prototype.close = function close(element) {
      element = element || this._element;
Mark Otto's avatar
Mark Otto committed
242

Mark Otto's avatar
grunt    
Mark Otto committed
243
244
245
246
247
248
      var rootElement = this._getRootElement(element);
      var customEvent = this._triggerCloseEvent(rootElement);

      if (customEvent.isDefaultPrevented()) {
        return;
      }
Mark Otto's avatar
Mark Otto committed
249

Mark Otto's avatar
grunt    
Mark Otto committed
250
251
      this._removeElement(rootElement);
    };
Mark Otto's avatar
Mark Otto committed
252

Mark Otto's avatar
grunt    
Mark Otto committed
253
254
255
256
257
258
    Alert.prototype.dispose = function dispose() {
      $.removeData(this._element, DATA_KEY);
      this._element = null;
    };

    // private
Mark Otto's avatar
Mark Otto committed
259

Mark Otto's avatar
grunt    
Mark Otto committed
260
261
262
263
264
265
    Alert.prototype._getRootElement = function _getRootElement(element) {
      var selector = Util.getSelectorFromElement(element);
      var parent = false;

      if (selector) {
        parent = $(selector)[0];
266
      }
Mark Otto's avatar
grunt    
Mark Otto committed
267
268
269

      if (!parent) {
        parent = $(element).closest('.' + ClassName.ALERT)[0];
270
      }
Mark Otto's avatar
Mark Otto committed
271

Mark Otto's avatar
grunt    
Mark Otto committed
272
273
      return parent;
    };
Mark Otto's avatar
Mark Otto committed
274

Mark Otto's avatar
grunt    
Mark Otto committed
275
276
    Alert.prototype._triggerCloseEvent = function _triggerCloseEvent(element) {
      var closeEvent = $.Event(Event.CLOSE);
Mark Otto's avatar
Mark Otto committed
277

Mark Otto's avatar
grunt    
Mark Otto committed
278
279
280
      $(element).trigger(closeEvent);
      return closeEvent;
    };
Mark Otto's avatar
Mark Otto committed
281

Mark Otto's avatar
grunt    
Mark Otto committed
282
    Alert.prototype._removeElement = function _removeElement(element) {
Mark Otto's avatar
grunt    
Mark Otto committed
283
284
      var _this2 = this;

Mark Otto's avatar
grunt    
Mark Otto committed
285
      $(element).removeClass(ClassName.SHOW);
Mark Otto's avatar
Mark Otto committed
286

Mark Otto's avatar
grunt    
Mark Otto committed
287
288
289
      if (!Util.supportsTransitionEnd() || !$(element).hasClass(ClassName.FADE)) {
        this._destroyElement(element);
        return;
290
      }
Mark Otto's avatar
Mark Otto committed
291

Mark Otto's avatar
grunt    
Mark Otto committed
292
293
294
      $(element).one(Util.TRANSITION_END, function (event) {
        return _this2._destroyElement(element, event);
      }).emulateTransitionEnd(TRANSITION_DURATION);
Mark Otto's avatar
grunt    
Mark Otto committed
295
    };
296

Mark Otto's avatar
grunt    
Mark Otto committed
297
298
299
    Alert.prototype._destroyElement = function _destroyElement(element) {
      $(element).detach().trigger(Event.CLOSED).remove();
    };
Mark Otto's avatar
Mark Otto committed
300

Mark Otto's avatar
grunt    
Mark Otto committed
301
    // static
Mark Otto's avatar
Mark Otto committed
302

Mark Otto's avatar
grunt    
Mark Otto committed
303
304
305
306
    Alert._jQueryInterface = function _jQueryInterface(config) {
      return this.each(function () {
        var $element = $(this);
        var data = $element.data(DATA_KEY);
Mark Otto's avatar
Mark Otto committed
307

Mark Otto's avatar
grunt    
Mark Otto committed
308
309
310
311
        if (!data) {
          data = new Alert(this);
          $element.data(DATA_KEY, data);
        }
Mark Otto's avatar
Mark Otto committed
312

Mark Otto's avatar
grunt    
Mark Otto committed
313
314
315
316
317
        if (config === 'close') {
          data[config](this);
        }
      });
    };
Mark Otto's avatar
Mark Otto committed
318

Mark Otto's avatar
grunt    
Mark Otto committed
319
320
321
322
323
    Alert._handleDismiss = function _handleDismiss(alertInstance) {
      return function (event) {
        if (event) {
          event.preventDefault();
        }
Mark Otto's avatar
Mark Otto committed
324

Mark Otto's avatar
grunt    
Mark Otto committed
325
326
327
328
329
        alertInstance.close(this);
      };
    };

    _createClass(Alert, null, [{
Mark Otto's avatar
grunt    
Mark Otto committed
330
      key: 'VERSION',
Jacob Thornton's avatar
Jacob Thornton committed
331
      get: function get() {
Mark Otto's avatar
grunt    
Mark Otto committed
332
333
        return VERSION;
      }
334
    }]);
Mark Otto's avatar
Mark Otto committed
335

336
    return Alert;
Mark Otto's avatar
grunt    
Mark Otto committed
337
338
339
340
341
342
343
  }();

  /**
   * ------------------------------------------------------------------------
   * Data Api implementation
   * ------------------------------------------------------------------------
   */
Mark Otto's avatar
Mark Otto committed
344

345
  $(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert()));
Mark Otto's avatar
Mark Otto committed
346

347
348
349
350
351
  /**
   * ------------------------------------------------------------------------
   * jQuery
   * ------------------------------------------------------------------------
   */
Mark Otto's avatar
Mark Otto committed
352

353
354
355
356
357
358
  $.fn[NAME] = Alert._jQueryInterface;
  $.fn[NAME].Constructor = Alert;
  $.fn[NAME].noConflict = function () {
    $.fn[NAME] = JQUERY_NO_CONFLICT;
    return Alert._jQueryInterface;
  };
Mark Otto's avatar
Mark Otto committed
359

360
  return Alert;
Mark Otto's avatar
grunt    
Mark Otto committed
361
}(jQuery);
Mark Otto's avatar
Mark Otto committed
362
363

/**
364
 * --------------------------------------------------------------------------
Mark Otto's avatar
Mark Otto committed
365
 * Bootstrap (v4.0.0-alpha.6): button.js
366
367
368
369
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * --------------------------------------------------------------------------
 */

Mark Otto's avatar
grunt    
Mark Otto committed
370
var Button = function ($) {
371
372
373
374
375
376
377
378

  /**
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
   */

  var NAME = 'button';
Mark Otto's avatar
Mark Otto committed
379
  var VERSION = '4.0.0-alpha.6';
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
  var DATA_KEY = 'bs.button';
  var EVENT_KEY = '.' + DATA_KEY;
  var DATA_API_KEY = '.data-api';
  var JQUERY_NO_CONFLICT = $.fn[NAME];

  var ClassName = {
    ACTIVE: 'active',
    BUTTON: 'btn',
    FOCUS: 'focus'
  };

  var Selector = {
    DATA_TOGGLE_CARROT: '[data-toggle^="button"]',
    DATA_TOGGLE: '[data-toggle="buttons"]',
    INPUT: 'input',
    ACTIVE: '.active',
    BUTTON: '.btn'
  };

  var Event = {
Jacob Thornton's avatar
Jacob Thornton committed
400
401
    CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY,
    FOCUS_BLUR_DATA_API: 'focus' + EVENT_KEY + DATA_API_KEY + ' ' + ('blur' + EVENT_KEY + DATA_API_KEY)
402
403
404
405
406
407
408
409
  };

  /**
   * ------------------------------------------------------------------------
   * Class Definition
   * ------------------------------------------------------------------------
   */

Mark Otto's avatar
grunt    
Mark Otto committed
410
  var Button = function () {
411
412
413
414
415
416
    function Button(element) {
      _classCallCheck(this, Button);

      this._element = element;
    }

Jacob Thornton's avatar
Jacob Thornton committed
417
418
    // getters

Mark Otto's avatar
grunt    
Mark Otto committed
419
    // public
420

Mark Otto's avatar
grunt    
Mark Otto committed
421
422
    Button.prototype.toggle = function toggle() {
      var triggerChangeEvent = true;
Mark Otto's avatar
grunt    
Mark Otto committed
423
      var addAriaPressed = true;
Mark Otto's avatar
grunt    
Mark Otto committed
424
      var rootElement = $(this._element).closest(Selector.DATA_TOGGLE)[0];
425

Mark Otto's avatar
grunt    
Mark Otto committed
426
427
      if (rootElement) {
        var input = $(this._element).find(Selector.INPUT)[0];
428

Mark Otto's avatar
grunt    
Mark Otto committed
429
430
431
432
433
434
        if (input) {
          if (input.type === 'radio') {
            if (input.checked && $(this._element).hasClass(ClassName.ACTIVE)) {
              triggerChangeEvent = false;
            } else {
              var activeElement = $(rootElement).find(Selector.ACTIVE)[0];
435

Mark Otto's avatar
grunt    
Mark Otto committed
436
437
              if (activeElement) {
                $(activeElement).removeClass(ClassName.ACTIVE);
438
439
              }
            }
Mark Otto's avatar
grunt    
Mark Otto committed
440
          }
441

Mark Otto's avatar
grunt    
Mark Otto committed
442
443
          if (triggerChangeEvent) {
            input.checked = !$(this._element).hasClass(ClassName.ACTIVE);
Mark Otto's avatar
grunt    
Mark Otto committed
444
            $(input).trigger('change');
445
          }
Mark Otto's avatar
Mark Otto committed
446

Mark Otto's avatar
grunt    
Mark Otto committed
447
          input.focus();
Mark Otto's avatar
grunt    
Mark Otto committed
448
          addAriaPressed = false;
449
450
        }
      }
Mark Otto's avatar
grunt    
Mark Otto committed
451

Mark Otto's avatar
grunt    
Mark Otto committed
452
453
454
      if (addAriaPressed) {
        this._element.setAttribute('aria-pressed', !$(this._element).hasClass(ClassName.ACTIVE));
      }
Mark Otto's avatar
grunt    
Mark Otto committed
455

Mark Otto's avatar
grunt    
Mark Otto committed
456
457
      if (triggerChangeEvent) {
        $(this._element).toggleClass(ClassName.ACTIVE);
458
      }
Mark Otto's avatar
grunt    
Mark Otto committed
459
    };
Mark Otto's avatar
Mark Otto committed
460

Mark Otto's avatar
grunt    
Mark Otto committed
461
462
463
464
    Button.prototype.dispose = function dispose() {
      $.removeData(this._element, DATA_KEY);
      this._element = null;
    };
Mark Otto's avatar
Mark Otto committed
465

Mark Otto's avatar
grunt    
Mark Otto committed
466
    // static
Mark Otto's avatar
Mark Otto committed
467

Mark Otto's avatar
grunt    
Mark Otto committed
468
469
470
    Button._jQueryInterface = function _jQueryInterface(config) {
      return this.each(function () {
        var data = $(this).data(DATA_KEY);
Mark Otto's avatar
Mark Otto committed
471

Mark Otto's avatar
grunt    
Mark Otto committed
472
473
474
475
476
477
478
479
480
481
482
483
        if (!data) {
          data = new Button(this);
          $(this).data(DATA_KEY, data);
        }

        if (config === 'toggle') {
          data[config]();
        }
      });
    };

    _createClass(Button, null, [{
Mark Otto's avatar
grunt    
Mark Otto committed
484
      key: 'VERSION',
Jacob Thornton's avatar
Jacob Thornton committed
485
      get: function get() {
Mark Otto's avatar
grunt    
Mark Otto committed
486
487
        return VERSION;
      }
488
    }]);
Mark Otto's avatar
Mark Otto committed
489

490
    return Button;
Mark Otto's avatar
grunt    
Mark Otto committed
491
492
493
494
495
496
497
  }();

  /**
   * ------------------------------------------------------------------------
   * Data Api implementation
   * ------------------------------------------------------------------------
   */
Mark Otto's avatar
Mark Otto committed
498

499
500
  $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) {
    event.preventDefault();
Mark Otto's avatar
Mark Otto committed
501

502
    var button = event.target;
Mark Otto's avatar
Mark Otto committed
503

504
505
506
    if (!$(button).hasClass(ClassName.BUTTON)) {
      button = $(button).closest(Selector.BUTTON);
    }
Mark Otto's avatar
Mark Otto committed
507

508
509
510
511
512
    Button._jQueryInterface.call($(button), 'toggle');
  }).on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) {
    var button = $(event.target).closest(Selector.BUTTON)[0];
    $(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type));
  });
Mark Otto's avatar
Mark Otto committed
513

514
515
516
517
518
  /**
   * ------------------------------------------------------------------------
   * jQuery
   * ------------------------------------------------------------------------
   */
Mark Otto's avatar
Mark Otto committed
519

520
521
522
523
524
525
  $.fn[NAME] = Button._jQueryInterface;
  $.fn[NAME].Constructor = Button;
  $.fn[NAME].noConflict = function () {
    $.fn[NAME] = JQUERY_NO_CONFLICT;
    return Button._jQueryInterface;
  };
Mark Otto's avatar
Mark Otto committed
526

527
  return Button;
Mark Otto's avatar
grunt    
Mark Otto committed
528
}(jQuery);
Mark Otto's avatar
Mark Otto committed
529
530

/**
531
 * --------------------------------------------------------------------------
Mark Otto's avatar
Mark Otto committed
532
 * Bootstrap (v4.0.0-alpha.6): carousel.js
533
534
535
536
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * --------------------------------------------------------------------------
 */

Mark Otto's avatar
grunt    
Mark Otto committed
537
var Carousel = function ($) {
538
539
540
541
542
543
544
545

  /**
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
   */

  var NAME = 'carousel';
Mark Otto's avatar
Mark Otto committed
546
  var VERSION = '4.0.0-alpha.6';
547
548
549
550
551
  var DATA_KEY = 'bs.carousel';
  var EVENT_KEY = '.' + DATA_KEY;
  var DATA_API_KEY = '.data-api';
  var JQUERY_NO_CONFLICT = $.fn[NAME];
  var TRANSITION_DURATION = 600;
Chris Rebert's avatar
grunt    
Chris Rebert committed
552
553
  var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key
  var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572

  var Default = {
    interval: 5000,
    keyboard: true,
    slide: false,
    pause: 'hover',
    wrap: true
  };

  var DefaultType = {
    interval: '(number|boolean)',
    keyboard: 'boolean',
    slide: '(boolean|string)',
    pause: '(string|boolean)',
    wrap: 'boolean'
  };

  var Direction = {
    NEXT: 'next',
Mark Otto's avatar
grunt    
Mark Otto committed
573
574
575
    PREV: 'prev',
    LEFT: 'left',
    RIGHT: 'right'
576
577
578
579
580
581
582
583
  };

  var Event = {
    SLIDE: 'slide' + EVENT_KEY,
    SLID: 'slid' + EVENT_KEY,
    KEYDOWN: 'keydown' + EVENT_KEY,
    MOUSEENTER: 'mouseenter' + EVENT_KEY,
    MOUSELEAVE: 'mouseleave' + EVENT_KEY,
Jacob Thornton's avatar
Jacob Thornton committed
584
585
    LOAD_DATA_API: 'load' + EVENT_KEY + DATA_API_KEY,
    CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY
586
587
588
589
590
591
  };

  var ClassName = {
    CAROUSEL: 'carousel',
    ACTIVE: 'active',
    SLIDE: 'slide',
Mark Otto's avatar
grunt    
Mark Otto committed
592
593
594
595
    RIGHT: 'carousel-item-right',
    LEFT: 'carousel-item-left',
    NEXT: 'carousel-item-next',
    PREV: 'carousel-item-prev',
596
597
598
599
600
601
602
    ITEM: 'carousel-item'
  };

  var Selector = {
    ACTIVE: '.active',
    ACTIVE_ITEM: '.active.carousel-item',
    ITEM: '.carousel-item',
Mark Otto's avatar
grunt    
Mark Otto committed
603
    NEXT_PREV: '.carousel-item-next, .carousel-item-prev',
604
605
606
607
608
609
610
611
612
613
614
    INDICATORS: '.carousel-indicators',
    DATA_SLIDE: '[data-slide], [data-slide-to]',
    DATA_RIDE: '[data-ride="carousel"]'
  };

  /**
   * ------------------------------------------------------------------------
   * Class Definition
   * ------------------------------------------------------------------------
   */

Mark Otto's avatar
grunt    
Mark Otto committed
615
  var Carousel = function () {
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
    function Carousel(element, config) {
      _classCallCheck(this, Carousel);

      this._items = null;
      this._interval = null;
      this._activeElement = null;

      this._isPaused = false;
      this._isSliding = false;

      this._config = this._getConfig(config);
      this._element = $(element)[0];
      this._indicatorsElement = $(this._element).find(Selector.INDICATORS)[0];

      this._addEventListeners();
    }

Jacob Thornton's avatar
Jacob Thornton committed
633
634
    // getters

Mark Otto's avatar
grunt    
Mark Otto committed
635
    // public
636

Mark Otto's avatar
grunt    
Mark Otto committed
637
    Carousel.prototype.next = function next() {
Mark Otto's avatar
grunt    
Mark Otto committed
638
639
      if (!this._isSliding) {
        this._slide(Direction.NEXT);
Mark Otto's avatar
grunt    
Mark Otto committed
640
641
      }
    };
642

Mark Otto's avatar
grunt    
Mark Otto committed
643
644
645
646
    Carousel.prototype.nextWhenVisible = function nextWhenVisible() {
      // Don't call next when the page isn't visible
      if (!document.hidden) {
        this.next();
647
      }
Mark Otto's avatar
grunt    
Mark Otto committed
648
649
650
    };

    Carousel.prototype.prev = function prev() {
Mark Otto's avatar
grunt    
Mark Otto committed
651
652
      if (!this._isSliding) {
        this._slide(Direction.PREV);
XhmikosR's avatar
XhmikosR committed
653
      }
Mark Otto's avatar
grunt    
Mark Otto committed
654
655
656
657
658
    };

    Carousel.prototype.pause = function pause(event) {
      if (!event) {
        this._isPaused = true;
659
      }
Mark Otto's avatar
Mark Otto committed
660

Mark Otto's avatar
grunt    
Mark Otto committed
661
662
663
664
665
666
667
668
669
670
671
672
673
      if ($(this._element).find(Selector.NEXT_PREV)[0] && Util.supportsTransitionEnd()) {
        Util.triggerTransitionEnd(this._element);
        this.cycle(true);
      }

      clearInterval(this._interval);
      this._interval = null;
    };

    Carousel.prototype.cycle = function cycle(event) {
      if (!event) {
        this._isPaused = false;
      }
Mark Otto's avatar
Mark Otto committed
674

Mark Otto's avatar
grunt    
Mark Otto committed
675
      if (this._interval) {
676
677
678
        clearInterval(this._interval);
        this._interval = null;
      }
Mark Otto's avatar
Mark Otto committed
679

Mark Otto's avatar
grunt    
Mark Otto committed
680
      if (this._config.interval && !this._isPaused) {
Mark Otto's avatar
grunt    
Mark Otto committed
681
        this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);
Mark Otto's avatar
grunt    
Mark Otto committed
682
683
      }
    };
Mark Otto's avatar
Mark Otto committed
684

Mark Otto's avatar
grunt    
Mark Otto committed
685
    Carousel.prototype.to = function to(index) {
Mark Otto's avatar
grunt    
Mark Otto committed
686
      var _this3 = this;
Mark Otto's avatar
grunt    
Mark Otto committed
687
688
689
690
691
692
693

      this._activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0];

      var activeIndex = this._getItemIndex(this._activeElement);

      if (index > this._items.length - 1 || index < 0) {
        return;
694
      }
Mark Otto's avatar
Mark Otto committed
695

Mark Otto's avatar
grunt    
Mark Otto committed
696
697
      if (this._isSliding) {
        $(this._element).one(Event.SLID, function () {
Mark Otto's avatar
grunt    
Mark Otto committed
698
          return _this3.to(index);
Mark Otto's avatar
grunt    
Mark Otto committed
699
700
701
        });
        return;
      }
Mark Otto's avatar
Mark Otto committed
702

Mark Otto's avatar
grunt    
Mark Otto committed
703
704
705
706
707
      if (activeIndex === index) {
        this.pause();
        this.cycle();
        return;
      }
Mark Otto's avatar
Mark Otto committed
708

Mark Otto's avatar
grunt    
Mark Otto committed
709
      var direction = index > activeIndex ? Direction.NEXT : Direction.PREV;
Mark Otto's avatar
Mark Otto committed
710

Mark Otto's avatar
grunt    
Mark Otto committed
711
712
      this._slide(direction, this._items[index]);
    };
Mark Otto's avatar
Mark Otto committed
713

Mark Otto's avatar
grunt    
Mark Otto committed
714
715
716
    Carousel.prototype.dispose = function dispose() {
      $(this._element).off(EVENT_KEY);
      $.removeData(this._element, DATA_KEY);
Mark Otto's avatar
Mark Otto committed
717

Mark Otto's avatar
grunt    
Mark Otto committed
718
719
720
721
722
723
724
725
726
      this._items = null;
      this._config = null;
      this._element = null;
      this._interval = null;
      this._isPaused = null;
      this._isSliding = null;
      this._activeElement = null;
      this._indicatorsElement = null;
    };
Mark Otto's avatar
Mark Otto committed
727

Mark Otto's avatar
grunt    
Mark Otto committed
728
    // private
Mark Otto's avatar
Mark Otto committed
729

Mark Otto's avatar
grunt    
Mark Otto committed
730
731
732
733
734
    Carousel.prototype._getConfig = function _getConfig(config) {
      config = $.extend({}, Default, config);
      Util.typeCheckConfig(NAME, config, DefaultType);
      return config;
    };
Mark Otto's avatar
Mark Otto committed
735

Mark Otto's avatar
grunt    
Mark Otto committed
736
    Carousel.prototype._addEventListeners = function _addEventListeners() {
Mark Otto's avatar
grunt    
Mark Otto committed
737
738
      var _this4 = this;

Mark Otto's avatar
grunt    
Mark Otto committed
739
      if (this._config.keyboard) {
Mark Otto's avatar
grunt    
Mark Otto committed
740
741
742
        $(this._element).on(Event.KEYDOWN, function (event) {
          return _this4._keydown(event);
        });
743
      }
Mark Otto's avatar
Mark Otto committed
744

Mark Otto's avatar
grunt    
Mark Otto committed
745
      if (this._config.pause === 'hover' && !('ontouchstart' in document.documentElement)) {
Mark Otto's avatar
grunt    
Mark Otto committed
746
747
748
749
750
        $(this._element).on(Event.MOUSEENTER, function (event) {
          return _this4.pause(event);
        }).on(Event.MOUSELEAVE, function (event) {
          return _this4.cycle(event);
        });
751
      }
Mark Otto's avatar
grunt    
Mark Otto committed
752
    };
753

Mark Otto's avatar
grunt    
Mark Otto committed
754
755
756
    Carousel.prototype._keydown = function _keydown(event) {
      if (/input|textarea/i.test(event.target.tagName)) {
        return;
Mark Otto's avatar
Mark Otto committed
757
      }
Mark Otto's avatar
grunt    
Mark Otto committed
758
759
760

      switch (event.which) {
        case ARROW_LEFT_KEYCODE:
Mark Otto's avatar
grunt    
Mark Otto committed
761
          event.preventDefault();
Mark Otto's avatar
grunt    
Mark Otto committed
762
763
764
          this.prev();
          break;
        case ARROW_RIGHT_KEYCODE:
Mark Otto's avatar
grunt    
Mark Otto committed
765
          event.preventDefault();
Mark Otto's avatar
grunt    
Mark Otto committed
766
767
768
769
          this.next();
          break;
        default:
          return;
770
      }
Mark Otto's avatar
grunt    
Mark Otto committed
771
    };
772

Mark Otto's avatar
grunt    
Mark Otto committed
773
774
775
776
    Carousel.prototype._getItemIndex = function _getItemIndex(element) {
      this._items = $.makeArray($(element).parent().find(Selector.ITEM));
      return this._items.indexOf(element);
    };
777

Mark Otto's avatar
grunt    
Mark Otto committed
778
779
    Carousel.prototype._getItemByDirection = function _getItemByDirection(direction, activeElement) {
      var isNextDirection = direction === Direction.NEXT;
Mark Otto's avatar
grunt    
Mark Otto committed
780
      var isPrevDirection = direction === Direction.PREV;
Mark Otto's avatar
grunt    
Mark Otto committed
781
782
783
      var activeIndex = this._getItemIndex(activeElement);
      var lastItemIndex = this._items.length - 1;
      var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;
Mark Otto's avatar
Mark Otto committed
784

Mark Otto's avatar
grunt    
Mark Otto committed
785
786
      if (isGoingToWrap && !this._config.wrap) {
        return activeElement;
Mark Otto's avatar
Mark Otto committed
787
788
      }

Mark Otto's avatar
grunt    
Mark Otto committed
789
      var delta = direction === Direction.PREV ? -1 : 1;
Mark Otto's avatar
grunt    
Mark Otto committed
790
      var itemIndex = (activeIndex + delta) % this._items.length;
Mark Otto's avatar
Mark Otto committed
791

Mark Otto's avatar
grunt    
Mark Otto committed
792
793
      return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];
    };
Mark Otto's avatar
Mark Otto committed
794

Mark Otto's avatar
grunt    
Mark Otto committed
795
    Carousel.prototype._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {
Mark Otto's avatar
grunt    
Mark Otto committed
796
797
      var targetIndex = this._getItemIndex(relatedTarget);
      var fromIndex = this._getItemIndex($(this._element).find(Selector.ACTIVE_ITEM)[0]);
Mark Otto's avatar
grunt    
Mark Otto committed
798
799
      var slideEvent = $.Event(Event.SLIDE, {
        relatedTarget: relatedTarget,
Mark Otto's avatar
grunt    
Mark Otto committed
800
801
802
        direction: eventDirectionName,
        from: fromIndex,
        to: targetIndex
Mark Otto's avatar
grunt    
Mark Otto committed
803
      });
Mark Otto's avatar
Mark Otto committed
804

Mark Otto's avatar
grunt    
Mark Otto committed
805
      $(this._element).trigger(slideEvent);
Mark Otto's avatar
Mark Otto committed
806

Mark Otto's avatar
grunt    
Mark Otto committed
807
808
      return slideEvent;
    };
Mark Otto's avatar
Mark Otto committed
809

Mark Otto's avatar
grunt    
Mark Otto committed
810
811
812
    Carousel.prototype._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {
      if (this._indicatorsElement) {
        $(this._indicatorsElement).find(Selector.ACTIVE).removeClass(ClassName.ACTIVE);
Mark Otto's avatar
Mark Otto committed
813

Mark Otto's avatar
grunt    
Mark Otto committed
814
        var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];
Mark Otto's avatar
Mark Otto committed
815

Mark Otto's avatar
grunt    
Mark Otto committed
816
817
        if (nextIndicator) {
          $(nextIndicator).addClass(ClassName.ACTIVE);
818
        }
Mark Otto's avatar
grunt    
Mark Otto committed
819
820
      }
    };
Mark Otto's avatar
Mark Otto committed
821

Mark Otto's avatar
grunt    
Mark Otto committed
822
    Carousel.prototype._slide = function _slide(direction, element) {
Mark Otto's avatar
grunt    
Mark Otto committed
823
      var _this5 = this;
Mark Otto's avatar
Mark Otto committed
824

Mark Otto's avatar
grunt    
Mark Otto committed
825
      var activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0];
Mark Otto's avatar
grunt    
Mark Otto committed
826
      var activeElementIndex = this._getItemIndex(activeElement);
Mark Otto's avatar
grunt    
Mark Otto committed
827
      var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);
Mark Otto's avatar
grunt    
Mark Otto committed
828
      var nextElementIndex = this._getItemIndex(nextElement);
Mark Otto's avatar
grunt    
Mark Otto committed
829
      var isCycling = Boolean(this._interval);
Mark Otto's avatar
Mark Otto committed
830

Mark Otto's avatar
grunt    
Mark Otto committed
831
832
833
834
835
836
837
838
839
840
841
842
843
      var directionalClassName = void 0;
      var orderClassName = void 0;
      var eventDirectionName = void 0;

      if (direction === Direction.NEXT) {
        directionalClassName = ClassName.LEFT;
        orderClassName = ClassName.NEXT;
        eventDirectionName = Direction.LEFT;
      } else {
        directionalClassName = ClassName.RIGHT;
        orderClassName = ClassName.PREV;
        eventDirectionName = Direction.RIGHT;
      }
Mark Otto's avatar
grunt    
Mark Otto committed
844
845
846
847
848

      if (nextElement && $(nextElement).hasClass(ClassName.ACTIVE)) {
        this._isSliding = false;
        return;
      }
Mark Otto's avatar
Mark Otto committed
849

Mark Otto's avatar
grunt    
Mark Otto committed
850
      var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);
Mark Otto's avatar
grunt    
Mark Otto committed
851
852
853
      if (slideEvent.isDefaultPrevented()) {
        return;
      }
Mark Otto's avatar
Mark Otto committed
854

Mark Otto's avatar
grunt    
Mark Otto committed
855
856
857
858
      if (!activeElement || !nextElement) {
        // some weirdness is happening, so we bail
        return;
      }
Mark Otto's avatar
Mark Otto committed
859

Mark Otto's avatar
grunt    
Mark Otto committed
860
861
862
863
864
      this._isSliding = true;

      if (isCycling) {
        this.pause();
      }
Mark Otto's avatar
Mark Otto committed
865

Mark Otto's avatar
grunt    
Mark Otto committed
866
      this._setActiveIndicatorElement(nextElement);
Mark Otto's avatar
Mark Otto committed
867

Mark Otto's avatar
grunt    
Mark Otto committed
868
869
      var slidEvent = $.Event(Event.SLID, {
        relatedTarget: nextElement,
Mark Otto's avatar
grunt    
Mark Otto committed
870
871
872
        direction: eventDirectionName,
        from: activeElementIndex,
        to: nextElementIndex
Mark Otto's avatar
grunt    
Mark Otto committed
873
      });
Mark Otto's avatar
Mark Otto committed
874

Mark Otto's avatar
grunt    
Mark Otto committed
875
      if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.SLIDE)) {
Mark Otto's avatar
Mark Otto committed
876

Mark Otto's avatar
grunt    
Mark Otto committed
877
        $(nextElement).addClass(orderClassName);
Mark Otto's avatar
Mark Otto committed
878

Mark Otto's avatar
grunt    
Mark Otto committed
879
        Util.reflow(nextElement);
Mark Otto's avatar
Mark Otto committed
880

Mark Otto's avatar
grunt    
Mark Otto committed
881
882
        $(activeElement).addClass(directionalClassName);
        $(nextElement).addClass(directionalClassName);
Mark Otto's avatar
Mark Otto committed
883

Mark Otto's avatar
grunt    
Mark Otto committed
884
        $(activeElement).one(Util.TRANSITION_END, function () {
Mark Otto's avatar
grunt    
Mark Otto committed
885
          $(nextElement).removeClass(directionalClassName + ' ' + orderClassName).addClass(ClassName.ACTIVE);
Mark Otto's avatar
Mark Otto committed
886

Mark Otto's avatar
grunt    
Mark Otto committed
887
          $(activeElement).removeClass(ClassName.ACTIVE + ' ' + orderClassName + ' ' + directionalClassName);
Mark Otto's avatar
Mark Otto committed
888

Mark Otto's avatar
grunt    
Mark Otto committed
889
          _this5._isSliding = false;
Mark Otto's avatar
grunt    
Mark Otto committed
890
891

          setTimeout(function () {
Mark Otto's avatar
grunt    
Mark Otto committed
892
            return $(_this5._element).trigger(slidEvent);
Mark Otto's avatar
grunt    
Mark Otto committed
893
894
895
896
897
898
899
900
          }, 0);
        }).emulateTransitionEnd(TRANSITION_DURATION);
      } else {
        $(activeElement).removeClass(ClassName.ACTIVE);
        $(nextElement).addClass(ClassName.ACTIVE);

        this._isSliding = false;
        $(this._element).trigger(slidEvent);
901
      }
Mark Otto's avatar
Mark Otto committed
902

Mark Otto's avatar
grunt    
Mark Otto committed
903
904
905
906
      if (isCycling) {
        this.cycle();
      }
    };
Mark Otto's avatar
Mark Otto committed
907

Mark Otto's avatar
grunt    
Mark Otto committed
908
    // static
Mark Otto's avatar
Mark Otto committed
909

Mark Otto's avatar
grunt    
Mark Otto committed
910
911
912
913
    Carousel._jQueryInterface = function _jQueryInterface(config) {
      return this.each(function () {
        var data = $(this).data(DATA_KEY);
        var _config = $.extend({}, Default, $(this).data());
Mark Otto's avatar
Mark Otto committed
914

Mark Otto's avatar
grunt    
Mark Otto committed
915
916
917
        if ((typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object') {
          $.extend(_config, config);
        }
Mark Otto's avatar
Mark Otto committed
918

Mark Otto's avatar
grunt    
Mark Otto committed
919
        var action = typeof config === 'string' ? config : _config.slide;
Mark Otto's avatar
Mark Otto committed
920

Mark Otto's avatar
grunt    
Mark Otto committed
921
922
923
924
        if (!data) {
          data = new Carousel(this, _config);
          $(this).data(DATA_KEY, data);
        }
Mark Otto's avatar
Mark Otto committed
925

Mark Otto's avatar
grunt    
Mark Otto committed
926
927
928
929
930
931
932
933
934
935
        if (typeof config === 'number') {
          data.to(config);
        } else if (typeof action === 'string') {
          if (data[action] === undefined) {
            throw new Error('No method named "' + action + '"');
          }
          data[action]();
        } else if (_config.interval) {
          data.pause();
          data.cycle();
936
        }
Mark Otto's avatar
grunt    
Mark Otto committed
937
938
      });
    };
Mark Otto's avatar
Mark Otto committed
939

Mark Otto's avatar
grunt    
Mark Otto committed
940
941
    Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {
      var selector = Util.getSelectorFromElement(this);
Mark Otto's avatar
Mark Otto committed
942

Mark Otto's avatar
grunt    
Mark Otto committed
943
944
945
      if (!selector) {
        return;
      }
Mark Otto's avatar
Mark Otto committed
946

Mark Otto's avatar
grunt    
Mark Otto committed
947
      var target = $(selector)[0];
Mark Otto's avatar
Mark Otto committed
948

Mark Otto's avatar
grunt    
Mark Otto committed
949
950
951
      if (!target || !$(target).hasClass(ClassName.CAROUSEL)) {
        return;
      }
Mark Otto's avatar
Mark Otto committed
952

Mark Otto's avatar
grunt    
Mark Otto committed
953
954
      var config = $.extend({}, $(target).data(), $(this).data());
      var slideIndex = this.getAttribute('data-slide-to');
Mark Otto's avatar
Mark Otto committed
955

Mark Otto's avatar
grunt    
Mark Otto committed
956
957
958
      if (slideIndex) {
        config.interval = false;
      }
Mark Otto's avatar
Mark Otto committed
959

Mark Otto's avatar
grunt    
Mark Otto committed
960
961
962
963
      Carousel._jQueryInterface.call($(target), config);

      if (slideIndex) {
        $(target).data(DATA_KEY).to(slideIndex);
964
      }
Mark Otto's avatar
grunt    
Mark Otto committed
965
966
967
968
969

      event.preventDefault();
    };

    _createClass(Carousel, null, [{
Mark Otto's avatar
grunt    
Mark Otto committed
970
      key: 'VERSION',
Jacob Thornton's avatar
Jacob Thornton committed
971
      get: function get() {
Mark Otto's avatar
grunt    
Mark Otto committed
972
973
974
975
        return VERSION;
      }
    }, {
      key: 'Default',
Jacob Thornton's avatar
Jacob Thornton committed
976
      get: function get() {
Mark Otto's avatar
grunt    
Mark Otto committed
977
978
        return Default;
      }
979
    }]);
Mark Otto's avatar
Mark Otto committed
980

981
    return Carousel;
Mark Otto's avatar
grunt    
Mark Otto committed
982
983
984
985
986
987
988
  }();

  /**
   * ------------------------------------------------------------------------
   * Data Api implementation
   * ------------------------------------------------------------------------
   */
Mark Otto's avatar
Mark Otto committed
989

990
  $(document).on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler);
Mark Otto's avatar
Mark Otto committed
991

992
993
994
995
996
997
  $(window).on(Event.LOAD_DATA_API, function () {
    $(Selector.DATA_RIDE).each(function () {
      var $carousel = $(this);
      Carousel._jQueryInterface.call($carousel, $carousel.data());
    });
  });
Mark Otto's avatar
Mark Otto committed
998

999
1000
  /**
   * ------------------------------------------------------------------------
For faster browsing, not all history is shown. View entire blame