bootstrap.js 87.3 KB
Newer Older
1
/*!
Mark Otto's avatar
grunt    
Mark Otto committed
2
 * Bootstrap v4.0.0-alpha (http://getbootstrap.com)
Mark Otto's avatar
Mark Otto committed
3
 * Copyright 2011-2015 Twitter, Inc.
Mark Otto's avatar
Mark Otto committed
4
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
Chris Rebert's avatar
Chris Rebert committed
5
 */
6

Heinrich Fenkart's avatar
grunt    
Heinrich Fenkart committed
7
8
9
10
11
12
13
14
15
16
if (typeof jQuery === 'undefined') {
  throw new Error('Bootstrap\'s JavaScript requires jQuery')
}

+function ($) {
  var version = $.fn.jquery.split(' ')[0].split('.')
  if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1)) {
    throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher')
  }
}(jQuery);
17

18

fat's avatar
fat committed
19
+function ($) {
20

21
'use strict';
22

23
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; }; })();
24

25
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) subClass.__proto__ = superClass; }
fat's avatar
fat committed
26

27
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
fat's avatar
fat committed
28

29
30
31
32
33
34
/**
 * --------------------------------------------------------------------------
 * Bootstrap (v4.0.0): util.js
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * --------------------------------------------------------------------------
 */
35

36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
var Util = (function ($) {

  /**
   * ------------------------------------------------------------------------
   * Private TransitionEnd Helpers
   * ------------------------------------------------------------------------
   */

  var transition = false;

  var TransitionEndEvent = {
    WebkitTransition: 'webkitTransitionEnd',
    MozTransition: 'transitionend',
    OTransition: 'oTransitionEnd otransitionend',
    transition: 'transitionend'
  };

  function getSpecialTransitionEndEvent() {
    return {
      bindType: transition.end,
      delegateType: transition.end,
      handle: function handle(event) {
        if ($(event.target).is(this)) {
          return event.handleObj.handler.apply(this, arguments);
        }
      }
    };
fat's avatar
fat committed
63
  }
64

65
66
67
68
  function transitionEndTest() {
    if (window.QUnit) {
      return false;
    }
69

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

72
73
74
    for (var name in TransitionEndEvent) {
      if (el.style[name] !== undefined) {
        return { end: TransitionEndEvent[name] };
fat's avatar
fat committed
75
      }
fat's avatar
fat committed
76
77
    }

78
79
    return false;
  }
fat's avatar
fat committed
80

81
82
  function transitionEndEmulator(duration) {
    var _this = this;
fat's avatar
fat committed
83

84
    var called = false;
fat's avatar
fat committed
85

86
87
88
    $(this).one(Util.TRANSITION_END, function () {
      called = true;
    });
fat's avatar
fat committed
89

90
91
92
93
94
    setTimeout(function () {
      if (!called) {
        Util.triggerTransitionEnd(_this);
      }
    }, duration);
fat's avatar
fat committed
95

96
    return this;
fat's avatar
fat committed
97
  }
fat's avatar
fat committed
98

99
100
  function setTransitionEndSupport() {
    transition = transitionEndTest();
fat's avatar
fat committed
101

102
    $.fn.emulateTransitionEnd = transitionEndEmulator;
fat's avatar
fat committed
103

104
105
    if (Util.supportsTransitionEnd()) {
      $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();
fat's avatar
fat committed
106
    }
107
  }
fat's avatar
fat committed
108

109
110
111
112
113
  /**
   * --------------------------------------------------------------------------
   * Public Util Api
   * --------------------------------------------------------------------------
   */
fat's avatar
fat committed
114

115
  var Util = {
fat's avatar
fat committed
116

117
    TRANSITION_END: 'bsTransitionEnd',
fat's avatar
fat committed
118

119
120
121
122
    getUID: function getUID(prefix) {
      do prefix += ~ ~(Math.random() * 1000000); while (document.getElementById(prefix));
      return prefix;
    },
fat's avatar
fat committed
123

124
125
    getSelectorFromElement: function getSelectorFromElement(element) {
      var selector = element.getAttribute('data-target');
fat's avatar
fat committed
126

127
128
129
130
      if (!selector) {
        selector = element.getAttribute('href') || '';
        selector = /^#[a-z]/i.test(selector) ? selector : null;
      }
fat's avatar
fat committed
131

132
133
      return selector;
    },
fat's avatar
fat committed
134

135
136
137
    reflow: function reflow(element) {
      new Function('bs', 'return bs')(element.offsetHeight);
    },
fat's avatar
fat committed
138

139
140
141
    triggerTransitionEnd: function triggerTransitionEnd(element) {
      $(element).trigger(transition.end);
    },
fat's avatar
fat committed
142

143
144
145
    supportsTransitionEnd: function supportsTransitionEnd() {
      return !!transition;
    }
fat's avatar
fat committed
146

147
  };
fat's avatar
fat committed
148

149
  setTransitionEndSupport();
fat's avatar
fat committed
150

151
152
  return Util;
})(jQuery);
fat's avatar
fat committed
153

