bootstrap.esm.js 143 KB
Newer Older
XhmikosR's avatar
XhmikosR committed
1001
  ;
XhmikosR's avatar
Dist.  
XhmikosR committed
1002

XhmikosR's avatar
XhmikosR committed
1003
  Button.jQueryInterface = function jQueryInterface(config) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1004
    return this.each(function () {
XhmikosR's avatar
XhmikosR committed
1005
      var data = Data.getData(this, DATA_KEY$1);
XhmikosR's avatar
Dist.  
XhmikosR committed
1006
1007
1008
1009
1010
1011
1012
1013
1014

      if (!data) {
        data = new Button(this);
      }

      if (config === 'toggle') {
        data[config]();
      }
    });
XhmikosR's avatar
XhmikosR committed
1015
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
1016

XhmikosR's avatar
XhmikosR committed
1017
  Button.getInstance = function getInstance(element) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1018
    return Data.getData(element, DATA_KEY$1);
XhmikosR's avatar
XhmikosR committed
1019
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
1020

XhmikosR's avatar
XhmikosR committed
1021
1022
1023
1024
1025
1026
1027
1028
1029
  _createClass(Button, null, [{
    key: "VERSION",
    get: function get() {
      return VERSION$1;
    }
  }]);

  return Button;
}();
XhmikosR's avatar
Dist.  
XhmikosR committed
1030
1031
1032
1033
1034
1035
1036
/**
 * ------------------------------------------------------------------------
 * Data Api implementation
 * ------------------------------------------------------------------------
 */


XhmikosR's avatar
XhmikosR committed
1037
EventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE_CARROT, function (event) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1038
  event.preventDefault();
XhmikosR's avatar
XhmikosR committed
1039
  var button = event.target.closest(SELECTOR_BUTTON);
XhmikosR's avatar
XhmikosR committed
1040
  var data = Data.getData(button, DATA_KEY$1);
XhmikosR's avatar
Dist.  
XhmikosR committed
1041
1042
1043
1044
1045
1046
1047

  if (!data) {
    data = new Button(button);
  }

  data.toggle();
});
XhmikosR's avatar
XhmikosR committed
1048
EventHandler.on(document, EVENT_FOCUS_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function (event) {
XhmikosR's avatar
XhmikosR committed
1049
  var button = event.target.closest(SELECTOR_BUTTON);
XhmikosR's avatar
XhmikosR committed
1050
1051

  if (button) {
XhmikosR's avatar
XhmikosR committed
1052
    button.classList.add(CLASS_NAME_FOCUS);
XhmikosR's avatar
XhmikosR committed
1053
  }
XhmikosR's avatar
Dist.  
XhmikosR committed
1054
});
XhmikosR's avatar
XhmikosR committed
1055
EventHandler.on(document, EVENT_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function (event) {
XhmikosR's avatar
XhmikosR committed
1056
  var button = event.target.closest(SELECTOR_BUTTON);
XhmikosR's avatar
XhmikosR committed
1057
1058

  if (button) {
XhmikosR's avatar
XhmikosR committed
1059
    button.classList.remove(CLASS_NAME_FOCUS);
XhmikosR's avatar
XhmikosR committed
1060
  }
XhmikosR's avatar
Dist.  
XhmikosR committed
1061
});
XhmikosR's avatar
XhmikosR committed
1062
var $$2 = getjQuery();
XhmikosR's avatar
Dist.  
XhmikosR committed
1063
1064
1065
1066
1067
1068
1069
/**
 * ------------------------------------------------------------------------
 * jQuery
 * ------------------------------------------------------------------------
 * add .button to jQuery only if jQuery is present
 */

1070
1071
/* istanbul ignore if */

XhmikosR's avatar
XhmikosR committed
1072
1073
1074
1075
if ($$2) {
  var JQUERY_NO_CONFLICT$1 = $$2.fn[NAME$1];
  $$2.fn[NAME$1] = Button.jQueryInterface;
  $$2.fn[NAME$1].Constructor = Button;
XhmikosR's avatar
Dist.  
XhmikosR committed
1076

XhmikosR's avatar
XhmikosR committed
1077
1078
1079
  $$2.fn[NAME$1].noConflict = function () {
    $$2.fn[NAME$1] = JQUERY_NO_CONFLICT$1;
    return Button.jQueryInterface;
XhmikosR's avatar
Dist.  
XhmikosR committed
1080
1081
1082
1083
1084
  };
}

/**
 * --------------------------------------------------------------------------
1085
 * Bootstrap (v5.0.0-alpha1): dom/manipulator.js
XhmikosR's avatar
Dist.  
XhmikosR committed
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * --------------------------------------------------------------------------
 */
function normalizeData(val) {
  if (val === 'true') {
    return true;
  }

  if (val === 'false') {
    return false;
  }

  if (val === Number(val).toString()) {
    return Number(val);
  }

  if (val === '' || val === 'null') {
    return null;
  }

  return val;
}

function normalizeDataKey(key) {
XhmikosR's avatar
XhmikosR committed
1110
  return key.replace(/[A-Z]/g, function (chr) {
XhmikosR's avatar
XhmikosR committed
1111
    return "-" + chr.toLowerCase();
XhmikosR's avatar
XhmikosR committed
1112
  });
XhmikosR's avatar
Dist.  
XhmikosR committed
1113
1114
}

XhmikosR's avatar
XhmikosR committed
1115
1116
1117
var Manipulator = {
  setDataAttribute: function setDataAttribute(element, key, value) {
    element.setAttribute("data-" + normalizeDataKey(key), value);
XhmikosR's avatar
Dist.  
XhmikosR committed
1118
  },
XhmikosR's avatar
XhmikosR committed
1119
1120
  removeDataAttribute: function removeDataAttribute(element, key) {
    element.removeAttribute("data-" + normalizeDataKey(key));
XhmikosR's avatar
Dist.  
XhmikosR committed
1121
  },
XhmikosR's avatar
XhmikosR committed
1122
  getDataAttributes: function getDataAttributes(element) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1123
1124
1125
1126
    if (!element) {
      return {};
    }

1127
    var attributes = _objectSpread2({}, element.dataset);
XhmikosR's avatar
Dist.  
XhmikosR committed
1128

XhmikosR's avatar
XhmikosR committed
1129
    Object.keys(attributes).forEach(function (key) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1130
1131
1132
1133
      attributes[key] = normalizeData(attributes[key]);
    });
    return attributes;
  },
