bootstrap.bundle.js 239 KB
Newer Older
Mark Otto's avatar
dist  
Mark Otto committed
1001
   */
Mark Otto's avatar
dist    
Mark Otto committed
1002

XhmikosR's avatar
Dist    
XhmikosR committed
1003
  var NAME$2 = 'carousel';
XhmikosR's avatar
XhmikosR committed
1004
  var VERSION$2 = '5.0.0-alpha3';
XhmikosR's avatar
Dist    
XhmikosR committed
1005
1006
1007
  var DATA_KEY$2 = 'bs.carousel';
  var EVENT_KEY$2 = "." + DATA_KEY$2;
  var DATA_API_KEY$2 = '.data-api';
XhmikosR's avatar
XhmikosR committed
1008
1009
  var ARROW_LEFT_KEY = 'ArrowLeft';
  var ARROW_RIGHT_KEY = 'ArrowRight';
XhmikosR's avatar
Dist    
XhmikosR committed
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
  var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch

  var SWIPE_THRESHOLD = 40;
  var Default = {
    interval: 5000,
    keyboard: true,
    slide: false,
    pause: 'hover',
    wrap: true,
    touch: true
  };
  var DefaultType = {
    interval: '(number|boolean)',
    keyboard: 'boolean',
    slide: '(boolean|string)',
    pause: '(string|boolean)',
    wrap: 'boolean',
    touch: 'boolean'
  };
XhmikosR's avatar
XhmikosR committed
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
  var DIRECTION_NEXT = 'next';
  var DIRECTION_PREV = 'prev';
  var DIRECTION_LEFT = 'left';
  var DIRECTION_RIGHT = 'right';
  var EVENT_SLIDE = "slide" + EVENT_KEY$2;
  var EVENT_SLID = "slid" + EVENT_KEY$2;
  var EVENT_KEYDOWN = "keydown" + EVENT_KEY$2;
  var EVENT_MOUSEENTER = "mouseenter" + EVENT_KEY$2;
  var EVENT_MOUSELEAVE = "mouseleave" + EVENT_KEY$2;
  var EVENT_TOUCHSTART = "touchstart" + EVENT_KEY$2;
  var EVENT_TOUCHMOVE = "touchmove" + EVENT_KEY$2;
  var EVENT_TOUCHEND = "touchend" + EVENT_KEY$2;
  var EVENT_POINTERDOWN = "pointerdown" + EVENT_KEY$2;
  var EVENT_POINTERUP = "pointerup" + EVENT_KEY$2;
  var EVENT_DRAG_START = "dragstart" + EVENT_KEY$2;
  var EVENT_LOAD_DATA_API = "load" + EVENT_KEY$2 + DATA_API_KEY$2;
  var EVENT_CLICK_DATA_API$2 = "click" + EVENT_KEY$2 + DATA_API_KEY$2;
  var CLASS_NAME_CAROUSEL = 'carousel';
  var CLASS_NAME_ACTIVE$1 = 'active';
  var CLASS_NAME_SLIDE = 'slide';
  var CLASS_NAME_RIGHT = 'carousel-item-right';
  var CLASS_NAME_LEFT = 'carousel-item-left';
  var CLASS_NAME_NEXT = 'carousel-item-next';
  var CLASS_NAME_PREV = 'carousel-item-prev';
  var CLASS_NAME_POINTER_EVENT = 'pointer-event';
XhmikosR's avatar
XhmikosR committed
1054
  var SELECTOR_ACTIVE = '.active';
XhmikosR's avatar
XhmikosR committed
1055
1056
1057
1058
1059
1060
1061
  var SELECTOR_ACTIVE_ITEM = '.active.carousel-item';
  var SELECTOR_ITEM = '.carousel-item';
  var SELECTOR_ITEM_IMG = '.carousel-item img';
  var SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev';
  var SELECTOR_INDICATORS = '.carousel-indicators';
  var SELECTOR_DATA_SLIDE = '[data-slide], [data-slide-to]';
  var SELECTOR_DATA_RIDE = '[data-ride="carousel"]';
XhmikosR's avatar
Dist    
XhmikosR committed
1062
1063
1064
1065
  var PointerType = {
    TOUCH: 'touch',
    PEN: 'pen'
  };
XhmikosR's avatar
XhmikosR committed
1066
1067
1068
1069
1070
  /**
   * ------------------------------------------------------------------------
   * Class Definition
   * ------------------------------------------------------------------------
   */
Mark Otto's avatar
dist    
Mark Otto committed
1071

XhmikosR's avatar
XhmikosR committed
1072
  var Carousel = /*#__PURE__*/function () {
XhmikosR's avatar
Dist    
XhmikosR committed
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
    function Carousel(element, config) {
      this._items = null;
      this._interval = null;
      this._activeElement = null;
      this._isPaused = false;
      this._isSliding = false;
      this.touchTimeout = null;
      this.touchStartX = 0;
      this.touchDeltaX = 0;
      this._config = this._getConfig(config);
      this._element = element;
XhmikosR's avatar
XhmikosR committed
1084
      this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);
XhmikosR's avatar
Dist    
XhmikosR committed
1085
      this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;
XhmikosR's avatar
XhmikosR committed
1086
      this._pointerEvent = Boolean(window.PointerEvent);
XhmikosR's avatar
Dist    
XhmikosR committed
1087
1088

      this._addEventListeners();
XhmikosR's avatar
XhmikosR committed
1089
1090

      Data.setData(element, DATA_KEY$2, this);
XhmikosR's avatar
Dist    
XhmikosR committed
1091
1092
1093
1094
1095
1096
1097
1098
    } // Getters


    var _proto = Carousel.prototype;

    // Public
    _proto.next = function next() {
      if (!this._isSliding) {
XhmikosR's avatar
XhmikosR committed
1099
        this._slide(DIRECTION_NEXT);
XhmikosR's avatar
Dist    
XhmikosR committed
1100
      }
Mark Otto's avatar
dist    
Mark Otto committed
1101
    };
Mark Otto's avatar
dist  
Mark Otto committed
1102

XhmikosR's avatar
Dist    
XhmikosR committed
1103
1104
1105
    _proto.nextWhenVisible = function nextWhenVisible() {
      // Don't call next when the page isn't visible
      // or the carousel or its parent isn't visible
XhmikosR's avatar
XhmikosR committed
1106
      if (!document.hidden && isVisible(this._element)) {
XhmikosR's avatar
Dist    
XhmikosR committed
1107
1108
        this.next();
      }
Mark Otto's avatar
dist  
Mark Otto committed
1109
1110
    };

XhmikosR's avatar
Dist    
XhmikosR committed
1111
1112
    _proto.prev = function prev() {
      if (!this._isSliding) {
XhmikosR's avatar
XhmikosR committed
1113
        this._slide(DIRECTION_PREV);
XhmikosR's avatar
Dist    
XhmikosR committed
1114
1115
      }
    };
Mark Otto's avatar
dist  
Mark Otto committed
1116

XhmikosR's avatar
Dist    
XhmikosR committed
1117
1118
1119
1120
    _proto.pause = function pause(event) {
      if (!event) {
        this._isPaused = true;
      }
Mark Otto's avatar
dist  
Mark Otto committed
1121

XhmikosR's avatar
XhmikosR committed
1122
      if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) {
XhmikosR's avatar
XhmikosR committed
1123
        triggerTransitionEnd(this._element);
XhmikosR's avatar
Dist    
XhmikosR committed
1124
1125
        this.cycle(true);
      }
Mark Otto's avatar
dist  
Mark Otto committed
1126

XhmikosR's avatar
Dist    
XhmikosR committed
1127
1128
1129
      clearInterval(this._interval);
      this._interval = null;
    };
Mark Otto's avatar
dist  
Mark Otto committed
1130

