bootstrap.js 109 KB
Newer Older
1
/*!
Mark Otto's avatar
dist    
Mark Otto committed
2
3
4
5
6
7
  * Bootstrap v4.0.0-beta (https://getbootstrap.com)
  * Copyright 2011-2017 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
  */
var bootstrap = (function (exports,$,Popper) {
'use strict';
Mark Otto's avatar
grunt    
Mark Otto committed
8

Mark Otto's avatar
dist    
Mark Otto committed
9
10
$ = $ && $.hasOwnProperty('default') ? $['default'] : $;
Popper = Popper && Popper.hasOwnProperty('default') ? Popper['default'] : Popper;
Jacob Thornton's avatar
Jacob Thornton committed
11
12
13

/**
 * --------------------------------------------------------------------------
Mark Otto's avatar
Mark Otto committed
14
 * Bootstrap (v4.0.0-beta): util.js
Jacob Thornton's avatar
Jacob Thornton committed
15
16
17
18
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * --------------------------------------------------------------------------
 */

Mark Otto's avatar
dist    
Mark Otto committed
19
var Util = function () {
Jacob Thornton's avatar
Jacob Thornton committed
20
21
22
23
24
25
  /**
   * ------------------------------------------------------------------------
   * Private TransitionEnd Helpers
   * ------------------------------------------------------------------------
   */
  var transition = false;
Chris Rebert's avatar
grunt    
Chris Rebert committed
26
  var MAX_UID = 1000000;
Jacob Thornton's avatar
Jacob Thornton committed
27
28
29
30
  var TransitionEndEvent = {
    WebkitTransition: 'webkitTransitionEnd',
    MozTransition: 'transitionend',
    OTransition: 'oTransitionEnd otransitionend',
Mark Otto's avatar
dist    
Mark Otto committed
31
    transition: 'transitionend' // shoutout AngusCroll (https://goo.gl/pxwQGp)
Jacob Thornton's avatar
Jacob Thornton committed
32

Mark Otto's avatar
dist    
Mark Otto committed
33
  };
Jacob Thornton's avatar
Jacob Thornton committed
34

Mark Otto's avatar
dist    
Mark Otto committed
35
36
  function toType(obj) {
    return {}.toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase();
Jacob Thornton's avatar
Jacob Thornton committed
37
38
39
40
41
42
43
44
  }

  function getSpecialTransitionEndEvent() {
    return {
      bindType: transition.end,
      delegateType: transition.end,
      handle: function handle(event) {
        if ($(event.target).is(this)) {
Mark Otto's avatar
Mark Otto committed
45
          return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params
Jacob Thornton's avatar
Jacob Thornton committed
46
        }
Mark Otto's avatar
dist    
Mark Otto committed
47

Mark Otto's avatar
dist    
Mark Otto committed
48
        return undefined; // eslint-disable-line no-undefined
Jacob Thornton's avatar
Jacob Thornton committed
49
50
51
52
53
54
55
56
57
58
59
      }
    };
  }

  function transitionEndTest() {
    if (window.QUnit) {
      return false;
    }

    var el = document.createElement('bootstrap');

Mark Otto's avatar
grunt    
Mark Otto committed
60
    for (var name in TransitionEndEvent) {
Mark Otto's avatar
dist    
Mark Otto committed
61
      if (typeof el.style[name] !== 'undefined') {
Mark Otto's avatar
grunt    
Mark Otto committed
62
63
64
        return {
          end: TransitionEndEvent[name]
        };
Jacob Thornton's avatar
Jacob Thornton committed
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
      }
    }

    return false;
  }

  function transitionEndEmulator(duration) {
    var _this = this;

    var called = false;
    $(this).one(Util.TRANSITION_END, function () {
      called = true;
    });
    setTimeout(function () {
      if (!called) {
        Util.triggerTransitionEnd(_this);
      }
    }, duration);
    return this;
  }

  function setTransitionEndSupport() {
    transition = transitionEndTest();
    $.fn.emulateTransitionEnd = transitionEndEmulator;

    if (Util.supportsTransitionEnd()) {
      $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();
    }
  }
  /**
   * --------------------------------------------------------------------------
   * Public Util Api
   * --------------------------------------------------------------------------
   */


Mark Otto's avatar
dist    
Mark Otto committed
101
  var Util = {
Jacob Thornton's avatar
Jacob Thornton committed
102
103
    TRANSITION_END: 'bsTransitionEnd',
    getUID: function getUID(prefix) {
Jacob Thornton's avatar
Jacob Thornton committed
104
      do {
Mark Otto's avatar
grunt    
Mark Otto committed
105
        // eslint-disable-next-line no-bitwise
Mark Otto's avatar
grunt    
Mark Otto committed
106
        prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here
Jacob Thornton's avatar
Jacob Thornton committed
107
      } while (document.getElementById(prefix));
Mark Otto's avatar
dist    
Mark Otto committed
108

Jacob Thornton's avatar
Jacob Thornton committed
109
110
111
112
      return prefix;
    },
    getSelectorFromElement: function getSelectorFromElement(element) {
      var selector = element.getAttribute('data-target');
Mark Otto's avatar
dist    
Mark Otto committed
113

Mark Otto's avatar
grunt    
Mark Otto committed
114
      if (!selector || selector === '#') {
Jacob Thornton's avatar
Jacob Thornton committed
115
116
117
        selector = element.getAttribute('href') || '';
      }

Mark Otto's avatar
grunt    
Mark Otto committed
118
      try {
Mark Otto's avatar
dist    
Mark Otto committed
119
        var $selector = $(document).find(selector);
Mark Otto's avatar
grunt    
Mark Otto committed
120
121
122
123
        return $selector.length > 0 ? selector : null;
      } catch (error) {
        return null;
      }
Jacob Thornton's avatar
Jacob Thornton committed
124
125
    },
    reflow: function reflow(element) {
Mark Otto's avatar
grunt    
Mark Otto committed
126
      return element.offsetHeight;
Jacob Thornton's avatar
Jacob Thornton committed
127
128
129
130
131
    },
    triggerTransitionEnd: function triggerTransitionEnd(element) {
      $(element).trigger(transition.end);
    },
    supportsTransitionEnd: function supportsTransitionEnd() {
Jacob Thornton's avatar
Jacob Thornton committed
132
      return Boolean(transition);
Jacob Thornton's avatar
Jacob Thornton committed
133
    },
Mark Otto's avatar
dist    
Mark Otto committed
134
135
136
    isElement: function isElement(obj) {
      return (obj[0] || obj).nodeType;
    },
Jacob Thornton's avatar
Jacob Thornton committed
137
138
    typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {
      for (var property in configTypes) {
Mark Otto's avatar
dist    
Mark Otto committed
139
        if (Object.prototype.hasOwnProperty.call(configTypes, property)) {
Jacob Thornton's avatar
Jacob Thornton committed
140
141
          var expectedTypes = configTypes[property];
          var value = config[property];
Mark Otto's avatar
dist    
Mark Otto committed
142
          var valueType = value && Util.isElement(value) ? 'element' : toType(value);
Jacob Thornton's avatar
Jacob Thornton committed
143

Jacob Thornton's avatar
Jacob Thornton committed
144
          if (!new RegExp(expectedTypes).test(valueType)) {
Mark Otto's avatar
dist    
Mark Otto committed
145
            throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\"."));
Jacob Thornton's avatar
Jacob Thornton committed
146
          }
Jacob Thornton's avatar
Jacob Thornton committed
147
148
149
150
151
152
        }
      }
    }
  };
  setTransitionEndSupport();
  return Util;
Mark Otto's avatar
dist    
Mark Otto committed
153
}($);
Jacob Thornton's avatar
Jacob Thornton committed
154