XhmikosR's avatar
XhmikosR committed
1134
1135
  getDataAttribute: function getDataAttribute(element, key) {
    return normalizeData(element.getAttribute("data-" + normalizeDataKey(key)));
XhmikosR's avatar
Dist.  
XhmikosR committed
1136
  },
XhmikosR's avatar
XhmikosR committed
1137
1138
  offset: function offset(element) {
    var rect = element.getBoundingClientRect();
XhmikosR's avatar
Dist.  
XhmikosR committed
1139
1140
1141
1142
1143
    return {
      top: rect.top + document.body.scrollTop,
      left: rect.left + document.body.scrollLeft
    };
  },
XhmikosR's avatar
XhmikosR committed
1144
  position: function position(element) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1145
1146
1147
1148
1149
    return {
      top: element.offsetTop,
      left: element.offsetLeft
    };
  },
XhmikosR's avatar
XhmikosR committed
1150
  toggleClass: function toggleClass(element, className) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
    if (!element) {
      return;
    }

    if (element.classList.contains(className)) {
      element.classList.remove(className);
    } else {
      element.classList.add(className);
    }
  }
};

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

XhmikosR's avatar
XhmikosR committed
1169
var NAME$2 = 'carousel';
1170
var VERSION$2 = '5.0.0-alpha1';
XhmikosR's avatar
XhmikosR committed
1171
1172
1173
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
1174
1175
var ARROW_LEFT_KEY = 'ArrowLeft';
var ARROW_RIGHT_KEY = 'ArrowRight';
XhmikosR's avatar
XhmikosR committed
1176
var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch
XhmikosR's avatar
Dist.  
XhmikosR committed
1177

XhmikosR's avatar
XhmikosR committed
1178
1179
var SWIPE_THRESHOLD = 40;
var Default = {
XhmikosR's avatar
Dist.  
XhmikosR committed
1180
1181
1182
1183
1184
1185
1186
  interval: 5000,
  keyboard: true,
  slide: false,
  pause: 'hover',
  wrap: true,
  touch: true
};
XhmikosR's avatar
XhmikosR committed
1187
var DefaultType = {
XhmikosR's avatar
Dist.  
XhmikosR committed
1188
1189
1190
1191
1192
1193
1194
  interval: '(number|boolean)',
  keyboard: 'boolean',
  slide: '(boolean|string)',
  pause: '(string|boolean)',
  wrap: 'boolean',
  touch: 'boolean'
};
XhmikosR's avatar
XhmikosR committed
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
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';
var SELECTOR_ACTIVE$1 = '.active';
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
XhmikosR committed
1228
var PointerType = {
XhmikosR's avatar
Dist.  
XhmikosR committed
1229
1230
1231
  TOUCH: 'touch',
  PEN: 'pen'
};
XhmikosR's avatar
XhmikosR committed
1232
1233
1234
1235
1236
/**
 * ------------------------------------------------------------------------
 * Class Definition
 * ------------------------------------------------------------------------
 */
XhmikosR's avatar
Dist.  
XhmikosR committed
1237

XhmikosR's avatar
XhmikosR committed
1238
var Carousel = /*#__PURE__*/function () {
XhmikosR's avatar
XhmikosR committed
1239
  function Carousel(element, config) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
    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
1250
    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);
XhmikosR's avatar
Dist.  
XhmikosR committed
1251
    this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;
XhmikosR's avatar
XhmikosR committed
1252
    this._pointerEvent = Boolean(window.PointerEvent);
XhmikosR's avatar
Dist.  
XhmikosR committed
1253
1254
1255
1256
1257
1258
1259

    this._addEventListeners();

    Data.setData(element, DATA_KEY$2, this);
  } // Getters


XhmikosR's avatar
XhmikosR committed
1260
  var _proto = Carousel.prototype;
XhmikosR's avatar
Dist.  
XhmikosR committed
1261

