uikit 3.17.12-dev.f1425d280 → 3.18.1-dev.0856bd8a6

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.
Files changed (260) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/dist/css/uikit-core-rtl.css +577 -504
  3. package/dist/css/uikit-core-rtl.min.css +1 -1
  4. package/dist/css/uikit-core.css +577 -504
  5. package/dist/css/uikit-core.min.css +1 -1
  6. package/dist/css/uikit-rtl.css +600 -527
  7. package/dist/css/uikit-rtl.min.css +1 -1
  8. package/dist/css/uikit.css +600 -527
  9. package/dist/css/uikit.min.css +1 -1
  10. package/dist/js/components/countdown.js +2 -4
  11. package/dist/js/components/countdown.min.js +1 -1
  12. package/dist/js/components/filter.js +1 -1
  13. package/dist/js/components/filter.min.js +1 -1
  14. package/dist/js/components/lightbox-panel.js +96 -60
  15. package/dist/js/components/lightbox-panel.min.js +1 -1
  16. package/dist/js/components/lightbox.js +96 -60
  17. package/dist/js/components/lightbox.min.js +1 -1
  18. package/dist/js/components/notification.js +1 -1
  19. package/dist/js/components/notification.min.js +1 -1
  20. package/dist/js/components/parallax.js +11 -6
  21. package/dist/js/components/parallax.min.js +1 -1
  22. package/dist/js/components/slider-parallax.js +8 -3
  23. package/dist/js/components/slider-parallax.min.js +1 -1
  24. package/dist/js/components/slider.js +735 -37
  25. package/dist/js/components/slider.min.js +1 -1
  26. package/dist/js/components/slideshow-parallax.js +8 -3
  27. package/dist/js/components/slideshow-parallax.min.js +1 -1
  28. package/dist/js/components/slideshow.js +792 -129
  29. package/dist/js/components/slideshow.min.js +1 -1
  30. package/dist/js/components/sortable.js +7 -7
  31. package/dist/js/components/sortable.min.js +1 -1
  32. package/dist/js/components/tooltip.js +2 -8
  33. package/dist/js/components/tooltip.min.js +1 -1
  34. package/dist/js/components/upload.js +1 -1
  35. package/dist/js/components/upload.min.js +1 -1
  36. package/dist/js/uikit-core.js +299 -273
  37. package/dist/js/uikit-core.min.js +1 -1
  38. package/dist/js/uikit-icons.js +9 -4
  39. package/dist/js/uikit-icons.min.js +1 -1
  40. package/dist/js/uikit.js +505 -365
  41. package/dist/js/uikit.min.js +1 -1
  42. package/package.json +3 -3
  43. package/src/images/components/navbar-toggle-icon.svg +1 -1
  44. package/src/images/icons/arrow-up-right.svg +4 -0
  45. package/src/images/icons/git-branch.svg +4 -4
  46. package/src/images/icons/git-fork.svg +4 -4
  47. package/src/images/icons/link-external.svg +5 -0
  48. package/src/images/icons/signal.svg +3 -0
  49. package/src/images/icons/telegram.svg +3 -0
  50. package/src/images/icons/threads.svg +3 -0
  51. package/src/images/icons/x.svg +3 -0
  52. package/src/js/components/countdown.js +1 -3
  53. package/src/js/components/internal/slider-preload.js +6 -0
  54. package/src/js/components/lightbox-panel.js +2 -6
  55. package/src/js/components/parallax.js +1 -20
  56. package/src/js/components/slider.js +38 -18
  57. package/src/js/components/slideshow.js +14 -46
  58. package/src/js/components/sortable.js +7 -6
  59. package/src/js/components/tooltip.js +1 -7
  60. package/src/js/core/accordion.js +1 -1
  61. package/src/js/core/drop.js +3 -5
  62. package/src/js/core/dropnav.js +24 -20
  63. package/src/js/core/height-match.js +7 -3
  64. package/src/js/core/height-placeholder.js +32 -0
  65. package/src/js/core/icon.js +12 -5
  66. package/src/js/core/index.js +2 -0
  67. package/src/js/core/inverse.js +103 -0
  68. package/src/js/core/modal.js +13 -0
  69. package/src/js/core/navbar.js +32 -172
  70. package/src/js/core/responsive.js +2 -29
  71. package/src/js/core/sticky.js +45 -29
  72. package/src/js/core/video.js +5 -1
  73. package/src/js/mixin/modal.js +1 -1
  74. package/src/js/mixin/parallax.js +19 -0
  75. package/src/js/mixin/slider-autoplay.js +1 -3
  76. package/src/js/mixin/slider-drag.js +22 -19
  77. package/src/js/mixin/slider-nav.js +10 -1
  78. package/src/js/mixin/slider-parallax.js +138 -0
  79. package/src/js/mixin/slider-reactive.js +1 -1
  80. package/src/js/mixin/slider.js +25 -3
  81. package/src/js/util/animation.js +14 -14
  82. package/src/js/util/dom.js +2 -2
  83. package/src/js/util/mouse.js +8 -11
  84. package/src/js/util/scroll.js +58 -0
  85. package/src/js/util/selector.js +4 -2
  86. package/src/js/util/style.js +3 -3
  87. package/src/js/util/viewport.js +8 -4
  88. package/src/less/components/align.less +2 -2
  89. package/src/less/components/animation.less +2 -2
  90. package/src/less/components/article.less +2 -2
  91. package/src/less/components/base.less +3 -3
  92. package/src/less/components/card.less +13 -6
  93. package/src/less/components/column.less +3 -3
  94. package/src/less/components/container.less +3 -3
  95. package/src/less/components/divider.less +2 -2
  96. package/src/less/components/dropbar.less +1 -1
  97. package/src/less/components/dropdown.less +1 -1
  98. package/src/less/components/dropnav.less +1 -1
  99. package/src/less/components/form.less +1 -1
  100. package/src/less/components/grid.less +3 -3
  101. package/src/less/components/height.less +1 -1
  102. package/src/less/components/icon.less +3 -3
  103. package/src/less/components/inverse.less +12 -0
  104. package/src/less/components/link.less +1 -1
  105. package/src/less/components/modal.less +3 -3
  106. package/src/less/components/nav.less +66 -0
  107. package/src/less/components/navbar.less +7 -11
  108. package/src/less/components/overlay.less +5 -0
  109. package/src/less/components/position.less +7 -7
  110. package/src/less/components/section.less +6 -5
  111. package/src/less/components/sticky.less +1 -1
  112. package/src/less/components/svg.less +3 -3
  113. package/src/less/components/tile.less +10 -0
  114. package/src/less/components/transition.less +9 -9
  115. package/src/less/components/utility.less +4 -4
  116. package/src/less/components/width.less +7 -7
  117. package/src/less/theme/alert.less +1 -1
  118. package/src/less/theme/align.less +1 -1
  119. package/src/less/theme/animation.less +1 -1
  120. package/src/less/theme/article.less +1 -1
  121. package/src/less/theme/background.less +1 -1
  122. package/src/less/theme/badge.less +1 -1
  123. package/src/less/theme/base.less +1 -1
  124. package/src/less/theme/breadcrumb.less +1 -1
  125. package/src/less/theme/button.less +1 -1
  126. package/src/less/theme/card.less +1 -1
  127. package/src/less/theme/close.less +1 -1
  128. package/src/less/theme/column.less +1 -1
  129. package/src/less/theme/comment.less +1 -1
  130. package/src/less/theme/container.less +1 -1
  131. package/src/less/theme/description-list.less +1 -1
  132. package/src/less/theme/divider.less +1 -1
  133. package/src/less/theme/dotnav.less +1 -1
  134. package/src/less/theme/drop.less +1 -1
  135. package/src/less/theme/dropbar.less +1 -1
  136. package/src/less/theme/dropdown.less +1 -1
  137. package/src/less/theme/form-range.less +1 -1
  138. package/src/less/theme/height.less +1 -1
  139. package/src/less/theme/icon.less +1 -1
  140. package/src/less/theme/iconnav.less +1 -1
  141. package/src/less/theme/inverse.less +1 -1
  142. package/src/less/theme/label.less +1 -1
  143. package/src/less/theme/leader.less +1 -1
  144. package/src/less/theme/lightbox.less +1 -1
  145. package/src/less/theme/margin.less +1 -1
  146. package/src/less/theme/modal.less +1 -1
  147. package/src/less/theme/nav.less +1 -1
  148. package/src/less/theme/navbar.less +3 -3
  149. package/src/less/theme/notification.less +1 -1
  150. package/src/less/theme/offcanvas.less +1 -1
  151. package/src/less/theme/overlay.less +1 -1
  152. package/src/less/theme/padding.less +1 -1
  153. package/src/less/theme/pagination.less +1 -1
  154. package/src/less/theme/position.less +1 -1
  155. package/src/less/theme/search.less +1 -1
  156. package/src/less/theme/spinner.less +1 -1
  157. package/src/less/theme/sticky.less +1 -1
  158. package/src/less/theme/tab.less +2 -2
  159. package/src/less/theme/table.less +1 -1
  160. package/src/less/theme/thumbnav.less +1 -1
  161. package/src/less/theme/tile.less +1 -1
  162. package/src/less/theme/tooltip.less +1 -1
  163. package/src/less/theme/totop.less +1 -1
  164. package/src/less/theme/transition.less +1 -1
  165. package/src/less/theme/utility.less +1 -1
  166. package/src/less/theme/variables.less +1 -1
  167. package/src/less/theme/width.less +1 -1
  168. package/src/less/uikit.less +1 -1
  169. package/src/scss/components/align.scss +2 -2
  170. package/src/scss/components/animation.scss +2 -2
  171. package/src/scss/components/base.scss +2 -2
  172. package/src/scss/components/card.scss +12 -6
  173. package/src/scss/components/column.scss +3 -3
  174. package/src/scss/components/container.scss +3 -3
  175. package/src/scss/components/divider.scss +2 -2
  176. package/src/scss/components/dropnav.scss +1 -1
  177. package/src/scss/components/form.scss +1 -1
  178. package/src/scss/components/grid.scss +3 -3
  179. package/src/scss/components/height.scss +1 -1
  180. package/src/scss/components/icon.scss +3 -3
  181. package/src/scss/components/inverse.scss +12 -0
  182. package/src/scss/components/modal.scss +3 -3
  183. package/src/scss/components/nav.scss +63 -0
  184. package/src/scss/components/navbar.scss +5 -8
  185. package/src/scss/components/overlay.scss +4 -0
  186. package/src/scss/components/position.scss +7 -7
  187. package/src/scss/components/section.scss +6 -5
  188. package/src/scss/components/sticky.scss +1 -1
  189. package/src/scss/components/svg.scss +3 -3
  190. package/src/scss/components/tile.scss +8 -0
  191. package/src/scss/components/transition.scss +9 -9
  192. package/src/scss/components/utility.scss +4 -4
  193. package/src/scss/components/width.scss +7 -7
  194. package/src/scss/mixins-theme.scss +10 -7
  195. package/src/scss/mixins.scss +7 -4
  196. package/src/scss/theme/alert.scss +1 -0
  197. package/src/scss/theme/align.scss +1 -1
  198. package/src/scss/theme/animation.scss +1 -1
  199. package/src/scss/theme/article.scss +1 -1
  200. package/src/scss/theme/background.scss +1 -1
  201. package/src/scss/theme/badge.scss +1 -1
  202. package/src/scss/theme/base.scss +1 -1
  203. package/src/scss/theme/breadcrumb.scss +1 -1
  204. package/src/scss/theme/button.scss +1 -1
  205. package/src/scss/theme/card.scss +1 -0
  206. package/src/scss/theme/close.scss +1 -1
  207. package/src/scss/theme/column.scss +1 -1
  208. package/src/scss/theme/comment.scss +1 -1
  209. package/src/scss/theme/container.scss +1 -1
  210. package/src/scss/theme/description-list.scss +1 -1
  211. package/src/scss/theme/divider.scss +1 -1
  212. package/src/scss/theme/dotnav.scss +1 -0
  213. package/src/scss/theme/drop.scss +1 -1
  214. package/src/scss/theme/dropbar.scss +1 -1
  215. package/src/scss/theme/dropdown.scss +1 -1
  216. package/src/scss/theme/form-range.scss +1 -1
  217. package/src/scss/theme/height.scss +1 -1
  218. package/src/scss/theme/icon.scss +1 -1
  219. package/src/scss/theme/iconnav.scss +1 -1
  220. package/src/scss/theme/inverse.scss +1 -1
  221. package/src/scss/theme/label.scss +1 -1
  222. package/src/scss/theme/leader.scss +1 -1
  223. package/src/scss/theme/lightbox.scss +1 -1
  224. package/src/scss/theme/margin.scss +1 -1
  225. package/src/scss/theme/modal.scss +1 -0
  226. package/src/scss/theme/nav.scss +1 -1
  227. package/src/scss/theme/navbar.scss +1 -1
  228. package/src/scss/theme/notification.scss +1 -1
  229. package/src/scss/theme/offcanvas.scss +1 -1
  230. package/src/scss/theme/overlay.scss +1 -1
  231. package/src/scss/theme/padding.scss +1 -1
  232. package/src/scss/theme/pagination.scss +1 -1
  233. package/src/scss/theme/position.scss +1 -1
  234. package/src/scss/theme/search.scss +1 -1
  235. package/src/scss/theme/spinner.scss +1 -1
  236. package/src/scss/theme/sticky.scss +1 -1
  237. package/src/scss/theme/tab.scss +1 -1
  238. package/src/scss/theme/table.scss +1 -0
  239. package/src/scss/theme/thumbnav.scss +1 -1
  240. package/src/scss/theme/tile.scss +1 -1
  241. package/src/scss/theme/tooltip.scss +1 -1
  242. package/src/scss/theme/totop.scss +1 -1
  243. package/src/scss/theme/transition.scss +1 -1
  244. package/src/scss/theme/utility.scss +1 -1
  245. package/src/scss/theme/variables.scss +1 -1
  246. package/src/scss/theme/width.scss +1 -1
  247. package/src/scss/uikit.scss +1 -1
  248. package/src/scss/variables-theme.scss +20 -5
  249. package/src/scss/variables.scss +20 -5
  250. package/tests/height.html +58 -1
  251. package/tests/icon.html +38 -10
  252. package/tests/nav.html +42 -0
  253. package/tests/navbar.html +1 -1
  254. package/tests/offcanvas.html +8 -8
  255. package/tests/search.html +300 -202
  256. package/tests/slider.html +58 -0
  257. package/tests/slideshow.html +66 -0
  258. package/tests/sticky-navbar.html +381 -23
  259. package/src/images/icons/pagekit.svg +0 -3
  260. package/src/js/mixin/internal/scroll.js +0 -39