XhmikosR's avatar
Dist    
XhmikosR committed
1131
1132
1133
1134
    _proto.cycle = function cycle(event) {
      if (!event) {
        this._isPaused = false;
      }
Mark Otto's avatar
dist  
Mark Otto committed
1135

XhmikosR's avatar
Dist    
XhmikosR committed
1136
      if (this._interval) {
Mark Otto's avatar
dist    
Mark Otto committed
1137
1138
        clearInterval(this._interval);
        this._interval = null;
XhmikosR's avatar
Dist    
XhmikosR committed
1139
      }
Mark Otto's avatar
dist  
Mark Otto committed
1140

XhmikosR's avatar
XhmikosR committed
1141
      if (this._config && this._config.interval && !this._isPaused) {
XhmikosR's avatar
XhmikosR committed
1142
1143
        this._updateInterval();

XhmikosR's avatar
Dist    
XhmikosR committed
1144
1145
1146
        this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);
      }
    };
Mark Otto's avatar
dist  
Mark Otto committed
1147

XhmikosR's avatar
Dist    
XhmikosR committed
1148
1149
    _proto.to = function to(index) {
      var _this = this;
Mark Otto's avatar
dist  
Mark Otto committed
1150

XhmikosR's avatar
XhmikosR committed
1151
      this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
Mark Otto's avatar
dist    
Mark Otto committed
1152

XhmikosR's avatar
Dist    
XhmikosR committed
1153
      var activeIndex = this._getItemIndex(this._activeElement);
Mark Otto's avatar
dist    
Mark Otto committed
1154

XhmikosR's avatar
Dist    
XhmikosR committed
1155
1156
1157
      if (index > this._items.length - 1 || index < 0) {
        return;
      }
Mark Otto's avatar
dist    
Mark Otto committed
1158

XhmikosR's avatar
Dist    
XhmikosR committed
1159
      if (this._isSliding) {
XhmikosR's avatar
XhmikosR committed
1160
        EventHandler.one(this._element, EVENT_SLID, function () {
XhmikosR's avatar
Dist    
XhmikosR committed
1161
1162
1163
1164
          return _this.to(index);
        });
        return;
      }
Mark Otto's avatar
dist    
Mark Otto committed
1165

XhmikosR's avatar
Dist    
XhmikosR committed
1166
1167
1168
1169
1170
      if (activeIndex === index) {
        this.pause();
        this.cycle();
        return;
      }
Mark Otto's avatar
dist    
Mark Otto committed
1171

XhmikosR's avatar
XhmikosR committed
1172
      var direction = index > activeIndex ? DIRECTION_NEXT : DIRECTION_PREV;
Mark Otto's avatar
dist  
Mark Otto committed
1173

XhmikosR's avatar
Dist    
XhmikosR committed
1174
1175
      this._slide(direction, this._items[index]);
    };
Mark Otto's avatar
dist  
Mark Otto committed
1176

XhmikosR's avatar
Dist    
XhmikosR committed
1177
    _proto.dispose = function dispose() {
XhmikosR's avatar
XhmikosR committed
1178
1179
      EventHandler.off(this._element, EVENT_KEY$2);
      Data.removeData(this._element, DATA_KEY$2);
XhmikosR's avatar
Dist    
XhmikosR committed
1180
1181
1182
1183
1184
1185
1186
1187
      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
1188
1189
    } // Private
    ;
XhmikosR's avatar
Dist    
XhmikosR committed
1190
1191

    _proto._getConfig = function _getConfig(config) {
XhmikosR's avatar
XhmikosR committed
1192
      config = _extends({}, Default, config);
XhmikosR's avatar
XhmikosR committed
1193
      typeCheckConfig(NAME$2, config, DefaultType);
XhmikosR's avatar
Dist    
XhmikosR committed
1194
1195
      return config;
    };
Mark Otto's avatar
dist    
Mark Otto committed
1196

XhmikosR's avatar
Dist    
XhmikosR committed
1197
1198
    _proto._handleSwipe = function _handleSwipe() {
      var absDeltax = Math.abs(this.touchDeltaX);
Mark Otto's avatar
dist    
Mark Otto committed
1199

XhmikosR's avatar
Dist    
XhmikosR committed
1200
1201
1202
      if (absDeltax <= SWIPE_THRESHOLD) {
        return;
      }
Mark Otto's avatar
dist    
Mark Otto committed
1203

XhmikosR's avatar
XhmikosR committed
1204
1205
      var direction = absDeltax / this.touchDeltaX;
      this.touchDeltaX = 0; // swipe left
Mark Otto's avatar
dist    
Mark Otto committed
1206

XhmikosR's avatar
Dist    
XhmikosR committed
1207
1208
1209
      if (direction > 0) {
        this.prev();
      } // swipe right
Mark Otto's avatar
dist    
Mark Otto committed
1210

Mark Otto's avatar
dist    
Mark Otto committed
1211

XhmikosR's avatar
Dist    
XhmikosR committed
1212
1213
1214
1215
      if (direction < 0) {
        this.next();
      }
    };
Mark Otto's avatar
dist  
Mark Otto committed
1216

XhmikosR's avatar
Dist    
XhmikosR committed
1217
1218
    _proto._addEventListeners = function _addEventListeners() {
      var _this2 = this;
Mark Otto's avatar
dist  
Mark Otto committed
1219

XhmikosR's avatar
Dist    
XhmikosR committed
1220
      if (this._config.keyboard) {
XhmikosR's avatar
XhmikosR committed
1221
        EventHandler.on(this._element, EVENT_KEYDOWN, function (event) {
XhmikosR's avatar
Dist    
XhmikosR committed
1222
1223
1224
          return _this2._keydown(event);
        });
      }
Mark Otto's avatar
dist    
Mark Otto committed
1225

XhmikosR's avatar
Dist    
XhmikosR committed
1226
      if (this._config.pause === 'hover') {
XhmikosR's avatar
XhmikosR committed
1227
        EventHandler.on(this._element, EVENT_MOUSEENTER, function (event) {
XhmikosR's avatar
Dist    
XhmikosR committed
1228
          return _this2.pause(event);
XhmikosR's avatar
XhmikosR committed
1229
        });
XhmikosR's avatar
XhmikosR committed
1230
        EventHandler.on(this._element, EVENT_MOUSELEAVE, function (event) {
XhmikosR's avatar
Dist    
XhmikosR committed
1231
1232
1233
          return _this2.cycle(event);
        });
      }
Mark Otto's avatar
dist    
Mark Otto committed
1234

1235
      if (this._config.touch && this._touchSupported) {
Mark Otto's avatar
Mark Otto committed
1236
1237
        this._addTouchEventListeners();
      }
XhmikosR's avatar
Dist    
XhmikosR committed
1238
    };
Mark Otto's avatar
dist  
Mark Otto committed
1239