XhmikosR's avatar
XhmikosR committed
1262
1263
  // Public
  _proto.next = function next() {
XhmikosR's avatar
Dist.  
XhmikosR committed
1264
    if (!this._isSliding) {
XhmikosR's avatar
XhmikosR committed
1265
      this._slide(DIRECTION_NEXT);
XhmikosR's avatar
Dist.  
XhmikosR committed
1266
    }
XhmikosR's avatar
XhmikosR committed
1267
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
1268

XhmikosR's avatar
XhmikosR committed
1269
  _proto.nextWhenVisible = function nextWhenVisible() {
XhmikosR's avatar
Dist.  
XhmikosR committed
1270
1271
1272
1273
1274
    // Don't call next when the page isn't visible
    // or the carousel or its parent isn't visible
    if (!document.hidden && isVisible(this._element)) {
      this.next();
    }
XhmikosR's avatar
XhmikosR committed
1275
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
1276

XhmikosR's avatar
XhmikosR committed
1277
  _proto.prev = function prev() {
XhmikosR's avatar
Dist.  
XhmikosR committed
1278
    if (!this._isSliding) {
XhmikosR's avatar
XhmikosR committed
1279
      this._slide(DIRECTION_PREV);
XhmikosR's avatar
Dist.  
XhmikosR committed
1280
    }
XhmikosR's avatar
XhmikosR committed
1281
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
1282

XhmikosR's avatar
XhmikosR committed
1283
  _proto.pause = function pause(event) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1284
1285
1286
1287
    if (!event) {
      this._isPaused = true;
    }

XhmikosR's avatar
XhmikosR committed
1288
    if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1289
1290
1291
1292
1293
1294
      triggerTransitionEnd(this._element);
      this.cycle(true);
    }

    clearInterval(this._interval);
    this._interval = null;
XhmikosR's avatar
XhmikosR committed
1295
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
1296

XhmikosR's avatar
XhmikosR committed
1297
  _proto.cycle = function cycle(event) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
    if (!event) {
      this._isPaused = false;
    }

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

    if (this._config && this._config.interval && !this._isPaused) {
      this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);
    }
XhmikosR's avatar
XhmikosR committed
1310
1311
1312
1313
  };

  _proto.to = function to(index) {
    var _this = this;
XhmikosR's avatar
Dist.  
XhmikosR committed
1314

XhmikosR's avatar
XhmikosR committed
1315
    this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
XhmikosR's avatar
Dist.  
XhmikosR committed
1316

XhmikosR's avatar
XhmikosR committed
1317
    var activeIndex = this._getItemIndex(this._activeElement);
XhmikosR's avatar
Dist.  
XhmikosR committed
1318
1319
1320
1321
1322
1323

    if (index > this._items.length - 1 || index < 0) {
      return;
    }

    if (this._isSliding) {
XhmikosR's avatar
XhmikosR committed
1324
      EventHandler.one(this._element, EVENT_SLID, function () {
XhmikosR's avatar
XhmikosR committed
1325
1326
        return _this.to(index);
      });
XhmikosR's avatar
Dist.  
XhmikosR committed
1327
1328
1329
1330
1331
1332
1333
1334
1335
      return;
    }

    if (activeIndex === index) {
      this.pause();
      this.cycle();
      return;
    }

XhmikosR's avatar
XhmikosR committed
1336
    var direction = index > activeIndex ? DIRECTION_NEXT : DIRECTION_PREV;
XhmikosR's avatar
Dist.  
XhmikosR committed
1337
1338

    this._slide(direction, this._items[index]);
XhmikosR's avatar
XhmikosR committed
1339
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
1340

XhmikosR's avatar
XhmikosR committed
1341
  _proto.dispose = function dispose() {
XhmikosR's avatar
Dist.  
XhmikosR committed
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
    EventHandler.off(this._element, EVENT_KEY$2);
    Data.removeData(this._element, DATA_KEY$2);
    this._items = null;
    this._config = null;
    this._element = null;
    this._interval = null;
    this._isPaused = null;
    this._isSliding = null;
    this._activeElement = null;
    this._indicatorsElement = null;
  } // Private
XhmikosR's avatar
XhmikosR committed
1353
  ;
XhmikosR's avatar
Dist.  
XhmikosR committed
1354

XhmikosR's avatar
XhmikosR committed
1355
  _proto._getConfig = function _getConfig(config) {
XhmikosR's avatar
XhmikosR committed
1356
    config = _objectSpread2(_objectSpread2({}, Default), config);
XhmikosR's avatar
Dist.  
XhmikosR committed
1357
1358
    typeCheckConfig(NAME$2, config, DefaultType);
    return config;
XhmikosR's avatar
XhmikosR committed
1359
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
1360

XhmikosR's avatar
XhmikosR committed
1361
1362
  _proto._handleSwipe = function _handleSwipe() {
    var absDeltax = Math.abs(this.touchDeltaX);
XhmikosR's avatar
Dist.  
XhmikosR committed
1363
1364
1365
1366
1367

    if (absDeltax <= SWIPE_THRESHOLD) {
      return;
    }

XhmikosR's avatar
XhmikosR committed
1368
1369
    var direction = absDeltax / this.touchDeltaX;
    this.touchDeltaX = 0; // swipe left
XhmikosR's avatar
Dist.  
XhmikosR committed
1370
1371
1372
1373
1374
1375
1376
1377
1378

    if (direction > 0) {
      this.prev();
    } // swipe right


    if (direction < 0) {
      this.next();
    }
XhmikosR's avatar
XhmikosR committed
1379
1380
1381
1382
  };

  _proto._addEventListeners = function _addEventListeners() {
    var _this2 = this;
XhmikosR's avatar
Dist.  
XhmikosR committed
1383
1384

    if (this._config.keyboard) {
XhmikosR's avatar
XhmikosR committed
1385
      EventHandler.on(this._element, EVENT_KEYDOWN, function (event) {
XhmikosR's avatar
XhmikosR committed
1386
1387
        return _this2._keydown(event);
      });
XhmikosR's avatar
Dist.  
XhmikosR committed
1388
1389
1390
    }

    if (this._config.pause === 'hover') {
XhmikosR's avatar
XhmikosR committed
1391
      EventHandler.on(this._element, EVENT_MOUSEENTER, function (event) {
XhmikosR's avatar
XhmikosR committed
1392
1393
        return _this2.pause(event);
      });
XhmikosR's avatar
XhmikosR committed
1394
      EventHandler.on(this._element, EVENT_MOUSELEAVE, function (event) {
XhmikosR's avatar
XhmikosR committed
1395
1396
        return _this2.cycle(event);
      });
XhmikosR's avatar
Dist.  
XhmikosR committed
1397
1398
    }

1399
    if (this._config.touch && this._touchSupported) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1400
1401
      this._addTouchEventListeners();
    }
XhmikosR's avatar
XhmikosR committed
1402
1403
1404
1405
  };

  _proto._addTouchEventListeners = function _addTouchEventListeners() {
    var _this3 = this;
XhmikosR's avatar
Dist.  
XhmikosR committed
1406

XhmikosR's avatar
XhmikosR committed
1407
1408
1409
1410
1411
    var start = function start(event) {
      if (_this3._pointerEvent && PointerType[event.pointerType.toUpperCase()]) {
        _this3.touchStartX = event.clientX;
      } else if (!_this3._pointerEvent) {
        _this3.touchStartX = event.touches[0].clientX;
XhmikosR's avatar
Dist.  
XhmikosR committed
1412
1413
1414
      }
    };

XhmikosR's avatar
XhmikosR committed
1415
    var move = function move(event) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1416
1417
      // ensure swiping with one touch and not pinching
      if (event.touches && event.touches.length > 1) {
XhmikosR's avatar
XhmikosR committed
1418
        _this3.touchDeltaX = 0;
XhmikosR's avatar
Dist.  
XhmikosR committed
1419
      } else {
XhmikosR's avatar
XhmikosR committed
1420
        _this3.touchDeltaX = event.touches[0].clientX - _this3.touchStartX;
XhmikosR's avatar
Dist.  
XhmikosR committed
1421
1422
1423
      }
    };

XhmikosR's avatar
XhmikosR committed
1424
1425
1426
    var end = function end(event) {
      if (_this3._pointerEvent && PointerType[event.pointerType.toUpperCase()]) {
        _this3.touchDeltaX = event.clientX - _this3.touchStartX;
XhmikosR's avatar
Dist.  
XhmikosR committed
1427
1428
      }

XhmikosR's avatar
XhmikosR committed
1429
      _this3._handleSwipe();
XhmikosR's avatar
Dist.  
XhmikosR committed
1430

XhmikosR's avatar
XhmikosR committed
1431
      if (_this3._config.pause === 'hover') {
XhmikosR's avatar
Dist.  
XhmikosR committed
1432
1433
1434
1435
1436
1437
1438
        // 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
XhmikosR's avatar
XhmikosR committed
1439
        _this3.pause();
XhmikosR's avatar
Dist.  
XhmikosR committed
1440

XhmikosR's avatar
XhmikosR committed
1441
1442
        if (_this3.touchTimeout) {
          clearTimeout(_this3.touchTimeout);
XhmikosR's avatar
Dist.  
XhmikosR committed
1443
1444
        }

XhmikosR's avatar
XhmikosR committed
1445
1446
1447
        _this3.touchTimeout = setTimeout(function (event) {
          return _this3.cycle(event);
        }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval);
XhmikosR's avatar
Dist.  
XhmikosR committed
1448
1449
1450
      }
    };

XhmikosR's avatar
XhmikosR committed
1451
1452
    SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(function (itemImg) {
      EventHandler.on(itemImg, EVENT_DRAG_START, function (e) {
XhmikosR's avatar
XhmikosR committed
1453
1454
        return e.preventDefault();
      });
XhmikosR's avatar
Dist.  
XhmikosR committed
1455
1456
1457
    });

    if (this._pointerEvent) {
XhmikosR's avatar
XhmikosR committed
1458
      EventHandler.on(this._element, EVENT_POINTERDOWN, function (event) {
XhmikosR's avatar
XhmikosR committed
1459
1460
        return start(event);
      });
XhmikosR's avatar
XhmikosR committed
1461
      EventHandler.on(this._element, EVENT_POINTERUP, function (event) {
XhmikosR's avatar
XhmikosR committed
1462
1463
        return end(event);
      });
XhmikosR's avatar
Dist.  
XhmikosR committed
1464

XhmikosR's avatar
XhmikosR committed
1465
      this._element.classList.add(CLASS_NAME_POINTER_EVENT);
XhmikosR's avatar
Dist.  
XhmikosR committed
1466
    } else {
XhmikosR's avatar
XhmikosR committed
1467
      EventHandler.on(this._element, EVENT_TOUCHSTART, function (event) {
XhmikosR's avatar
XhmikosR committed
1468
1469
        return start(event);
      });
XhmikosR's avatar
XhmikosR committed
1470
      EventHandler.on(this._element, EVENT_TOUCHMOVE, function (event) {
XhmikosR's avatar
XhmikosR committed
1471
1472
        return move(event);
      });
XhmikosR's avatar
XhmikosR committed
1473
      EventHandler.on(this._element, EVENT_TOUCHEND, function (event) {
XhmikosR's avatar
XhmikosR committed
1474
1475
        return end(event);
      });
XhmikosR's avatar
Dist.  
XhmikosR committed
1476
    }
XhmikosR's avatar
XhmikosR committed
1477
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
1478

XhmikosR's avatar
XhmikosR committed
1479
  _proto._keydown = function _keydown(event) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1480
1481
1482
1483
    if (/input|textarea/i.test(event.target.tagName)) {
      return;
    }

XhmikosR's avatar
XhmikosR committed
1484
1485
    switch (event.key) {
      case ARROW_LEFT_KEY:
XhmikosR's avatar
Dist.  
XhmikosR committed
1486
1487
1488
1489
        event.preventDefault();
        this.prev();
        break;

XhmikosR's avatar
XhmikosR committed
1490
      case ARROW_RIGHT_KEY:
XhmikosR's avatar
Dist.  
XhmikosR committed
1491
1492
1493
1494
        event.preventDefault();
        this.next();
        break;
    }
XhmikosR's avatar
XhmikosR committed
1495
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
1496

XhmikosR's avatar
XhmikosR committed
1497
  _proto._getItemIndex = function _getItemIndex(element) {
XhmikosR's avatar
XhmikosR committed
1498
    this._items = element && element.parentNode ? SelectorEngine.find(SELECTOR_ITEM, element.parentNode) : [];
XhmikosR's avatar
Dist.  
XhmikosR committed
1499
    return this._items.indexOf(element);
XhmikosR's avatar
XhmikosR committed
1500
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
1501

XhmikosR's avatar
XhmikosR committed
1502
  _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {
XhmikosR's avatar
XhmikosR committed
1503
1504
    var isNextDirection = direction === DIRECTION_NEXT;
    var isPrevDirection = direction === DIRECTION_PREV;
XhmikosR's avatar
Dist.  
XhmikosR committed
1505

XhmikosR's avatar
XhmikosR committed
1506
    var activeIndex = this._getItemIndex(activeElement);
XhmikosR's avatar
Dist.  
XhmikosR committed
1507

XhmikosR's avatar
XhmikosR committed
1508
1509
    var lastItemIndex = this._items.length - 1;
    var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;
XhmikosR's avatar
Dist.  
XhmikosR committed
1510
1511
1512
1513
1514

    if (isGoingToWrap && !this._config.wrap) {
      return activeElement;
    }

XhmikosR's avatar
XhmikosR committed
1515
    var delta = direction === DIRECTION_PREV ? -1 : 1;
XhmikosR's avatar
XhmikosR committed
1516
    var itemIndex = (activeIndex + delta) % this._items.length;
XhmikosR's avatar
Dist.  
XhmikosR committed
1517
    return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];
XhmikosR's avatar
XhmikosR committed
1518
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
1519

XhmikosR's avatar
XhmikosR committed
1520
1521
  _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {
    var targetIndex = this._getItemIndex(relatedTarget);
XhmikosR's avatar
Dist.  
XhmikosR committed
1522

XhmikosR's avatar
XhmikosR committed
1523
    var fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element));
XhmikosR's avatar
Dist.  
XhmikosR committed
1524

XhmikosR's avatar
XhmikosR committed
1525
    return EventHandler.trigger(this._element, EVENT_SLIDE, {
XhmikosR's avatar
XhmikosR committed
1526
      relatedTarget: relatedTarget,
XhmikosR's avatar
Dist.  
XhmikosR committed
1527
1528
1529
1530
      direction: eventDirectionName,
      from: fromIndex,
      to: targetIndex
    });
XhmikosR's avatar
XhmikosR committed
1531
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
1532

XhmikosR's avatar
XhmikosR committed
1533
  _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1534
    if (this._indicatorsElement) {
XhmikosR's avatar
XhmikosR committed
1535
      var indicators = SelectorEngine.find(SELECTOR_ACTIVE$1, this._indicatorsElement);
XhmikosR's avatar
Dist.  
XhmikosR committed
1536

XhmikosR's avatar
XhmikosR committed
1537
      for (var i = 0; i < indicators.length; i++) {
XhmikosR's avatar
XhmikosR committed
1538
        indicators[i].classList.remove(CLASS_NAME_ACTIVE$1);
XhmikosR's avatar
Dist.  
XhmikosR committed
1539
1540
      }

XhmikosR's avatar
XhmikosR committed
1541
      var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];
XhmikosR's avatar
Dist.  
XhmikosR committed
1542
1543

      if (nextIndicator) {
XhmikosR's avatar
XhmikosR committed
1544
        nextIndicator.classList.add(CLASS_NAME_ACTIVE$1);
XhmikosR's avatar
Dist.  
XhmikosR committed
1545
1546
      }
    }