Mark Otto's avatar
dist    
Mark Otto committed
155
156
157
158
159
160
161
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);
Mark Otto's avatar
dist    
Mark Otto committed
162
  }
Mark Otto's avatar
dist    
Mark Otto committed
163
}
Mark Otto's avatar
dist    
Mark Otto committed
164

Mark Otto's avatar
dist    
Mark Otto committed
165
166
167
168
169
function _createClass(Constructor, protoProps, staticProps) {
  if (protoProps) _defineProperties(Constructor.prototype, protoProps);
  if (staticProps) _defineProperties(Constructor, staticProps);
  return Constructor;
}
Mark Otto's avatar
dist    
Mark Otto committed
170

Mark Otto's avatar
dist    
Mark Otto committed
171
var createClass = _createClass;
Mark Otto's avatar
dist    
Mark Otto committed
172

Mark Otto's avatar
dist    
Mark Otto committed
173
174
175
176
177
function _inheritsLoose(subClass, superClass) {
  subClass.prototype = Object.create(superClass.prototype);
  subClass.prototype.constructor = subClass;
  subClass.__proto__ = superClass;
}
Mark Otto's avatar
dist    
Mark Otto committed
178

Mark Otto's avatar
dist    
Mark Otto committed
179
var inheritsLoose = _inheritsLoose;
Mark Otto's avatar
dist    
Mark Otto committed
180

Jacob Thornton's avatar
Jacob Thornton committed
181
182
/**
 * --------------------------------------------------------------------------
Mark Otto's avatar
Mark Otto committed
183
 * Bootstrap (v4.0.0-beta): alert.js
Jacob Thornton's avatar
Jacob Thornton committed
184
185
186
187
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * --------------------------------------------------------------------------
 */

