@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.
@@ -4,7 +4,7 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
4
4
 
5
5
  /*!
6
6
  * Splide.js
7
- * Version : 4.0.17
7
+ * Version : 4.1.4
8
8
  * License : MIT
9
9
  * Copyright: 2022 Naotoshi Fujita
10
10
  */
@@ -64,7 +64,11 @@ function isNull(subject) {
64
64
  }
65
65
 
66
66
  function isHTMLElement(subject) {
67
- return subject instanceof HTMLElement;
67
+ try {
68
+ return subject instanceof (subject.ownerDocument.defaultView || window).HTMLElement;
69
+ } catch (e) {
70
+ return false;
71
+ }
68
72
  }
69
73
 
70
74
  function toArray(value) {
@@ -131,18 +135,9 @@ var ownKeys = Object.keys;
131
135
 
132
136
  function forOwn(object, iteratee, right) {
133
137
  if (object) {
134
- var keys = ownKeys(object);
135
- keys = right ? keys.reverse() : keys;
136
-
137
- for (var i = 0; i < keys.length; i++) {
138
- var key = keys[i];
139
-
140
- if (key !== "__proto__") {
141
- if (iteratee(object[key], key) === false) {
142
- break;
143
- }
144
- }
145
- }
138
+ (right ? ownKeys(object).reverse() : ownKeys(object)).forEach(function (key) {
139
+ key !== "__proto__" && iteratee(object[key], key);
140
+ });
146
141
  }
147
142
 
148
143
  return object;
@@ -173,7 +168,7 @@ function merge(object) {
173
168
  }
174
169
 
175
170
  function omit(object, keys) {
176
- toArray(keys || ownKeys(object)).forEach(function (key) {
171
+ forEach(keys || ownKeys(object), function (key) {
177
172
  delete object[key];
178
173
  });
179
174
  }
@@ -301,9 +296,9 @@ function approximatelyEqual(x, y, epsilon) {
301
296
  return abs(x - y) < epsilon;
302
297
  }
303
298
 
304
- function between(number, minOrMax, maxOrMin, exclusive) {
305
- var minimum = min(minOrMax, maxOrMin);
306
- var maximum = max(minOrMax, maxOrMin);
299
+ function between(number, x, y, exclusive) {
300
+ var minimum = min(x, y);
301
+ var maximum = max(x, y);
307
302
  return exclusive ? minimum < number && number < maximum : minimum <= number && number <= maximum;
308
303
  }
309
304
 
@@ -407,13 +402,11 @@ var EVENT_MOUNTED = "mounted";
407
402
  var EVENT_READY = "ready";
408
403
  var EVENT_MOVE = "move";
409
404
  var EVENT_MOVED = "moved";
410
- var EVENT_SHIFTED = "shifted";
411
405
  var EVENT_CLICK = "click";
412
406
  var EVENT_ACTIVE = "active";
413
407
  var EVENT_INACTIVE = "inactive";
414
408
  var EVENT_VISIBLE = "visible";
415
409
  var EVENT_HIDDEN = "hidden";
416
- var EVENT_SLIDE_KEYDOWN = "slide:keydown";
417
410
  var EVENT_REFRESH = "refresh";
418
411
  var EVENT_UPDATED = "updated";
419
412
  var EVENT_RESIZE = "resize";
@@ -423,6 +416,7 @@ var EVENT_DRAGGING = "dragging";
423
416
  var EVENT_DRAGGED = "dragged";
424
417
  var EVENT_SCROLL = "scroll";
425
418
  var EVENT_SCROLLED = "scrolled";
419
+ var EVENT_OVERFLOW = "overflow";
426
420
  var EVENT_DESTROY = "destroy";
427
421
  var EVENT_ARROWS_MOUNTED = "arrows:mounted";
428
422
  var EVENT_ARROWS_UPDATED = "arrows:updated";
@@ -433,6 +427,9 @@ var EVENT_AUTOPLAY_PLAY = "autoplay:play";
433
427
  var EVENT_AUTOPLAY_PLAYING = "autoplay:playing";
434
428
  var EVENT_AUTOPLAY_PAUSE = "autoplay:pause";
435
429
  var EVENT_LAZYLOAD_LOADED = "lazyload:loaded";
430
+ var EVENT_SLIDE_KEYDOWN = "sk";
431
+ var EVENT_SHIFTED = "sh";
432
+ var EVENT_END_INDEX_CHANGED = "ei";
436
433
 
437
434
  function EventInterface(Splide2) {
438
435
  var bus = Splide2 ? Splide2.event.bus : document.createDocumentFragment();
@@ -482,15 +479,15 @@ function RequestInterval(interval, onInterval, onUpdate, limit) {
482
479
  }
483
480
  }
484
481
 
485
- raf(update);
482
+ id = raf(update);
486
483
  }
487
484
  }
488
485
 
489
486
  function start(resume) {
490
- !resume && cancel();
487
+ resume || cancel();
491
488
  startTime = now() - (resume ? rate * interval : 0);
492
489
  paused = false;
493
- raf(update);
490
+ id = raf(update);
494
491
  }
495
492
 
496
493
  function pause() {
@@ -549,19 +546,10 @@ function State(initialState) {
549
546
  }
550
547
 
551
548
  function Throttle(func, duration) {
552
- var interval;
553
-
554
- function throttled() {
555
- if (!interval) {
556
- interval = RequestInterval(duration || 0, function () {
557
- func();
558
- interval = null;
559
- }, null, 1);
560
- interval.start();
561
- }
562
- }
563
-
564
- return throttled;
549
+ var interval = RequestInterval(duration || 0, func, null, 1);
550
+ return function () {
551
+ interval.isPaused() && interval.start();
552
+ };
565
553
  }
566
554
 
567
555
  function Media(Splide2, Components2, options) {
@@ -619,11 +607,11 @@ function Media(Splide2, Components2, options) {
619
607
  }
620
608
  }
621
609
 
622
- function set(opts, user) {
610
+ function set(opts, base, notify) {
623
611
  merge(options, opts);
624
- user && merge(Object.getPrototypeOf(options), opts);
612
+ base && merge(Object.getPrototypeOf(options), opts);
625
613
 
626
- if (!state.is(CREATED)) {
614
+ if (notify || !state.is(CREATED)) {
627
615
  Splide2.emit(EVENT_UPDATED, options);
628
616
  }
629
617
  }
@@ -690,31 +678,34 @@ var ARIA_LIVE = ARIA_PREFIX + "live";
690
678
  var ARIA_BUSY = ARIA_PREFIX + "busy";
691
679
  var ARIA_ATOMIC = ARIA_PREFIX + "atomic";
692
680
  var ALL_ATTRIBUTES = [ROLE, TAB_INDEX, DISABLED, ARIA_CONTROLS, ARIA_CURRENT, ARIA_LABEL, ARIA_LABELLEDBY, ARIA_HIDDEN, ARIA_ORIENTATION, ARIA_ROLEDESCRIPTION];
681
+ var CLASS_PREFIX = PROJECT_CODE + "__";
682
+ var STATUS_CLASS_PREFIX = "is-";
693
683
  var CLASS_ROOT = PROJECT_CODE;
694
- var CLASS_TRACK = PROJECT_CODE + "__track";
695
- var CLASS_LIST = PROJECT_CODE + "__list";
696
- var CLASS_SLIDE = PROJECT_CODE + "__slide";
684
+ var CLASS_TRACK = CLASS_PREFIX + "track";
685
+ var CLASS_LIST = CLASS_PREFIX + "list";
686
+ var CLASS_SLIDE = CLASS_PREFIX + "slide";
697
687
  var CLASS_CLONE = CLASS_SLIDE + "--clone";
698
688
  var CLASS_CONTAINER = CLASS_SLIDE + "__container";
699
- var CLASS_ARROWS = PROJECT_CODE + "__arrows";
700
- var CLASS_ARROW = PROJECT_CODE + "__arrow";
689
+ var CLASS_ARROWS = CLASS_PREFIX + "arrows";
690
+ var CLASS_ARROW = CLASS_PREFIX + "arrow";
701
691
  var CLASS_ARROW_PREV = CLASS_ARROW + "--prev";
702
692
  var CLASS_ARROW_NEXT = CLASS_ARROW + "--next";
703
- var CLASS_PAGINATION = PROJECT_CODE + "__pagination";
693
+ var CLASS_PAGINATION = CLASS_PREFIX + "pagination";
704
694
  var CLASS_PAGINATION_PAGE = CLASS_PAGINATION + "__page";
705
- var CLASS_PROGRESS = PROJECT_CODE + "__progress";
695
+ var CLASS_PROGRESS = CLASS_PREFIX + "progress";
706
696
  var CLASS_PROGRESS_BAR = CLASS_PROGRESS + "__bar";
707
- var CLASS_TOGGLE = PROJECT_CODE + "__toggle";
708
- var CLASS_SPINNER = PROJECT_CODE + "__spinner";
709
- var CLASS_SR = PROJECT_CODE + "__sr";
710
- var CLASS_INITIALIZED = "is-initialized";
711
- var CLASS_ACTIVE = "is-active";
712
- var CLASS_PREV = "is-prev";
713
- var CLASS_NEXT = "is-next";
714
- var CLASS_VISIBLE = "is-visible";
715
- var CLASS_LOADING = "is-loading";
716
- var CLASS_FOCUS_IN = "is-focus-in";
717
- var STATUS_CLASSES = [CLASS_ACTIVE, CLASS_VISIBLE, CLASS_PREV, CLASS_NEXT, CLASS_LOADING, CLASS_FOCUS_IN];
697
+ var CLASS_TOGGLE = CLASS_PREFIX + "toggle";
698
+ var CLASS_SPINNER = CLASS_PREFIX + "spinner";
699
+ var CLASS_SR = CLASS_PREFIX + "sr";
700
+ var CLASS_INITIALIZED = STATUS_CLASS_PREFIX + "initialized";
701
+ var CLASS_ACTIVE = STATUS_CLASS_PREFIX + "active";
702
+ var CLASS_PREV = STATUS_CLASS_PREFIX + "prev";
703
+ var CLASS_NEXT = STATUS_CLASS_PREFIX + "next";
704
+ var CLASS_VISIBLE = STATUS_CLASS_PREFIX + "visible";
705
+ var CLASS_LOADING = STATUS_CLASS_PREFIX + "loading";
706
+ var CLASS_FOCUS_IN = STATUS_CLASS_PREFIX + "focus-in";
707
+ var CLASS_OVERFLOW = STATUS_CLASS_PREFIX + "overflow";
708
+ var STATUS_CLASSES = [CLASS_ACTIVE, CLASS_VISIBLE, CLASS_PREV, CLASS_NEXT, CLASS_LOADING, CLASS_FOCUS_IN, CLASS_OVERFLOW];
718
709
  var CLASSES = {
719
710
  slide: CLASS_SLIDE,
720
711
  clone: CLASS_CLONE,
@@ -1185,6 +1176,7 @@ function Layout(Splide2, Components2, options) {
1185
1176
  styleSlides = Slides.style;
1186
1177
  var vertical;
1187
1178
  var rootRect;
1179
+ var overflow;
1188
1180
 
1189
1181
  function mount() {
1190
1182
  init();
@@ -1194,24 +1186,28 @@ function Layout(Splide2, Components2, options) {
1194
1186
  }
1195
1187
 
1196
1188
  function init() {
1197
- rootRect = null;
1198
1189
  vertical = options.direction === TTB;
1199
1190
  style(root, "maxWidth", unit(options.width));
1200
1191
  style(track, resolve("paddingLeft"), cssPadding(false));
1201
1192
  style(track, resolve("paddingRight"), cssPadding(true));
1202
- resize();
1193
+ resize(true);
1203
1194
  }
1204
1195
 
1205
- function resize() {
1196
+ function resize(force) {
1206
1197
  var newRect = rect(root);
1207
1198
 
1208
- if (!rootRect || rootRect.width !== newRect.width || rootRect.height !== newRect.height) {
1199
+ if (force || rootRect.width !== newRect.width || rootRect.height !== newRect.height) {
1209
1200
  style(track, "height", cssTrackHeight());
1210
1201
  styleSlides(resolve("marginRight"), unit(options.gap));
1211
1202
  styleSlides("width", cssSlideWidth());
1212
1203
  styleSlides("height", cssSlideHeight(), true);
1213
1204
  rootRect = newRect;
1214
1205
  emit(EVENT_RESIZED);
1206
+
1207
+ if (overflow !== (overflow = isOverflow())) {
1208
+ toggleClass(root, CLASS_OVERFLOW, overflow);
1209
+ emit(EVENT_OVERFLOW, overflow);
1210
+ }
1215
1211
  }
1216
1212
  }
1217
1213
 
@@ -1271,8 +1267,8 @@ function Layout(Splide2, Components2, options) {
1271
1267
  return 0;
1272
1268
  }
1273
1269
 
1274
- function sliderSize() {
1275
- return totalSize(Splide2.length - 1, true) - totalSize(-1, true);
1270
+ function sliderSize(withoutGap) {
1271
+ return totalSize(Splide2.length - 1) - totalSize(0) + slideSize(0, withoutGap);
1276
1272
  }
1277
1273
 
1278
1274
  function getGap() {
@@ -1284,23 +1280,27 @@ function Layout(Splide2, Components2, options) {
1284
1280
  return parseFloat(style(track, resolve("padding" + (right ? "Right" : "Left")))) || 0;
1285
1281
  }
1286
1282
 
1283
+ function isOverflow() {
1284
+ return Splide2.is(FADE) || sliderSize(true) > listSize();
1285
+ }
1286
+
1287
1287
  return {
1288
1288
  mount: mount,
1289
+ resize: resize,
1289
1290
  listSize: listSize,
1290
1291
  slideSize: slideSize,
1291
1292
  sliderSize: sliderSize,
1292
1293
  totalSize: totalSize,
1293
- getPadding: getPadding
1294
+ getPadding: getPadding,
1295
+ isOverflow: isOverflow
1294
1296
  };
1295
1297
  }
1296
1298
 
1297
1299
  var MULTIPLIER = 2;
1298
1300
 
1299
1301
  function Clones(Splide2, Components2, options) {
1300
- var _EventInterface4 = EventInterface(Splide2),
1301
- on = _EventInterface4.on,
1302
- emit = _EventInterface4.emit;
1303
-
1302
+ var event = EventInterface(Splide2);
1303
+ var on = event.on;
1304
1304
  var Elements = Components2.Elements,
1305
1305
  Slides = Components2.Slides;
1306
1306
  var resolve = Components2.Direction.resolve;
@@ -1308,27 +1308,33 @@ function Clones(Splide2, Components2, options) {
1308
1308
  var cloneCount;
1309
1309
 
1310
1310
  function mount() {
1311
- init();
1312
- on(EVENT_REFRESH, destroy);
1313
- on(EVENT_REFRESH, init);
1311
+ on(EVENT_REFRESH, remount);
1314
1312
  on([EVENT_UPDATED, EVENT_RESIZE], observe);
1315
- }
1316
1313
 
1317
- function init() {
1318
1314
  if (cloneCount = computeCloneCount()) {
1319
1315
  generate(cloneCount);
1320
- emit(EVENT_RESIZE);
1316
+ Components2.Layout.resize(true);
1321
1317
  }
1322
1318
  }
1323
1319
 
1320
+ function remount() {
1321
+ destroy();
1322
+ mount();
1323
+ }
1324
+
1324
1325
  function destroy() {
1325
1326
  remove(clones);
1326
1327
  empty(clones);
1328
+ event.destroy();
1327
1329
  }
1328
1330
 
1329
1331
  function observe() {
1330
- if (cloneCount < computeCloneCount()) {
1331
- emit(EVENT_REFRESH);
1332
+ var count = computeCloneCount();
1333
+
1334
+ if (cloneCount !== count) {
1335
+ if (cloneCount < count || !count) {
1336
+ event.emit(EVENT_REFRESH);
1337
+ }
1332
1338
  }
1333
1339
  }
1334
1340
 
@@ -1363,7 +1369,7 @@ function Clones(Splide2, Components2, options) {
1363
1369
 
1364
1370
  if (!Splide2.is(LOOP)) {
1365
1371
  clones2 = 0;
1366
- } else if (!clones2) {
1372
+ } else if (isUndefined(clones2)) {
1367
1373
  var fixedSize = options[resolve("fixedWidth")] && Components2.Layout.slideSize(0);
1368
1374
  var fixedCount = fixedSize && ceil(rect(Elements.track)[resolve("width")] / fixedSize);
1369
1375
  clones2 = fixedCount || options[resolve("autoWidth")] && Splide2.length || options.perPage * MULTIPLIER;
@@ -1379,9 +1385,9 @@ function Clones(Splide2, Components2, options) {
1379
1385
  }
1380
1386
 
1381
1387
  function Move(Splide2, Components2, options) {
1382
- var _EventInterface5 = EventInterface(Splide2),
1383
- on = _EventInterface5.on,
1384
- emit = _EventInterface5.emit;
1388
+ var _EventInterface4 = EventInterface(Splide2),
1389
+ on = _EventInterface4.on,
1390
+ emit = _EventInterface4.emit;
1385
1391
 
1386
1392
  var set = Splide2.state.set;
1387
1393
  var _Components2$Layout = Components2.Layout,
@@ -1460,7 +1466,7 @@ function Move(Splide2, Components2, options) {
1460
1466
  }
1461
1467
 
1462
1468
  function cancel() {
1463
- translate(getPosition());
1469
+ translate(getPosition(), true);
1464
1470
  Transition.cancel();
1465
1471
  }
1466
1472
 
@@ -1496,7 +1502,7 @@ function Move(Splide2, Components2, options) {
1496
1502
 
1497
1503
  function trim(position) {
1498
1504
  if (options.trimSpace && Splide2.is(SLIDE)) {
1499
- position = clamp(position, 0, orient(sliderSize() - listSize()));
1505
+ position = clamp(position, 0, orient(sliderSize(true) - listSize()));
1500
1506
  }
1501
1507
 
1502
1508
  return position;
@@ -1540,8 +1546,9 @@ function Move(Splide2, Components2, options) {
1540
1546
  }
1541
1547
 
1542
1548
  function Controller(Splide2, Components2, options) {
1543
- var _EventInterface6 = EventInterface(Splide2),
1544
- on = _EventInterface6.on;
1549
+ var _EventInterface5 = EventInterface(Splide2),
1550
+ on = _EventInterface5.on,
1551
+ emit = _EventInterface5.emit;
1545
1552
 
1546
1553
  var Move = Components2.Move;
1547
1554
  var getPosition = Move.getPosition,
@@ -1550,11 +1557,13 @@ function Controller(Splide2, Components2, options) {
1550
1557
  var _Components2$Slides = Components2.Slides,
1551
1558
  isEnough = _Components2$Slides.isEnough,
1552
1559
  getLength = _Components2$Slides.getLength;
1560
+ var omitEnd = options.omitEnd;
1553
1561
  var isLoop = Splide2.is(LOOP);
1554
1562
  var isSlide = Splide2.is(SLIDE);
1555
1563
  var getNext = apply(getAdjacent, false);
1556
1564
  var getPrev = apply(getAdjacent, true);
1557
1565
  var currIndex = options.start || 0;
1566
+ var endIndex;
1558
1567
  var prevIndex = currIndex;
1559
1568
  var slideCount;
1560
1569
  var perMove;
@@ -1562,14 +1571,16 @@ function Controller(Splide2, Components2, options) {
1562
1571
 
1563
1572
  function mount() {
1564
1573
  init();
1565
- on([EVENT_UPDATED, EVENT_REFRESH], init);
1574
+ on([EVENT_UPDATED, EVENT_REFRESH, EVENT_END_INDEX_CHANGED], init);
1575
+ on(EVENT_RESIZED, onResized);
1566
1576
  }
1567
1577
 
1568
1578
  function init() {
1569
1579
  slideCount = getLength(true);
1570
1580
  perMove = options.perMove;
1571
1581
  perPage = options.perPage;
1572
- var index = clamp(currIndex, 0, slideCount - 1);
1582
+ endIndex = getEnd();
1583
+ var index = clamp(currIndex, 0, omitEnd ? endIndex : slideCount - 1);
1573
1584
 
1574
1585
  if (index !== currIndex) {
1575
1586
  currIndex = index;
@@ -1577,6 +1588,12 @@ function Controller(Splide2, Components2, options) {
1577
1588
  }
1578
1589
  }
1579
1590
 
1591
+ function onResized() {
1592
+ if (endIndex !== getEnd()) {
1593
+ emit(EVENT_END_INDEX_CHANGED);
1594
+ }
1595
+ }
1596
+
1580
1597
  function go(control, allowSameIndex, callback) {
1581
1598
  if (!isBusy()) {
1582
1599
  var dest = parse(control);
@@ -1591,7 +1608,8 @@ function Controller(Splide2, Components2, options) {
1591
1608
 
1592
1609
  function scroll(destination, duration, snap, callback) {
1593
1610
  Components2.Scroll.scroll(destination, duration, snap, function () {
1594
- setIndex(loop(Move.toIndex(getPosition())));
1611
+ var index = loop(Move.toIndex(getPosition()));
1612
+ setIndex(omitEnd ? min(index, endIndex) : index);
1595
1613
  callback && callback();
1596
1614
  });
1597
1615
  }
@@ -1612,7 +1630,7 @@ function Controller(Splide2, Components2, options) {
1612
1630
  index = getPrev(true);
1613
1631
  }
1614
1632
  } else {
1615
- index = isLoop ? control : clamp(control, 0, getEnd());
1633
+ index = isLoop ? control : clamp(control, 0, endIndex);
1616
1634
  }
1617
1635
 
1618
1636
  return index;
@@ -1624,7 +1642,7 @@ function Controller(Splide2, Components2, options) {
1624
1642
 
1625
1643
  if (dest === -1 && isSlide) {
1626
1644
  if (!approximatelyEqual(getPosition(), getLimit(!prev), 1)) {
1627
- return prev ? 0 : getEnd();
1645
+ return prev ? 0 : endIndex;
1628
1646
  }
1629
1647
  }
1630
1648
 
@@ -1633,7 +1651,6 @@ function Controller(Splide2, Components2, options) {
1633
1651
 
1634
1652
  function computeDestIndex(dest, from, snapPage) {
1635
1653
  if (isEnough() || hasFocus()) {
1636
- var end = getEnd();
1637
1654
  var index = computeMovableDestIndex(dest);
1638
1655
 
1639
1656
  if (index !== dest) {
@@ -1642,14 +1659,14 @@ function Controller(Splide2, Components2, options) {
1642
1659
  snapPage = false;
1643
1660
  }
1644
1661
 
1645
- if (dest < 0 || dest > end) {
1646
- if (!perMove && (between(0, dest, from, true) || between(end, from, dest, true))) {
1662
+ if (dest < 0 || dest > endIndex) {
1663
+ if (!perMove && (between(0, dest, from, true) || between(endIndex, from, dest, true))) {
1647
1664
  dest = toIndex(toPage(dest));
1648
1665
  } else {
1649
1666
  if (isLoop) {
1650
1667
  dest = snapPage ? dest < 0 ? -(slideCount % perPage || perPage) : slideCount : dest;
1651
1668
  } else if (options.rewind) {
1652
- dest = dest < 0 ? end : 0;
1669
+ dest = dest < 0 ? endIndex : 0;
1653
1670
  } else {
1654
1671
  dest = -1;
1655
1672
  }
@@ -1683,20 +1700,29 @@ function Controller(Splide2, Components2, options) {
1683
1700
  }
1684
1701
 
1685
1702
  function getEnd() {
1686
- return max(slideCount - (hasFocus() || isLoop && perMove ? 1 : perPage), 0);
1703
+ var end = slideCount - (hasFocus() || isLoop && perMove ? 1 : perPage);
1704
+
1705
+ while (omitEnd && end-- > 0) {
1706
+ if (toPosition(slideCount - 1, true) !== toPosition(end, true)) {
1707
+ end++;
1708
+ break;
1709
+ }
1710
+ }
1711
+
1712
+ return clamp(end, 0, slideCount - 1);
1687
1713
  }
1688
1714
 
1689
1715
  function toIndex(page) {
1690
- return clamp(hasFocus() ? page : perPage * page, 0, getEnd());
1716
+ return clamp(hasFocus() ? page : perPage * page, 0, endIndex);
1691
1717
  }
1692
1718
 
1693
1719
  function toPage(index) {
1694
- return hasFocus() ? index : floor((index >= getEnd() ? slideCount - 1 : index) / perPage);
1720
+ return hasFocus() ? min(index, endIndex) : floor((index >= endIndex ? slideCount - 1 : index) / perPage);
1695
1721
  }
1696
1722
 
1697
1723
  function toDest(destination) {
1698
1724
  var closest = Move.toIndex(destination);
1699
- return isSlide ? clamp(closest, 0, getEnd()) : closest;
1725
+ return isSlide ? clamp(closest, 0, endIndex) : closest;
1700
1726
  }
1701
1727
 
1702
1728
  function setIndex(index) {
@@ -1805,7 +1831,7 @@ function Arrows(Splide2, Components2, options) {
1805
1831
  }
1806
1832
 
1807
1833
  function listen() {
1808
- on([EVENT_MOVED, EVENT_REFRESH, EVENT_SCROLLED], update);
1834
+ on([EVENT_MOUNTED, EVENT_MOVED, EVENT_REFRESH, EVENT_SCROLLED, EVENT_END_INDEX_CHANGED], update);
1809
1835
  bind(next, "click", apply(go, ">"));
1810
1836
  bind(prev, "click", apply(go, "<"));
1811
1837
  }
@@ -1829,16 +1855,18 @@ function Arrows(Splide2, Components2, options) {
1829
1855
  }
1830
1856
 
1831
1857
  function update() {
1832
- var index = Splide2.index;
1833
- var prevIndex = Controller.getPrev();
1834
- var nextIndex = Controller.getNext();
1835
- var prevLabel = prevIndex > -1 && index < prevIndex ? i18n.last : i18n.prev;
1836
- var nextLabel = nextIndex > -1 && index > nextIndex ? i18n.first : i18n.next;
1837
- prev.disabled = prevIndex < 0;
1838
- next.disabled = nextIndex < 0;
1839
- setAttribute(prev, ARIA_LABEL, prevLabel);
1840
- setAttribute(next, ARIA_LABEL, nextLabel);
1841
- emit(EVENT_ARROWS_UPDATED, prev, next, prevIndex, nextIndex);
1858
+ if (prev && next) {
1859
+ var index = Splide2.index;
1860
+ var prevIndex = Controller.getPrev();
1861
+ var nextIndex = Controller.getNext();
1862
+ var prevLabel = prevIndex > -1 && index < prevIndex ? i18n.last : i18n.prev;
1863
+ var nextLabel = nextIndex > -1 && index > nextIndex ? i18n.first : i18n.next;
1864
+ prev.disabled = prevIndex < 0;
1865
+ next.disabled = nextIndex < 0;
1866
+ setAttribute(prev, ARIA_LABEL, prevLabel);
1867
+ setAttribute(next, ARIA_LABEL, nextLabel);
1868
+ emit(EVENT_ARROWS_UPDATED, prev, next, prevIndex, nextIndex);
1869
+ }
1842
1870
  }
1843
1871
 
1844
1872
  return {
@@ -1852,10 +1880,10 @@ function Arrows(Splide2, Components2, options) {
1852
1880
  var INTERVAL_DATA_ATTRIBUTE = DATA_ATTRIBUTE + "-interval";
1853
1881
 
1854
1882
  function Autoplay(Splide2, Components2, options) {
1855
- var _EventInterface7 = EventInterface(Splide2),
1856
- on = _EventInterface7.on,
1857
- bind = _EventInterface7.bind,
1858
- emit = _EventInterface7.emit;
1883
+ var _EventInterface6 = EventInterface(Splide2),
1884
+ on = _EventInterface6.on,
1885
+ bind = _EventInterface6.bind,
1886
+ emit = _EventInterface6.emit;
1859
1887
 
1860
1888
  var interval = RequestInterval(options.interval, Splide2.go.bind(Splide2, ">"), onAnimationFrame);
1861
1889
  var isPaused = interval.isPaused;
@@ -1959,8 +1987,8 @@ function Autoplay(Splide2, Components2, options) {
1959
1987
  }
1960
1988
 
1961
1989
  function Cover(Splide2, Components2, options) {
1962
- var _EventInterface8 = EventInterface(Splide2),
1963
- on = _EventInterface8.on;
1990
+ var _EventInterface7 = EventInterface(Splide2),
1991
+ on = _EventInterface7.on;
1964
1992
 
1965
1993
  function mount() {
1966
1994
  if (options.cover) {
@@ -1997,9 +2025,9 @@ var BASE_VELOCITY = 1.5;
1997
2025
  var MIN_DURATION = 800;
1998
2026
 
1999
2027
  function Scroll(Splide2, Components2, options) {
2000
- var _EventInterface9 = EventInterface(Splide2),
2001
- on = _EventInterface9.on,
2002
- emit = _EventInterface9.emit;
2028
+ var _EventInterface8 = EventInterface(Splide2),
2029
+ on = _EventInterface8.on,
2030
+ emit = _EventInterface8.emit;
2003
2031
 
2004
2032
  var set = Splide2.state.set;
2005
2033
  var Move = Components2.Move;
@@ -2090,11 +2118,11 @@ var SCROLL_LISTENER_OPTIONS = {
2090
2118
  };
2091
2119
 
2092
2120
  function Drag(Splide2, Components2, options) {
2093
- var _EventInterface10 = EventInterface(Splide2),
2094
- on = _EventInterface10.on,
2095
- emit = _EventInterface10.emit,
2096
- bind = _EventInterface10.bind,
2097
- unbind = _EventInterface10.unbind;
2121
+ var _EventInterface9 = EventInterface(Splide2),
2122
+ on = _EventInterface9.on,
2123
+ emit = _EventInterface9.emit,
2124
+ bind = _EventInterface9.bind,
2125
+ unbind = _EventInterface9.unbind;
2098
2126
 
2099
2127
  var state = Splide2.state;
2100
2128
  var Move = Components2.Move,
@@ -2318,10 +2346,10 @@ function normalizeKey(key) {
2318
2346
  var KEYBOARD_EVENT = "keydown";
2319
2347
 
2320
2348
  function Keyboard(Splide2, Components2, options) {
2321
- var _EventInterface11 = EventInterface(Splide2),
2322
- on = _EventInterface11.on,
2323
- bind = _EventInterface11.bind,
2324
- unbind = _EventInterface11.unbind;
2349
+ var _EventInterface10 = EventInterface(Splide2),
2350
+ on = _EventInterface10.on,
2351
+ bind = _EventInterface10.bind,
2352
+ unbind = _EventInterface10.unbind;
2325
2353
 
2326
2354
  var root = Splide2.root;
2327
2355
  var resolve = Components2.Direction.resolve;
@@ -2384,11 +2412,11 @@ var SRCSET_DATA_ATTRIBUTE = SRC_DATA_ATTRIBUTE + "-srcset";
2384
2412
  var IMAGE_SELECTOR = "[" + SRC_DATA_ATTRIBUTE + "], [" + SRCSET_DATA_ATTRIBUTE + "]";
2385
2413
 
2386
2414
  function LazyLoad(Splide2, Components2, options) {
2387
- var _EventInterface12 = EventInterface(Splide2),
2388
- on = _EventInterface12.on,
2389
- off = _EventInterface12.off,
2390
- bind = _EventInterface12.bind,
2391
- emit = _EventInterface12.emit;
2415
+ var _EventInterface11 = EventInterface(Splide2),
2416
+ on = _EventInterface11.on,
2417
+ off = _EventInterface11.off,
2418
+ bind = _EventInterface11.bind,
2419
+ emit = _EventInterface11.emit;
2392
2420
 
2393
2421
  var isSequential = options.lazyLoad === "sequential";
2394
2422
  var events = [EVENT_MOVED, EVENT_SCROLLED];
@@ -2494,8 +2522,8 @@ function Pagination(Splide2, Components2, options) {
2494
2522
 
2495
2523
  function mount() {
2496
2524
  destroy();
2497
- on([EVENT_UPDATED, EVENT_REFRESH], mount);
2498
- var enabled = options.pagination && Slides.isEnough();
2525
+ on([EVENT_UPDATED, EVENT_REFRESH, EVENT_END_INDEX_CHANGED], mount);
2526
+ var enabled = options.pagination;
2499
2527
  placeholder && display(placeholder, enabled ? "" : "none");
2500
2528
 
2501
2529
  if (enabled) {
@@ -2525,7 +2553,7 @@ function Pagination(Splide2, Components2, options) {
2525
2553
  var classes = options.classes,
2526
2554
  i18n = options.i18n,
2527
2555
  perPage = options.perPage;
2528
- var max = hasFocus() ? length : ceil(length / perPage);
2556
+ var max = hasFocus() ? Controller.getEnd() + 1 : ceil(length / perPage);
2529
2557
  list = placeholder || create("ul", classes.pagination, Elements.track.parentElement);
2530
2558
  addClass(list, paginationClasses = CLASS_PAGINATION + "--" + getDirection());
2531
2559
  setAttribute(list, ROLE, "tablist");
@@ -2638,12 +2666,6 @@ function Sync(Splide2, Components2, options) {
2638
2666
  slideFocus = options.slideFocus;
2639
2667
  var events = [];
2640
2668
 
2641
- function setup() {
2642
- Splide2.options = {
2643
- slideFocus: isUndefined(slideFocus) ? isNavigation : slideFocus
2644
- };
2645
- }
2646
-
2647
2669
  function mount() {
2648
2670
  Splide2.splides.forEach(function (target) {
2649
2671
  if (!target.isParent) {
@@ -2703,7 +2725,9 @@ function Sync(Splide2, Components2, options) {
2703
2725
  }
2704
2726
 
2705
2727
  return {
2706
- setup: setup,
2728
+ setup: apply(Components2.Media.set, {
2729
+ slideFocus: isUndefined(slideFocus) ? isNavigation : slideFocus
2730
+ }, true),
2707
2731
  mount: mount,
2708
2732
  destroy: destroy,
2709
2733
  remount: remount
@@ -2711,8 +2735,8 @@ function Sync(Splide2, Components2, options) {
2711
2735
  }
2712
2736
 
2713
2737
  function Wheel(Splide2, Components2, options) {
2714
- var _EventInterface13 = EventInterface(Splide2),
2715
- bind = _EventInterface13.bind;
2738
+ var _EventInterface12 = EventInterface(Splide2),
2739
+ bind = _EventInterface12.bind;
2716
2740
 
2717
2741
  var lastTime = 0;
2718
2742
 
@@ -2753,8 +2777,8 @@ function Wheel(Splide2, Components2, options) {
2753
2777
  var SR_REMOVAL_DELAY = 90;
2754
2778
 
2755
2779
  function Live(Splide2, Components2, options) {
2756
- var _EventInterface14 = EventInterface(Splide2),
2757
- on = _EventInterface14.on;
2780
+ var _EventInterface13 = EventInterface(Splide2),
2781
+ on = _EventInterface13.on;
2758
2782
 
2759
2783
  var track = Components2.Elements.track;
2760
2784
  var enabled = options.live && !options.isNavigation;
@@ -2780,6 +2804,7 @@ function Live(Splide2, Components2, options) {
2780
2804
  interval.start();
2781
2805
  } else {
2782
2806
  remove(sr);
2807
+ interval.cancel();
2783
2808
  }
2784
2809
  }
2785
2810
 
@@ -2866,24 +2891,21 @@ var DEFAULTS = {
2866
2891
  };
2867
2892
 
2868
2893
  function Fade(Splide2, Components2, options) {
2869
- var _EventInterface15 = EventInterface(Splide2),
2870
- on = _EventInterface15.on;
2894
+ var Slides = Components2.Slides;
2871
2895
 
2872
2896
  function mount() {
2873
- on([EVENT_MOUNTED, EVENT_REFRESH], function () {
2874
- nextTick(function () {
2875
- Components2.Slides.style("transition", "opacity " + options.speed + "ms " + options.easing);
2876
- });
2897
+ EventInterface(Splide2).on([EVENT_MOUNTED, EVENT_REFRESH], init);
2898
+ }
2899
+
2900
+ function init() {
2901
+ Slides.forEach(function (Slide) {
2902
+ Slide.style("transform", "translateX(-" + 100 * Slide.index + "%)");
2877
2903
  });
2878
2904
  }
2879
2905
 
2880
2906
  function start(index, done) {
2881
- var track = Components2.Elements.track;
2882
- style(track, "height", unit(rect(track).height));
2883
- nextTick(function () {
2884
- done();
2885
- style(track, "height", "");
2886
- });
2907
+ Slides.style("transition", "opacity " + options.speed + "ms " + options.easing);
2908
+ nextTick(done);
2887
2909
  }
2888
2910
 
2889
2911
  return {
@@ -2894,9 +2916,6 @@ function Fade(Splide2, Components2, options) {
2894
2916
  }
2895
2917
 
2896
2918
  function Slide(Splide2, Components2, options) {
2897
- var _EventInterface16 = EventInterface(Splide2),
2898
- bind = _EventInterface16.bind;
2899
-
2900
2919
  var Move = Components2.Move,
2901
2920
  Controller = Components2.Controller,
2902
2921
  Scroll = Components2.Scroll;
@@ -2905,7 +2924,7 @@ function Slide(Splide2, Components2, options) {
2905
2924
  var endCallback;
2906
2925
 
2907
2926
  function mount() {
2908
- bind(list, "transitionend", function (e) {
2927
+ EventInterface(Splide2).bind(list, "transitionend", function (e) {
2909
2928
  if (e.target === list && endCallback) {
2910
2929
  cancel();
2911
2930
  endCallback();
@@ -3106,7 +3125,7 @@ var _Splide = /*#__PURE__*/function () {
3106
3125
  return this._o;
3107
3126
  },
3108
3127
  set: function set(options) {
3109
- this._C.Media.set(options, true);
3128
+ this._C.Media.set(options, true, true);
3110
3129
  }
3111
3130
  }, {
3112
3131
  key: "length",
@@ -3128,5 +3147,5 @@ Splide.defaults = {};
3128
3147
  Splide.STATES = STATES;
3129
3148
 
3130
3149
  export default Splide;
3131
- export { CLASSES, CLASS_ACTIVE, CLASS_ARROW, CLASS_ARROWS, CLASS_ARROW_NEXT, CLASS_ARROW_PREV, CLASS_CLONE, CLASS_CONTAINER, CLASS_FOCUS_IN, CLASS_INITIALIZED, CLASS_LIST, CLASS_LOADING, CLASS_NEXT, CLASS_PAGINATION, CLASS_PAGINATION_PAGE, CLASS_PREV, CLASS_PROGRESS, CLASS_PROGRESS_BAR, CLASS_ROOT, CLASS_SLIDE, CLASS_SPINNER, CLASS_SR, CLASS_TOGGLE, CLASS_TRACK, CLASS_VISIBLE, DEFAULTS, EVENT_ACTIVE, EVENT_ARROWS_MOUNTED, EVENT_ARROWS_UPDATED, EVENT_AUTOPLAY_PAUSE, EVENT_AUTOPLAY_PLAY, EVENT_AUTOPLAY_PLAYING, EVENT_CLICK, EVENT_DESTROY, EVENT_DRAG, EVENT_DRAGGED, EVENT_DRAGGING, EVENT_HIDDEN, EVENT_INACTIVE, EVENT_LAZYLOAD_LOADED, EVENT_MOUNTED, EVENT_MOVE, EVENT_MOVED, EVENT_NAVIGATION_MOUNTED, EVENT_PAGINATION_MOUNTED, EVENT_PAGINATION_UPDATED, EVENT_READY, EVENT_REFRESH, EVENT_RESIZE, EVENT_RESIZED, EVENT_SCROLL, EVENT_SCROLLED, EVENT_SHIFTED, EVENT_SLIDE_KEYDOWN, EVENT_UPDATED, EVENT_VISIBLE, EventBinder, EventInterface, FADE, LOOP, RTL, RequestInterval, SLIDE, STATUS_CLASSES, Splide, State, TTB, Throttle };
3150
+ export { CLASSES, CLASS_ACTIVE, CLASS_ARROW, CLASS_ARROWS, CLASS_ARROW_NEXT, CLASS_ARROW_PREV, CLASS_CLONE, CLASS_CONTAINER, CLASS_FOCUS_IN, CLASS_INITIALIZED, CLASS_LIST, CLASS_LOADING, CLASS_NEXT, CLASS_OVERFLOW, CLASS_PAGINATION, CLASS_PAGINATION_PAGE, CLASS_PREV, CLASS_PROGRESS, CLASS_PROGRESS_BAR, CLASS_ROOT, CLASS_SLIDE, CLASS_SPINNER, CLASS_SR, CLASS_TOGGLE, CLASS_TRACK, CLASS_VISIBLE, DEFAULTS, EVENT_ACTIVE, EVENT_ARROWS_MOUNTED, EVENT_ARROWS_UPDATED, EVENT_AUTOPLAY_PAUSE, EVENT_AUTOPLAY_PLAY, EVENT_AUTOPLAY_PLAYING, EVENT_CLICK, EVENT_DESTROY, EVENT_DRAG, EVENT_DRAGGED, EVENT_DRAGGING, EVENT_END_INDEX_CHANGED, EVENT_HIDDEN, EVENT_INACTIVE, EVENT_LAZYLOAD_LOADED, EVENT_MOUNTED, EVENT_MOVE, EVENT_MOVED, EVENT_NAVIGATION_MOUNTED, EVENT_OVERFLOW, EVENT_PAGINATION_MOUNTED, EVENT_PAGINATION_UPDATED, EVENT_READY, EVENT_REFRESH, EVENT_RESIZE, EVENT_RESIZED, EVENT_SCROLL, EVENT_SCROLLED, EVENT_SHIFTED, EVENT_SLIDE_KEYDOWN, EVENT_UPDATED, EVENT_VISIBLE, EventBinder, EventInterface, FADE, LOOP, RTL, RequestInterval, SLIDE, STATUS_CLASSES, Splide, State, TTB, Throttle };
3132
3151
  //# sourceMappingURL=splide.esm.js.map