XhmikosR's avatar
XhmikosR committed
1547
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
1548

XhmikosR's avatar
XhmikosR committed
1549
1550
  _proto._slide = function _slide(direction, element) {
    var _this4 = this;
XhmikosR's avatar
Dist.  
XhmikosR committed
1551

XhmikosR's avatar
XhmikosR committed
1552
    var activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
XhmikosR's avatar
Dist.  
XhmikosR committed
1553

XhmikosR's avatar
XhmikosR committed
1554
    var activeElementIndex = this._getItemIndex(activeElement);
XhmikosR's avatar
Dist.  
XhmikosR committed
1555

XhmikosR's avatar
XhmikosR committed
1556
    var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);
XhmikosR's avatar
Dist.  
XhmikosR committed
1557

XhmikosR's avatar
XhmikosR committed
1558
1559
1560
1561
1562
1563
    var nextElementIndex = this._getItemIndex(nextElement);

    var isCycling = Boolean(this._interval);
    var directionalClassName;
    var orderClassName;
    var eventDirectionName;
XhmikosR's avatar
Dist.  
XhmikosR committed
1564

XhmikosR's avatar
XhmikosR committed
1565
1566
1567
1568
    if (direction === DIRECTION_NEXT) {
      directionalClassName = CLASS_NAME_LEFT;
      orderClassName = CLASS_NAME_NEXT;
      eventDirectionName = DIRECTION_LEFT;
XhmikosR's avatar
Dist.  
XhmikosR committed
1569
    } else {
XhmikosR's avatar
XhmikosR committed
1570
1571
1572
      directionalClassName = CLASS_NAME_RIGHT;
      orderClassName = CLASS_NAME_PREV;
      eventDirectionName = DIRECTION_RIGHT;
XhmikosR's avatar
Dist.  
XhmikosR committed
1573
1574
    }