Mark Otto's avatar
dist    
Mark Otto committed
188
var Alert = function () {
Jacob Thornton's avatar
Jacob Thornton committed
189
190
191
192
193
194
  /**
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
   */
  var NAME = 'alert';
Mark Otto's avatar
Mark Otto committed
195
  var VERSION = '4.0.0-beta';
Jacob Thornton's avatar
Jacob Thornton committed
196
  var DATA_KEY = 'bs.alert';
Mark Otto's avatar
dist    
Mark Otto committed
197
  var EVENT_KEY = "." + DATA_KEY;
Jacob Thornton's avatar
Jacob Thornton committed
198
199
200
201
202
203
204
  var DATA_API_KEY = '.data-api';
  var JQUERY_NO_CONFLICT = $.fn[NAME];
  var TRANSITION_DURATION = 150;
  var Selector = {
    DISMISS: '[data-dismiss="alert"]'
  };
  var Event = {
Mark Otto's avatar
dist    
Mark Otto committed
205
206
207
    CLOSE: "close" + EVENT_KEY,
    CLOSED: "closed" + EVENT_KEY,
    CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
Jacob Thornton's avatar
Jacob Thornton committed
208
209
210
211
  };
  var ClassName = {
    ALERT: 'alert',
    FADE: 'fade',
Mark Otto's avatar
grunt    
Mark Otto committed
212
    SHOW: 'show'
Mark Otto's avatar
dist    
Mark Otto committed
213
214
215
216
217
    /**
     * ------------------------------------------------------------------------
     * Class Definition
     * ------------------------------------------------------------------------
     */
Jacob Thornton's avatar
Jacob Thornton committed
218

Mark Otto's avatar
dist    
Mark Otto committed
219
  };
Jacob Thornton's avatar
Jacob Thornton committed
220

Mark Otto's avatar
dist    
Mark Otto committed
221
222
223
224
  var Alert =
  /*#__PURE__*/
  function () {
    function Alert(element) {
Jacob Thornton's avatar
Jacob Thornton committed
225
      this._element = element;
Mark Otto's avatar
dist    
Mark Otto committed
226
    } // getters
Jacob Thornton's avatar
Jacob Thornton committed
227
228


Mark Otto's avatar
dist    
Mark Otto committed
229
    var _proto = Alert.prototype;
Jacob Thornton's avatar
Jacob Thornton committed
230

Mark Otto's avatar
dist    
Mark Otto committed
231
232
    // public
    _proto.close = function close(element) {
Mark Otto's avatar
grunt    
Mark Otto committed
233
      element = element || this._element;
Jacob Thornton's avatar
Jacob Thornton committed
234

Mark Otto's avatar
grunt    
Mark Otto committed
235
      var rootElement = this._getRootElement(element);
Mark Otto's avatar
dist    
Mark Otto committed
236

Mark Otto's avatar
grunt    
Mark Otto committed
237
238
239
240
241
      var customEvent = this._triggerCloseEvent(rootElement);

      if (customEvent.isDefaultPrevented()) {
        return;
      }
Jacob Thornton's avatar
Jacob Thornton committed
242

Mark Otto's avatar
grunt    
Mark Otto committed
243
244
      this._removeElement(rootElement);
    };
Jacob Thornton's avatar
Jacob Thornton committed
245

Mark Otto's avatar
dist    
Mark Otto committed
246
    _proto.dispose = function dispose() {
Mark Otto's avatar
grunt    
Mark Otto committed
247
248
      $.removeData(this._element, DATA_KEY);
      this._element = null;
Mark Otto's avatar
dist    
Mark Otto committed
249
    }; // private
Mark Otto's avatar
grunt    
Mark Otto committed
250

Jacob Thornton's avatar
Jacob Thornton committed
251

Mark Otto's avatar
dist    
Mark Otto committed
252
    _proto._getRootElement = function _getRootElement(element) {
Mark Otto's avatar
grunt    
Mark Otto committed
253
254
255
256
257
      var selector = Util.getSelectorFromElement(element);
      var parent = false;

      if (selector) {
        parent = $(selector)[0];
Jacob Thornton's avatar
Jacob Thornton committed
258
      }
Mark Otto's avatar
grunt    
Mark Otto committed
259
260

      if (!parent) {
Mark Otto's avatar
dist    
Mark Otto committed
261
        parent = $(element).closest("." + ClassName.ALERT)[0];
Jacob Thornton's avatar
Jacob Thornton committed
262
263
      }

Mark Otto's avatar
grunt    
Mark Otto committed
264
265
      return parent;
    };
Jacob Thornton's avatar
Jacob Thornton committed
266

Mark Otto's avatar
dist    
Mark Otto committed
267
    _proto._triggerCloseEvent = function _triggerCloseEvent(element) {
Mark Otto's avatar
grunt    
Mark Otto committed
268
269
270
271
      var closeEvent = $.Event(Event.CLOSE);
      $(element).trigger(closeEvent);
      return closeEvent;
    };
Jacob Thornton's avatar
Jacob Thornton committed
272

Mark Otto's avatar
dist    
Mark Otto committed
273
    _proto._removeElement = function _removeElement(element) {
Mark Otto's avatar
dist    
Mark Otto committed
274
      var _this = this;
Mark Otto's avatar
grunt    
Mark Otto committed
275

Mark Otto's avatar
grunt    
Mark Otto committed
276
      $(element).removeClass(ClassName.SHOW);
Jacob Thornton's avatar
Jacob Thornton committed
277

Mark Otto's avatar
grunt    
Mark Otto committed
278
279
      if (!Util.supportsTransitionEnd() || !$(element).hasClass(ClassName.FADE)) {
        this._destroyElement(element);
Mark Otto's avatar
dist    
Mark Otto committed
280

Mark Otto's avatar
grunt    
Mark Otto committed
281
        return;
Jacob Thornton's avatar
Jacob Thornton committed
282
      }
Jacob Thornton's avatar
Jacob Thornton committed
283

Mark Otto's avatar
grunt    
Mark Otto committed
284
      $(element).one(Util.TRANSITION_END, function (event) {
Mark Otto's avatar
dist    
Mark Otto committed
285
        return _this._destroyElement(element, event);
Mark Otto's avatar
grunt    
Mark Otto committed
286
      }).emulateTransitionEnd(TRANSITION_DURATION);
Mark Otto's avatar
grunt    
Mark Otto committed
287
    };
Jacob Thornton's avatar
Jacob Thornton committed
288

Mark Otto's avatar
dist    
Mark Otto committed
289
    _proto._destroyElement = function _destroyElement(element) {
Mark Otto's avatar
grunt    
Mark Otto committed
290
      $(element).detach().trigger(Event.CLOSED).remove();
Mark Otto's avatar
dist    
Mark Otto committed
291
    }; // static
Jacob Thornton's avatar
Jacob Thornton committed
292
293


Mark Otto's avatar
grunt    
Mark Otto committed
294
295
296
297
    Alert._jQueryInterface = function _jQueryInterface(config) {
      return this.each(function () {
        var $element = $(this);
        var data = $element.data(DATA_KEY);
Jacob Thornton's avatar
Jacob Thornton committed
298

Mark Otto's avatar
grunt    
Mark Otto committed
299
300
301
302
        if (!data) {
          data = new Alert(this);
          $element.data(DATA_KEY, data);
        }
Jacob Thornton's avatar
Jacob Thornton committed
303

Mark Otto's avatar
grunt    
Mark Otto committed
304
305
306
307
308
        if (config === 'close') {
          data[config](this);
        }
      });
    };
Jacob Thornton's avatar
Jacob Thornton committed
309

Mark Otto's avatar
grunt    
Mark Otto committed
310
311
312
313
314
    Alert._handleDismiss = function _handleDismiss(alertInstance) {
      return function (event) {
        if (event) {
          event.preventDefault();
        }
Jacob Thornton's avatar
Jacob Thornton committed
315

Mark Otto's avatar
grunt    
Mark Otto committed
316
317
318
319
        alertInstance.close(this);
      };
    };

Mark Otto's avatar
dist    
Mark Otto committed
320
    createClass(Alert, null, [{
Mark Otto's avatar
dist    
Mark Otto committed
321
      key: "VERSION",
Jacob Thornton's avatar
Jacob Thornton committed
322
323
324
325
326
      get: function get() {
        return VERSION;
      }
    }]);
    return Alert;
Mark Otto's avatar
grunt    
Mark Otto committed
327
328
329
330
331
332
  }();
  /**
   * ------------------------------------------------------------------------
   * Data Api implementation
   * ------------------------------------------------------------------------
   */
Jacob Thornton's avatar
Jacob Thornton committed
333
334


Mark Otto's avatar
dist    
Mark Otto committed
335
  $(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert()));
Jacob Thornton's avatar
Jacob Thornton committed
336
337
338
339
340
341
  /**
   * ------------------------------------------------------------------------
   * jQuery
   * ------------------------------------------------------------------------
   */

Mark Otto's avatar
Mark Otto committed
342
  $.fn[NAME] = Alert._jQueryInterface;
Jacob Thornton's avatar
Jacob Thornton committed
343
  $.fn[NAME].Constructor = Alert;
Mark Otto's avatar
dist    
Mark Otto committed
344

Jacob Thornton's avatar
Jacob Thornton committed
345
346
347
348
349
350
  $.fn[NAME].noConflict = function () {
    $.fn[NAME] = JQUERY_NO_CONFLICT;
    return Alert._jQueryInterface;
  };

  return Alert;
Mark Otto's avatar
dist    
Mark Otto committed
351
}($);
Jacob Thornton's avatar
Jacob Thornton committed
352
353
354

/**
 * --------------------------------------------------------------------------
Mark Otto's avatar
Mark Otto committed
355
 * Bootstrap (v4.0.0-beta): button.js
Jacob Thornton's avatar
Jacob Thornton committed
356
357
358
359
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * --------------------------------------------------------------------------
 */

Mark Otto's avatar
dist    
Mark Otto committed
360
var Button = function () {
Jacob Thornton's avatar
Jacob Thornton committed
361
362
363
364
365
366
  /**
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
   */
  var NAME = 'button';
Mark Otto's avatar
Mark Otto committed
367
  var VERSION = '4.0.0-beta';
Jacob Thornton's avatar
Jacob Thornton committed
368
  var DATA_KEY = 'bs.button';
Mark Otto's avatar
dist    
Mark Otto committed
369
  var EVENT_KEY = "." + DATA_KEY;
Jacob Thornton's avatar
Jacob Thornton committed
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
  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 = {
Mark Otto's avatar
dist    
Mark Otto committed
385
386
    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)
Mark Otto's avatar
dist    
Mark Otto committed
387
388
389
390
391
    /**
     * ------------------------------------------------------------------------
     * Class Definition
     * ------------------------------------------------------------------------
     */
Jacob Thornton's avatar
Jacob Thornton committed
392

Mark Otto's avatar
dist    
Mark Otto committed
393
  };
