bootstrap.bundle.js 239 KB
Newer Older
XhmikosR's avatar
Dist    
XhmikosR committed
1001
1002
1003
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
Mark Otto's avatar
dist  
Mark Otto committed
1004
   */
Mark Otto's avatar
dist    
Mark Otto committed
1005

XhmikosR's avatar
Dist    
XhmikosR committed
1006
  var NAME$2 = 'carousel';
XhmikosR's avatar
XhmikosR committed
1007
  var VERSION$2 = '5.0.0-alpha3';
XhmikosR's avatar
Dist    
XhmikosR committed
1008
1009
1010
  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
1011
1012
  var ARROW_LEFT_KEY = 'ArrowLeft';
  var ARROW_RIGHT_KEY = 'ArrowRight';
XhmikosR's avatar
Dist    
XhmikosR committed
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
  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
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
  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
1057
  var SELECTOR_ACTIVE = '.active';
XhmikosR's avatar
XhmikosR committed
1058
1059
1060
1061
1062
  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';
XhmikosR's avatar
XhmikosR committed
1063
1064
  var SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';
  var SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]';
XhmikosR's avatar
Dist    
XhmikosR committed
1065
1066
1067
1068
  var PointerType = {
    TOUCH: 'touch',
    PEN: 'pen'
  };
XhmikosR's avatar
XhmikosR committed
1069
1070
1071
1072
1073
  /**
   * ------------------------------------------------------------------------
   * Class Definition
   * ------------------------------------------------------------------------
   */
Mark Otto's avatar
dist    
Mark Otto committed
1074

XhmikosR's avatar
XhmikosR committed
1075
  var Carousel = /*#__PURE__*/function () {
XhmikosR's avatar
Dist    
XhmikosR committed
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
    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
1087
      this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);
XhmikosR's avatar
Dist    
XhmikosR committed
1088
      this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;
XhmikosR's avatar
XhmikosR committed
1089
      this._pointerEvent = Boolean(window.PointerEvent);
XhmikosR's avatar
Dist    
XhmikosR committed
1090
1091

      this._addEventListeners();
XhmikosR's avatar
XhmikosR committed
1092
1093

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


    var _proto = Carousel.prototype;

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

XhmikosR's avatar
Dist    
XhmikosR committed
1106
1107
1108
    _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
1109
      if (!document.hidden && isVisible(this._element)) {
XhmikosR's avatar
Dist    
XhmikosR committed
1110
1111
        this.next();
      }
Mark Otto's avatar
dist  
Mark Otto committed
1112
1113
    };

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

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

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

XhmikosR's avatar
Dist    
XhmikosR committed
1130
1131
1132
      clearInterval(this._interval);
      this._interval = null;
    };
Mark Otto's avatar
dist  
Mark Otto committed
1133

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

XhmikosR's avatar
Dist    
XhmikosR committed
1139
      if (this._interval) {
Mark Otto's avatar
dist    
Mark Otto committed
1140
1141
        clearInterval(this._interval);
        this._interval = null;
XhmikosR's avatar
Dist    
XhmikosR committed
1142
      }
Mark Otto's avatar
dist  
Mark Otto committed
1143

XhmikosR's avatar
XhmikosR committed
1144
      if (this._config && this._config.interval && !this._isPaused) {
XhmikosR's avatar
XhmikosR committed
1145
1146
        this._updateInterval();

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

XhmikosR's avatar
Dist    
XhmikosR committed
1151
1152
    _proto.to = function to(index) {
      var _this = this;
Mark Otto's avatar
dist  
Mark Otto committed
1153

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

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

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

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

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

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

XhmikosR's avatar
Dist    
XhmikosR committed
1177
1178
      this._slide(direction, this._items[index]);
    };
Mark Otto's avatar
dist  
Mark Otto committed
1179

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

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

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

XhmikosR's avatar
Dist    
XhmikosR committed
1203
1204
1205
      if (absDeltax <= SWIPE_THRESHOLD) {
        return;
      }
Mark Otto's avatar
dist    
Mark Otto committed
1206

XhmikosR's avatar
XhmikosR committed
1207
1208
      var direction = absDeltax / this.touchDeltaX;
      this.touchDeltaX = 0; // swipe left
Mark Otto's avatar
dist    
Mark Otto committed
1209

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

Mark Otto's avatar
dist    
Mark Otto committed
1214

XhmikosR's avatar
Dist    
XhmikosR committed
1215
1216
1217
1218
      if (direction < 0) {
        this.next();
      }
    };
Mark Otto's avatar
dist  
Mark Otto committed
1219