XhmikosR's avatar
Dist    
XhmikosR committed
1240
1241
    _proto._addTouchEventListeners = function _addTouchEventListeners() {
      var _this3 = this;
Mark Otto's avatar
dist    
Mark Otto committed
1242

XhmikosR's avatar
Dist    
XhmikosR committed
1243
      var start = function start(event) {
XhmikosR's avatar
XhmikosR committed
1244
1245
        if (_this3._pointerEvent && PointerType[event.pointerType.toUpperCase()]) {
          _this3.touchStartX = event.clientX;
XhmikosR's avatar
Dist    
XhmikosR committed
1246
        } else if (!_this3._pointerEvent) {
XhmikosR's avatar
XhmikosR committed
1247
          _this3.touchStartX = event.touches[0].clientX;
Mark Otto's avatar
dist    
Mark Otto committed
1248
1249
        }
      };
Mark Otto's avatar
dist  
Mark Otto committed
1250

XhmikosR's avatar
Dist    
XhmikosR committed
1251
1252
      var move = function move(event) {
        // ensure swiping with one touch and not pinching
XhmikosR's avatar
XhmikosR committed
1253
        if (event.touches && event.touches.length > 1) {
XhmikosR's avatar
Dist    
XhmikosR committed
1254
1255
          _this3.touchDeltaX = 0;
        } else {
XhmikosR's avatar
XhmikosR committed
1256
          _this3.touchDeltaX = event.touches[0].clientX - _this3.touchStartX;
XhmikosR's avatar
Dist    
XhmikosR committed
1257
        }
Mark Otto's avatar
dist    
Mark Otto committed
1258
      };
Mark Otto's avatar
dist    
Mark Otto committed
1259

XhmikosR's avatar
Dist    
XhmikosR committed
1260
      var end = function end(event) {
XhmikosR's avatar
XhmikosR committed
1261
1262
        if (_this3._pointerEvent && PointerType[event.pointerType.toUpperCase()]) {
          _this3.touchDeltaX = event.clientX - _this3.touchStartX;
XhmikosR's avatar
Dist    
XhmikosR committed
1263
1264
1265
        }

        _this3._handleSwipe();
Mark Otto's avatar
dist    
Mark Otto committed
1266

XhmikosR's avatar
Dist    
XhmikosR committed
1267
1268
1269
1270
1271
1272
1273
1274
1275
        if (_this3._config.pause === 'hover') {
          // 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
          _this3.pause();
Mark Otto's avatar
dist  
Mark Otto committed
1276

XhmikosR's avatar
Dist    
XhmikosR committed
1277
1278
1279
          if (_this3.touchTimeout) {
            clearTimeout(_this3.touchTimeout);
          }
Mark Otto's avatar
dist  
Mark Otto committed
1280

XhmikosR's avatar
Dist    
XhmikosR committed
1281
1282
1283
          _this3.touchTimeout = setTimeout(function (event) {
            return _this3.cycle(event);
          }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval);
Mark Otto's avatar
dist    
Mark Otto committed
1284
1285
        }
      };
Mark Otto's avatar
dist    
Mark Otto committed
1286

XhmikosR's avatar
XhmikosR committed
1287
1288
      SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(function (itemImg) {
        EventHandler.on(itemImg, EVENT_DRAG_START, function (e) {
XhmikosR's avatar
XhmikosR committed
1289
1290
          return e.preventDefault();
        });
XhmikosR's avatar
Dist    
XhmikosR committed
1291
      });
Mark Otto's avatar
dist    
Mark Otto committed
1292

XhmikosR's avatar
Dist    
XhmikosR committed
1293
      if (this._pointerEvent) {
XhmikosR's avatar
XhmikosR committed
1294
        EventHandler.on(this._element, EVENT_POINTERDOWN, function (event) {
XhmikosR's avatar
Dist    
XhmikosR committed
1295
1296
          return start(event);
        });
XhmikosR's avatar
XhmikosR committed
1297
        EventHandler.on(this._element, EVENT_POINTERUP, function (event) {
XhmikosR's avatar
Dist    
XhmikosR committed
1298
1299
          return end(event);
        });
Mark Otto's avatar
dist    
Mark Otto committed
1300

XhmikosR's avatar
XhmikosR committed
1301
        this._element.classList.add(CLASS_NAME_POINTER_EVENT);
XhmikosR's avatar
Dist    
XhmikosR committed
1302
      } else {
XhmikosR's avatar
XhmikosR committed
1303
        EventHandler.on(this._element, EVENT_TOUCHSTART, function (event) {
XhmikosR's avatar
Dist    
XhmikosR committed
1304
          return start(event);
Mark Otto's avatar
dist    
Mark Otto committed
1305
        });
XhmikosR's avatar
XhmikosR committed
1306
        EventHandler.on(this._element, EVENT_TOUCHMOVE, function (event) {
XhmikosR's avatar
Dist    
XhmikosR committed
1307
1308
          return move(event);
        });
XhmikosR's avatar
XhmikosR committed
1309
        EventHandler.on(this._element, EVENT_TOUCHEND, function (event) {
XhmikosR's avatar
Dist    
XhmikosR committed
1310
1311
1312
1313
          return end(event);
        });
      }
    };
Mark Otto's avatar
dist  
Mark Otto committed
1314

XhmikosR's avatar
Dist    
XhmikosR committed
1315
1316
1317
1318
    _proto._keydown = function _keydown(event) {
      if (/input|textarea/i.test(event.target.tagName)) {
        return;
      }
Mark Otto's avatar
dist  
Mark Otto committed
1319

XhmikosR's avatar
XhmikosR committed
1320
1321
      switch (event.key) {
        case ARROW_LEFT_KEY:
XhmikosR's avatar
Dist    
XhmikosR committed
1322
1323
1324
          event.preventDefault();
          this.prev();
          break;
Mark Otto's avatar
dist  
Mark Otto committed
1325

XhmikosR's avatar
XhmikosR committed
1326
        case ARROW_RIGHT_KEY:
XhmikosR's avatar
Dist    
XhmikosR committed
1327
1328
1329
1330
1331
          event.preventDefault();
          this.next();
          break;
      }
    };
Mark Otto's avatar
dist  
Mark Otto committed
1332

XhmikosR's avatar
Dist    
XhmikosR committed
1333
    _proto._getItemIndex = function _getItemIndex(element) {
XhmikosR's avatar
XhmikosR committed
1334
      this._items = element && element.parentNode ? SelectorEngine.find(SELECTOR_ITEM, element.parentNode) : [];
XhmikosR's avatar
Dist    
XhmikosR committed
1335
1336
      return this._items.indexOf(element);
    };
Mark Otto's avatar
dist    
Mark Otto committed
1337

XhmikosR's avatar
Dist    
XhmikosR committed
1338
    _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {
XhmikosR's avatar
XhmikosR committed
1339
1340
      var isNextDirection = direction === DIRECTION_NEXT;
      var isPrevDirection = direction === DIRECTION_PREV;
Mark Otto's avatar
dist    
Mark Otto committed
1341

XhmikosR's avatar
Dist    
XhmikosR committed
1342
      var activeIndex = this._getItemIndex(activeElement);
Mark Otto's avatar
dist    
Mark Otto committed
1343

XhmikosR's avatar
Dist    
XhmikosR committed
1344
1345
      var lastItemIndex = this._items.length - 1;
      var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;
Mark Otto's avatar
dist  
Mark Otto committed
1346

XhmikosR's avatar
Dist    
XhmikosR committed
1347
1348
1349
      if (isGoingToWrap && !this._config.wrap) {
        return activeElement;
      }
Mark Otto's avatar
dist  
Mark Otto committed
1350

XhmikosR's avatar
XhmikosR committed
1351
      var delta = direction === DIRECTION_PREV ? -1 : 1;
XhmikosR's avatar
Dist    
XhmikosR committed
1352
1353
1354
      var itemIndex = (activeIndex + delta) % this._items.length;
      return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];
    };
Mark Otto's avatar
dist  
Mark Otto committed
1355

XhmikosR's avatar
Dist    
XhmikosR committed
1356
1357
    _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {
      var targetIndex = this._getItemIndex(relatedTarget);
Mark Otto's avatar
dist  
Mark Otto committed
1358

XhmikosR's avatar
XhmikosR committed
1359
      var fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element));
Mark Otto's avatar
dist    
Mark Otto committed
1360

XhmikosR's avatar
XhmikosR committed
1361
      return EventHandler.trigger(this._element, EVENT_SLIDE, {
XhmikosR's avatar
Dist    
XhmikosR committed
1362
1363
1364
1365
1366
1367
        relatedTarget: relatedTarget,
        direction: eventDirectionName,
        from: fromIndex,
        to: targetIndex
      });
    };
Mark Otto's avatar
dist  
Mark Otto committed
1368

XhmikosR's avatar
Dist    
XhmikosR committed
1369
1370
    _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {
      if (this._indicatorsElement) {
XhmikosR's avatar
XhmikosR committed
1371
        var indicators = SelectorEngine.find(SELECTOR_ACTIVE, this._indicatorsElement);
XhmikosR's avatar
XhmikosR committed
1372
1373

        for (var i = 0; i < indicators.length; i++) {
XhmikosR's avatar
XhmikosR committed
1374
          indicators[i].classList.remove(CLASS_NAME_ACTIVE$1);
XhmikosR's avatar
XhmikosR committed
1375
        }
Mark Otto's avatar
dist  
Mark Otto committed
1376

XhmikosR's avatar
Dist    
XhmikosR committed
1377
        var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];
Mark Otto's avatar
dist  
Mark Otto committed
1378

XhmikosR's avatar
Dist    
XhmikosR committed
1379
        if (nextIndicator) {
XhmikosR's avatar
XhmikosR committed
1380
          nextIndicator.classList.add(CLASS_NAME_ACTIVE$1);
Mark Otto's avatar
dist    
Mark Otto committed
1381
        }
XhmikosR's avatar
Dist    
XhmikosR committed
1382
1383
      }
    };