Jacob Thornton's avatar
Jacob Thornton committed
394

Mark Otto's avatar
dist    
Mark Otto committed
395
396
397
398
  var Button =
  /*#__PURE__*/
  function () {
    function Button(element) {
Jacob Thornton's avatar
Jacob Thornton committed
399
      this._element = element;
Mark Otto's avatar
dist    
Mark Otto committed
400
    } // getters
Jacob Thornton's avatar
Jacob Thornton committed
401
402


Mark Otto's avatar
dist    
Mark Otto committed
403
    var _proto = Button.prototype;
Jacob Thornton's avatar
Jacob Thornton committed
404

Mark Otto's avatar
dist    
Mark Otto committed
405
406
    // public
    _proto.toggle = function toggle() {
Mark Otto's avatar
grunt    
Mark Otto committed
407
      var triggerChangeEvent = true;
Mark Otto's avatar
grunt    
Mark Otto committed
408
      var addAriaPressed = true;
Mark Otto's avatar
grunt    
Mark Otto committed
409
      var rootElement = $(this._element).closest(Selector.DATA_TOGGLE)[0];
Jacob Thornton's avatar
Jacob Thornton committed
410

Mark Otto's avatar
grunt    
Mark Otto committed
411
412
      if (rootElement) {
        var input = $(this._element).find(Selector.INPUT)[0];
Jacob Thornton's avatar
Jacob Thornton committed
413

Mark Otto's avatar
grunt    
Mark Otto committed
414
415
416
417
418
419
        if (input) {
          if (input.type === 'radio') {
            if (input.checked && $(this._element).hasClass(ClassName.ACTIVE)) {
              triggerChangeEvent = false;
            } else {
              var activeElement = $(rootElement).find(Selector.ACTIVE)[0];
Jacob Thornton's avatar
Jacob Thornton committed
420

Mark Otto's avatar
grunt    
Mark Otto committed
421
422
              if (activeElement) {
                $(activeElement).removeClass(ClassName.ACTIVE);
Jacob Thornton's avatar
Jacob Thornton committed
423
424
              }
            }
Mark Otto's avatar
grunt    
Mark Otto committed
425
          }
Jacob Thornton's avatar
Jacob Thornton committed
426

Mark Otto's avatar
grunt    
Mark Otto committed
427
          if (triggerChangeEvent) {
Johann-S's avatar
build    
Johann-S committed
428
429
430
            if (input.hasAttribute('disabled') || rootElement.hasAttribute('disabled') || input.classList.contains('disabled') || rootElement.classList.contains('disabled')) {
              return;
            }
Mark Otto's avatar
dist    
Mark Otto committed
431

Mark Otto's avatar
grunt    
Mark Otto committed
432
            input.checked = !$(this._element).hasClass(ClassName.ACTIVE);
Mark Otto's avatar
grunt    
Mark Otto committed
433
            $(input).trigger('change');
Jacob Thornton's avatar
Jacob Thornton committed
434
435
          }

Mark Otto's avatar
grunt    
Mark Otto committed
436
          input.focus();
Mark Otto's avatar
grunt    
Mark Otto committed
437
          addAriaPressed = false;
Jacob Thornton's avatar
Jacob Thornton committed
438
439
        }
      }
Mark Otto's avatar
grunt    
Mark Otto committed
440

Mark Otto's avatar
grunt    
Mark Otto committed
441
442
443
      if (addAriaPressed) {
        this._element.setAttribute('aria-pressed', !$(this._element).hasClass(ClassName.ACTIVE));
      }
Mark Otto's avatar
grunt    
Mark Otto committed
444

Mark Otto's avatar
grunt    
Mark Otto committed
445
446
      if (triggerChangeEvent) {
        $(this._element).toggleClass(ClassName.ACTIVE);
Jacob Thornton's avatar
Jacob Thornton committed
447
      }
Mark Otto's avatar
grunt    
Mark Otto committed
448
    };
Jacob Thornton's avatar
Jacob Thornton committed
449

Mark Otto's avatar
dist    
Mark Otto committed
450
    _proto.dispose = function dispose() {
Mark Otto's avatar
grunt    
Mark Otto committed
451
452
      $.removeData(this._element, DATA_KEY);
      this._element = null;
Mark Otto's avatar
dist    
Mark Otto committed
453
    }; // static
Jacob Thornton's avatar
Jacob Thornton committed
454
455


Mark Otto's avatar
grunt    
Mark Otto committed
456
457
458
    Button._jQueryInterface = function _jQueryInterface(config) {
      return this.each(function () {
        var data = $(this).data(DATA_KEY);
Jacob Thornton's avatar
Jacob Thornton committed
459

Mark Otto's avatar
grunt    
Mark Otto committed
460
461
462
463
464
465
466
467
468
469
470
        if (!data) {
          data = new Button(this);
          $(this).data(DATA_KEY, data);
        }

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

Mark Otto's avatar
dist    
Mark Otto committed
471
    createClass(Button, null, [{
Mark Otto's avatar
dist    
Mark Otto committed
472
      key: "VERSION",
Jacob Thornton's avatar
Jacob Thornton committed
473
474
475
476
477
      get: function get() {
        return VERSION;
      }
    }]);
    return Button;
Mark Otto's avatar
grunt    
Mark Otto committed
478
479
480
481
482
483
  }();
  /**
   * ------------------------------------------------------------------------
   * Data Api implementation
   * ------------------------------------------------------------------------
   */
Jacob Thornton's avatar
Jacob Thornton committed
484

Mark Otto's avatar
dist    
Mark Otto committed
485

Jacob Thornton's avatar
Jacob Thornton committed
486
487
488
489
490
491
492
493
494
495
496
497
  $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) {
    event.preventDefault();
    var button = event.target;

    if (!$(button).hasClass(ClassName.BUTTON)) {
      button = $(button).closest(Selector.BUTTON);
    }

    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
498
  });
Jacob Thornton's avatar
Jacob Thornton committed
499
500
501
502
503
504
  /**
   * ------------------------------------------------------------------------
   * jQuery
   * ------------------------------------------------------------------------
   */

Mark Otto's avatar
Mark Otto committed
505
  $.fn[NAME] = Button._jQueryInterface;
Jacob Thornton's avatar
Jacob Thornton committed
506
  $.fn[NAME].Constructor = Button;
Mark Otto's avatar
dist    
Mark Otto committed
507

Jacob Thornton's avatar
Jacob Thornton committed
508
509
510
511
512
513
  $.fn[NAME].noConflict = function () {
    $.fn[NAME] = JQUERY_NO_CONFLICT;
    return Button._jQueryInterface;
  };

  return Button;
Mark Otto's avatar
dist    
Mark Otto committed
514
}($);
Jacob Thornton's avatar
Jacob Thornton committed
515
516
517