XhmikosR's avatar
Dist    
XhmikosR committed
1220
1221
    _proto._addEventListeners = function _addEventListeners() {
      var _this2 = this;
Mark Otto's avatar
dist  
Mark Otto committed
1222

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

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

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

XhmikosR's avatar
Dist    
XhmikosR committed
1243
1244
    _proto._addTouchEventListeners = function _addTouchEventListeners() {
      var _this3 = this;
Mark Otto's avatar
dist    
Mark Otto committed
1245

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

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

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

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

XhmikosR's avatar
Dist    
XhmikosR committed
1270
1271
1272
1273
1274
1275
1276
1277
1278
        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
1279

XhmikosR's avatar
Dist    
XhmikosR committed
1280
1281
1282
          if (_this3.touchTimeout) {
            clearTimeout(_this3.touchTimeout);
          }
Mark Otto's avatar
dist  
Mark Otto committed
1283

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

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

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

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

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

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

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

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

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

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

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

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

XhmikosR's avatar
XhmikosR committed
1354
      var delta = direction === DIRECTION_PREV ? -1 : 1;
XhmikosR's avatar
Dist    
XhmikosR committed
1355
1356
1357
      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
1358

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

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

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

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

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

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

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

XhmikosR's avatar
XhmikosR committed
1388
1389
1390
1391
1392
1393
1394
    _proto._updateInterval = function _updateInterval() {
      var element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);

      if (!element) {
        return;
      }

XhmikosR's avatar
XhmikosR committed
1395
      var elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10);
XhmikosR's avatar
XhmikosR committed
1396
1397
1398
1399
1400
1401
1402
1403
1404

      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
1405
1406
    _proto._slide = function _slide(direction, element) {
      var _this4 = this;
Mark Otto's avatar
dist  
Mark Otto committed
1407

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

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

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

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

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

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

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

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

XhmikosR's avatar
XhmikosR committed
1438
      if (slideEvent.defaultPrevented) {
XhmikosR's avatar
Dist    
XhmikosR committed
1439
1440
        return;
      }
Mark Otto's avatar
dist  
Mark Otto committed
1441

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

XhmikosR's avatar
Dist    
XhmikosR committed
1447
      this._isSliding = true;
Mark Otto's avatar
dist    
Mark Otto committed
1448

XhmikosR's avatar
Dist    
XhmikosR committed
1449
1450
1451
      if (isCycling) {
        this.pause();
      }
Mark Otto's avatar
dist  
Mark Otto committed
1452

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

XhmikosR's avatar
XhmikosR committed
1455
1456
      this._activeElement = nextElement;

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

      if (isCycling) {
        this.cycle();
      }
Mark Otto's avatar
Mark Otto committed
1493
1494
    } // Static
    ;
Mark Otto's avatar
dist  
Mark Otto committed
1495

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

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

XhmikosR's avatar
XhmikosR committed
1501
      if (typeof config === 'object') {
XhmikosR's avatar
XhmikosR committed
1502
        _config = _extends({}, _config, config);
XhmikosR's avatar
XhmikosR committed
1503
      }
Mark Otto's avatar
dist  
Mark Otto committed
1504

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

XhmikosR's avatar
XhmikosR committed
1507
1508
1509
1510
1511
1512
1513
1514
      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
1515
          throw new TypeError("No method named \"" + action + "\"");
Mark Otto's avatar
dist    
Mark Otto committed
1516
        }
Mark Otto's avatar
dist  
Mark Otto committed
1517

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

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

XhmikosR's avatar
XhmikosR committed
1531
1532
    Carousel.dataApiClickHandler = function dataApiClickHandler(event) {
      var target = getElementFromSelector(this);
XhmikosR's avatar
Dist    
XhmikosR committed
1533

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

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

XhmikosR's avatar
XhmikosR committed
1540
      var slideIndex = this.getAttribute('data-bs-slide-to');
Mark Otto's avatar
dist    
Mark Otto committed
1541

XhmikosR's avatar
Dist    
XhmikosR committed
1542
1543
      if (slideIndex) {
        config.interval = false;
Mark Otto's avatar
dist    
Mark Otto committed
1544
      }
Mark Otto's avatar
dist    
Mark Otto committed
1545

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

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

      event.preventDefault();
Mark Otto's avatar
dist    
Mark Otto committed
1553
    };
Mark Otto's avatar
dist  
Mark Otto committed
1554

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

XhmikosR's avatar
Dist    
XhmikosR committed
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
    _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
1571
    return Carousel;
XhmikosR's avatar
Dist    
XhmikosR committed
1572
1573
1574
1575
1576
1577
1578
1579
  }();
  /**
   * ------------------------------------------------------------------------
   * Data Api implementation
   * ------------------------------------------------------------------------
   */


XhmikosR's avatar
XhmikosR committed
1580
1581
1582
  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
1583
1584

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

