uikit 3.25.17-dev.80dfe87 → 3.25.17-dev.8c70e44
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 +33 -0
- package/build/prefix.js +1 -1
- package/build/publishDev.js +1 -1
- package/build/release.js +2 -2
- package/build/scope.js +1 -1
- package/build/scss.js +1 -1
- package/dist/css/uikit-core-rtl.css +892 -802
- package/dist/css/uikit-core-rtl.min.css +1 -1
- package/dist/css/uikit-core.css +892 -802
- package/dist/css/uikit-core.min.css +1 -1
- package/dist/css/uikit-rtl.css +893 -803
- package/dist/css/uikit-rtl.min.css +1 -1
- package/dist/css/uikit.css +893 -803
- 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 +41 -25
- 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 +754 -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 -374
- package/dist/js/uikit.min.js +1 -1
- package/package.json +2 -2
- 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/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 +57 -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 +65 -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 +81 -81
- 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/utility.less +0 -157
- 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 +62 -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 +81 -81
- 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/utility.scss +0 -128
- package/src/scss/mixins-theme.scss +41 -32
- package/src/scss/mixins.scss +38 -29
- package/src/scss/variables-theme.scss +14 -9
- package/src/scss/variables.scss +14 -9
- 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 +3 -3
- package/tests/sortable.html +15 -15
- 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.17-dev.
|
|
1
|
+
/*! UIkit 3.25.17-dev.8c70e44 | 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
|
}
|
|
@@ -591,19 +590,14 @@
|
|
|
591
590
|
property = propName(property);
|
|
592
591
|
if (isUndefined(value)) {
|
|
593
592
|
return getComputedStyle(element2).getPropertyValue(property);
|
|
594
|
-
} else {
|
|
595
|
-
element2.style.setProperty(
|
|
596
|
-
property,
|
|
597
|
-
isNumeric(value) && !cssNumber[property] && !isCustomProperty(property) ? `${value}px` : value || isNumber(value) ? value : "",
|
|
598
|
-
priority
|
|
599
|
-
);
|
|
600
593
|
}
|
|
594
|
+
element2.style.setProperty(
|
|
595
|
+
property,
|
|
596
|
+
isNumeric(value) && !cssNumber[property] && !isCustomProperty(property) ? `${value}px` : value || isNumber(value) ? value : "",
|
|
597
|
+
priority
|
|
598
|
+
);
|
|
601
599
|
} else if (isArray(property)) {
|
|
602
|
-
|
|
603
|
-
for (const prop of property) {
|
|
604
|
-
props[prop] = css(element2, prop);
|
|
605
|
-
}
|
|
606
|
-
return props;
|
|
600
|
+
return Object.fromEntries(property.map((prop) => [prop, css(element2, prop)]));
|
|
607
601
|
} else if (isObject(property)) {
|
|
608
602
|
for (const prop in property) {
|
|
609
603
|
css(element2, prop, property[prop], value);
|
|
@@ -787,7 +781,9 @@
|
|
|
787
781
|
);
|
|
788
782
|
}
|
|
789
783
|
function unwrap(element) {
|
|
790
|
-
toNodes(element).map(parent)
|
|
784
|
+
for (const elementParent of new Set(toNodes(element).map(parent))) {
|
|
785
|
+
elementParent.replaceWith(...elementParent.childNodes);
|
|
786
|
+
}
|
|
791
787
|
}
|
|
792
788
|
const singleTagRe = /^<(\w+)\s*\/?>(?:<\/\1>)?$/;
|
|
793
789
|
function fragment(html2) {
|
|
@@ -827,7 +823,7 @@
|
|
|
827
823
|
width: ["left", "right"],
|
|
828
824
|
height: ["top", "bottom"]
|
|
829
825
|
};
|
|
830
|
-
function dimensions(element) {
|
|
826
|
+
function dimensions$1(element) {
|
|
831
827
|
const rect = isElement(element) ? toNode(element).getBoundingClientRect() : { height: height(element), width: width(element), top: 0, left: 0 };
|
|
832
828
|
return {
|
|
833
829
|
height: rect.height,
|
|
@@ -842,7 +838,7 @@
|
|
|
842
838
|
if (coordinates) {
|
|
843
839
|
css(element, { left: 0, top: 0 });
|
|
844
840
|
}
|
|
845
|
-
const currentOffset = dimensions(element);
|
|
841
|
+
const currentOffset = dimensions$1(element);
|
|
846
842
|
if (element) {
|
|
847
843
|
const { scrollY, scrollX } = toWindow(element);
|
|
848
844
|
const offsetBy = { height: scrollY, width: scrollX };
|
|
@@ -943,15 +939,15 @@
|
|
|
943
939
|
return sumBy(parseCalc(value), (value2) => {
|
|
944
940
|
const unit = parseUnit(value2);
|
|
945
941
|
return unit ? percent(
|
|
946
|
-
unit === "vh" ? getViewportHeight() : unit === "vw" ? width(toWindow(element)) : offsetDim ? element[`offset${ucfirst(property)}`] : dimensions(element)[property],
|
|
942
|
+
unit === "vh" ? getViewportHeight() : unit === "vw" ? width(toWindow(element)) : offsetDim ? element[`offset${ucfirst(property)}`] : dimensions$1(element)[property],
|
|
947
943
|
value2
|
|
948
944
|
) : value2;
|
|
949
945
|
});
|
|
950
946
|
}
|
|
951
947
|
const calcRe = /-?\d+(?:\.\d+)?(?:v[wh]|%|px)?/g;
|
|
952
948
|
const parseCalc = memoize((calc) => calc.toString().replace(/\s/g, "").match(calcRe) || []);
|
|
953
|
-
const unitRe = /(?:v[hw]|%)$/;
|
|
954
|
-
const parseUnit = memoize((str) => (str.match(unitRe) || [])[0]);
|
|
949
|
+
const unitRe$1 = /(?:v[hw]|%)$/;
|
|
950
|
+
const parseUnit = memoize((str) => (str.match(unitRe$1) || [])[0]);
|
|
955
951
|
function percent(base, value) {
|
|
956
952
|
return base * toFloat(value) / 100;
|
|
957
953
|
}
|
|
@@ -1046,7 +1042,7 @@
|
|
|
1046
1042
|
if (!this.positions || this.positions.length < 2) {
|
|
1047
1043
|
return false;
|
|
1048
1044
|
}
|
|
1049
|
-
const p = dimensions(target);
|
|
1045
|
+
const p = dimensions$1(target);
|
|
1050
1046
|
const { left, right, top, bottom } = p;
|
|
1051
1047
|
const [prevPosition] = this.positions;
|
|
1052
1048
|
const position = last(this.positions);
|
|
@@ -1149,12 +1145,12 @@
|
|
|
1149
1145
|
return isTag(el, "iframe") && (isYoutube(el) || isVimeo(el));
|
|
1150
1146
|
}
|
|
1151
1147
|
function isYoutube(el) {
|
|
1152
|
-
return
|
|
1153
|
-
|
|
1148
|
+
return /\/\/.*?youtube(-nocookie)?\.[a-z]+\/(watch\?v=[^&\s]+|embed)|youtu\.be\/.*/.test(
|
|
1149
|
+
el.src
|
|
1154
1150
|
);
|
|
1155
1151
|
}
|
|
1156
1152
|
function isVimeo(el) {
|
|
1157
|
-
return
|
|
1153
|
+
return /vimeo\.com\/video\/.*/.test(el.src);
|
|
1158
1154
|
}
|
|
1159
1155
|
async function call(el, cmd) {
|
|
1160
1156
|
await enableApi(el);
|
|
@@ -1163,7 +1159,7 @@
|
|
|
1163
1159
|
function post(el, cmd) {
|
|
1164
1160
|
el.contentWindow.postMessage(JSON.stringify({ event: "command", ...cmd }), "*");
|
|
1165
1161
|
}
|
|
1166
|
-
const stateKey =
|
|
1162
|
+
const stateKey = /* @__PURE__ */ Symbol();
|
|
1167
1163
|
let counter = 0;
|
|
1168
1164
|
function enableApi(el) {
|
|
1169
1165
|
if (el[stateKey]) {
|
|
@@ -1194,17 +1190,16 @@
|
|
|
1194
1190
|
if (!isVisible(element)) {
|
|
1195
1191
|
return false;
|
|
1196
1192
|
}
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
);
|
|
1193
|
+
const rects = overflowParents(element).map((parent2) => {
|
|
1194
|
+
const { top, left, bottom, right } = offsetViewport(parent2);
|
|
1195
|
+
return {
|
|
1196
|
+
top: top - offsetTop,
|
|
1197
|
+
left: left - offsetLeft,
|
|
1198
|
+
bottom: bottom + offsetTop,
|
|
1199
|
+
right: right + offsetLeft
|
|
1200
|
+
};
|
|
1201
|
+
});
|
|
1202
|
+
return intersectRect(...rects, offset(element));
|
|
1208
1203
|
}
|
|
1209
1204
|
function scrollIntoView(element, { offset: offsetBy = 0 } = {}) {
|
|
1210
1205
|
const parents2 = isVisible(element) ? scrollParents(element, false, ["hidden"]) : [];
|
|
@@ -1244,7 +1239,7 @@
|
|
|
1244
1239
|
const percent = ease(clamp((Date.now() - start) / duration));
|
|
1245
1240
|
let diff = 0;
|
|
1246
1241
|
if (parents2[0] === element2 && scroll + top < maxScroll) {
|
|
1247
|
-
diff = offset(targetEl).top + (isScrollingElement ? 0 : element2.scrollTop) - targetTop - dimensions(getCoveringElement(targetEl)).height;
|
|
1242
|
+
diff = offset(targetEl).top + (isScrollingElement ? 0 : element2.scrollTop) - targetTop - dimensions$1(getCoveringElement(targetEl)).height;
|
|
1248
1243
|
}
|
|
1249
1244
|
if (css(element2, "scrollBehavior") !== "auto") {
|
|
1250
1245
|
css(element2, "scrollBehavior", "auto");
|
|
@@ -1288,11 +1283,12 @@
|
|
|
1288
1283
|
if (~fixedIndex) {
|
|
1289
1284
|
ancestors = ancestors.slice(fixedIndex);
|
|
1290
1285
|
}
|
|
1291
|
-
return [
|
|
1292
|
-
|
|
1286
|
+
return [
|
|
1287
|
+
scrollEl,
|
|
1288
|
+
...ancestors.filter(
|
|
1293
1289
|
(parent2) => css(parent2, "overflow").split(" ").some((prop) => includes(["auto", "scroll", ...props], prop)) && (!scrollable || parent2.scrollHeight > offsetViewport(parent2).height)
|
|
1294
1290
|
)
|
|
1295
|
-
|
|
1291
|
+
].reverse();
|
|
1296
1292
|
}
|
|
1297
1293
|
function scrollParent(...args) {
|
|
1298
1294
|
return scrollParents(...args)[0];
|
|
@@ -1331,7 +1327,7 @@
|
|
|
1331
1327
|
function getCoveringElement(target) {
|
|
1332
1328
|
const { document } = toWindow(target);
|
|
1333
1329
|
target = target || document.body;
|
|
1334
|
-
const { left, width, top } = dimensions(target);
|
|
1330
|
+
const { left, width, top } = dimensions$1(target);
|
|
1335
1331
|
for (const position of top ? [0, top] : [0]) {
|
|
1336
1332
|
let coverEl;
|
|
1337
1333
|
for (const el of document.elementsFromPoint(left + width / 2, position)) {
|
|
@@ -1340,7 +1336,7 @@
|
|
|
1340
1336
|
parents(target).reverse().find(
|
|
1341
1337
|
(parent2) => !parent2.contains(el) && !hasPosition(parent2, "static")
|
|
1342
1338
|
)
|
|
1343
|
-
) < zIndex(el) || hasPosition(el, "sticky") && (!target || parent(el).contains(target))) && (!coverEl || dimensions(coverEl).height < dimensions(el).height)) {
|
|
1339
|
+
) < zIndex(el) || hasPosition(el, "sticky") && (!target || parent(el).contains(target))) && (!coverEl || dimensions$1(coverEl).height < dimensions$1(el).height)) {
|
|
1344
1340
|
coverEl = el;
|
|
1345
1341
|
}
|
|
1346
1342
|
}
|
|
@@ -1561,7 +1557,7 @@
|
|
|
1561
1557
|
createEvent: createEvent,
|
|
1562
1558
|
css: css,
|
|
1563
1559
|
data: data,
|
|
1564
|
-
dimensions: dimensions,
|
|
1560
|
+
dimensions: dimensions$1,
|
|
1565
1561
|
each: each,
|
|
1566
1562
|
empty: empty,
|
|
1567
1563
|
endsWith: endsWith,
|
|
@@ -1681,7 +1677,7 @@
|
|
|
1681
1677
|
wrapInner: wrapInner
|
|
1682
1678
|
});
|
|
1683
1679
|
|
|
1684
|
-
var VERSION = '3.25.17-dev.
|
|
1680
|
+
var VERSION = '3.25.17-dev.8c70e44';
|
|
1685
1681
|
|
|
1686
1682
|
function initUpdates(instance) {
|
|
1687
1683
|
instance._data = {};
|
|
@@ -1994,11 +1990,14 @@
|
|
|
1994
1990
|
function coerce$1(type, value) {
|
|
1995
1991
|
if (type === Boolean) {
|
|
1996
1992
|
return toBoolean(value);
|
|
1997
|
-
}
|
|
1993
|
+
}
|
|
1994
|
+
if (type === Number) {
|
|
1998
1995
|
return toNumber(value);
|
|
1999
|
-
}
|
|
1996
|
+
}
|
|
1997
|
+
if (type === "list") {
|
|
2000
1998
|
return toList(value);
|
|
2001
|
-
}
|
|
1999
|
+
}
|
|
2000
|
+
if (type === Object && isString(value)) {
|
|
2002
2001
|
return parseOptions(value);
|
|
2003
2002
|
}
|
|
2004
2003
|
return type ? type(value) : value;
|
|
@@ -2048,7 +2047,7 @@
|
|
|
2048
2047
|
}
|
|
2049
2048
|
const getAttributes = memoize((id, props) => {
|
|
2050
2049
|
const attributes = Object.keys(props);
|
|
2051
|
-
const filter = attributes
|
|
2050
|
+
const filter = [...attributes, id].flatMap((key) => [hyphenate(key), `data-${hyphenate(key)}`]);
|
|
2052
2051
|
return { attributes, filter };
|
|
2053
2052
|
});
|
|
2054
2053
|
function initPropsObserver(instance) {
|
|
@@ -2138,14 +2137,10 @@
|
|
|
2138
2137
|
}
|
|
2139
2138
|
function normalizeData({ data = {} }, { args = [], props = {} }) {
|
|
2140
2139
|
if (isArray(data)) {
|
|
2141
|
-
data = data.slice(0, args.length).reduce(
|
|
2142
|
-
|
|
2143
|
-
|
|
2144
|
-
|
|
2145
|
-
data2[args[index]] = value;
|
|
2146
|
-
}
|
|
2147
|
-
return data2;
|
|
2148
|
-
}, {});
|
|
2140
|
+
data = data.slice(0, args.length).reduce(
|
|
2141
|
+
(data2, value, index) => assign(data2, isPlainObject(value) ? value : { [args[index]]: value }),
|
|
2142
|
+
{}
|
|
2143
|
+
);
|
|
2149
2144
|
}
|
|
2150
2145
|
for (const key in data) {
|
|
2151
2146
|
if (isUndefined(data[key])) {
|
|
@@ -2193,11 +2188,10 @@
|
|
|
2193
2188
|
function init(element2) {
|
|
2194
2189
|
const instance = getComponent(element2, name);
|
|
2195
2190
|
if (instance) {
|
|
2196
|
-
if (data) {
|
|
2197
|
-
instance.$destroy();
|
|
2198
|
-
} else {
|
|
2191
|
+
if (!data) {
|
|
2199
2192
|
return instance;
|
|
2200
2193
|
}
|
|
2194
|
+
instance.$destroy();
|
|
2201
2195
|
}
|
|
2202
2196
|
return new Component({ el: element2, data });
|
|
2203
2197
|
}
|
|
@@ -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,57 @@
|
|
|
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
|
+
if (!hasClass(children2[index], this.cls)) {
|
|
2699
|
+
await this.toggleElement(children2[index], true, animate);
|
|
2700
|
+
}
|
|
2701
|
+
}
|
|
2702
|
+
};
|
|
2703
|
+
return Promise.all(this.connects.map(toggle));
|
|
2704
|
+
}
|
|
2705
|
+
}
|
|
2706
|
+
};
|
|
2707
|
+
|
|
2708
|
+
function maybeDefaultPreventClick(e) {
|
|
2709
|
+
if (e.target.closest('a[href="#"],a[href=""]')) {
|
|
2710
|
+
e.preventDefault();
|
|
2711
|
+
}
|
|
2712
|
+
}
|
|
2713
|
+
|
|
2677
2714
|
const keyMap = {
|
|
2678
2715
|
TAB: 9,
|
|
2679
2716
|
ENTER: 13,
|
|
@@ -2688,27 +2725,32 @@
|
|
|
2688
2725
|
};
|
|
2689
2726
|
|
|
2690
2727
|
var Accordion = {
|
|
2691
|
-
mixins: [Class,
|
|
2728
|
+
mixins: [Class, Connect],
|
|
2692
2729
|
props: {
|
|
2693
|
-
animation: Boolean,
|
|
2694
2730
|
targets: String,
|
|
2695
2731
|
active: null,
|
|
2696
2732
|
collapsible: Boolean,
|
|
2697
2733
|
multiple: Boolean,
|
|
2698
2734
|
toggle: String,
|
|
2699
2735
|
content: String,
|
|
2700
|
-
offset: Number
|
|
2736
|
+
offset: Number,
|
|
2737
|
+
switcherConnect: String
|
|
2701
2738
|
},
|
|
2702
2739
|
data: {
|
|
2703
2740
|
targets: "> *",
|
|
2704
2741
|
active: false,
|
|
2705
|
-
animation: true,
|
|
2742
|
+
animation: [true],
|
|
2706
2743
|
collapsible: true,
|
|
2707
2744
|
multiple: false,
|
|
2708
2745
|
clsOpen: "uk-open",
|
|
2746
|
+
cls: "uk-active",
|
|
2709
2747
|
toggle: ".uk-accordion-title",
|
|
2710
2748
|
content: ".uk-accordion-content",
|
|
2711
|
-
offset: 0
|
|
2749
|
+
offset: 0,
|
|
2750
|
+
switcherConnect: ""
|
|
2751
|
+
},
|
|
2752
|
+
beforeConnect() {
|
|
2753
|
+
this.connect = this.$props.connect = this.switcherConnect;
|
|
2712
2754
|
},
|
|
2713
2755
|
computed: {
|
|
2714
2756
|
items: ({ targets }, $el) => $$(targets, $el),
|
|
@@ -2732,6 +2774,12 @@
|
|
|
2732
2774
|
this.toggle(active, false);
|
|
2733
2775
|
}
|
|
2734
2776
|
},
|
|
2777
|
+
connectChildren() {
|
|
2778
|
+
this.showConnects(
|
|
2779
|
+
findIndex(this.items, (el) => hasClass(el, this.clsOpen)),
|
|
2780
|
+
false
|
|
2781
|
+
);
|
|
2782
|
+
},
|
|
2735
2783
|
toggles() {
|
|
2736
2784
|
this.$emit();
|
|
2737
2785
|
},
|
|
@@ -2782,43 +2830,66 @@
|
|
|
2782
2830
|
continue;
|
|
2783
2831
|
}
|
|
2784
2832
|
toggle.id = generateId(this, toggle);
|
|
2785
|
-
content.id = generateId(this, content);
|
|
2786
2833
|
const active = includes(activeItems, this.items[index2]);
|
|
2834
|
+
attr(content, {
|
|
2835
|
+
id: generateId(this, content),
|
|
2836
|
+
role: "region",
|
|
2837
|
+
"aria-labelledby": toggle.id
|
|
2838
|
+
});
|
|
2839
|
+
if (isTag(content, "ul")) {
|
|
2840
|
+
attr(children(content), "role", "presentation");
|
|
2841
|
+
}
|
|
2842
|
+
const controls = [content.id];
|
|
2843
|
+
for (const { children: children2 } of this.connects) {
|
|
2844
|
+
const item = children2[index2];
|
|
2845
|
+
if (!item) {
|
|
2846
|
+
continue;
|
|
2847
|
+
}
|
|
2848
|
+
attr(item, {
|
|
2849
|
+
id: generateId(this, item),
|
|
2850
|
+
role: "tabpanel",
|
|
2851
|
+
"aria-labelledby": toggle.id
|
|
2852
|
+
});
|
|
2853
|
+
controls.push(item.id);
|
|
2854
|
+
}
|
|
2787
2855
|
attr(toggle, {
|
|
2788
2856
|
role: isTag(toggle, "a") ? "button" : null,
|
|
2789
|
-
"aria-controls":
|
|
2857
|
+
"aria-controls": controls.join(" "),
|
|
2790
2858
|
"aria-expanded": active,
|
|
2791
2859
|
"aria-disabled": !this.collapsible && activeItems.length < 2 && active
|
|
2792
2860
|
});
|
|
2793
|
-
attr(content, { role: "region", "aria-labelledby": toggle.id });
|
|
2794
|
-
if (isTag(content, "ul")) {
|
|
2795
|
-
attr(children(content), "role", "presentation");
|
|
2796
|
-
}
|
|
2797
2861
|
}
|
|
2798
2862
|
},
|
|
2799
2863
|
methods: {
|
|
2800
|
-
toggle(item, animate) {
|
|
2801
|
-
|
|
2864
|
+
async toggle(item, animate) {
|
|
2865
|
+
animate = animate !== false;
|
|
2866
|
+
const next = getIndex(item, this.items);
|
|
2867
|
+
item = this.items[next];
|
|
2802
2868
|
let items = [item];
|
|
2803
2869
|
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
|
-
|
|
2870
|
+
const isActive = includes(activeItems, item);
|
|
2871
|
+
if (isActive && !this.collapsible && activeItems.length < 2) {
|
|
2872
|
+
return;
|
|
2873
|
+
}
|
|
2874
|
+
if (!isActive && !this.multiple) {
|
|
2875
|
+
items.push(...activeItems);
|
|
2876
|
+
}
|
|
2877
|
+
const toggle = (el) => this.toggleElement(el, !includes(activeItems, el), (el2, show) => {
|
|
2878
|
+
toggleClass(el2, this.clsOpen, show);
|
|
2879
|
+
if (!animate || !this.hasAnimation) {
|
|
2880
|
+
hide($(this.content, el2), !show);
|
|
2881
|
+
return;
|
|
2882
|
+
}
|
|
2883
|
+
return transition(el2, show, this);
|
|
2884
|
+
});
|
|
2885
|
+
const hideIndex = () => {
|
|
2886
|
+
const index2 = findIndex(children(this.connects[0]), (el) => hasClass(el, this.cls));
|
|
2887
|
+
return index2 === next ? findIndex(this.items, (i) => i !== item && includes(activeItems, i)) : index2;
|
|
2888
|
+
};
|
|
2889
|
+
return Promise.all([
|
|
2890
|
+
...items.map(toggle),
|
|
2891
|
+
this.showConnects(isActive ? hideIndex() : next, animate)
|
|
2892
|
+
]);
|
|
2822
2893
|
}
|
|
2823
2894
|
}
|
|
2824
2895
|
};
|
|
@@ -2836,7 +2907,7 @@
|
|
|
2836
2907
|
const currentHeight = toFloat(css(wrapper, "height"));
|
|
2837
2908
|
await Transition.cancel(wrapper);
|
|
2838
2909
|
hide(content, false);
|
|
2839
|
-
const endHeight = sumBy(["marginTop", "marginBottom"], (prop) => css(content, prop)) + dimensions(content).height;
|
|
2910
|
+
const endHeight = sumBy(["marginTop", "marginBottom"], (prop) => css(content, prop)) + dimensions$1(content).height;
|
|
2840
2911
|
const percent = currentHeight / endHeight;
|
|
2841
2912
|
duration = endHeight ? (velocity * endHeight + duration) * (show ? 1 - percent : percent) : 0;
|
|
2842
2913
|
css(wrapper, "height", currentHeight);
|
|
@@ -2852,7 +2923,7 @@
|
|
|
2852
2923
|
let frame;
|
|
2853
2924
|
(function scroll() {
|
|
2854
2925
|
frame = requestAnimationFrame(() => {
|
|
2855
|
-
const { top } = dimensions(el);
|
|
2926
|
+
const { top } = dimensions$1(el);
|
|
2856
2927
|
if (top < 0) {
|
|
2857
2928
|
scrollElement.scrollTop += top;
|
|
2858
2929
|
}
|
|
@@ -2909,22 +2980,395 @@
|
|
|
2909
2980
|
);
|
|
2910
2981
|
}
|
|
2911
2982
|
|
|
2983
|
+
var Media = {
|
|
2984
|
+
props: {
|
|
2985
|
+
media: Boolean
|
|
2986
|
+
},
|
|
2987
|
+
data: {
|
|
2988
|
+
media: false
|
|
2989
|
+
},
|
|
2990
|
+
connected() {
|
|
2991
|
+
const media = toMedia(this.media, this.$el);
|
|
2992
|
+
this.matchMedia = true;
|
|
2993
|
+
if (media) {
|
|
2994
|
+
this.mediaObj = window.matchMedia(media);
|
|
2995
|
+
const handler = () => {
|
|
2996
|
+
this.matchMedia = this.mediaObj.matches;
|
|
2997
|
+
trigger(this.$el, createEvent("mediachange", false, true, [this.mediaObj]));
|
|
2998
|
+
};
|
|
2999
|
+
this.offMediaObj = on(this.mediaObj, "change", () => {
|
|
3000
|
+
handler();
|
|
3001
|
+
this.$emit("resize");
|
|
3002
|
+
});
|
|
3003
|
+
handler();
|
|
3004
|
+
}
|
|
3005
|
+
},
|
|
3006
|
+
disconnected() {
|
|
3007
|
+
var _a;
|
|
3008
|
+
(_a = this.offMediaObj) == null ? void 0 : _a.call(this);
|
|
3009
|
+
}
|
|
3010
|
+
};
|
|
3011
|
+
function toMedia(value, element) {
|
|
3012
|
+
if (isString(value)) {
|
|
3013
|
+
if (startsWith(value, "@")) {
|
|
3014
|
+
value = toFloat(css(element, `--uk-breakpoint-${value.slice(1)}`));
|
|
3015
|
+
} else if (isNaN(value)) {
|
|
3016
|
+
return value;
|
|
3017
|
+
}
|
|
3018
|
+
}
|
|
3019
|
+
return value && isNumeric(value) ? `(min-width: ${value}px)` : "";
|
|
3020
|
+
}
|
|
3021
|
+
|
|
3022
|
+
function getMaxPathLength(el) {
|
|
3023
|
+
return isVisible(el) ? Math.ceil(
|
|
3024
|
+
Math.max(0, ...$$("[stroke]", el).map((stroke) => {
|
|
3025
|
+
var _a;
|
|
3026
|
+
return ((_a = stroke.getTotalLength) == null ? void 0 : _a.call(stroke)) || 0;
|
|
3027
|
+
}))
|
|
3028
|
+
) : 0;
|
|
3029
|
+
}
|
|
3030
|
+
|
|
3031
|
+
const props = {
|
|
3032
|
+
x: transformFn,
|
|
3033
|
+
y: transformFn,
|
|
3034
|
+
rotate: transformFn,
|
|
3035
|
+
scale: transformFn,
|
|
3036
|
+
color: colorFn,
|
|
3037
|
+
backgroundColor: colorFn,
|
|
3038
|
+
borderColor: colorFn,
|
|
3039
|
+
blur: filterFn,
|
|
3040
|
+
hue: filterFn,
|
|
3041
|
+
fopacity: filterFn,
|
|
3042
|
+
grayscale: filterFn,
|
|
3043
|
+
invert: filterFn,
|
|
3044
|
+
saturate: filterFn,
|
|
3045
|
+
sepia: filterFn,
|
|
3046
|
+
opacity: cssPropFn,
|
|
3047
|
+
stroke: strokeFn,
|
|
3048
|
+
bgx: backgroundFn,
|
|
3049
|
+
bgy: backgroundFn
|
|
3050
|
+
};
|
|
3051
|
+
const { keys } = Object;
|
|
3052
|
+
({
|
|
3053
|
+
props: fillObject(keys(props), "list"),
|
|
3054
|
+
data: fillObject(keys(props), void 0)});
|
|
3055
|
+
function transformFn(prop, el, stops) {
|
|
3056
|
+
let unit = getUnit(stops) || { x: "px", y: "px", rotate: "deg" }[prop] || "";
|
|
3057
|
+
let transformFn2;
|
|
3058
|
+
if (prop === "x" || prop === "y") {
|
|
3059
|
+
prop = `translate${ucfirst(prop)}`;
|
|
3060
|
+
transformFn2 = (stop) => toFloat(toFloat(stop).toFixed(unit === "px" ? 0 : 6));
|
|
3061
|
+
} else if (prop === "scale") {
|
|
3062
|
+
unit = "";
|
|
3063
|
+
transformFn2 = (stop) => {
|
|
3064
|
+
var _a;
|
|
3065
|
+
return getUnit([stop]) ? toPx(stop, "width", el, true) / el[`offset${((_a = stop.endsWith) == null ? void 0 : _a.call(stop, "vh")) ? "Height" : "Width"}`] : toFloat(stop);
|
|
3066
|
+
};
|
|
3067
|
+
}
|
|
3068
|
+
if (stops.length === 1) {
|
|
3069
|
+
stops.unshift(prop === "scale" ? 1 : 0);
|
|
3070
|
+
}
|
|
3071
|
+
stops = parseStops(stops, transformFn2);
|
|
3072
|
+
return (css2, percent) => {
|
|
3073
|
+
css2.transform = `${css2.transform || ""} ${prop}(${getValue(stops, percent)}${unit})`;
|
|
3074
|
+
};
|
|
3075
|
+
}
|
|
3076
|
+
function colorFn(prop, el, stops) {
|
|
3077
|
+
if (stops.length === 1) {
|
|
3078
|
+
stops.unshift(getCssValue(el, prop, ""));
|
|
3079
|
+
}
|
|
3080
|
+
stops = parseStops(stops, (stop) => parseColor(el, stop));
|
|
3081
|
+
return (css2, percent) => {
|
|
3082
|
+
const [start, end, p] = getStop(stops, percent);
|
|
3083
|
+
const value = start.map((value2, i) => {
|
|
3084
|
+
value2 += p * (end[i] - value2);
|
|
3085
|
+
return i === 3 ? toFloat(value2) : parseInt(value2, 10);
|
|
3086
|
+
}).join(",");
|
|
3087
|
+
css2[prop] = `rgba(${value})`;
|
|
3088
|
+
};
|
|
3089
|
+
}
|
|
3090
|
+
function parseColor(el, color) {
|
|
3091
|
+
return getCssValue(el, "color", color).split(/[(),]/g).slice(1, -1).concat(1).slice(0, 4).map(toFloat);
|
|
3092
|
+
}
|
|
3093
|
+
function filterFn(prop, el, stops) {
|
|
3094
|
+
if (stops.length === 1) {
|
|
3095
|
+
stops.unshift(0);
|
|
3096
|
+
}
|
|
3097
|
+
const unit = getUnit(stops) || { blur: "px", hue: "deg" }[prop] || "%";
|
|
3098
|
+
prop = { fopacity: "opacity", hue: "hue-rotate" }[prop] || prop;
|
|
3099
|
+
stops = parseStops(stops);
|
|
3100
|
+
return (css2, percent) => {
|
|
3101
|
+
const value = getValue(stops, percent);
|
|
3102
|
+
css2.filter = `${css2.filter || ""} ${prop}(${value + unit})`;
|
|
3103
|
+
};
|
|
3104
|
+
}
|
|
3105
|
+
function cssPropFn(prop, el, stops) {
|
|
3106
|
+
if (stops.length === 1) {
|
|
3107
|
+
stops.unshift(getCssValue(el, prop, ""));
|
|
3108
|
+
}
|
|
3109
|
+
stops = parseStops(stops);
|
|
3110
|
+
return (css2, percent) => {
|
|
3111
|
+
css2[prop] = getValue(stops, percent);
|
|
3112
|
+
};
|
|
3113
|
+
}
|
|
3114
|
+
function strokeFn(prop, el, stops) {
|
|
3115
|
+
if (stops.length === 1) {
|
|
3116
|
+
stops.unshift(0);
|
|
3117
|
+
}
|
|
3118
|
+
const unit = getUnit(stops);
|
|
3119
|
+
const length = getMaxPathLength(el);
|
|
3120
|
+
stops = parseStops(stops.reverse(), (stop) => {
|
|
3121
|
+
stop = toFloat(stop);
|
|
3122
|
+
return unit === "%" ? stop * length / 100 : stop;
|
|
3123
|
+
});
|
|
3124
|
+
if (!stops.some(([value]) => value)) {
|
|
3125
|
+
return noop;
|
|
3126
|
+
}
|
|
3127
|
+
css(el, "strokeDasharray", length);
|
|
3128
|
+
return (css2, percent) => {
|
|
3129
|
+
css2.strokeDashoffset = getValue(stops, percent);
|
|
3130
|
+
};
|
|
3131
|
+
}
|
|
3132
|
+
function backgroundFn(prop, el, stops, props2) {
|
|
3133
|
+
if (stops.length === 1) {
|
|
3134
|
+
stops.unshift(0);
|
|
3135
|
+
}
|
|
3136
|
+
const attr = prop === "bgy" ? "height" : "width";
|
|
3137
|
+
props2[prop] = parseStops(stops, (stop) => toPx(stop, attr, el));
|
|
3138
|
+
const bgProps = ["bgx", "bgy"].filter((prop2) => prop2 in props2);
|
|
3139
|
+
if (bgProps.length === 2 && prop === "bgx") {
|
|
3140
|
+
return noop;
|
|
3141
|
+
}
|
|
3142
|
+
if (getCssValue(el, "backgroundSize", "") === "cover") {
|
|
3143
|
+
return backgroundCoverFn(prop, el, stops, props2);
|
|
3144
|
+
}
|
|
3145
|
+
const positions = {};
|
|
3146
|
+
for (const prop2 of bgProps) {
|
|
3147
|
+
positions[prop2] = getBackgroundPos(el, prop2);
|
|
3148
|
+
}
|
|
3149
|
+
return setBackgroundPosFn(bgProps, positions, props2);
|
|
3150
|
+
}
|
|
3151
|
+
function backgroundCoverFn(prop, el, stops, props2) {
|
|
3152
|
+
const dimImage = getBackgroundImageDimensions(el);
|
|
3153
|
+
if (!dimImage.width) {
|
|
3154
|
+
return noop;
|
|
3155
|
+
}
|
|
3156
|
+
const dimEl = {
|
|
3157
|
+
width: el.offsetWidth,
|
|
3158
|
+
height: el.offsetHeight
|
|
3159
|
+
};
|
|
3160
|
+
const bgProps = ["bgx", "bgy"].filter((prop2) => prop2 in props2);
|
|
3161
|
+
const positions = {};
|
|
3162
|
+
for (const prop2 of bgProps) {
|
|
3163
|
+
const values = props2[prop2].map(([value]) => value);
|
|
3164
|
+
const min = Math.min(...values);
|
|
3165
|
+
const max = Math.max(...values);
|
|
3166
|
+
const down = values.indexOf(min) < values.indexOf(max);
|
|
3167
|
+
const diff = max - min;
|
|
3168
|
+
positions[prop2] = `${(down ? -diff : 0) - (down ? min : max)}px`;
|
|
3169
|
+
dimEl[prop2 === "bgy" ? "height" : "width"] += diff;
|
|
3170
|
+
}
|
|
3171
|
+
const dim = Dimensions.cover(dimImage, dimEl);
|
|
3172
|
+
for (const prop2 of bgProps) {
|
|
3173
|
+
const attr = prop2 === "bgy" ? "height" : "width";
|
|
3174
|
+
const overflow = dim[attr] - dimEl[attr];
|
|
3175
|
+
positions[prop2] = `max(${getBackgroundPos(el, prop2)},-${overflow}px) + ${positions[prop2]}`;
|
|
3176
|
+
}
|
|
3177
|
+
const fn = setBackgroundPosFn(bgProps, positions, props2);
|
|
3178
|
+
return (css2, percent) => {
|
|
3179
|
+
fn(css2, percent);
|
|
3180
|
+
css2.backgroundSize = `${dim.width}px ${dim.height}px`;
|
|
3181
|
+
css2.backgroundRepeat = "no-repeat";
|
|
3182
|
+
};
|
|
3183
|
+
}
|
|
3184
|
+
function getBackgroundPos(el, prop) {
|
|
3185
|
+
return getCssValue(el, `background-position-${prop.slice(-1)}`, "");
|
|
3186
|
+
}
|
|
3187
|
+
function setBackgroundPosFn(bgProps, positions, props2) {
|
|
3188
|
+
return function(css2, percent) {
|
|
3189
|
+
for (const prop of bgProps) {
|
|
3190
|
+
const value = getValue(props2[prop], percent);
|
|
3191
|
+
css2[`background-position-${prop.slice(-1)}`] = `calc(${positions[prop]} + ${value}px)`;
|
|
3192
|
+
}
|
|
3193
|
+
};
|
|
3194
|
+
}
|
|
3195
|
+
const loading = {};
|
|
3196
|
+
const dimensions = {};
|
|
3197
|
+
function getBackgroundImageDimensions(el) {
|
|
3198
|
+
const src = css(el, "backgroundImage").replace(/^none|url\(["']?(.+?)["']?\)$/, "$1");
|
|
3199
|
+
if (dimensions[src]) {
|
|
3200
|
+
return dimensions[src];
|
|
3201
|
+
}
|
|
3202
|
+
const image = new Image();
|
|
3203
|
+
if (src) {
|
|
3204
|
+
image.src = src;
|
|
3205
|
+
if (!image.naturalWidth && !loading[src]) {
|
|
3206
|
+
once(image, "error load", () => {
|
|
3207
|
+
dimensions[src] = toDimensions(image);
|
|
3208
|
+
trigger(el, createEvent("load", false));
|
|
3209
|
+
});
|
|
3210
|
+
loading[src] = true;
|
|
3211
|
+
return toDimensions(image);
|
|
3212
|
+
}
|
|
3213
|
+
}
|
|
3214
|
+
return dimensions[src] = toDimensions(image);
|
|
3215
|
+
}
|
|
3216
|
+
function toDimensions(image) {
|
|
3217
|
+
return {
|
|
3218
|
+
width: image.naturalWidth,
|
|
3219
|
+
height: image.naturalHeight
|
|
3220
|
+
};
|
|
3221
|
+
}
|
|
3222
|
+
function parseStops(stops, fn = toFloat) {
|
|
3223
|
+
const result = [];
|
|
3224
|
+
const { length } = stops;
|
|
3225
|
+
let nullIndex = 0;
|
|
3226
|
+
for (let i = 0; i < length; i++) {
|
|
3227
|
+
let [value, percent] = isString(stops[i]) ? stops[i].trim().split(/ (?![^(]*\))/) : [stops[i]];
|
|
3228
|
+
value = fn(value);
|
|
3229
|
+
percent = percent ? toFloat(percent) / 100 : null;
|
|
3230
|
+
if (i === 0) {
|
|
3231
|
+
if (percent === null) {
|
|
3232
|
+
percent = 0;
|
|
3233
|
+
} else if (percent) {
|
|
3234
|
+
result.push([value, 0]);
|
|
3235
|
+
}
|
|
3236
|
+
} else if (i === length - 1) {
|
|
3237
|
+
if (percent === null) {
|
|
3238
|
+
percent = 1;
|
|
3239
|
+
} else if (percent !== 1) {
|
|
3240
|
+
result.push([value, percent]);
|
|
3241
|
+
percent = 1;
|
|
3242
|
+
}
|
|
3243
|
+
}
|
|
3244
|
+
result.push([value, percent]);
|
|
3245
|
+
if (percent === null) {
|
|
3246
|
+
nullIndex++;
|
|
3247
|
+
} else if (nullIndex) {
|
|
3248
|
+
const leftPercent = result[i - nullIndex - 1][1];
|
|
3249
|
+
const p = (percent - leftPercent) / (nullIndex + 1);
|
|
3250
|
+
for (let j = nullIndex; j > 0; j--) {
|
|
3251
|
+
result[i - j][1] = leftPercent + p * (nullIndex - j + 1);
|
|
3252
|
+
}
|
|
3253
|
+
nullIndex = 0;
|
|
3254
|
+
}
|
|
3255
|
+
}
|
|
3256
|
+
return result;
|
|
3257
|
+
}
|
|
3258
|
+
function getStop(stops, percent) {
|
|
3259
|
+
const index = findIndex(stops.slice(1), ([, targetPercent]) => percent <= targetPercent) + 1;
|
|
3260
|
+
return [
|
|
3261
|
+
stops[index - 1][0],
|
|
3262
|
+
stops[index][0],
|
|
3263
|
+
(percent - stops[index - 1][1]) / (stops[index][1] - stops[index - 1][1])
|
|
3264
|
+
];
|
|
3265
|
+
}
|
|
3266
|
+
function getValue(stops, percent) {
|
|
3267
|
+
const [start, end, p] = getStop(stops, percent);
|
|
3268
|
+
return start + (end - start) * p;
|
|
3269
|
+
}
|
|
3270
|
+
const unitRe = /^-?\d+(?:\.\d+)?(\S+)?/;
|
|
3271
|
+
function getUnit(stops, defaultUnit) {
|
|
3272
|
+
var _a;
|
|
3273
|
+
for (const stop of stops) {
|
|
3274
|
+
const match = (_a = stop.match) == null ? void 0 : _a.call(stop, unitRe);
|
|
3275
|
+
if (match) {
|
|
3276
|
+
return match[1];
|
|
3277
|
+
}
|
|
3278
|
+
}
|
|
3279
|
+
return defaultUnit;
|
|
3280
|
+
}
|
|
3281
|
+
function getCssValue(el, prop, value) {
|
|
3282
|
+
const prev = el.style[prop];
|
|
3283
|
+
const val = css(css(el, prop, value), prop);
|
|
3284
|
+
el.style[prop] = prev;
|
|
3285
|
+
return val;
|
|
3286
|
+
}
|
|
3287
|
+
function fillObject(keys2, value) {
|
|
3288
|
+
return Object.fromEntries(keys2.map((prop) => [prop, value]));
|
|
3289
|
+
}
|
|
3290
|
+
function ease(percent, easing) {
|
|
3291
|
+
return easing >= 0 ? Math.pow(percent, easing + 1) : 1 - Math.pow(1 - percent, 1 - easing);
|
|
3292
|
+
}
|
|
3293
|
+
|
|
3294
|
+
var ScrollDriven = {
|
|
3295
|
+
props: {
|
|
3296
|
+
parallaxTarget: Boolean,
|
|
3297
|
+
parallaxStart: String,
|
|
3298
|
+
parallaxEnd: String,
|
|
3299
|
+
parallaxEasing: Number
|
|
3300
|
+
},
|
|
3301
|
+
data: {
|
|
3302
|
+
parallaxTarget: false,
|
|
3303
|
+
parallaxStart: 0,
|
|
3304
|
+
parallaxEnd: 0,
|
|
3305
|
+
parallaxEasing: 0
|
|
3306
|
+
},
|
|
3307
|
+
observe: [
|
|
3308
|
+
resize({
|
|
3309
|
+
target: ({ $el, parallaxTarget }) => [$el, parallaxTarget],
|
|
3310
|
+
filter: ({ parallax }) => parallax
|
|
3311
|
+
}),
|
|
3312
|
+
scroll$1({ filter: ({ parallax }) => parallax })
|
|
3313
|
+
],
|
|
3314
|
+
computed: {
|
|
3315
|
+
parallaxTargetFallback: ($props, $el) => $el,
|
|
3316
|
+
parallaxTarget({ parallaxTarget }, $el) {
|
|
3317
|
+
return parallaxTarget && query(parallaxTarget, $el) || this.parallaxTargetFallback;
|
|
3318
|
+
}
|
|
3319
|
+
},
|
|
3320
|
+
update: {
|
|
3321
|
+
read() {
|
|
3322
|
+
if (!this.parallax) {
|
|
3323
|
+
return;
|
|
3324
|
+
}
|
|
3325
|
+
const target = this.parallaxTarget;
|
|
3326
|
+
if (!target) {
|
|
3327
|
+
return;
|
|
3328
|
+
}
|
|
3329
|
+
const start = toPx(this.parallaxStart, "height", target, true);
|
|
3330
|
+
const end = toPx(this.parallaxEnd, "height", target, true);
|
|
3331
|
+
const percent = ease(scrolledOver(target, start, end), this.parallaxEasing);
|
|
3332
|
+
return { percent };
|
|
3333
|
+
},
|
|
3334
|
+
events: ["scroll", "resize"]
|
|
3335
|
+
}
|
|
3336
|
+
};
|
|
3337
|
+
|
|
3338
|
+
const loopKey = /* @__PURE__ */ Symbol();
|
|
2912
3339
|
var Video = {
|
|
3340
|
+
mixins: [ScrollDriven],
|
|
2913
3341
|
args: "autoplay",
|
|
2914
3342
|
props: {
|
|
2915
3343
|
automute: Boolean,
|
|
2916
3344
|
autoplay: Boolean,
|
|
2917
3345
|
restart: Boolean,
|
|
2918
|
-
|
|
3346
|
+
inviewMargin: String,
|
|
3347
|
+
inviewQueued: Number,
|
|
3348
|
+
hoverTarget: Boolean,
|
|
3349
|
+
hoverRewind: Number,
|
|
3350
|
+
reducedMotionTime: Number
|
|
2919
3351
|
},
|
|
2920
3352
|
data: {
|
|
2921
3353
|
automute: false,
|
|
2922
3354
|
autoplay: true,
|
|
2923
3355
|
restart: false,
|
|
2924
|
-
|
|
3356
|
+
inviewMargin: "0px",
|
|
3357
|
+
inviewQueued: 0,
|
|
3358
|
+
hoverTarget: false,
|
|
3359
|
+
hoverRewind: 0,
|
|
3360
|
+
reducedMotionTime: 0
|
|
2925
3361
|
},
|
|
2926
3362
|
beforeConnect() {
|
|
2927
3363
|
const isVideo = isTag(this.$el, "video");
|
|
3364
|
+
this.restart = isVideo && this.restart;
|
|
3365
|
+
this.parallax = isVideo && this.autoplay === "parallax";
|
|
3366
|
+
this.manualControl = ["hover", "parallax"].includes(this.autoplay);
|
|
3367
|
+
this.inviewQueued = this.autoplay === "inview" && this.inviewQueued;
|
|
3368
|
+
if (this.inviewQueued) {
|
|
3369
|
+
this.$el[loopKey] = this.$el.loop;
|
|
3370
|
+
this.$el.loop = false;
|
|
3371
|
+
}
|
|
2928
3372
|
if (this.autoplay === "inview" && isVideo && !hasAttr(this.$el, "preload")) {
|
|
2929
3373
|
this.$el.preload = "none";
|
|
2930
3374
|
}
|
|
@@ -2933,7 +3377,10 @@
|
|
|
2933
3377
|
}
|
|
2934
3378
|
if (this.autoplay === "hover") {
|
|
2935
3379
|
if (isVideo) {
|
|
2936
|
-
this
|
|
3380
|
+
this.hoverTarget = query(this.hoverTarget, this.$el) || this.$el;
|
|
3381
|
+
if (!isFocusable(this.hoverTarget)) {
|
|
3382
|
+
this.hoverTarget.tabIndex = 0;
|
|
3383
|
+
}
|
|
2937
3384
|
} else {
|
|
2938
3385
|
this.autoplay = true;
|
|
2939
3386
|
}
|
|
@@ -2942,28 +3389,49 @@
|
|
|
2942
3389
|
mute(this.$el);
|
|
2943
3390
|
}
|
|
2944
3391
|
},
|
|
3392
|
+
disconnected() {
|
|
3393
|
+
if (this.$el[loopKey]) {
|
|
3394
|
+
this.$el.loop = true;
|
|
3395
|
+
}
|
|
3396
|
+
queue.delete(this.$el);
|
|
3397
|
+
},
|
|
2945
3398
|
events: [
|
|
2946
3399
|
{
|
|
2947
3400
|
name: `${pointerEnter} focusin`,
|
|
2948
|
-
el: ({ hoverTarget
|
|
3401
|
+
el: ({ hoverTarget }) => hoverTarget,
|
|
2949
3402
|
filter: ({ autoplay }) => autoplay === "hover",
|
|
2950
3403
|
handler(e) {
|
|
3404
|
+
var _a;
|
|
3405
|
+
(_a = this._reverseAbort) == null ? void 0 : _a.abort();
|
|
2951
3406
|
if (!isTouch(e) || !isPlaying(this.$el)) {
|
|
2952
|
-
play(
|
|
3407
|
+
this.play();
|
|
2953
3408
|
} else {
|
|
2954
|
-
|
|
3409
|
+
this.pause();
|
|
2955
3410
|
}
|
|
2956
3411
|
}
|
|
2957
3412
|
},
|
|
2958
3413
|
{
|
|
2959
3414
|
name: `${pointerLeave} focusout`,
|
|
2960
|
-
el: ({ hoverTarget
|
|
3415
|
+
el: ({ hoverTarget }) => hoverTarget,
|
|
2961
3416
|
filter: ({ autoplay }) => autoplay === "hover",
|
|
2962
3417
|
handler(e) {
|
|
3418
|
+
var _a;
|
|
2963
3419
|
if (!isTouch(e)) {
|
|
2964
|
-
|
|
3420
|
+
(_a = this._reverseAbort) == null ? void 0 : _a.abort();
|
|
3421
|
+
this.pause();
|
|
3422
|
+
this._reverseAbort = playReverse(this.$el, this.hoverRewind);
|
|
2965
3423
|
}
|
|
2966
3424
|
}
|
|
3425
|
+
},
|
|
3426
|
+
{
|
|
3427
|
+
name: "error pause ended",
|
|
3428
|
+
filter: ({ inviewQueued }) => inviewQueued,
|
|
3429
|
+
handler(e) {
|
|
3430
|
+
if (e.type === "error" || e.type === "ended" && !this.$el[loopKey]) {
|
|
3431
|
+
queue.delete(this.$el);
|
|
3432
|
+
}
|
|
3433
|
+
playNextQueued();
|
|
3434
|
+
}
|
|
2967
3435
|
}
|
|
2968
3436
|
],
|
|
2969
3437
|
observe: [
|
|
@@ -2975,33 +3443,118 @@
|
|
|
2975
3443
|
}
|
|
2976
3444
|
}),
|
|
2977
3445
|
intersection({
|
|
2978
|
-
filter: ({ $el,
|
|
2979
|
-
handler([{ isIntersecting
|
|
3446
|
+
filter: ({ $el, manualControl }) => !manualControl && $el.preload !== "none",
|
|
3447
|
+
handler([{ isIntersecting }]) {
|
|
2980
3448
|
if (!document.fullscreenElement) {
|
|
2981
3449
|
if (isIntersecting) {
|
|
2982
3450
|
if (this.autoplay) {
|
|
2983
|
-
|
|
3451
|
+
this._autoplay();
|
|
2984
3452
|
}
|
|
2985
3453
|
} else {
|
|
2986
|
-
|
|
3454
|
+
this.pause();
|
|
2987
3455
|
}
|
|
2988
3456
|
}
|
|
2989
3457
|
},
|
|
2990
3458
|
args: { intersecting: false },
|
|
2991
|
-
options: ({ $el, autoplay }) => ({
|
|
2992
|
-
root: autoplay === "inview" ? null : parent($el).closest(":not(a)")
|
|
3459
|
+
options: ({ $el, autoplay, inviewMargin }) => ({
|
|
3460
|
+
root: autoplay === "inview" ? null : parent($el).closest(":not(a)"),
|
|
3461
|
+
rootMargin: autoplay === "inview" ? inviewMargin : "0px"
|
|
2993
3462
|
})
|
|
2994
3463
|
})
|
|
2995
|
-
]
|
|
3464
|
+
],
|
|
3465
|
+
update: {
|
|
3466
|
+
write({ percent }) {
|
|
3467
|
+
if (!this.parallax) {
|
|
3468
|
+
return;
|
|
3469
|
+
}
|
|
3470
|
+
const { duration, seeking } = this.$el;
|
|
3471
|
+
if (!isNaN(duration) && !seeking) {
|
|
3472
|
+
this.$el.currentTime = percent * duration;
|
|
3473
|
+
}
|
|
3474
|
+
},
|
|
3475
|
+
events: ["scroll", "resize"]
|
|
3476
|
+
},
|
|
3477
|
+
methods: {
|
|
3478
|
+
_autoplay() {
|
|
3479
|
+
if (window.matchMedia("(prefers-reduced-motion: reduce)").matches) {
|
|
3480
|
+
this.pause();
|
|
3481
|
+
if (isTag(this.$el, "video")) {
|
|
3482
|
+
this.$el.currentTime = this.reducedMotionTime;
|
|
3483
|
+
}
|
|
3484
|
+
} else {
|
|
3485
|
+
this.play();
|
|
3486
|
+
}
|
|
3487
|
+
},
|
|
3488
|
+
play() {
|
|
3489
|
+
if (this.inviewQueued) {
|
|
3490
|
+
queue.set(this.$el, this.inviewQueued);
|
|
3491
|
+
playNextQueued();
|
|
3492
|
+
} else {
|
|
3493
|
+
play(this.$el);
|
|
3494
|
+
}
|
|
3495
|
+
},
|
|
3496
|
+
pause() {
|
|
3497
|
+
pause(this.$el);
|
|
3498
|
+
queue.delete(this.$el);
|
|
3499
|
+
if (this.restart) {
|
|
3500
|
+
this.$el.currentTime = 0;
|
|
3501
|
+
}
|
|
3502
|
+
}
|
|
3503
|
+
}
|
|
2996
3504
|
};
|
|
2997
3505
|
function isPlaying(videoEl) {
|
|
2998
3506
|
return !videoEl.paused && !videoEl.ended;
|
|
2999
3507
|
}
|
|
3000
|
-
|
|
3001
|
-
|
|
3002
|
-
|
|
3003
|
-
|
|
3508
|
+
const queue = /* @__PURE__ */ new Map();
|
|
3509
|
+
const played = /* @__PURE__ */ new WeakMap();
|
|
3510
|
+
let frame;
|
|
3511
|
+
async function playNextQueued() {
|
|
3512
|
+
cancelAnimationFrame(frame);
|
|
3513
|
+
await new Promise((resolve) => frame = requestAnimationFrame(resolve));
|
|
3514
|
+
const getPlayed = (el) => {
|
|
3515
|
+
var _a;
|
|
3516
|
+
return (_a = played.get(el)) != null ? _a : 0;
|
|
3517
|
+
};
|
|
3518
|
+
const videos = shuffle(queue.keys()).sort((a, b) => getPlayed(a) - getPlayed(b));
|
|
3519
|
+
for (const el of videos) {
|
|
3520
|
+
const maxQueued = queue.get(el);
|
|
3521
|
+
if (isPlaying(el) || videos.filter(isPlaying).length / queue.size >= maxQueued) {
|
|
3522
|
+
continue;
|
|
3523
|
+
}
|
|
3524
|
+
played.set(el, getPlayed(el) + 1);
|
|
3525
|
+
play(el);
|
|
3526
|
+
}
|
|
3527
|
+
}
|
|
3528
|
+
function shuffle(array) {
|
|
3529
|
+
array = [...array];
|
|
3530
|
+
for (let i = array.length - 1; i > 0; i--) {
|
|
3531
|
+
let j = Math.floor(Math.random() * (i + 1));
|
|
3532
|
+
[array[i], array[j]] = [array[j], array[i]];
|
|
3533
|
+
}
|
|
3534
|
+
return array;
|
|
3535
|
+
}
|
|
3536
|
+
function playReverse(el, playbackRate) {
|
|
3537
|
+
const start = el.currentTime;
|
|
3538
|
+
if (isNaN(start) || !playbackRate) {
|
|
3539
|
+
return;
|
|
3004
3540
|
}
|
|
3541
|
+
playbackRate *= Math.max(1, start / 10 + 0.5);
|
|
3542
|
+
const controller = new AbortController();
|
|
3543
|
+
const time = Date.now();
|
|
3544
|
+
(function next() {
|
|
3545
|
+
requestAnimationFrame(() => {
|
|
3546
|
+
if (controller.signal.aborted) {
|
|
3547
|
+
return;
|
|
3548
|
+
}
|
|
3549
|
+
if (!el.seeking) {
|
|
3550
|
+
el.currentTime = Math.max(0, start - (Date.now() - time) * playbackRate / 1e3);
|
|
3551
|
+
}
|
|
3552
|
+
if (el.currentTime > 0) {
|
|
3553
|
+
next();
|
|
3554
|
+
}
|
|
3555
|
+
});
|
|
3556
|
+
})();
|
|
3557
|
+
return controller;
|
|
3005
3558
|
}
|
|
3006
3559
|
|
|
3007
3560
|
var cover = {
|
|
@@ -3077,7 +3630,7 @@
|
|
|
3077
3630
|
inset: false
|
|
3078
3631
|
},
|
|
3079
3632
|
connected() {
|
|
3080
|
-
this.pos = this.$props.pos.split("-")
|
|
3633
|
+
this.pos = [...this.$props.pos.split("-"), "center"].slice(0, 2);
|
|
3081
3634
|
[this.dir, this.align] = this.pos;
|
|
3082
3635
|
this.axis = includes(["top", "bottom"], this.dir) ? "y" : "x";
|
|
3083
3636
|
},
|
|
@@ -3097,7 +3650,7 @@
|
|
|
3097
3650
|
placement.reverse();
|
|
3098
3651
|
}
|
|
3099
3652
|
const restoreScrollPosition = storeScrollPosition(element);
|
|
3100
|
-
const elDim = dimensions(element);
|
|
3653
|
+
const elDim = dimensions$1(element);
|
|
3101
3654
|
css(element, { top: -elDim.height, left: -elDim.width });
|
|
3102
3655
|
positionAt(element, target, {
|
|
3103
3656
|
attach,
|
|
@@ -3462,6 +4015,7 @@
|
|
|
3462
4015
|
css(this.$el, this._style);
|
|
3463
4016
|
this.$el.hidden = true;
|
|
3464
4017
|
const viewports = this.target.map((target) => getViewport$1(this.$el, target));
|
|
4018
|
+
const boundaryOffsets = this.boundary.map((el) => offset(el));
|
|
3465
4019
|
const viewportOffset = this.getViewportOffset(this.$el);
|
|
3466
4020
|
const dirs = [
|
|
3467
4021
|
[0, ["x", "width", "left", "right"]],
|
|
@@ -3471,7 +4025,7 @@
|
|
|
3471
4025
|
if (this.axis !== axis && includes([axis, true], this.stretch)) {
|
|
3472
4026
|
css(this.$el, {
|
|
3473
4027
|
[prop]: Math.min(
|
|
3474
|
-
|
|
4028
|
+
boundaryOffsets[i][prop],
|
|
3475
4029
|
viewports[i][prop] - 2 * viewportOffset
|
|
3476
4030
|
),
|
|
3477
4031
|
[`overflow-${axis}`]: "auto"
|
|
@@ -3493,10 +4047,10 @@
|
|
|
3493
4047
|
const elOffset = offset(this.$el);
|
|
3494
4048
|
css(this.$el, {
|
|
3495
4049
|
[prop]: (targetOffset[start] > elOffset[start] ? targetOffset[this.inset ? end : start] - Math.max(
|
|
3496
|
-
|
|
4050
|
+
boundaryOffsets[i][start],
|
|
3497
4051
|
viewports[i][start] + viewportOffset
|
|
3498
4052
|
) : Math.min(
|
|
3499
|
-
|
|
4053
|
+
boundaryOffsets[i][end],
|
|
3500
4054
|
viewports[i][end] - viewportOffset
|
|
3501
4055
|
) - targetOffset[this.inset ? start : end]) - positionOffset,
|
|
3502
4056
|
[`overflow-${axis}`]: "auto"
|
|
@@ -3525,7 +4079,7 @@
|
|
|
3525
4079
|
observeViewportResize(update),
|
|
3526
4080
|
observeResize(overflowParents(drop.$el).concat(drop.target), update)
|
|
3527
4081
|
];
|
|
3528
|
-
return () => off.
|
|
4082
|
+
return () => off.forEach((observer) => observer.disconnect());
|
|
3529
4083
|
}
|
|
3530
4084
|
function listenForScroll(drop, fn = () => drop.$emit()) {
|
|
3531
4085
|
return on([document, ...overflowParents(drop.$el)], "scroll", fn, {
|
|
@@ -3760,7 +4314,9 @@
|
|
|
3760
4314
|
const drop = this.getDropdown(target);
|
|
3761
4315
|
const adjustHeight = () => {
|
|
3762
4316
|
const maxBottom = Math.max(
|
|
3763
|
-
...parents(target, `.${this.clsDrop}`)
|
|
4317
|
+
...[...parents(target, `.${this.clsDrop}`), target].map(
|
|
4318
|
+
(el) => offset(el).bottom
|
|
4319
|
+
)
|
|
3764
4320
|
);
|
|
3765
4321
|
offset(this.dropbar, {
|
|
3766
4322
|
left: offset(this.dropbar).left,
|
|
@@ -3940,10 +4496,12 @@
|
|
|
3940
4496
|
var Margin = {
|
|
3941
4497
|
props: {
|
|
3942
4498
|
margin: String,
|
|
4499
|
+
firstRow: Boolean,
|
|
3943
4500
|
firstColumn: Boolean
|
|
3944
4501
|
},
|
|
3945
4502
|
data: {
|
|
3946
4503
|
margin: "uk-margin-small-top",
|
|
4504
|
+
firstRow: false,
|
|
3947
4505
|
firstColumn: "uk-first-column"
|
|
3948
4506
|
},
|
|
3949
4507
|
observe: [
|
|
@@ -3983,6 +4541,7 @@
|
|
|
3983
4541
|
for (const row of rows) {
|
|
3984
4542
|
for (const el of row) {
|
|
3985
4543
|
toggleClass(el, this.margin, rows[0] !== row);
|
|
4544
|
+
toggleClass(el, this.firstRow, rows[0] === row);
|
|
3986
4545
|
toggleClass(el, this.firstColumn, row[isRtl ? row.length - 1 : 0] === el);
|
|
3987
4546
|
}
|
|
3988
4547
|
}
|
|
@@ -4055,7 +4614,8 @@
|
|
|
4055
4614
|
parallaxJustify: Boolean
|
|
4056
4615
|
},
|
|
4057
4616
|
data: {
|
|
4058
|
-
margin: "
|
|
4617
|
+
margin: "",
|
|
4618
|
+
firstRow: "uk-first-row",
|
|
4059
4619
|
clsStack: "uk-grid-stack",
|
|
4060
4620
|
masonry: false,
|
|
4061
4621
|
parallax: 0,
|
|
@@ -4077,14 +4637,14 @@
|
|
|
4077
4637
|
{
|
|
4078
4638
|
read(data) {
|
|
4079
4639
|
const { rows } = data;
|
|
4080
|
-
let { masonry, parallax, parallaxJustify
|
|
4640
|
+
let { masonry, parallax, parallaxJustify } = this;
|
|
4081
4641
|
parallax = Math.max(0, toPx(parallax));
|
|
4082
4642
|
if (!(masonry || parallax || parallaxJustify) || positionedAbsolute(rows) || rows[0].some(
|
|
4083
4643
|
(el, i) => rows.some((row) => row[i] && row[i].offsetWidth !== el.offsetWidth)
|
|
4084
4644
|
)) {
|
|
4085
4645
|
return data.translates = data.scrollColumns = false;
|
|
4086
4646
|
}
|
|
4087
|
-
let gutter =
|
|
4647
|
+
let gutter = toFloat(css(this.$el, "row-gap"));
|
|
4088
4648
|
let columns;
|
|
4089
4649
|
let translates;
|
|
4090
4650
|
if (masonry) {
|
|
@@ -4177,10 +4737,6 @@
|
|
|
4177
4737
|
}
|
|
4178
4738
|
return [columns, translates];
|
|
4179
4739
|
}
|
|
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
4740
|
function transpose(rows) {
|
|
4185
4741
|
const columns = [];
|
|
4186
4742
|
for (const row of rows) {
|
|
@@ -4211,7 +4767,7 @@
|
|
|
4211
4767
|
elements: ({ target }, $el) => $$(target, $el)
|
|
4212
4768
|
},
|
|
4213
4769
|
observe: resize({
|
|
4214
|
-
target: ({ $el, elements }) => elements.
|
|
4770
|
+
target: ({ $el, elements }) => [$el, ...elements.flatMap((el) => [el, ...el.children])]
|
|
4215
4771
|
}),
|
|
4216
4772
|
events: {
|
|
4217
4773
|
// Hidden elements may change height when fonts load
|
|
@@ -4252,7 +4808,7 @@
|
|
|
4252
4808
|
css(element, "display", "block", "important");
|
|
4253
4809
|
}
|
|
4254
4810
|
css(element, "minHeight", "");
|
|
4255
|
-
const height = dimensions(element).height - boxModelAdjust(element, "height", "content-box");
|
|
4811
|
+
const height = dimensions$1(element).height - boxModelAdjust(element, "height", "content-box");
|
|
4256
4812
|
css(element, style);
|
|
4257
4813
|
return height;
|
|
4258
4814
|
}
|
|
@@ -4283,45 +4839,6 @@
|
|
|
4283
4839
|
}
|
|
4284
4840
|
};
|
|
4285
4841
|
|
|
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
4842
|
var heightViewport = {
|
|
4326
4843
|
mixins: [Media],
|
|
4327
4844
|
props: {
|
|
@@ -4360,7 +4877,7 @@
|
|
|
4360
4877
|
const isScrollingElement = scrollingElement === scrollElement || body === scrollElement;
|
|
4361
4878
|
let minHeight = `calc(${isScrollingElement ? "100vh" : `${viewportHeight}px`}`;
|
|
4362
4879
|
if (this.expand) {
|
|
4363
|
-
const diff = dimensions(scrollElement).height - dimensions(this.$el).height;
|
|
4880
|
+
const diff = dimensions$1(scrollElement).height - dimensions$1(this.$el).height;
|
|
4364
4881
|
minHeight += ` - ${diff}px`;
|
|
4365
4882
|
} else {
|
|
4366
4883
|
if (this.offsetTop) {
|
|
@@ -4373,13 +4890,13 @@
|
|
|
4373
4890
|
}
|
|
4374
4891
|
}
|
|
4375
4892
|
if (this.offsetBottom === true) {
|
|
4376
|
-
minHeight += ` - ${dimensions(this.$el.nextElementSibling).height}px`;
|
|
4893
|
+
minHeight += ` - ${dimensions$1(this.$el.nextElementSibling).height}px`;
|
|
4377
4894
|
} else if (isNumeric(this.offsetBottom)) {
|
|
4378
4895
|
minHeight += ` - ${this.offsetBottom}vh`;
|
|
4379
4896
|
} else if (this.offsetBottom && endsWith(this.offsetBottom, "px")) {
|
|
4380
4897
|
minHeight += ` - ${toFloat(this.offsetBottom)}px`;
|
|
4381
4898
|
} else if (isString(this.offsetBottom)) {
|
|
4382
|
-
minHeight += ` - ${dimensions(query(this.offsetBottom, this.$el)).height}px`;
|
|
4899
|
+
minHeight += ` - ${dimensions$1(query(this.offsetBottom, this.$el)).height}px`;
|
|
4383
4900
|
}
|
|
4384
4901
|
}
|
|
4385
4902
|
minHeight += `${box ? ` - ${box}px` : ""})`;
|
|
@@ -4931,8 +5448,8 @@
|
|
|
4931
5448
|
}
|
|
4932
5449
|
};
|
|
4933
5450
|
function findTargetColor(target) {
|
|
4934
|
-
const dim = dimensions(target);
|
|
4935
|
-
const viewport = dimensions(window);
|
|
5451
|
+
const dim = dimensions$1(target);
|
|
5452
|
+
const viewport = dimensions$1(window);
|
|
4936
5453
|
if (!intersectRect(dim, viewport)) {
|
|
4937
5454
|
return false;
|
|
4938
5455
|
}
|
|
@@ -5171,12 +5688,13 @@
|
|
|
5171
5688
|
}
|
|
5172
5689
|
}
|
|
5173
5690
|
};
|
|
5691
|
+
const rejectKey = /* @__PURE__ */ Symbol();
|
|
5174
5692
|
function animate(el, show, { transitionElement, _toggle }) {
|
|
5175
5693
|
return new Promise(
|
|
5176
5694
|
(resolve, reject) => once(el, "show hide", () => {
|
|
5177
5695
|
var _a;
|
|
5178
|
-
(_a = el
|
|
5179
|
-
el
|
|
5696
|
+
(_a = el[rejectKey]) == null ? void 0 : _a.call(el);
|
|
5697
|
+
el[rejectKey] = reject;
|
|
5180
5698
|
_toggle(el, show);
|
|
5181
5699
|
const off = once(
|
|
5182
5700
|
transitionElement,
|
|
@@ -5197,7 +5715,7 @@
|
|
|
5197
5715
|
toMs(css(transitionElement, "transitionDuration"))
|
|
5198
5716
|
);
|
|
5199
5717
|
})
|
|
5200
|
-
).then(() => delete el
|
|
5718
|
+
).then(() => delete el[rejectKey]);
|
|
5201
5719
|
}
|
|
5202
5720
|
function toMs(time) {
|
|
5203
5721
|
return time ? endsWith(time, "ms") ? toFloat(time) : toFloat(time) * 1e3 : 0;
|
|
@@ -5207,7 +5725,7 @@
|
|
|
5207
5725
|
if (last(active) !== modal || modal.$el.contains(e.target)) {
|
|
5208
5726
|
return;
|
|
5209
5727
|
}
|
|
5210
|
-
const { left, top, width, height } = dimensions(e.target);
|
|
5728
|
+
const { left, top, width, height } = dimensions$1(e.target);
|
|
5211
5729
|
const topEl = document.elementFromPoint(left + width / 2, top + height / 2);
|
|
5212
5730
|
if (topEl && (e.target.contains(topEl) || topEl.contains(e.target))) {
|
|
5213
5731
|
return;
|
|
@@ -5585,7 +6103,7 @@
|
|
|
5585
6103
|
return {
|
|
5586
6104
|
max: Math.max(
|
|
5587
6105
|
this.minHeight,
|
|
5588
|
-
height(this.container) - (dimensions(this.content).height - height(this.$el))
|
|
6106
|
+
height(this.container) - (dimensions$1(this.content).height - height(this.$el))
|
|
5589
6107
|
)
|
|
5590
6108
|
};
|
|
5591
6109
|
},
|
|
@@ -5628,11 +6146,11 @@
|
|
|
5628
6146
|
],
|
|
5629
6147
|
update: {
|
|
5630
6148
|
read() {
|
|
5631
|
-
|
|
5632
|
-
|
|
5633
|
-
|
|
5634
|
-
|
|
5635
|
-
|
|
6149
|
+
return {
|
|
6150
|
+
overflow: ["Width", "Height"].map(
|
|
6151
|
+
(prop) => this.$el[`scroll${prop}`] - this.$el[`client${prop}`]
|
|
6152
|
+
)
|
|
6153
|
+
};
|
|
5636
6154
|
},
|
|
5637
6155
|
write({ overflow }) {
|
|
5638
6156
|
for (let i = 0; i < 2; i++) {
|
|
@@ -5910,7 +6428,7 @@
|
|
|
5910
6428
|
if (scrollTop >= max) {
|
|
5911
6429
|
active = length - 1;
|
|
5912
6430
|
} else {
|
|
5913
|
-
const offsetBy = this.offset + dimensions(getCoveringElement()).height + viewport.height * 0.1;
|
|
6431
|
+
const offsetBy = this.offset + dimensions$1(getCoveringElement()).height + viewport.height * 0.1;
|
|
5914
6432
|
for (let i = 0; i < targets.length; i++) {
|
|
5915
6433
|
if (offset(targets[i]).top - viewport.top - offsetBy > 0) {
|
|
5916
6434
|
break;
|
|
@@ -6049,7 +6567,7 @@
|
|
|
6049
6567
|
this.hide();
|
|
6050
6568
|
}
|
|
6051
6569
|
if (!this.active) {
|
|
6052
|
-
({ height: height$1, width } = dimensions(this.$el));
|
|
6570
|
+
({ height: height$1, width } = dimensions$1(this.$el));
|
|
6053
6571
|
margin = css(this.$el, "margin");
|
|
6054
6572
|
}
|
|
6055
6573
|
if (hide) {
|
|
@@ -6071,7 +6589,7 @@
|
|
|
6071
6589
|
const overflow = this.overflowFlip ? 0 : Math.max(0, elementBox - viewport2);
|
|
6072
6590
|
const topOffset = offset(referenceElement).top - // offset possible `transform: translateY` animation 'uk-animation-slide-top' while hiding
|
|
6073
6591
|
new DOMMatrix(css(referenceElement, "transform")).m42;
|
|
6074
|
-
const elHeight = dimensions(this.$el).height;
|
|
6592
|
+
const elHeight = dimensions$1(this.$el).height;
|
|
6075
6593
|
const start = (this.start === false ? topOffset : parseProp(this.start, this.$el, topOffset)) - offset$1;
|
|
6076
6594
|
const end = this.end === false ? maxScrollHeight : Math.min(
|
|
6077
6595
|
maxScrollHeight,
|
|
@@ -6263,7 +6781,7 @@
|
|
|
6263
6781
|
if (!value) {
|
|
6264
6782
|
return 0;
|
|
6265
6783
|
}
|
|
6266
|
-
if (isNumeric(value) || isString(value) &&
|
|
6784
|
+
if (isNumeric(value) || isString(value) && /^-?\d/.test(value)) {
|
|
6267
6785
|
return propOffset + toPx(value, "height", el, true);
|
|
6268
6786
|
} else {
|
|
6269
6787
|
const refElement = value === true ? getVisibleParent(el) : query(value, el);
|
|
@@ -6297,15 +6815,6 @@
|
|
|
6297
6815
|
}
|
|
6298
6816
|
}
|
|
6299
6817
|
|
|
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
6818
|
var svg = {
|
|
6310
6819
|
mixins: [Svg],
|
|
6311
6820
|
args: "src",
|
|
@@ -6387,10 +6896,9 @@
|
|
|
6387
6896
|
|
|
6388
6897
|
const selDisabled = ".uk-disabled *, .uk-disabled, [disabled]";
|
|
6389
6898
|
var Switcher = {
|
|
6390
|
-
mixins: [
|
|
6899
|
+
mixins: [Connect],
|
|
6391
6900
|
args: "connect",
|
|
6392
6901
|
props: {
|
|
6393
|
-
connect: String,
|
|
6394
6902
|
toggle: String,
|
|
6395
6903
|
itemNav: String,
|
|
6396
6904
|
active: Number,
|
|
@@ -6402,20 +6910,12 @@
|
|
|
6402
6910
|
toggle: "> * > :first-child",
|
|
6403
6911
|
itemNav: false,
|
|
6404
6912
|
active: 0,
|
|
6405
|
-
cls: "uk-active",
|
|
6406
6913
|
attrItem: "uk-switcher-item",
|
|
6407
6914
|
selVertical: ".uk-nav",
|
|
6408
6915
|
followFocus: false,
|
|
6409
6916
|
swiping: true
|
|
6410
6917
|
},
|
|
6411
6918
|
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
6919
|
toggles: ({ toggle }, $el) => $$(toggle, $el),
|
|
6420
6920
|
children(_, $el) {
|
|
6421
6921
|
return children($el).filter(
|
|
@@ -6446,10 +6946,7 @@
|
|
|
6446
6946
|
connected() {
|
|
6447
6947
|
this.$el.role = "tablist";
|
|
6448
6948
|
},
|
|
6449
|
-
observe:
|
|
6450
|
-
lazyload({ targets: ({ connectChildren }) => connectChildren }),
|
|
6451
|
-
swipe({ target: ({ connects }) => connects, filter: ({ swiping }) => swiping })
|
|
6452
|
-
],
|
|
6949
|
+
observe: swipe({ target: ({ connects }) => connects, filter: ({ swiping }) => swiping }),
|
|
6453
6950
|
events: [
|
|
6454
6951
|
{
|
|
6455
6952
|
name: "click keydown",
|
|
@@ -6499,24 +6996,27 @@
|
|
|
6499
6996
|
}
|
|
6500
6997
|
],
|
|
6501
6998
|
update() {
|
|
6502
|
-
var _a;
|
|
6503
|
-
for (const el of this.connects) {
|
|
6504
|
-
if (isTag(el, "ul")) {
|
|
6505
|
-
el.role = "presentation";
|
|
6506
|
-
}
|
|
6507
|
-
}
|
|
6508
6999
|
attr(children(this.$el), "role", "presentation");
|
|
6509
7000
|
for (const index in this.toggles) {
|
|
6510
7001
|
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
7002
|
toggle.id = generateId(this, toggle);
|
|
6517
|
-
|
|
6518
|
-
|
|
6519
|
-
|
|
7003
|
+
const controls = [];
|
|
7004
|
+
for (const { children: children2 } of this.connects) {
|
|
7005
|
+
const item = children2[index];
|
|
7006
|
+
if (!item) {
|
|
7007
|
+
continue;
|
|
7008
|
+
}
|
|
7009
|
+
attr(item, {
|
|
7010
|
+
id: generateId(this, item),
|
|
7011
|
+
role: "tabpanel",
|
|
7012
|
+
"aria-labelledby": toggle.id
|
|
7013
|
+
});
|
|
7014
|
+
controls.push(item.id);
|
|
7015
|
+
}
|
|
7016
|
+
attr(toggle, {
|
|
7017
|
+
role: "tab",
|
|
7018
|
+
"aria-controls": controls.join(" ")
|
|
7019
|
+
});
|
|
6520
7020
|
}
|
|
6521
7021
|
attr(this.$el, "aria-orientation", matches(this.$el, this.selVertical) ? "vertical" : null);
|
|
6522
7022
|
},
|
|
@@ -6549,15 +7049,7 @@
|
|
|
6549
7049
|
tabindex: next === i ? null : -1
|
|
6550
7050
|
});
|
|
6551
7051
|
});
|
|
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
|
-
});
|
|
7052
|
+
return this.showConnects(next, prev >= 0);
|
|
6561
7053
|
}
|
|
6562
7054
|
}
|
|
6563
7055
|
};
|