154
155
156
157
158
159
/**
 * --------------------------------------------------------------------------
 * Bootstrap (v4.0.0): alert.js
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * --------------------------------------------------------------------------
 */
fat's avatar
fat committed
160

161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
var Alert = (function ($) {

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

  var NAME = 'alert';
  var VERSION = '4.0.0';
  var DATA_KEY = 'bs.alert';
  var JQUERY_NO_CONFLICT = $.fn[NAME];
  var TRANSITION_DURATION = 150;

  var Selector = {
    DISMISS: '[data-dismiss="alert"]'
  };

  var Event = {
    CLOSE: 'close.bs.alert',
    CLOSED: 'closed.bs.alert',
    CLICK: 'click.bs.alert.data-api'
  };

  var ClassName = {
    ALERT: 'alert',
    FADE: 'fade',
    IN: 'in'
  };

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

  var Alert = (function () {
    function Alert(element) {
      _classCallCheck(this, Alert);

      this._element = element;
    }
fat's avatar
fat committed
203

204
205
    _createClass(Alert, [{
      key: 'close',
Mark Otto's avatar
grunt    
Mark Otto committed
206

207
      // public
208

209
210
      value: function close(element) {
        element = element || this._element;
211

212
213
        var rootElement = this._getRootElement(element);
        var customEvent = this._triggerCloseEvent(rootElement);
fat's avatar
fat committed
214

215
216
217
        if (customEvent.isDefaultPrevented()) {
          return;
        }
218

219
220
221
222
        this._removeElement(rootElement);
      }
    }, {
      key: '_getRootElement',
223

224
      // private
Chris Rebert's avatar
Chris Rebert committed
225

226
227
228
      value: function _getRootElement(element) {
        var parent = false;
        var selector = Util.getSelectorFromElement(element);
Heinrich Fenkart's avatar
grunt    
Heinrich Fenkart committed
229

230
231
232
        if (selector) {
          parent = $(selector)[0];
        }
XhmikosR's avatar
XhmikosR committed
233

234
235
236
        if (!parent) {
          parent = $(element).closest('.' + ClassName.ALERT)[0];
        }
XhmikosR's avatar
XhmikosR committed
237

238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
        return parent;
      }
    }, {
      key: '_triggerCloseEvent',
      value: function _triggerCloseEvent(element) {
        var closeEvent = $.Event(Event.CLOSE);
        $(element).trigger(closeEvent);
        return closeEvent;
      }
    }, {
      key: '_removeElement',
      value: function _removeElement(element) {
        $(element).removeClass(ClassName.IN);

        if (!Util.supportsTransitionEnd() || !$(element).hasClass(ClassName.FADE)) {
          this._destroyElement(element);
          return;
        }
fat's avatar
fat committed
256

257
258
259
260
261
262
263
264
265
        $(element).one(Util.TRANSITION_END, this._destroyElement.bind(this, element)).emulateTransitionEnd(TRANSITION_DURATION);
      }
    }, {
      key: '_destroyElement',
      value: function _destroyElement(element) {
        $(element).detach().trigger(Event.CLOSED).remove();
      }
    }], [{
      key: 'VERSION',
266

267
      // getters
268

269
270
271
272
273
      get: function () {
        return VERSION;
      }
    }, {
      key: '_jQueryInterface',
274

275
      // static
276

277
278
279
280
      value: function _jQueryInterface(config) {
        return this.each(function () {
          var $element = $(this);
          var data = $element.data(DATA_KEY);
fat's avatar
fat committed
281

282
283
284
285
          if (!data) {
            data = new Alert(this);
            $element.data(DATA_KEY, data);
          }
fat's avatar
fat committed
286

287
288
289
290
          if (config === 'close') {
            data[config](this);
          }
        });
fat's avatar
fat committed
291
      }
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
    }, {
      key: '_handleDismiss',
      value: function _handleDismiss(alertInstance) {
        return function (event) {
          if (event) {
            event.preventDefault();
          }

          alertInstance.close(this);
        };
      }
    }]);

    return Alert;
  })();

  /**
   * ------------------------------------------------------------------------
   * Data Api implementation
   * ------------------------------------------------------------------------
   */

  $(document).on(Event.CLICK, Selector.DISMISS, Alert._handleDismiss(new Alert()));

  /**
   * ------------------------------------------------------------------------
   * jQuery
   * ------------------------------------------------------------------------
   */

  $.fn[NAME] = Alert._jQueryInterface;
  $.fn[NAME].Constructor = Alert;
  $.fn[NAME].noConflict = function () {
    $.fn[NAME] = JQUERY_NO_CONFLICT;
    return Alert._jQueryInterface;
  };

  return Alert;
})(jQuery);