Mark Otto's avatar
dist  
Mark Otto committed
1384

XhmikosR's avatar
XhmikosR committed
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
    _proto._updateInterval = function _updateInterval() {
      var element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);

      if (!element) {
        return;
      }

      var elementInterval = parseInt(element.getAttribute('data-interval'), 10);

      if (elementInterval) {
        this._config.defaultInterval = this._config.defaultInterval || this._config.interval;
        this._config.interval = elementInterval;
      } else {
        this._config.interval = this._config.defaultInterval || this._config.interval;
      }
    };

XhmikosR's avatar
Dist    
XhmikosR committed
1402
1403
    _proto._slide = function _slide(direction, element) {
      var _this4 = this;
Mark Otto's avatar
dist  
Mark Otto committed
1404

XhmikosR's avatar
XhmikosR committed
1405
      var activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
Mark Otto's avatar
dist  
Mark Otto committed
1406

XhmikosR's avatar
Dist    
XhmikosR committed
1407
      var activeElementIndex = this._getItemIndex(activeElement);
Mark Otto's avatar
dist    
Mark Otto committed
1408

XhmikosR's avatar
Dist    
XhmikosR committed
1409
      var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);
Mark Otto's avatar
dist    
Mark Otto committed
1410

XhmikosR's avatar
Dist    
XhmikosR committed
1411
      var nextElementIndex = this._getItemIndex(nextElement);
Mark Otto's avatar
dist  
Mark Otto committed
1412

XhmikosR's avatar
Dist    
XhmikosR committed
1413
1414
1415
1416
      var isCycling = Boolean(this._interval);
      var directionalClassName;
      var orderClassName;
      var eventDirectionName;
Mark Otto's avatar
dist  
Mark Otto committed
1417

XhmikosR's avatar
XhmikosR committed
1418
1419
1420
1421
      if (direction === DIRECTION_NEXT) {
        directionalClassName = CLASS_NAME_LEFT;
        orderClassName = CLASS_NAME_NEXT;
        eventDirectionName = DIRECTION_LEFT;
XhmikosR's avatar
Dist    
XhmikosR committed
1422
      } else {
XhmikosR's avatar
XhmikosR committed
1423
1424
1425
        directionalClassName = CLASS_NAME_RIGHT;
        orderClassName = CLASS_NAME_PREV;
        eventDirectionName = DIRECTION_RIGHT;
XhmikosR's avatar
Dist    
XhmikosR committed
1426
      }
Mark Otto's avatar
dist  
Mark Otto committed
1427

XhmikosR's avatar
XhmikosR committed
1428
      if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE$1)) {
XhmikosR's avatar
Dist    
XhmikosR committed
1429
1430
1431
        this._isSliding = false;
        return;
      }
Mark Otto's avatar
dist    
Mark Otto committed
1432

XhmikosR's avatar
Dist    
XhmikosR committed
1433
      var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);
Mark Otto's avatar
dist  
Mark Otto committed
1434

XhmikosR's avatar
XhmikosR committed
1435
      if (slideEvent.defaultPrevented) {
XhmikosR's avatar
Dist    
XhmikosR committed
1436
1437
        return;
      }
Mark Otto's avatar
dist  
Mark Otto committed
1438

XhmikosR's avatar
Dist    
XhmikosR committed
1439
1440
1441
1442
      if (!activeElement || !nextElement) {
        // Some weirdness is happening, so we bail
        return;
      }
Mark Otto's avatar
dist  
Mark Otto committed
1443

XhmikosR's avatar
Dist    
XhmikosR committed
1444
      this._isSliding = true;
Mark Otto's avatar
dist    
Mark Otto committed
1445

XhmikosR's avatar
Dist    
XhmikosR committed
1446
1447
1448
      if (isCycling) {
        this.pause();
      }
Mark Otto's avatar
dist  
Mark Otto committed
1449

XhmikosR's avatar
Dist    
XhmikosR committed
1450
      this._setActiveIndicatorElement(nextElement);
Mark Otto's avatar
dist    
Mark Otto committed
1451

XhmikosR's avatar
XhmikosR committed
1452
1453
      this._activeElement = nextElement;

XhmikosR's avatar
XhmikosR committed
1454
      if (this._element.classList.contains(CLASS_NAME_SLIDE)) {
XhmikosR's avatar
XhmikosR committed
1455
1456
1457
1458
1459
1460
        nextElement.classList.add(orderClassName);
        reflow(nextElement);
        activeElement.classList.add(directionalClassName);
        nextElement.classList.add(directionalClassName);
        var transitionDuration = getTransitionDurationFromElement(activeElement);
        EventHandler.one(activeElement, TRANSITION_END, function () {
XhmikosR's avatar
XhmikosR committed
1461
          nextElement.classList.remove(directionalClassName, orderClassName);
XhmikosR's avatar
XhmikosR committed
1462
          nextElement.classList.add(CLASS_NAME_ACTIVE$1);
XhmikosR's avatar
XhmikosR committed
1463
          activeElement.classList.remove(CLASS_NAME_ACTIVE$1, orderClassName, directionalClassName);
XhmikosR's avatar
Dist    
XhmikosR committed
1464
1465
          _this4._isSliding = false;
          setTimeout(function () {
XhmikosR's avatar
XhmikosR committed
1466
            EventHandler.trigger(_this4._element, EVENT_SLID, {
XhmikosR's avatar
XhmikosR committed
1467
1468
1469
1470
1471
              relatedTarget: nextElement,
              direction: eventDirectionName,
              from: activeElementIndex,
              to: nextElementIndex
            });
XhmikosR's avatar
Dist    
XhmikosR committed
1472
          }, 0);
XhmikosR's avatar
XhmikosR committed
1473
1474
        });
        emulateTransitionEnd(activeElement, transitionDuration);
XhmikosR's avatar
Dist    
XhmikosR committed
1475
      } else {
XhmikosR's avatar
XhmikosR committed
1476
1477
        activeElement.classList.remove(CLASS_NAME_ACTIVE$1);
        nextElement.classList.add(CLASS_NAME_ACTIVE$1);
XhmikosR's avatar
Dist    
XhmikosR committed
1478
        this._isSliding = false;
XhmikosR's avatar
XhmikosR committed
1479
        EventHandler.trigger(this._element, EVENT_SLID, {
XhmikosR's avatar
XhmikosR committed
1480
1481
1482
1483
1484
          relatedTarget: nextElement,
          direction: eventDirectionName,
          from: activeElementIndex,
          to: nextElementIndex
        });
XhmikosR's avatar
Dist    
XhmikosR committed
1485
1486
1487
1488
1489
      }

      if (isCycling) {
        this.cycle();
      }
Mark Otto's avatar
Mark Otto committed
1490
1491
    } // Static
    ;
Mark Otto's avatar
dist  
Mark Otto committed
1492

XhmikosR's avatar
XhmikosR committed
1493
    Carousel.carouselInterface = function carouselInterface(element, config) {
XhmikosR's avatar
XhmikosR committed
1494
      var data = Data.getData(element, DATA_KEY$2);
Mark Otto's avatar
dist  
Mark Otto committed
1495

XhmikosR's avatar
XhmikosR committed
1496
      var _config = _extends({}, Default, Manipulator.getDataAttributes(element));
Mark Otto's avatar
dist  
Mark Otto committed
1497

XhmikosR's avatar
XhmikosR committed
1498
      if (typeof config === 'object') {
XhmikosR's avatar
XhmikosR committed
1499
        _config = _extends({}, _config, config);
XhmikosR's avatar
XhmikosR committed
1500
      }
Mark Otto's avatar
dist  
Mark Otto committed
1501

XhmikosR's avatar
XhmikosR committed
1502
      var action = typeof config === 'string' ? config : _config.slide;
Mark Otto's avatar
dist  
Mark Otto committed
1503

XhmikosR's avatar
XhmikosR committed
1504
1505
1506
1507
1508
1509
1510
1511
      if (!data) {
        data = new Carousel(element, _config);
      }

      if (typeof config === 'number') {
        data.to(config);
      } else if (typeof action === 'string') {
        if (typeof data[action] === 'undefined') {
XhmikosR's avatar
Dist.    
XhmikosR committed
1512
          throw new TypeError("No method named \"" + action + "\"");
Mark Otto's avatar
dist    
Mark Otto committed
1513
        }
Mark Otto's avatar
dist  
Mark Otto committed
1514

XhmikosR's avatar
XhmikosR committed
1515
1516
1517
1518
1519
1520
        data[action]();
      } else if (_config.interval && _config.ride) {
        data.pause();
        data.cycle();
      }
    };