XhmikosR's avatar
XhmikosR committed
1595
1596
1597
  onDOMContentLoaded(function () {
    var $ = getjQuery();
    /* istanbul ignore if */
1598

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

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

XhmikosR's avatar
Dist    
XhmikosR committed
1611
1612
1613
1614
1615
  /**
   * ------------------------------------------------------------------------
   * Constants
   * ------------------------------------------------------------------------
   */
Mark Otto's avatar
dist  
Mark Otto committed
1616

XhmikosR's avatar
Dist    
XhmikosR committed
1617
  var NAME$3 = 'collapse';
XhmikosR's avatar
XhmikosR committed
1618
  var VERSION$3 = '5.0.0-alpha3';
XhmikosR's avatar
Dist    
XhmikosR committed
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
  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
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
  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';
XhmikosR's avatar
XhmikosR committed
1642
  var SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle="collapse"]';
XhmikosR's avatar
XhmikosR committed
1643
1644
1645
1646
1647
  /**
   * ------------------------------------------------------------------------
   * Class Definition
   * ------------------------------------------------------------------------
   */
Mark Otto's avatar
dist    
Mark Otto committed
1648

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

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

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

XhmikosR's avatar
Dist    
XhmikosR committed
1667
          this._triggerArray.push(elem);
Mark Otto's avatar
dist    
Mark Otto committed
1668
        }
XhmikosR's avatar
Dist    
XhmikosR committed
1669
      }
Mark Otto's avatar
dist  
Mark Otto committed
1670

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

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

XhmikosR's avatar
Dist    
XhmikosR committed
1677
1678
1679
      if (this._config.toggle) {
        this.toggle();
      }
XhmikosR's avatar
XhmikosR committed
1680
1681

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


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

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

XhmikosR's avatar
Dist    
XhmikosR committed
1696
1697
    _proto.show = function show() {
      var _this = this;
Mark Otto's avatar
dist  
Mark Otto committed
1698

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

XhmikosR's avatar
Dist    
XhmikosR committed
1703
1704
      var actives;
      var activesData;
Mark Otto's avatar
dist    
Mark Otto committed
1705

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

XhmikosR's avatar
XhmikosR committed
1712
          return elem.classList.contains(CLASS_NAME_COLLAPSE);
XhmikosR's avatar
Dist    
XhmikosR committed
1713
        });
Mark Otto's avatar
dist    
Mark Otto committed
1714

XhmikosR's avatar
Dist    
XhmikosR committed
1715
1716
        if (actives.length === 0) {
          actives = null;
Mark Otto's avatar
dist  
Mark Otto committed
1717
        }
XhmikosR's avatar
Dist    
XhmikosR committed
1718
      }
Mark Otto's avatar
dist  
Mark Otto committed
1719

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

XhmikosR's avatar
Dist    
XhmikosR committed
1722
      if (actives) {
XhmikosR's avatar
XhmikosR committed
1723
        var tempActiveData = actives.find(function (elem) {
XhmikosR's avatar
XhmikosR committed
1724
1725
          return container !== elem;
        });
XhmikosR's avatar
XhmikosR committed
1726
        activesData = tempActiveData ? Data.getData(tempActiveData, DATA_KEY$3) : null;
Mark Otto's avatar
dist    
Mark Otto committed
1727

XhmikosR's avatar
Dist    
XhmikosR committed
1728
        if (activesData && activesData._isTransitioning) {
Mark Otto's avatar
dist    
Mark Otto committed
1729
1730
          return;
        }
XhmikosR's avatar
Dist    
XhmikosR committed
1731
      }
Mark Otto's avatar
dist  
Mark Otto committed
1732

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

XhmikosR's avatar
XhmikosR committed
1735
      if (startEvent.defaultPrevented) {
XhmikosR's avatar
Dist    
XhmikosR committed
1736
1737
        return;
      }
Mark Otto's avatar
dist  
Mark Otto committed
1738

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

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

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

XhmikosR's avatar
XhmikosR committed
1753
      this._element.classList.remove(CLASS_NAME_COLLAPSE);
XhmikosR's avatar
XhmikosR committed
1754

XhmikosR's avatar
XhmikosR committed
1755
      this._element.classList.add(CLASS_NAME_COLLAPSING);
XhmikosR's avatar
XhmikosR committed
1756

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

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

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

XhmikosR's avatar
Dist    
XhmikosR committed
1768
      var complete = function complete() {
XhmikosR's avatar
XhmikosR committed
1769
        _this._element.classList.remove(CLASS_NAME_COLLAPSING);
XhmikosR's avatar
XhmikosR committed
1770

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

XhmikosR's avatar
Dist    
XhmikosR committed
1773
1774
1775
1776
        _this._element.style[dimension] = '';

        _this.setTransitioning(false);

XhmikosR's avatar
XhmikosR committed
1777
        EventHandler.trigger(_this._element, EVENT_SHOWN);
Mark Otto's avatar
dist    
Mark Otto committed
1778
      };