/**
 * --------------------------------------------------------------------------
Mark Otto's avatar
Mark Otto committed
518
 * Bootstrap (v4.0.0-beta): carousel.js
Jacob Thornton's avatar
Jacob Thornton committed
519
520
521
522
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * --------------------------------------------------------------------------
 */

Mark Otto's avatar
dist    
Mark Otto committed
523
var Carousel = function () {
Jacob Thornton's avatar
Jacob Thornton committed
524
525
526
527
528
529
  /**
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
   */
  var NAME = 'carousel';
Mark Otto's avatar
Mark Otto committed
530
  var VERSION = '4.0.0-beta';
Jacob Thornton's avatar
Jacob Thornton committed
531
  var DATA_KEY = 'bs.carousel';
Mark Otto's avatar
dist    
Mark Otto committed
532
  var EVENT_KEY = "." + DATA_KEY;
Jacob Thornton's avatar
Jacob Thornton committed
533
534
535
  var DATA_API_KEY = '.data-api';
  var JQUERY_NO_CONFLICT = $.fn[NAME];
  var TRANSITION_DURATION = 600;
Chris Rebert's avatar
grunt    
Chris Rebert committed
536
  var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key
Mark Otto's avatar
dist    
Mark Otto committed
537

Chris Rebert's avatar
grunt    
Chris Rebert committed
538
  var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key
Mark Otto's avatar
dist    
Mark Otto committed
539

Mark Otto's avatar
build    
Mark Otto committed
540
  var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch
Jacob Thornton's avatar
Jacob Thornton committed
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557

  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
558
559
560
    PREV: 'prev',
    LEFT: 'left',
    RIGHT: 'right'
Jacob Thornton's avatar
Jacob Thornton committed
561
562
  };
  var Event = {
Mark Otto's avatar
dist    
Mark Otto committed
563
564
565
566
567
568
569
570
    SLIDE: "slide" + EVENT_KEY,
    SLID: "slid" + EVENT_KEY,
    KEYDOWN: "keydown" + EVENT_KEY,
    MOUSEENTER: "mouseenter" + EVENT_KEY,
    MOUSELEAVE: "mouseleave" + EVENT_KEY,
    TOUCHEND: "touchend" + EVENT_KEY,
    LOAD_DATA_API: "load" + EVENT_KEY + DATA_API_KEY,
    CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
Jacob Thornton's avatar
Jacob Thornton committed
571
572
573
574
575
  };
  var ClassName = {
    CAROUSEL: 'carousel',
    ACTIVE: 'active',
    SLIDE: 'slide',
Mark Otto's avatar
grunt    
Mark Otto committed
576
577
578
579
    RIGHT: 'carousel-item-right',
    LEFT: 'carousel-item-left',
    NEXT: 'carousel-item-next',
    PREV: 'carousel-item-prev',
Jacob Thornton's avatar
Jacob Thornton committed
580
581
582
583
584
585
    ITEM: 'carousel-item'
  };
  var Selector = {
    ACTIVE: '.active',
    ACTIVE_ITEM: '.active.carousel-item',
    ITEM: '.carousel-item',
Mark Otto's avatar
grunt    
Mark Otto committed
586
    NEXT_PREV: '.carousel-item-next, .carousel-item-prev',
Jacob Thornton's avatar
Jacob Thornton committed
587
588
589
    INDICATORS: '.carousel-indicators',
    DATA_SLIDE: '[data-slide], [data-slide-to]',
    DATA_RIDE: '[data-ride="carousel"]'
Mark Otto's avatar
dist    
Mark Otto committed
590
591
592
593
594
    /**
     * ------------------------------------------------------------------------
     * Class Definition
     * ------------------------------------------------------------------------
     */
Jacob Thornton's avatar
Jacob Thornton committed
595

Mark Otto's avatar
dist    
Mark Otto committed
596
  };
Jacob Thornton's avatar
Jacob Thornton committed
597