Mark Otto's avatar
dist  
Mark Otto committed
1521

XhmikosR's avatar
XhmikosR committed
1522
    Carousel.jQueryInterface = function jQueryInterface(config) {
XhmikosR's avatar
XhmikosR committed
1523
      return this.each(function () {
XhmikosR's avatar
XhmikosR committed
1524
        Carousel.carouselInterface(this, config);
XhmikosR's avatar
Dist    
XhmikosR committed
1525
1526
      });
    };
Mark Otto's avatar
dist  
Mark Otto committed
1527

XhmikosR's avatar
XhmikosR committed
1528
1529
    Carousel.dataApiClickHandler = function dataApiClickHandler(event) {
      var target = getElementFromSelector(this);
XhmikosR's avatar
Dist    
XhmikosR committed
1530

XhmikosR's avatar
XhmikosR committed
1531
      if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {
XhmikosR's avatar
Dist    
XhmikosR committed
1532
1533
        return;
      }
Mark Otto's avatar
dist  
Mark Otto committed
1534

XhmikosR's avatar
XhmikosR committed
1535
      var config = _extends({}, Manipulator.getDataAttributes(target), Manipulator.getDataAttributes(this));
Mark Otto's avatar
dist    
Mark Otto committed
1536

XhmikosR's avatar
Dist    
XhmikosR committed
1537
      var slideIndex = this.getAttribute('data-slide-to');
Mark Otto's avatar
dist    
Mark Otto committed
1538

XhmikosR's avatar
Dist    
XhmikosR committed
1539
1540
      if (slideIndex) {
        config.interval = false;
Mark Otto's avatar
dist    
Mark Otto committed
1541
      }
Mark Otto's avatar
dist    
Mark Otto committed
1542

XhmikosR's avatar
XhmikosR committed
1543
      Carousel.carouselInterface(target, config);
Mark Otto's avatar
dist  
Mark Otto committed
1544

XhmikosR's avatar
Dist    
XhmikosR committed
1545
      if (slideIndex) {
XhmikosR's avatar
XhmikosR committed
1546
        Data.getData(target, DATA_KEY$2).to(slideIndex);
XhmikosR's avatar
Dist    
XhmikosR committed
1547
1548
1549
      }

      event.preventDefault();
Mark Otto's avatar
dist    
Mark Otto committed
1550
    };
Mark Otto's avatar
dist  
Mark Otto committed
1551

XhmikosR's avatar
XhmikosR committed
1552
    Carousel.getInstance = function getInstance(element) {
XhmikosR's avatar
XhmikosR committed
1553
1554
1555
      return Data.getData(element, DATA_KEY$2);
    };

XhmikosR's avatar
Dist    
XhmikosR committed
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
    _createClass(Carousel, null, [{
      key: "VERSION",
      get: function get() {
        return VERSION$2;
      }
    }, {
      key: "Default",
      get: function get() {
        return Default;
      }
    }]);

Mark Otto's avatar
dist    
Mark Otto committed
1568
    return Carousel;
XhmikosR's avatar
Dist    
XhmikosR committed
1569
1570
1571
1572
1573
1574
1575
1576
  }();
  /**
   * ------------------------------------------------------------------------
   * Data Api implementation
   * ------------------------------------------------------------------------
   */


XhmikosR's avatar
XhmikosR committed
1577
1578
1579
  EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler);
  EventHandler.on(window, EVENT_LOAD_DATA_API, function () {
    var carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);
XhmikosR's avatar
Dist    
XhmikosR committed
1580
1581

    for (var i = 0, len = carousels.length; i < len; i++) {
XhmikosR's avatar
XhmikosR committed
1582
      Carousel.carouselInterface(carousels[i], Data.getData(carousels[i], DATA_KEY$2));
XhmikosR's avatar
Dist    
XhmikosR committed
1583
1584
1585
1586
1587
1588
    }
  });
  /**
   * ------------------------------------------------------------------------
   * jQuery
   * ------------------------------------------------------------------------
XhmikosR's avatar
XhmikosR committed
1589
   * add .Carousel to jQuery only if jQuery is present
XhmikosR's avatar
Dist    
XhmikosR committed
1590
1591
   */

XhmikosR's avatar
XhmikosR committed
1592
1593
1594
  onDOMContentLoaded(function () {
    var $ = getjQuery();
    /* istanbul ignore if */
1595

XhmikosR's avatar
XhmikosR committed
1596
1597
1598
1599
    if ($) {
      var JQUERY_NO_CONFLICT = $.fn[NAME$2];
      $.fn[NAME$2] = Carousel.jQueryInterface;
      $.fn[NAME$2].Constructor = Carousel;
XhmikosR's avatar
Dist    
XhmikosR committed
1600

XhmikosR's avatar
XhmikosR committed
1601
1602
1603
1604
1605
1606
      $.fn[NAME$2].noConflict = function () {
        $.fn[NAME$2] = JQUERY_NO_CONFLICT;
        return Carousel.jQueryInterface;
      };
    }
  });
Mark Otto's avatar
dist  
Mark Otto committed
1607

XhmikosR's avatar
Dist    
XhmikosR committed
1608
1609
1610
1611
1612
  /**
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
   */
Mark Otto's avatar
dist  
Mark Otto committed
1613

XhmikosR's avatar
Dist    
XhmikosR committed
1614
  var NAME$3 = 'collapse';
XhmikosR's avatar
XhmikosR committed
1615
  var VERSION$3 = '5.0.0-alpha3';
XhmikosR's avatar
Dist    
XhmikosR committed
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
  var DATA_KEY$3 = 'bs.collapse';
  var EVENT_KEY$3 = "." + DATA_KEY$3;
  var DATA_API_KEY$3 = '.data-api';
  var Default$1 = {
    toggle: true,
    parent: ''
  };
  var DefaultType$1 = {
    toggle: 'boolean',
    parent: '(string|element)'
  };
XhmikosR's avatar
XhmikosR committed
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
  var EVENT_SHOW = "show" + EVENT_KEY$3;
  var EVENT_SHOWN = "shown" + EVENT_KEY$3;
  var EVENT_HIDE = "hide" + EVENT_KEY$3;
  var EVENT_HIDDEN = "hidden" + EVENT_KEY$3;
  var EVENT_CLICK_DATA_API$3 = "click" + EVENT_KEY$3 + DATA_API_KEY$3;
  var CLASS_NAME_SHOW = 'show';
  var CLASS_NAME_COLLAPSE = 'collapse';
  var CLASS_NAME_COLLAPSING = 'collapsing';
  var CLASS_NAME_COLLAPSED = 'collapsed';
  var WIDTH = 'width';
  var HEIGHT = 'height';
  var SELECTOR_ACTIVES = '.show, .collapsing';
  var SELECTOR_DATA_TOGGLE$1 = '[data-toggle="collapse"]';
XhmikosR's avatar
XhmikosR committed
1640
1641
1642
1643
1644
  /**
   * ------------------------------------------------------------------------
   * Class Definition
   * ------------------------------------------------------------------------
   */
Mark Otto's avatar
dist    
Mark Otto committed
1645