Mark Otto's avatar
dist  
Mark Otto committed
1779

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

XhmikosR's avatar
Dist    
XhmikosR committed
1788
1789
1790
    _proto.hide = function hide() {
      var _this2 = this;

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

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

XhmikosR's avatar
XhmikosR committed
1797
      if (startEvent.defaultPrevented) {
XhmikosR's avatar
Dist    
XhmikosR committed
1798
1799
        return;
      }
Mark Otto's avatar
dist  
Mark Otto committed
1800

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

XhmikosR's avatar
Dist    
XhmikosR committed
1803
      this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px";
XhmikosR's avatar
XhmikosR committed
1804
1805
      reflow(this._element);

XhmikosR's avatar
XhmikosR committed
1806
      this._element.classList.add(CLASS_NAME_COLLAPSING);
XhmikosR's avatar
XhmikosR committed
1807

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

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

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

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

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

XhmikosR's avatar
Dist    
XhmikosR committed
1826
1827
      var complete = function complete() {
        _this2.setTransitioning(false);
Mark Otto's avatar
dist  
Mark Otto committed
1828

XhmikosR's avatar
XhmikosR committed
1829
        _this2._element.classList.remove(CLASS_NAME_COLLAPSING);
XhmikosR's avatar
XhmikosR committed
1830

XhmikosR's avatar
XhmikosR committed
1831
        _this2._element.classList.add(CLASS_NAME_COLLAPSE);
XhmikosR's avatar
XhmikosR committed
1832

XhmikosR's avatar
XhmikosR committed
1833
        EventHandler.trigger(_this2._element, EVENT_HIDDEN);
Mark Otto's avatar
dist    
Mark Otto committed
1834
      };
Mark Otto's avatar
dist  
Mark Otto committed
1835

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

XhmikosR's avatar
Dist    
XhmikosR committed
1842
1843
1844
    _proto.setTransitioning = function setTransitioning(isTransitioning) {
      this._isTransitioning = isTransitioning;
    };
Mark Otto's avatar
dist  
Mark Otto committed
1845

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

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

XhmikosR's avatar
XhmikosR committed
1860
      typeCheckConfig(NAME$3, config, DefaultType$1);
XhmikosR's avatar
Dist    
XhmikosR committed
1861
1862
      return config;
    };
Mark Otto's avatar
dist  
Mark Otto committed
1863

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

XhmikosR's avatar
Dist    
XhmikosR committed
1868
1869
    _proto._getParent = function _getParent() {
      var _this3 = this;
Mark Otto's avatar
dist  
Mark Otto committed
1870

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

XhmikosR's avatar
Dist.    
XhmikosR committed
1873
1874
1875
1876
      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
1877
1878
        }
      } else {
XhmikosR's avatar
Dist.    
XhmikosR committed
1879
        parent = SelectorEngine.findOne(parent);
XhmikosR's avatar
Dist    
XhmikosR committed
1880
      }
Mark Otto's avatar
dist  
Mark Otto committed
1881

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

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

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

XhmikosR's avatar
XhmikosR committed
1896
1897
1898
1899
1900
1901
      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
1902
        }
XhmikosR's avatar
XhmikosR committed
1903
1904
1905

        elem.setAttribute('aria-expanded', isOpen);
      });
Mark Otto's avatar
Mark Otto committed
1906
1907
    } // Static
    ;
Mark Otto's avatar
dist  
Mark Otto committed
1908

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

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

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

XhmikosR's avatar
XhmikosR committed
1918
1919
1920
1921
1922
1923
      if (!data) {
        data = new Collapse(element, _config);
      }

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

XhmikosR's avatar
XhmikosR committed
1927
1928
1929
        data[config]();
      }
    };
Mark Otto's avatar
dist    
Mark Otto committed
1930

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

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

XhmikosR's avatar
Dist    
XhmikosR committed
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
    _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
1952

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

Mark Otto's avatar
dist  
Mark Otto committed
1961

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

XhmikosR's avatar
XhmikosR committed
1968
1969
    var triggerData = Manipulator.getDataAttributes(this);
    var selector = getSelectorFromElement(this);
XhmikosR's avatar
XhmikosR committed
1970
    var selectorElements = SelectorEngine.find(selector);
XhmikosR's avatar
XhmikosR committed
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
    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
1986

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

XhmikosR's avatar
XhmikosR committed
1997
1998
1999
  onDOMContentLoaded(function () {
    var $ = getjQuery();
    /* istanbul ignore if */
2000

For faster browsing, not all history is shown. View entire blame