/**
 * --------------------------------------------------------------------------
 * Bootstrap (v4.0.0): button.js
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * --------------------------------------------------------------------------
 */
fat's avatar
fat committed
338

339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
var Button = (function ($) {

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

  var NAME = 'button';
  var VERSION = '4.0.0';
  var DATA_KEY = 'bs.button';
  var JQUERY_NO_CONFLICT = $.fn[NAME];
  var TRANSITION_DURATION = 150;

  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 = {
    CLICK: 'click.bs.button.data-api',
    FOCUS_BLUR: 'focus.bs.button.data-api blur.bs.button.data-api'
  };

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

  var Button = (function () {
    function Button(element) {
      _classCallCheck(this, Button);

      this._element = element;
fat's avatar
fat committed
383
    }
fat's avatar
fat committed
384

385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
    _createClass(Button, [{
      key: 'toggle',

      // public

      value: function toggle() {
        var triggerChangeEvent = true;
        var rootElement = $(this._element).closest(Selector.DATA_TOGGLE)[0];

        if (rootElement) {
          var input = $(this._element).find(Selector.INPUT)[0];

          if (input) {
            if (input.type === 'radio') {
              if (input.checked && $(this._element).hasClass(ClassName.ACTIVE)) {
                triggerChangeEvent = false;
              } else {
                var activeElement = $(rootElement).find(Selector.ACTIVE)[0];

                if (activeElement) {
                  $(activeElement).removeClass(ClassName.ACTIVE);
                }
              }
            }

            if (triggerChangeEvent) {
              input.checked = !$(this._element).hasClass(ClassName.ACTIVE);
              $(this._element).trigger('change');
            }
          }
        } else {
          this._element.setAttribute('aria-pressed', !$(this._element).hasClass(ClassName.ACTIVE));
        }
fat's avatar
fat committed
418

419
420
421
422
423
424
        if (triggerChangeEvent) {
          $(this._element).toggleClass(ClassName.ACTIVE);
        }
      }
    }], [{
      key: 'VERSION',
425

426
      // getters
427

428
429
430
431
432
      get: function () {
        return VERSION;
      }
    }, {
      key: '_jQueryInterface',
433

434
      // static
435

436
437
438
      value: function _jQueryInterface(config) {
        return this.each(function () {
          var data = $(this).data(DATA_KEY);
fat's avatar
fat committed
439

440
441
442
443
          if (!data) {
            data = new Button(this);
            $(this).data(DATA_KEY, data);
          }
fat's avatar
fat committed
444

445
446
447
448
449
450
          if (config === 'toggle') {
            data[config]();
          }
        });
      }
    }]);
fat's avatar
fat committed
451

452
453
    return Button;
  })();
fat's avatar
fat committed
454

455
456
457
458
459
  /**
   * ------------------------------------------------------------------------
   * Data Api implementation
   * ------------------------------------------------------------------------
   */
fat's avatar
fat committed
460

461
462
  $(document).on(Event.CLICK, Selector.DATA_TOGGLE_CARROT, function (event) {
    event.preventDefault();
fat's avatar
fat committed
463

464
    var button = event.target;
fat's avatar
fat committed
465

466
467
468
    if (!$(button).hasClass(ClassName.BUTTON)) {
      button = $(button).closest(Selector.BUTTON);
    }
fat's avatar
fat committed
469

470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
    Button._jQueryInterface.call($(button), 'toggle');
  }).on(Event.FOCUS_BLUR, Selector.DATA_TOGGLE_CARROT, function (event) {
    var button = $(event.target).closest(Selector.BUTTON)[0];
    $(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type));
  });

  /**
   * ------------------------------------------------------------------------
   * jQuery
   * ------------------------------------------------------------------------
   */

  $.fn[NAME] = Button._jQueryInterface;
  $.fn[NAME].Constructor = Button;
  $.fn[NAME].noConflict = function () {
    $.fn[NAME] = JQUERY_NO_CONFLICT;
    return Button._jQueryInterface;
  };

  return Button;
})(jQuery);