XhmikosR's avatar
XhmikosR committed
1575
    if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE$1)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1576
1577
1578
1579
      this._isSliding = false;
      return;
    }

XhmikosR's avatar
XhmikosR committed
1580
    var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);
XhmikosR's avatar
Dist.  
XhmikosR committed
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598

    if (slideEvent.defaultPrevented) {
      return;
    }

    if (!activeElement || !nextElement) {
      // Some weirdness is happening, so we bail
      return;
    }

    this._isSliding = true;

    if (isCycling) {
      this.pause();
    }

    this._setActiveIndicatorElement(nextElement);

XhmikosR's avatar
XhmikosR committed
1599
    if (this._element.classList.contains(CLASS_NAME_SLIDE)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1600
1601
1602
1603
      nextElement.classList.add(orderClassName);
      reflow(nextElement);
      activeElement.classList.add(directionalClassName);
      nextElement.classList.add(directionalClassName);
XhmikosR's avatar
XhmikosR committed
1604
      var nextElementInterval = parseInt(nextElement.getAttribute('data-interval'), 10);
XhmikosR's avatar
Dist.  
XhmikosR committed
1605
1606
1607
1608
1609
1610
1611
1612

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

XhmikosR's avatar
XhmikosR committed
1613
1614
      var transitionDuration = getTransitionDurationFromElement(activeElement);
      EventHandler.one(activeElement, TRANSITION_END, function () {
XhmikosR's avatar
XhmikosR committed
1615
        nextElement.classList.remove(directionalClassName, orderClassName);
XhmikosR's avatar
XhmikosR committed
1616
        nextElement.classList.add(CLASS_NAME_ACTIVE$1);
XhmikosR's avatar
XhmikosR committed
1617
        activeElement.classList.remove(CLASS_NAME_ACTIVE$1, orderClassName, directionalClassName);
XhmikosR's avatar
XhmikosR committed
1618
1619
        _this4._isSliding = false;
        setTimeout(function () {
XhmikosR's avatar
XhmikosR committed
1620
          EventHandler.trigger(_this4._element, EVENT_SLID, {
XhmikosR's avatar
Dist.  
XhmikosR committed
1621
1622
1623
1624
1625
1626
1627
1628
1629
            relatedTarget: nextElement,
            direction: eventDirectionName,
            from: activeElementIndex,
            to: nextElementIndex
          });
        }, 0);
      });
      emulateTransitionEnd(activeElement, transitionDuration);
    } else {
XhmikosR's avatar
XhmikosR committed
1630
1631
      activeElement.classList.remove(CLASS_NAME_ACTIVE$1);
      nextElement.classList.add(CLASS_NAME_ACTIVE$1);
XhmikosR's avatar
Dist.  
XhmikosR committed
1632
      this._isSliding = false;
XhmikosR's avatar
XhmikosR committed
1633
      EventHandler.trigger(this._element, EVENT_SLID, {
XhmikosR's avatar
Dist.  
XhmikosR committed
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
        relatedTarget: nextElement,
        direction: eventDirectionName,
        from: activeElementIndex,
        to: nextElementIndex
      });
    }

    if (isCycling) {
      this.cycle();
    }
  } // Static