XhmikosR's avatar
XhmikosR committed
1646
  var Collapse = /*#__PURE__*/function () {
XhmikosR's avatar
Dist    
XhmikosR committed
1647
1648
1649
1650
    function Collapse(element, config) {
      this._isTransitioning = false;
      this._element = element;
      this._config = this._getConfig(config);
XhmikosR's avatar
XhmikosR committed
1651
1652
      this._triggerArray = SelectorEngine.find(SELECTOR_DATA_TOGGLE$1 + "[href=\"#" + element.id + "\"]," + (SELECTOR_DATA_TOGGLE$1 + "[data-target=\"#" + element.id + "\"]"));
      var toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$1);
XhmikosR's avatar
Dist    
XhmikosR committed
1653
1654
1655

      for (var i = 0, len = toggleList.length; i < len; i++) {
        var elem = toggleList[i];
XhmikosR's avatar
XhmikosR committed
1656
        var selector = getSelectorFromElement(elem);
XhmikosR's avatar
XhmikosR committed
1657
        var filterElement = SelectorEngine.find(selector).filter(function (foundElem) {
XhmikosR's avatar
Dist    
XhmikosR committed
1658
1659
          return foundElem === element;
        });
Mark Otto's avatar
dist  
Mark Otto committed
1660

XhmikosR's avatar
XhmikosR committed
1661
        if (selector !== null && filterElement.length) {
XhmikosR's avatar
Dist    
XhmikosR committed
1662
          this._selector = selector;
Mark Otto's avatar
dist  
Mark Otto committed
1663

XhmikosR's avatar
Dist    
XhmikosR committed
1664
          this._triggerArray.push(elem);
Mark Otto's avatar
dist    
Mark Otto committed
1665
        }
XhmikosR's avatar
Dist    
XhmikosR committed
1666
      }
Mark Otto's avatar
dist  
Mark Otto committed
1667

XhmikosR's avatar
Dist    
XhmikosR committed
1668
      this._parent = this._config.parent ? this._getParent() : null;
Mark Otto's avatar
dist  
Mark Otto committed
1669

XhmikosR's avatar
Dist    
XhmikosR committed
1670
1671
1672
      if (!this._config.parent) {
        this._addAriaAndCollapsedClass(this._element, this._triggerArray);
      }
Mark Otto's avatar
dist  
Mark Otto committed
1673

XhmikosR's avatar
Dist    
XhmikosR committed
1674
1675
1676
      if (this._config.toggle) {
        this.toggle();
      }
XhmikosR's avatar
XhmikosR committed
1677
1678

      Data.setData(element, DATA_KEY$3, this);
XhmikosR's avatar
Dist    
XhmikosR committed
1679
    } // Getters
Mark Otto's avatar
dist  
Mark Otto committed
1680
1681


XhmikosR's avatar
Dist    
XhmikosR committed
1682
    var _proto = Collapse.prototype;
Mark Otto's avatar
dist  
Mark Otto committed
1683

XhmikosR's avatar
Dist    
XhmikosR committed
1684
1685
    // Public
    _proto.toggle = function toggle() {
XhmikosR's avatar
XhmikosR committed
1686
      if (this._element.classList.contains(CLASS_NAME_SHOW)) {
XhmikosR's avatar
Dist    
XhmikosR committed
1687
1688
1689
1690
1691
        this.hide();
      } else {
        this.show();
      }
    };
Mark Otto's avatar
dist  
Mark Otto committed
1692

XhmikosR's avatar
Dist    
XhmikosR committed
1693
1694
    _proto.show = function show() {
      var _this = this;
Mark Otto's avatar
dist  
Mark Otto committed
1695

XhmikosR's avatar
XhmikosR committed
1696
      if (this._isTransitioning || this._element.classList.contains(CLASS_NAME_SHOW)) {
XhmikosR's avatar
Dist    
XhmikosR committed
1697
1698
        return;
      }
Mark Otto's avatar
dist    
Mark Otto committed
1699

XhmikosR's avatar
Dist    
XhmikosR committed
1700
1701
      var actives;
      var activesData;
Mark Otto's avatar
dist    
Mark Otto committed
1702

XhmikosR's avatar
Dist    
XhmikosR committed
1703
      if (this._parent) {
XhmikosR's avatar
XhmikosR committed
1704
        actives = SelectorEngine.find(SELECTOR_ACTIVES, this._parent).filter(function (elem) {
XhmikosR's avatar
Dist    
XhmikosR committed
1705
1706
          if (typeof _this._config.parent === 'string') {
            return elem.getAttribute('data-parent') === _this._config.parent;
Mark Otto's avatar
dist    
Mark Otto committed
1707
          }
Mark Otto's avatar
dist  
Mark Otto committed
1708

XhmikosR's avatar
XhmikosR committed
1709
          return elem.classList.contains(CLASS_NAME_COLLAPSE);
XhmikosR's avatar
Dist    
XhmikosR committed
1710
        });
Mark Otto's avatar
dist    
Mark Otto committed
1711

XhmikosR's avatar
Dist    
XhmikosR committed
1712
1713
        if (actives.length === 0) {
          actives = null;
Mark Otto's avatar
dist  
Mark Otto committed
1714
        }
XhmikosR's avatar
Dist    
XhmikosR committed
1715
      }
Mark Otto's avatar
dist  
Mark Otto committed
1716

XhmikosR's avatar
XhmikosR committed
1717
1718
      var container = SelectorEngine.findOne(this._selector);

XhmikosR's avatar
Dist    
XhmikosR committed
1719
      if (actives) {
XhmikosR's avatar
XhmikosR committed
1720
1721
1722
1723
        var tempActiveData = actives.filter(function (elem) {
          return container !== elem;
        });
        activesData = tempActiveData[0] ? Data.getData(tempActiveData[0], DATA_KEY$3) : null;
Mark Otto's avatar
dist    
Mark Otto committed
1724

XhmikosR's avatar
Dist    
XhmikosR committed
1725
        if (activesData && activesData._isTransitioning) {
Mark Otto's avatar
dist    
Mark Otto committed
1726
1727
          return;
        }
XhmikosR's avatar
Dist    
XhmikosR committed
1728
      }
Mark Otto's avatar
dist  
Mark Otto committed
1729

XhmikosR's avatar
XhmikosR committed
1730
      var startEvent = EventHandler.trigger(this._element, EVENT_SHOW);
Mark Otto's avatar
dist  
Mark Otto committed
1731

XhmikosR's avatar
XhmikosR committed
1732
      if (startEvent.defaultPrevented) {
XhmikosR's avatar
Dist    
XhmikosR committed
1733
1734
        return;
      }
Mark Otto's avatar
dist  
Mark Otto committed
1735

XhmikosR's avatar
Dist    
XhmikosR committed
1736
      if (actives) {
XhmikosR's avatar
XhmikosR committed
1737
1738
        actives.forEach(function (elemActive) {
          if (container !== elemActive) {
XhmikosR's avatar
XhmikosR committed
1739
            Collapse.collapseInterface(elemActive, 'hide');
XhmikosR's avatar
XhmikosR committed
1740
          }
Mark Otto's avatar
dist  
Mark Otto committed
1741

XhmikosR's avatar
XhmikosR committed
1742
1743
1744
1745
          if (!activesData) {
            Data.setData(elemActive, DATA_KEY$3, null);
          }
        });
XhmikosR's avatar
Dist    
XhmikosR committed
1746
      }
Mark Otto's avatar
dist  
Mark Otto committed
1747

XhmikosR's avatar
Dist    
XhmikosR committed
1748
      var dimension = this._getDimension();
Mark Otto's avatar
dist  
Mark Otto committed
1749

XhmikosR's avatar
XhmikosR committed
1750
      this._element.classList.remove(CLASS_NAME_COLLAPSE);
XhmikosR's avatar
XhmikosR committed
1751

XhmikosR's avatar
XhmikosR committed
1752
      this._element.classList.add(CLASS_NAME_COLLAPSING);
XhmikosR's avatar
XhmikosR committed
1753

XhmikosR's avatar
Dist    
XhmikosR committed
1754
      this._element.style[dimension] = 0;
Mark Otto's avatar
dist  
Mark Otto committed
1755

XhmikosR's avatar
Dist    
XhmikosR committed
1756
      if (this._triggerArray.length) {
XhmikosR's avatar
XhmikosR committed
1757
        this._triggerArray.forEach(function (element) {
XhmikosR's avatar
XhmikosR committed
1758
          element.classList.remove(CLASS_NAME_COLLAPSED);
XhmikosR's avatar
XhmikosR committed
1759
1760
          element.setAttribute('aria-expanded', true);
        });
XhmikosR's avatar
Dist    
XhmikosR committed
1761
      }
Mark Otto's avatar
dist  
Mark Otto committed
1762

XhmikosR's avatar
Dist    
XhmikosR committed
1763
      this.setTransitioning(true);
Mark Otto's avatar
dist  
Mark Otto committed
1764

XhmikosR's avatar
Dist    
XhmikosR committed
1765
      var complete = function complete() {
XhmikosR's avatar
XhmikosR committed
1766
        _this._element.classList.remove(CLASS_NAME_COLLAPSING);
XhmikosR's avatar
XhmikosR committed
1767

XhmikosR's avatar
XhmikosR committed
1768
        _this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);
XhmikosR's avatar
XhmikosR committed
1769

XhmikosR's avatar
Dist    
XhmikosR committed
1770
1771
1772
1773
        _this._element.style[dimension] = '';

        _this.setTransitioning(false);

XhmikosR's avatar
XhmikosR committed
1774
        EventHandler.trigger(_this._element, EVENT_SHOWN);
Mark Otto's avatar
dist    
Mark Otto committed
1775
      };