/**
 * --------------------------------------------------------------------------
 * Bootstrap (v4.0.0): carousel.js
495
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
496
497
 * --------------------------------------------------------------------------
 */
498

499
var Carousel = (function ($) {
fat's avatar
fat committed
500

501
502
503
504
505
  /**
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
   */
fat's avatar
fat committed
506

507
508
509
510
511
  var NAME = 'carousel';
  var VERSION = '4.0.0';
  var DATA_KEY = 'bs.carousel';
  var JQUERY_NO_CONFLICT = $.fn[NAME];
  var TRANSITION_DURATION = 600;
XhmikosR's avatar
XhmikosR committed
512

513
  var Default = {
fat's avatar
fat committed
514
    interval: 5000,
515
516
    keyboard: true,
    slide: false,
fat's avatar
fat committed
517
    pause: 'hover',
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
    wrap: true
  };

  var Direction = {
    NEXT: 'next',
    PREVIOUS: 'prev'
  };

  var Event = {
    SLIDE: 'slide.bs.carousel',
    SLID: 'slid.bs.carousel',
    CLICK: 'click.bs.carousel.data-api',
    LOAD: 'load'
  };

  var ClassName = {
    CAROUSEL: 'carousel',
    ACTIVE: 'active',
    SLIDE: 'slide',
    RIGHT: 'right',
    LEFT: 'left',
    ITEM: 'carousel-item'
  };

  var Selector = {
    ACTIVE: '.active',
    ACTIVE_ITEM: '.active.carousel-item',
    ITEM: '.carousel-item',
    NEXT_PREV: '.next, .prev',
    INDICATORS: '.carousel-indicators',
    DATA_SLIDE: '[data-slide], [data-slide-to]',
    DATA_RIDE: '[data-ride="carousel"]'
  };

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

  var Carousel = (function () {
    function Carousel(element, config) {
      _classCallCheck(this, Carousel);

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

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

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

      this._addEventListeners();
574
575
    }

576
577
    _createClass(Carousel, [{
      key: 'next',
578

579
      // public
580

581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
      value: function next() {
        if (!this._isSliding) {
          this._slide(Direction.NEXT);
        }
      }
    }, {
      key: 'prev',
      value: function prev() {
        if (!this._isSliding) {
          this._slide(Direction.PREVIOUS);
        }
      }
    }, {
      key: 'pause',
      value: function pause(event) {
        if (!event) {
          this._isPaused = true;
        }
fat's avatar
fat committed
599

600
601
602
603
        if ($(this._element).find(Selector.NEXT_PREV)[0] && Util.supportsTransitionEnd()) {
          Util.triggerTransitionEnd(this._element);
          this.cycle(true);
        }
fat's avatar
fat committed
604

605
606
607
608
609
610
611
612
613
        clearInterval(this._interval);
        this._interval = null;
      }
    }, {
      key: 'cycle',
      value: function cycle(event) {
        if (!event) {
          this._isPaused = false;
        }
fat's avatar
fat committed
614

615
616
617
618
        if (this._interval) {
          clearInterval(this._interval);
          this._interval = null;
        }
fat's avatar
fat committed
619

620
621
622
623
624
625
626
627
        if (this._config.interval && !this._isPaused) {
          this._interval = setInterval(this.next.bind(this), this._config.interval);
        }
      }
    }, {
      key: 'to',
      value: function to(index) {
        var _this2 = this;
628

629
        this._activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0];
Jacob Thornton's avatar
Jacob Thornton committed
630

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

633
634
635
        if (index > this._items.length - 1 || index < 0) {
          return;
        }
fat's avatar
fat committed
636

637
638
639
640
641
642
        if (this._isSliding) {
          $(this._element).one(Event.SLID, function () {
            return _this2.to(index);
          });
          return;
        }
fat's avatar
fat committed
643

644
645
646
647
648
        if (activeIndex == index) {
          this.pause();
          this.cycle();
          return;
        }
fat's avatar
fat committed
649

650
        var direction = index > activeIndex ? Direction.NEXT : Direction.PREVIOUS;
fat's avatar
fat committed
651

652
653
654
655
        this._slide(direction, this._items[index]);
      }
    }, {
      key: '_addEventListeners',
656

657
      // private
658

659
660
661
662
      value: function _addEventListeners() {
        if (this._config.keyboard) {
          $(this._element).on('keydown.bs.carousel', this._keydown.bind(this));
        }
XhmikosR's avatar
XhmikosR committed
663

664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
        if (this._config.pause == 'hover' && !('ontouchstart' in document.documentElement)) {
          $(this._element).on('mouseenter.bs.carousel', this.pause.bind(this)).on('mouseleave.bs.carousel', this.cycle.bind(this));
        }
      }
    }, {
      key: '_keydown',
      value: function _keydown(event) {
        event.preventDefault();

        if (/input|textarea/i.test(event.target.tagName)) return;

        switch (event.which) {
          case 37:
            this.prev();break;
          case 39:
            this.next();break;
          default:
            return;
        }
      }
    }, {
      key: '_getItemIndex',
      value: function _getItemIndex(element) {
        this._items = $.makeArray($(element).parent().find(Selector.ITEM));
        return this._items.indexOf(element);
      }
    }, {
      key: '_getItemByDirection',
      value: function _getItemByDirection(direction, activeElement) {
        var isNextDirection = direction === Direction.NEXT;
        var isPrevDirection = direction === Direction.PREVIOUS;
        var activeIndex = this._getItemIndex(activeElement);
        var lastItemIndex = this._items.length - 1;
        var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex == lastItemIndex;

        if (isGoingToWrap && !this._config.wrap) {
          return activeElement;
        }
fat's avatar
fat committed
702

703
704
        var delta = direction == Direction.PREVIOUS ? -1 : 1;
        var itemIndex = (activeIndex + delta) % this._items.length;
fat's avatar
fat committed
705

706
707
708
709
710
711
712
713
714
        return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];
      }
    }, {
      key: '_triggerSlideEvent',
      value: function _triggerSlideEvent(relatedTarget, directionalClassname) {
        var slideEvent = $.Event(Event.SLIDE, {
          relatedTarget: relatedTarget,
          direction: directionalClassname
        });
fat's avatar
fat committed
715

716
        $(this._element).trigger(slideEvent);
fat's avatar
fat committed
717

718
719
720
721
722
723
724
        return slideEvent;
      }
    }, {
      key: '_setActiveIndicatorElement',
      value: function _setActiveIndicatorElement(element) {
        if (this._indicatorsElement) {
          $(this._indicatorsElement).find(Selector.ACTIVE).removeClass(ClassName.ACTIVE);
fat's avatar
fat committed
725

726
          var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];
fat's avatar
fat committed
727

728
729
730
731
732
733
734
735
736
          if (nextIndicator) {
            $(nextIndicator).addClass(ClassName.ACTIVE);
          }
        }
      }
    }, {
      key: '_slide',
      value: function _slide(direction, element) {
        var _this3 = this;
fat's avatar
fat committed
737

738
739
        var activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0];
        var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);
fat's avatar
fat committed
740

741
        var isCycling = !!this._interval;
fat's avatar
fat committed
742

743
        var directionalClassName = direction == Direction.NEXT ? ClassName.LEFT : ClassName.RIGHT;
744

745
746
747
748
        if (nextElement && $(nextElement).hasClass(ClassName.ACTIVE)) {
          this._isSliding = false;
          return;
        }
749

750
751
752
753
        var slideEvent = this._triggerSlideEvent(nextElement, directionalClassName);
        if (slideEvent.isDefaultPrevented()) {
          return;
        }
754

755
756
757
758
        if (!activeElement || !nextElement) {
          // some weirdness is happening, so we bail
          return;
        }
759

760
        this._isSliding = true;
fat's avatar
fat committed
761

762
763
764
        if (isCycling) {
          this.pause();
        }
765

766
        this._setActiveIndicatorElement(nextElement);
767

768
769
770
771
        var slidEvent = $.Event(Event.SLID, {
          relatedTarget: nextElement,
          direction: directionalClassName
        });
772

773
        if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.SLIDE)) {
774

775
          $(nextElement).addClass(direction);
fat's avatar
fat committed
776

777
          Util.reflow(nextElement);
fat's avatar
fat committed
778

779
780
          $(activeElement).addClass(directionalClassName);
          $(nextElement).addClass(directionalClassName);
fat's avatar
fat committed
781

782
783
          $(activeElement).one(Util.TRANSITION_END, function () {
            $(nextElement).removeClass(directionalClassName).removeClass(direction);
784

785
            $(nextElement).addClass(ClassName.ACTIVE);
786

787
            $(activeElement).removeClass(ClassName.ACTIVE).removeClass(direction).removeClass(directionalClassName);
788

789
            _this3._isSliding = false;
790

791
792
793
794
795
796
797
            setTimeout(function () {
              return $(_this3._element).trigger(slidEvent);
            }, 0);
          }).emulateTransitionEnd(TRANSITION_DURATION);
        } else {
          $(activeElement).removeClass(ClassName.ACTIVE);
          $(nextElement).addClass(ClassName.ACTIVE);
Mark Otto's avatar
grunt    
Mark Otto committed
798

799
800
801
          this._isSliding = false;
          $(this._element).trigger(slidEvent);
        }
802

803
804
805
806
807
808
        if (isCycling) {
          this.cycle();
        }
      }
    }], [{
      key: 'VERSION',
Heinrich Fenkart's avatar
grunt    
Heinrich Fenkart committed
809

810
      // getters
fat's avatar
fat committed
811

812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
      get: function () {
        return VERSION;
      }
    }, {
      key: 'Default',
      get: function () {
        return Default;
      }
    }, {
      key: '_jQueryInterface',

      // static

      value: function _jQueryInterface(config) {
        return this.each(function () {
          var data = $(this).data(DATA_KEY);
          var _config = $.extend({}, Default, $(this).data());

          if (typeof config === 'object') {
            $.extend(_config, config);
          }

          var action = typeof config === 'string' ? config : _config.slide;

          if (!data) {
            data = new Carousel(this, _config);
            $(this).data(DATA_KEY, data);
          }

          if (typeof config == 'number') {
            data.to(config);
          } else if (action) {
            data[action]();
          } else if (_config.interval) {
            data.pause();
            data.cycle();
          }
        });
      }
    }, {
      key: '_dataApiClickHandler',
      value: function _dataApiClickHandler(event) {
        var selector = Util.getSelectorFromElement(this);
855

856
857
858
        if (!selector) {
          return;
        }
859

860
        var target = $(selector)[0];
Heinrich Fenkart's avatar
grunt    
Heinrich Fenkart committed
861

862
863
864
        if (!target || !$(target).hasClass(ClassName.CAROUSEL)) {
          return;
        }
865

866
        var config = $.extend({}, $(target).data(), $(this).data());
867

868
869
870
871
        var slideIndex = this.getAttribute('data-slide-to');
        if (slideIndex) {
          config.interval = false;
        }
872

873
874
875
876
877
        Carousel._jQueryInterface.call($(target), config);

        if (slideIndex) {
          $(target).data(DATA_KEY).to(slideIndex);
        }
878

879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
        event.preventDefault();
      }
    }]);

    return Carousel;
  })();

  /**
   * ------------------------------------------------------------------------
   * Data Api implementation
   * ------------------------------------------------------------------------
   */

  $(document).on(Event.CLICK, Selector.DATA_SLIDE, Carousel._dataApiClickHandler);

  $(window).on(Event.LOAD, function () {
    $(Selector.DATA_RIDE).each(function () {
      var $carousel = $(this);
      Carousel._jQueryInterface.call($carousel, $carousel.data());
    });
  });

  /**
   * ------------------------------------------------------------------------
   * jQuery
   * ------------------------------------------------------------------------
   */

  $.fn[NAME] = Carousel._jQueryInterface;
  $.fn[NAME].Constructor = Carousel;
  $.fn[NAME].noConflict = function () {
    $.fn[NAME] = JQUERY_NO_CONFLICT;
    return Carousel._jQueryInterface;
  };

  return Carousel;
})(jQuery);

