@shoper/phoenix_design_system 1.18.43-1 → 1.18.43-2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,7 +8,7 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
8
8
 
9
9
  /*!
10
10
  * Splide.js
11
- * Version : 4.0.17
11
+ * Version : 4.1.4
12
12
  * License : MIT
13
13
  * Copyright: 2022 Naotoshi Fujita
14
14
  */
@@ -68,7 +68,11 @@ function isNull(subject) {
68
68
  }
69
69
 
70
70
  function isHTMLElement(subject) {
71
- return subject instanceof HTMLElement;
71
+ try {
72
+ return subject instanceof (subject.ownerDocument.defaultView || window).HTMLElement;
73
+ } catch (e) {
74
+ return false;
75
+ }
72
76
  }
73
77
 
74
78
  function toArray(value) {
@@ -135,18 +139,9 @@ var ownKeys = Object.keys;
135
139
 
136
140
  function forOwn(object, iteratee, right) {
137
141
  if (object) {
138
- var keys = ownKeys(object);
139
- keys = right ? keys.reverse() : keys;
140
-
141
- for (var i = 0; i < keys.length; i++) {
142
- var key = keys[i];
143
-
144
- if (key !== "__proto__") {
145
- if (iteratee(object[key], key) === false) {
146
- break;
147
- }
148
- }
149
- }
142
+ (right ? ownKeys(object).reverse() : ownKeys(object)).forEach(function (key) {
143
+ key !== "__proto__" && iteratee(object[key], key);
144
+ });
150
145
  }
151
146
 
152
147
  return object;
@@ -177,7 +172,7 @@ function merge(object) {
177
172
  }
178
173
 
179
174
  function omit(object, keys) {
180
- toArray(keys || ownKeys(object)).forEach(function (key) {
175
+ forEach(keys || ownKeys(object), function (key) {
181
176
  delete object[key];
182
177
  });
183
178
  }
@@ -305,9 +300,9 @@ function approximatelyEqual(x, y, epsilon) {
305
300
  return abs(x - y) < epsilon;
306
301
  }
307
302
 
308
- function between(number, minOrMax, maxOrMin, exclusive) {
309
- var minimum = min(minOrMax, maxOrMin);
310
- var maximum = max(minOrMax, maxOrMin);
303
+ function between(number, x, y, exclusive) {
304
+ var minimum = min(x, y);
305
+ var maximum = max(x, y);
311
306
  return exclusive ? minimum < number && number < maximum : minimum <= number && number <= maximum;
312
307
  }
313
308
 
@@ -411,13 +406,11 @@ var EVENT_MOUNTED = "mounted";
411
406
  var EVENT_READY = "ready";
412
407
  var EVENT_MOVE = "move";
413
408
  var EVENT_MOVED = "moved";
414
- var EVENT_SHIFTED = "shifted";
415
409
  var EVENT_CLICK = "click";
416
410
  var EVENT_ACTIVE = "active";
417
411
  var EVENT_INACTIVE = "inactive";
418
412
  var EVENT_VISIBLE = "visible";
419
413
  var EVENT_HIDDEN = "hidden";
420
- var EVENT_SLIDE_KEYDOWN = "slide:keydown";
421
414
  var EVENT_REFRESH = "refresh";
422
415
  var EVENT_UPDATED = "updated";
423
416
  var EVENT_RESIZE = "resize";
@@ -427,6 +420,7 @@ var EVENT_DRAGGING = "dragging";
427
420
  var EVENT_DRAGGED = "dragged";
428
421
  var EVENT_SCROLL = "scroll";
429
422
  var EVENT_SCROLLED = "scrolled";
423
+ var EVENT_OVERFLOW = "overflow";
430
424
  var EVENT_DESTROY = "destroy";
431
425
  var EVENT_ARROWS_MOUNTED = "arrows:mounted";
432
426
  var EVENT_ARROWS_UPDATED = "arrows:updated";
@@ -437,6 +431,9 @@ var EVENT_AUTOPLAY_PLAY = "autoplay:play";
437
431
  var EVENT_AUTOPLAY_PLAYING = "autoplay:playing";
438
432
  var EVENT_AUTOPLAY_PAUSE = "autoplay:pause";
439
433
  var EVENT_LAZYLOAD_LOADED = "lazyload:loaded";
434
+ var EVENT_SLIDE_KEYDOWN = "sk";
435
+ var EVENT_SHIFTED = "sh";
436
+ var EVENT_END_INDEX_CHANGED = "ei";
440
437
 
441
438
  function EventInterface(Splide2) {
442
439
  var bus = Splide2 ? Splide2.event.bus : document.createDocumentFragment();
@@ -486,15 +483,15 @@ function RequestInterval(interval, onInterval, onUpdate, limit) {
486
483
  }
487
484
  }
488
485
 
489
- raf(update);
486
+ id = raf(update);
490
487
  }
491
488
  }
492
489
 
493
490
  function start(resume) {
494
- !resume && cancel();
491
+ resume || cancel();
495
492
  startTime = now() - (resume ? rate * interval : 0);
496
493
  paused = false;
497
- raf(update);
494
+ id = raf(update);
498
495
  }
499
496
 
500
497
  function pause() {
@@ -553,19 +550,10 @@ function State(initialState) {
553
550
  }
554
551
 
555
552
  function Throttle(func, duration) {
556
- var interval;
557
-
558
- function throttled() {
559
- if (!interval) {
560
- interval = RequestInterval(duration || 0, function () {
561
- func();
562
- interval = null;
563
- }, null, 1);
564
- interval.start();
565
- }
566
- }
567
-
568
- return throttled;
553
+ var interval = RequestInterval(duration || 0, func, null, 1);
554
+ return function () {
555
+ interval.isPaused() && interval.start();
556
+ };
569
557
  }
570
558
 
571
559
  function Media(Splide2, Components2, options) {
@@ -623,11 +611,11 @@ function Media(Splide2, Components2, options) {
623
611
  }
624
612
  }
625
613
 
626
- function set(opts, user) {
614
+ function set(opts, base, notify) {
627
615
  merge(options, opts);
628
- user && merge(Object.getPrototypeOf(options), opts);
616
+ base && merge(Object.getPrototypeOf(options), opts);
629
617
 
630
- if (!state.is(CREATED)) {
618
+ if (notify || !state.is(CREATED)) {
631
619
  Splide2.emit(EVENT_UPDATED, options);
632
620
  }
633
621
  }
@@ -694,31 +682,34 @@ var ARIA_LIVE = ARIA_PREFIX + "live";
694
682
  var ARIA_BUSY = ARIA_PREFIX + "busy";
695
683
  var ARIA_ATOMIC = ARIA_PREFIX + "atomic";
696
684
  var ALL_ATTRIBUTES = [ROLE, TAB_INDEX, DISABLED, ARIA_CONTROLS, ARIA_CURRENT, ARIA_LABEL, ARIA_LABELLEDBY, ARIA_HIDDEN, ARIA_ORIENTATION, ARIA_ROLEDESCRIPTION];
685
+ var CLASS_PREFIX = PROJECT_CODE + "__";
686
+ var STATUS_CLASS_PREFIX = "is-";
697
687
  var CLASS_ROOT = PROJECT_CODE;
698
- var CLASS_TRACK = PROJECT_CODE + "__track";
699
- var CLASS_LIST = PROJECT_CODE + "__list";
700
- var CLASS_SLIDE = PROJECT_CODE + "__slide";
688
+ var CLASS_TRACK = CLASS_PREFIX + "track";
689
+ var CLASS_LIST = CLASS_PREFIX + "list";
690
+ var CLASS_SLIDE = CLASS_PREFIX + "slide";
701
691
  var CLASS_CLONE = CLASS_SLIDE + "--clone";
702
692
  var CLASS_CONTAINER = CLASS_SLIDE + "__container";
703
- var CLASS_ARROWS = PROJECT_CODE + "__arrows";
704
- var CLASS_ARROW = PROJECT_CODE + "__arrow";
693
+ var CLASS_ARROWS = CLASS_PREFIX + "arrows";
694
+ var CLASS_ARROW = CLASS_PREFIX + "arrow";
705
695
  var CLASS_ARROW_PREV = CLASS_ARROW + "--prev";
706
696
  var CLASS_ARROW_NEXT = CLASS_ARROW + "--next";
707
- var CLASS_PAGINATION = PROJECT_CODE + "__pagination";
697
+ var CLASS_PAGINATION = CLASS_PREFIX + "pagination";
708
698
  var CLASS_PAGINATION_PAGE = CLASS_PAGINATION + "__page";
709
- var CLASS_PROGRESS = PROJECT_CODE + "__progress";
699
+ var CLASS_PROGRESS = CLASS_PREFIX + "progress";
710
700
  var CLASS_PROGRESS_BAR = CLASS_PROGRESS + "__bar";
711
- var CLASS_TOGGLE = PROJECT_CODE + "__toggle";
712
- var CLASS_SPINNER = PROJECT_CODE + "__spinner";
713
- var CLASS_SR = PROJECT_CODE + "__sr";
714
- var CLASS_INITIALIZED = "is-initialized";
715
- var CLASS_ACTIVE = "is-active";
716
- var CLASS_PREV = "is-prev";
717
- var CLASS_NEXT = "is-next";
718
- var CLASS_VISIBLE = "is-visible";
719
- var CLASS_LOADING = "is-loading";
720
- var CLASS_FOCUS_IN = "is-focus-in";
721
- var STATUS_CLASSES = [CLASS_ACTIVE, CLASS_VISIBLE, CLASS_PREV, CLASS_NEXT, CLASS_LOADING, CLASS_FOCUS_IN];
701
+ var CLASS_TOGGLE = CLASS_PREFIX + "toggle";
702
+ var CLASS_SPINNER = CLASS_PREFIX + "spinner";
703
+ var CLASS_SR = CLASS_PREFIX + "sr";
704
+ var CLASS_INITIALIZED = STATUS_CLASS_PREFIX + "initialized";
705
+ var CLASS_ACTIVE = STATUS_CLASS_PREFIX + "active";
706
+ var CLASS_PREV = STATUS_CLASS_PREFIX + "prev";
707
+ var CLASS_NEXT = STATUS_CLASS_PREFIX + "next";
708
+ var CLASS_VISIBLE = STATUS_CLASS_PREFIX + "visible";
709
+ var CLASS_LOADING = STATUS_CLASS_PREFIX + "loading";
710
+ var CLASS_FOCUS_IN = STATUS_CLASS_PREFIX + "focus-in";
711
+ var CLASS_OVERFLOW = STATUS_CLASS_PREFIX + "overflow";
712
+ var STATUS_CLASSES = [CLASS_ACTIVE, CLASS_VISIBLE, CLASS_PREV, CLASS_NEXT, CLASS_LOADING, CLASS_FOCUS_IN, CLASS_OVERFLOW];
722
713
  var CLASSES = {
723
714
  slide: CLASS_SLIDE,
724
715
  clone: CLASS_CLONE,
@@ -1189,6 +1180,7 @@ function Layout(Splide2, Components2, options) {
1189
1180
  styleSlides = Slides.style;
1190
1181
  var vertical;
1191
1182
  var rootRect;
1183
+ var overflow;
1192
1184
 
1193
1185
  function mount() {
1194
1186
  init();
@@ -1198,24 +1190,28 @@ function Layout(Splide2, Components2, options) {
1198
1190
  }
1199
1191
 
1200
1192
  function init() {
1201
- rootRect = null;
1202
1193
  vertical = options.direction === TTB;
1203
1194
  style(root, "maxWidth", unit(options.width));
1204
1195
  style(track, resolve("paddingLeft"), cssPadding(false));
1205
1196
  style(track, resolve("paddingRight"), cssPadding(true));
1206
- resize();
1197
+ resize(true);
1207
1198
  }
1208
1199
 
1209
- function resize() {
1200
+ function resize(force) {
1210
1201
  var newRect = rect(root);
1211
1202
 
1212
- if (!rootRect || rootRect.width !== newRect.width || rootRect.height !== newRect.height) {
1203
+ if (force || rootRect.width !== newRect.width || rootRect.height !== newRect.height) {
1213
1204
  style(track, "height", cssTrackHeight());
1214
1205
  styleSlides(resolve("marginRight"), unit(options.gap));
1215
1206
  styleSlides("width", cssSlideWidth());
1216
1207
  styleSlides("height", cssSlideHeight(), true);
1217
1208
  rootRect = newRect;
1218
1209
  emit(EVENT_RESIZED);
1210
+
1211
+ if (overflow !== (overflow = isOverflow())) {
1212
+ toggleClass(root, CLASS_OVERFLOW, overflow);
1213
+ emit(EVENT_OVERFLOW, overflow);
1214
+ }
1219
1215
  }
1220
1216
  }
1221
1217
 
@@ -1275,8 +1271,8 @@ function Layout(Splide2, Components2, options) {
1275
1271
  return 0;
1276
1272
  }
1277
1273
 
1278
- function sliderSize() {
1279
- return totalSize(Splide2.length - 1, true) - totalSize(-1, true);
1274
+ function sliderSize(withoutGap) {
1275
+ return totalSize(Splide2.length - 1) - totalSize(0) + slideSize(0, withoutGap);
1280
1276
  }
1281
1277
 
1282
1278
  function getGap() {
@@ -1288,23 +1284,27 @@ function Layout(Splide2, Components2, options) {
1288
1284
  return parseFloat(style(track, resolve("padding" + (right ? "Right" : "Left")))) || 0;
1289
1285
  }
1290
1286
 
1287
+ function isOverflow() {
1288
+ return Splide2.is(FADE) || sliderSize(true) > listSize();
1289
+ }
1290
+
1291
1291
  return {
1292
1292
  mount: mount,
1293
+ resize: resize,
1293
1294
  listSize: listSize,
1294
1295
  slideSize: slideSize,
1295
1296
  sliderSize: sliderSize,
1296
1297
  totalSize: totalSize,
1297
- getPadding: getPadding
1298
+ getPadding: getPadding,
1299
+ isOverflow: isOverflow
1298
1300
  };
1299
1301
  }
1300
1302
 
1301
1303
  var MULTIPLIER = 2;
1302
1304
 
1303
1305
  function Clones(Splide2, Components2, options) {
1304
- var _EventInterface4 = EventInterface(Splide2),
1305
- on = _EventInterface4.on,
1306
- emit = _EventInterface4.emit;
1307
-
1306
+ var event = EventInterface(Splide2);
1307
+ var on = event.on;
1308
1308
  var Elements = Components2.Elements,
1309
1309
  Slides = Components2.Slides;
1310
1310
  var resolve = Components2.Direction.resolve;
@@ -1312,27 +1312,33 @@ function Clones(Splide2, Components2, options) {
1312
1312
  var cloneCount;
1313
1313
 
1314
1314
  function mount() {
1315
- init();
1316
- on(EVENT_REFRESH, destroy);
1317
- on(EVENT_REFRESH, init);
1315
+ on(EVENT_REFRESH, remount);
1318
1316
  on([EVENT_UPDATED, EVENT_RESIZE], observe);
1319
- }
1320
1317
 
1321
- function init() {
1322
1318
  if (cloneCount = computeCloneCount()) {
1323
1319
  generate(cloneCount);
1324
- emit(EVENT_RESIZE);
1320
+ Components2.Layout.resize(true);
1325
1321
  }
1326
1322
  }
1327
1323
 
1324
+ function remount() {
1325
+ destroy();
1326
+ mount();
1327
+ }
1328
+
1328
1329
  function destroy() {
1329
1330
  remove(clones);
1330
1331
  empty(clones);
1332
+ event.destroy();
1331
1333
  }
1332
1334
 
1333
1335
  function observe() {
1334
- if (cloneCount < computeCloneCount()) {
1335
- emit(EVENT_REFRESH);
1336
+ var count = computeCloneCount();
1337
+
1338
+ if (cloneCount !== count) {
1339
+ if (cloneCount < count || !count) {
1340
+ event.emit(EVENT_REFRESH);
1341
+ }
1336
1342
  }
1337
1343
  }
1338
1344
 
@@ -1367,7 +1373,7 @@ function Clones(Splide2, Components2, options) {
1367
1373
 
1368
1374
  if (!Splide2.is(LOOP)) {
1369
1375
  clones2 = 0;
1370
- } else if (!clones2) {
1376
+ } else if (isUndefined(clones2)) {
1371
1377
  var fixedSize = options[resolve("fixedWidth")] && Components2.Layout.slideSize(0);
1372
1378
  var fixedCount = fixedSize && ceil(rect(Elements.track)[resolve("width")] / fixedSize);
1373
1379
  clones2 = fixedCount || options[resolve("autoWidth")] && Splide2.length || options.perPage * MULTIPLIER;
@@ -1383,9 +1389,9 @@ function Clones(Splide2, Components2, options) {
1383
1389
  }
1384
1390
 
1385
1391
  function Move(Splide2, Components2, options) {
1386
- var _EventInterface5 = EventInterface(Splide2),
1387
- on = _EventInterface5.on,
1388
- emit = _EventInterface5.emit;
1392
+ var _EventInterface4 = EventInterface(Splide2),
1393
+ on = _EventInterface4.on,
1394
+ emit = _EventInterface4.emit;
1389
1395
 
1390
1396
  var set = Splide2.state.set;
1391
1397
  var _Components2$Layout = Components2.Layout,
@@ -1464,7 +1470,7 @@ function Move(Splide2, Components2, options) {
1464
1470
  }
1465
1471
 
1466
1472
  function cancel() {
1467
- translate(getPosition());
1473
+ translate(getPosition(), true);
1468
1474
  Transition.cancel();
1469
1475
  }
1470
1476
 
@@ -1500,7 +1506,7 @@ function Move(Splide2, Components2, options) {
1500
1506
 
1501
1507
  function trim(position) {
1502
1508
  if (options.trimSpace && Splide2.is(SLIDE)) {
1503
- position = clamp(position, 0, orient(sliderSize() - listSize()));
1509
+ position = clamp(position, 0, orient(sliderSize(true) - listSize()));
1504
1510
  }
1505
1511
 
1506
1512
  return position;
@@ -1544,8 +1550,9 @@ function Move(Splide2, Components2, options) {
1544
1550
  }
1545
1551
 
1546
1552
  function Controller(Splide2, Components2, options) {
1547
- var _EventInterface6 = EventInterface(Splide2),
1548
- on = _EventInterface6.on;
1553
+ var _EventInterface5 = EventInterface(Splide2),
1554
+ on = _EventInterface5.on,
1555
+ emit = _EventInterface5.emit;
1549
1556
 
1550
1557
  var Move = Components2.Move;
1551
1558
  var getPosition = Move.getPosition,
@@ -1554,11 +1561,13 @@ function Controller(Splide2, Components2, options) {
1554
1561
  var _Components2$Slides = Components2.Slides,
1555
1562
  isEnough = _Components2$Slides.isEnough,
1556
1563
  getLength = _Components2$Slides.getLength;
1564
+ var omitEnd = options.omitEnd;
1557
1565
  var isLoop = Splide2.is(LOOP);
1558
1566
  var isSlide = Splide2.is(SLIDE);
1559
1567
  var getNext = apply(getAdjacent, false);
1560
1568
  var getPrev = apply(getAdjacent, true);
1561
1569
  var currIndex = options.start || 0;
1570
+ var endIndex;
1562
1571
  var prevIndex = currIndex;
1563
1572
  var slideCount;
1564
1573
  var perMove;
@@ -1566,14 +1575,16 @@ function Controller(Splide2, Components2, options) {
1566
1575
 
1567
1576
  function mount() {
1568
1577
  init();
1569
- on([EVENT_UPDATED, EVENT_REFRESH], init);
1578
+ on([EVENT_UPDATED, EVENT_REFRESH, EVENT_END_INDEX_CHANGED], init);
1579
+ on(EVENT_RESIZED, onResized);
1570
1580
  }
1571
1581
 
1572
1582
  function init() {
1573
1583
  slideCount = getLength(true);
1574
1584
  perMove = options.perMove;
1575
1585
  perPage = options.perPage;
1576
- var index = clamp(currIndex, 0, slideCount - 1);
1586
+ endIndex = getEnd();
1587
+ var index = clamp(currIndex, 0, omitEnd ? endIndex : slideCount - 1);
1577
1588
 
1578
1589
  if (index !== currIndex) {
1579
1590
  currIndex = index;
@@ -1581,6 +1592,12 @@ function Controller(Splide2, Components2, options) {
1581
1592
  }
1582
1593
  }
1583
1594
 
1595
+ function onResized() {
1596
+ if (endIndex !== getEnd()) {
1597
+ emit(EVENT_END_INDEX_CHANGED);
1598
+ }
1599
+ }
1600
+
1584
1601
  function go(control, allowSameIndex, callback) {
1585
1602
  if (!isBusy()) {
1586
1603
  var dest = parse(control);
@@ -1595,7 +1612,8 @@ function Controller(Splide2, Components2, options) {
1595
1612
 
1596
1613
  function scroll(destination, duration, snap, callback) {
1597
1614
  Components2.Scroll.scroll(destination, duration, snap, function () {
1598
- setIndex(loop(Move.toIndex(getPosition())));
1615
+ var index = loop(Move.toIndex(getPosition()));
1616
+ setIndex(omitEnd ? min(index, endIndex) : index);
1599
1617
  callback && callback();
1600
1618
  });
1601
1619
  }
@@ -1616,7 +1634,7 @@ function Controller(Splide2, Components2, options) {
1616
1634
  index = getPrev(true);
1617
1635
  }
1618
1636
  } else {
1619
- index = isLoop ? control : clamp(control, 0, getEnd());
1637
+ index = isLoop ? control : clamp(control, 0, endIndex);
1620
1638
  }
1621
1639
 
1622
1640
  return index;
@@ -1628,7 +1646,7 @@ function Controller(Splide2, Components2, options) {
1628
1646
 
1629
1647
  if (dest === -1 && isSlide) {
1630
1648
  if (!approximatelyEqual(getPosition(), getLimit(!prev), 1)) {
1631
- return prev ? 0 : getEnd();
1649
+ return prev ? 0 : endIndex;
1632
1650
  }
1633
1651
  }
1634
1652
 
@@ -1637,7 +1655,6 @@ function Controller(Splide2, Components2, options) {
1637
1655
 
1638
1656
  function computeDestIndex(dest, from, snapPage) {
1639
1657
  if (isEnough() || hasFocus()) {
1640
- var end = getEnd();
1641
1658
  var index = computeMovableDestIndex(dest);
1642
1659
 
1643
1660
  if (index !== dest) {
@@ -1646,14 +1663,14 @@ function Controller(Splide2, Components2, options) {
1646
1663
  snapPage = false;
1647
1664
  }
1648
1665
 
1649
- if (dest < 0 || dest > end) {
1650
- if (!perMove && (between(0, dest, from, true) || between(end, from, dest, true))) {
1666
+ if (dest < 0 || dest > endIndex) {
1667
+ if (!perMove && (between(0, dest, from, true) || between(endIndex, from, dest, true))) {
1651
1668
  dest = toIndex(toPage(dest));
1652
1669
  } else {
1653
1670
  if (isLoop) {
1654
1671
  dest = snapPage ? dest < 0 ? -(slideCount % perPage || perPage) : slideCount : dest;
1655
1672
  } else if (options.rewind) {
1656
- dest = dest < 0 ? end : 0;
1673
+ dest = dest < 0 ? endIndex : 0;
1657
1674
  } else {
1658
1675
  dest = -1;
1659
1676
  }
@@ -1687,20 +1704,29 @@ function Controller(Splide2, Components2, options) {
1687
1704
  }
1688
1705
 
1689
1706
  function getEnd() {
1690
- return max(slideCount - (hasFocus() || isLoop && perMove ? 1 : perPage), 0);
1707
+ var end = slideCount - (hasFocus() || isLoop && perMove ? 1 : perPage);
1708
+
1709
+ while (omitEnd && end-- > 0) {
1710
+ if (toPosition(slideCount - 1, true) !== toPosition(end, true)) {
1711
+ end++;
1712
+ break;
1713
+ }
1714
+ }
1715
+
1716
+ return clamp(end, 0, slideCount - 1);
1691
1717
  }
1692
1718
 
1693
1719
  function toIndex(page) {
1694
- return clamp(hasFocus() ? page : perPage * page, 0, getEnd());
1720
+ return clamp(hasFocus() ? page : perPage * page, 0, endIndex);
1695
1721
  }
1696
1722
 
1697
1723
  function toPage(index) {
1698
- return hasFocus() ? index : floor((index >= getEnd() ? slideCount - 1 : index) / perPage);
1724
+ return hasFocus() ? min(index, endIndex) : floor((index >= endIndex ? slideCount - 1 : index) / perPage);
1699
1725
  }
1700
1726
 
1701
1727
  function toDest(destination) {
1702
1728
  var closest = Move.toIndex(destination);
1703
- return isSlide ? clamp(closest, 0, getEnd()) : closest;
1729
+ return isSlide ? clamp(closest, 0, endIndex) : closest;
1704
1730
  }
1705
1731
 
1706
1732
  function setIndex(index) {
@@ -1809,7 +1835,7 @@ function Arrows(Splide2, Components2, options) {
1809
1835
  }
1810
1836
 
1811
1837
  function listen() {
1812
- on([EVENT_MOVED, EVENT_REFRESH, EVENT_SCROLLED], update);
1838
+ on([EVENT_MOUNTED, EVENT_MOVED, EVENT_REFRESH, EVENT_SCROLLED, EVENT_END_INDEX_CHANGED], update);
1813
1839
  bind(next, "click", apply(go, ">"));
1814
1840
  bind(prev, "click", apply(go, "<"));
1815
1841
  }
@@ -1833,16 +1859,18 @@ function Arrows(Splide2, Components2, options) {
1833
1859
  }
1834
1860
 
1835
1861
  function update() {
1836
- var index = Splide2.index;
1837
- var prevIndex = Controller.getPrev();
1838
- var nextIndex = Controller.getNext();
1839
- var prevLabel = prevIndex > -1 && index < prevIndex ? i18n.last : i18n.prev;
1840
- var nextLabel = nextIndex > -1 && index > nextIndex ? i18n.first : i18n.next;
1841
- prev.disabled = prevIndex < 0;
1842
- next.disabled = nextIndex < 0;
1843
- setAttribute(prev, ARIA_LABEL, prevLabel);
1844
- setAttribute(next, ARIA_LABEL, nextLabel);
1845
- emit(EVENT_ARROWS_UPDATED, prev, next, prevIndex, nextIndex);
1862
+ if (prev && next) {
1863
+ var index = Splide2.index;
1864
+ var prevIndex = Controller.getPrev();
1865
+ var nextIndex = Controller.getNext();
1866
+ var prevLabel = prevIndex > -1 && index < prevIndex ? i18n.last : i18n.prev;
1867
+ var nextLabel = nextIndex > -1 && index > nextIndex ? i18n.first : i18n.next;
1868
+ prev.disabled = prevIndex < 0;
1869
+ next.disabled = nextIndex < 0;
1870
+ setAttribute(prev, ARIA_LABEL, prevLabel);
1871
+ setAttribute(next, ARIA_LABEL, nextLabel);
1872
+ emit(EVENT_ARROWS_UPDATED, prev, next, prevIndex, nextIndex);
1873
+ }
1846
1874
  }
1847
1875
 
1848
1876
  return {
@@ -1856,10 +1884,10 @@ function Arrows(Splide2, Components2, options) {
1856
1884
  var INTERVAL_DATA_ATTRIBUTE = DATA_ATTRIBUTE + "-interval";
1857
1885
 
1858
1886
  function Autoplay(Splide2, Components2, options) {
1859
- var _EventInterface7 = EventInterface(Splide2),
1860
- on = _EventInterface7.on,
1861
- bind = _EventInterface7.bind,
1862
- emit = _EventInterface7.emit;
1887
+ var _EventInterface6 = EventInterface(Splide2),
1888
+ on = _EventInterface6.on,
1889
+ bind = _EventInterface6.bind,
1890
+ emit = _EventInterface6.emit;
1863
1891
 
1864
1892
  var interval = RequestInterval(options.interval, Splide2.go.bind(Splide2, ">"), onAnimationFrame);
1865
1893
  var isPaused = interval.isPaused;
@@ -1963,8 +1991,8 @@ function Autoplay(Splide2, Components2, options) {
1963
1991
  }
1964
1992
 
1965
1993
  function Cover(Splide2, Components2, options) {
1966
- var _EventInterface8 = EventInterface(Splide2),
1967
- on = _EventInterface8.on;
1994
+ var _EventInterface7 = EventInterface(Splide2),
1995
+ on = _EventInterface7.on;
1968
1996
 
1969
1997
  function mount() {
1970
1998
  if (options.cover) {
@@ -2001,9 +2029,9 @@ var BASE_VELOCITY = 1.5;
2001
2029
  var MIN_DURATION = 800;
2002
2030
 
2003
2031
  function Scroll(Splide2, Components2, options) {
2004
- var _EventInterface9 = EventInterface(Splide2),
2005
- on = _EventInterface9.on,
2006
- emit = _EventInterface9.emit;
2032
+ var _EventInterface8 = EventInterface(Splide2),
2033
+ on = _EventInterface8.on,
2034
+ emit = _EventInterface8.emit;
2007
2035
 
2008
2036
  var set = Splide2.state.set;
2009
2037
  var Move = Components2.Move;
@@ -2094,11 +2122,11 @@ var SCROLL_LISTENER_OPTIONS = {
2094
2122
  };
2095
2123
 
2096
2124
  function Drag(Splide2, Components2, options) {
2097
- var _EventInterface10 = EventInterface(Splide2),
2098
- on = _EventInterface10.on,
2099
- emit = _EventInterface10.emit,
2100
- bind = _EventInterface10.bind,
2101
- unbind = _EventInterface10.unbind;
2125
+ var _EventInterface9 = EventInterface(Splide2),
2126
+ on = _EventInterface9.on,
2127
+ emit = _EventInterface9.emit,
2128
+ bind = _EventInterface9.bind,
2129
+ unbind = _EventInterface9.unbind;
2102
2130
 
2103
2131
  var state = Splide2.state;
2104
2132
  var Move = Components2.Move,
@@ -2322,10 +2350,10 @@ function normalizeKey(key) {
2322
2350
  var KEYBOARD_EVENT = "keydown";
2323
2351
 
2324
2352
  function Keyboard(Splide2, Components2, options) {
2325
- var _EventInterface11 = EventInterface(Splide2),
2326
- on = _EventInterface11.on,
2327
- bind = _EventInterface11.bind,
2328
- unbind = _EventInterface11.unbind;
2353
+ var _EventInterface10 = EventInterface(Splide2),
2354
+ on = _EventInterface10.on,
2355
+ bind = _EventInterface10.bind,
2356
+ unbind = _EventInterface10.unbind;
2329
2357
 
2330
2358
  var root = Splide2.root;
2331
2359
  var resolve = Components2.Direction.resolve;
@@ -2388,11 +2416,11 @@ var SRCSET_DATA_ATTRIBUTE = SRC_DATA_ATTRIBUTE + "-srcset";
2388
2416
  var IMAGE_SELECTOR = "[" + SRC_DATA_ATTRIBUTE + "], [" + SRCSET_DATA_ATTRIBUTE + "]";
2389
2417
 
2390
2418
  function LazyLoad(Splide2, Components2, options) {
2391
- var _EventInterface12 = EventInterface(Splide2),
2392
- on = _EventInterface12.on,
2393
- off = _EventInterface12.off,
2394
- bind = _EventInterface12.bind,
2395
- emit = _EventInterface12.emit;
2419
+ var _EventInterface11 = EventInterface(Splide2),
2420
+ on = _EventInterface11.on,
2421
+ off = _EventInterface11.off,
2422
+ bind = _EventInterface11.bind,
2423
+ emit = _EventInterface11.emit;
2396
2424
 
2397
2425
  var isSequential = options.lazyLoad === "sequential";
2398
2426
  var events = [EVENT_MOVED, EVENT_SCROLLED];
@@ -2498,8 +2526,8 @@ function Pagination(Splide2, Components2, options) {
2498
2526
 
2499
2527
  function mount() {
2500
2528
  destroy();
2501
- on([EVENT_UPDATED, EVENT_REFRESH], mount);
2502
- var enabled = options.pagination && Slides.isEnough();
2529
+ on([EVENT_UPDATED, EVENT_REFRESH, EVENT_END_INDEX_CHANGED], mount);
2530
+ var enabled = options.pagination;
2503
2531
  placeholder && display(placeholder, enabled ? "" : "none");
2504
2532
 
2505
2533
  if (enabled) {
@@ -2529,7 +2557,7 @@ function Pagination(Splide2, Components2, options) {
2529
2557
  var classes = options.classes,
2530
2558
  i18n = options.i18n,
2531
2559
  perPage = options.perPage;
2532
- var max = hasFocus() ? length : ceil(length / perPage);
2560
+ var max = hasFocus() ? Controller.getEnd() + 1 : ceil(length / perPage);
2533
2561
  list = placeholder || create("ul", classes.pagination, Elements.track.parentElement);
2534
2562
  addClass(list, paginationClasses = CLASS_PAGINATION + "--" + getDirection());
2535
2563
  setAttribute(list, ROLE, "tablist");
@@ -2642,12 +2670,6 @@ function Sync(Splide2, Components2, options) {
2642
2670
  slideFocus = options.slideFocus;
2643
2671
  var events = [];
2644
2672
 
2645
- function setup() {
2646
- Splide2.options = {
2647
- slideFocus: isUndefined(slideFocus) ? isNavigation : slideFocus
2648
- };
2649
- }
2650
-
2651
2673
  function mount() {
2652
2674
  Splide2.splides.forEach(function (target) {
2653
2675
  if (!target.isParent) {
@@ -2707,7 +2729,9 @@ function Sync(Splide2, Components2, options) {
2707
2729
  }
2708
2730
 
2709
2731
  return {
2710
- setup: setup,
2732
+ setup: apply(Components2.Media.set, {
2733
+ slideFocus: isUndefined(slideFocus) ? isNavigation : slideFocus
2734
+ }, true),
2711
2735
  mount: mount,
2712
2736
  destroy: destroy,
2713
2737
  remount: remount
@@ -2715,8 +2739,8 @@ function Sync(Splide2, Components2, options) {
2715
2739
  }
2716
2740
 
2717
2741
  function Wheel(Splide2, Components2, options) {
2718
- var _EventInterface13 = EventInterface(Splide2),
2719
- bind = _EventInterface13.bind;
2742
+ var _EventInterface12 = EventInterface(Splide2),
2743
+ bind = _EventInterface12.bind;
2720
2744
 
2721
2745
  var lastTime = 0;
2722
2746
 
@@ -2757,8 +2781,8 @@ function Wheel(Splide2, Components2, options) {
2757
2781
  var SR_REMOVAL_DELAY = 90;
2758
2782
 
2759
2783
  function Live(Splide2, Components2, options) {
2760
- var _EventInterface14 = EventInterface(Splide2),
2761
- on = _EventInterface14.on;
2784
+ var _EventInterface13 = EventInterface(Splide2),
2785
+ on = _EventInterface13.on;
2762
2786
 
2763
2787
  var track = Components2.Elements.track;
2764
2788
  var enabled = options.live && !options.isNavigation;
@@ -2784,6 +2808,7 @@ function Live(Splide2, Components2, options) {
2784
2808
  interval.start();
2785
2809
  } else {
2786
2810
  remove(sr);
2811
+ interval.cancel();
2787
2812
  }
2788
2813
  }
2789
2814
 
@@ -2870,24 +2895,21 @@ var DEFAULTS = {
2870
2895
  };
2871
2896
 
2872
2897
  function Fade(Splide2, Components2, options) {
2873
- var _EventInterface15 = EventInterface(Splide2),
2874
- on = _EventInterface15.on;
2898
+ var Slides = Components2.Slides;
2875
2899
 
2876
2900
  function mount() {
2877
- on([EVENT_MOUNTED, EVENT_REFRESH], function () {
2878
- nextTick(function () {
2879
- Components2.Slides.style("transition", "opacity " + options.speed + "ms " + options.easing);
2880
- });
2901
+ EventInterface(Splide2).on([EVENT_MOUNTED, EVENT_REFRESH], init);
2902
+ }
2903
+
2904
+ function init() {
2905
+ Slides.forEach(function (Slide) {
2906
+ Slide.style("transform", "translateX(-" + 100 * Slide.index + "%)");
2881
2907
  });
2882
2908
  }
2883
2909
 
2884
2910
  function start(index, done) {
2885
- var track = Components2.Elements.track;
2886
- style(track, "height", unit(rect(track).height));
2887
- nextTick(function () {
2888
- done();
2889
- style(track, "height", "");
2890
- });
2911
+ Slides.style("transition", "opacity " + options.speed + "ms " + options.easing);
2912
+ nextTick(done);
2891
2913
  }
2892
2914
 
2893
2915
  return {
@@ -2898,9 +2920,6 @@ function Fade(Splide2, Components2, options) {
2898
2920
  }
2899
2921
 
2900
2922
  function Slide(Splide2, Components2, options) {
2901
- var _EventInterface16 = EventInterface(Splide2),
2902
- bind = _EventInterface16.bind;
2903
-
2904
2923
  var Move = Components2.Move,
2905
2924
  Controller = Components2.Controller,
2906
2925
  Scroll = Components2.Scroll;
@@ -2909,7 +2928,7 @@ function Slide(Splide2, Components2, options) {
2909
2928
  var endCallback;
2910
2929
 
2911
2930
  function mount() {
2912
- bind(list, "transitionend", function (e) {
2931
+ EventInterface(Splide2).bind(list, "transitionend", function (e) {
2913
2932
  if (e.target === list && endCallback) {
2914
2933
  cancel();
2915
2934
  endCallback();
@@ -3110,7 +3129,7 @@ var _Splide = /*#__PURE__*/function () {
3110
3129
  return this._o;
3111
3130
  },
3112
3131
  set: function set(options) {
3113
- this._C.Media.set(options, true);
3132
+ this._C.Media.set(options, true, true);
3114
3133
  }
3115
3134
  }, {
3116
3135
  key: "length",
@@ -3144,6 +3163,7 @@ exports.CLASS_INITIALIZED = CLASS_INITIALIZED;
3144
3163
  exports.CLASS_LIST = CLASS_LIST;
3145
3164
  exports.CLASS_LOADING = CLASS_LOADING;
3146
3165
  exports.CLASS_NEXT = CLASS_NEXT;
3166
+ exports.CLASS_OVERFLOW = CLASS_OVERFLOW;
3147
3167
  exports.CLASS_PAGINATION = CLASS_PAGINATION;
3148
3168
  exports.CLASS_PAGINATION_PAGE = CLASS_PAGINATION_PAGE;
3149
3169
  exports.CLASS_PREV = CLASS_PREV;
@@ -3168,6 +3188,7 @@ exports.EVENT_DESTROY = EVENT_DESTROY;
3168
3188
  exports.EVENT_DRAG = EVENT_DRAG;
3169
3189
  exports.EVENT_DRAGGED = EVENT_DRAGGED;
3170
3190
  exports.EVENT_DRAGGING = EVENT_DRAGGING;
3191
+ exports.EVENT_END_INDEX_CHANGED = EVENT_END_INDEX_CHANGED;
3171
3192
  exports.EVENT_HIDDEN = EVENT_HIDDEN;
3172
3193
  exports.EVENT_INACTIVE = EVENT_INACTIVE;
3173
3194
  exports.EVENT_LAZYLOAD_LOADED = EVENT_LAZYLOAD_LOADED;
@@ -3175,6 +3196,7 @@ exports.EVENT_MOUNTED = EVENT_MOUNTED;
3175
3196
  exports.EVENT_MOVE = EVENT_MOVE;
3176
3197
  exports.EVENT_MOVED = EVENT_MOVED;
3177
3198
  exports.EVENT_NAVIGATION_MOUNTED = EVENT_NAVIGATION_MOUNTED;
3199
+ exports.EVENT_OVERFLOW = EVENT_OVERFLOW;
3178
3200
  exports.EVENT_PAGINATION_MOUNTED = EVENT_PAGINATION_MOUNTED;
3179
3201
  exports.EVENT_PAGINATION_UPDATED = EVENT_PAGINATION_UPDATED;
3180
3202
  exports.EVENT_READY = EVENT_READY;