XhmikosR's avatar
XhmikosR committed
1645
  ;
XhmikosR's avatar
Dist.  
XhmikosR committed
1646

XhmikosR's avatar
XhmikosR committed
1647
  Carousel.carouselInterface = function carouselInterface(element, config) {
XhmikosR's avatar
XhmikosR committed
1648
    var data = Data.getData(element, DATA_KEY$2);
XhmikosR's avatar
Dist.  
XhmikosR committed
1649

XhmikosR's avatar
XhmikosR committed
1650
    var _config = _objectSpread2(_objectSpread2({}, Default), Manipulator.getDataAttributes(element));
XhmikosR's avatar
Dist.  
XhmikosR committed
1651
1652

    if (typeof config === 'object') {
XhmikosR's avatar
XhmikosR committed
1653
      _config = _objectSpread2(_objectSpread2({}, _config), config);
XhmikosR's avatar
Dist.  
XhmikosR committed
1654
1655
    }

XhmikosR's avatar
XhmikosR committed
1656
    var action = typeof config === 'string' ? config : _config.slide;
XhmikosR's avatar
Dist.  
XhmikosR committed
1657
1658
1659
1660
1661
1662
1663
1664
1665

    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
XhmikosR committed
1666
        throw new TypeError("No method named \"" + action + "\"");
XhmikosR's avatar
Dist.  
XhmikosR committed
1667
1668
1669
1670
1671
1672
1673
      }

      data[action]();
    } else if (_config.interval && _config.ride) {
      data.pause();
      data.cycle();
    }
XhmikosR's avatar
XhmikosR committed
1674
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
1675

XhmikosR's avatar
XhmikosR committed
1676
  Carousel.jQueryInterface = function jQueryInterface(config) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1677
    return this.each(function () {
XhmikosR's avatar
XhmikosR committed
1678
      Carousel.carouselInterface(this, config);
XhmikosR's avatar
Dist.  
XhmikosR committed
1679
    });
XhmikosR's avatar
XhmikosR committed
1680
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
1681

XhmikosR's avatar
XhmikosR committed
1682
1683
  Carousel.dataApiClickHandler = function dataApiClickHandler(event) {
    var target = getElementFromSelector(this);
XhmikosR's avatar
Dist.  
XhmikosR committed
1684

XhmikosR's avatar
XhmikosR committed
1685
    if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1686
1687
1688
      return;
    }

XhmikosR's avatar
XhmikosR committed
1689
    var config = _objectSpread2(_objectSpread2({}, Manipulator.getDataAttributes(target)), Manipulator.getDataAttributes(this));
XhmikosR's avatar
Dist.  
XhmikosR committed
1690

XhmikosR's avatar
XhmikosR committed
1691
    var slideIndex = this.getAttribute('data-slide-to');
XhmikosR's avatar
Dist.  
XhmikosR committed
1692
1693
1694
1695
1696

    if (slideIndex) {
      config.interval = false;
    }

XhmikosR's avatar
XhmikosR committed
1697
    Carousel.carouselInterface(target, config);
XhmikosR's avatar
Dist.  
XhmikosR committed
1698
1699
1700
1701
1702
1703

    if (slideIndex) {
      Data.getData(target, DATA_KEY$2).to(slideIndex);
    }

    event.preventDefault();
XhmikosR's avatar
XhmikosR committed
1704
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
1705

XhmikosR's avatar
XhmikosR committed
1706
  Carousel.getInstance = function getInstance(element) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1707
    return Data.getData(element, DATA_KEY$2);
XhmikosR's avatar
XhmikosR committed
1708
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
1709

XhmikosR's avatar
XhmikosR committed
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
  _createClass(Carousel, null, [{
    key: "VERSION",
    get: function get() {
      return VERSION$2;
    }
  }, {
    key: "Default",
    get: function get() {
      return Default;
    }
  }]);

  return Carousel;
}();
XhmikosR's avatar
Dist.  
XhmikosR committed
1724
1725
1726
1727
1728
1729
1730
/**
 * ------------------------------------------------------------------------
 * Data Api implementation
 * ------------------------------------------------------------------------
 */


XhmikosR's avatar
XhmikosR committed
1731
1732
1733
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
1734

XhmikosR's avatar
XhmikosR committed
1735
  for (var i = 0, len = carousels.length; i < len; i++) {
XhmikosR's avatar
XhmikosR committed
1736
    Carousel.carouselInterface(carousels[i], Data.getData(carousels[i], DATA_KEY$2));
XhmikosR's avatar
Dist.  
XhmikosR committed
1737
1738
  }
});
XhmikosR's avatar
XhmikosR committed
1739
var $$3 = getjQuery();
XhmikosR's avatar
Dist.  
XhmikosR committed
1740
1741
1742
1743
1744
1745
1746
/**
 * ------------------------------------------------------------------------
 * jQuery
 * ------------------------------------------------------------------------
 * add .carousel to jQuery only if jQuery is present
 */

1747
1748
/* istanbul ignore if */

XhmikosR's avatar
XhmikosR committed
1749
1750
1751
1752
if ($$3) {
  var JQUERY_NO_CONFLICT$2 = $$3.fn[NAME$2];
  $$3.fn[NAME$2] = Carousel.jQueryInterface;
  $$3.fn[NAME$2].Constructor = Carousel;
XhmikosR's avatar
Dist.  
XhmikosR committed
1753

XhmikosR's avatar
XhmikosR committed
1754
1755
1756
  $$3.fn[NAME$2].noConflict = function () {
    $$3.fn[NAME$2] = JQUERY_NO_CONFLICT$2;
    return Carousel.jQueryInterface;
XhmikosR's avatar
Dist.  
XhmikosR committed
1757
1758
1759
1760
1761
1762
1763
1764
1765
  };
}

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