Mark Otto's avatar
dist    
Mark Otto committed
598
599
600
601
  var Carousel =
  /*#__PURE__*/
  function () {
    function Carousel(element, config) {
Jacob Thornton's avatar
Jacob Thornton committed
602
603
604
605
606
      this._items = null;
      this._interval = null;
      this._activeElement = null;
      this._isPaused = false;
      this._isSliding = false;
Mark Otto's avatar
build    
Mark Otto committed
607
      this.touchTimeout = null;
Jacob Thornton's avatar
Jacob Thornton committed
608
609
610
611
612
      this._config = this._getConfig(config);
      this._element = $(element)[0];
      this._indicatorsElement = $(this._element).find(Selector.INDICATORS)[0];

      this._addEventListeners();
Mark Otto's avatar
dist    
Mark Otto committed
613
    } // getters
Jacob Thornton's avatar
Jacob Thornton committed
614
615


Mark Otto's avatar
dist    
Mark Otto committed
616
    var _proto = Carousel.prototype;
Jacob Thornton's avatar
Jacob Thornton committed
617

Mark Otto's avatar
dist    
Mark Otto committed
618
619
    // public
    _proto.next = function next() {
Mark Otto's avatar
grunt    
Mark Otto committed
620
621
      if (!this._isSliding) {
        this._slide(Direction.NEXT);
Mark Otto's avatar
grunt    
Mark Otto committed
622
623
      }
    };
Jacob Thornton's avatar
Jacob Thornton committed
624

Mark Otto's avatar
dist    
Mark Otto committed
625
    _proto.nextWhenVisible = function nextWhenVisible() {
Mark Otto's avatar
grunt    
Mark Otto committed
626
      // Don't call next when the page isn't visible
Mark Otto's avatar
dist    
Mark Otto committed
627
628
      // or the carousel or its parent isn't visible
      if (!document.hidden && $(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden') {
Mark Otto's avatar
grunt    
Mark Otto committed
629
        this.next();
Jacob Thornton's avatar
Jacob Thornton committed
630
      }
Mark Otto's avatar
grunt    
Mark Otto committed
631
632
    };

Mark Otto's avatar
dist    
Mark Otto committed
633
    _proto.prev = function prev() {
Mark Otto's avatar
grunt    
Mark Otto committed
634
635
      if (!this._isSliding) {
        this._slide(Direction.PREV);
XhmikosR's avatar
XhmikosR committed
636
      }
Mark Otto's avatar
grunt    
Mark Otto committed
637
638
    };

Mark Otto's avatar
dist    
Mark Otto committed
639
    _proto.pause = function pause(event) {
Mark Otto's avatar
grunt    
Mark Otto committed
640
641
      if (!event) {
        this._isPaused = true;
Jacob Thornton's avatar
Jacob Thornton committed
642
643
      }

Mark Otto's avatar
grunt    
Mark Otto committed
644
645
646
647
648
649
650
651
652
      if ($(this._element).find(Selector.NEXT_PREV)[0] && Util.supportsTransitionEnd()) {
        Util.triggerTransitionEnd(this._element);
        this.cycle(true);
      }

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

Mark Otto's avatar
dist    
Mark Otto committed
653
    _proto.cycle = function cycle(event) {
Mark Otto's avatar
grunt    
Mark Otto committed
654
655
656
      if (!event) {
        this._isPaused = false;
      }
Jacob Thornton's avatar
Jacob Thornton committed
657

Mark Otto's avatar
grunt    
Mark Otto committed
658
      if (this._interval) {
Jacob Thornton's avatar
Jacob Thornton committed
659
660
661
662
        clearInterval(this._interval);
        this._interval = null;
      }

Mark Otto's avatar
grunt    
Mark Otto committed
663
      if (this._config.interval && !this._isPaused) {
Mark Otto's avatar
grunt    
Mark Otto committed
664
        this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);
Mark Otto's avatar
grunt    
Mark Otto committed
665
666
      }
    };
Jacob Thornton's avatar
Jacob Thornton committed
667

Mark Otto's avatar
dist    
Mark Otto committed
668
    _proto.to = function to(index) {
Mark Otto's avatar
dist    
Mark Otto committed
669
      var _this = this;
Mark Otto's avatar
grunt    
Mark Otto committed
670
671
672
673
674
675
676

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

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

      if (index > this._items.length - 1 || index < 0) {
        return;
Jacob Thornton's avatar
Jacob Thornton committed
677
678
      }

Mark Otto's avatar
grunt    
Mark Otto committed
679
680
      if (this._isSliding) {
        $(this._element).one(Event.SLID, function () {
Mark Otto's avatar
dist    
Mark Otto committed
681
          return _this.to(index);
Mark Otto's avatar
grunt    
Mark Otto committed
682
683
684
        });
        return;
      }
Jacob Thornton's avatar
Jacob Thornton committed
685

Mark Otto's avatar
grunt    
Mark Otto committed
686
687
688
689
690
      if (activeIndex === index) {
        this.pause();
        this.cycle();
        return;
      }
Jacob Thornton's avatar
Jacob Thornton committed
691

Mark Otto's avatar
grunt    
Mark Otto committed
692
      var direction = index > activeIndex ? Direction.NEXT : Direction.PREV;
Jacob Thornton's avatar
Jacob Thornton committed
693

Mark Otto's avatar
grunt    
Mark Otto committed
694
695
      this._slide(direction, this._items[index]);
    };
Jacob Thornton's avatar
Jacob Thornton committed
696

Mark Otto's avatar
dist    
Mark Otto committed
697
    _proto.dispose = function dispose() {
Mark Otto's avatar
grunt    
Mark Otto committed
698
699
700
701
702
703
704
705
706
707
      $(this._element).off(EVENT_KEY);
      $.removeData(this._element, DATA_KEY);
      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
dist    
Mark Otto committed
708
    }; // private
Jacob Thornton's avatar
Jacob Thornton committed
709
710


Mark Otto's avatar
dist    
Mark Otto committed
711
    _proto._getConfig = function _getConfig(config) {
Mark Otto's avatar
grunt    
Mark Otto committed
712
713
714
715
      config = $.extend({}, Default, config);
      Util.typeCheckConfig(NAME, config, DefaultType);
      return config;
    };
Jacob Thornton's avatar
Jacob Thornton committed
716

Mark Otto's avatar
dist    
Mark Otto committed
717
    _proto._addEventListeners = function _addEventListeners() {
Mark Otto's avatar
dist    
Mark Otto committed
718
      var _this2 = this;
Mark Otto's avatar
grunt    
Mark Otto committed
719

Mark Otto's avatar
grunt    
Mark Otto committed
720
      if (this._config.keyboard) {
Mark Otto's avatar
grunt    
Mark Otto committed
721
        $(this._element).on(Event.KEYDOWN, function (event) {
Mark Otto's avatar
dist    
Mark Otto committed
722
          return _this2._keydown(event);
Mark Otto's avatar
grunt    
Mark Otto committed
723
        });
Jacob Thornton's avatar
Jacob Thornton committed
724
725
      }

Mark Otto's avatar
build    
Mark Otto committed
726
      if (this._config.pause === 'hover') {
Mark Otto's avatar
grunt    
Mark Otto committed
727
        $(this._element).on(Event.MOUSEENTER, function (event) {
Mark Otto's avatar
dist    
Mark Otto committed
728
          return _this2.pause(event);
Mark Otto's avatar
grunt    
Mark Otto committed
729
        }).on(Event.MOUSELEAVE, function (event) {
Mark Otto's avatar
dist    
Mark Otto committed
730
          return _this2.cycle(event);
Mark Otto's avatar
grunt    
Mark Otto committed
731
        });
Mark Otto's avatar
dist    
Mark Otto committed
732

Mark Otto's avatar
build    
Mark Otto committed
733
734
735
736
737
738
739
740
741
        if ('ontouchstart' in document.documentElement) {
          // if it's a touch-enabled device, mouseenter/leave are fired as
          // part of the mouse compatibility events on first tap - the carousel
          // would stop cycling until user tapped out of it;
          // here, we listen for touchend, explicitly pause the carousel
          // (as if it's the second time we tap on it, mouseenter compat event
          // is NOT fired) and after a timeout (to allow for mouse compatibility
          // events to fire) we explicitly restart cycling
          $(this._element).on(Event.TOUCHEND, function () {
Mark Otto's avatar
dist    
Mark Otto committed
742
            _this2.pause();
Mark Otto's avatar
dist    
Mark Otto committed
743

Mark Otto's avatar
dist    
Mark Otto committed
744
745
            if (_this2.touchTimeout) {
              clearTimeout(_this2.touchTimeout);
Mark Otto's avatar
build    
Mark Otto committed
746
            }
Mark Otto's avatar
dist    
Mark Otto committed
747

Mark Otto's avatar
dist    
Mark Otto committed
748
749
750
            _this2.touchTimeout = setTimeout(function (event) {
              return _this2.cycle(event);
            }, TOUCHEVENT_COMPAT_WAIT + _this2._config.interval);
Mark Otto's avatar
build    
Mark Otto committed
751
752
          });
        }
Jacob Thornton's avatar
Jacob Thornton committed
753
      }
Mark Otto's avatar
grunt    
Mark Otto committed
754
    };
Jacob Thornton's avatar
Jacob Thornton committed
755

Mark Otto's avatar
dist    
Mark Otto committed
756
    _proto._keydown = function _keydown(event) {
Mark Otto's avatar
grunt    
Mark Otto committed
757
758
      if (/input|textarea/i.test(event.target.tagName)) {
        return;
Jacob Thornton's avatar
Jacob Thornton committed
759
      }
Mark Otto's avatar
grunt    
Mark Otto committed
760
761
762

      switch (event.which) {
        case ARROW_LEFT_KEYCODE:
Mark Otto's avatar
grunt    
Mark Otto committed
763
          event.preventDefault();
Mark Otto's avatar
grunt    
Mark Otto committed
764
765
          this.prev();
          break;
Mark Otto's avatar
dist    
Mark Otto committed
766

Mark Otto's avatar
grunt    
Mark Otto committed
767
        case ARROW_RIGHT_KEYCODE:
Mark Otto's avatar
grunt    
Mark Otto committed
768
          event.preventDefault();
Mark Otto's avatar
grunt    
Mark Otto committed
769
770
          this.next();
          break;
Mark Otto's avatar
dist    
Mark Otto committed
771

Mark Otto's avatar
grunt    
Mark Otto committed
772
773
        default:
          return;
Jacob Thornton's avatar
Jacob Thornton committed
774
      }
Mark Otto's avatar
grunt    
Mark Otto committed
775
    };
Jacob Thornton's avatar
Jacob Thornton committed
776

Mark Otto's avatar
dist    
Mark Otto committed
777
    _proto._getItemIndex = function _getItemIndex(element) {
Mark Otto's avatar
grunt    
Mark Otto committed
778
779
780
      this._items = $.makeArray($(element).parent().find(Selector.ITEM));
      return this._items.indexOf(element);
    };
Jacob Thornton's avatar
Jacob Thornton committed
781

Mark Otto's avatar
dist    
Mark Otto committed
782
    _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {
Mark Otto's avatar
grunt    
Mark Otto committed
783
      var isNextDirection = direction === Direction.NEXT;
Mark Otto's avatar
grunt    
Mark Otto committed
784
      var isPrevDirection = direction === Direction.PREV;
Mark Otto's avatar
dist    
Mark Otto committed
785

Mark Otto's avatar
grunt    
Mark Otto committed
786
      var activeIndex = this._getItemIndex(activeElement);
Mark Otto's avatar
dist    
Mark Otto committed
787

Mark Otto's avatar
grunt    
Mark Otto committed
788
789
      var lastItemIndex = this._items.length - 1;
      var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;
Jacob Thornton's avatar
Jacob Thornton committed
790

Mark Otto's avatar
grunt    
Mark Otto committed
791
792
      if (isGoingToWrap && !this._config.wrap) {
        return activeElement;
Jacob Thornton's avatar
Jacob Thornton committed
793
794
      }

Mark Otto's avatar
grunt    
Mark Otto committed
795
      var delta = direction === Direction.PREV ? -1 : 1;
Mark Otto's avatar
grunt    
Mark Otto committed
796
797
798
      var itemIndex = (activeIndex + delta) % this._items.length;
      return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];
    };
Jacob Thornton's avatar
Jacob Thornton committed
799

Mark Otto's avatar
dist    
Mark Otto committed
800
    _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {
Mark Otto's avatar
grunt    
Mark Otto committed
801
      var targetIndex = this._getItemIndex(relatedTarget);
Mark Otto's avatar
dist    
Mark Otto committed
802

Mark Otto's avatar
grunt    
Mark Otto committed
803
      var fromIndex = this._getItemIndex($(this._element).find(Selector.ACTIVE_ITEM)[0]);
Mark Otto's avatar
dist    
Mark Otto committed
804

Mark Otto's avatar
grunt    
Mark Otto committed
805
806
      var slideEvent = $.Event(Event.SLIDE, {
        relatedTarget: relatedTarget,
Mark Otto's avatar
grunt    
Mark Otto committed
807
808
809
        direction: eventDirectionName,
        from: fromIndex,
        to: targetIndex
Mark Otto's avatar
grunt    
Mark Otto committed
810
811
812
813
      });
      $(this._element).trigger(slideEvent);
      return slideEvent;
    };
Jacob Thornton's avatar
Jacob Thornton committed
814

Mark Otto's avatar
dist    
Mark Otto committed
815
    _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {
Mark Otto's avatar
grunt    
Mark Otto committed
816
817
      if (this._indicatorsElement) {
        $(this._indicatorsElement).find(Selector.ACTIVE).removeClass(ClassName.ACTIVE);
Jacob Thornton's avatar
Jacob Thornton committed
818

Mark Otto's avatar
grunt    
Mark Otto committed
819
        var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];
Jacob Thornton's avatar
Jacob Thornton committed
820

Mark Otto's avatar
grunt    
Mark Otto committed
821
822
        if (nextIndicator) {
          $(nextIndicator).addClass(ClassName.ACTIVE);
Jacob Thornton's avatar
Jacob Thornton committed
823
        }
Mark Otto's avatar
grunt    
Mark Otto committed
824
825
      }
    };