@@ -1,4 +1,4 @@
1
- /*! UIkit 3.17.12-dev.f1425d280 | https://www.getuikit.com | (c) 2014 - 2024 YOOtheme | MIT License */
1
+ /*! UIkit 3.18.1-dev.0856bd8a6 | https://www.getuikit.com | (c) 2014 - 2024 YOOtheme | MIT License */
2
2
 
3
3
  (function (global, factory) {
4
4
  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('uikit-util')) :
@@ -66,6 +66,15 @@
66
66
  ...options
67
67
  });
68
68
  }
69
+ function scroll(options) {
70
+ return observe(
71
+ (target, handler) => ({
72
+ disconnect: util.on(toScrollTargets(target), "scroll", handler, { passive: true })
73
+ }),
74
+ options,
75
+ "scroll"
76
+ );
77
+ }
69
78
  function observe(observe2, options, emit) {
70
79
  return {
71
80
  observe: observe2,
@@ -75,6 +84,13 @@
75
84
  ...options
76
85
  };
77
86
  }
87
+ function toScrollTargets(elements) {
88
+ return util.toNodes(elements).map((node) => {
89
+ const { ownerDocument } = node;
90
+ const parent2 = util.scrollParent(node, true);
91
+ return parent2 === ownerDocument.scrollingElement ? ownerDocument : parent2;
92
+ });
93
+ }
78
94
 
