uikit 3.25.18-dev.9fa57fb → 3.25.18-dev.f49c4ef
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 +32 -2
- package/build/prefix.js +1 -1
- package/build/publishDev.js +1 -1
- package/build/scope.js +1 -1
- package/build/scss.js +1 -1
- package/dist/css/uikit-core-rtl.css +942 -820
- package/dist/css/uikit-core-rtl.min.css +1 -1
- package/dist/css/uikit-core.css +942 -820
- package/dist/css/uikit-core.min.css +1 -1
- package/dist/css/uikit-rtl.css +1039 -917
- package/dist/css/uikit-rtl.min.css +1 -1
- package/dist/css/uikit.css +1039 -917
- package/dist/css/uikit.min.css +1 -1
- package/dist/js/components/countdown.js +1 -1
- 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 +133 -132
- package/dist/js/components/lightbox-panel.min.js +1 -1
- package/dist/js/components/lightbox.js +134 -133
- package/dist/js/components/lightbox.min.js +1 -1
- package/dist/js/components/marquee.js +179 -0
- package/dist/js/components/marquee.min.js +1 -0
- package/dist/js/components/notification.js +1 -1
- package/dist/js/components/notification.min.js +1 -1
- package/dist/js/components/parallax.js +8 -12
- package/dist/js/components/parallax.min.js +1 -1
- package/dist/js/components/slider-parallax.js +8 -12
- package/dist/js/components/slider-parallax.min.js +1 -1
- package/dist/js/components/slider.js +43 -27
- package/dist/js/components/slider.min.js +1 -1
- package/dist/js/components/slideshow-parallax.js +8 -12
- package/dist/js/components/slideshow-parallax.min.js +1 -1
- package/dist/js/components/slideshow.js +71 -102
- package/dist/js/components/slideshow.min.js +1 -1
- package/dist/js/components/sortable.js +1 -1
- package/dist/js/components/sortable.min.js +1 -1
- package/dist/js/components/tooltip.js +19 -19
- 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 +752 -262
- package/dist/js/uikit-core.min.js +1 -1
- package/dist/js/uikit-icons.js +1 -1
- package/dist/js/uikit-icons.min.js +1 -1
- package/dist/js/uikit.js +629 -376
- package/dist/js/uikit.min.js +1 -1
- package/package.json +1 -1
- package/src/js/api/component.js +2 -3
- package/src/js/api/observables.js +2 -4
- package/src/js/api/options.js +6 -3
- package/src/js/api/props.js +1 -4
- package/src/js/api/state.js +7 -8
- package/src/js/components/index.js +1 -0
- package/src/js/components/internal/lightbox-animations.js +7 -26
- package/src/js/components/internal/slideshow-animations.js +15 -62
- package/src/js/components/lightbox-panel.js +121 -96
- package/src/js/components/lightbox.js +5 -8
- package/src/js/components/marquee.js +123 -0
- package/src/js/components/slider.js +2 -2
- package/src/js/components/tooltip.js +4 -2
- package/src/js/core/accordion.js +78 -29
- package/src/js/core/drop.js +5 -4
- package/src/js/core/dropnav.js +3 -3
- package/src/js/core/grid.js +5 -19
- package/src/js/core/height-match.js +1 -2
- package/src/js/core/margin.js +3 -0
- package/src/js/core/overflow-fade.js +5 -5
- package/src/js/core/sticky.js +1 -1
- package/src/js/core/switcher.js +24 -44
- package/src/js/core/video.js +172 -15
- package/src/js/mixin/connect.js +55 -0
- package/src/js/mixin/internal/slideshow-animations.js +5 -13
- package/src/js/mixin/internal/slideshow-transitioner.js +2 -2
- package/src/js/mixin/modal.js +4 -3
- package/src/js/mixin/parallax.js +1 -4
- package/src/js/mixin/position.js +1 -1
- package/src/js/mixin/scroll-driven.js +57 -0
- package/src/js/mixin/slider-nav.js +1 -1
- package/src/js/mixin/slider-parallax.js +9 -38
- package/src/js/mixin/togglable.js +13 -14
- package/src/js/util/attr.js +7 -7
- package/src/js/util/class.js +1 -1
- package/src/js/util/dom.js +3 -4
- package/src/js/util/lang.js +1 -1
- package/src/js/util/player.js +4 -4
- package/src/js/util/style.js +10 -15
- package/src/js/util/viewport.js +22 -25
- package/src/less/components/_import.less +6 -1
- package/src/less/components/base.less +1 -1
- package/src/less/components/button.less +1 -1
- package/src/less/components/dropcap.less +71 -0
- package/src/less/components/floating-shadow.less +66 -0
- package/src/less/components/form.less +5 -5
- package/src/less/components/grid.less +57 -64
- package/src/less/components/logo.less +94 -0
- package/src/less/components/margin.less +152 -124
- package/src/less/components/marquee.less +133 -0
- package/src/less/components/nav.less +1 -1
- package/src/less/components/padding.less +9 -9
- package/src/less/components/text.less +6 -0
- package/src/less/components/utility.less +0 -163
- package/src/less/theme/_import.less +5 -1
- package/src/less/theme/dropcap.less +29 -0
- package/src/less/theme/floating-shadow.less +20 -0
- package/src/less/theme/logo.less +29 -0
- package/src/less/theme/marquee.less +14 -0
- package/src/less/theme/utility.less +0 -32
- package/src/scss/components/_import.scss +6 -1
- package/src/scss/components/base.scss +1 -1
- package/src/scss/components/button.scss +1 -1
- package/src/scss/components/dropcap.scss +63 -0
- package/src/scss/components/floating-shadow.scss +63 -0
- package/src/scss/components/form.scss +5 -5
- package/src/scss/components/grid.scss +57 -64
- package/src/scss/components/logo.scss +75 -0
- package/src/scss/components/margin.scss +152 -124
- package/src/scss/components/marquee.scss +136 -0
- package/src/scss/components/nav.scss +1 -1
- package/src/scss/components/padding.scss +9 -9
- package/src/scss/components/text.scss +6 -0
- package/src/scss/components/utility.scss +0 -129
- package/src/scss/mixins-theme.scss +41 -32
- package/src/scss/mixins.scss +38 -29
- package/src/scss/variables-theme.scss +14 -14
- package/src/scss/variables.scss +14 -14
- package/tests/accordion.html +77 -10
- package/tests/alert.html +1 -1
- package/tests/align.html +5 -5
- package/tests/animation.html +4 -4
- package/tests/article.html +7 -7
- package/tests/background.html +2 -2
- package/tests/badge.html +1 -1
- package/tests/base.html +2 -2
- package/tests/button.html +1 -1
- package/tests/card.html +15 -15
- package/tests/close.html +2 -2
- package/tests/comment.html +9 -9
- package/tests/container.html +2 -2
- package/tests/countdown.html +21 -21
- package/tests/cover.html +3 -3
- package/tests/description-list.html +1 -1
- package/tests/divider.html +3 -3
- package/tests/dotnav.html +1 -1
- package/tests/drop.html +7 -7
- package/tests/dropbar.html +5 -5
- package/tests/dropcap.html +26 -0
- package/tests/dropdown.html +1 -1
- package/tests/dropnav.html +18 -18
- package/tests/filter.html +3 -3
- package/tests/floating-shadow.html +44 -0
- package/tests/form.html +14 -14
- package/tests/grid.html +41 -47
- package/tests/heading.html +2 -2
- package/tests/height-viewport.html +4 -4
- package/tests/height.html +5 -5
- package/tests/icon.html +8 -8
- package/tests/image.html +6 -6
- package/tests/index.html +13 -13
- package/tests/js/index.js +1 -1
- package/tests/leader.html +5 -5
- package/tests/lightbox.html +6 -6
- package/tests/link.html +1 -1
- package/tests/list.html +4 -4
- package/tests/logo.html +84 -0
- package/tests/margin.html +7 -7
- package/tests/marker.html +3 -3
- package/tests/marquee.html +617 -0
- package/tests/modal.html +3 -3
- package/tests/nav.html +5 -5
- package/tests/navbar.html +27 -27
- package/tests/notification.html +2 -2
- package/tests/offcanvas.html +12 -12
- package/tests/overlay.html +3 -3
- package/tests/padding.html +1 -1
- package/tests/pagination.html +3 -3
- package/tests/parallax.html +1 -1
- package/tests/position.html +6 -6
- package/tests/scrollspy.html +12 -12
- package/tests/search.html +5 -5
- package/tests/section.html +17 -17
- package/tests/slidenav.html +3 -3
- package/tests/slider.html +5 -5
- package/tests/slideshow.html +33 -3
- package/tests/sortable.html +19 -19
- package/tests/sticky-navbar.html +4 -4
- package/tests/sticky-parallax.html +3 -3
- package/tests/sticky.html +3 -3
- package/tests/svg.html +3 -2
- package/tests/switcher.html +6 -6
- package/tests/tab.html +4 -4
- package/tests/text.html +3 -3
- package/tests/tile.html +4 -4
- package/tests/toggle.html +1 -1
- package/tests/tooltip.html +3 -3
- package/tests/totop.html +2 -2
- package/tests/transition.html +1 -1
- package/tests/upload.html +5 -5
- package/tests/utility.html +16 -116
- package/tests/video.html +224 -24
- package/tests/visibility.html +4 -4
- package/tests/width.html +12 -12
package/dist/js/uikit-core.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! UIkit 3.25.18-dev.
|
|
1
|
+
/*! UIkit 3.25.18-dev.f49c4ef | https://www.getuikit.com | (c) 2014 - 2026 YOOtheme | MIT License */
|
|
2
2
|
|
|
3
3
|
(function (global, factory) {
|
|
4
4
|
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
|
@@ -134,7 +134,7 @@
|
|
|
134
134
|
return array.filter(({ [prop]: check }) => seen.has(check) ? false : seen.add(check));
|
|
135
135
|
}
|
|
136
136
|
function pick(obj, props) {
|
|
137
|
-
return props.
|
|
137
|
+
return Object.fromEntries(props.map((key) => [key, obj[key]]));
|
|
138
138
|
}
|
|
139
139
|
function clamp(number, min = 0, max = 1) {
|
|
140
140
|
return Math.min(Math.max(toNumber(number) || 0, min), max);
|
|
@@ -230,7 +230,7 @@
|
|
|
230
230
|
}
|
|
231
231
|
}
|
|
232
232
|
function toClasses(str) {
|
|
233
|
-
return str ? isArray(str) ? str.
|
|
233
|
+
return str ? isArray(str) ? str.flatMap(toClasses) : String(str).split(" ").filter(Boolean) : [];
|
|
234
234
|
}
|
|
235
235
|
|
|
236
236
|
function attr(element, name, value) {
|
|
@@ -243,13 +243,12 @@
|
|
|
243
243
|
}
|
|
244
244
|
if (isUndefined(value)) {
|
|
245
245
|
return (_a = toNode(element)) == null ? void 0 : _a.getAttribute(name);
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
}
|
|
246
|
+
}
|
|
247
|
+
for (const el of toNodes(element)) {
|
|
248
|
+
if (value === null) {
|
|
249
|
+
removeAttr(el, name);
|
|
250
|
+
} else {
|
|
251
|
+
el.setAttribute(name, value);
|
|
253
252
|
}
|
|
254
253
|
}
|
|
255
254
|
}
|
|
@@ -589,19 +588,14 @@
|
|
|
589
588
|
property = propName(property);
|
|
590
589
|
if (isUndefined(value)) {
|
|
591
590
|
return getComputedStyle(element2).getPropertyValue(property);
|
|
592
|
-
} else {
|
|
593
|
-
element2.style.setProperty(
|
|
594
|
-
property,
|
|
595
|
-
isNumeric(value) && !cssNumber[property] && !isCustomProperty(property) ? `${value}px` : value || isNumber(value) ? value : "",
|
|
596
|
-
priority
|
|
597
|
-
);
|
|
598
591
|
}
|
|
592
|
+
element2.style.setProperty(
|
|
593
|
+
property,
|
|
594
|
+
isNumeric(value) && !cssNumber[property] && !isCustomProperty(property) ? `${value}px` : value || isNumber(value) ? value : "",
|
|
595
|
+
priority
|
|
596
|
+
);
|
|
599
597
|
} else if (isArray(property)) {
|
|
600
|
-
|
|
601
|
-
for (const prop of property) {
|
|
602
|
-
props[prop] = css(element2, prop);
|
|
603
|
-
}
|
|
604
|
-
return props;
|
|
598
|
+
return Object.fromEntries(property.map((prop) => [prop, css(element2, prop)]));
|
|
605
599
|
} else if (isObject(property)) {
|
|
606
600
|
for (const prop in property) {
|
|
607
601
|
css(element2, prop, property[prop], value);
|
|
@@ -785,7 +779,9 @@
|
|
|
785
779
|
);
|
|
786
780
|
}
|
|
787
781
|
function unwrap(element) {
|
|
788
|
-
toNodes(element).map(parent)
|
|
782
|
+
for (const elementParent of new Set(toNodes(element).map(parent))) {
|
|
783
|
+
elementParent.replaceWith(...elementParent.childNodes);
|
|
784
|
+
}
|
|
789
785
|
}
|
|
790
786
|
const singleTagRe = /^<(\w+)\s*\/?>(?:<\/\1>)?$/;
|
|
791
787
|
function fragment(html2) {
|
|
@@ -825,7 +821,7 @@
|
|
|
825
821
|
width: ["left", "right"],
|
|
826
822
|
height: ["top", "bottom"]
|
|
827
823
|
};
|
|
828
|
-
function dimensions(element) {
|
|
824
|
+
function dimensions$1(element) {
|
|
829
825
|
const rect = isElement(element) ? toNode(element).getBoundingClientRect() : { height: height(element), width: width(element), top: 0, left: 0 };
|
|
830
826
|
return {
|
|
831
827
|
height: rect.height,
|
|
@@ -840,7 +836,7 @@
|
|
|
840
836
|
if (coordinates) {
|
|
841
837
|
css(element, { left: 0, top: 0 });
|
|
842
838
|
}
|
|
843
|
-
const currentOffset = dimensions(element);
|
|
839
|
+
const currentOffset = dimensions$1(element);
|
|
844
840
|
if (element) {
|
|
845
841
|
const { scrollY, scrollX } = toWindow(element);
|
|
846
842
|
const offsetBy = { height: scrollY, width: scrollX };
|
|
@@ -941,15 +937,15 @@
|
|
|
941
937
|
return sumBy(parseCalc(value), (value2) => {
|
|
942
938
|
const unit = parseUnit(value2);
|
|
943
939
|
return unit ? percent(
|
|
944
|
-
unit === "vh" ? getViewportHeight() : unit === "vw" ? width(toWindow(element)) : offsetDim ? element[`offset${ucfirst(property)}`] : dimensions(element)[property],
|
|
940
|
+
unit === "vh" ? getViewportHeight() : unit === "vw" ? width(toWindow(element)) : offsetDim ? element[`offset${ucfirst(property)}`] : dimensions$1(element)[property],
|
|
945
941
|
value2
|
|
946
942
|
) : value2;
|
|
947
943
|
});
|
|
948
944
|
}
|
|
949
945
|
const calcRe = /-?\d+(?:\.\d+)?(?:v[wh]|%|px)?/g;
|
|
950
946
|
const parseCalc = memoize((calc) => calc.toString().replace(/\s/g, "").match(calcRe) || []);
|
|
951
|
-
const unitRe = /(?:v[hw]|%)$/;
|
|
952
|
-
const parseUnit = memoize((str) => (str.match(unitRe) || [])[0]);
|
|
947
|
+
const unitRe$1 = /(?:v[hw]|%)$/;
|
|
948
|
+
const parseUnit = memoize((str) => (str.match(unitRe$1) || [])[0]);
|
|
953
949
|
function percent(base, value) {
|
|
954
950
|
return base * toFloat(value) / 100;
|
|
955
951
|
}
|
|
@@ -1044,7 +1040,7 @@
|
|
|
1044
1040
|
if (!this.positions || this.positions.length < 2) {
|
|
1045
1041
|
return false;
|
|
1046
1042
|
}
|
|
1047
|
-
const p = dimensions(target);
|
|
1043
|
+
const p = dimensions$1(target);
|
|
1048
1044
|
const { left, right, top, bottom } = p;
|
|
1049
1045
|
const [prevPosition] = this.positions;
|
|
1050
1046
|
const position = last(this.positions);
|
|
@@ -1147,12 +1143,12 @@
|
|
|
1147
1143
|
return isTag(el, "iframe") && (isYoutube(el) || isVimeo(el));
|
|
1148
1144
|
}
|
|
1149
1145
|
function isYoutube(el) {
|
|
1150
|
-
return
|
|
1151
|
-
|
|
1146
|
+
return /\/\/.*?youtube(-nocookie)?\.[a-z]+\/(watch\?v=[^&\s]+|embed)|youtu\.be\/.*/.test(
|
|
1147
|
+
el.src
|
|
1152
1148
|
);
|
|
1153
1149
|
}
|
|
1154
1150
|
function isVimeo(el) {
|
|
1155
|
-
return
|
|
1151
|
+
return /vimeo\.com\/video\/.*/.test(el.src);
|
|
1156
1152
|
}
|
|
1157
1153
|
async function call(el, cmd) {
|
|
1158
1154
|
await enableApi(el);
|
|
@@ -1161,7 +1157,7 @@
|
|
|
1161
1157
|
function post(el, cmd) {
|
|
1162
1158
|
el.contentWindow.postMessage(JSON.stringify({ event: "command", ...cmd }), "*");
|
|
1163
1159
|
}
|
|
1164
|
-
const stateKey =
|
|
1160
|
+
const stateKey = /* @__PURE__ */ Symbol();
|
|
1165
1161
|
let counter = 0;
|
|
1166
1162
|
function enableApi(el) {
|
|
1167
1163
|
if (el[stateKey]) {
|
|
@@ -1192,17 +1188,16 @@
|
|
|
1192
1188
|
if (!isVisible(element)) {
|
|
1193
1189
|
return false;
|
|
1194
1190
|
}
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
);
|
|
1191
|
+
const rects = overflowParents(element).map((parent2) => {
|
|
1192
|
+
const { top, left, bottom, right } = offsetViewport(parent2);
|
|
1193
|
+
return {
|
|
1194
|
+
top: top - offsetTop,
|
|
1195
|
+
left: left - offsetLeft,
|
|
1196
|
+
bottom: bottom + offsetTop,
|
|
1197
|
+
right: right + offsetLeft
|
|
1198
|
+
};
|
|
1199
|
+
});
|
|
1200
|
+
return intersectRect(...rects, offset(element));
|
|
1206
1201
|
}
|
|
1207
1202
|
function scrollIntoView(element, { offset: offsetBy = 0 } = {}) {
|
|
1208
1203
|
const parents2 = isVisible(element) ? scrollParents(element, false, ["hidden"]) : [];
|
|
@@ -1242,7 +1237,7 @@
|
|
|
1242
1237
|
const percent = ease(clamp((Date.now() - start) / duration));
|
|
1243
1238
|
let diff = 0;
|
|
1244
1239
|
if (parents2[0] === element2 && scroll + top < maxScroll) {
|
|
1245
|
-
diff = offset(targetEl).top + (isScrollingElement ? 0 : element2.scrollTop) - targetTop - dimensions(getCoveringElement(targetEl)).height;
|
|
1240
|
+
diff = offset(targetEl).top + (isScrollingElement ? 0 : element2.scrollTop) - targetTop - dimensions$1(getCoveringElement(targetEl)).height;
|
|
1246
1241
|
}
|
|
1247
1242
|
if (css(element2, "scrollBehavior") !== "auto") {
|
|
1248
1243
|
css(element2, "scrollBehavior", "auto");
|
|
@@ -1286,11 +1281,12 @@
|
|
|
1286
1281
|
if (~fixedIndex) {
|
|
1287
1282
|
ancestors = ancestors.slice(fixedIndex);
|
|
1288
1283
|
}
|
|
1289
|
-
return [
|
|
1290
|
-
|
|
1284
|
+
return [
|
|
1285
|
+
scrollEl,
|
|
1286
|
+
...ancestors.filter(
|
|
1291
1287
|
(parent2) => css(parent2, "overflow").split(" ").some((prop) => includes(["auto", "scroll", ...props], prop)) && (!scrollable || parent2.scrollHeight > offsetViewport(parent2).height)
|
|
1292
1288
|
)
|
|
1293
|
-
|
|
1289
|
+
].reverse();
|
|
1294
1290
|
}
|
|
1295
1291
|
function scrollParent(...args) {
|
|
1296
1292
|
return scrollParents(...args)[0];
|
|
@@ -1329,7 +1325,7 @@
|
|
|
1329
1325
|
function getCoveringElement(target) {
|
|
1330
1326
|
const { document } = toWindow(target);
|
|
1331
1327
|
target = target || document.body;
|
|
1332
|
-
const { left, width, top } = dimensions(target);
|
|
1328
|
+
const { left, width, top } = dimensions$1(target);
|
|
1333
1329
|
for (const position of top ? [0, top] : [0]) {
|
|
1334
1330
|
let coverEl;
|
|
1335
1331
|
for (const el of document.elementsFromPoint(left + width / 2, position)) {
|
|
@@ -1338,7 +1334,7 @@
|
|
|
1338
1334
|
parents(target).reverse().find(
|
|
1339
1335
|
(parent2) => !parent2.contains(el) && !hasPosition(parent2, "static")
|
|
1340
1336
|
)
|
|
1341
|
-
) < zIndex(el) || hasPosition(el, "sticky") && (!target || parent(el).contains(target))) && (!coverEl || dimensions(coverEl).height < dimensions(el).height)) {
|
|
1337
|
+
) < zIndex(el) || hasPosition(el, "sticky") && (!target || parent(el).contains(target))) && (!coverEl || dimensions$1(coverEl).height < dimensions$1(el).height)) {
|
|
1342
1338
|
coverEl = el;
|
|
1343
1339
|
}
|
|
1344
1340
|
}
|
|
@@ -1559,7 +1555,7 @@
|
|
|
1559
1555
|
createEvent: createEvent,
|
|
1560
1556
|
css: css,
|
|
1561
1557
|
data: data,
|
|
1562
|
-
dimensions: dimensions,
|
|
1558
|
+
dimensions: dimensions$1,
|
|
1563
1559
|
each: each,
|
|
1564
1560
|
empty: empty,
|
|
1565
1561
|
endsWith: endsWith,
|
|
@@ -1679,7 +1675,7 @@
|
|
|
1679
1675
|
wrapInner: wrapInner
|
|
1680
1676
|
});
|
|
1681
1677
|
|
|
1682
|
-
var VERSION = '3.25.18-dev.
|
|
1678
|
+
var VERSION = '3.25.18-dev.f49c4ef';
|
|
1683
1679
|
|
|
1684
1680
|
function initUpdates(instance) {
|
|
1685
1681
|
instance._data = {};
|
|
@@ -1992,11 +1988,14 @@
|
|
|
1992
1988
|
function coerce$1(type, value) {
|
|
1993
1989
|
if (type === Boolean) {
|
|
1994
1990
|
return toBoolean(value);
|
|
1995
|
-
}
|
|
1991
|
+
}
|
|
1992
|
+
if (type === Number) {
|
|
1996
1993
|
return toNumber(value);
|
|
1997
|
-
}
|
|
1994
|
+
}
|
|
1995
|
+
if (type === "list") {
|
|
1998
1996
|
return toList(value);
|
|
1999
|
-
}
|
|
1997
|
+
}
|
|
1998
|
+
if (type === Object && isString(value)) {
|
|
2000
1999
|
return parseOptions(value);
|
|
2001
2000
|
}
|
|
2002
2001
|
return type ? type(value) : value;
|
|
@@ -2046,7 +2045,7 @@
|
|
|
2046
2045
|
}
|
|
2047
2046
|
const getAttributes = memoize((id, props) => {
|
|
2048
2047
|
const attributes = Object.keys(props);
|
|
2049
|
-
const filter = attributes
|
|
2048
|
+
const filter = [...attributes, id].flatMap((key) => [hyphenate(key), `data-${hyphenate(key)}`]);
|
|
2050
2049
|
return { attributes, filter };
|
|
2051
2050
|
});
|
|
2052
2051
|
function initPropsObserver(instance) {
|
|
@@ -2136,14 +2135,10 @@
|
|
|
2136
2135
|
}
|
|
2137
2136
|
function normalizeData({ data = {} }, { args = [], props = {} }) {
|
|
2138
2137
|
if (isArray(data)) {
|
|
2139
|
-
data = data.slice(0, args.length).reduce(
|
|
2140
|
-
|
|
2141
|
-
|
|
2142
|
-
|
|
2143
|
-
data2[args[index]] = value;
|
|
2144
|
-
}
|
|
2145
|
-
return data2;
|
|
2146
|
-
}, {});
|
|
2138
|
+
data = data.slice(0, args.length).reduce(
|
|
2139
|
+
(data2, value, index) => assign(data2, isPlainObject(value) ? value : { [args[index]]: value }),
|
|
2140
|
+
{}
|
|
2141
|
+
);
|
|
2147
2142
|
}
|
|
2148
2143
|
for (const key in data) {
|
|
2149
2144
|
if (isUndefined(data[key])) {
|
|
@@ -2191,11 +2186,10 @@
|
|
|
2191
2186
|
function init(element2) {
|
|
2192
2187
|
const instance = getComponent(element2, name);
|
|
2193
2188
|
if (instance) {
|
|
2194
|
-
if (data) {
|
|
2195
|
-
instance.$destroy();
|
|
2196
|
-
} else {
|
|
2189
|
+
if (!data) {
|
|
2197
2190
|
return instance;
|
|
2198
2191
|
}
|
|
2192
|
+
instance.$destroy();
|
|
2199
2193
|
}
|
|
2200
2194
|
return new Component({ el: element2, data });
|
|
2201
2195
|
}
|
|
@@ -2411,8 +2405,8 @@
|
|
|
2411
2405
|
for (const el of toNodes(isFunction(targets) ? targets(this) : targets)) {
|
|
2412
2406
|
$$('[loading="lazy"]', el).slice(0, preload - 1).forEach((el2) => removeAttr(el2, "loading"));
|
|
2413
2407
|
}
|
|
2414
|
-
for (const
|
|
2415
|
-
observer.unobserve(
|
|
2408
|
+
for (const { target } of entries.filter(({ isIntersecting }) => isIntersecting)) {
|
|
2409
|
+
observer.unobserve(target);
|
|
2416
2410
|
}
|
|
2417
2411
|
},
|
|
2418
2412
|
...options
|
|
@@ -2490,12 +2484,6 @@
|
|
|
2490
2484
|
}
|
|
2491
2485
|
};
|
|
2492
2486
|
|
|
2493
|
-
function maybeDefaultPreventClick(e) {
|
|
2494
|
-
if (e.target.closest('a[href="#"],a[href=""]')) {
|
|
2495
|
-
e.preventDefault();
|
|
2496
|
-
}
|
|
2497
|
-
}
|
|
2498
|
-
|
|
2499
2487
|
var Togglable = {
|
|
2500
2488
|
props: {
|
|
2501
2489
|
cls: Boolean,
|
|
@@ -2588,27 +2576,25 @@
|
|
|
2588
2576
|
const dimProp = props[dirs.indexOf(dir)];
|
|
2589
2577
|
const marginProp = `margin-${dir[0]}`;
|
|
2590
2578
|
const marginStartProp = `margin-${startProp}`;
|
|
2591
|
-
let currentDim = dimensions(el)[dimProp];
|
|
2579
|
+
let currentDim = dimensions$1(el)[dimProp];
|
|
2592
2580
|
const inProgress = Transition.inProgress(el);
|
|
2593
2581
|
await Transition.cancel(el);
|
|
2594
2582
|
if (show) {
|
|
2595
2583
|
_toggle(el, true);
|
|
2596
2584
|
}
|
|
2597
|
-
const prevProps =
|
|
2598
|
-
|
|
2599
|
-
|
|
2600
|
-
|
|
2601
|
-
|
|
2602
|
-
|
|
2603
|
-
|
|
2604
|
-
|
|
2605
|
-
|
|
2606
|
-
|
|
2607
|
-
|
|
2608
|
-
|
|
2609
|
-
|
|
2610
|
-
);
|
|
2611
|
-
const dim = dimensions(el);
|
|
2585
|
+
const prevProps = pick(el.style, [
|
|
2586
|
+
"padding",
|
|
2587
|
+
"border",
|
|
2588
|
+
"width",
|
|
2589
|
+
"height",
|
|
2590
|
+
"minWidth",
|
|
2591
|
+
"minHeight",
|
|
2592
|
+
"overflowY",
|
|
2593
|
+
"overflowX",
|
|
2594
|
+
marginProp,
|
|
2595
|
+
marginStartProp
|
|
2596
|
+
]);
|
|
2597
|
+
const dim = dimensions$1(el);
|
|
2612
2598
|
const currentMargin = toFloat(css(el, marginProp));
|
|
2613
2599
|
const marginStart = toFloat(css(el, marginStartProp));
|
|
2614
2600
|
const endDim = dim[dimProp] + marginStart;
|
|
@@ -2674,6 +2660,55 @@
|
|
|
2674
2660
|
);
|
|
2675
2661
|
}
|
|
2676
2662
|
|
|
2663
|
+
var Connect = {
|
|
2664
|
+
mixins: [Togglable],
|
|
2665
|
+
props: {
|
|
2666
|
+
connect: String
|
|
2667
|
+
},
|
|
2668
|
+
data: {
|
|
2669
|
+
connect: "",
|
|
2670
|
+
cls: "uk-active"
|
|
2671
|
+
},
|
|
2672
|
+
computed: {
|
|
2673
|
+
connects: {
|
|
2674
|
+
get: ({ connect }, $el) => connect ? queryAll(connect, $el) : [],
|
|
2675
|
+
observe: ({ connect }) => connect
|
|
2676
|
+
},
|
|
2677
|
+
connectChildren() {
|
|
2678
|
+
return this.connects.flatMap((el) => children(el));
|
|
2679
|
+
}
|
|
2680
|
+
},
|
|
2681
|
+
watch: {
|
|
2682
|
+
connects(connects) {
|
|
2683
|
+
for (const el of connects) {
|
|
2684
|
+
if (isTag(el, "ul")) {
|
|
2685
|
+
el.role = "presentation";
|
|
2686
|
+
}
|
|
2687
|
+
}
|
|
2688
|
+
}
|
|
2689
|
+
},
|
|
2690
|
+
observe: lazyload({ targets: ({ connectChildren }) => connectChildren }),
|
|
2691
|
+
methods: {
|
|
2692
|
+
showConnects(index, animate) {
|
|
2693
|
+
const toggle = async ({ children: children2 }) => {
|
|
2694
|
+
const actives = toArray(children2).filter(
|
|
2695
|
+
(child, i) => i !== index && hasClass(child, this.cls)
|
|
2696
|
+
);
|
|
2697
|
+
if (await this.toggleElement(actives, false, animate)) {
|
|
2698
|
+
await this.toggleElement(children2[index], true, animate);
|
|
2699
|
+
}
|
|
2700
|
+
};
|
|
2701
|
+
return Promise.all(this.connects.map(toggle));
|
|
2702
|
+
}
|
|
2703
|
+
}
|
|
2704
|
+
};
|
|
2705
|
+
|
|
2706
|
+
function maybeDefaultPreventClick(e) {
|
|
2707
|
+
if (e.target.closest('a[href="#"],a[href=""]')) {
|
|
2708
|
+
e.preventDefault();
|
|
2709
|
+
}
|
|
2710
|
+
}
|
|
2711
|
+
|
|
2677
2712
|
const keyMap = {
|
|
2678
2713
|
TAB: 9,
|
|
2679
2714
|
ENTER: 13,
|
|
@@ -2688,27 +2723,32 @@
|
|
|
2688
2723
|
};
|
|
2689
2724
|
|
|
2690
2725
|
var Accordion = {
|
|
2691
|
-
mixins: [Class,
|
|
2726
|
+
mixins: [Class, Connect],
|
|
2692
2727
|
props: {
|
|
2693
|
-
animation: Boolean,
|
|
2694
2728
|
targets: String,
|
|
2695
2729
|
active: null,
|
|
2696
2730
|
collapsible: Boolean,
|
|
2697
2731
|
multiple: Boolean,
|
|
2698
2732
|
toggle: String,
|
|
2699
2733
|
content: String,
|
|
2700
|
-
offset: Number
|
|
2734
|
+
offset: Number,
|
|
2735
|
+
switcherConnect: String
|
|
2701
2736
|
},
|
|
2702
2737
|
data: {
|
|
2703
2738
|
targets: "> *",
|
|
2704
2739
|
active: false,
|
|
2705
|
-
animation: true,
|
|
2740
|
+
animation: [true],
|
|
2706
2741
|
collapsible: true,
|
|
2707
2742
|
multiple: false,
|
|
2708
2743
|
clsOpen: "uk-open",
|
|
2744
|
+
cls: "uk-active",
|
|
2709
2745
|
toggle: ".uk-accordion-title",
|
|
2710
2746
|
content: ".uk-accordion-content",
|
|
2711
|
-
offset: 0
|
|
2747
|
+
offset: 0,
|
|
2748
|
+
switcherConnect: ""
|
|
2749
|
+
},
|
|
2750
|
+
beforeConnect() {
|
|
2751
|
+
this.connect = this.$props.connect = this.switcherConnect;
|
|
2712
2752
|
},
|
|
2713
2753
|
computed: {
|
|
2714
2754
|
items: ({ targets }, $el) => $$(targets, $el),
|
|
@@ -2732,6 +2772,12 @@
|
|
|
2732
2772
|
this.toggle(active, false);
|
|
2733
2773
|
}
|
|
2734
2774
|
},
|
|
2775
|
+
connectChildren() {
|
|
2776
|
+
this.showConnects(
|
|
2777
|
+
findIndex(this.items, (el) => hasClass(el, this.clsOpen)),
|
|
2778
|
+
false
|
|
2779
|
+
);
|
|
2780
|
+
},
|
|
2735
2781
|
toggles() {
|
|
2736
2782
|
this.$emit();
|
|
2737
2783
|
},
|
|
@@ -2782,43 +2828,66 @@
|
|
|
2782
2828
|
continue;
|
|
2783
2829
|
}
|
|
2784
2830
|
toggle.id = generateId(this, toggle);
|
|
2785
|
-
content.id = generateId(this, content);
|
|
2786
2831
|
const active = includes(activeItems, this.items[index2]);
|
|
2832
|
+
attr(content, {
|
|
2833
|
+
id: generateId(this, content),
|
|
2834
|
+
role: "region",
|
|
2835
|
+
"aria-labelledby": toggle.id
|
|
2836
|
+
});
|
|
2837
|
+
if (isTag(content, "ul")) {
|
|
2838
|
+
attr(children(content), "role", "presentation");
|
|
2839
|
+
}
|
|
2840
|
+
const controls = [content.id];
|
|
2841
|
+
for (const { children: children2 } of this.connects) {
|
|
2842
|
+
const item = children2[index2];
|
|
2843
|
+
if (!item) {
|
|
2844
|
+
continue;
|
|
2845
|
+
}
|
|
2846
|
+
attr(item, {
|
|
2847
|
+
id: generateId(this, item),
|
|
2848
|
+
role: "tabpanel",
|
|
2849
|
+
"aria-labelledby": toggle.id
|
|
2850
|
+
});
|
|
2851
|
+
controls.push(item.id);
|
|
2852
|
+
}
|
|
2787
2853
|
attr(toggle, {
|
|
2788
2854
|
role: isTag(toggle, "a") ? "button" : null,
|
|
2789
|
-
"aria-controls":
|
|
2855
|
+
"aria-controls": controls.join(" "),
|
|
2790
2856
|
"aria-expanded": active,
|
|
2791
2857
|
"aria-disabled": !this.collapsible && activeItems.length < 2 && active
|
|
2792
2858
|
});
|
|
2793
|
-
attr(content, { role: "region", "aria-labelledby": toggle.id });
|
|
2794
|
-
if (isTag(content, "ul")) {
|
|
2795
|
-
attr(children(content), "role", "presentation");
|
|
2796
|
-
}
|
|
2797
2859
|
}
|
|
2798
2860
|
},
|
|
2799
2861
|
methods: {
|
|
2800
|
-
toggle(item, animate) {
|
|
2801
|
-
|
|
2862
|
+
async toggle(item, animate) {
|
|
2863
|
+
animate = animate !== false;
|
|
2864
|
+
const next = getIndex(item, this.items);
|
|
2865
|
+
item = this.items[next];
|
|
2802
2866
|
let items = [item];
|
|
2803
2867
|
const activeItems = filter(this.items, `.${this.clsOpen}`);
|
|
2804
|
-
|
|
2805
|
-
|
|
2806
|
-
|
|
2807
|
-
|
|
2808
|
-
|
|
2809
|
-
|
|
2810
|
-
|
|
2811
|
-
|
|
2812
|
-
|
|
2813
|
-
|
|
2814
|
-
|
|
2815
|
-
|
|
2816
|
-
|
|
2817
|
-
|
|
2818
|
-
|
|
2819
|
-
|
|
2820
|
-
)
|
|
2821
|
-
|
|
2868
|
+
const isActive = includes(activeItems, item);
|
|
2869
|
+
if (isActive && !this.collapsible && activeItems.length < 2) {
|
|
2870
|
+
return;
|
|
2871
|
+
}
|
|
2872
|
+
if (!isActive && !this.multiple) {
|
|
2873
|
+
items.push(...activeItems);
|
|
2874
|
+
}
|
|
2875
|
+
const toggle = (el) => this.toggleElement(el, !includes(activeItems, el), (el2, show) => {
|
|
2876
|
+
toggleClass(el2, this.clsOpen, show);
|
|
2877
|
+
if (!animate || !this.hasAnimation) {
|
|
2878
|
+
hide($(this.content, el2), !show);
|
|
2879
|
+
return;
|
|
2880
|
+
}
|
|
2881
|
+
return transition(el2, show, this);
|
|
2882
|
+
});
|
|
2883
|
+
const hideIndex = () => {
|
|
2884
|
+
const index2 = findIndex(children(this.connects[0]), (el) => hasClass(el, this.cls));
|
|
2885
|
+
return index2 === next ? findIndex(this.items, (i) => i !== item && includes(activeItems, i)) : index2;
|
|
2886
|
+
};
|
|
2887
|
+
return Promise.all([
|
|
2888
|
+
...items.map(toggle),
|
|
2889
|
+
this.showConnects(isActive ? hideIndex() : next, animate)
|
|
2890
|
+
]);
|
|
2822
2891
|
}
|
|
2823
2892
|
}
|
|
2824
2893
|
};
|
|
@@ -2836,7 +2905,7 @@
|
|
|
2836
2905
|
const currentHeight = toFloat(css(wrapper, "height"));
|
|
2837
2906
|
await Transition.cancel(wrapper);
|
|
2838
2907
|
hide(content, false);
|
|
2839
|
-
const endHeight = sumBy(["marginTop", "marginBottom"], (prop) => css(content, prop)) + dimensions(content).height;
|
|
2908
|
+
const endHeight = sumBy(["marginTop", "marginBottom"], (prop) => css(content, prop)) + dimensions$1(content).height;
|
|
2840
2909
|
const percent = currentHeight / endHeight;
|
|
2841
2910
|
duration = endHeight ? (velocity * endHeight + duration) * (show ? 1 - percent : percent) : 0;
|
|
2842
2911
|
css(wrapper, "height", currentHeight);
|
|
@@ -2852,7 +2921,7 @@
|
|
|
2852
2921
|
let frame;
|
|
2853
2922
|
(function scroll() {
|
|
2854
2923
|
frame = requestAnimationFrame(() => {
|
|
2855
|
-
const { top } = dimensions(el);
|
|
2924
|
+
const { top } = dimensions$1(el);
|
|
2856
2925
|
if (top < 0) {
|
|
2857
2926
|
scrollElement.scrollTop += top;
|
|
2858
2927
|
}
|
|
@@ -2909,22 +2978,395 @@
|
|
|
2909
2978
|
);
|
|
2910
2979
|
}
|
|
2911
2980
|
|
|
2981
|
+
var Media = {
|
|
2982
|
+
props: {
|
|
2983
|
+
media: Boolean
|
|
2984
|
+
},
|
|
2985
|
+
data: {
|
|
2986
|
+
media: false
|
|
2987
|
+
},
|
|
2988
|
+
connected() {
|
|
2989
|
+
const media = toMedia(this.media, this.$el);
|
|
2990
|
+
this.matchMedia = true;
|
|
2991
|
+
if (media) {
|
|
2992
|
+
this.mediaObj = window.matchMedia(media);
|
|
2993
|
+
const handler = () => {
|
|
2994
|
+
this.matchMedia = this.mediaObj.matches;
|
|
2995
|
+
trigger(this.$el, createEvent("mediachange", false, true, [this.mediaObj]));
|
|
2996
|
+
};
|
|
2997
|
+
this.offMediaObj = on(this.mediaObj, "change", () => {
|
|
2998
|
+
handler();
|
|
2999
|
+
this.$emit("resize");
|
|
3000
|
+
});
|
|
3001
|
+
handler();
|
|
3002
|
+
}
|
|
3003
|
+
},
|
|
3004
|
+
disconnected() {
|
|
3005
|
+
var _a;
|
|
3006
|
+
(_a = this.offMediaObj) == null ? void 0 : _a.call(this);
|
|
3007
|
+
}
|
|
3008
|
+
};
|
|
3009
|
+
function toMedia(value, element) {
|
|
3010
|
+
if (isString(value)) {
|
|
3011
|
+
if (startsWith(value, "@")) {
|
|
3012
|
+
value = toFloat(css(element, `--uk-breakpoint-${value.slice(1)}`));
|
|
3013
|
+
} else if (isNaN(value)) {
|
|
3014
|
+
return value;
|
|
3015
|
+
}
|
|
3016
|
+
}
|
|
3017
|
+
return value && isNumeric(value) ? `(min-width: ${value}px)` : "";
|
|
3018
|
+
}
|
|
3019
|
+
|
|
3020
|
+
function getMaxPathLength(el) {
|
|
3021
|
+
return isVisible(el) ? Math.ceil(
|
|
3022
|
+
Math.max(0, ...$$("[stroke]", el).map((stroke) => {
|
|
3023
|
+
var _a;
|
|
3024
|
+
return ((_a = stroke.getTotalLength) == null ? void 0 : _a.call(stroke)) || 0;
|
|
3025
|
+
}))
|
|
3026
|
+
) : 0;
|
|
3027
|
+
}
|
|
3028
|
+
|
|
3029
|
+
const props = {
|
|
3030
|
+
x: transformFn,
|
|
3031
|
+
y: transformFn,
|
|
3032
|
+
rotate: transformFn,
|
|
3033
|
+
scale: transformFn,
|
|
3034
|
+
color: colorFn,
|
|
3035
|
+
backgroundColor: colorFn,
|
|
3036
|
+
borderColor: colorFn,
|
|
3037
|
+
blur: filterFn,
|
|
3038
|
+
hue: filterFn,
|
|
3039
|
+
fopacity: filterFn,
|
|
3040
|
+
grayscale: filterFn,
|
|
3041
|
+
invert: filterFn,
|
|
3042
|
+
saturate: filterFn,
|
|
3043
|
+
sepia: filterFn,
|
|
3044
|
+
opacity: cssPropFn,
|
|
3045
|
+
stroke: strokeFn,
|
|
3046
|
+
bgx: backgroundFn,
|
|
3047
|
+
bgy: backgroundFn
|
|
3048
|
+
};
|
|
3049
|
+
const { keys } = Object;
|
|
3050
|
+
({
|
|
3051
|
+
props: fillObject(keys(props), "list"),
|
|
3052
|
+
data: fillObject(keys(props), void 0)});
|
|
3053
|
+
function transformFn(prop, el, stops) {
|
|
3054
|
+
let unit = getUnit(stops) || { x: "px", y: "px", rotate: "deg" }[prop] || "";
|
|
3055
|
+
let transformFn2;
|
|
3056
|
+
if (prop === "x" || prop === "y") {
|
|
3057
|
+
prop = `translate${ucfirst(prop)}`;
|
|
3058
|
+
transformFn2 = (stop) => toFloat(toFloat(stop).toFixed(unit === "px" ? 0 : 6));
|
|
3059
|
+
} else if (prop === "scale") {
|
|
3060
|
+
unit = "";
|
|
3061
|
+
transformFn2 = (stop) => {
|
|
3062
|
+
var _a;
|
|
3063
|
+
return getUnit([stop]) ? toPx(stop, "width", el, true) / el[`offset${((_a = stop.endsWith) == null ? void 0 : _a.call(stop, "vh")) ? "Height" : "Width"}`] : toFloat(stop);
|
|
3064
|
+
};
|
|
3065
|
+
}
|
|
3066
|
+
if (stops.length === 1) {
|
|
3067
|
+
stops.unshift(prop === "scale" ? 1 : 0);
|
|
3068
|
+
}
|
|
3069
|
+
stops = parseStops(stops, transformFn2);
|
|
3070
|
+
return (css2, percent) => {
|
|
3071
|
+
css2.transform = `${css2.transform || ""} ${prop}(${getValue(stops, percent)}${unit})`;
|
|
3072
|
+
};
|
|
3073
|
+
}
|
|
3074
|
+
function colorFn(prop, el, stops) {
|
|
3075
|
+
if (stops.length === 1) {
|
|
3076
|
+
stops.unshift(getCssValue(el, prop, ""));
|
|
3077
|
+
}
|
|
3078
|
+
stops = parseStops(stops, (stop) => parseColor(el, stop));
|
|
3079
|
+
return (css2, percent) => {
|
|
3080
|
+
const [start, end, p] = getStop(stops, percent);
|
|
3081
|
+
const value = start.map((value2, i) => {
|
|
3082
|
+
value2 += p * (end[i] - value2);
|
|
3083
|
+
return i === 3 ? toFloat(value2) : parseInt(value2, 10);
|
|
3084
|
+
}).join(",");
|
|
3085
|
+
css2[prop] = `rgba(${value})`;
|
|
3086
|
+
};
|
|
3087
|
+
}
|
|
3088
|
+
function parseColor(el, color) {
|
|
3089
|
+
return getCssValue(el, "color", color).split(/[(),]/g).slice(1, -1).concat(1).slice(0, 4).map(toFloat);
|
|
3090
|
+
}
|
|
3091
|
+
function filterFn(prop, el, stops) {
|
|
3092
|
+
if (stops.length === 1) {
|
|
3093
|
+
stops.unshift(0);
|
|
3094
|
+
}
|
|
3095
|
+
const unit = getUnit(stops) || { blur: "px", hue: "deg" }[prop] || "%";
|
|
3096
|
+
prop = { fopacity: "opacity", hue: "hue-rotate" }[prop] || prop;
|
|
3097
|
+
stops = parseStops(stops);
|
|
3098
|
+
return (css2, percent) => {
|
|
3099
|
+
const value = getValue(stops, percent);
|
|
3100
|
+
css2.filter = `${css2.filter || ""} ${prop}(${value + unit})`;
|
|
3101
|
+
};
|
|
3102
|
+
}
|
|
3103
|
+
function cssPropFn(prop, el, stops) {
|
|
3104
|
+
if (stops.length === 1) {
|
|
3105
|
+
stops.unshift(getCssValue(el, prop, ""));
|
|
3106
|
+
}
|
|
3107
|
+
stops = parseStops(stops);
|
|
3108
|
+
return (css2, percent) => {
|
|
3109
|
+
css2[prop] = getValue(stops, percent);
|
|
3110
|
+
};
|
|
3111
|
+
}
|
|
3112
|
+
function strokeFn(prop, el, stops) {
|
|
3113
|
+
if (stops.length === 1) {
|
|
3114
|
+
stops.unshift(0);
|
|
3115
|
+
}
|
|
3116
|
+
const unit = getUnit(stops);
|
|
3117
|
+
const length = getMaxPathLength(el);
|
|
3118
|
+
stops = parseStops(stops.reverse(), (stop) => {
|
|
3119
|
+
stop = toFloat(stop);
|
|
3120
|
+
return unit === "%" ? stop * length / 100 : stop;
|
|
3121
|
+
});
|
|
3122
|
+
if (!stops.some(([value]) => value)) {
|
|
3123
|
+
return noop;
|
|
3124
|
+
}
|
|
3125
|
+
css(el, "strokeDasharray", length);
|
|
3126
|
+
return (css2, percent) => {
|
|
3127
|
+
css2.strokeDashoffset = getValue(stops, percent);
|
|
3128
|
+
};
|
|
3129
|
+
}
|
|
3130
|
+
function backgroundFn(prop, el, stops, props2) {
|
|
3131
|
+
if (stops.length === 1) {
|
|
3132
|
+
stops.unshift(0);
|
|
3133
|
+
}
|
|
3134
|
+
const attr = prop === "bgy" ? "height" : "width";
|
|
3135
|
+
props2[prop] = parseStops(stops, (stop) => toPx(stop, attr, el));
|
|
3136
|
+
const bgProps = ["bgx", "bgy"].filter((prop2) => prop2 in props2);
|
|
3137
|
+
if (bgProps.length === 2 && prop === "bgx") {
|
|
3138
|
+
return noop;
|
|
3139
|
+
}
|
|
3140
|
+
if (getCssValue(el, "backgroundSize", "") === "cover") {
|
|
3141
|
+
return backgroundCoverFn(prop, el, stops, props2);
|
|
3142
|
+
}
|
|
3143
|
+
const positions = {};
|
|
3144
|
+
for (const prop2 of bgProps) {
|
|
3145
|
+
positions[prop2] = getBackgroundPos(el, prop2);
|
|
3146
|
+
}
|
|
3147
|
+
return setBackgroundPosFn(bgProps, positions, props2);
|
|
3148
|
+
}
|
|
3149
|
+
function backgroundCoverFn(prop, el, stops, props2) {
|
|
3150
|
+
const dimImage = getBackgroundImageDimensions(el);
|
|
3151
|
+
if (!dimImage.width) {
|
|
3152
|
+
return noop;
|
|
3153
|
+
}
|
|
3154
|
+
const dimEl = {
|
|
3155
|
+
width: el.offsetWidth,
|
|
3156
|
+
height: el.offsetHeight
|
|
3157
|
+
};
|
|
3158
|
+
const bgProps = ["bgx", "bgy"].filter((prop2) => prop2 in props2);
|
|
3159
|
+
const positions = {};
|
|
3160
|
+
for (const prop2 of bgProps) {
|
|
3161
|
+
const values = props2[prop2].map(([value]) => value);
|
|
3162
|
+
const min = Math.min(...values);
|
|
3163
|
+
const max = Math.max(...values);
|
|
3164
|
+
const down = values.indexOf(min) < values.indexOf(max);
|
|
3165
|
+
const diff = max - min;
|
|
3166
|
+
positions[prop2] = `${(down ? -diff : 0) - (down ? min : max)}px`;
|
|
3167
|
+
dimEl[prop2 === "bgy" ? "height" : "width"] += diff;
|
|
3168
|
+
}
|
|
3169
|
+
const dim = Dimensions.cover(dimImage, dimEl);
|
|
3170
|
+
for (const prop2 of bgProps) {
|
|
3171
|
+
const attr = prop2 === "bgy" ? "height" : "width";
|
|
3172
|
+
const overflow = dim[attr] - dimEl[attr];
|
|
3173
|
+
positions[prop2] = `max(${getBackgroundPos(el, prop2)},-${overflow}px) + ${positions[prop2]}`;
|
|
3174
|
+
}
|
|
3175
|
+
const fn = setBackgroundPosFn(bgProps, positions, props2);
|
|
3176
|
+
return (css2, percent) => {
|
|
3177
|
+
fn(css2, percent);
|
|
3178
|
+
css2.backgroundSize = `${dim.width}px ${dim.height}px`;
|
|
3179
|
+
css2.backgroundRepeat = "no-repeat";
|
|
3180
|
+
};
|
|
3181
|
+
}
|
|
3182
|
+
function getBackgroundPos(el, prop) {
|
|
3183
|
+
return getCssValue(el, `background-position-${prop.slice(-1)}`, "");
|
|
3184
|
+
}
|
|
3185
|
+
function setBackgroundPosFn(bgProps, positions, props2) {
|
|
3186
|
+
return function(css2, percent) {
|
|
3187
|
+
for (const prop of bgProps) {
|
|
3188
|
+
const value = getValue(props2[prop], percent);
|
|
3189
|
+
css2[`background-position-${prop.slice(-1)}`] = `calc(${positions[prop]} + ${value}px)`;
|
|
3190
|
+
}
|
|
3191
|
+
};
|
|
3192
|
+
}
|
|
3193
|
+
const loading = {};
|
|
3194
|
+
const dimensions = {};
|
|
3195
|
+
function getBackgroundImageDimensions(el) {
|
|
3196
|
+
const src = css(el, "backgroundImage").replace(/^none|url\(["']?(.+?)["']?\)$/, "$1");
|
|
3197
|
+
if (dimensions[src]) {
|
|
3198
|
+
return dimensions[src];
|
|
3199
|
+
}
|
|
3200
|
+
const image = new Image();
|
|
3201
|
+
if (src) {
|
|
3202
|
+
image.src = src;
|
|
3203
|
+
if (!image.naturalWidth && !loading[src]) {
|
|
3204
|
+
once(image, "error load", () => {
|
|
3205
|
+
dimensions[src] = toDimensions(image);
|
|
3206
|
+
trigger(el, createEvent("load", false));
|
|
3207
|
+
});
|
|
3208
|
+
loading[src] = true;
|
|
3209
|
+
return toDimensions(image);
|
|
3210
|
+
}
|
|
3211
|
+
}
|
|
3212
|
+
return dimensions[src] = toDimensions(image);
|
|
3213
|
+
}
|
|
3214
|
+
function toDimensions(image) {
|
|
3215
|
+
return {
|
|
3216
|
+
width: image.naturalWidth,
|
|
3217
|
+
height: image.naturalHeight
|
|
3218
|
+
};
|
|
3219
|
+
}
|
|
3220
|
+
function parseStops(stops, fn = toFloat) {
|
|
3221
|
+
const result = [];
|
|
3222
|
+
const { length } = stops;
|
|
3223
|
+
let nullIndex = 0;
|
|
3224
|
+
for (let i = 0; i < length; i++) {
|
|
3225
|
+
let [value, percent] = isString(stops[i]) ? stops[i].trim().split(/ (?![^(]*\))/) : [stops[i]];
|
|
3226
|
+
value = fn(value);
|
|
3227
|
+
percent = percent ? toFloat(percent) / 100 : null;
|
|
3228
|
+
if (i === 0) {
|
|
3229
|
+
if (percent === null) {
|
|
3230
|
+
percent = 0;
|
|
3231
|
+
} else if (percent) {
|
|
3232
|
+
result.push([value, 0]);
|
|
3233
|
+
}
|
|
3234
|
+
} else if (i === length - 1) {
|
|
3235
|
+
if (percent === null) {
|
|
3236
|
+
percent = 1;
|
|
3237
|
+
} else if (percent !== 1) {
|
|
3238
|
+
result.push([value, percent]);
|
|
3239
|
+
percent = 1;
|
|
3240
|
+
}
|
|
3241
|
+
}
|
|
3242
|
+
result.push([value, percent]);
|
|
3243
|
+
if (percent === null) {
|
|
3244
|
+
nullIndex++;
|
|
3245
|
+
} else if (nullIndex) {
|
|
3246
|
+
const leftPercent = result[i - nullIndex - 1][1];
|
|
3247
|
+
const p = (percent - leftPercent) / (nullIndex + 1);
|
|
3248
|
+
for (let j = nullIndex; j > 0; j--) {
|
|
3249
|
+
result[i - j][1] = leftPercent + p * (nullIndex - j + 1);
|
|
3250
|
+
}
|
|
3251
|
+
nullIndex = 0;
|
|
3252
|
+
}
|
|
3253
|
+
}
|
|
3254
|
+
return result;
|
|
3255
|
+
}
|
|
3256
|
+
function getStop(stops, percent) {
|
|
3257
|
+
const index = findIndex(stops.slice(1), ([, targetPercent]) => percent <= targetPercent) + 1;
|
|
3258
|
+
return [
|
|
3259
|
+
stops[index - 1][0],
|
|
3260
|
+
stops[index][0],
|
|
3261
|
+
(percent - stops[index - 1][1]) / (stops[index][1] - stops[index - 1][1])
|
|
3262
|
+
];
|
|
3263
|
+
}
|
|
3264
|
+
function getValue(stops, percent) {
|
|
3265
|
+
const [start, end, p] = getStop(stops, percent);
|
|
3266
|
+
return start + (end - start) * p;
|
|
3267
|
+
}
|
|
3268
|
+
const unitRe = /^-?\d+(?:\.\d+)?(\S+)?/;
|
|
3269
|
+
function getUnit(stops, defaultUnit) {
|
|
3270
|
+
var _a;
|
|
3271
|
+
for (const stop of stops) {
|
|
3272
|
+
const match = (_a = stop.match) == null ? void 0 : _a.call(stop, unitRe);
|
|
3273
|
+
if (match) {
|
|
3274
|
+
return match[1];
|
|
3275
|
+
}
|
|
3276
|
+
}
|
|
3277
|
+
return defaultUnit;
|
|
3278
|
+
}
|
|
3279
|
+
function getCssValue(el, prop, value) {
|
|
3280
|
+
const prev = el.style[prop];
|
|
3281
|
+
const val = css(css(el, prop, value), prop);
|
|
3282
|
+
el.style[prop] = prev;
|
|
3283
|
+
return val;
|
|
3284
|
+
}
|
|
3285
|
+
function fillObject(keys2, value) {
|
|
3286
|
+
return Object.fromEntries(keys2.map((prop) => [prop, value]));
|
|
3287
|
+
}
|
|
3288
|
+
function ease(percent, easing) {
|
|
3289
|
+
return easing >= 0 ? Math.pow(percent, easing + 1) : 1 - Math.pow(1 - percent, 1 - easing);
|
|
3290
|
+
}
|
|
3291
|
+
|
|
3292
|
+
var ScrollDriven = {
|
|
3293
|
+
props: {
|
|
3294
|
+
parallaxTarget: Boolean,
|
|
3295
|
+
parallaxStart: String,
|
|
3296
|
+
parallaxEnd: String,
|
|
3297
|
+
parallaxEasing: Number
|
|
3298
|
+
},
|
|
3299
|
+
data: {
|
|
3300
|
+
parallaxTarget: false,
|
|
3301
|
+
parallaxStart: 0,
|
|
3302
|
+
parallaxEnd: 0,
|
|
3303
|
+
parallaxEasing: 0
|
|
3304
|
+
},
|
|
3305
|
+
observe: [
|
|
3306
|
+
resize({
|
|
3307
|
+
target: ({ $el, parallaxTarget }) => [$el, parallaxTarget],
|
|
3308
|
+
filter: ({ parallax }) => parallax
|
|
3309
|
+
}),
|
|
3310
|
+
scroll$1({ filter: ({ parallax }) => parallax })
|
|
3311
|
+
],
|
|
3312
|
+
computed: {
|
|
3313
|
+
parallaxTargetFallback: ($props, $el) => $el,
|
|
3314
|
+
parallaxTarget({ parallaxTarget }, $el) {
|
|
3315
|
+
return parallaxTarget && query(parallaxTarget, $el) || this.parallaxTargetFallback;
|
|
3316
|
+
}
|
|
3317
|
+
},
|
|
3318
|
+
update: {
|
|
3319
|
+
read() {
|
|
3320
|
+
if (!this.parallax) {
|
|
3321
|
+
return;
|
|
3322
|
+
}
|
|
3323
|
+
const target = this.parallaxTarget;
|
|
3324
|
+
if (!target) {
|
|
3325
|
+
return;
|
|
3326
|
+
}
|
|
3327
|
+
const start = toPx(this.parallaxStart, "height", target, true);
|
|
3328
|
+
const end = toPx(this.parallaxEnd, "height", target, true);
|
|
3329
|
+
const percent = ease(scrolledOver(target, start, end), this.parallaxEasing);
|
|
3330
|
+
return { percent };
|
|
3331
|
+
},
|
|
3332
|
+
events: ["scroll", "resize"]
|
|
3333
|
+
}
|
|
3334
|
+
};
|
|
3335
|
+
|
|
3336
|
+
const loopKey = /* @__PURE__ */ Symbol();
|
|
2912
3337
|
var Video = {
|
|
3338
|
+
mixins: [ScrollDriven],
|
|
2913
3339
|
args: "autoplay",
|
|
2914
3340
|
props: {
|
|
2915
3341
|
automute: Boolean,
|
|
2916
3342
|
autoplay: Boolean,
|
|
2917
3343
|
restart: Boolean,
|
|
2918
|
-
|
|
3344
|
+
inviewMargin: String,
|
|
3345
|
+
inviewQueued: Number,
|
|
3346
|
+
hoverTarget: Boolean,
|
|
3347
|
+
hoverRewind: Number,
|
|
3348
|
+
reducedMotionTime: Number
|
|
2919
3349
|
},
|
|
2920
3350
|
data: {
|
|
2921
3351
|
automute: false,
|
|
2922
3352
|
autoplay: true,
|
|
2923
3353
|
restart: false,
|
|
2924
|
-
|
|
3354
|
+
inviewMargin: "0px",
|
|
3355
|
+
inviewQueued: 0,
|
|
3356
|
+
hoverTarget: false,
|
|
3357
|
+
hoverRewind: 0,
|
|
3358
|
+
reducedMotionTime: 0
|
|
2925
3359
|
},
|
|
2926
3360
|
beforeConnect() {
|
|
2927
3361
|
const isVideo = isTag(this.$el, "video");
|
|
3362
|
+
this.restart = isVideo && this.restart;
|
|
3363
|
+
this.parallax = isVideo && this.autoplay === "parallax";
|
|
3364
|
+
this.manualControl = ["hover", "parallax"].includes(this.autoplay);
|
|
3365
|
+
this.inviewQueued = this.autoplay === "inview" && this.inviewQueued;
|
|
3366
|
+
if (this.inviewQueued) {
|
|
3367
|
+
this.$el[loopKey] = this.$el.loop;
|
|
3368
|
+
this.$el.loop = false;
|
|
3369
|
+
}
|
|
2928
3370
|
if (this.autoplay === "inview" && isVideo && !hasAttr(this.$el, "preload")) {
|
|
2929
3371
|
this.$el.preload = "none";
|
|
2930
3372
|
}
|
|
@@ -2933,7 +3375,10 @@
|
|
|
2933
3375
|
}
|
|
2934
3376
|
if (this.autoplay === "hover") {
|
|
2935
3377
|
if (isVideo) {
|
|
2936
|
-
this
|
|
3378
|
+
this.hoverTarget = query(this.hoverTarget, this.$el) || this.$el;
|
|
3379
|
+
if (!isFocusable(this.hoverTarget)) {
|
|
3380
|
+
this.hoverTarget.tabIndex = 0;
|
|
3381
|
+
}
|
|
2937
3382
|
} else {
|
|
2938
3383
|
this.autoplay = true;
|
|
2939
3384
|
}
|
|
@@ -2942,28 +3387,49 @@
|
|
|
2942
3387
|
mute(this.$el);
|
|
2943
3388
|
}
|
|
2944
3389
|
},
|
|
3390
|
+
disconnected() {
|
|
3391
|
+
if (this.$el[loopKey]) {
|
|
3392
|
+
this.$el.loop = true;
|
|
3393
|
+
}
|
|
3394
|
+
queue.delete(this.$el);
|
|
3395
|
+
},
|
|
2945
3396
|
events: [
|
|
2946
3397
|
{
|
|
2947
3398
|
name: `${pointerEnter} focusin`,
|
|
2948
|
-
el: ({ hoverTarget
|
|
3399
|
+
el: ({ hoverTarget }) => hoverTarget,
|
|
2949
3400
|
filter: ({ autoplay }) => autoplay === "hover",
|
|
2950
3401
|
handler(e) {
|
|
3402
|
+
var _a;
|
|
3403
|
+
(_a = this._reverseAbort) == null ? void 0 : _a.abort();
|
|
2951
3404
|
if (!isTouch(e) || !isPlaying(this.$el)) {
|
|
2952
|
-
play(
|
|
3405
|
+
this.play();
|
|
2953
3406
|
} else {
|
|
2954
|
-
|
|
3407
|
+
this.pause();
|
|
2955
3408
|
}
|
|
2956
3409
|
}
|
|
2957
3410
|
},
|
|
2958
3411
|
{
|
|
2959
3412
|
name: `${pointerLeave} focusout`,
|
|
2960
|
-
el: ({ hoverTarget
|
|
3413
|
+
el: ({ hoverTarget }) => hoverTarget,
|
|
2961
3414
|
filter: ({ autoplay }) => autoplay === "hover",
|
|
2962
3415
|
handler(e) {
|
|
3416
|
+
var _a;
|
|
2963
3417
|
if (!isTouch(e)) {
|
|
2964
|
-
|
|
3418
|
+
(_a = this._reverseAbort) == null ? void 0 : _a.abort();
|
|
3419
|
+
this.pause();
|
|
3420
|
+
this._reverseAbort = playReverse(this.$el, this.hoverRewind);
|
|
2965
3421
|
}
|
|
2966
3422
|
}
|
|
3423
|
+
},
|
|
3424
|
+
{
|
|
3425
|
+
name: "error pause ended",
|
|
3426
|
+
filter: ({ inviewQueued }) => inviewQueued,
|
|
3427
|
+
handler(e) {
|
|
3428
|
+
if (e.type === "error" || e.type === "ended" && !this.$el[loopKey]) {
|
|
3429
|
+
queue.delete(this.$el);
|
|
3430
|
+
}
|
|
3431
|
+
playNextQueued();
|
|
3432
|
+
}
|
|
2967
3433
|
}
|
|
2968
3434
|
],
|
|
2969
3435
|
observe: [
|
|
@@ -2975,33 +3441,118 @@
|
|
|
2975
3441
|
}
|
|
2976
3442
|
}),
|
|
2977
3443
|
intersection({
|
|
2978
|
-
filter: ({ $el,
|
|
2979
|
-
handler([{ isIntersecting
|
|
3444
|
+
filter: ({ $el, manualControl }) => !manualControl && $el.preload !== "none",
|
|
3445
|
+
handler([{ isIntersecting }]) {
|
|
2980
3446
|
if (!document.fullscreenElement) {
|
|
2981
3447
|
if (isIntersecting) {
|
|
2982
3448
|
if (this.autoplay) {
|
|
2983
|
-
|
|
3449
|
+
this._autoplay();
|
|
2984
3450
|
}
|
|
2985
3451
|
} else {
|
|
2986
|
-
|
|
3452
|
+
this.pause();
|
|
2987
3453
|
}
|
|
2988
3454
|
}
|
|
2989
3455
|
},
|
|
2990
3456
|
args: { intersecting: false },
|
|
2991
|
-
options: ({ $el, autoplay }) => ({
|
|
2992
|
-
root: autoplay === "inview" ? null : parent($el).closest(":not(a)")
|
|
3457
|
+
options: ({ $el, autoplay, inviewMargin }) => ({
|
|
3458
|
+
root: autoplay === "inview" ? null : parent($el).closest(":not(a)"),
|
|
3459
|
+
rootMargin: autoplay === "inview" ? inviewMargin : "0px"
|
|
2993
3460
|
})
|
|
2994
3461
|
})
|
|
2995
|
-
]
|
|
3462
|
+
],
|
|
3463
|
+
update: {
|
|
3464
|
+
write({ percent }) {
|
|
3465
|
+
if (!this.parallax) {
|
|
3466
|
+
return;
|
|
3467
|
+
}
|
|
3468
|
+
const { duration, seeking } = this.$el;
|
|
3469
|
+
if (!isNaN(duration) && !seeking) {
|
|
3470
|
+
this.$el.currentTime = percent * duration;
|
|
3471
|
+
}
|
|
3472
|
+
},
|
|
3473
|
+
events: ["scroll", "resize"]
|
|
3474
|
+
},
|
|
3475
|
+
methods: {
|
|
3476
|
+
_autoplay() {
|
|
3477
|
+
if (window.matchMedia("(prefers-reduced-motion: reduce)").matches) {
|
|
3478
|
+
this.pause();
|
|
3479
|
+
if (isTag(this.$el, "video")) {
|
|
3480
|
+
this.$el.currentTime = this.reducedMotionTime;
|
|
3481
|
+
}
|
|
3482
|
+
} else {
|
|
3483
|
+
this.play();
|
|
3484
|
+
}
|
|
3485
|
+
},
|
|
3486
|
+
play() {
|
|
3487
|
+
if (this.inviewQueued) {
|
|
3488
|
+
queue.set(this.$el, this.inviewQueued);
|
|
3489
|
+
playNextQueued();
|
|
3490
|
+
} else {
|
|
3491
|
+
play(this.$el);
|
|
3492
|
+
}
|
|
3493
|
+
},
|
|
3494
|
+
pause() {
|
|
3495
|
+
pause(this.$el);
|
|
3496
|
+
queue.delete(this.$el);
|
|
3497
|
+
if (this.restart) {
|
|
3498
|
+
this.$el.currentTime = 0;
|
|
3499
|
+
}
|
|
3500
|
+
}
|
|
3501
|
+
}
|
|
2996
3502
|
};
|
|
2997
3503
|
function isPlaying(videoEl) {
|
|
2998
3504
|
return !videoEl.paused && !videoEl.ended;
|
|
2999
3505
|
}
|
|
3000
|
-
|
|
3001
|
-
|
|
3002
|
-
|
|
3003
|
-
|
|
3506
|
+
const queue = /* @__PURE__ */ new Map();
|
|
3507
|
+
const played = /* @__PURE__ */ new WeakMap();
|
|
3508
|
+
let frame;
|
|
3509
|
+
async function playNextQueued() {
|
|
3510
|
+
cancelAnimationFrame(frame);
|
|
3511
|
+
await new Promise((resolve) => frame = requestAnimationFrame(resolve));
|
|
3512
|
+
const getPlayed = (el) => {
|
|
3513
|
+
var _a;
|
|
3514
|
+
return (_a = played.get(el)) != null ? _a : 0;
|
|
3515
|
+
};
|
|
3516
|
+
const videos = shuffle(queue.keys()).sort((a, b) => getPlayed(a) - getPlayed(b));
|
|
3517
|
+
for (const el of videos) {
|
|
3518
|
+
const maxQueued = queue.get(el);
|
|
3519
|
+
if (isPlaying(el) || videos.filter(isPlaying).length / queue.size >= maxQueued) {
|
|
3520
|
+
continue;
|
|
3521
|
+
}
|
|
3522
|
+
played.set(el, getPlayed(el) + 1);
|
|
3523
|
+
play(el);
|
|
3524
|
+
}
|
|
3525
|
+
}
|
|
3526
|
+
function shuffle(array) {
|
|
3527
|
+
array = [...array];
|
|
3528
|
+
for (let i = array.length - 1; i > 0; i--) {
|
|
3529
|
+
let j = Math.floor(Math.random() * (i + 1));
|
|
3530
|
+
[array[i], array[j]] = [array[j], array[i]];
|
|
3531
|
+
}
|
|
3532
|
+
return array;
|
|
3533
|
+
}
|
|
3534
|
+
function playReverse(el, playbackRate) {
|
|
3535
|
+
const start = el.currentTime;
|
|
3536
|
+
if (isNaN(start) || !playbackRate) {
|
|
3537
|
+
return;
|
|
3004
3538
|
}
|
|
3539
|
+
playbackRate *= Math.max(1, start / 10 + 0.5);
|
|
3540
|
+
const controller = new AbortController();
|
|
3541
|
+
const time = Date.now();
|
|
3542
|
+
(function next() {
|
|
3543
|
+
requestAnimationFrame(() => {
|
|
3544
|
+
if (controller.signal.aborted) {
|
|
3545
|
+
return;
|
|
3546
|
+
}
|
|
3547
|
+
if (!el.seeking) {
|
|
3548
|
+
el.currentTime = Math.max(0, start - (Date.now() - time) * playbackRate / 1e3);
|
|
3549
|
+
}
|
|
3550
|
+
if (el.currentTime > 0) {
|
|
3551
|
+
next();
|
|
3552
|
+
}
|
|
3553
|
+
});
|
|
3554
|
+
})();
|
|
3555
|
+
return controller;
|
|
3005
3556
|
}
|
|
3006
3557
|
|
|
3007
3558
|
var cover = {
|
|
@@ -3077,7 +3628,7 @@
|
|
|
3077
3628
|
inset: false
|
|
3078
3629
|
},
|
|
3079
3630
|
connected() {
|
|
3080
|
-
this.pos = this.$props.pos.split("-")
|
|
3631
|
+
this.pos = [...this.$props.pos.split("-"), "center"].slice(0, 2);
|
|
3081
3632
|
[this.dir, this.align] = this.pos;
|
|
3082
3633
|
this.axis = includes(["top", "bottom"], this.dir) ? "y" : "x";
|
|
3083
3634
|
},
|
|
@@ -3097,7 +3648,7 @@
|
|
|
3097
3648
|
placement.reverse();
|
|
3098
3649
|
}
|
|
3099
3650
|
const restoreScrollPosition = storeScrollPosition(element);
|
|
3100
|
-
const elDim = dimensions(element);
|
|
3651
|
+
const elDim = dimensions$1(element);
|
|
3101
3652
|
css(element, { top: -elDim.height, left: -elDim.width });
|
|
3102
3653
|
positionAt(element, target, {
|
|
3103
3654
|
attach,
|
|
@@ -3462,6 +4013,7 @@
|
|
|
3462
4013
|
css(this.$el, this._style);
|
|
3463
4014
|
this.$el.hidden = true;
|
|
3464
4015
|
const viewports = this.target.map((target) => getViewport$1(this.$el, target));
|
|
4016
|
+
const boundaryOffsets = this.boundary.map((el) => offset(el));
|
|
3465
4017
|
const viewportOffset = this.getViewportOffset(this.$el);
|
|
3466
4018
|
const dirs = [
|
|
3467
4019
|
[0, ["x", "width", "left", "right"]],
|
|
@@ -3471,7 +4023,7 @@
|
|
|
3471
4023
|
if (this.axis !== axis && includes([axis, true], this.stretch)) {
|
|
3472
4024
|
css(this.$el, {
|
|
3473
4025
|
[prop]: Math.min(
|
|
3474
|
-
|
|
4026
|
+
boundaryOffsets[i][prop],
|
|
3475
4027
|
viewports[i][prop] - 2 * viewportOffset
|
|
3476
4028
|
),
|
|
3477
4029
|
[`overflow-${axis}`]: "auto"
|
|
@@ -3493,10 +4045,10 @@
|
|
|
3493
4045
|
const elOffset = offset(this.$el);
|
|
3494
4046
|
css(this.$el, {
|
|
3495
4047
|
[prop]: (targetOffset[start] > elOffset[start] ? targetOffset[this.inset ? end : start] - Math.max(
|
|
3496
|
-
|
|
4048
|
+
boundaryOffsets[i][start],
|
|
3497
4049
|
viewports[i][start] + viewportOffset
|
|
3498
4050
|
) : Math.min(
|
|
3499
|
-
|
|
4051
|
+
boundaryOffsets[i][end],
|
|
3500
4052
|
viewports[i][end] - viewportOffset
|
|
3501
4053
|
) - targetOffset[this.inset ? start : end]) - positionOffset,
|
|
3502
4054
|
[`overflow-${axis}`]: "auto"
|
|
@@ -3525,7 +4077,7 @@
|
|
|
3525
4077
|
observeViewportResize(update),
|
|
3526
4078
|
observeResize(overflowParents(drop.$el).concat(drop.target), update)
|
|
3527
4079
|
];
|
|
3528
|
-
return () => off.
|
|
4080
|
+
return () => off.forEach((observer) => observer.disconnect());
|
|
3529
4081
|
}
|
|
3530
4082
|
function listenForScroll(drop, fn = () => drop.$emit()) {
|
|
3531
4083
|
return on([document, ...overflowParents(drop.$el)], "scroll", fn, {
|
|
@@ -3760,7 +4312,9 @@
|
|
|
3760
4312
|
const drop = this.getDropdown(target);
|
|
3761
4313
|
const adjustHeight = () => {
|
|
3762
4314
|
const maxBottom = Math.max(
|
|
3763
|
-
...parents(target, `.${this.clsDrop}`)
|
|
4315
|
+
...[...parents(target, `.${this.clsDrop}`), target].map(
|
|
4316
|
+
(el) => offset(el).bottom
|
|
4317
|
+
)
|
|
3764
4318
|
);
|
|
3765
4319
|
offset(this.dropbar, {
|
|
3766
4320
|
left: offset(this.dropbar).left,
|
|
@@ -3940,10 +4494,12 @@
|
|
|
3940
4494
|
var Margin = {
|
|
3941
4495
|
props: {
|
|
3942
4496
|
margin: String,
|
|
4497
|
+
firstRow: Boolean,
|
|
3943
4498
|
firstColumn: Boolean
|
|
3944
4499
|
},
|
|
3945
4500
|
data: {
|
|
3946
4501
|
margin: "uk-margin-small-top",
|
|
4502
|
+
firstRow: false,
|
|
3947
4503
|
firstColumn: "uk-first-column"
|
|
3948
4504
|
},
|
|
3949
4505
|
observe: [
|
|
@@ -3983,6 +4539,7 @@
|
|
|
3983
4539
|
for (const row of rows) {
|
|
3984
4540
|
for (const el of row) {
|
|
3985
4541
|
toggleClass(el, this.margin, rows[0] !== row);
|
|
4542
|
+
toggleClass(el, this.firstRow, rows[0] === row);
|
|
3986
4543
|
toggleClass(el, this.firstColumn, row[isRtl ? row.length - 1 : 0] === el);
|
|
3987
4544
|
}
|
|
3988
4545
|
}
|
|
@@ -4055,7 +4612,8 @@
|
|
|
4055
4612
|
parallaxJustify: Boolean
|
|
4056
4613
|
},
|
|
4057
4614
|
data: {
|
|
4058
|
-
margin: "
|
|
4615
|
+
margin: "",
|
|
4616
|
+
firstRow: "uk-first-row",
|
|
4059
4617
|
clsStack: "uk-grid-stack",
|
|
4060
4618
|
masonry: false,
|
|
4061
4619
|
parallax: 0,
|
|
@@ -4077,14 +4635,14 @@
|
|
|
4077
4635
|
{
|
|
4078
4636
|
read(data) {
|
|
4079
4637
|
const { rows } = data;
|
|
4080
|
-
let { masonry, parallax, parallaxJustify
|
|
4638
|
+
let { masonry, parallax, parallaxJustify } = this;
|
|
4081
4639
|
parallax = Math.max(0, toPx(parallax));
|
|
4082
4640
|
if (!(masonry || parallax || parallaxJustify) || positionedAbsolute(rows) || rows[0].some(
|
|
4083
4641
|
(el, i) => rows.some((row) => row[i] && row[i].offsetWidth !== el.offsetWidth)
|
|
4084
4642
|
)) {
|
|
4085
4643
|
return data.translates = data.scrollColumns = false;
|
|
4086
4644
|
}
|
|
4087
|
-
let gutter =
|
|
4645
|
+
let gutter = toFloat(css(this.$el, "row-gap"));
|
|
4088
4646
|
let columns;
|
|
4089
4647
|
let translates;
|
|
4090
4648
|
if (masonry) {
|
|
@@ -4177,10 +4735,6 @@
|
|
|
4177
4735
|
}
|
|
4178
4736
|
return [columns, translates];
|
|
4179
4737
|
}
|
|
4180
|
-
function getGutter(rows, cls) {
|
|
4181
|
-
const node = rows.flat().find((el) => hasClass(el, cls));
|
|
4182
|
-
return toFloat(node ? css(node, "marginTop") : css(rows[0][0], "paddingLeft"));
|
|
4183
|
-
}
|
|
4184
4738
|
function transpose(rows) {
|
|
4185
4739
|
const columns = [];
|
|
4186
4740
|
for (const row of rows) {
|
|
@@ -4211,7 +4765,7 @@
|
|
|
4211
4765
|
elements: ({ target }, $el) => $$(target, $el)
|
|
4212
4766
|
},
|
|
4213
4767
|
observe: resize({
|
|
4214
|
-
target: ({ $el, elements }) => elements.
|
|
4768
|
+
target: ({ $el, elements }) => [$el, ...elements.flatMap((el) => [el, ...el.children])]
|
|
4215
4769
|
}),
|
|
4216
4770
|
events: {
|
|
4217
4771
|
// Hidden elements may change height when fonts load
|
|
@@ -4252,7 +4806,7 @@
|
|
|
4252
4806
|
css(element, "display", "block", "important");
|
|
4253
4807
|
}
|
|
4254
4808
|
css(element, "minHeight", "");
|
|
4255
|
-
const height = dimensions(element).height - boxModelAdjust(element, "height", "content-box");
|
|
4809
|
+
const height = dimensions$1(element).height - boxModelAdjust(element, "height", "content-box");
|
|
4256
4810
|
css(element, style);
|
|
4257
4811
|
return height;
|
|
4258
4812
|
}
|
|
@@ -4283,45 +4837,6 @@
|
|
|
4283
4837
|
}
|
|
4284
4838
|
};
|
|
4285
4839
|
|
|
4286
|
-
var Media = {
|
|
4287
|
-
props: {
|
|
4288
|
-
media: Boolean
|
|
4289
|
-
},
|
|
4290
|
-
data: {
|
|
4291
|
-
media: false
|
|
4292
|
-
},
|
|
4293
|
-
connected() {
|
|
4294
|
-
const media = toMedia(this.media, this.$el);
|
|
4295
|
-
this.matchMedia = true;
|
|
4296
|
-
if (media) {
|
|
4297
|
-
this.mediaObj = window.matchMedia(media);
|
|
4298
|
-
const handler = () => {
|
|
4299
|
-
this.matchMedia = this.mediaObj.matches;
|
|
4300
|
-
trigger(this.$el, createEvent("mediachange", false, true, [this.mediaObj]));
|
|
4301
|
-
};
|
|
4302
|
-
this.offMediaObj = on(this.mediaObj, "change", () => {
|
|
4303
|
-
handler();
|
|
4304
|
-
this.$emit("resize");
|
|
4305
|
-
});
|
|
4306
|
-
handler();
|
|
4307
|
-
}
|
|
4308
|
-
},
|
|
4309
|
-
disconnected() {
|
|
4310
|
-
var _a;
|
|
4311
|
-
(_a = this.offMediaObj) == null ? void 0 : _a.call(this);
|
|
4312
|
-
}
|
|
4313
|
-
};
|
|
4314
|
-
function toMedia(value, element) {
|
|
4315
|
-
if (isString(value)) {
|
|
4316
|
-
if (startsWith(value, "@")) {
|
|
4317
|
-
value = toFloat(css(element, `--uk-breakpoint-${value.slice(1)}`));
|
|
4318
|
-
} else if (isNaN(value)) {
|
|
4319
|
-
return value;
|
|
4320
|
-
}
|
|
4321
|
-
}
|
|
4322
|
-
return value && isNumeric(value) ? `(min-width: ${value}px)` : "";
|
|
4323
|
-
}
|
|
4324
|
-
|
|
4325
4840
|
var heightViewport = {
|
|
4326
4841
|
mixins: [Media],
|
|
4327
4842
|
props: {
|
|
@@ -4360,7 +4875,7 @@
|
|
|
4360
4875
|
const isScrollingElement = scrollingElement === scrollElement || body === scrollElement;
|
|
4361
4876
|
let minHeight = `calc(${isScrollingElement ? "100vh" : `${viewportHeight}px`}`;
|
|
4362
4877
|
if (this.expand) {
|
|
4363
|
-
const diff = dimensions(scrollElement).height - dimensions(this.$el).height;
|
|
4878
|
+
const diff = dimensions$1(scrollElement).height - dimensions$1(this.$el).height;
|
|
4364
4879
|
minHeight += ` - ${diff}px`;
|
|
4365
4880
|
} else {
|
|
4366
4881
|
if (this.offsetTop) {
|
|
@@ -4373,13 +4888,13 @@
|
|
|
4373
4888
|
}
|
|
4374
4889
|
}
|
|
4375
4890
|
if (this.offsetBottom === true) {
|
|
4376
|
-
minHeight += ` - ${dimensions(this.$el.nextElementSibling).height}px`;
|
|
4891
|
+
minHeight += ` - ${dimensions$1(this.$el.nextElementSibling).height}px`;
|
|
4377
4892
|
} else if (isNumeric(this.offsetBottom)) {
|
|
4378
4893
|
minHeight += ` - ${this.offsetBottom}vh`;
|
|
4379
4894
|
} else if (this.offsetBottom && endsWith(this.offsetBottom, "px")) {
|
|
4380
4895
|
minHeight += ` - ${toFloat(this.offsetBottom)}px`;
|
|
4381
4896
|
} else if (isString(this.offsetBottom)) {
|
|
4382
|
-
minHeight += ` - ${dimensions(query(this.offsetBottom, this.$el)).height}px`;
|
|
4897
|
+
minHeight += ` - ${dimensions$1(query(this.offsetBottom, this.$el)).height}px`;
|
|
4383
4898
|
}
|
|
4384
4899
|
}
|
|
4385
4900
|
minHeight += `${box ? ` - ${box}px` : ""})`;
|
|
@@ -4931,8 +5446,8 @@
|
|
|
4931
5446
|
}
|
|
4932
5447
|
};
|
|
4933
5448
|
function findTargetColor(target) {
|
|
4934
|
-
const dim = dimensions(target);
|
|
4935
|
-
const viewport = dimensions(window);
|
|
5449
|
+
const dim = dimensions$1(target);
|
|
5450
|
+
const viewport = dimensions$1(window);
|
|
4936
5451
|
if (!intersectRect(dim, viewport)) {
|
|
4937
5452
|
return false;
|
|
4938
5453
|
}
|
|
@@ -5171,12 +5686,13 @@
|
|
|
5171
5686
|
}
|
|
5172
5687
|
}
|
|
5173
5688
|
};
|
|
5689
|
+
const rejectKey = /* @__PURE__ */ Symbol();
|
|
5174
5690
|
function animate(el, show, { transitionElement, _toggle }) {
|
|
5175
5691
|
return new Promise(
|
|
5176
5692
|
(resolve, reject) => once(el, "show hide", () => {
|
|
5177
5693
|
var _a;
|
|
5178
|
-
(_a = el
|
|
5179
|
-
el
|
|
5694
|
+
(_a = el[rejectKey]) == null ? void 0 : _a.call(el);
|
|
5695
|
+
el[rejectKey] = reject;
|
|
5180
5696
|
_toggle(el, show);
|
|
5181
5697
|
const off = once(
|
|
5182
5698
|
transitionElement,
|
|
@@ -5197,7 +5713,7 @@
|
|
|
5197
5713
|
toMs(css(transitionElement, "transitionDuration"))
|
|
5198
5714
|
);
|
|
5199
5715
|
})
|
|
5200
|
-
).then(() => delete el
|
|
5716
|
+
).then(() => delete el[rejectKey]);
|
|
5201
5717
|
}
|
|
5202
5718
|
function toMs(time) {
|
|
5203
5719
|
return time ? endsWith(time, "ms") ? toFloat(time) : toFloat(time) * 1e3 : 0;
|
|
@@ -5207,7 +5723,7 @@
|
|
|
5207
5723
|
if (last(active) !== modal || modal.$el.contains(e.target)) {
|
|
5208
5724
|
return;
|
|
5209
5725
|
}
|
|
5210
|
-
const { left, top, width, height } = dimensions(e.target);
|
|
5726
|
+
const { left, top, width, height } = dimensions$1(e.target);
|
|
5211
5727
|
const topEl = document.elementFromPoint(left + width / 2, top + height / 2);
|
|
5212
5728
|
if (topEl && (e.target.contains(topEl) || topEl.contains(e.target))) {
|
|
5213
5729
|
return;
|
|
@@ -5585,7 +6101,7 @@
|
|
|
5585
6101
|
return {
|
|
5586
6102
|
max: Math.max(
|
|
5587
6103
|
this.minHeight,
|
|
5588
|
-
height(this.container) - (dimensions(this.content).height - height(this.$el))
|
|
6104
|
+
height(this.container) - (dimensions$1(this.content).height - height(this.$el))
|
|
5589
6105
|
)
|
|
5590
6106
|
};
|
|
5591
6107
|
},
|
|
@@ -5628,11 +6144,11 @@
|
|
|
5628
6144
|
],
|
|
5629
6145
|
update: {
|
|
5630
6146
|
read() {
|
|
5631
|
-
|
|
5632
|
-
|
|
5633
|
-
|
|
5634
|
-
|
|
5635
|
-
|
|
6147
|
+
return {
|
|
6148
|
+
overflow: ["Width", "Height"].map(
|
|
6149
|
+
(prop) => this.$el[`scroll${prop}`] - this.$el[`client${prop}`]
|
|
6150
|
+
)
|
|
6151
|
+
};
|
|
5636
6152
|
},
|
|
5637
6153
|
write({ overflow }) {
|
|
5638
6154
|
for (let i = 0; i < 2; i++) {
|
|
@@ -5910,7 +6426,7 @@
|
|
|
5910
6426
|
if (scrollTop >= max) {
|
|
5911
6427
|
active = length - 1;
|
|
5912
6428
|
} else {
|
|
5913
|
-
const offsetBy = this.offset + dimensions(getCoveringElement()).height + viewport.height * 0.1;
|
|
6429
|
+
const offsetBy = this.offset + dimensions$1(getCoveringElement()).height + viewport.height * 0.1;
|
|
5914
6430
|
for (let i = 0; i < targets.length; i++) {
|
|
5915
6431
|
if (offset(targets[i]).top - viewport.top - offsetBy > 0) {
|
|
5916
6432
|
break;
|
|
@@ -6049,7 +6565,7 @@
|
|
|
6049
6565
|
this.hide();
|
|
6050
6566
|
}
|
|
6051
6567
|
if (!this.active) {
|
|
6052
|
-
({ height: height$1, width } = dimensions(this.$el));
|
|
6568
|
+
({ height: height$1, width } = dimensions$1(this.$el));
|
|
6053
6569
|
margin = css(this.$el, "margin");
|
|
6054
6570
|
}
|
|
6055
6571
|
if (hide) {
|
|
@@ -6071,7 +6587,7 @@
|
|
|
6071
6587
|
const overflow = this.overflowFlip ? 0 : Math.max(0, elementBox - viewport2);
|
|
6072
6588
|
const topOffset = offset(referenceElement).top - // offset possible `transform: translateY` animation 'uk-animation-slide-top' while hiding
|
|
6073
6589
|
new DOMMatrix(css(referenceElement, "transform")).m42;
|
|
6074
|
-
const elHeight = dimensions(this.$el).height;
|
|
6590
|
+
const elHeight = dimensions$1(this.$el).height;
|
|
6075
6591
|
const start = (this.start === false ? topOffset : parseProp(this.start, this.$el, topOffset)) - offset$1;
|
|
6076
6592
|
const end = this.end === false ? maxScrollHeight : Math.min(
|
|
6077
6593
|
maxScrollHeight,
|
|
@@ -6263,7 +6779,7 @@
|
|
|
6263
6779
|
if (!value) {
|
|
6264
6780
|
return 0;
|
|
6265
6781
|
}
|
|
6266
|
-
if (isNumeric(value) || isString(value) &&
|
|
6782
|
+
if (isNumeric(value) || isString(value) && /^-?\d/.test(value)) {
|
|
6267
6783
|
return propOffset + toPx(value, "height", el, true);
|
|
6268
6784
|
} else {
|
|
6269
6785
|
const refElement = value === true ? getVisibleParent(el) : query(value, el);
|
|
@@ -6297,15 +6813,6 @@
|
|
|
6297
6813
|
}
|
|
6298
6814
|
}
|
|
6299
6815
|
|
|
6300
|
-
function getMaxPathLength(el) {
|
|
6301
|
-
return isVisible(el) ? Math.ceil(
|
|
6302
|
-
Math.max(0, ...$$("[stroke]", el).map((stroke) => {
|
|
6303
|
-
var _a;
|
|
6304
|
-
return ((_a = stroke.getTotalLength) == null ? void 0 : _a.call(stroke)) || 0;
|
|
6305
|
-
}))
|
|
6306
|
-
) : 0;
|
|
6307
|
-
}
|
|
6308
|
-
|
|
6309
6816
|
var svg = {
|
|
6310
6817
|
mixins: [Svg],
|
|
6311
6818
|
args: "src",
|
|
@@ -6387,10 +6894,9 @@
|
|
|
6387
6894
|
|
|
6388
6895
|
const selDisabled = ".uk-disabled *, .uk-disabled, [disabled]";
|
|
6389
6896
|
var Switcher = {
|
|
6390
|
-
mixins: [
|
|
6897
|
+
mixins: [Connect],
|
|
6391
6898
|
args: "connect",
|
|
6392
6899
|
props: {
|
|
6393
|
-
connect: String,
|
|
6394
6900
|
toggle: String,
|
|
6395
6901
|
itemNav: String,
|
|
6396
6902
|
active: Number,
|
|
@@ -6402,20 +6908,12 @@
|
|
|
6402
6908
|
toggle: "> * > :first-child",
|
|
6403
6909
|
itemNav: false,
|
|
6404
6910
|
active: 0,
|
|
6405
|
-
cls: "uk-active",
|
|
6406
6911
|
attrItem: "uk-switcher-item",
|
|
6407
6912
|
selVertical: ".uk-nav",
|
|
6408
6913
|
followFocus: false,
|
|
6409
6914
|
swiping: true
|
|
6410
6915
|
},
|
|
6411
6916
|
computed: {
|
|
6412
|
-
connects: {
|
|
6413
|
-
get: ({ connect }, $el) => queryAll(connect, $el),
|
|
6414
|
-
observe: ({ connect }) => connect
|
|
6415
|
-
},
|
|
6416
|
-
connectChildren() {
|
|
6417
|
-
return this.connects.map((el) => children(el)).flat();
|
|
6418
|
-
},
|
|
6419
6917
|
toggles: ({ toggle }, $el) => $$(toggle, $el),
|
|
6420
6918
|
children(_, $el) {
|
|
6421
6919
|
return children($el).filter(
|
|
@@ -6446,10 +6944,7 @@
|
|
|
6446
6944
|
connected() {
|
|
6447
6945
|
this.$el.role = "tablist";
|
|
6448
6946
|
},
|
|
6449
|
-
observe:
|
|
6450
|
-
lazyload({ targets: ({ connectChildren }) => connectChildren }),
|
|
6451
|
-
swipe({ target: ({ connects }) => connects, filter: ({ swiping }) => swiping })
|
|
6452
|
-
],
|
|
6947
|
+
observe: swipe({ target: ({ connects }) => connects, filter: ({ swiping }) => swiping }),
|
|
6453
6948
|
events: [
|
|
6454
6949
|
{
|
|
6455
6950
|
name: "click keydown",
|
|
@@ -6499,24 +6994,27 @@
|
|
|
6499
6994
|
}
|
|
6500
6995
|
],
|
|
6501
6996
|
update() {
|
|
6502
|
-
var _a;
|
|
6503
|
-
for (const el of this.connects) {
|
|
6504
|
-
if (isTag(el, "ul")) {
|
|
6505
|
-
el.role = "presentation";
|
|
6506
|
-
}
|
|
6507
|
-
}
|
|
6508
6997
|
attr(children(this.$el), "role", "presentation");
|
|
6509
6998
|
for (const index in this.toggles) {
|
|
6510
6999
|
const toggle = this.toggles[index];
|
|
6511
|
-
const item = (_a = this.connects[0]) == null ? void 0 : _a.children[index];
|
|
6512
|
-
toggle.role = "tab";
|
|
6513
|
-
if (!item) {
|
|
6514
|
-
continue;
|
|
6515
|
-
}
|
|
6516
7000
|
toggle.id = generateId(this, toggle);
|
|
6517
|
-
|
|
6518
|
-
|
|
6519
|
-
|
|
7001
|
+
const controls = [];
|
|
7002
|
+
for (const { children: children2 } of this.connects) {
|
|
7003
|
+
const item = children2[index];
|
|
7004
|
+
if (!item) {
|
|
7005
|
+
continue;
|
|
7006
|
+
}
|
|
7007
|
+
attr(item, {
|
|
7008
|
+
id: generateId(this, item),
|
|
7009
|
+
role: "tabpanel",
|
|
7010
|
+
"aria-labelledby": toggle.id
|
|
7011
|
+
});
|
|
7012
|
+
controls.push(item.id);
|
|
7013
|
+
}
|
|
7014
|
+
attr(toggle, {
|
|
7015
|
+
role: "tab",
|
|
7016
|
+
"aria-controls": controls.join(" ")
|
|
7017
|
+
});
|
|
6520
7018
|
}
|
|
6521
7019
|
attr(this.$el, "aria-orientation", matches(this.$el, this.selVertical) ? "vertical" : null);
|
|
6522
7020
|
},
|
|
@@ -6549,15 +7047,7 @@
|
|
|
6549
7047
|
tabindex: next === i ? null : -1
|
|
6550
7048
|
});
|
|
6551
7049
|
});
|
|
6552
|
-
|
|
6553
|
-
this.connects.forEach(async ({ children: children2 }) => {
|
|
6554
|
-
const actives = toArray(children2).filter(
|
|
6555
|
-
(child, i) => i !== next && hasClass(child, this.cls)
|
|
6556
|
-
);
|
|
6557
|
-
if (await this.toggleElement(actives, false, animate)) {
|
|
6558
|
-
await this.toggleElement(children2[next], true, animate);
|
|
6559
|
-
}
|
|
6560
|
-
});
|
|
7050
|
+
return this.showConnects(next, prev >= 0 && prev !== next);
|
|
6561
7051
|
}
|
|
6562
7052
|
}
|
|
6563
7053
|
};
|