Jacob Thornton's avatar
Jacob Thornton committed
826

Mark Otto's avatar
dist    
Mark Otto committed
827
    _proto._slide = function _slide(direction, element) {
Mark Otto's avatar
dist    
Mark Otto committed
828
      var _this3 = this;
Jacob Thornton's avatar
Jacob Thornton committed
829

Mark Otto's avatar
grunt    
Mark Otto committed
830
      var activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0];
Mark Otto's avatar
dist    
Mark Otto committed
831

Mark Otto's avatar
grunt    
Mark Otto committed
832
      var activeElementIndex = this._getItemIndex(activeElement);
Mark Otto's avatar
dist    
Mark Otto committed
833

Mark Otto's avatar
grunt    
Mark Otto committed
834
      var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);
Mark Otto's avatar
dist    
Mark Otto committed
835

Mark Otto's avatar
grunt    
Mark Otto committed
836
      var nextElementIndex = this._getItemIndex(nextElement);
Jacob Thornton's avatar
Jacob Thornton committed
837

Mark Otto's avatar
dist    
Mark Otto committed
838
839
840
841
      var isCycling = Boolean(this._interval);
      var directionalClassName;
      var orderClassName;
      var eventDirectionName;
Mark Otto's avatar
grunt    
Mark Otto committed
842
843
844
845
846
847
848
849
850
851

      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
852
853
854
855
856

      if (nextElement && $(nextElement).hasClass(ClassName.ACTIVE)) {
        this._isSliding = false;
        return;
      }
Jacob Thornton's avatar
Jacob Thornton committed
857

Mark Otto's avatar
grunt    
Mark Otto committed
858
      var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);
Mark Otto's avatar
dist    
Mark Otto committed
859

Mark Otto's avatar
grunt    
Mark Otto committed
860
861
862
      if (slideEvent.isDefaultPrevented()) {
        return;
      }
Jacob Thornton's avatar
Jacob Thornton committed
863