79
95
  var Class = {
80
96
  connected() {
@@ -125,9 +141,7 @@
125
141
  events: [
126
142
  {
127
143
  name: "visibilitychange",
128
- el() {
129
- return document;
130
- },
144
+ el: () => document,
131
145
  filter() {
132
146
  return this.autoplay;
133
147
  },
@@ -160,6 +174,7 @@
160
174
  const pointerDown = "touchstart mousedown";
161
175
  const pointerMove = "touchmove mousemove";
162
176
  const pointerUp = "touchend touchcancel mouseup click input scroll";
177
+ const preventClick = (e) => e.preventDefault();
163
178
  var SliderDrag = {
164
179
  props: {
165
180
  draggable: Boolean
@@ -187,7 +202,7 @@
187
202
  return `${this.selList} > *`;
188
203
  },
189
204
  handler(e) {
190
- if (!this.draggable || !util.isTouch(e) && hasSelectableText(e.target) || e.target.closest(util.selInput) || e.button > 0 || this.length < 2) {
205
+ if (!this.draggable || this.parallax || !util.isTouch(e) && hasSelectableText(e.target) || e.target.closest(util.selInput) || e.button > 0 || this.length < 2) {
191
206
  return;
192
207
  }
193
208
  this.start(e);
@@ -231,20 +246,22 @@
231
246
  if (distance === 0 || this.prevPos === this.pos || !this.dragging && Math.abs(distance) < this.threshold) {
232
247
  return;
233
248
  }
234
- util.css(this.list, "pointerEvents", "none");
249
+ if (!this.dragging) {
250
+ util.on(this.list, "click", preventClick, pointerOptions);
251
+ }
235
252
  e.cancelable && e.preventDefault();
236
253
  this.dragging = true;
237
254
  this.dir = distance < 0 ? 1 : -1;
238
255
  let { slides, prevIndex } = this;
239
256
  let dis = Math.abs(distance);
240
257
  let nextIndex = this.getIndex(prevIndex + this.dir);
241
- let width = this._getDistance(prevIndex, nextIndex);
258
+ let width = getDistance.call(this, prevIndex, nextIndex);
242
259
  while (nextIndex !== prevIndex && dis > width) {
243
260
  this.drag -= width * this.dir;
244
261
  prevIndex = nextIndex;
245
262
  dis -= width;
246
263
  nextIndex = this.getIndex(prevIndex + this.dir);
247
- width = this._getDistance(prevIndex, nextIndex);
264
+ width = getDistance.call(this, prevIndex, nextIndex);
248
265
  }
249
266
  this.percent = dis / width;
250
267
  const prev = slides[prevIndex];
@@ -267,14 +284,14 @@
267
284
  if (changed) {
268
285
  this.prevIndex = prevIndex;
269
286
  this.index = nextIndex;
270
- !edge && util.trigger(prev, "beforeitemhide", [this]);
287
+ if (!edge) {
288
+ util.trigger(prev, "beforeitemhide", [this]);
289
+ util.trigger(prev, "itemhide", [this]);
290
+ }
271
291
  util.trigger(next, "beforeitemshow", [this]);
272
- }
273
- this._transitioner = this._translate(Math.abs(this.percent), prev, !edge && next);
274
- if (changed) {
275
- !edge && util.trigger(prev, "itemhide", [this]);
276
292
  util.trigger(next, "itemshow", [this]);
277
293
  }
294
+ this._transitioner = this._translate(Math.abs(this.percent), prev, !edge && next);
278
295
  },
279
296
  end() {
280
297
  util.off(document, pointerMove, this.move, pointerOptions);
@@ -298,14 +315,15 @@
298
315
  );
299
316
  }
300
317
  }
301
- util.css(this.list, { userSelect: "", pointerEvents: "" });
318
+ setTimeout(() => util.off(this.list, "click", preventClick, pointerOptions));
319
+ util.css(this.list, { userSelect: "" });
302
320
  this.drag = this.percent = null;
303
- },
304
- _getDistance(prev, next) {
305
- return this._getTransitioner(prev, prev !== next && next).getDistance() || this.slides[prev].offsetWidth;
306
321
  }
307
322
  }
308
323
  };
324
+ function getDistance(prev, next) {
325
+ return this._getTransitioner(prev, prev !== next && next).getDistance() || this.slides[prev].offsetWidth;
326
+ }
309
327
  function hasSelectableText(el) {
310
328
  return util.css(el, "userSelect") !== "none" && util.toArray(el.childNodes).some((el2) => el2.nodeType === 3 && el2.textContent.trim());
311
329
  }
@@ -440,6 +458,9 @@
440
458
  delegate() {
441
459
  return this.selNavItem;
442
460
  },
461
+ filter() {
462
+ return !this.parallax;
463
+ },
443
464
  handler(e) {
444
465
  if (e.target.closest("a,button") && (e.type === "click" || e.keyCode === keyMap.SPACE)) {
445
466
  e.preventDefault();
@@ -456,6 +477,9 @@
456
477
  delegate() {
457
478
  return this.selNavItem;
458
479
  },
480
+ filter() {
481
+ return !this.parallax;
482
+ },
459
483
  handler(e) {
460
484
  const { current, keyCode } = e;
461
485
  const cmd = util.data(current, this.attrItem);
@@ -480,9 +504,10 @@
480
504
  const item = util.toNumber(cmd);
481
505
  const active = item === index;
482
506
  util.toggleClass(el, this.clsActive, active);
507
+ util.toggleClass(button, "uk-disabled", this.parallax);
483
508
  util.attr(button, {
484
509
  "aria-selected": active,
485
- tabindex: active ? null : -1
510
+ tabindex: active && !this.parallax ? null : -1
486
511
  });
487
512
  if (active && button && util.matches(util.parent(el), ":focus-within")) {
488
513
  button.focus();
@@ -502,7 +527,7 @@
502
527
  var Slider = {
503
528
  mixins: [SliderAutoplay, SliderDrag, SliderNav, I18n],
504
529
  props: {
505
- clsActivated: Boolean,
530
+ clsActivated: String,
506
531
  easing: String,
507
532
  index: Number,
508
533
  finite: Boolean,
@@ -517,7 +542,10 @@
517
542
  stack: [],
518
543
  percent: 0,
519
544
  clsActive: "uk-active",
520
- clsActivated: false,
545
+ clsActivated: "",
546
+ clsEnter: "uk-slide-enter",
547
+ clsLeave: "uk-slide-leave",
548
+ clsSlideActive: "uk-slide-active",
521
549
  Transitioner: false,
522
550
  transitionOptions: {}
523
551
  }),
@@ -550,10 +578,24 @@
550
578
  }
551
579
  },
552
580
  observe: resize(),
581
+ events: {
582
+ itemshow({ target }) {
583
+ util.addClass(target, this.clsEnter, this.clsSlideActive);
584
+ },
585
+ itemshown({ target }) {
586
+ util.removeClass(target, this.clsEnter);
587
+ },
588
+ itemhide({ target }) {
589
+ util.addClass(target, this.clsLeave);
590
+ },
591
+ itemhidden({ target }) {
592
+ util.removeClass(target, this.clsLeave, this.clsSlideActive);
593
+ }
594
+ },
553
595
  methods: {
554
596
  show(index, force = false) {
555
597
  var _a;
556
- if (this.dragging || !this.length) {
598
+ if (this.dragging || !this.length || this.parallax) {
557
599
  return;
558
600
  }
559
601
  const { stack } = this;
@@ -645,10 +687,650 @@
645
687
  return 0.5 * x + 300;
646
688
  }
647
689
 
690
+ var Media = {
691
+ props: {
692
+ media: Boolean
693
+ },
694
+ data: {
695
+ media: false
696
+ },
697
+ connected() {
698
+ const media = toMedia(this.media, this.$el);
699
+ this.matchMedia = true;
700
+ if (media) {
701
+ this.mediaObj = window.matchMedia(media);
702
+ const handler = () => {
703
+ this.matchMedia = this.mediaObj.matches;
704
+ util.trigger(this.$el, util.createEvent("mediachange", false, true, [this.mediaObj]));
705
+ };
706
+ this.offMediaObj = util.on(this.mediaObj, "change", () => {
707
+ handler();
708
+ this.$emit("resize");
709
+ });
710
+ handler();
711
+ }
712
+ },
713
+ disconnected() {
714
+ var _a;
715
+ (_a = this.offMediaObj) == null ? void 0 : _a.call(this);
716
+ }
717
+ };
718
+ function toMedia(value, element) {
719
+ if (util.isString(value)) {
720
+ if (util.startsWith(value, "@")) {
721
+ value = util.toFloat(util.css(element, `--uk-breakpoint-${value.substr(1)}`));
722
+ } else if (isNaN(value)) {
723
+ return value;
724
+ }
725
+ }
726
+ return value && util.isNumeric(value) ? `(min-width: ${value}px)` : "";
727
+ }
728
+
729
+ function startsWith(str, search) {
730
+ var _a;
731
+ return (_a = str == null ? void 0 : str.startsWith) == null ? void 0 : _a.call(str, search);
732
+ }
733
+ const { isArray, from: toArray } = Array;
734
+ function isFunction(obj) {
735
+ return typeof obj === "function";
736
+ }
737
+ function isObject(obj) {
738
+ return obj !== null && typeof obj === "object";
739
+ }
740
+ function isWindow(obj) {
741
+ return isObject(obj) && obj === obj.window;
742
+ }
743
+ function isDocument(obj) {
744
+ return nodeType(obj) === 9;
745
+ }
746
+ function isNode(obj) {
747
+ return nodeType(obj) >= 1;
748
+ }
749
+ function nodeType(obj) {
750
+ return !isWindow(obj) && isObject(obj) && obj.nodeType;
751
+ }
752
+ function isString(value) {
753
+ return typeof value === "string";
754
+ }
755
+ function isUndefined(value) {
756
+ return value === void 0;
757
+ }
758
+ function toNode(element) {
759
+ return toNodes(element)[0];
760
+ }
761
+ function toNodes(element) {
762
+ return isNode(element) ? [element] : Array.from(element || []).filter(isNode);
763
+ }
764
+ function memoize(fn) {
765
+ const cache = /* @__PURE__ */ Object.create(null);
766
+ return (key, ...args) => cache[key] || (cache[key] = fn(key, ...args));
767
+ }
768
+
769
+ function attr(element, name, value) {
770
+ var _a;
771
+ if (isObject(name)) {
772
+ for (const key in name) {
773
+ attr(element, key, name[key]);
774
+ }
775
+ return;
776
+ }
777
+ if (isUndefined(value)) {
778
+ return (_a = toNode(element)) == null ? void 0 : _a.getAttribute(name);
779
+ } else {
780
+ for (const el of toNodes(element)) {
781
+ if (isFunction(value)) {
782
+ value = value.call(el, attr(el, name));
783
+ }
784
+ if (value === null) {
785
+ removeAttr(el, name);
786
+ } else {
787
+ el.setAttribute(name, value);
788
+ }
789
+ }
790
+ }
791
+ }
792
+ function removeAttr(element, name) {
793
+ toNodes(element).forEach((element2) => element2.removeAttribute(name));
794
+ }
795
+
796
+ function parent(element) {
797
+ var _a;
798
+ return (_a = toNode(element)) == null ? void 0 : _a.parentElement;
799
+ }
800
+ function filter(element, selector) {
801
+ return toNodes(element).filter((element2) => matches(element2, selector));
802
+ }
803
+ function matches(element, selector) {
804
+ return toNodes(element).some((element2) => element2.matches(selector));
805
+ }
806
+ function children(element, selector) {
807
+ element = toNode(element);
808
+ const children2 = element ? toArray(element.children) : [];
809
+ return selector ? filter(children2, selector) : children2;
810
+ }
811
+ function index(element, ref) {
812
+ return ref ? toNodes(element).indexOf(toNode(ref)) : children(parent(element)).indexOf(element);
813
+ }
814
+
815
+ function findAll(selector, context) {
816
+ return toNodes(_query(selector, toNode(context), "querySelectorAll"));
817
+ }
818
+ const contextSelectorRe = /(^|[^\\],)\s*[!>+~-]/;
819
+ const isContextSelector = memoize((selector) => selector.match(contextSelectorRe));
820
+ const contextSanitizeRe = /([!>+~-])(?=\s+[!>+~-]|\s*$)/g;
821
+ const sanatize = memoize((selector) => selector.replace(contextSanitizeRe, "$1 *"));
822
+ function _query(selector, context = document, queryFn) {
823
+ if (!selector || !isString(selector)) {
824
+ return selector;
825
+ }
826
+ selector = sanatize(selector);
827
+ if (isContextSelector(selector)) {
828
+ const split = splitSelector(selector);
829
+ selector = "";
830
+ for (let sel of split) {
831
+ let ctx = context;
832
+ if (sel[0] === "!") {
833
+ const selectors = sel.substr(1).trim().split(" ");
834
+ ctx = parent(context).closest(selectors[0]);
835
+ sel = selectors.slice(1).join(" ").trim();
836
+ if (!sel.length && split.length === 1) {
837
+ return ctx;
838
+ }
839
+ }
840
+ if (sel[0] === "-") {
841
+ const selectors = sel.substr(1).trim().split(" ");
842
+ const prev = (ctx || context).previousElementSibling;
843
+ ctx = matches(prev, sel.substr(1)) ? prev : null;
844
+ sel = selectors.slice(1).join(" ");
845
+ }
846
+ if (ctx) {
847
+ selector += `${selector ? "," : ""}${domPath(ctx)} ${sel}`;
848
+ }
849
+ }
850
+ if (!isDocument(context)) {
851
+ context = context.ownerDocument;
852
+ }
853
+ }
854
+ try {
855
+ return context[queryFn](selector);
856
+ } catch (e) {
857
+ return null;
858
+ }
859
+ }
860
+ const selectorRe = /.*?[^\\](?![^(]*\))(?:,|$)/g;
861
+ const splitSelector = memoize(
862
+ (selector) => selector.match(selectorRe).map((selector2) => selector2.replace(/,$/, "").trim())
863
+ );
864
+ function domPath(element) {
865
+ const names = [];
866
+ while (element.parentNode) {
867
+ const id = attr(element, "id");
868
+ if (id) {
869
+ names.unshift(`#${escape(id)}`);
870
+ break;
871
+ } else {
872
+ let { tagName } = element;
873
+ if (tagName !== "HTML") {
874
+ tagName += `:nth-child(${index(element) + 1})`;
875
+ }
876
+ names.unshift(tagName);
877
+ element = element.parentNode;
878
+ }
879
+ }
880
+ return names.join(" > ");
881
+ }
882
+ function escape(css) {
883
+ return isString(css) ? CSS.escape(css) : "";
884
+ }
885
+
886
+ const singleTagRe = /^<(\w+)\s*\/?>(?:<\/\1>)?$/;
887
+ function fragment(html2) {
888
+ const matches = singleTagRe.exec(html2);
889
+ if (matches) {
890
+ return document.createElement(matches[1]);
891
+ }
892
+ const container = document.createElement("template");
893
+ container.innerHTML = html2.trim();
894
+ return unwrapSingle(container.content.childNodes);
895
+ }
896
+ function unwrapSingle(nodes) {
897
+ return nodes.length > 1 ? nodes : nodes[0];
898
+ }
899
+ function $$(selector, context) {
900
+ return isHtml(selector) ? toNodes(fragment(selector)) : findAll(selector, context);
901
+ }
902
+ function isHtml(str) {
903
+ return isString(str) && startsWith(str.trim(), "<");
904
+ }
905
+
906
+ function getMaxPathLength(el) {
907
+ return Math.ceil(
908
+ Math.max(
909
+ 0,
910
+ ...$$("[stroke]", el).map((stroke) => {
911
+ try {
912
+ return stroke.getTotalLength();
913
+ } catch (e) {
914
+ return 0;
915
+ }
916
+ })
917
+ )
918
+ );
919
+ }
920
+
921
+ const props = {
922
+ x: transformFn,
923
+ y: transformFn,
924
+ rotate: transformFn,
925
+ scale: transformFn,
926
+ color: colorFn,
927
+ backgroundColor: colorFn,
928
+ borderColor: colorFn,
929
+ blur: filterFn,
930
+ hue: filterFn,
931
+ fopacity: filterFn,
932
+ grayscale: filterFn,
933
+ invert: filterFn,
934
+ saturate: filterFn,
935
+ sepia: filterFn,
936
+ opacity: cssPropFn,
937
+ stroke: strokeFn,
938
+ bgx: backgroundFn,
939
+ bgy: backgroundFn
940
+ };
941
+ const { keys } = Object;
942
+ ({
943
+ mixins: [Media],
944
+ props: fillObject(keys(props), "list"),
945
+ data: fillObject(keys(props), void 0),
946
+ computed: {
947
+ props(properties, $el) {
948
+ const stops = {};
949
+ for (const prop in properties) {
950
+ if (prop in props && !util.isUndefined(properties[prop])) {
951
+ stops[prop] = properties[prop].slice();
952
+ }
953
+ }
954
+ const result = {};
955
+ for (const prop in stops) {
956
+ result[prop] = props[prop](prop, $el, stops[prop], stops);
957
+ }
958
+ return result;
959
+ }
960
+ },
961
+ events: {
962
+ load() {
963
+ this.$emit();
964
+ }
965
+ },
966
+ methods: {
967
+ reset() {
968
+ for (const prop in this.getCss(0)) {
969
+ util.css(this.$el, prop, "");
970
+ }
971
+ },
972
+ getCss(percent) {
973
+ const css2 = {};
974
+ for (const prop in this.props) {
975
+ this.props[prop](css2, util.clamp(percent));
976
+ }
977
+ css2.willChange = Object.keys(css2).map(util.propName).join(",");
978
+ return css2;
979
+ }
980
+ }
981
+ });
982
+ function transformFn(prop, el, stops) {
983
+ let unit = getUnit(stops) || { x: "px", y: "px", rotate: "deg" }[prop] || "";
984
+ let transformFn2;
985
+ if (prop === "x" || prop === "y") {
986
+ prop = `translate${util.ucfirst(prop)}`;
987
+ transformFn2 = (stop) => util.toFloat(util.toFloat(stop).toFixed(unit === "px" ? 0 : 6));
988
+ } else if (prop === "scale") {
989
+ unit = "";
990
+ transformFn2 = (stop) => {
991
+ var _a;
992
+ return getUnit([stop]) ? util.toPx(stop, "width", el, true) / el[`offset${((_a = stop.endsWith) == null ? void 0 : _a.call(stop, "vh")) ? "Height" : "Width"}`] : util.toFloat(stop);
993
+ };
994
+ }
995
+ if (stops.length === 1) {
996
+ stops.unshift(prop === "scale" ? 1 : 0);
997
+ }
998
+ stops = parseStops(stops, transformFn2);
999
+ return (css2, percent) => {
1000
+ css2.transform = `${css2.transform || ""} ${prop}(${getValue(stops, percent)}${unit})`;
1001
+ };
1002
+ }
1003
+ function colorFn(prop, el, stops) {
1004
+ if (stops.length === 1) {
1005
+ stops.unshift(getCssValue(el, prop, ""));
1006
+ }
1007
+ stops = parseStops(stops, (stop) => parseColor(el, stop));
1008
+ return (css2, percent) => {
1009
+ const [start, end, p] = getStop(stops, percent);
1010
+ const value = start.map((value2, i) => {
1011
+ value2 += p * (end[i] - value2);
1012
+ return i === 3 ? util.toFloat(value2) : parseInt(value2, 10);
1013
+ }).join(",");
1014
+ css2[prop] = `rgba(${value})`;
1015
+ };
1016
+ }
1017
+ function parseColor(el, color) {
1018
+ return getCssValue(el, "color", color).split(/[(),]/g).slice(1, -1).concat(1).slice(0, 4).map(util.toFloat);
1019
+ }
1020
+ function filterFn(prop, el, stops) {
1021
+ if (stops.length === 1) {
1022
+ stops.unshift(0);
1023
+ }
1024
+ const unit = getUnit(stops) || { blur: "px", hue: "deg" }[prop] || "%";
1025
+ prop = { fopacity: "opacity", hue: "hue-rotate" }[prop] || prop;
1026
+ stops = parseStops(stops);
1027
+ return (css2, percent) => {
1028
+ const value = getValue(stops, percent);
1029
+ css2.filter = `${css2.filter || ""} ${prop}(${value + unit})`;
1030
+ };
1031
+ }
1032
+ function cssPropFn(prop, el, stops) {
1033
+ if (stops.length === 1) {
1034
+ stops.unshift(getCssValue(el, prop, ""));
1035
+ }
1036
+ stops = parseStops(stops);
1037
+ return (css2, percent) => {
1038
+ css2[prop] = getValue(stops, percent);
1039
+ };
1040
+ }
1041
+ function strokeFn(prop, el, stops) {
1042
+ if (stops.length === 1) {
1043
+ stops.unshift(0);
1044
+ }
1045
+ const unit = getUnit(stops);
1046
+ const length = getMaxPathLength(el);
1047
+ stops = parseStops(stops.reverse(), (stop) => {
1048
+ stop = util.toFloat(stop);
1049
+ return unit === "%" ? stop * length / 100 : stop;
1050
+ });
1051
+ if (!stops.some(([value]) => value)) {
1052
+ return util.noop;
1053
+ }
1054
+ util.css(el, "strokeDasharray", length);
1055
+ return (css2, percent) => {
1056
+ css2.strokeDashoffset = getValue(stops, percent);
1057
+ };
1058
+ }
1059
+ function backgroundFn(prop, el, stops, props2) {
1060
+ if (stops.length === 1) {
1061
+ stops.unshift(0);
1062
+ }
1063
+ const attr = prop === "bgy" ? "height" : "width";
1064
+ props2[prop] = parseStops(stops, (stop) => util.toPx(stop, attr, el));
1065
+ const bgProps = ["bgx", "bgy"].filter((prop2) => prop2 in props2);
1066
+ if (bgProps.length === 2 && prop === "bgx") {
1067
+ return util.noop;
1068
+ }
1069
+ if (getCssValue(el, "backgroundSize", "") === "cover") {
1070
+ return backgroundCoverFn(prop, el, stops, props2);
1071
+ }
1072
+ const positions = {};
1073
+ for (const prop2 of bgProps) {
1074
+ positions[prop2] = getBackgroundPos(el, prop2);
1075
+ }
1076
+ return setBackgroundPosFn(bgProps, positions, props2);
1077
+ }
1078
+ function backgroundCoverFn(prop, el, stops, props2) {
1079
+ const dimImage = getBackgroundImageDimensions(el);
1080
+ if (!dimImage.width) {
1081
+ return util.noop;
1082
+ }
1083
+ const dimEl = {
1084
+ width: el.offsetWidth,
1085
+ height: el.offsetHeight
1086
+ };
1087
+ const bgProps = ["bgx", "bgy"].filter((prop2) => prop2 in props2);
1088
+ const positions = {};
1089
+ for (const prop2 of bgProps) {
1090
+ const values = props2[prop2].map(([value]) => value);
1091
+ const min = Math.min(...values);
1092
+ const max = Math.max(...values);
1093
+ const down = values.indexOf(min) < values.indexOf(max);
1094
+ const diff = max - min;
1095
+ positions[prop2] = `${(down ? -diff : 0) - (down ? min : max)}px`;
1096
+ dimEl[prop2 === "bgy" ? "height" : "width"] += diff;
1097
+ }
1098
+ const dim = util.Dimensions.cover(dimImage, dimEl);
1099
+ for (const prop2 of bgProps) {
1100
+ const attr = prop2 === "bgy" ? "height" : "width";
1101
+ const overflow = dim[attr] - dimEl[attr];
1102
+ positions[prop2] = `max(${getBackgroundPos(el, prop2)},-${overflow}px) + ${positions[prop2]}`;
1103
+ }
1104
+ const fn = setBackgroundPosFn(bgProps, positions, props2);
1105
+ return (css2, percent) => {
1106
+ fn(css2, percent);
1107
+ css2.backgroundSize = `${dim.width}px ${dim.height}px`;
1108
+ css2.backgroundRepeat = "no-repeat";
1109
+ };
1110
+ }
1111
+ function getBackgroundPos(el, prop) {
1112
+ return getCssValue(el, `background-position-${prop.substr(-1)}`, "");
1113
+ }
1114
+ function setBackgroundPosFn(bgProps, positions, props2) {
1115
+ return function(css2, percent) {
1116
+ for (const prop of bgProps) {
1117
+ const value = getValue(props2[prop], percent);
1118
+ css2[`background-position-${prop.substr(-1)}`] = `calc(${positions[prop]} + ${value}px)`;
1119
+ }
1120
+ };
1121
+ }
1122
+ const dimensions = {};
1123
+ function getBackgroundImageDimensions(el) {
1124
+ const src = util.css(el, "backgroundImage").replace(/^none|url\(["']?(.+?)["']?\)$/, "$1");
1125
+ if (dimensions[src]) {
1126
+ return dimensions[src];
1127
+ }
1128
+ const image = new Image();
1129
+ if (src) {
1130
+ image.src = src;
1131
+ if (!image.naturalWidth) {
1132
+ image.onload = () => {
1133
+ dimensions[src] = toDimensions(image);
1134
+ util.trigger(el, util.createEvent("load", false));
1135
+ };
1136
+ return toDimensions(image);
1137
+ }
1138
+ }
1139
+ return dimensions[src] = toDimensions(image);
1140
+ }
1141
+ function toDimensions(image) {
1142
+ return {
1143
+ width: image.naturalWidth,
1144
+ height: image.naturalHeight
1145
+ };
1146
+ }
1147
+ function parseStops(stops, fn = util.toFloat) {
1148
+ const result = [];
1149
+ const { length } = stops;
1150
+ let nullIndex = 0;
1151
+ for (let i = 0; i < length; i++) {
1152
+ let [value, percent] = util.isString(stops[i]) ? stops[i].trim().split(/ (?![^(]*\))/) : [stops[i]];
1153
+ value = fn(value);
1154
+ percent = percent ? util.toFloat(percent) / 100 : null;
1155
+ if (i === 0) {
1156
+ if (percent === null) {
1157
+ percent = 0;
1158
+ } else if (percent) {
1159
+ result.push([value, 0]);
1160
+ }
1161
+ } else if (i === length - 1) {
1162
+ if (percent === null) {
1163
+ percent = 1;
1164
+ } else if (percent !== 1) {
1165
+ result.push([value, percent]);
1166
+ percent = 1;
1167
+ }
1168
+ }
1169
+ result.push([value, percent]);
1170
+ if (percent === null) {
1171
+ nullIndex++;
1172
+ } else if (nullIndex) {
1173
+ const leftPercent = result[i - nullIndex - 1][1];
1174
+ const p = (percent - leftPercent) / (nullIndex + 1);
1175
+ for (let j = nullIndex; j > 0; j--) {
1176
+ result[i - j][1] = leftPercent + p * (nullIndex - j + 1);
1177
+ }
1178
+ nullIndex = 0;
1179
+ }
1180
+ }
1181
+ return result;
1182
+ }
1183
+ function getStop(stops, percent) {
1184
+ const index = util.findIndex(stops.slice(1), ([, targetPercent]) => percent <= targetPercent) + 1;
1185
+ return [
1186
+ stops[index - 1][0],
1187
+ stops[index][0],
1188
+ (percent - stops[index - 1][1]) / (stops[index][1] - stops[index - 1][1])
1189
+ ];
1190
+ }
1191
+ function getValue(stops, percent) {
1192
+ const [start, end, p] = getStop(stops, percent);
1193
+ return start + Math.abs(start - end) * p * (start < end ? 1 : -1);
1194
+ }
1195
+ const unitRe = /^-?\d+(?:\.\d+)?(\S+)?/;
1196
+ function getUnit(stops, defaultUnit) {
1197
+ var _a;
1198
+ for (const stop of stops) {
1199
+ const match = (_a = stop.match) == null ? void 0 : _a.call(stop, unitRe);
1200
+ if (match) {
1201
+ return match[1];
1202
+ }
1203
+ }
1204
+ return defaultUnit;
1205
+ }
1206
+ function getCssValue(el, prop, value) {
1207
+ const prev = el.style[prop];
1208
+ const val = util.css(util.css(el, prop, value), prop);
1209
+ el.style[prop] = prev;
1210
+ return val;
1211
+ }
1212
+ function fillObject(keys2, value) {
1213
+ return keys2.reduce((data, prop) => {
1214
+ data[prop] = value;
1215
+ return data;
1216
+ }, {});
1217
+ }
1218
+ function ease(percent, easing) {
1219
+ return easing >= 0 ? Math.pow(percent, easing + 1) : 1 - Math.pow(1 - percent, 1 - easing);
1220
+ }
1221
+
1222
+ var SliderParallax = {
1223
+ props: {
1224
+ parallax: Boolean,
1225
+ parallaxTarget: Boolean,
1226
+ parallaxStart: String,
1227
+ parallaxEnd: String,
1228
+ parallaxEasing: Number
1229
+ },
1230
+ data: {
1231
+ parallax: false,
1232
+ parallaxTarget: false,
1233
+ parallaxStart: 0,
1234
+ parallaxEnd: 0,
1235
+ parallaxEasing: 0
1236
+ },
1237
+ observe: [
1238
+ resize({
1239
+ target: ({ $el, parallaxTarget }) => [$el, parallaxTarget],
1240
+ filter: ({ parallax }) => parallax
1241
+ }),
1242
+ scroll({ filter: ({ parallax }) => parallax })
1243
+ ],
1244
+ computed: {
1245
+ parallaxTarget({ parallaxTarget }, $el) {
1246
+ return parallaxTarget && util.query(parallaxTarget, $el) || this.list;
1247
+ }
1248
+ },
1249
+ update: {
1250
+ write() {
1251
+ if (!this.parallax) {
1252
+ return;
1253
+ }
1254
+ const target = this.parallaxTarget;
1255
+ const start = util.toPx(this.parallaxStart, "height", target, true);
1256
+ const end = util.toPx(this.parallaxEnd, "height", target, true);
1257
+ const percent = ease(util.scrolledOver(target, start, end), this.parallaxEasing);
1258
+ const [prevIndex, slidePercent] = this.getIndexAt(percent);
1259
+ const nextIndex = this.getValidIndex(prevIndex + Math.ceil(slidePercent));
1260
+ const prev = this.slides[prevIndex];
1261
+ const next = this.slides[nextIndex];
1262
+ const { triggerShow, triggerShown, triggerHide, triggerHidden } = useTriggers(this);
1263
+ if (~this.prevIndex) {
1264
+ for (const i of /* @__PURE__ */ new Set([this.index, this.prevIndex])) {
1265
+ if (!util.includes([nextIndex, prevIndex], i)) {
1266
+ triggerHide(this.slides[i]);
1267
+ triggerHidden(this.slides[i]);
1268
+ }
1269
+ }
1270
+ }
1271
+ const changed = this.prevIndex !== prevIndex || this.index !== nextIndex;
1272
+ this.dir = 1;
1273
+ this.prevIndex = prevIndex;
1274
+ this.index = nextIndex;
1275
+ if (prev !== next) {
1276
+ triggerHide(prev);
1277
+ }
1278
+ triggerShow(next);
1279
+ if (changed) {
1280
+ triggerShown(prev);
1281
+ }
1282
+ this._translate(prev === next ? 1 : slidePercent, prev, next);
1283
+ },
1284
+ events: ["scroll", "resize"]
1285
+ },
1286
+ methods: {
1287
+ getIndexAt(percent) {
1288
+ const index = percent * (this.length - 1);
1289
+ return [Math.floor(index), index % 1];
1290
+ }
1291
+ }
1292
+ };
1293
+ function useTriggers(cmp) {
1294
+ const { clsSlideActive, clsEnter, clsLeave } = cmp;
1295
+ return { triggerShow, triggerShown, triggerHide, triggerHidden };
1296
+ function triggerShow(el) {
1297
+ if (util.hasClass(el, clsLeave)) {
1298
+ triggerHide(el);
1299
+ triggerHidden(el);
1300
+ }
1301
+ if (!util.hasClass(el, clsSlideActive)) {
1302
+ util.trigger(el, "beforeitemshow", [cmp]);
1303
+ util.trigger(el, "itemshow", [cmp]);
1304
+ }
1305
+ }
1306
+ function triggerShown(el) {
1307
+ if (util.hasClass(el, clsEnter)) {
1308
+ util.trigger(el, "itemshown", [cmp]);
1309
+ }
1310
+ }
1311
+ function triggerHide(el) {
1312
+ if (!util.hasClass(el, clsSlideActive)) {
1313
+ triggerShow(el);
1314
+ }
1315
+ if (util.hasClass(el, clsEnter)) {
1316
+ triggerShown(el);
1317
+ }
1318
+ if (!util.hasClass(el, clsLeave)) {
1319
+ util.trigger(el, "beforeitemhide", [cmp]);
1320
+ util.trigger(el, "itemhide", [cmp]);
1321
+ }
1322
+ }
1323
+ function triggerHidden(el) {
1324
+ if (util.hasClass(el, clsLeave)) {
1325
+ util.trigger(el, "itemhidden", [cmp]);
1326
+ }
1327
+ }
1328
+ }
1329
+
648
1330
  var SliderReactive = {
649
1331
  update: {
650
1332
  write() {
651
- if (this.stack.length || this.dragging) {
1333
+ if (this.stack.length || this.dragging || this.parallax) {
652
1334
  return;
653
1335
  }
654
1336
  const index = this.getValidIndex();
@@ -666,7 +1348,12 @@
666
1348
  observe: lazyload({
667
1349
  target: ({ slides }) => slides,
668
1350
  targets: (instance) => instance.getAdjacentSlides()
669
- })
1351
+ }),
1352
+ methods: {
1353
+ getAdjacentSlides() {
1354
+ return [1, -1].map((i) => this.slides[this.getIndex(this.index + i)]);
1355
+ }
1356
+ }
670
1357
  };
671
1358
 
672
1359
  function translate(value = 0, unit = "%") {
@@ -795,7 +1482,7 @@
795
1482
  }
796
1483
 
797
1484
  var Component = {
798
- mixins: [Class, Slider, SliderReactive, SliderPreload],
1485
+ mixins: [Class, Slider, SliderReactive, SliderParallax, SliderPreload],
799
1486
  props: {
800
1487
  center: Boolean,
801
1488
  sets: Boolean
@@ -810,9 +1497,6 @@
810
1497
  Transitioner
811
1498
  },
812
1499
  computed: {
813
- avgWidth() {
814
- return getWidth(this.list) / this.length;
815
- },
816
1500
  finite({ finite }) {
817
1501
  return finite || isFinite(this.list, this.center);
818
1502
  },
@@ -834,7 +1518,7 @@
834
1518
  return ~index ? index : this.length - 1;
835
1519
  },
836
1520
  sets({ sets: enabled }) {
837
- if (!enabled) {
1521
+ if (!enabled || this.parallax) {
838
1522
  return;
839
1523
  }
840
1524
  let left = 0;
@@ -846,7 +1530,7 @@
846
1530
  left = 0;
847
1531
  }
848
1532
  if (this.center) {
849
- if (left < width / 2 && left + slideWidth + util.dimensions(util.getIndex(+i + 1, this.slides)).width / 2 > width / 2) {
1533
+ if (left < width / 2 && left + slideWidth + util.dimensions(this.slides[util.getIndex(+i + 1, this.slides)]).width / 2 > width / 2) {
850
1534
  sets.push(+i);
851
1535
  left = width / 2 - slideWidth / 2;
852
1536
  }
@@ -883,10 +1567,7 @@
883
1567
  el.hidden = !this.maxIndex || index > this.maxIndex || this.sets && !util.includes(this.sets, index);
884
1568
  }
885
1569
  }
886
- if (this.length && !this.dragging && !this.stack.length) {
887
- this.reorder();
888
- this._translate(1);
889
- }
1570
+ this.reorder();
890
1571
  this.updateActiveClasses();
891
1572
  },
892
1573
  events: ["resize"]
@@ -907,13 +1588,15 @@
907
1588
  return;
908
1589
  }
909
1590
  const index = this.dir < 0 || !this.slides[this.prevIndex] ? this.index : this.prevIndex;
910
- this.duration = speedUp(this.avgWidth / this.velocity) * (util.dimensions(this.slides[index]).width / this.avgWidth);
1591
+ const avgWidth = getWidth(this.list) / this.length;
1592
+ this.duration = speedUp(avgWidth / this.velocity) * (util.dimensions(this.slides[index]).width / avgWidth);
911
1593
  this.reorder();
912
1594
  },
913
1595
  itemshow() {
914
1596
  if (~this.prevIndex) {
915
1597
  util.addClass(this._getTransitioner().getItemIn(), this.clsActive);
916
1598
  }
1599
+ this.updateActiveClasses(this.prevIndex);
917
1600
  },
918
1601
  itemshown() {
919
1602
  this.updateActiveClasses();
@@ -946,11 +1629,11 @@
946
1629
  width -= util.dimensions(slide).width;
947
1630
  }
948
1631
  },
949
- updateActiveClasses() {
950
- const actives = this._getTransitioner(this.index).getActives();
1632
+ updateActiveClasses(currentIndex = this.index) {
1633
+ const actives = this._getTransitioner(currentIndex).getActives();
951
1634
  const activeClasses = [
952
1635
  this.clsActive,
953
- (!this.sets || util.includes(this.sets, util.toFloat(this.index))) && this.clsActivated || ""
1636
+ !this.sets || util.includes(this.sets, util.toFloat(this.index)) ? this.clsActivated : ""
954
1637
  ];
955
1638
  for (const slide of this.slides) {
956
1639
  const active = util.includes(actives, slide);
@@ -996,6 +1679,21 @@
996
1679
  } while (this.length > j && currentLeft > left && currentLeft < right);
997
1680
  }
998
1681
  return Array.from(slides);
1682
+ },
1683
+ getIndexAt(percent) {
1684
+ let index = -1;
1685
+ const firstSlideWidth = util.dimensions(this.slides[0]).width;
1686
+ const lastSlideWidth = util.dimensions(util.last(this.slides)).width;
1687
+ const scrollDist = getWidth(this.list) - (this.center ? firstSlideWidth / 2 + lastSlideWidth / 2 : lastSlideWidth);
1688
+ let dist = percent * scrollDist;
1689
+ let slidePercent = 0;
1690
+ do {
1691
+ const slideWidth = util.dimensions(this.slides[++index]).width;
1692
+ const slideDist = this.center ? slideWidth / 2 + util.dimensions(this.slides[index + 1]).width / 2 : slideWidth;
1693
+ slidePercent = dist / slideDist % 1;
1694
+ dist -= slideDist;
1695
+ } while (dist >= 0 && index < this.maxIndex);
1696
+ return [index, slidePercent];
999
1697
  }
1000
1698
  }
1001
1699
  };