uikit 3.25.20-dev.e4f47fc → 3.25.20
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 +2 -33
- package/build/prefix.js +1 -1
- package/build/publishDev.js +1 -1
- package/build/scope.js +1 -1
- package/build/scss.js +1 -1
- package/dist/css/uikit-core-rtl.css +917 -1045
- package/dist/css/uikit-core-rtl.min.css +1 -1
- package/dist/css/uikit-core.css +917 -1045
- package/dist/css/uikit-core.min.css +1 -1
- package/dist/css/uikit-rtl.css +936 -1064
- package/dist/css/uikit-rtl.min.css +1 -1
- package/dist/css/uikit.css +936 -1064
- 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 +132 -133
- package/dist/js/components/lightbox-panel.min.js +1 -1
- package/dist/js/components/lightbox.js +133 -134
- 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 +12 -8
- package/dist/js/components/parallax.min.js +1 -1
- package/dist/js/components/slider-parallax.js +12 -8
- package/dist/js/components/slider-parallax.min.js +1 -1
- package/dist/js/components/slider.js +25 -41
- package/dist/js/components/slider.min.js +1 -1
- package/dist/js/components/slideshow-parallax.js +12 -8
- package/dist/js/components/slideshow-parallax.min.js +1 -1
- package/dist/js/components/slideshow.js +102 -71
- 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 +262 -752
- 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 +374 -627
- package/dist/js/uikit.min.js +1 -1
- package/package.json +1 -1
- package/src/js/api/component.js +3 -2
- package/src/js/api/observables.js +4 -2
- package/src/js/api/options.js +3 -6
- package/src/js/api/props.js +4 -1
- package/src/js/api/state.js +8 -7
- package/src/js/components/index.js +0 -1
- package/src/js/components/internal/lightbox-animations.js +26 -7
- package/src/js/components/internal/slideshow-animations.js +62 -15
- package/src/js/components/lightbox-panel.js +96 -121
- package/src/js/components/lightbox.js +8 -5
- package/src/js/components/tooltip.js +2 -4
- package/src/js/core/accordion.js +29 -78
- package/src/js/core/drop.js +4 -5
- package/src/js/core/dropnav.js +3 -3
- package/src/js/core/grid.js +19 -5
- package/src/js/core/height-match.js +2 -1
- package/src/js/core/margin.js +0 -3
- package/src/js/core/overflow-fade.js +5 -5
- package/src/js/core/sticky.js +1 -1
- package/src/js/core/switcher.js +44 -24
- package/src/js/core/video.js +15 -172
- package/src/js/mixin/internal/slideshow-animations.js +13 -5
- package/src/js/mixin/internal/slideshow-transitioner.js +2 -2
- package/src/js/mixin/modal.js +3 -4
- package/src/js/mixin/parallax.js +4 -1
- package/src/js/mixin/position.js +1 -1
- package/src/js/mixin/slider-nav.js +1 -1
- package/src/js/mixin/slider-parallax.js +38 -9
- package/src/js/mixin/togglable.js +14 -13
- package/src/js/util/attr.js +7 -7
- package/src/js/util/class.js +1 -1
- package/src/js/util/dom.js +4 -3
- package/src/js/util/lang.js +1 -1
- package/src/js/util/player.js +4 -4
- package/src/js/util/style.js +15 -10
- package/src/js/util/viewport.js +25 -22
- package/src/less/components/_import.less +1 -6
- package/src/less/components/base.less +1 -1
- package/src/less/components/button.less +1 -1
- package/src/less/components/form.less +5 -5
- package/src/less/components/grid.less +65 -58
- package/src/less/components/margin.less +124 -155
- package/src/less/components/nav.less +1 -1
- package/src/less/components/padding.less +9 -9
- package/src/less/components/text.less +0 -6
- package/src/less/components/utility.less +163 -0
- package/src/less/theme/_import.less +1 -5
- package/src/less/theme/utility.less +32 -0
- package/src/scss/components/_import.scss +1 -6
- package/src/scss/components/base.scss +1 -1
- package/src/scss/components/button.scss +1 -1
- package/src/scss/components/form.scss +5 -5
- package/src/scss/components/grid.scss +64 -57
- package/src/scss/components/margin.scss +124 -155
- package/src/scss/components/nav.scss +1 -1
- package/src/scss/components/padding.scss +9 -9
- package/src/scss/components/text.scss +0 -6
- package/src/scss/components/utility.scss +129 -0
- package/src/scss/mixins-theme.scss +33 -42
- package/src/scss/mixins.scss +30 -39
- package/src/scss/variables-theme.scss +14 -14
- package/src/scss/variables.scss +14 -14
- package/tests/accordion.html +10 -77
- 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 +3 -3
- 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 +6 -6
- 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/dropdown.html +1 -1
- package/tests/dropnav.html +18 -18
- package/tests/filter.html +3 -3
- package/tests/form.html +14 -14
- package/tests/grid.html +47 -41
- 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 +14 -14
- package/tests/link.html +1 -1
- package/tests/list.html +4 -4
- package/tests/margin.html +7 -7
- package/tests/marker.html +3 -3
- package/tests/modal.html +4 -4
- 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 +4 -34
- 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 +2 -3
- 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 +116 -16
- package/tests/video.html +27 -227
- package/tests/visibility.html +4 -4
- package/tests/width.html +12 -12
- package/dist/js/components/marquee.js +0 -179
- package/dist/js/components/marquee.min.js +0 -1
- package/src/js/components/marquee.js +0 -123
- package/src/js/mixin/connect.js +0 -55
- package/src/js/mixin/scroll-driven.js +0 -57
- package/src/less/components/dropcap.less +0 -71
- package/src/less/components/floating-shadow.less +0 -66
- package/src/less/components/logo.less +0 -94
- package/src/less/components/marquee.less +0 -133
- package/src/less/theme/dropcap.less +0 -29
- package/src/less/theme/floating-shadow.less +0 -20
- package/src/less/theme/logo.less +0 -29
- package/src/less/theme/marquee.less +0 -14
- package/src/scss/components/dropcap.scss +0 -63
- package/src/scss/components/floating-shadow.scss +0 -63
- package/src/scss/components/logo.scss +0 -75
- package/src/scss/components/marquee.scss +0 -136
- package/tests/dropcap.html +0 -26
- package/tests/floating-shadow.html +0 -44
- package/tests/logo.html +0 -84
- package/tests/marquee.html +0 -617
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "uikit",
|
|
3
3
|
"title": "UIkit",
|
|
4
4
|
"description": "UIkit is a lightweight and modular front-end framework for developing fast and powerful web interfaces.",
|
|
5
|
-
"version": "3.25.20
|
|
5
|
+
"version": "3.25.20",
|
|
6
6
|
"main": "dist/js/uikit.js",
|
|
7
7
|
"style": "dist/css/uikit.css",
|
|
8
8
|
"sideEffects": [
|
package/src/js/api/component.js
CHANGED
|
@@ -48,10 +48,11 @@ export function createComponent(name, element, data, ...args) {
|
|
|
48
48
|
const instance = getComponent(element, name);
|
|
49
49
|
|
|
50
50
|
if (instance) {
|
|
51
|
-
if (
|
|
51
|
+
if (data) {
|
|
52
|
+
instance.$destroy();
|
|
53
|
+
} else {
|
|
52
54
|
return instance;
|
|
53
55
|
}
|
|
54
|
-
instance.$destroy();
|
|
55
56
|
}
|
|
56
57
|
|
|
57
58
|
return new Component({ el: element, data });
|
|
@@ -43,8 +43,10 @@ export function lazyload(options = {}) {
|
|
|
43
43
|
.forEach((el) => removeAttr(el, 'loading'));
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
-
for (const
|
|
47
|
-
|
|
46
|
+
for (const el of entries
|
|
47
|
+
.filter(({ isIntersecting }) => isIntersecting)
|
|
48
|
+
.map(({ target }) => target)) {
|
|
49
|
+
observer.unobserve(el);
|
|
48
50
|
}
|
|
49
51
|
},
|
|
50
52
|
...options,
|
package/src/js/api/options.js
CHANGED
|
@@ -153,14 +153,11 @@ export function parseOptions(options, args = []) {
|
|
|
153
153
|
export function coerce(type, value) {
|
|
154
154
|
if (type === Boolean) {
|
|
155
155
|
return toBoolean(value);
|
|
156
|
-
}
|
|
157
|
-
if (type === Number) {
|
|
156
|
+
} else if (type === Number) {
|
|
158
157
|
return toNumber(value);
|
|
159
|
-
}
|
|
160
|
-
if (type === 'list') {
|
|
158
|
+
} else if (type === 'list') {
|
|
161
159
|
return toList(value);
|
|
162
|
-
}
|
|
163
|
-
if (type === Object && isString(value)) {
|
|
160
|
+
} else if (type === Object && isString(value)) {
|
|
164
161
|
return parseOptions(value);
|
|
165
162
|
}
|
|
166
163
|
|
package/src/js/api/props.js
CHANGED
|
@@ -67,7 +67,10 @@ function getProps(opts) {
|
|
|
67
67
|
|
|
68
68
|
const getAttributes = memoize((id, props) => {
|
|
69
69
|
const attributes = Object.keys(props);
|
|
70
|
-
const filter =
|
|
70
|
+
const filter = attributes
|
|
71
|
+
.concat(id)
|
|
72
|
+
.map((key) => [hyphenate(key), `data-${hyphenate(key)}`])
|
|
73
|
+
.flat();
|
|
71
74
|
return { attributes, filter };
|
|
72
75
|
});
|
|
73
76
|
|
package/src/js/api/state.js
CHANGED
|
@@ -43,13 +43,14 @@ function initMethods(instance) {
|
|
|
43
43
|
|
|
44
44
|
function normalizeData({ data = {} }, { args = [], props = {} }) {
|
|
45
45
|
if (isArray(data)) {
|
|
46
|
-
data = data
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
46
|
+
data = data.slice(0, args.length).reduce((data, value, index) => {
|
|
47
|
+
if (isPlainObject(value)) {
|
|
48
|
+
assign(data, value);
|
|
49
|
+
} else {
|
|
50
|
+
data[args[index]] = value;
|
|
51
|
+
}
|
|
52
|
+
return data;
|
|
53
|
+
}, {});
|
|
53
54
|
}
|
|
54
55
|
|
|
55
56
|
for (const key in data) {
|
|
@@ -2,7 +2,6 @@ export { default as Countdown } from './countdown';
|
|
|
2
2
|
export { default as Filter } from './filter';
|
|
3
3
|
export { default as Lightbox } from './lightbox';
|
|
4
4
|
export { default as LightboxPanel } from './lightbox-panel';
|
|
5
|
-
export { default as Marquee } from './marquee';
|
|
6
5
|
export { default as Notification } from './notification';
|
|
7
6
|
export { default as Parallax } from './parallax';
|
|
8
7
|
export { default as Slider } from './slider';
|
|
@@ -5,17 +5,36 @@ import { scale3d } from './slideshow-animations';
|
|
|
5
5
|
export default {
|
|
6
6
|
...Animations,
|
|
7
7
|
fade: {
|
|
8
|
-
|
|
8
|
+
show() {
|
|
9
|
+
return [{ opacity: 0 }, { opacity: 1 }];
|
|
10
|
+
},
|
|
9
11
|
|
|
10
|
-
|
|
12
|
+
percent(current) {
|
|
13
|
+
return 1 - css(current, 'opacity');
|
|
14
|
+
},
|
|
15
|
+
|
|
16
|
+
translate(percent) {
|
|
17
|
+
return [{ opacity: 1 - percent }, { opacity: percent }];
|
|
18
|
+
},
|
|
11
19
|
},
|
|
12
20
|
|
|
13
21
|
scale: {
|
|
14
|
-
|
|
22
|
+
show() {
|
|
23
|
+
return [
|
|
24
|
+
{ opacity: 0, transform: scale3d(1 - 0.2) },
|
|
25
|
+
{ opacity: 1, transform: scale3d(1) },
|
|
26
|
+
];
|
|
27
|
+
},
|
|
28
|
+
|
|
29
|
+
percent(current) {
|
|
30
|
+
return 1 - css(current, 'opacity');
|
|
31
|
+
},
|
|
15
32
|
|
|
16
|
-
translate
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
33
|
+
translate(percent) {
|
|
34
|
+
return [
|
|
35
|
+
{ opacity: 1 - percent, transform: scale3d(1 - 0.2 * percent) },
|
|
36
|
+
{ opacity: percent, transform: scale3d(1 - 0.2 + 0.2 * percent) },
|
|
37
|
+
];
|
|
38
|
+
},
|
|
20
39
|
},
|
|
21
40
|
};
|
|
@@ -4,24 +4,55 @@ import Animations, { translate, translated } from '../../mixin/internal/slidesho
|
|
|
4
4
|
export default {
|
|
5
5
|
...Animations,
|
|
6
6
|
fade: {
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
show() {
|
|
8
|
+
return [{ opacity: 0, zIndex: 0 }, { zIndex: -1 }];
|
|
9
|
+
},
|
|
10
|
+
|
|
11
|
+
percent(current) {
|
|
12
|
+
return 1 - css(current, 'opacity');
|
|
13
|
+
},
|
|
14
|
+
|
|
15
|
+
translate(percent) {
|
|
16
|
+
return [{ opacity: 1 - percent, zIndex: 0 }, { zIndex: -1 }];
|
|
17
|
+
},
|
|
9
18
|
},
|
|
10
19
|
|
|
11
20
|
scale: {
|
|
12
|
-
|
|
21
|
+
show() {
|
|
22
|
+
return [{ opacity: 0, transform: scale3d(1 + 0.5), zIndex: 0 }, { zIndex: -1 }];
|
|
23
|
+
},
|
|
24
|
+
|
|
25
|
+
percent(current) {
|
|
26
|
+
return 1 - css(current, 'opacity');
|
|
27
|
+
},
|
|
13
28
|
|
|
14
|
-
translate
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
29
|
+
translate(percent) {
|
|
30
|
+
return [
|
|
31
|
+
{ opacity: 1 - percent, transform: scale3d(1 + 0.5 * percent), zIndex: 0 },
|
|
32
|
+
{ zIndex: -1 },
|
|
33
|
+
];
|
|
34
|
+
},
|
|
18
35
|
},
|
|
19
36
|
|
|
20
37
|
pull: {
|
|
21
|
-
|
|
38
|
+
show(dir) {
|
|
39
|
+
return dir < 0
|
|
40
|
+
? [
|
|
41
|
+
{ transform: translate(30), zIndex: -1 },
|
|
42
|
+
{ transform: translate(), zIndex: 0 },
|
|
43
|
+
]
|
|
44
|
+
: [
|
|
45
|
+
{ transform: translate(-100), zIndex: 0 },
|
|
46
|
+
{ transform: translate(), zIndex: -1 },
|
|
47
|
+
];
|
|
48
|
+
},
|
|
22
49
|
|
|
23
|
-
|
|
24
|
-
dir < 0
|
|
50
|
+
percent(current, next, dir) {
|
|
51
|
+
return dir < 0 ? 1 - translated(next) : translated(current);
|
|
52
|
+
},
|
|
53
|
+
|
|
54
|
+
translate(percent, dir) {
|
|
55
|
+
return dir < 0
|
|
25
56
|
? [
|
|
26
57
|
{ transform: translate(30 * percent), zIndex: -1 },
|
|
27
58
|
{ transform: translate(-100 * (1 - percent)), zIndex: 0 },
|
|
@@ -29,14 +60,29 @@ export default {
|
|
|
29
60
|
: [
|
|
30
61
|
{ transform: translate(-percent * 100), zIndex: 0 },
|
|
31
62
|
{ transform: translate(30 * (1 - percent)), zIndex: -1 },
|
|
32
|
-
]
|
|
63
|
+
];
|
|
64
|
+
},
|
|
33
65
|
},
|
|
34
66
|
|
|
35
67
|
push: {
|
|
36
|
-
|
|
68
|
+
show(dir) {
|
|
69
|
+
return dir < 0
|
|
70
|
+
? [
|
|
71
|
+
{ transform: translate(100), zIndex: 0 },
|
|
72
|
+
{ transform: translate(), zIndex: -1 },
|
|
73
|
+
]
|
|
74
|
+
: [
|
|
75
|
+
{ transform: translate(-30), zIndex: -1 },
|
|
76
|
+
{ transform: translate(), zIndex: 0 },
|
|
77
|
+
];
|
|
78
|
+
},
|
|
79
|
+
|
|
80
|
+
percent(current, next, dir) {
|
|
81
|
+
return dir > 0 ? 1 - translated(next) : translated(current);
|
|
82
|
+
},
|
|
37
83
|
|
|
38
|
-
translate
|
|
39
|
-
dir < 0
|
|
84
|
+
translate(percent, dir) {
|
|
85
|
+
return dir < 0
|
|
40
86
|
? [
|
|
41
87
|
{ transform: translate(percent * 100), zIndex: 0 },
|
|
42
88
|
{ transform: translate(-30 * (1 - percent)), zIndex: -1 },
|
|
@@ -44,7 +90,8 @@ export default {
|
|
|
44
90
|
: [
|
|
45
91
|
{ transform: translate(-30 * percent), zIndex: -1 },
|
|
46
92
|
{ transform: translate(100 * (1 - percent)), zIndex: 0 },
|
|
47
|
-
]
|
|
93
|
+
];
|
|
94
|
+
},
|
|
48
95
|
},
|
|
49
96
|
};
|
|
50
97
|
|
|
@@ -280,23 +280,103 @@ export default {
|
|
|
280
280
|
return;
|
|
281
281
|
}
|
|
282
282
|
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
283
|
+
let matches;
|
|
284
|
+
const iframeAttrs = {
|
|
285
|
+
allowfullscreen: '',
|
|
286
|
+
style: 'max-width: 100%; box-sizing: border-box;',
|
|
287
|
+
'uk-responsive': '',
|
|
288
|
+
'uk-video': Boolean(this.videoAutoplay),
|
|
289
|
+
};
|
|
290
|
+
|
|
291
|
+
// Image
|
|
292
|
+
if (type === 'image' || isImage(src)) {
|
|
293
|
+
const img = createEl('img');
|
|
294
|
+
|
|
295
|
+
wrapInPicture(img, item.sources);
|
|
296
|
+
attr(img, {
|
|
297
|
+
src,
|
|
298
|
+
...pick(item, ['alt', 'srcset', 'sizes']),
|
|
299
|
+
...attrs,
|
|
300
|
+
});
|
|
301
|
+
|
|
302
|
+
on(img, 'load', () => this.setItem(item, parent(img) || img));
|
|
303
|
+
on(img, 'error', () => this.setError(item));
|
|
304
|
+
|
|
305
|
+
// Video
|
|
306
|
+
} else if (type === 'video' || isVideo(src)) {
|
|
307
|
+
const inline = this.videoAutoplay === 'inline';
|
|
308
|
+
const video = createEl('video', {
|
|
309
|
+
src,
|
|
310
|
+
playsinline: '',
|
|
311
|
+
controls: inline ? null : '',
|
|
312
|
+
loop: inline ? '' : null,
|
|
313
|
+
muted: inline ? '' : null,
|
|
314
|
+
poster: this.videoAutoplay ? null : item.poster,
|
|
315
|
+
'uk-video': Boolean(this.videoAutoplay),
|
|
316
|
+
...attrs,
|
|
317
|
+
});
|
|
318
|
+
|
|
319
|
+
on(video, 'loadedmetadata', () => this.setItem(item, video));
|
|
320
|
+
on(video, 'error', () => this.setError(item));
|
|
321
|
+
|
|
322
|
+
// Iframe
|
|
323
|
+
} else if (type === 'iframe' || src.match(/\.(html|php)($|\?)/i)) {
|
|
324
|
+
this.setItem(
|
|
325
|
+
item,
|
|
326
|
+
createEl('iframe', {
|
|
327
|
+
src,
|
|
328
|
+
allowfullscreen: '',
|
|
329
|
+
class: 'uk-lightbox-iframe',
|
|
330
|
+
...attrs,
|
|
331
|
+
}),
|
|
332
|
+
);
|
|
333
|
+
|
|
334
|
+
// YouTube
|
|
335
|
+
} else if (
|
|
336
|
+
(matches = src.match(
|
|
337
|
+
/\/\/(?:.*?youtube(-nocookie)?\..*?(?:[?&]v=|\/shorts\/)|youtu\.be\/)([\w-]{11})[&?]?(.*)?/,
|
|
338
|
+
))
|
|
339
|
+
) {
|
|
340
|
+
this.setItem(
|
|
341
|
+
item,
|
|
342
|
+
createEl('iframe', {
|
|
343
|
+
src: `https://www.youtube${matches[1] || ''}.com/embed/${matches[2]}${
|
|
344
|
+
matches[3] ? `?${matches[3]}` : ''
|
|
345
|
+
}`,
|
|
346
|
+
width: 1920,
|
|
347
|
+
height: 1080,
|
|
348
|
+
...iframeAttrs,
|
|
349
|
+
...attrs,
|
|
350
|
+
}),
|
|
351
|
+
);
|
|
352
|
+
|
|
353
|
+
// Vimeo
|
|
354
|
+
} else if ((matches = src.match(/\/\/.*?vimeo\.[a-z]+\/(\d+)[&?]?(.*)?/))) {
|
|
355
|
+
try {
|
|
356
|
+
const { height, width } = await (
|
|
357
|
+
await fetch(
|
|
358
|
+
`https://vimeo.com/api/oembed.json?maxwidth=1920&url=${encodeURI(
|
|
359
|
+
src,
|
|
360
|
+
)}`,
|
|
361
|
+
{ credentials: 'omit' },
|
|
362
|
+
)
|
|
363
|
+
).json();
|
|
364
|
+
|
|
365
|
+
this.setItem(
|
|
366
|
+
item,
|
|
367
|
+
createEl('iframe', {
|
|
368
|
+
src: `https://player.vimeo.com/video/${matches[1]}${
|
|
369
|
+
matches[2] ? `?${matches[2]}` : ''
|
|
370
|
+
}`,
|
|
371
|
+
width,
|
|
372
|
+
height,
|
|
373
|
+
...iframeAttrs,
|
|
374
|
+
...attrs,
|
|
375
|
+
}),
|
|
376
|
+
);
|
|
377
|
+
} catch {
|
|
378
|
+
this.setError(item);
|
|
297
379
|
}
|
|
298
|
-
} catch {
|
|
299
|
-
this.setError(item);
|
|
300
380
|
}
|
|
301
381
|
},
|
|
302
382
|
},
|
|
@@ -372,111 +452,6 @@ function createEl(tag, attrs) {
|
|
|
372
452
|
return el;
|
|
373
453
|
}
|
|
374
454
|
|
|
375
|
-
async function loadImage({ src, type, attrs, item }) {
|
|
376
|
-
if (type !== 'image' && !isImage(src)) {
|
|
377
|
-
return;
|
|
378
|
-
}
|
|
379
|
-
|
|
380
|
-
const img = createEl('img');
|
|
381
|
-
|
|
382
|
-
wrapInPicture(img, item.sources);
|
|
383
|
-
attr(img, {
|
|
384
|
-
src,
|
|
385
|
-
...pick(item, ['alt', 'srcset', 'sizes']),
|
|
386
|
-
...attrs,
|
|
387
|
-
});
|
|
388
|
-
|
|
389
|
-
await img.decode();
|
|
390
|
-
|
|
391
|
-
return parent(img) || img;
|
|
392
|
-
}
|
|
393
|
-
|
|
394
|
-
function loadVideo({ src, type, attrs, item, cmp }) {
|
|
395
|
-
if (type !== 'video' && !isVideo(src)) {
|
|
396
|
-
return;
|
|
397
|
-
}
|
|
398
|
-
|
|
399
|
-
const inline = cmp.videoAutoplay === 'inline';
|
|
400
|
-
const video = createEl('video', {
|
|
401
|
-
src,
|
|
402
|
-
playsinline: '',
|
|
403
|
-
controls: inline ? null : '',
|
|
404
|
-
loop: inline ? '' : null,
|
|
405
|
-
muted: inline ? '' : null,
|
|
406
|
-
poster: cmp.videoAutoplay ? null : item.poster,
|
|
407
|
-
'uk-video': Boolean(cmp.videoAutoplay),
|
|
408
|
-
...attrs,
|
|
409
|
-
});
|
|
410
|
-
|
|
411
|
-
return new Promise((resolve, reject) => {
|
|
412
|
-
on(video, 'loadedmetadata', () => resolve(video));
|
|
413
|
-
on(video, 'error', reject);
|
|
414
|
-
});
|
|
415
|
-
}
|
|
416
|
-
|
|
417
|
-
function loadIframe({ src, type, attrs }) {
|
|
418
|
-
if (type !== 'iframe' && !/\.(html|php)($|\?)/i.test(src)) {
|
|
419
|
-
return;
|
|
420
|
-
}
|
|
421
|
-
|
|
422
|
-
return createEl('iframe', {
|
|
423
|
-
src,
|
|
424
|
-
allowfullscreen: '',
|
|
425
|
-
class: 'uk-lightbox-iframe',
|
|
426
|
-
...attrs,
|
|
427
|
-
});
|
|
428
|
-
}
|
|
429
|
-
|
|
430
|
-
function loadYouTube({ src, attrs, cmp }) {
|
|
431
|
-
const matches = src.match(
|
|
432
|
-
/\/\/(?:.*?youtube(-nocookie)?\..*?(?:[?&]v=|\/shorts\/)|youtu\.be\/)([\w-]{11})[&?]?(.*)?/,
|
|
433
|
-
);
|
|
434
|
-
|
|
435
|
-
if (!matches) {
|
|
436
|
-
return;
|
|
437
|
-
}
|
|
438
|
-
|
|
439
|
-
return createEl('iframe', {
|
|
440
|
-
src: `https://www.youtube${matches[1] || ''}.com/embed/${matches[2]}${matches[3] ? `?${matches[3]}` : ''}`,
|
|
441
|
-
width: 1920,
|
|
442
|
-
height: 1080,
|
|
443
|
-
...getIframeAttrs(cmp),
|
|
444
|
-
...attrs,
|
|
445
|
-
});
|
|
446
|
-
}
|
|
447
|
-
|
|
448
|
-
async function loadVimeo({ src, attrs, cmp }) {
|
|
449
|
-
const matches = src.match(/\/\/.*?vimeo\.[a-z]+\/(\d+)[&?]?(.*)?/);
|
|
450
|
-
|
|
451
|
-
if (!matches) {
|
|
452
|
-
return;
|
|
453
|
-
}
|
|
454
|
-
|
|
455
|
-
const { height, width } = await (
|
|
456
|
-
await fetch(
|
|
457
|
-
`https://vimeo.com/api/oembed.json?maxwidth=1920&url=${encodeURIComponent(src)}`,
|
|
458
|
-
{ credentials: 'omit' },
|
|
459
|
-
)
|
|
460
|
-
).json();
|
|
461
|
-
|
|
462
|
-
return createEl('iframe', {
|
|
463
|
-
src: `https://player.vimeo.com/video/${matches[1]}${matches[2] ? `?${matches[2]}` : ''}`,
|
|
464
|
-
width,
|
|
465
|
-
height,
|
|
466
|
-
...getIframeAttrs(cmp),
|
|
467
|
-
...attrs,
|
|
468
|
-
});
|
|
469
|
-
}
|
|
470
|
-
|
|
471
|
-
function getIframeAttrs(cmp) {
|
|
472
|
-
return {
|
|
473
|
-
allowfullscreen: '',
|
|
474
|
-
style: 'max-width: 100%; box-sizing: border-box;',
|
|
475
|
-
'uk-responsive': '',
|
|
476
|
-
'uk-video': Boolean(cmp.videoAutoplay),
|
|
477
|
-
};
|
|
478
|
-
}
|
|
479
|
-
|
|
480
455
|
function toThumbnavItem(item, videoAutoplay) {
|
|
481
456
|
const el =
|
|
482
457
|
item.poster || (item.thumb && (item.type === 'image' || isImage(item.thumb)))
|
|
@@ -98,11 +98,14 @@ function ensureThumb(toggles, items) {
|
|
|
98
98
|
continue;
|
|
99
99
|
}
|
|
100
100
|
|
|
101
|
-
const parent =
|
|
102
|
-
(
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
101
|
+
const parent = parents(toggle)
|
|
102
|
+
.reverse()
|
|
103
|
+
.concat(toggle)
|
|
104
|
+
.find(
|
|
105
|
+
(parent) =>
|
|
106
|
+
this.$el.contains(parent) &&
|
|
107
|
+
(parent === toggle || $$(this.toggle, parent).length === 1),
|
|
108
|
+
);
|
|
106
109
|
|
|
107
110
|
if (!parent) {
|
|
108
111
|
continue;
|
|
@@ -176,10 +176,8 @@ function getAlignment(el, target, [dir, align]) {
|
|
|
176
176
|
|
|
177
177
|
function parseProps(options) {
|
|
178
178
|
const { el, id, data } = options;
|
|
179
|
-
return {
|
|
180
|
-
delay: getData(el, 'delay'),
|
|
181
|
-
title: getData(el, 'title'),
|
|
179
|
+
return ['delay', 'title'].reduce((obj, key) => ({ [key]: getData(el, key), ...obj }), {
|
|
182
180
|
...parseOptions(getData(el, id), ['title']),
|
|
183
181
|
...data,
|
|
184
|
-
};
|
|
182
|
+
});
|
|
185
183
|
}
|