Mark Otto's avatar
dist  
Mark Otto committed
1776

XhmikosR's avatar
Dist    
XhmikosR committed
1777
1778
      var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
      var scrollSize = "scroll" + capitalizedDimension;
XhmikosR's avatar
XhmikosR committed
1779
1780
1781
      var transitionDuration = getTransitionDurationFromElement(this._element);
      EventHandler.one(this._element, TRANSITION_END, complete);
      emulateTransitionEnd(this._element, transitionDuration);
XhmikosR's avatar
Dist    
XhmikosR committed
1782
1783
      this._element.style[dimension] = this._element[scrollSize] + "px";
    };
Mark Otto's avatar
dist  
Mark Otto committed
1784

XhmikosR's avatar
Dist    
XhmikosR committed
1785
1786
1787
    _proto.hide = function hide() {
      var _this2 = this;

XhmikosR's avatar
XhmikosR committed
1788
      if (this._isTransitioning || !this._element.classList.contains(CLASS_NAME_SHOW)) {
XhmikosR's avatar
Dist    
XhmikosR committed
1789
1790
        return;
      }
Mark Otto's avatar
dist  
Mark Otto committed
1791

XhmikosR's avatar
XhmikosR committed
1792
      var startEvent = EventHandler.trigger(this._element, EVENT_HIDE);
Mark Otto's avatar
dist    
Mark Otto committed
1793

XhmikosR's avatar
XhmikosR committed
1794
      if (startEvent.defaultPrevented) {
XhmikosR's avatar
Dist    
XhmikosR committed
1795
1796
        return;
      }
Mark Otto's avatar
dist  
Mark Otto committed
1797

XhmikosR's avatar
Dist    
XhmikosR committed
1798
      var dimension = this._getDimension();
Mark Otto's avatar
dist  
Mark Otto committed
1799

XhmikosR's avatar
Dist    
XhmikosR committed
1800
      this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px";
XhmikosR's avatar
XhmikosR committed
1801
1802
      reflow(this._element);

XhmikosR's avatar
XhmikosR committed
1803
      this._element.classList.add(CLASS_NAME_COLLAPSING);
XhmikosR's avatar
XhmikosR committed
1804

XhmikosR's avatar
XhmikosR committed
1805
      this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);
XhmikosR's avatar
XhmikosR committed
1806

XhmikosR's avatar
Dist    
XhmikosR committed
1807
      var triggerArrayLength = this._triggerArray.length;
Mark Otto's avatar
dist  
Mark Otto committed
1808

XhmikosR's avatar
Dist    
XhmikosR committed
1809
1810
1811
      if (triggerArrayLength > 0) {
        for (var i = 0; i < triggerArrayLength; i++) {
          var trigger = this._triggerArray[i];
XhmikosR's avatar
XhmikosR committed
1812
          var elem = getElementFromSelector(trigger);
Mark Otto's avatar
dist    
Mark Otto committed
1813

XhmikosR's avatar
XhmikosR committed
1814
1815
          if (elem && !elem.classList.contains(CLASS_NAME_SHOW)) {
            trigger.classList.add(CLASS_NAME_COLLAPSED);
XhmikosR's avatar
XhmikosR committed
1816
            trigger.setAttribute('aria-expanded', false);
Mark Otto's avatar
dist  
Mark Otto committed
1817
1818
          }
        }
XhmikosR's avatar
Dist    
XhmikosR committed
1819
      }
Mark Otto's avatar
dist  
Mark Otto committed
1820

XhmikosR's avatar
Dist    
XhmikosR committed
1821
      this.setTransitioning(true);
Mark Otto's avatar
dist  
Mark Otto committed
1822

XhmikosR's avatar
Dist    
XhmikosR committed
1823
1824
      var complete = function complete() {
        _this2.setTransitioning(false);
Mark Otto's avatar
dist  
Mark Otto committed
1825

XhmikosR's avatar
XhmikosR committed
1826
        _this2._element.classList.remove(CLASS_NAME_COLLAPSING);
XhmikosR's avatar
XhmikosR committed
1827

XhmikosR's avatar
XhmikosR committed
1828
        _this2._element.classList.add(CLASS_NAME_COLLAPSE);
XhmikosR's avatar
XhmikosR committed
1829

XhmikosR's avatar
XhmikosR committed
1830
        EventHandler.trigger(_this2._element, EVENT_HIDDEN);
Mark Otto's avatar
dist    
Mark Otto committed
1831
      };
Mark Otto's avatar
dist  
Mark Otto committed
1832

XhmikosR's avatar
Dist    
XhmikosR committed
1833
      this._element.style[dimension] = '';
XhmikosR's avatar
XhmikosR committed
1834
1835
1836
      var transitionDuration = getTransitionDurationFromElement(this._element);
      EventHandler.one(this._element, TRANSITION_END, complete);
      emulateTransitionEnd(this._element, transitionDuration);
XhmikosR's avatar
Dist    
XhmikosR committed
1837
    };
Mark Otto's avatar
dist  
Mark Otto committed
1838

XhmikosR's avatar
Dist    
XhmikosR committed
1839
1840
1841
    _proto.setTransitioning = function setTransitioning(isTransitioning) {
      this._isTransitioning = isTransitioning;
    };
Mark Otto's avatar
dist  
Mark Otto committed
1842

XhmikosR's avatar
Dist    
XhmikosR committed
1843
    _proto.dispose = function dispose() {
XhmikosR's avatar
XhmikosR committed
1844
      Data.removeData(this._element, DATA_KEY$3);
XhmikosR's avatar
Dist    
XhmikosR committed
1845
1846
1847
1848
1849
      this._config = null;
      this._parent = null;
      this._element = null;
      this._triggerArray = null;
      this._isTransitioning = null;
Mark Otto's avatar
Mark Otto committed
1850
1851
    } // Private
    ;
Mark Otto's avatar
dist    
Mark Otto committed
1852

XhmikosR's avatar
Dist    
XhmikosR committed
1853
    _proto._getConfig = function _getConfig(config) {
XhmikosR's avatar
XhmikosR committed
1854
      config = _extends({}, Default$1, config);
XhmikosR's avatar
Dist    
XhmikosR committed
1855
      config.toggle = Boolean(config.toggle); // Coerce string values
Mark Otto's avatar
dist  
Mark Otto committed
1856

XhmikosR's avatar
XhmikosR committed
1857
      typeCheckConfig(NAME$3, config, DefaultType$1);
XhmikosR's avatar
Dist    
XhmikosR committed
1858
1859
      return config;
    };
Mark Otto's avatar
dist  
Mark Otto committed
1860

