uikit 3.19.5-dev.c6a7fbca6 → 3.19.5-dev.c70b3862f
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 +6 -1
- package/dist/css/uikit-core-rtl.css +2 -2
- package/dist/css/uikit-core-rtl.min.css +1 -1
- package/dist/css/uikit-core.css +2 -2
- package/dist/css/uikit-core.min.css +1 -1
- package/dist/css/uikit-rtl.css +2 -2
- package/dist/css/uikit-rtl.min.css +1 -1
- package/dist/css/uikit.css +2 -2
- 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 +87 -87
- package/dist/js/components/filter.min.js +1 -1
- package/dist/js/components/lightbox-panel.js +55 -55
- package/dist/js/components/lightbox-panel.min.js +1 -1
- package/dist/js/components/lightbox.js +55 -55
- package/dist/js/components/lightbox.min.js +1 -1
- package/dist/js/components/notification.js +1 -1
- package/dist/js/components/notification.min.js +1 -1
- package/dist/js/components/parallax.js +43 -32
- package/dist/js/components/parallax.min.js +1 -1
- package/dist/js/components/slider-parallax.js +44 -33
- package/dist/js/components/slider-parallax.min.js +1 -1
- package/dist/js/components/slider.js +44 -34
- package/dist/js/components/slider.min.js +1 -1
- package/dist/js/components/slideshow-parallax.js +44 -33
- package/dist/js/components/slideshow-parallax.min.js +1 -1
- package/dist/js/components/slideshow.js +44 -33
- package/dist/js/components/slideshow.min.js +1 -1
- package/dist/js/components/sortable.js +87 -87
- package/dist/js/components/sortable.min.js +1 -1
- package/dist/js/components/tooltip.js +1 -1
- 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 +132 -114
- 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 +221 -206
- package/dist/js/uikit.min.js +1 -1
- package/package.json +1 -1
- package/src/js/api/boot.js +6 -7
- package/src/js/api/component.js +4 -4
- package/src/js/api/computed.js +20 -26
- package/src/js/api/observer.js +17 -5
- package/src/js/components/slider-parallax.js +2 -2
- package/src/js/components/slider.js +1 -1
- package/src/js/core/drop.js +1 -2
- package/src/js/core/height-placeholder.js +4 -1
- package/src/js/core/height-viewport.js +1 -1
- package/src/js/core/icon.js +2 -3
- package/src/js/core/img.js +1 -1
- package/src/js/core/inverse.js +13 -6
- package/src/js/core/margin.js +5 -0
- package/src/js/core/modal.js +5 -6
- package/src/js/core/scrollspy.js +0 -3
- package/src/js/core/sticky.js +1 -1
- package/src/js/core/switcher.js +4 -1
- package/src/js/core/toggle.js +6 -3
- package/src/js/mixin/internal/animate-fade.js +2 -7
- package/src/js/mixin/internal/animate-slide.js +2 -7
- package/src/js/mixin/parallax.js +7 -3
- package/src/js/mixin/slider.js +0 -3
- package/src/js/mixin/slideshow.js +3 -0
- package/src/js/util/class.js +1 -1
- package/src/js/util/fastdom.js +6 -13
- package/src/js/util/filter.js +7 -14
- package/src/js/util/lang.js +1 -1
- package/src/js/util/selector.js +33 -24
- package/src/js/util/style.js +2 -4
- package/src/js/util/svg.js +4 -1
- package/src/less/components/utility.less +1 -1
- package/src/scss/components/utility.scss +1 -1
- package/tests/base.html +1 -1
- package/tests/js/index.js +12 -10
- package/tests/switcher.html +86 -86
package/dist/js/uikit.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! UIkit 3.19.5-dev.
|
|
1
|
+
/*! UIkit 3.19.5-dev.c70b3862f | https://www.getuikit.com | (c) 2014 - 2024 YOOtheme | MIT License */
|
|
2
2
|
|
|
3
3
|
(function (global, factory) {
|
|
4
4
|
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
return parseFloat(value) || 0;
|
|
89
89
|
}
|
|
90
90
|
function toNode(element) {
|
|
91
|
-
return toNodes(element)[0];
|
|
91
|
+
return element && toNodes(element)[0];
|
|
92
92
|
}
|
|
93
93
|
function toNodes(element) {
|
|
94
94
|
return isNode(element) ? [element] : Array.from(element || []).filter(isNode);
|
|
@@ -273,7 +273,7 @@
|
|
|
273
273
|
}
|
|
274
274
|
}
|
|
275
275
|
function toClasses(str) {
|
|
276
|
-
return str ? isArray(str) ? str.map(toClasses).flat() : String(str).split(
|
|
276
|
+
return str ? isArray(str) ? str.map(toClasses).flat() : String(str).split(" ").filter(Boolean) : [];
|
|
277
277
|
}
|
|
278
278
|
|
|
279
279
|
const voidElements = {
|
|
@@ -296,10 +296,11 @@
|
|
|
296
296
|
function isVoidElement(element) {
|
|
297
297
|
return toNodes(element).some((element2) => voidElements[element2.tagName.toLowerCase()]);
|
|
298
298
|
}
|
|
299
|
+
const isVisibleFn = Element.prototype.checkVisibility || function() {
|
|
300
|
+
return this.offsetWidth || this.offsetHeight || this.getClientRects().length;
|
|
301
|
+
};
|
|
299
302
|
function isVisible(element) {
|
|
300
|
-
return toNodes(element).some(
|
|
301
|
-
(element2) => element2.offsetWidth || element2.offsetHeight || element2.getClientRects().length
|
|
302
|
-
);
|
|
303
|
+
return toNodes(element).some((element2) => isVisibleFn.call(element2));
|
|
303
304
|
}
|
|
304
305
|
const selInput = "input,select,textarea,button";
|
|
305
306
|
function isInput(element) {
|
|
@@ -319,13 +320,6 @@
|
|
|
319
320
|
function matches(element, selector) {
|
|
320
321
|
return toNodes(element).some((element2) => element2.matches(selector));
|
|
321
322
|
}
|
|
322
|
-
function closest(element, selector) {
|
|
323
|
-
var _a;
|
|
324
|
-
return (_a = toNode(element)) == null ? void 0 : _a.closest(startsWith(selector, ">") ? selector.slice(1) : selector);
|
|
325
|
-
}
|
|
326
|
-
function within(element, selector) {
|
|
327
|
-
return isString(selector) ? !!closest(element, selector) : toNode(selector).contains(toNode(element));
|
|
328
|
-
}
|
|
329
323
|
function parents(element, selector) {
|
|
330
324
|
const elements = [];
|
|
331
325
|
while (element = parent(element)) {
|
|
@@ -374,15 +368,13 @@
|
|
|
374
368
|
const splitSelectorRe = /.*?[^\\](?![^(]*\))(?:,|$)/g;
|
|
375
369
|
const trailingCommaRe = /\s*,$/;
|
|
376
370
|
const parseSelector = memoize((selector) => {
|
|
371
|
+
var _a;
|
|
377
372
|
selector = selector.replace(addStarRe, "$1 *");
|
|
378
373
|
let isContextSelector = false;
|
|
379
374
|
const selectors = [];
|
|
380
|
-
for (let sel of selector.match(splitSelectorRe)) {
|
|
375
|
+
for (let sel of (_a = selector.match(splitSelectorRe)) != null ? _a : []) {
|
|
381
376
|
sel = sel.replace(trailingCommaRe, "").trim();
|
|
382
|
-
|
|
383
|
-
sel = `:scope ${sel}`;
|
|
384
|
-
}
|
|
385
|
-
isContextSelector || (isContextSelector = ["!", "+", "~", "-"].includes(sel[0]));
|
|
377
|
+
isContextSelector || (isContextSelector = ["!", "+", "~", "-", ">"].includes(sel[0]));
|
|
386
378
|
selectors.push(sel);
|
|
387
379
|
}
|
|
388
380
|
return {
|
|
@@ -391,6 +383,11 @@
|
|
|
391
383
|
isContextSelector
|
|
392
384
|
};
|
|
393
385
|
});
|
|
386
|
+
const parsePositionSelector = memoize((selector) => {
|
|
387
|
+
selector = selector.substr(1).trim();
|
|
388
|
+
const index2 = selector.indexOf(" ");
|
|
389
|
+
return ~index2 ? [selector.substring(0, index2), selector.substring(index2 + 1)] : [selector, ""];
|
|
390
|
+
});
|
|
394
391
|
function _query(selector, context = document, queryFn) {
|
|
395
392
|
if (!selector || !isString(selector)) {
|
|
396
393
|
return selector;
|
|
@@ -402,33 +399,36 @@
|
|
|
402
399
|
selector = "";
|
|
403
400
|
const isSingle = parsed.selectors.length === 1;
|
|
404
401
|
for (let sel of parsed.selectors) {
|
|
402
|
+
let positionSel;
|
|
405
403
|
let ctx = context;
|
|
406
404
|
if (sel[0] === "!") {
|
|
407
|
-
|
|
408
|
-
ctx =
|
|
409
|
-
sel
|
|
410
|
-
if (!sel.length && isSingle) {
|
|
405
|
+
[positionSel, sel] = parsePositionSelector(sel);
|
|
406
|
+
ctx = context.parentElement.closest(positionSel);
|
|
407
|
+
if (!sel && isSingle) {
|
|
411
408
|
return ctx;
|
|
412
409
|
}
|
|
413
410
|
}
|
|
414
|
-
if (sel[0] === "-") {
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
ctx = matches(
|
|
418
|
-
sel
|
|
419
|
-
if (!sel.length && isSingle) {
|
|
411
|
+
if (ctx && sel[0] === "-") {
|
|
412
|
+
[positionSel, sel] = parsePositionSelector(sel);
|
|
413
|
+
ctx = ctx.previousElementSibling;
|
|
414
|
+
ctx = matches(ctx, positionSel) ? ctx : null;
|
|
415
|
+
if (!sel && isSingle) {
|
|
420
416
|
return ctx;
|
|
421
417
|
}
|
|
422
|
-
} else if (sel[0] === "~" || sel[0] === "+" && isSingle) {
|
|
423
|
-
return _doQuery(
|
|
424
|
-
parent(context),
|
|
425
|
-
queryFn,
|
|
426
|
-
`:scope :nth-child(${index(context) + 1}) ${sel}`
|
|
427
|
-
);
|
|
428
418
|
}
|
|
429
|
-
if (ctx) {
|
|
430
|
-
|
|
419
|
+
if (!ctx) {
|
|
420
|
+
continue;
|
|
431
421
|
}
|
|
422
|
+
if (isSingle) {
|
|
423
|
+
if (sel[0] === "~" || sel[0] === "+") {
|
|
424
|
+
sel = `:scope :nth-child(${index(ctx) + 1}) ${sel}`;
|
|
425
|
+
ctx = ctx.parentElement;
|
|
426
|
+
} else if (sel[0] === ">") {
|
|
427
|
+
sel = `:scope ${sel}`;
|
|
428
|
+
}
|
|
429
|
+
return _doQuery(ctx, queryFn, sel);
|
|
430
|
+
}
|
|
431
|
+
selector += `${selector ? "," : ""}${domPath(ctx)} ${sel}`;
|
|
432
432
|
}
|
|
433
433
|
if (!isDocument(context)) {
|
|
434
434
|
context = context.ownerDocument;
|
|
@@ -611,8 +611,7 @@
|
|
|
611
611
|
}
|
|
612
612
|
return elements[0];
|
|
613
613
|
}
|
|
614
|
-
const propName = memoize((name) =>
|
|
615
|
-
function vendorPropName(name) {
|
|
614
|
+
const propName = memoize((name) => {
|
|
616
615
|
if (startsWith(name, "--")) {
|
|
617
616
|
return name;
|
|
618
617
|
}
|
|
@@ -627,7 +626,7 @@
|
|
|
627
626
|
return prefixedName;
|
|
628
627
|
}
|
|
629
628
|
}
|
|
630
|
-
}
|
|
629
|
+
});
|
|
631
630
|
|
|
632
631
|
const clsTransition = "uk-transition";
|
|
633
632
|
const transitionEnd = "transitionend";
|
|
@@ -999,24 +998,18 @@
|
|
|
999
998
|
},
|
|
1000
999
|
flush
|
|
1001
1000
|
};
|
|
1002
|
-
function flush(
|
|
1001
|
+
function flush() {
|
|
1003
1002
|
runTasks(fastdom.reads);
|
|
1004
1003
|
runTasks(fastdom.writes.splice(0));
|
|
1005
1004
|
fastdom.scheduled = false;
|
|
1006
1005
|
if (fastdom.reads.length || fastdom.writes.length) {
|
|
1007
|
-
scheduleFlush(
|
|
1006
|
+
scheduleFlush();
|
|
1008
1007
|
}
|
|
1009
1008
|
}
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
}
|
|
1015
|
-
fastdom.scheduled = true;
|
|
1016
|
-
if (recursion && recursion < RECURSION_LIMIT) {
|
|
1017
|
-
Promise.resolve().then(() => flush(recursion));
|
|
1018
|
-
} else {
|
|
1019
|
-
requestAnimationFrame(() => flush(1));
|
|
1009
|
+
function scheduleFlush() {
|
|
1010
|
+
if (!fastdom.scheduled) {
|
|
1011
|
+
fastdom.scheduled = true;
|
|
1012
|
+
queueMicrotask(flush);
|
|
1020
1013
|
}
|
|
1021
1014
|
}
|
|
1022
1015
|
function runTasks(tasks) {
|
|
@@ -1566,7 +1559,6 @@
|
|
|
1566
1559
|
camelize: camelize,
|
|
1567
1560
|
children: children,
|
|
1568
1561
|
clamp: clamp,
|
|
1569
|
-
closest: closest,
|
|
1570
1562
|
createEvent: createEvent,
|
|
1571
1563
|
css: css,
|
|
1572
1564
|
data: data,
|
|
@@ -1687,7 +1679,6 @@
|
|
|
1687
1679
|
uniqueBy: uniqueBy,
|
|
1688
1680
|
unwrap: unwrap,
|
|
1689
1681
|
width: width,
|
|
1690
|
-
within: within,
|
|
1691
1682
|
wrapAll: wrapAll,
|
|
1692
1683
|
wrapInner: wrapInner
|
|
1693
1684
|
});
|
|
@@ -2035,6 +2026,11 @@
|
|
|
2035
2026
|
firstColumn: "uk-first-column"
|
|
2036
2027
|
},
|
|
2037
2028
|
observe: [
|
|
2029
|
+
mutation({
|
|
2030
|
+
options: {
|
|
2031
|
+
childList: true
|
|
2032
|
+
}
|
|
2033
|
+
}),
|
|
2038
2034
|
mutation({
|
|
2039
2035
|
options: {
|
|
2040
2036
|
attributes: true,
|
|
@@ -2116,99 +2112,15 @@
|
|
|
2116
2112
|
};
|
|
2117
2113
|
}
|
|
2118
2114
|
|
|
2119
|
-
const clsLeave = "uk-transition-leave";
|
|
2120
|
-
const clsEnter = "uk-transition-enter";
|
|
2121
|
-
function fade(action, target, duration, stagger = 0) {
|
|
2122
|
-
const index = transitionIndex(target, true);
|
|
2123
|
-
const propsIn = { opacity: 1 };
|
|
2124
|
-
const propsOut = { opacity: 0 };
|
|
2125
|
-
const wrapIndexFn = (fn) => () => index === transitionIndex(target) ? fn() : Promise.reject();
|
|
2126
|
-
const leaveFn = wrapIndexFn(async () => {
|
|
2127
|
-
addClass(target, clsLeave);
|
|
2128
|
-
await Promise.all(
|
|
2129
|
-
getTransitionNodes(target).map(
|
|
2130
|
-
(child, i) => new Promise(
|
|
2131
|
-
(resolve) => setTimeout(
|
|
2132
|
-
() => Transition.start(child, propsOut, duration / 2, "ease").then(
|
|
2133
|
-
resolve
|
|
2134
|
-
),
|
|
2135
|
-
i * stagger
|
|
2136
|
-
)
|
|
2137
|
-
)
|
|
2138
|
-
)
|
|
2139
|
-
);
|
|
2140
|
-
removeClass(target, clsLeave);
|
|
2141
|
-
});
|
|
2142
|
-
const enterFn = wrapIndexFn(async () => {
|
|
2143
|
-
const oldHeight = height(target);
|
|
2144
|
-
addClass(target, clsEnter);
|
|
2145
|
-
action();
|
|
2146
|
-
css(children(target), { opacity: 0 });
|
|
2147
|
-
await awaitFrame$1();
|
|
2148
|
-
const nodes = children(target);
|
|
2149
|
-
const newHeight = height(target);
|
|
2150
|
-
css(target, "alignContent", "flex-start");
|
|
2151
|
-
height(target, oldHeight);
|
|
2152
|
-
const transitionNodes = getTransitionNodes(target);
|
|
2153
|
-
css(nodes, propsOut);
|
|
2154
|
-
const transitions = transitionNodes.map(async (child, i) => {
|
|
2155
|
-
await awaitTimeout(i * stagger);
|
|
2156
|
-
await Transition.start(child, propsIn, duration / 2, "ease");
|
|
2157
|
-
});
|
|
2158
|
-
if (oldHeight !== newHeight) {
|
|
2159
|
-
transitions.push(
|
|
2160
|
-
Transition.start(
|
|
2161
|
-
target,
|
|
2162
|
-
{ height: newHeight },
|
|
2163
|
-
duration / 2 + transitionNodes.length * stagger,
|
|
2164
|
-
"ease"
|
|
2165
|
-
)
|
|
2166
|
-
);
|
|
2167
|
-
}
|
|
2168
|
-
await Promise.all(transitions).then(() => {
|
|
2169
|
-
removeClass(target, clsEnter);
|
|
2170
|
-
if (index === transitionIndex(target)) {
|
|
2171
|
-
css(target, { height: "", alignContent: "" });
|
|
2172
|
-
css(nodes, { opacity: "" });
|
|
2173
|
-
delete target.dataset.transition;
|
|
2174
|
-
}
|
|
2175
|
-
});
|
|
2176
|
-
});
|
|
2177
|
-
return hasClass(target, clsLeave) ? waitTransitionend(target).then(enterFn) : hasClass(target, clsEnter) ? waitTransitionend(target).then(leaveFn).then(enterFn) : leaveFn().then(enterFn);
|
|
2178
|
-
}
|
|
2179
|
-
function transitionIndex(target, next) {
|
|
2180
|
-
if (next) {
|
|
2181
|
-
target.dataset.transition = 1 + transitionIndex(target);
|
|
2182
|
-
}
|
|
2183
|
-
return toNumber(target.dataset.transition) || 0;
|
|
2184
|
-
}
|
|
2185
|
-
function waitTransitionend(target) {
|
|
2186
|
-
return Promise.all(
|
|
2187
|
-
children(target).filter(Transition.inProgress).map(
|
|
2188
|
-
(el) => new Promise((resolve) => once(el, "transitionend transitioncanceled", resolve))
|
|
2189
|
-
)
|
|
2190
|
-
);
|
|
2191
|
-
}
|
|
2192
|
-
function getTransitionNodes(target) {
|
|
2193
|
-
return getRows(children(target)).flat().filter((node) => isVisible(node));
|
|
2194
|
-
}
|
|
2195
|
-
function awaitFrame$1() {
|
|
2196
|
-
return new Promise((resolve) => requestAnimationFrame(resolve));
|
|
2197
|
-
}
|
|
2198
|
-
function awaitTimeout(timeout) {
|
|
2199
|
-
return new Promise((resolve) => setTimeout(resolve, timeout));
|
|
2200
|
-
}
|
|
2201
|
-
|
|
2202
2115
|
async function slide(action, target, duration) {
|
|
2203
2116
|
await awaitFrame();
|
|
2204
2117
|
let nodes = children(target);
|
|
2205
2118
|
const currentProps = nodes.map((el) => getProps$1(el, true));
|
|
2206
2119
|
const targetProps = { ...css(target, ["height", "padding"]), display: "block" };
|
|
2207
2120
|
await Promise.all(nodes.concat(target).map(Transition.cancel));
|
|
2208
|
-
action();
|
|
2121
|
+
await action();
|
|
2209
2122
|
nodes = nodes.concat(children(target).filter((el) => !includes(nodes, el)));
|
|
2210
2123
|
await Promise.resolve();
|
|
2211
|
-
fastdom.flush();
|
|
2212
2124
|
const targetStyle = attr(target, "style");
|
|
2213
2125
|
const targetPropsTo = css(target, ["height", "padding"]);
|
|
2214
2126
|
const [propsTo, propsFrom] = getTransitionProps(target, nodes, currentProps);
|
|
@@ -2216,7 +2128,6 @@
|
|
|
2216
2128
|
nodes.forEach((el, i) => propsFrom[i] && css(el, propsFrom[i]));
|
|
2217
2129
|
css(target, targetProps);
|
|
2218
2130
|
trigger(target, "scroll");
|
|
2219
|
-
fastdom.flush();
|
|
2220
2131
|
await awaitFrame();
|
|
2221
2132
|
const transitions = nodes.map((el, i) => parent(el) === target && Transition.start(el, propsTo[i], duration, "ease")).concat(Transition.start(target, targetPropsTo, duration, "ease"));
|
|
2222
2133
|
try {
|
|
@@ -2286,6 +2197,86 @@
|
|
|
2286
2197
|
return new Promise((resolve) => requestAnimationFrame(resolve));
|
|
2287
2198
|
}
|
|
2288
2199
|
|
|
2200
|
+
const clsLeave = "uk-transition-leave";
|
|
2201
|
+
const clsEnter = "uk-transition-enter";
|
|
2202
|
+
function fade(action, target, duration, stagger = 0) {
|
|
2203
|
+
const index = transitionIndex(target, true);
|
|
2204
|
+
const propsIn = { opacity: 1 };
|
|
2205
|
+
const propsOut = { opacity: 0 };
|
|
2206
|
+
const wrapIndexFn = (fn) => () => index === transitionIndex(target) ? fn() : Promise.reject();
|
|
2207
|
+
const leaveFn = wrapIndexFn(async () => {
|
|
2208
|
+
addClass(target, clsLeave);
|
|
2209
|
+
await Promise.all(
|
|
2210
|
+
getTransitionNodes(target).map(
|
|
2211
|
+
(child, i) => new Promise(
|
|
2212
|
+
(resolve) => setTimeout(
|
|
2213
|
+
() => Transition.start(child, propsOut, duration / 2, "ease").then(
|
|
2214
|
+
resolve
|
|
2215
|
+
),
|
|
2216
|
+
i * stagger
|
|
2217
|
+
)
|
|
2218
|
+
)
|
|
2219
|
+
)
|
|
2220
|
+
);
|
|
2221
|
+
removeClass(target, clsLeave);
|
|
2222
|
+
});
|
|
2223
|
+
const enterFn = wrapIndexFn(async () => {
|
|
2224
|
+
const oldHeight = height(target);
|
|
2225
|
+
addClass(target, clsEnter);
|
|
2226
|
+
action();
|
|
2227
|
+
css(children(target), { opacity: 0 });
|
|
2228
|
+
await awaitFrame();
|
|
2229
|
+
const nodes = children(target);
|
|
2230
|
+
const newHeight = height(target);
|
|
2231
|
+
css(target, "alignContent", "flex-start");
|
|
2232
|
+
height(target, oldHeight);
|
|
2233
|
+
const transitionNodes = getTransitionNodes(target);
|
|
2234
|
+
css(nodes, propsOut);
|
|
2235
|
+
const transitions = transitionNodes.map(async (child, i) => {
|
|
2236
|
+
await awaitTimeout(i * stagger);
|
|
2237
|
+
await Transition.start(child, propsIn, duration / 2, "ease");
|
|
2238
|
+
});
|
|
2239
|
+
if (oldHeight !== newHeight) {
|
|
2240
|
+
transitions.push(
|
|
2241
|
+
Transition.start(
|
|
2242
|
+
target,
|
|
2243
|
+
{ height: newHeight },
|
|
2244
|
+
duration / 2 + transitionNodes.length * stagger,
|
|
2245
|
+
"ease"
|
|
2246
|
+
)
|
|
2247
|
+
);
|
|
2248
|
+
}
|
|
2249
|
+
await Promise.all(transitions).then(() => {
|
|
2250
|
+
removeClass(target, clsEnter);
|
|
2251
|
+
if (index === transitionIndex(target)) {
|
|
2252
|
+
css(target, { height: "", alignContent: "" });
|
|
2253
|
+
css(nodes, { opacity: "" });
|
|
2254
|
+
delete target.dataset.transition;
|
|
2255
|
+
}
|
|
2256
|
+
});
|
|
2257
|
+
});
|
|
2258
|
+
return hasClass(target, clsLeave) ? waitTransitionend(target).then(enterFn) : hasClass(target, clsEnter) ? waitTransitionend(target).then(leaveFn).then(enterFn) : leaveFn().then(enterFn);
|
|
2259
|
+
}
|
|
2260
|
+
function transitionIndex(target, next) {
|
|
2261
|
+
if (next) {
|
|
2262
|
+
target.dataset.transition = 1 + transitionIndex(target);
|
|
2263
|
+
}
|
|
2264
|
+
return toNumber(target.dataset.transition) || 0;
|
|
2265
|
+
}
|
|
2266
|
+
function waitTransitionend(target) {
|
|
2267
|
+
return Promise.all(
|
|
2268
|
+
children(target).filter(Transition.inProgress).map(
|
|
2269
|
+
(el) => new Promise((resolve) => once(el, "transitionend transitioncanceled", resolve))
|
|
2270
|
+
)
|
|
2271
|
+
);
|
|
2272
|
+
}
|
|
2273
|
+
function getTransitionNodes(target) {
|
|
2274
|
+
return getRows(children(target)).flat().filter(isVisible);
|
|
2275
|
+
}
|
|
2276
|
+
function awaitTimeout(timeout) {
|
|
2277
|
+
return new Promise((resolve) => setTimeout(resolve, timeout));
|
|
2278
|
+
}
|
|
2279
|
+
|
|
2289
2280
|
var Animate = {
|
|
2290
2281
|
props: {
|
|
2291
2282
|
duration: Number,
|
|
@@ -3262,6 +3253,7 @@
|
|
|
3262
3253
|
}
|
|
3263
3254
|
}
|
|
3264
3255
|
}
|
|
3256
|
+
const mutationOptions = { subtree: true, childList: true };
|
|
3265
3257
|
function registerComputed(instance, key, cb) {
|
|
3266
3258
|
instance._hasComputed = true;
|
|
3267
3259
|
Object.defineProperty(instance, key, {
|
|
@@ -3270,6 +3262,13 @@
|
|
|
3270
3262
|
const { _computed, $props, $el } = instance;
|
|
3271
3263
|
if (!hasOwn(_computed, key)) {
|
|
3272
3264
|
_computed[key] = (cb.get || cb).call(instance, $props, $el);
|
|
3265
|
+
if (cb.observe && instance._computedObserver) {
|
|
3266
|
+
const selector = cb.observe.call(instance, $props);
|
|
3267
|
+
instance._computedObserver.observe(
|
|
3268
|
+
["~", "+", "-"].includes(selector[0]) ? $el.parentElement : $el.getRootNode(),
|
|
3269
|
+
mutationOptions
|
|
3270
|
+
);
|
|
3271
|
+
}
|
|
3273
3272
|
}
|
|
3274
3273
|
return _computed[key];
|
|
3275
3274
|
},
|
|
@@ -3290,11 +3289,16 @@
|
|
|
3290
3289
|
read: () => runWatches(instance, resetComputed(instance)),
|
|
3291
3290
|
events: ["resize", "computed"]
|
|
3292
3291
|
});
|
|
3293
|
-
|
|
3294
|
-
|
|
3292
|
+
instance._computedObserver = observeMutation(
|
|
3293
|
+
instance.$el,
|
|
3294
|
+
() => callUpdate(instance, "computed"),
|
|
3295
|
+
mutationOptions
|
|
3296
|
+
);
|
|
3295
3297
|
}
|
|
3296
3298
|
function disconnectComputedUpdates(instance) {
|
|
3297
|
-
|
|
3299
|
+
var _a;
|
|
3300
|
+
(_a = instance._computedObserver) == null ? void 0 : _a.disconnect();
|
|
3301
|
+
delete instance._computedObserver;
|
|
3298
3302
|
resetComputed(instance);
|
|
3299
3303
|
}
|
|
3300
3304
|
function resetComputed(instance) {
|
|
@@ -3302,23 +3306,6 @@
|
|
|
3302
3306
|
instance._computed = {};
|
|
3303
3307
|
return values;
|
|
3304
3308
|
}
|
|
3305
|
-
let observer;
|
|
3306
|
-
let instances$1;
|
|
3307
|
-
function registerComputedObserver() {
|
|
3308
|
-
if (observer) {
|
|
3309
|
-
return;
|
|
3310
|
-
}
|
|
3311
|
-
instances$1 = /* @__PURE__ */ new Set();
|
|
3312
|
-
observer = new MutationObserver(() => {
|
|
3313
|
-
for (const instance of instances$1) {
|
|
3314
|
-
callUpdate(instance, "computed");
|
|
3315
|
-
}
|
|
3316
|
-
});
|
|
3317
|
-
observer.observe(document, {
|
|
3318
|
-
subtree: true,
|
|
3319
|
-
childList: true
|
|
3320
|
-
});
|
|
3321
|
-
}
|
|
3322
3309
|
|
|
3323
3310
|
function initEvents(instance) {
|
|
3324
3311
|
instance._events = [];
|
|
@@ -3388,18 +3375,30 @@
|
|
|
3388
3375
|
}
|
|
3389
3376
|
const targets = hasOwn(instance, key) ? instance[key] : target;
|
|
3390
3377
|
const observer = observe(targets, handler, options, args);
|
|
3391
|
-
if (isFunction(target) && isArray(instance[key])
|
|
3392
|
-
registerWatch(
|
|
3378
|
+
if (isFunction(target) && isArray(instance[key])) {
|
|
3379
|
+
registerWatch(
|
|
3380
|
+
instance,
|
|
3381
|
+
{ handler: updateTargets(observer, options), immediate: false },
|
|
3382
|
+
key
|
|
3383
|
+
);
|
|
3393
3384
|
}
|
|
3394
3385
|
registerObserver(instance, observer);
|
|
3395
3386
|
}
|
|
3396
|
-
function updateTargets(observer) {
|
|
3387
|
+
function updateTargets(observer, options) {
|
|
3397
3388
|
return (targets, prev) => {
|
|
3398
3389
|
for (const target of prev) {
|
|
3399
|
-
!includes(targets, target)
|
|
3390
|
+
if (!includes(targets, target)) {
|
|
3391
|
+
if (observer.unobserve) {
|
|
3392
|
+
observer.unobserve(target);
|
|
3393
|
+
} else if (observer.observe) {
|
|
3394
|
+
observer.disconnect();
|
|
3395
|
+
}
|
|
3396
|
+
}
|
|
3400
3397
|
}
|
|
3401
3398
|
for (const target of targets) {
|
|
3402
|
-
!includes(prev, target)
|
|
3399
|
+
if (!includes(prev, target) || !observer.unobserve) {
|
|
3400
|
+
observer.observe(target, options);
|
|
3401
|
+
}
|
|
3403
3402
|
}
|
|
3404
3403
|
};
|
|
3405
3404
|
}
|
|
@@ -3559,26 +3558,26 @@
|
|
|
3559
3558
|
};
|
|
3560
3559
|
App.util = util;
|
|
3561
3560
|
App.options = {};
|
|
3562
|
-
App.version = "3.19.5-dev.
|
|
3561
|
+
App.version = "3.19.5-dev.c70b3862f";
|
|
3563
3562
|
|
|
3564
3563
|
const PREFIX = "uk-";
|
|
3565
3564
|
const DATA = "__uikit__";
|
|
3566
3565
|
const components$2 = {};
|
|
3567
3566
|
function component(name, options) {
|
|
3568
|
-
var _a;
|
|
3567
|
+
var _a, _b;
|
|
3569
3568
|
const id = PREFIX + hyphenate(name);
|
|
3570
3569
|
if (!options) {
|
|
3571
|
-
if (
|
|
3570
|
+
if (!components$2[id].options) {
|
|
3572
3571
|
components$2[id] = App.extend(components$2[id]);
|
|
3573
3572
|
}
|
|
3574
3573
|
return components$2[id];
|
|
3575
3574
|
}
|
|
3576
3575
|
name = camelize(name);
|
|
3577
3576
|
App[name] = (element, data) => createComponent(name, element, data);
|
|
3578
|
-
const opt =
|
|
3577
|
+
const opt = (_a = options.options) != null ? _a : { ...options };
|
|
3579
3578
|
opt.id = id;
|
|
3580
3579
|
opt.name = name;
|
|
3581
|
-
(
|
|
3580
|
+
(_b = opt.install) == null ? void 0 : _b.call(opt, App, opt, name);
|
|
3582
3581
|
if (App._initialized && !opt.functional) {
|
|
3583
3582
|
requestAnimationFrame(() => createComponent(name, `[${id}],[data-${id}]`));
|
|
3584
3583
|
}
|
|
@@ -3586,7 +3585,7 @@
|
|
|
3586
3585
|
}
|
|
3587
3586
|
function createComponent(name, element, data, ...args) {
|
|
3588
3587
|
const Component = component(name);
|
|
3589
|
-
return Component.options.functional ? new Component({ data: isPlainObject(element) ? element : [element, data, ...args] }) : element ?
|
|
3588
|
+
return Component.options.functional ? new Component({ data: isPlainObject(element) ? element : [element, data, ...args] }) : element ? findAll(element).map(init)[0] : init();
|
|
3590
3589
|
function init(element2) {
|
|
3591
3590
|
const instance = getComponent(element2, name);
|
|
3592
3591
|
if (instance) {
|
|
@@ -3948,7 +3947,6 @@
|
|
|
3948
3947
|
}
|
|
3949
3948
|
}
|
|
3950
3949
|
},
|
|
3951
|
-
observe: resize(),
|
|
3952
3950
|
events: {
|
|
3953
3951
|
itemshow({ target }) {
|
|
3954
3952
|
addClass(target, this.clsEnter, this.clsSlideActive);
|
|
@@ -4077,6 +4075,7 @@
|
|
|
4077
4075
|
return { animation: this.animation };
|
|
4078
4076
|
}
|
|
4079
4077
|
},
|
|
4078
|
+
observe: resize(),
|
|
4080
4079
|
events: {
|
|
4081
4080
|
beforeitemshow({ target }) {
|
|
4082
4081
|
addClass(target, this.clsActive);
|
|
@@ -4559,10 +4558,7 @@
|
|
|
4559
4558
|
}
|
|
4560
4559
|
|
|
4561
4560
|
function getMaxPathLength(el) {
|
|
4562
|
-
return Math.ceil(Math.max(0, ...$$("[stroke]", el).map((stroke) =>
|
|
4563
|
-
var _a;
|
|
4564
|
-
return (_a = stroke.getTotalLength) == null ? void 0 : _a.call(stroke);
|
|
4565
|
-
})));
|
|
4561
|
+
return isVisible(el) ? Math.ceil(Math.max(0, ...$$("[stroke]", el).map((stroke) => stroke.getTotalLength()))) : 0;
|
|
4566
4562
|
}
|
|
4567
4563
|
|
|
4568
4564
|
const props = {
|
|
@@ -4766,6 +4762,7 @@
|
|
|
4766
4762
|
}
|
|
4767
4763
|
};
|
|
4768
4764
|
}
|
|
4765
|
+
const loading = {};
|
|
4769
4766
|
const dimensions = {};
|
|
4770
4767
|
function getBackgroundImageDimensions(el) {
|
|
4771
4768
|
const src = css(el, "backgroundImage").replace(/^none|url\(["']?(.+?)["']?\)$/, "$1");
|
|
@@ -4775,11 +4772,12 @@
|
|
|
4775
4772
|
const image = new Image();
|
|
4776
4773
|
if (src) {
|
|
4777
4774
|
image.src = src;
|
|
4778
|
-
if (!image.naturalWidth) {
|
|
4779
|
-
image
|
|
4775
|
+
if (!image.naturalWidth && !loading[src]) {
|
|
4776
|
+
once(image, "error load", () => {
|
|
4780
4777
|
dimensions[src] = toDimensions(image);
|
|
4781
4778
|
trigger(el, createEvent("load", false));
|
|
4782
|
-
};
|
|
4779
|
+
});
|
|
4780
|
+
loading[src] = true;
|
|
4783
4781
|
return toDimensions(image);
|
|
4784
4782
|
}
|
|
4785
4783
|
}
|
|
@@ -5269,7 +5267,7 @@
|
|
|
5269
5267
|
toggleClass(this.$el, this.clsContainer, !$(`.${this.clsContainer}`, this.$el));
|
|
5270
5268
|
},
|
|
5271
5269
|
observe: resize({
|
|
5272
|
-
target: ({ slides }) => slides
|
|
5270
|
+
target: ({ slides, $el }) => [$el, ...slides]
|
|
5273
5271
|
}),
|
|
5274
5272
|
update: {
|
|
5275
5273
|
write() {
|
|
@@ -5457,7 +5455,7 @@
|
|
|
5457
5455
|
var sliderParallax = {
|
|
5458
5456
|
mixins: [Parallax],
|
|
5459
5457
|
beforeConnect() {
|
|
5460
|
-
this.item =
|
|
5458
|
+
this.item = this.$el.closest(`.${this.$options.id.replace("parallax", "items")} > *`);
|
|
5461
5459
|
},
|
|
5462
5460
|
disconnected() {
|
|
5463
5461
|
this.item = null;
|
|
@@ -6394,14 +6392,14 @@
|
|
|
6394
6392
|
if (name) {
|
|
6395
6393
|
if (hasAttr(target, attributeName)) {
|
|
6396
6394
|
createComponent(name, target);
|
|
6397
|
-
|
|
6395
|
+
} else {
|
|
6396
|
+
(_a = getComponent(target, name)) == null ? void 0 : _a.$destroy();
|
|
6398
6397
|
}
|
|
6399
|
-
(_a = getComponent(target, name)) == null ? void 0 : _a.$destroy();
|
|
6400
6398
|
}
|
|
6401
6399
|
}
|
|
6402
6400
|
function connect(node) {
|
|
6403
6401
|
const components2 = getComponents(node);
|
|
6404
|
-
for (const name in
|
|
6402
|
+
for (const name in components2) {
|
|
6405
6403
|
callConnected(components2[name]);
|
|
6406
6404
|
}
|
|
6407
6405
|
for (const attributeName of node.getAttributeNames()) {
|
|
@@ -6411,7 +6409,7 @@
|
|
|
6411
6409
|
}
|
|
6412
6410
|
function disconnect(node) {
|
|
6413
6411
|
const components2 = getComponents(node);
|
|
6414
|
-
for (const name in
|
|
6412
|
+
for (const name in components2) {
|
|
6415
6413
|
callDisconnected(components2[name]);
|
|
6416
6414
|
}
|
|
6417
6415
|
}
|
|
@@ -6420,7 +6418,7 @@
|
|
|
6420
6418
|
attribute = attribute.slice(5);
|
|
6421
6419
|
}
|
|
6422
6420
|
const cmp = components$2[attribute];
|
|
6423
|
-
return cmp && (
|
|
6421
|
+
return cmp && (cmp.options || cmp).name;
|
|
6424
6422
|
}
|
|
6425
6423
|
|
|
6426
6424
|
globalApi(App);
|
|
@@ -7163,7 +7161,8 @@
|
|
|
7163
7161
|
document,
|
|
7164
7162
|
`${pointerUp$1} ${pointerCancel} scroll`,
|
|
7165
7163
|
({ defaultPrevented, type, target: newTarget }) => {
|
|
7166
|
-
|
|
7164
|
+
var _a;
|
|
7165
|
+
if (!defaultPrevented && type === pointerUp$1 && target === newTarget && !((_a = drop.targetEl) == null ? void 0 : _a.contains(target))) {
|
|
7167
7166
|
drop.hide(false);
|
|
7168
7167
|
}
|
|
7169
7168
|
},
|
|
@@ -7779,7 +7778,10 @@
|
|
|
7779
7778
|
target: ""
|
|
7780
7779
|
},
|
|
7781
7780
|
computed: {
|
|
7782
|
-
target:
|
|
7781
|
+
target: {
|
|
7782
|
+
get: ({ target }, $el) => query(target, $el),
|
|
7783
|
+
observe: ({ target }) => target
|
|
7784
|
+
}
|
|
7783
7785
|
},
|
|
7784
7786
|
observe: resize({ target: ({ target }) => target }),
|
|
7785
7787
|
update: {
|
|
@@ -7835,7 +7837,7 @@
|
|
|
7835
7837
|
const top = offsetPosition(offsetTopEl)[0] - offsetPosition(scrollElement)[0];
|
|
7836
7838
|
minHeight += top > 0 && top < viewportHeight / 2 ? ` - ${top}px` : "";
|
|
7837
7839
|
} else {
|
|
7838
|
-
minHeight += ` - ${css(scrollElement, "
|
|
7840
|
+
minHeight += ` - ${boxModelAdjust(scrollElement, "height", css(scrollElement, "boxSizing"))}px`;
|
|
7839
7841
|
}
|
|
7840
7842
|
}
|
|
7841
7843
|
if (this.offsetBottom === true) {
|
|
@@ -8029,7 +8031,7 @@
|
|
|
8029
8031
|
i18n: { toggle: "Open Search", submit: "Submit Search" },
|
|
8030
8032
|
beforeConnect() {
|
|
8031
8033
|
const isToggle = hasClass(this.$el, "uk-search-toggle") || hasClass(this.$el, "uk-navbar-toggle");
|
|
8032
|
-
this.icon = isToggle ? "search-toggle-icon" : hasClass(this.$el, "uk-search-icon") &&
|
|
8034
|
+
this.icon = isToggle ? "search-toggle-icon" : hasClass(this.$el, "uk-search-icon") && this.$el.closest(".uk-search-large") ? "search-large" : this.$el.closest(".uk-search-navbar") ? "search-navbar" : this.$props.icon;
|
|
8033
8035
|
if (hasAttr(this.$el, "aria-label")) {
|
|
8034
8036
|
return;
|
|
8035
8037
|
}
|
|
@@ -8173,13 +8175,13 @@
|
|
|
8173
8175
|
delete this.img;
|
|
8174
8176
|
},
|
|
8175
8177
|
observe: intersection({
|
|
8176
|
-
target: ({ $el, $props }) => [$el, ...queryAll($props.target, $el)],
|
|
8177
8178
|
handler(entries, observer) {
|
|
8178
8179
|
this.load();
|
|
8179
8180
|
observer.disconnect();
|
|
8180
8181
|
},
|
|
8181
8182
|
options: ({ margin }) => ({ rootMargin: margin }),
|
|
8182
|
-
filter: ({ loading }) => loading === "lazy"
|
|
8183
|
+
filter: ({ loading }) => loading === "lazy",
|
|
8184
|
+
target: ({ $el, $props }) => $props.target ? [$el, ...queryAll($props.target, $el)] : $el
|
|
8183
8185
|
}),
|
|
8184
8186
|
methods: {
|
|
8185
8187
|
load() {
|
|
@@ -8269,13 +8271,15 @@
|
|
|
8269
8271
|
selActive: false
|
|
8270
8272
|
},
|
|
8271
8273
|
computed: {
|
|
8272
|
-
target: ({ target }, $el) => target ? $$(target, $el) :
|
|
8274
|
+
target: ({ target }, $el) => target ? $$(target, $el) : $el
|
|
8273
8275
|
},
|
|
8274
8276
|
observe: [
|
|
8275
8277
|
intersection({
|
|
8276
|
-
handler(
|
|
8277
|
-
this.isIntersecting = isIntersecting;
|
|
8278
|
+
handler(entries) {
|
|
8279
|
+
this.isIntersecting = entries.some(({ isIntersecting }) => isIntersecting);
|
|
8280
|
+
this.$emit();
|
|
8278
8281
|
},
|
|
8282
|
+
target: ({ target }) => target,
|
|
8279
8283
|
args: { intersecting: false }
|
|
8280
8284
|
}),
|
|
8281
8285
|
mutation({
|
|
@@ -8285,7 +8289,10 @@
|
|
|
8285
8289
|
{
|
|
8286
8290
|
target: ({ target }) => target,
|
|
8287
8291
|
observe: (target, handler) => {
|
|
8288
|
-
const observer = observeResize(
|
|
8292
|
+
const observer = observeResize(
|
|
8293
|
+
[...toNodes(target), document.documentElement],
|
|
8294
|
+
handler
|
|
8295
|
+
);
|
|
8289
8296
|
const listener = [
|
|
8290
8297
|
on(document, "scroll itemshown itemhidden", handler, {
|
|
8291
8298
|
passive: true,
|
|
@@ -8301,6 +8308,8 @@
|
|
|
8301
8308
|
})
|
|
8302
8309
|
];
|
|
8303
8310
|
return {
|
|
8311
|
+
observe: observer.observe.bind(observer),
|
|
8312
|
+
unobserve: observer.unobserve.bind(observer),
|
|
8304
8313
|
disconnect() {
|
|
8305
8314
|
observer.disconnect();
|
|
8306
8315
|
listener.map((off) => off());
|
|
@@ -8317,7 +8326,7 @@
|
|
|
8317
8326
|
if (!this.isIntersecting) {
|
|
8318
8327
|
return false;
|
|
8319
8328
|
}
|
|
8320
|
-
for (const target of this.target) {
|
|
8329
|
+
for (const target of toNodes(this.target)) {
|
|
8321
8330
|
replaceClass(
|
|
8322
8331
|
target,
|
|
8323
8332
|
"uk-light,uk-dark",
|
|
@@ -8432,10 +8441,11 @@
|
|
|
8432
8441
|
};
|
|
8433
8442
|
function install({ modal }) {
|
|
8434
8443
|
modal.dialog = function(content, options) {
|
|
8435
|
-
const dialog = modal(
|
|
8436
|
-
|
|
8437
|
-
|
|
8438
|
-
|
|
8444
|
+
const dialog = modal($(`<div><div class="uk-modal-dialog">${content}</div></div>`), {
|
|
8445
|
+
stack: true,
|
|
8446
|
+
role: "alertdialog",
|
|
8447
|
+
...options
|
|
8448
|
+
});
|
|
8439
8449
|
dialog.show();
|
|
8440
8450
|
on(
|
|
8441
8451
|
dialog.$el,
|
|
@@ -8907,7 +8917,6 @@
|
|
|
8907
8917
|
}
|
|
8908
8918
|
trigger(el, inview ? "inview" : "outview");
|
|
8909
8919
|
state.inview = inview;
|
|
8910
|
-
this.$update(el);
|
|
8911
8920
|
}
|
|
8912
8921
|
}
|
|
8913
8922
|
};
|
|
@@ -9054,7 +9063,7 @@
|
|
|
9054
9063
|
target: () => document.scrollingElement,
|
|
9055
9064
|
options: { box: "content-box" }
|
|
9056
9065
|
}),
|
|
9057
|
-
resize(
|
|
9066
|
+
resize()
|
|
9058
9067
|
],
|
|
9059
9068
|
events: [
|
|
9060
9069
|
{
|
|
@@ -9467,7 +9476,10 @@
|
|
|
9467
9476
|
swiping: true
|
|
9468
9477
|
},
|
|
9469
9478
|
computed: {
|
|
9470
|
-
connects:
|
|
9479
|
+
connects: {
|
|
9480
|
+
get: ({ connect }, $el) => queryAll(connect, $el),
|
|
9481
|
+
observe: ({ connect }) => connect
|
|
9482
|
+
},
|
|
9471
9483
|
connectChildren() {
|
|
9472
9484
|
return this.connects.map((el) => children(el)).flat();
|
|
9473
9485
|
},
|
|
@@ -9656,9 +9668,12 @@
|
|
|
9656
9668
|
queued: true
|
|
9657
9669
|
},
|
|
9658
9670
|
computed: {
|
|
9659
|
-
target
|
|
9660
|
-
|
|
9661
|
-
|
|
9671
|
+
target: {
|
|
9672
|
+
get: ({ target }, $el) => {
|
|
9673
|
+
target = queryAll(target || $el.hash, $el);
|
|
9674
|
+
return target.length ? target : [$el];
|
|
9675
|
+
},
|
|
9676
|
+
observe: ({ target }) => target
|
|
9662
9677
|
}
|
|
9663
9678
|
},
|
|
9664
9679
|
connected() {
|