XhmikosR's avatar
XhmikosR committed
1766
var NAME$3 = 'collapse';
1767
var VERSION$3 = '5.0.0-alpha1';
XhmikosR's avatar
XhmikosR committed
1768
1769
1770
1771
var DATA_KEY$3 = 'bs.collapse';
var EVENT_KEY$3 = "." + DATA_KEY$3;
var DATA_API_KEY$3 = '.data-api';
var Default$1 = {
XhmikosR's avatar
Dist.  
XhmikosR committed
1772
1773
1774
  toggle: true,
  parent: ''
};
XhmikosR's avatar
XhmikosR committed
1775
var DefaultType$1 = {
XhmikosR's avatar
Dist.  
XhmikosR committed
1776
1777
1778
  toggle: 'boolean',
  parent: '(string|element)'
};
XhmikosR's avatar
XhmikosR committed
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
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
1792
1793
1794
1795
1796
/**
 * ------------------------------------------------------------------------
 * Class Definition
 * ------------------------------------------------------------------------
 */
XhmikosR's avatar
Dist.  
XhmikosR committed
1797

XhmikosR's avatar
XhmikosR committed
1798
var Collapse = /*#__PURE__*/function () {
XhmikosR's avatar
XhmikosR committed
1799
  function Collapse(element, config) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1800
1801
1802
    this._isTransitioning = false;
    this._element = element;
    this._config = this._getConfig(config);
XhmikosR's avatar
XhmikosR committed
1803
1804
    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
XhmikosR committed
1805
1806
1807
1808

    for (var i = 0, len = toggleList.length; i < len; i++) {
      var elem = toggleList[i];
      var selector = getSelectorFromElement(elem);
XhmikosR's avatar
XhmikosR committed
1809
      var filterElement = SelectorEngine.find(selector).filter(function (foundElem) {
XhmikosR's avatar
XhmikosR committed
1810
1811
        return foundElem === element;
      });
XhmikosR's avatar
Dist.  
XhmikosR committed
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833

      if (selector !== null && filterElement.length) {
        this._selector = selector;

        this._triggerArray.push(elem);
      }
    }

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

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

    if (this._config.toggle) {
      this.toggle();
    }

    Data.setData(element, DATA_KEY$3, this);
  } // Getters


XhmikosR's avatar
XhmikosR committed
1834
  var _proto = Collapse.prototype;
XhmikosR's avatar
Dist.  
XhmikosR committed
1835

XhmikosR's avatar
XhmikosR committed
1836
1837
  // Public
  _proto.toggle = function toggle() {
XhmikosR's avatar
XhmikosR committed
1838
    if (this._element.classList.contains(CLASS_NAME_SHOW)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1839
1840
1841
1842
      this.hide();
    } else {
      this.show();
    }
XhmikosR's avatar
XhmikosR committed
1843
1844
1845
1846
  };

  _proto.show = function show() {
    var _this = this;
XhmikosR's avatar
Dist.  
XhmikosR committed
1847

XhmikosR's avatar
XhmikosR committed
1848
    if (this._isTransitioning || this._element.classList.contains(CLASS_NAME_SHOW)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1849
1850
1851
      return;
    }

XhmikosR's avatar
XhmikosR committed
1852
1853
    var actives;
    var activesData;
XhmikosR's avatar
Dist.  
XhmikosR committed
1854
1855

    if (this._parent) {
XhmikosR's avatar
XhmikosR committed
1856
      actives = SelectorEngine.find(SELECTOR_ACTIVES, this._parent).filter(function (elem) {
XhmikosR's avatar
XhmikosR committed
1857
1858
        if (typeof _this._config.parent === 'string') {
          return elem.getAttribute('data-parent') === _this._config.parent;
XhmikosR's avatar
Dist.  
XhmikosR committed
1859
1860
        }

XhmikosR's avatar
XhmikosR committed
1861
        return elem.classList.contains(CLASS_NAME_COLLAPSE);
XhmikosR's avatar
Dist.  
XhmikosR committed
1862
1863
1864
1865
1866
1867
1868
      });

      if (actives.length === 0) {
        actives = null;
      }
    }

XhmikosR's avatar
XhmikosR committed
1869
    var container = SelectorEngine.findOne(this._selector);
XhmikosR's avatar
Dist.  
XhmikosR committed
1870
1871

    if (actives) {
XhmikosR's avatar
XhmikosR committed
1872
1873
1874
      var tempActiveData = actives.filter(function (elem) {
        return container !== elem;
      });
XhmikosR's avatar
Dist.  
XhmikosR committed
1875
1876
1877
1878
1879
1880
1881
      activesData = tempActiveData[0] ? Data.getData(tempActiveData[0], DATA_KEY$3) : null;

      if (activesData && activesData._isTransitioning) {
        return;
      }
    }

XhmikosR's avatar
XhmikosR committed
1882
    var startEvent = EventHandler.trigger(this._element, EVENT_SHOW);
XhmikosR's avatar
Dist.  
XhmikosR committed
1883
1884
1885
1886
1887
1888

    if (startEvent.defaultPrevented) {
      return;
    }

    if (actives) {
XhmikosR's avatar
XhmikosR committed
1889
      actives.forEach(function (elemActive) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1890
        if (container !== elemActive) {
XhmikosR's avatar
XhmikosR committed
1891
          Collapse.collapseInterface(elemActive, 'hide');
XhmikosR's avatar
Dist.  
XhmikosR committed
1892
1893
1894
1895
1896
1897
1898
1899
        }

        if (!activesData) {
          Data.setData(elemActive, DATA_KEY$3, null);
        }
      });
    }

XhmikosR's avatar
XhmikosR committed
1900
    var dimension = this._getDimension();
XhmikosR's avatar
Dist.  
XhmikosR committed
1901

XhmikosR's avatar
XhmikosR committed
1902
    this._element.classList.remove(CLASS_NAME_COLLAPSE);
XhmikosR's avatar
Dist.  
XhmikosR committed
1903

XhmikosR's avatar
XhmikosR committed
1904
    this._element.classList.add(CLASS_NAME_COLLAPSING);