XhmikosR's avatar
Dist    
XhmikosR committed
1861
    _proto._getDimension = function _getDimension() {
XhmikosR's avatar
XhmikosR committed
1862
      return this._element.classList.contains(WIDTH) ? WIDTH : HEIGHT;
XhmikosR's avatar
Dist    
XhmikosR committed
1863
    };
Mark Otto's avatar
dist  
Mark Otto committed
1864

XhmikosR's avatar
Dist    
XhmikosR committed
1865
1866
    _proto._getParent = function _getParent() {
      var _this3 = this;
Mark Otto's avatar
dist  
Mark Otto committed
1867

XhmikosR's avatar
Dist.    
XhmikosR committed
1868
      var parent = this._config.parent;
Mark Otto's avatar
dist    
Mark Otto committed
1869

XhmikosR's avatar
Dist.    
XhmikosR committed
1870
1871
1872
1873
      if (isElement(parent)) {
        // it's a jQuery object
        if (typeof parent.jquery !== 'undefined' || typeof parent[0] !== 'undefined') {
          parent = parent[0];
XhmikosR's avatar
Dist    
XhmikosR committed
1874
1875
        }
      } else {
XhmikosR's avatar
Dist.    
XhmikosR committed
1876
        parent = SelectorEngine.findOne(parent);
XhmikosR's avatar
Dist    
XhmikosR committed
1877
      }
Mark Otto's avatar
dist  
Mark Otto committed
1878

XhmikosR's avatar
XhmikosR committed
1879
1880
      var selector = SELECTOR_DATA_TOGGLE$1 + "[data-parent=\"" + parent + "\"]";
      SelectorEngine.find(selector, parent).forEach(function (element) {
XhmikosR's avatar
XhmikosR committed
1881
        var selected = getElementFromSelector(element);
1882
1883

        _this3._addAriaAndCollapsedClass(selected, [element]);
XhmikosR's avatar
Dist    
XhmikosR committed
1884
1885
1886
      });
      return parent;
    };
Mark Otto's avatar
dist  
Mark Otto committed
1887

XhmikosR's avatar
XhmikosR committed
1888
    _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {
XhmikosR's avatar
XhmikosR committed
1889
1890
1891
      if (!element || !triggerArray.length) {
        return;
      }
Mark Otto's avatar
dist  
Mark Otto committed
1892

XhmikosR's avatar
XhmikosR committed
1893
1894
1895
1896
1897
1898
      var isOpen = element.classList.contains(CLASS_NAME_SHOW);
      triggerArray.forEach(function (elem) {
        if (isOpen) {
          elem.classList.remove(CLASS_NAME_COLLAPSED);
        } else {
          elem.classList.add(CLASS_NAME_COLLAPSED);
XhmikosR's avatar
XhmikosR committed
1899
        }
XhmikosR's avatar
XhmikosR committed
1900
1901
1902

        elem.setAttribute('aria-expanded', isOpen);
      });
Mark Otto's avatar
Mark Otto committed
1903
1904
    } // Static
    ;
Mark Otto's avatar
dist  
Mark Otto committed
1905

XhmikosR's avatar
XhmikosR committed
1906
    Collapse.collapseInterface = function collapseInterface(element, config) {
XhmikosR's avatar
XhmikosR committed
1907
      var data = Data.getData(element, DATA_KEY$3);
Mark Otto's avatar
dist  
Mark Otto committed
1908

XhmikosR's avatar
XhmikosR committed
1909
      var _config = _extends({}, Default$1, Manipulator.getDataAttributes(element), typeof config === 'object' && config ? config : {});
Mark Otto's avatar
dist  
Mark Otto committed
1910

XhmikosR's avatar
XhmikosR committed
1911
      if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {
XhmikosR's avatar
XhmikosR committed
1912
1913
        _config.toggle = false;
      }
Mark Otto's avatar
dist    
Mark Otto committed
1914

XhmikosR's avatar
XhmikosR committed
1915
1916
1917
1918
1919
1920
      if (!data) {
        data = new Collapse(element, _config);
      }

      if (typeof config === 'string') {
        if (typeof data[config] === 'undefined') {
XhmikosR's avatar
Dist.    
XhmikosR committed
1921
          throw new TypeError("No method named \"" + config + "\"");
XhmikosR's avatar
Dist    
XhmikosR committed
1922
        }
Mark Otto's avatar
dist  
Mark Otto committed
1923

XhmikosR's avatar
XhmikosR committed
1924
1925
1926
        data[config]();
      }
    };
Mark Otto's avatar
dist    
Mark Otto committed
1927

XhmikosR's avatar
XhmikosR committed
1928
    Collapse.jQueryInterface = function jQueryInterface(config) {
XhmikosR's avatar
XhmikosR committed
1929
      return this.each(function () {
XhmikosR's avatar
XhmikosR committed
1930
        Collapse.collapseInterface(this, config);
XhmikosR's avatar
Dist    
XhmikosR committed
1931
1932
      });
    };
Mark Otto's avatar
dist  
Mark Otto committed
1933

XhmikosR's avatar
XhmikosR committed
1934
    Collapse.getInstance = function getInstance(element) {
XhmikosR's avatar
XhmikosR committed
1935
1936
1937
      return Data.getData(element, DATA_KEY$3);
    };

XhmikosR's avatar
Dist    
XhmikosR committed
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
    _createClass(Collapse, null, [{
      key: "VERSION",
      get: function get() {
        return VERSION$3;
      }
    }, {
      key: "Default",
      get: function get() {
        return Default$1;
      }
    }]);
Mark Otto's avatar
dist  
Mark Otto committed
1949

XhmikosR's avatar
Dist    
XhmikosR committed
1950
1951
1952
1953
1954
1955
1956
    return Collapse;
  }();
  /**
   * ------------------------------------------------------------------------
   * Data Api implementation
   * ------------------------------------------------------------------------
   */
Mark Otto's avatar
dist    
Mark Otto committed
1957

Mark Otto's avatar
dist  
Mark Otto committed
1958

XhmikosR's avatar
XhmikosR committed
1959
  EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$1, function (event) {
XhmikosR's avatar
Dist    
XhmikosR committed
1960
    // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
XhmikosR's avatar
XhmikosR committed
1961
    if (event.target.tagName === 'A') {
XhmikosR's avatar
Dist    
XhmikosR committed
1962
1963
      event.preventDefault();
    }
Mark Otto's avatar
dist    
Mark Otto committed
1964

XhmikosR's avatar
XhmikosR committed
1965
1966
    var triggerData = Manipulator.getDataAttributes(this);
    var selector = getSelectorFromElement(this);
XhmikosR's avatar
XhmikosR committed
1967
    var selectorElements = SelectorEngine.find(selector);
XhmikosR's avatar
XhmikosR committed
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
    selectorElements.forEach(function (element) {
      var data = Data.getData(element, DATA_KEY$3);
      var config;

      if (data) {
        // update parent attribute
        if (data._parent === null && typeof triggerData.parent === 'string') {
          data._config.parent = triggerData.parent;
          data._parent = data._getParent();
        }

        config = 'toggle';
      } else {
        config = triggerData;
      }
Mark Otto's avatar
dist  
Mark Otto committed
1983

XhmikosR's avatar
XhmikosR committed
1984
      Collapse.collapseInterface(element, config);
XhmikosR's avatar
Dist    
XhmikosR committed
1985
1986
1987
1988
1989
1990
    });
  });
  /**
   * ------------------------------------------------------------------------
   * jQuery
   * ------------------------------------------------------------------------
XhmikosR's avatar
XhmikosR committed
1991
   * add .Collapse to jQuery only if jQuery is present
XhmikosR's avatar
Dist    
XhmikosR committed
1992
   */
Mark Otto's avatar
dist    
Mark Otto committed
1993

XhmikosR's avatar
XhmikosR committed
1994
1995
1996
  onDOMContentLoaded(function () {
    var $ = getjQuery();
    /* istanbul ignore if */
1997

XhmikosR's avatar
XhmikosR committed
1998
1999
2000
    if ($) {
      var JQUERY_NO_CONFLICT = $.fn[NAME$3];
      $.fn[NAME$3] = Collapse.jQueryInterface;
For faster browsing, not all history is shown. View entire blame