Mark Otto's avatar
grunt    
Mark Otto committed
864
865
866
867
      if (!activeElement || !nextElement) {
        // some weirdness is happening, so we bail
        return;
      }
Jacob Thornton's avatar
Jacob Thornton committed
868

Mark Otto's avatar
grunt    
Mark Otto committed
869
870
871
872
873
      this._isSliding = true;

      if (isCycling) {
        this.pause();
      }
Jacob Thornton's avatar
Jacob Thornton committed
874

Mark Otto's avatar
grunt    
Mark Otto committed
875
      this._setActiveIndicatorElement(nextElement);
Jacob Thornton's avatar
Jacob Thornton committed
876

Mark Otto's avatar
grunt    
Mark Otto committed
877
878
      var slidEvent = $.Event(Event.SLID, {
        relatedTarget: nextElement,
Mark Otto's avatar
grunt    
Mark Otto committed
879
880
881
        direction: eventDirectionName,
        from: activeElementIndex,
        to: nextElementIndex
Mark Otto's avatar
grunt    
Mark Otto committed
882
      });
Jacob Thornton's avatar
Jacob Thornton committed
883

Mark Otto's avatar
grunt    
Mark Otto committed
884
      if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.SLIDE)) {
Mark Otto's avatar
grunt    
Mark Otto committed
885
        $(nextElement).addClass(orderClassName);
Mark Otto's avatar
grunt    
Mark Otto committed
886
887
888
889
        Util.reflow(nextElement);
        $(activeElement).addClass(directionalClassName);
        $(nextElement).addClass(directionalClassName);
        $(activeElement).one(Util.TRANSITION_END, function () {
Mark Otto's avatar
dist    
Mark Otto committed
890
891
          $(nextElement).removeClass(directionalClassName + " " + orderClassName).addClass(ClassName.ACTIVE);
          $(activeElement).removeClass(ClassName.ACTIVE + " " + orderClassName + " " + directionalClassName);
Mark Otto's avatar
dist    
Mark Otto committed
892
          _this3._isSliding = false;
Mark Otto's avatar
grunt    
Mark Otto committed
893
          setTimeout(function () {
Mark Otto's avatar
dist    
Mark Otto committed
894
            return $(_this3._element).trigger(slidEvent);
Mark Otto's avatar
grunt    
Mark Otto committed
895
896
897
898
899
900
901
          }, 0);
        }).emulateTransitionEnd(TRANSITION_DURATION);
      } else {
        $(activeElement).removeClass(ClassName.ACTIVE);
        $(nextElement).addClass(ClassName.ACTIVE);
        this._isSliding = false;
        $(this._element).trigger(slidEvent);
Jacob Thornton's avatar
Jacob Thornton committed
902
903
      }

Mark Otto's avatar
grunt    
Mark Otto committed
904
905
906
      if (isCycling) {
        this.cycle();
      }
Mark Otto's avatar
dist    
Mark Otto committed
907
    }; // static
Jacob Thornton's avatar
Jacob Thornton committed
908
909


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

Mark Otto's avatar
grunt    
Mark Otto committed
914
        var _config = $.extend({}, Default, $(this).data());
Jacob Thornton's avatar
Jacob Thornton committed
915

Mark Otto's avatar
dist    
Mark Otto committed
916
        if (typeof config === 'object') {
Mark Otto's avatar
grunt    
Mark Otto committed
917
918
          $.extend(_config, config);
        }
Jacob Thornton's avatar
Jacob Thornton committed
919

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

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

Mark Otto's avatar
grunt    
Mark Otto committed
927
928
929
        if (typeof config === 'number') {
          data.to(config);
        } else if (typeof action === 'string') {
Mark Otto's avatar
dist    
Mark Otto committed
930
          if (typeof data[action] === 'undefined') {
Mark Otto's avatar
dist    
Mark Otto committed
931
            throw new Error("No method named \"" + action + "\"");
Mark Otto's avatar
grunt    
Mark Otto committed
932
          }
Mark Otto's avatar
dist    
Mark Otto committed
933

Mark Otto's avatar
grunt    
Mark Otto committed
934
935
936
937
          data[action]();
        } else if (_config.interval) {
          data.pause();
          data.cycle();
Jacob Thornton's avatar
Jacob Thornton committed
938
        }
Mark Otto's avatar
grunt    
Mark Otto committed
939
940
      });
    };
Jacob Thornton's avatar
Jacob Thornton committed
941

Mark Otto's avatar
grunt    
Mark Otto committed
942
943
    Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {
      var selector = Util.getSelectorFromElement(this);
Jacob Thornton's avatar
Jacob Thornton committed
944

Mark Otto's avatar
grunt    
Mark Otto committed
945
946
947
      if (!selector) {
        return;
      }
Jacob Thornton's avatar
Jacob Thornton committed
948

Mark Otto's avatar
grunt    
Mark Otto committed
949
      var target = $(selector)[0];
Jacob Thornton's avatar
Jacob Thornton committed
950

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

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

Mark Otto's avatar
grunt    
Mark Otto committed
958
959
960
      if (slideIndex) {
        config.interval = false;
      }
Jacob Thornton's avatar
Jacob Thornton committed
961

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

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

      event.preventDefault();
    };

Mark Otto's avatar
dist    
Mark Otto committed
971
    createClass(Carousel, null, [{
Mark Otto's avatar
dist    
Mark Otto committed
972
      key: "VERSION",
Jacob Thornton's avatar
Jacob Thornton committed
973
974
975
976
      get: function get() {
        return VERSION;
      }
    }, {
Mark Otto's avatar
dist    
Mark Otto committed
977
      key: "Default",
Jacob Thornton's avatar
Jacob Thornton committed
978
979
980
981
982
      get: function get() {
        return Default;
      }
    }]);
    return Carousel;
Mark Otto's avatar
grunt    
Mark Otto committed
983
984
985
986
987
988
  }();
  /**
   * ------------------------------------------------------------------------
   * Data Api implementation
   * ------------------------------------------------------------------------
   */
Jacob Thornton's avatar
Jacob Thornton committed
989
990


Mark Otto's avatar
dist    
Mark Otto committed
991
  $(document).on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler);
Jacob Thornton's avatar
Jacob Thornton committed
992
993
994
  $(window).on(Event.LOAD_DATA_API, function () {
    $(Selector.DATA_RIDE).each(function () {
      var $carousel = $(this);
Mark Otto's avatar
dist    
Mark Otto committed
995

Jacob Thornton's avatar
Jacob Thornton committed
996
997
      Carousel._jQueryInterface.call($carousel, $carousel.data());
    });
Mark Otto's avatar
Mark Otto committed
998
  });
Jacob Thornton's avatar
Jacob Thornton committed
999
1000
  /**
   * ------------------------------------------------------------------------
For faster browsing, not all history is shown. View entire blame