XhmikosR's avatar
Dist.  
XhmikosR committed
1905
1906
1907
1908

    this._element.style[dimension] = 0;

    if (this._triggerArray.length) {
XhmikosR's avatar
XhmikosR committed
1909
      this._triggerArray.forEach(function (element) {
XhmikosR's avatar
XhmikosR committed
1910
        element.classList.remove(CLASS_NAME_COLLAPSED);
XhmikosR's avatar
Dist.  
XhmikosR committed
1911
1912
1913
1914
1915
1916
        element.setAttribute('aria-expanded', true);
      });
    }

    this.setTransitioning(true);

XhmikosR's avatar
XhmikosR committed
1917
    var complete = function complete() {
XhmikosR's avatar
XhmikosR committed
1918
      _this._element.classList.remove(CLASS_NAME_COLLAPSING);
XhmikosR's avatar
XhmikosR committed
1919

XhmikosR's avatar
XhmikosR committed
1920
      _this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);
XhmikosR's avatar
Dist.  
XhmikosR committed
1921

XhmikosR's avatar
XhmikosR committed
1922
      _this._element.style[dimension] = '';
XhmikosR's avatar
Dist.  
XhmikosR committed
1923

XhmikosR's avatar
XhmikosR committed
1924
      _this.setTransitioning(false);
XhmikosR's avatar
Dist.  
XhmikosR committed
1925

XhmikosR's avatar
XhmikosR committed
1926
      EventHandler.trigger(_this._element, EVENT_SHOWN);
XhmikosR's avatar
Dist.  
XhmikosR committed
1927
1928
    };

XhmikosR's avatar
XhmikosR committed
1929
1930
1931
    var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
    var scrollSize = "scroll" + capitalizedDimension;
    var transitionDuration = getTransitionDurationFromElement(this._element);
XhmikosR's avatar
Dist.  
XhmikosR committed
1932
1933
    EventHandler.one(this._element, TRANSITION_END, complete);
    emulateTransitionEnd(this._element, transitionDuration);
XhmikosR's avatar
XhmikosR committed
1934
1935
1936
1937
1938
    this._element.style[dimension] = this._element[scrollSize] + "px";
  };

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

XhmikosR's avatar
XhmikosR committed
1940
    if (this._isTransitioning || !this._element.classList.contains(CLASS_NAME_SHOW)) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1941
1942
1943
      return;
    }

XhmikosR's avatar
XhmikosR committed
1944
    var startEvent = EventHandler.trigger(this._element, EVENT_HIDE);
XhmikosR's avatar
Dist.  
XhmikosR committed
1945
1946
1947
1948
1949

    if (startEvent.defaultPrevented) {
      return;
    }

XhmikosR's avatar
XhmikosR committed
1950
    var dimension = this._getDimension();
XhmikosR's avatar
Dist.  
XhmikosR committed
1951

XhmikosR's avatar
XhmikosR committed
1952
    this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px";
XhmikosR's avatar
Dist.  
XhmikosR committed
1953
1954
    reflow(this._element);

XhmikosR's avatar
XhmikosR committed
1955
    this._element.classList.add(CLASS_NAME_COLLAPSING);
XhmikosR's avatar
Dist.  
XhmikosR committed
1956

XhmikosR's avatar
XhmikosR committed
1957
    this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);
XhmikosR's avatar
Dist.  
XhmikosR committed
1958

XhmikosR's avatar
XhmikosR committed
1959
    var triggerArrayLength = this._triggerArray.length;
XhmikosR's avatar
Dist.  
XhmikosR committed
1960
1961

    if (triggerArrayLength > 0) {
XhmikosR's avatar
XhmikosR committed
1962
1963
      for (var i = 0; i < triggerArrayLength; i++) {
        var trigger = this._triggerArray[i];
XhmikosR's avatar
XhmikosR committed
1964
        var elem = getElementFromSelector(trigger);
XhmikosR's avatar
Dist.  
XhmikosR committed
1965

XhmikosR's avatar
XhmikosR committed
1966
1967
        if (elem && !elem.classList.contains(CLASS_NAME_SHOW)) {
          trigger.classList.add(CLASS_NAME_COLLAPSED);
XhmikosR's avatar
XhmikosR committed
1968
          trigger.setAttribute('aria-expanded', false);
XhmikosR's avatar
Dist.  
XhmikosR committed
1969
1970
1971
1972
1973
1974
        }
      }
    }

    this.setTransitioning(true);

XhmikosR's avatar
XhmikosR committed
1975
1976
    var complete = function complete() {
      _this2.setTransitioning(false);
XhmikosR's avatar
Dist.  
XhmikosR committed
1977

XhmikosR's avatar
XhmikosR committed
1978
      _this2._element.classList.remove(CLASS_NAME_COLLAPSING);
XhmikosR's avatar
Dist.  
XhmikosR committed
1979

XhmikosR's avatar
XhmikosR committed
1980
      _this2._element.classList.add(CLASS_NAME_COLLAPSE);
XhmikosR's avatar
Dist.  
XhmikosR committed
1981

XhmikosR's avatar
XhmikosR committed
1982
      EventHandler.trigger(_this2._element, EVENT_HIDDEN);
XhmikosR's avatar
Dist.  
XhmikosR committed
1983
1984
1985
    };

    this._element.style[dimension] = '';
XhmikosR's avatar
XhmikosR committed
1986
    var transitionDuration = getTransitionDurationFromElement(this._element);
XhmikosR's avatar
Dist.  
XhmikosR committed
1987
1988
    EventHandler.one(this._element, TRANSITION_END, complete);
    emulateTransitionEnd(this._element, transitionDuration);
XhmikosR's avatar
XhmikosR committed
1989
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
1990

XhmikosR's avatar
XhmikosR committed
1991
  _proto.setTransitioning = function setTransitioning(isTransitioning) {
XhmikosR's avatar
Dist.  
XhmikosR committed
1992
    this._isTransitioning = isTransitioning;
XhmikosR's avatar
XhmikosR committed
1993
  };
XhmikosR's avatar
Dist.  
XhmikosR committed
1994

XhmikosR's avatar
XhmikosR committed
1995
  _proto.dispose = function dispose() {
XhmikosR's avatar
Dist.  
XhmikosR committed
1996
1997
1998
1999
2000
    Data.removeData(this._element, DATA_KEY$3);
    this._config = null;
    this._parent = null;
    this._element = null;
    this._triggerArray = null;
For faster browsing, not all history is shown. View entire blame