/**
 * --------------------------------------------------------------------------
 * Bootstrap (v4.0.0): collapse.js
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * --------------------------------------------------------------------------
 */
Heinrich Fenkart's avatar
grunt    
Heinrich Fenkart committed
923

924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
var Collapse = (function ($) {

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

  var NAME = 'collapse';
  var VERSION = '4.0.0';
  var DATA_KEY = 'bs.collapse';
  var JQUERY_NO_CONFLICT = $.fn[NAME];
  var TRANSITION_DURATION = 600;

  var Default = {
    toggle: true,
    parent: null
  };

  var Event = {
    SHOW: 'show.bs.collapse',
    SHOWN: 'shown.bs.collapse',
    HIDE: 'hide.bs.collapse',
    HIDDEN: 'hidden.bs.collapse',
    CLICK: 'click.bs.collapse.data-api'
  };

  var ClassName = {
    IN: 'in',
    COLLAPSE: 'collapse',
    COLLAPSING: 'collapsing',
    COLLAPSED: 'collapsed'
  };

  var Dimension = {
    WIDTH: 'width',
    HEIGHT: 'height'
  };

  var Selector = {
    ACTIVES: '.panel > .in, .panel > .collapsing',
    DATA_TOGGLE: '[data-toggle="collapse"]'
  };

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

  var Collapse = (function () {
    function Collapse(element, config) {
      _classCallCheck(this, Collapse);

      this._isTransitioning = false;
      this._element = element;
      this._config = $.extend({}, Default, config);
      this._triggerArray = $.makeArray($('[data-toggle="collapse"][href="#' + element.id + '"],' + ('[data-toggle="collapse"][data-target="#' + element.id + '"]')));

      this._parent = this._config.parent ? this._getParent() : null;

      if (!this._config.parent) {
        this._addAriaAndCollapsedClass(this._element, this._triggerArray);
      }
988

989
990
991
      if (this._config.toggle) {
        this.toggle();
      }
Chris Rebert's avatar
Chris Rebert committed
992
    }
993

994
995
    _createClass(Collapse, [{
      key: 'toggle',
fat's avatar
fat committed
996

997
      // public
fat's avatar
fat committed
998

999
1000
      value: function toggle() {
        if ($(this._element).hasClass(ClassName.IN)) {
For faster browsing, not all history is shown. View entire blame