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.
- package/CHANGELOG.md +31 -0
- package/dist/css/uikit-core-rtl.css +577 -504
- package/dist/css/uikit-core-rtl.min.css +1 -1
- package/dist/css/uikit-core.css +577 -504
- package/dist/css/uikit-core.min.css +1 -1
- package/dist/css/uikit-rtl.css +600 -527
- package/dist/css/uikit-rtl.min.css +1 -1
- package/dist/css/uikit.css +600 -527
- package/dist/css/uikit.min.css +1 -1
- package/dist/js/components/countdown.js +2 -4
- package/dist/js/components/countdown.min.js +1 -1
- package/dist/js/components/filter.js +1 -1
- package/dist/js/components/filter.min.js +1 -1
- package/dist/js/components/lightbox-panel.js +96 -60
- package/dist/js/components/lightbox-panel.min.js +1 -1
- package/dist/js/components/lightbox.js +96 -60
- package/dist/js/components/lightbox.min.js +1 -1
- package/dist/js/components/notification.js +1 -1
- package/dist/js/components/notification.min.js +1 -1
- package/dist/js/components/parallax.js +11 -6
- package/dist/js/components/parallax.min.js +1 -1
- package/dist/js/components/slider-parallax.js +8 -3
- package/dist/js/components/slider-parallax.min.js +1 -1
- package/dist/js/components/slider.js +735 -37
- package/dist/js/components/slider.min.js +1 -1
- package/dist/js/components/slideshow-parallax.js +8 -3
- package/dist/js/components/slideshow-parallax.min.js +1 -1
- package/dist/js/components/slideshow.js +792 -129
- package/dist/js/components/slideshow.min.js +1 -1
- package/dist/js/components/sortable.js +7 -7
- package/dist/js/components/sortable.min.js +1 -1
- package/dist/js/components/tooltip.js +2 -8
- package/dist/js/components/tooltip.min.js +1 -1
- package/dist/js/components/upload.js +1 -1
- package/dist/js/components/upload.min.js +1 -1
- package/dist/js/uikit-core.js +299 -273
- package/dist/js/uikit-core.min.js +1 -1
- package/dist/js/uikit-icons.js +9 -4
- package/dist/js/uikit-icons.min.js +1 -1
- package/dist/js/uikit.js +505 -365
- package/dist/js/uikit.min.js +1 -1
- package/package.json +3 -3
- package/src/images/components/navbar-toggle-icon.svg +1 -1
- package/src/images/icons/arrow-up-right.svg +4 -0
- package/src/images/icons/git-branch.svg +4 -4
- package/src/images/icons/git-fork.svg +4 -4
- package/src/images/icons/link-external.svg +5 -0
- package/src/images/icons/signal.svg +3 -0
- package/src/images/icons/telegram.svg +3 -0
- package/src/images/icons/threads.svg +3 -0
- package/src/images/icons/x.svg +3 -0
- package/src/js/components/countdown.js +1 -3
- package/src/js/components/internal/slider-preload.js +6 -0
- package/src/js/components/lightbox-panel.js +2 -6
- package/src/js/components/parallax.js +1 -20
- package/src/js/components/slider.js +38 -18
- package/src/js/components/slideshow.js +14 -46
- package/src/js/components/sortable.js +7 -6
- package/src/js/components/tooltip.js +1 -7
- package/src/js/core/accordion.js +1 -1
- package/src/js/core/drop.js +3 -5
- package/src/js/core/dropnav.js +24 -20
- package/src/js/core/height-match.js +7 -3
- package/src/js/core/height-placeholder.js +32 -0
- package/src/js/core/icon.js +12 -5
- package/src/js/core/index.js +2 -0
- package/src/js/core/inverse.js +103 -0
- package/src/js/core/modal.js +13 -0
- package/src/js/core/navbar.js +32 -172
- package/src/js/core/responsive.js +2 -29
- package/src/js/core/sticky.js +45 -29
- package/src/js/core/video.js +5 -1
- package/src/js/mixin/modal.js +1 -1
- package/src/js/mixin/parallax.js +19 -0
- package/src/js/mixin/slider-autoplay.js +1 -3
- package/src/js/mixin/slider-drag.js +22 -19
- package/src/js/mixin/slider-nav.js +10 -1
- package/src/js/mixin/slider-parallax.js +138 -0
- package/src/js/mixin/slider-reactive.js +1 -1
- package/src/js/mixin/slider.js +25 -3
- package/src/js/util/animation.js +14 -14
- package/src/js/util/dom.js +2 -2
- package/src/js/util/mouse.js +8 -11
- package/src/js/util/scroll.js +58 -0
- package/src/js/util/selector.js +4 -2
- package/src/js/util/style.js +3 -3
- package/src/js/util/viewport.js +8 -4
- package/src/less/components/align.less +2 -2
- package/src/less/components/animation.less +2 -2
- package/src/less/components/article.less +2 -2
- package/src/less/components/base.less +3 -3
- package/src/less/components/card.less +13 -6
- package/src/less/components/column.less +3 -3
- package/src/less/components/container.less +3 -3
- package/src/less/components/divider.less +2 -2
- package/src/less/components/dropbar.less +1 -1
- package/src/less/components/dropdown.less +1 -1
- package/src/less/components/dropnav.less +1 -1
- package/src/less/components/form.less +1 -1
- package/src/less/components/grid.less +3 -3
- package/src/less/components/height.less +1 -1
- package/src/less/components/icon.less +3 -3
- package/src/less/components/inverse.less +12 -0
- package/src/less/components/link.less +1 -1
- package/src/less/components/modal.less +3 -3
- package/src/less/components/nav.less +66 -0
- package/src/less/components/navbar.less +7 -11
- package/src/less/components/overlay.less +5 -0
- package/src/less/components/position.less +7 -7
- package/src/less/components/section.less +6 -5
- package/src/less/components/sticky.less +1 -1
- package/src/less/components/svg.less +3 -3
- package/src/less/components/tile.less +10 -0
- package/src/less/components/transition.less +9 -9
- package/src/less/components/utility.less +4 -4
- package/src/less/components/width.less +7 -7
- package/src/less/theme/alert.less +1 -1
- package/src/less/theme/align.less +1 -1
- package/src/less/theme/animation.less +1 -1
- package/src/less/theme/article.less +1 -1
- package/src/less/theme/background.less +1 -1
- package/src/less/theme/badge.less +1 -1
- package/src/less/theme/base.less +1 -1
- package/src/less/theme/breadcrumb.less +1 -1
- package/src/less/theme/button.less +1 -1
- package/src/less/theme/card.less +1 -1
- package/src/less/theme/close.less +1 -1
- package/src/less/theme/column.less +1 -1
- package/src/less/theme/comment.less +1 -1
- package/src/less/theme/container.less +1 -1
- package/src/less/theme/description-list.less +1 -1
- package/src/less/theme/divider.less +1 -1
- package/src/less/theme/dotnav.less +1 -1
- package/src/less/theme/drop.less +1 -1
- package/src/less/theme/dropbar.less +1 -1
- package/src/less/theme/dropdown.less +1 -1
- package/src/less/theme/form-range.less +1 -1
- package/src/less/theme/height.less +1 -1
- package/src/less/theme/icon.less +1 -1
- package/src/less/theme/iconnav.less +1 -1
- package/src/less/theme/inverse.less +1 -1
- package/src/less/theme/label.less +1 -1
- package/src/less/theme/leader.less +1 -1
- package/src/less/theme/lightbox.less +1 -1
- package/src/less/theme/margin.less +1 -1
- package/src/less/theme/modal.less +1 -1
- package/src/less/theme/nav.less +1 -1
- package/src/less/theme/navbar.less +3 -3
- package/src/less/theme/notification.less +1 -1
- package/src/less/theme/offcanvas.less +1 -1
- package/src/less/theme/overlay.less +1 -1
- package/src/less/theme/padding.less +1 -1
- package/src/less/theme/pagination.less +1 -1
- package/src/less/theme/position.less +1 -1
- package/src/less/theme/search.less +1 -1
- package/src/less/theme/spinner.less +1 -1
- package/src/less/theme/sticky.less +1 -1
- package/src/less/theme/tab.less +2 -2
- package/src/less/theme/table.less +1 -1
- package/src/less/theme/thumbnav.less +1 -1
- package/src/less/theme/tile.less +1 -1
- package/src/less/theme/tooltip.less +1 -1
- package/src/less/theme/totop.less +1 -1
- package/src/less/theme/transition.less +1 -1
- package/src/less/theme/utility.less +1 -1
- package/src/less/theme/variables.less +1 -1
- package/src/less/theme/width.less +1 -1
- package/src/less/uikit.less +1 -1
- package/src/scss/components/align.scss +2 -2
- package/src/scss/components/animation.scss +2 -2
- package/src/scss/components/base.scss +2 -2
- package/src/scss/components/card.scss +12 -6
- package/src/scss/components/column.scss +3 -3
- package/src/scss/components/container.scss +3 -3
- package/src/scss/components/divider.scss +2 -2
- package/src/scss/components/dropnav.scss +1 -1
- package/src/scss/components/form.scss +1 -1
- package/src/scss/components/grid.scss +3 -3
- package/src/scss/components/height.scss +1 -1
- package/src/scss/components/icon.scss +3 -3
- package/src/scss/components/inverse.scss +12 -0
- package/src/scss/components/modal.scss +3 -3
- package/src/scss/components/nav.scss +63 -0
- package/src/scss/components/navbar.scss +5 -8
- package/src/scss/components/overlay.scss +4 -0
- package/src/scss/components/position.scss +7 -7
- package/src/scss/components/section.scss +6 -5
- package/src/scss/components/sticky.scss +1 -1
- package/src/scss/components/svg.scss +3 -3
- package/src/scss/components/tile.scss +8 -0
- package/src/scss/components/transition.scss +9 -9
- package/src/scss/components/utility.scss +4 -4
- package/src/scss/components/width.scss +7 -7
- package/src/scss/mixins-theme.scss +10 -7
- package/src/scss/mixins.scss +7 -4
- package/src/scss/theme/alert.scss +1 -0
- package/src/scss/theme/align.scss +1 -1
- package/src/scss/theme/animation.scss +1 -1
- package/src/scss/theme/article.scss +1 -1
- package/src/scss/theme/background.scss +1 -1
- package/src/scss/theme/badge.scss +1 -1
- package/src/scss/theme/base.scss +1 -1
- package/src/scss/theme/breadcrumb.scss +1 -1
- package/src/scss/theme/button.scss +1 -1
- package/src/scss/theme/card.scss +1 -0
- package/src/scss/theme/close.scss +1 -1
- package/src/scss/theme/column.scss +1 -1
- package/src/scss/theme/comment.scss +1 -1
- package/src/scss/theme/container.scss +1 -1
- package/src/scss/theme/description-list.scss +1 -1
- package/src/scss/theme/divider.scss +1 -1
- package/src/scss/theme/dotnav.scss +1 -0
- package/src/scss/theme/drop.scss +1 -1
- package/src/scss/theme/dropbar.scss +1 -1
- package/src/scss/theme/dropdown.scss +1 -1
- package/src/scss/theme/form-range.scss +1 -1
- package/src/scss/theme/height.scss +1 -1
- package/src/scss/theme/icon.scss +1 -1
- package/src/scss/theme/iconnav.scss +1 -1
- package/src/scss/theme/inverse.scss +1 -1
- package/src/scss/theme/label.scss +1 -1
- package/src/scss/theme/leader.scss +1 -1
- package/src/scss/theme/lightbox.scss +1 -1
- package/src/scss/theme/margin.scss +1 -1
- package/src/scss/theme/modal.scss +1 -0
- package/src/scss/theme/nav.scss +1 -1
- package/src/scss/theme/navbar.scss +1 -1
- package/src/scss/theme/notification.scss +1 -1
- package/src/scss/theme/offcanvas.scss +1 -1
- package/src/scss/theme/overlay.scss +1 -1
- package/src/scss/theme/padding.scss +1 -1
- package/src/scss/theme/pagination.scss +1 -1
- package/src/scss/theme/position.scss +1 -1
- package/src/scss/theme/search.scss +1 -1
- package/src/scss/theme/spinner.scss +1 -1
- package/src/scss/theme/sticky.scss +1 -1
- package/src/scss/theme/tab.scss +1 -1
- package/src/scss/theme/table.scss +1 -0
- package/src/scss/theme/thumbnav.scss +1 -1
- package/src/scss/theme/tile.scss +1 -1
- package/src/scss/theme/tooltip.scss +1 -1
- package/src/scss/theme/totop.scss +1 -1
- package/src/scss/theme/transition.scss +1 -1
- package/src/scss/theme/utility.scss +1 -1
- package/src/scss/theme/variables.scss +1 -1
- package/src/scss/theme/width.scss +1 -1
- package/src/scss/uikit.scss +1 -1
- package/src/scss/variables-theme.scss +20 -5
- package/src/scss/variables.scss +20 -5
- package/tests/height.html +58 -1
- package/tests/icon.html +38 -10
- package/tests/nav.html +42 -0
- package/tests/navbar.html +1 -1
- package/tests/offcanvas.html +8 -8
- package/tests/search.html +300 -202
- package/tests/slider.html +58 -0
- package/tests/slideshow.html +66 -0
- package/tests/sticky-navbar.html +381 -23
- package/src/images/icons/pagekit.svg +0 -3
- package/src/js/mixin/internal/scroll.js +0 -39
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! UIkit 3.
|
|
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
|
-
|
|
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 =
|
|
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 =
|
|
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
|
|
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.
|
|
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:
|
|
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:
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
1632
|
+
updateActiveClasses(currentIndex = this.index) {
|
|
1633
|
+
const actives = this._getTransitioner(currentIndex).getActives();
|
|
951
1634
|
const activeClasses = [
|
|
952
1635
|
this.clsActive,
|
|
953
|
-
|
|
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
|
};
|