uikit 3.11.2-dev.c2430c233 → 3.11.2-dev.c7ed3c19b
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/.eslintrc.json +4 -49
- package/.prettierignore +14 -0
- package/.prettierrc.json +13 -0
- package/.webstorm.js +3 -3
- package/CHANGELOG.md +5 -0
- package/build/.eslintrc.json +1 -3
- package/build/build.js +26 -28
- package/build/icons.js +7 -11
- package/build/less.js +48 -36
- package/build/package.json +2 -2
- package/build/prefix.js +21 -18
- package/build/publishDev.js +6 -8
- package/build/release.js +20 -17
- package/build/scope.js +21 -11
- package/build/scss.js +72 -39
- package/build/util.js +71 -62
- package/build/wrapper/icons.js +0 -2
- package/dist/css/uikit-core-rtl.css +1 -1
- package/dist/css/uikit-core-rtl.min.css +1 -1
- package/dist/css/uikit-core.css +1 -1
- package/dist/css/uikit-core.min.css +1 -1
- package/dist/css/uikit-rtl.css +1 -1
- package/dist/css/uikit-rtl.min.css +1 -1
- package/dist/css/uikit.css +1 -1
- package/dist/css/uikit.min.css +1 -1
- package/dist/js/components/countdown.js +88 -133
- package/dist/js/components/countdown.min.js +1 -1
- package/dist/js/components/filter.js +409 -438
- package/dist/js/components/filter.min.js +1 -1
- package/dist/js/components/lightbox-panel.js +1116 -1305
- package/dist/js/components/lightbox-panel.min.js +1 -1
- package/dist/js/components/lightbox.js +1164 -1383
- package/dist/js/components/lightbox.min.js +1 -1
- package/dist/js/components/notification.js +94 -114
- package/dist/js/components/notification.min.js +1 -1
- package/dist/js/components/parallax.js +294 -345
- package/dist/js/components/parallax.min.js +1 -1
- package/dist/js/components/slider-parallax.js +292 -344
- package/dist/js/components/slider-parallax.min.js +1 -1
- package/dist/js/components/slider.js +727 -850
- package/dist/js/components/slider.min.js +1 -1
- package/dist/js/components/slideshow-parallax.js +292 -344
- package/dist/js/components/slideshow-parallax.min.js +1 -1
- package/dist/js/components/slideshow.js +615 -799
- package/dist/js/components/slideshow.min.js +1 -1
- package/dist/js/components/sortable.js +588 -619
- package/dist/js/components/sortable.min.js +1 -1
- package/dist/js/components/tooltip.js +324 -356
- package/dist/js/components/tooltip.min.js +1 -1
- package/dist/js/components/upload.js +155 -167
- package/dist/js/components/upload.min.js +1 -1
- package/dist/js/uikit-core.js +5356 -6705
- package/dist/js/uikit-core.min.js +1 -1
- package/dist/js/uikit-icons.js +7 -9
- package/dist/js/uikit-icons.min.js +1 -1
- package/dist/js/uikit.js +8116 -9909
- package/dist/js/uikit.min.js +1 -1
- package/jsconfig.json +1 -1
- package/package.json +64 -60
- package/src/js/api/boot.js +25 -32
- package/src/js/api/component.js +23 -27
- package/src/js/api/global.js +6 -12
- package/src/js/api/hooks.js +13 -32
- package/src/js/api/instance.js +7 -15
- package/src/js/api/state.js +65 -82
- package/src/js/components/countdown.js +24 -50
- package/src/js/components/filter.js +71 -66
- package/src/js/components/index.js +13 -13
- package/src/js/components/internal/lightbox-animations.js +11 -23
- package/src/js/components/internal/slider-transitioner.js +66 -45
- package/src/js/components/internal/slideshow-animations.js +42 -61
- package/src/js/components/lightbox-panel.js +135 -109
- package/src/js/components/lightbox.js +18 -39
- package/src/js/components/notification.js +49 -43
- package/src/js/components/parallax.js +16 -30
- package/src/js/components/slider-parallax.js +13 -23
- package/src/js/components/slider.js +75 -64
- package/src/js/components/slideshow-parallax.js +1 -1
- package/src/js/components/slideshow.js +8 -13
- package/src/js/components/sortable.js +125 -106
- package/src/js/components/tooltip.js +41 -31
- package/src/js/components/upload.js +52 -63
- package/src/js/core/accordion.js +53 -48
- package/src/js/core/alert.js +10 -17
- package/src/js/core/core.js +74 -53
- package/src/js/core/cover.js +11 -15
- package/src/js/core/drop.js +106 -92
- package/src/js/core/form-custom.js +20 -25
- package/src/js/core/gif.js +3 -7
- package/src/js/core/grid.js +57 -58
- package/src/js/core/height-match.js +16 -29
- package/src/js/core/height-viewport.js +28 -35
- package/src/js/core/icon.js +38 -50
- package/src/js/core/img.js +59 -58
- package/src/js/core/index.js +39 -39
- package/src/js/core/leader.js +9 -18
- package/src/js/core/margin.js +21 -37
- package/src/js/core/modal.js +50 -36
- package/src/js/core/nav.js +2 -4
- package/src/js/core/navbar.js +112 -88
- package/src/js/core/offcanvas.js +49 -53
- package/src/js/core/overflow-auto.js +13 -17
- package/src/js/core/responsive.js +14 -12
- package/src/js/core/scroll.js +10 -20
- package/src/js/core/scrollspy-nav.js +34 -31
- package/src/js/core/scrollspy.js +37 -54
- package/src/js/core/sticky.js +130 -91
- package/src/js/core/svg.js +60 -79
- package/src/js/core/switcher.js +47 -46
- package/src/js/core/tab.js +7 -10
- package/src/js/core/toggle.js +64 -66
- package/src/js/core/video.js +11 -22
- package/src/js/mixin/animate.js +19 -20
- package/src/js/mixin/class.js +2 -4
- package/src/js/mixin/container.js +7 -11
- package/src/js/mixin/internal/animate-fade.js +73 -30
- package/src/js/mixin/internal/animate-slide.js +61 -41
- package/src/js/mixin/internal/slideshow-animations.js +7 -14
- package/src/js/mixin/internal/slideshow-transitioner.js +10 -17
- package/src/js/mixin/media.js +5 -10
- package/src/js/mixin/modal.js +89 -66
- package/src/js/mixin/parallax.js +53 -48
- package/src/js/mixin/position.js +26 -20
- package/src/js/mixin/slider-autoplay.js +12 -21
- package/src/js/mixin/slider-drag.js +64 -65
- package/src/js/mixin/slider-nav.js +26 -35
- package/src/js/mixin/slider-reactive.js +2 -8
- package/src/js/mixin/slider.js +51 -50
- package/src/js/mixin/slideshow.js +13 -19
- package/src/js/mixin/togglable.js +90 -63
- package/src/js/uikit-core.js +2 -4
- package/src/js/uikit.js +2 -4
- package/src/js/util/ajax.js +27 -43
- package/src/js/util/animation.js +82 -75
- package/src/js/util/attr.js +17 -21
- package/src/js/util/class.js +14 -52
- package/src/js/util/dimensions.js +56 -43
- package/src/js/util/dom.js +40 -73
- package/src/js/util/env.js +7 -12
- package/src/js/util/event.js +60 -59
- package/src/js/util/fastdom.js +1 -6
- package/src/js/util/filter.js +17 -34
- package/src/js/util/index.js +0 -1
- package/src/js/util/lang.js +79 -119
- package/src/js/util/mouse.js +19 -17
- package/src/js/util/options.js +44 -49
- package/src/js/util/player.js +40 -36
- package/src/js/util/position.js +54 -46
- package/src/js/util/selector.js +34 -49
- package/src/js/util/style.js +36 -46
- package/src/js/util/viewport.js +75 -64
- package/tests/js/index.js +114 -85
- package/src/js/mixin/flex-bug.js +0 -56
- package/src/js/util/promise.js +0 -191
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! UIkit 3.11.2-dev.
|
|
1
|
+
/*! UIkit 3.11.2-dev.c7ed3c19b | https://www.getuikit.com | (c) 2014 - 2022 YOOtheme | MIT License */
|
|
2
2
|
|
|
3
3
|
(function (global, factory) {
|
|
4
4
|
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('uikit-util')) :
|
|
@@ -7,494 +7,443 @@
|
|
|
7
7
|
})(this, (function (uikitUtil) { 'use strict';
|
|
8
8
|
|
|
9
9
|
var Media = {
|
|
10
|
+
props: {
|
|
11
|
+
media: Boolean },
|
|
10
12
|
|
|
11
|
-
props: {
|
|
12
|
-
media: Boolean
|
|
13
|
-
},
|
|
14
13
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
},
|
|
14
|
+
data: {
|
|
15
|
+
media: false },
|
|
18
16
|
|
|
19
|
-
computed: {
|
|
20
17
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
18
|
+
computed: {
|
|
19
|
+
matchMedia() {
|
|
20
|
+
const media = toMedia(this.media);
|
|
21
|
+
return !media || window.matchMedia(media).matches;
|
|
22
|
+
} } };
|
|
25
23
|
|
|
26
|
-
}
|
|
27
24
|
|
|
28
|
-
};
|
|
29
25
|
|
|
30
26
|
function toMedia(value) {
|
|
31
|
-
|
|
32
|
-
if (
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
return value;
|
|
38
|
-
}
|
|
27
|
+
if (uikitUtil.isString(value)) {
|
|
28
|
+
if (value[0] === '@') {
|
|
29
|
+
const name = "breakpoint-" + value.substr(1);
|
|
30
|
+
value = uikitUtil.toFloat(uikitUtil.getCssVar(name));
|
|
31
|
+
} else if (isNaN(value)) {
|
|
32
|
+
return value;
|
|
39
33
|
}
|
|
34
|
+
}
|
|
40
35
|
|
|
41
|
-
|
|
36
|
+
return value && !isNaN(value) ? "(min-width: " + value + "px)" : false;
|
|
42
37
|
}
|
|
43
38
|
|
|
44
|
-
uikitUtil.memoize(
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
39
|
+
uikitUtil.memoize(async (src) => {
|
|
40
|
+
if (src) {
|
|
41
|
+
if (uikitUtil.startsWith(src, 'data:')) {
|
|
42
|
+
return decodeURIComponent(src.split(',')[1]);
|
|
43
|
+
} else {
|
|
44
|
+
return (await fetch(src)).text();
|
|
45
|
+
}
|
|
46
|
+
} else {
|
|
47
|
+
return Promise.reject();
|
|
48
|
+
}
|
|
49
|
+
});
|
|
54
50
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
51
|
+
function getMaxPathLength(el) {
|
|
52
|
+
return Math.ceil(
|
|
53
|
+
Math.max(
|
|
54
|
+
0,
|
|
55
|
+
...uikitUtil.$$('[stroke]', el).map((stroke) => {
|
|
56
|
+
try {
|
|
57
|
+
return stroke.getTotalLength();
|
|
58
|
+
} catch (e) {
|
|
59
|
+
return 0;
|
|
60
|
+
}
|
|
61
|
+
})));
|
|
59
62
|
|
|
60
|
-
}
|
|
61
|
-
}); }
|
|
62
|
-
);
|
|
63
63
|
|
|
64
|
-
function getMaxPathLength(el) {
|
|
65
|
-
return Math.ceil(Math.max.apply(Math, [ 0 ].concat( uikitUtil.$$('[stroke]', el).map(function (stroke) {
|
|
66
|
-
try {
|
|
67
|
-
return stroke.getTotalLength();
|
|
68
|
-
} catch (e) {
|
|
69
|
-
return 0;
|
|
70
|
-
}
|
|
71
|
-
}) )));
|
|
72
64
|
}
|
|
73
65
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
66
|
+
const props = {
|
|
67
|
+
x: transformFn,
|
|
68
|
+
y: transformFn,
|
|
69
|
+
rotate: transformFn,
|
|
70
|
+
scale: transformFn,
|
|
71
|
+
color: colorFn,
|
|
72
|
+
backgroundColor: colorFn,
|
|
73
|
+
borderColor: colorFn,
|
|
74
|
+
blur: filterFn,
|
|
75
|
+
hue: filterFn,
|
|
76
|
+
fopacity: filterFn,
|
|
77
|
+
grayscale: filterFn,
|
|
78
|
+
invert: filterFn,
|
|
79
|
+
saturate: filterFn,
|
|
80
|
+
sepia: filterFn,
|
|
81
|
+
opacity: cssPropFn,
|
|
82
|
+
stroke: strokeFn,
|
|
83
|
+
bgx: backgroundFn,
|
|
84
|
+
bgy: backgroundFn };
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
const { keys } = Object;
|
|
96
88
|
|
|
97
89
|
var Parallax = {
|
|
90
|
+
mixins: [Media],
|
|
98
91
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
props: fillObject(keys(props), 'list'),
|
|
102
|
-
|
|
103
|
-
data: fillObject(keys(props), undefined),
|
|
92
|
+
props: fillObject(keys(props), 'list'),
|
|
104
93
|
|
|
105
|
-
|
|
94
|
+
data: fillObject(keys(props), undefined),
|
|
106
95
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
return result;
|
|
113
|
-
}, {});
|
|
96
|
+
computed: {
|
|
97
|
+
props(properties, $el) {
|
|
98
|
+
return keys(props).reduce((result, prop) => {
|
|
99
|
+
if (!uikitUtil.isUndefined(properties[prop])) {
|
|
100
|
+
result[prop] = props[prop](prop, $el, properties[prop].slice());
|
|
114
101
|
}
|
|
102
|
+
return result;
|
|
103
|
+
}, {});
|
|
104
|
+
} },
|
|
115
105
|
|
|
116
|
-
},
|
|
117
|
-
|
|
118
|
-
events: {
|
|
119
|
-
bgimageload: function() {
|
|
120
|
-
this.$emit();
|
|
121
|
-
}
|
|
122
|
-
},
|
|
123
106
|
|
|
124
|
-
|
|
107
|
+
events: {
|
|
108
|
+
bgimageload() {
|
|
109
|
+
this.$emit();
|
|
110
|
+
} },
|
|
125
111
|
|
|
126
|
-
reset: function() {
|
|
127
|
-
var this$1$1 = this;
|
|
128
112
|
|
|
129
|
-
|
|
130
|
-
|
|
113
|
+
methods: {
|
|
114
|
+
reset() {
|
|
115
|
+
uikitUtil.each(this.getCss(0), (_, prop) => uikitUtil.css(this.$el, prop, ''));
|
|
116
|
+
},
|
|
131
117
|
|
|
132
|
-
|
|
133
|
-
|
|
118
|
+
getCss(percent) {
|
|
119
|
+
return keys(this.props).reduce(
|
|
120
|
+
(css, prop) => {
|
|
121
|
+
this.props[prop](css, percent);
|
|
122
|
+
return css;
|
|
123
|
+
},
|
|
124
|
+
{ transform: '', filter: '' });
|
|
134
125
|
|
|
135
|
-
|
|
136
|
-
this$1$1.props[prop](css, percent);
|
|
137
|
-
return css;
|
|
138
|
-
}, {transform: '', filter: ''});
|
|
139
|
-
}
|
|
126
|
+
} } };
|
|
140
127
|
|
|
141
|
-
}
|
|
142
128
|
|
|
143
|
-
};
|
|
144
129
|
|
|
145
130
|
function transformFn(prop, el, steps) {
|
|
131
|
+
const unit = getUnit(steps) || { x: 'px', y: 'px', rotate: 'deg' }[prop] || '';
|
|
146
132
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
prop = "translate" + (uikitUtil.ucfirst(prop));
|
|
151
|
-
}
|
|
133
|
+
if (prop === 'x' || prop === 'y') {
|
|
134
|
+
prop = "translate" + uikitUtil.ucfirst(prop);
|
|
135
|
+
}
|
|
152
136
|
|
|
153
|
-
|
|
137
|
+
steps = steps.map(uikitUtil.toFloat);
|
|
154
138
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
139
|
+
if (steps.length === 1) {
|
|
140
|
+
steps.unshift(prop === 'scale' ? 1 : 0);
|
|
141
|
+
}
|
|
158
142
|
|
|
159
|
-
|
|
160
|
-
|
|
143
|
+
return (css, percent) => {
|
|
144
|
+
let value = getValue(steps, percent);
|
|
161
145
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
146
|
+
if (uikitUtil.startsWith(prop, 'translate')) {
|
|
147
|
+
value = uikitUtil.toFloat(value).toFixed(unit === 'px' ? 0 : 6);
|
|
148
|
+
}
|
|
165
149
|
|
|
166
|
-
|
|
167
|
-
|
|
150
|
+
css.transform += " " + prop + "(" + value + unit + ")";
|
|
151
|
+
};
|
|
168
152
|
}
|
|
169
153
|
|
|
170
154
|
function colorFn(prop, el, steps) {
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
}).join(',');
|
|
188
|
-
css[prop] = "rgba(" + value + ")";
|
|
189
|
-
};
|
|
155
|
+
if (steps.length === 1) {
|
|
156
|
+
steps.unshift(getCssValue(el, prop, ''));
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
steps = steps.map((step) => parseColor(el, step));
|
|
160
|
+
|
|
161
|
+
return (css, percent) => {
|
|
162
|
+
const [start, end, p] = getStep(steps, percent);
|
|
163
|
+
const value = start.
|
|
164
|
+
map((value, i) => {
|
|
165
|
+
value += p * (end[i] - value);
|
|
166
|
+
return i === 3 ? uikitUtil.toFloat(value) : parseInt(value, 10);
|
|
167
|
+
}).
|
|
168
|
+
join(',');
|
|
169
|
+
css[prop] = "rgba(" + value + ")";
|
|
170
|
+
};
|
|
190
171
|
}
|
|
191
172
|
|
|
192
173
|
function parseColor(el, color) {
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
174
|
+
return getCssValue(el, 'color', color).
|
|
175
|
+
split(/[(),]/g).
|
|
176
|
+
slice(1, -1).
|
|
177
|
+
concat(1).
|
|
178
|
+
slice(0, 4).
|
|
179
|
+
map(uikitUtil.toFloat);
|
|
199
180
|
}
|
|
200
181
|
|
|
201
182
|
function filterFn(prop, el, steps) {
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
};
|
|
183
|
+
if (steps.length === 1) {
|
|
184
|
+
steps.unshift(0);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
const unit = getUnit(steps) || { blur: 'px', hue: 'deg' }[prop] || '%';
|
|
188
|
+
prop = { fopacity: 'opacity', hue: 'hue-rotate' }[prop] || prop;
|
|
189
|
+
steps = steps.map(uikitUtil.toFloat);
|
|
190
|
+
|
|
191
|
+
return (css, percent) => {
|
|
192
|
+
const value = getValue(steps, percent);
|
|
193
|
+
css.filter += " " + prop + "(" + (value + unit) + ")";
|
|
194
|
+
};
|
|
215
195
|
}
|
|
216
196
|
|
|
217
197
|
function cssPropFn(prop, el, steps) {
|
|
198
|
+
if (steps.length === 1) {
|
|
199
|
+
steps.unshift(getCssValue(el, prop, ''));
|
|
200
|
+
}
|
|
218
201
|
|
|
219
|
-
|
|
220
|
-
steps.unshift(getCssValue(el, prop, ''));
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
steps = steps.map(uikitUtil.toFloat);
|
|
202
|
+
steps = steps.map(uikitUtil.toFloat);
|
|
224
203
|
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
204
|
+
return (css, percent) => {
|
|
205
|
+
css[prop] = getValue(steps, percent);
|
|
206
|
+
};
|
|
228
207
|
}
|
|
229
208
|
|
|
230
209
|
function strokeFn(prop, el, steps) {
|
|
210
|
+
if (steps.length === 1) {
|
|
211
|
+
steps.unshift(0);
|
|
212
|
+
}
|
|
231
213
|
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
}
|
|
214
|
+
const unit = getUnit(steps);
|
|
215
|
+
steps = steps.map(uikitUtil.toFloat);
|
|
235
216
|
|
|
236
|
-
|
|
237
|
-
|
|
217
|
+
if (!steps.some((step) => step)) {
|
|
218
|
+
return uikitUtil.noop;
|
|
219
|
+
}
|
|
238
220
|
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
}
|
|
221
|
+
const length = getMaxPathLength(el);
|
|
222
|
+
uikitUtil.css(el, 'strokeDasharray', length);
|
|
242
223
|
|
|
243
|
-
|
|
244
|
-
|
|
224
|
+
if (unit === '%') {
|
|
225
|
+
steps = steps.map((step) => step * length / 100);
|
|
226
|
+
}
|
|
245
227
|
|
|
246
|
-
|
|
247
|
-
steps = steps.map(function (step) { return step * length / 100; });
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
steps = steps.reverse();
|
|
228
|
+
steps = steps.reverse();
|
|
251
229
|
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
230
|
+
return (css, percent) => {
|
|
231
|
+
css.strokeDashoffset = getValue(steps, percent);
|
|
232
|
+
};
|
|
255
233
|
}
|
|
256
234
|
|
|
257
235
|
function backgroundFn(prop, el, steps) {
|
|
236
|
+
if (steps.length === 1) {
|
|
237
|
+
steps.unshift(0);
|
|
238
|
+
}
|
|
258
239
|
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
prop = prop.substr(-1);
|
|
264
|
-
var attr = prop === 'y' ? 'height' : 'width';
|
|
265
|
-
steps = steps.map(function (step) { return uikitUtil.toPx(step, attr, el); });
|
|
240
|
+
prop = prop.substr(-1);
|
|
241
|
+
const attr = prop === 'y' ? 'height' : 'width';
|
|
242
|
+
steps = steps.map((step) => uikitUtil.toPx(step, attr, el));
|
|
266
243
|
|
|
267
|
-
|
|
268
|
-
var bgPos = uikitUtil.css(el, 'backgroundPosition').split(' ')[prop === 'x' ? 0 : 1]; // IE 11 can't read background-position-[x|y]
|
|
244
|
+
const bgPos = getCssValue(el, "background-position-" + prop, '');
|
|
269
245
|
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
246
|
+
return getCssValue(el, 'backgroundSize', '') === 'cover' ?
|
|
247
|
+
backgroundCoverFn(prop, el, steps, bgPos, attr) :
|
|
248
|
+
setBackgroundPosFn(prop, steps, bgPos);
|
|
273
249
|
}
|
|
274
250
|
|
|
275
251
|
function backgroundCoverFn(prop, el, steps, bgPos, attr) {
|
|
252
|
+
const dimImage = getBackgroundImageDimensions(el);
|
|
276
253
|
|
|
277
|
-
|
|
254
|
+
if (!dimImage.width) {
|
|
255
|
+
return uikitUtil.noop;
|
|
256
|
+
}
|
|
278
257
|
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
var min = Math.min.apply(Math, steps);
|
|
284
|
-
var max = Math.max.apply(Math, steps);
|
|
285
|
-
var down = steps.indexOf(min) < steps.indexOf(max);
|
|
258
|
+
const min = Math.min(...steps);
|
|
259
|
+
const max = Math.max(...steps);
|
|
260
|
+
const down = steps.indexOf(min) < steps.indexOf(max);
|
|
286
261
|
|
|
287
|
-
|
|
288
|
-
|
|
262
|
+
const diff = max - min;
|
|
263
|
+
let pos = (down ? -diff : 0) - (down ? min : max);
|
|
289
264
|
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
};
|
|
265
|
+
const dimEl = {
|
|
266
|
+
width: el.offsetWidth,
|
|
267
|
+
height: el.offsetHeight };
|
|
294
268
|
|
|
295
|
-
var baseDim = uikitUtil.Dimensions.cover(dimImage, dimEl);
|
|
296
|
-
var span = baseDim[attr] - dimEl[attr];
|
|
297
269
|
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
} else if (span > diff) {
|
|
270
|
+
const baseDim = uikitUtil.Dimensions.cover(dimImage, dimEl);
|
|
271
|
+
const span = baseDim[attr] - dimEl[attr];
|
|
301
272
|
|
|
302
|
-
|
|
273
|
+
if (span < diff) {
|
|
274
|
+
dimEl[attr] = baseDim[attr] + diff - span;
|
|
275
|
+
} else if (span > diff) {
|
|
276
|
+
const posPercentage = dimEl[attr] / uikitUtil.toPx(bgPos, attr, el, true);
|
|
303
277
|
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
}
|
|
278
|
+
if (posPercentage) {
|
|
279
|
+
pos -= (span - diff) / posPercentage;
|
|
307
280
|
}
|
|
281
|
+
}
|
|
308
282
|
|
|
309
|
-
|
|
283
|
+
const dim = uikitUtil.Dimensions.cover(dimImage, dimEl);
|
|
310
284
|
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
285
|
+
const fn = setBackgroundPosFn(prop, steps, pos + "px");
|
|
286
|
+
return (css, percent) => {
|
|
287
|
+
fn(css, percent);
|
|
288
|
+
css.backgroundSize = dim.width + "px " + dim.height + "px";
|
|
289
|
+
css.backgroundRepeat = 'no-repeat';
|
|
290
|
+
};
|
|
317
291
|
}
|
|
318
292
|
|
|
319
293
|
function setBackgroundPosFn(prop, steps, pos) {
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
294
|
+
return function (css, percent) {
|
|
295
|
+
css["background-position-" + prop] = "calc(" + pos + " + " + getValue(steps, percent) + "px)";
|
|
296
|
+
};
|
|
323
297
|
}
|
|
324
298
|
|
|
325
|
-
|
|
299
|
+
const dimensions = {};
|
|
326
300
|
function getBackgroundImageDimensions(el) {
|
|
327
|
-
|
|
301
|
+
const src = uikitUtil.css(el, 'backgroundImage').replace(/^none|url\(["']?(.+?)["']?\)$/, '$1');
|
|
328
302
|
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
303
|
+
if (dimensions[src]) {
|
|
304
|
+
return dimensions[src];
|
|
305
|
+
}
|
|
332
306
|
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
307
|
+
const image = new Image();
|
|
308
|
+
if (src) {
|
|
309
|
+
image.src = src;
|
|
336
310
|
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
}
|
|
311
|
+
if (!image.naturalWidth) {
|
|
312
|
+
image.onload = () => {
|
|
313
|
+
dimensions[src] = toDimensions(image);
|
|
314
|
+
uikitUtil.trigger(el, 'bgimageload');
|
|
315
|
+
};
|
|
343
316
|
}
|
|
317
|
+
}
|
|
344
318
|
|
|
345
|
-
|
|
319
|
+
return dimensions[src] = toDimensions(image);
|
|
346
320
|
}
|
|
347
321
|
|
|
348
322
|
function toDimensions(image) {
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
323
|
+
return {
|
|
324
|
+
width: image.naturalWidth,
|
|
325
|
+
height: image.naturalHeight };
|
|
326
|
+
|
|
353
327
|
}
|
|
354
328
|
|
|
355
329
|
function getStep(steps, percent) {
|
|
356
|
-
|
|
357
|
-
|
|
330
|
+
const count = steps.length - 1;
|
|
331
|
+
const index = Math.min(Math.floor(count * percent), count - 1);
|
|
358
332
|
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
333
|
+
return steps.
|
|
334
|
+
slice(index, index + 2).
|
|
335
|
+
concat(percent === 1 ? 1 : percent % (1 / count) * count);
|
|
362
336
|
}
|
|
363
337
|
|
|
364
338
|
function getValue(steps, percent) {
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
var end = ref[1];
|
|
368
|
-
var p = ref[2];
|
|
369
|
-
return uikitUtil.isNumber(start)
|
|
370
|
-
? start + Math.abs(start - end) * p * (start < end ? 1 : -1)
|
|
371
|
-
: +end;
|
|
339
|
+
const [start, end, p] = getStep(steps, percent);
|
|
340
|
+
return uikitUtil.isNumber(start) ? start + Math.abs(start - end) * p * (start < end ? 1 : -1) : +end;
|
|
372
341
|
}
|
|
373
342
|
|
|
374
343
|
function getUnit(steps, defaultUnit) {
|
|
375
|
-
|
|
344
|
+
return (
|
|
345
|
+
steps.reduce(
|
|
346
|
+
(unit, step) => unit || uikitUtil.isString(step) && step.replace(/[\d-]/g, '').trim(),
|
|
347
|
+
'') ||
|
|
348
|
+
defaultUnit);
|
|
349
|
+
|
|
376
350
|
}
|
|
377
351
|
|
|
378
352
|
function getCssValue(el, prop, value) {
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
353
|
+
const prev = el.style[prop];
|
|
354
|
+
const val = uikitUtil.css(uikitUtil.css(el, prop, value), prop);
|
|
355
|
+
el.style[prop] = prev;
|
|
356
|
+
return val;
|
|
383
357
|
}
|
|
384
358
|
|
|
385
359
|
function fillObject(keys, value) {
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
360
|
+
return keys.reduce((data, prop) => {
|
|
361
|
+
data[prop] = value;
|
|
362
|
+
return data;
|
|
363
|
+
}, {});
|
|
390
364
|
}
|
|
391
365
|
|
|
392
366
|
var Component = {
|
|
367
|
+
mixins: [Parallax],
|
|
393
368
|
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
start: String,
|
|
401
|
-
end: String
|
|
402
|
-
},
|
|
403
|
-
|
|
404
|
-
data: {
|
|
405
|
-
target: false,
|
|
406
|
-
viewport: 1,
|
|
407
|
-
easing: 1,
|
|
408
|
-
start: 0,
|
|
409
|
-
end: 0
|
|
410
|
-
},
|
|
411
|
-
|
|
412
|
-
computed: {
|
|
369
|
+
props: {
|
|
370
|
+
target: String,
|
|
371
|
+
viewport: Number, // Deprecated
|
|
372
|
+
easing: Number,
|
|
373
|
+
start: String,
|
|
374
|
+
end: String },
|
|
413
375
|
|
|
414
|
-
target: function(ref, $el) {
|
|
415
|
-
var target = ref.target;
|
|
416
376
|
|
|
417
|
-
|
|
418
|
-
|
|
377
|
+
data: {
|
|
378
|
+
target: false,
|
|
379
|
+
viewport: 1,
|
|
380
|
+
easing: 1,
|
|
381
|
+
start: 0,
|
|
382
|
+
end: 0 },
|
|
419
383
|
|
|
420
|
-
start: function(ref) {
|
|
421
|
-
var start = ref.start;
|
|
422
|
-
|
|
423
|
-
return uikitUtil.toPx(start, 'height', this.target, true);
|
|
424
|
-
},
|
|
425
|
-
|
|
426
|
-
end: function(ref) {
|
|
427
|
-
var end = ref.end;
|
|
428
|
-
var viewport = ref.viewport;
|
|
429
|
-
|
|
430
|
-
return uikitUtil.toPx(
|
|
431
|
-
end || (viewport = (1 - viewport) * 100) && (viewport + "vh+" + viewport + "%"),
|
|
432
|
-
'height',
|
|
433
|
-
this.target,
|
|
434
|
-
true
|
|
435
|
-
);
|
|
436
|
-
}
|
|
437
384
|
|
|
385
|
+
computed: {
|
|
386
|
+
target(_ref, $el) {let { target } = _ref;
|
|
387
|
+
return getOffsetElement(target && uikitUtil.query(target, $el) || $el);
|
|
438
388
|
},
|
|
439
389
|
|
|
440
|
-
|
|
390
|
+
start(_ref2) {let { start } = _ref2;
|
|
391
|
+
return uikitUtil.toPx(start, 'height', this.target, true);
|
|
392
|
+
},
|
|
441
393
|
|
|
442
|
-
|
|
443
|
-
|
|
394
|
+
end(_ref3) {let { end, viewport } = _ref3;
|
|
395
|
+
return uikitUtil.toPx(
|
|
396
|
+
end || (viewport = (1 - viewport) * 100) && viewport + "vh+" + viewport + "%",
|
|
397
|
+
'height',
|
|
398
|
+
this.target,
|
|
399
|
+
true);
|
|
444
400
|
|
|
401
|
+
} },
|
|
445
402
|
|
|
446
|
-
if (!types.has('scroll')) {
|
|
447
|
-
percent = false;
|
|
448
|
-
}
|
|
449
403
|
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
404
|
+
update: {
|
|
405
|
+
read(_ref4, types) {let { percent } = _ref4;
|
|
406
|
+
if (!types.has('scroll')) {
|
|
407
|
+
percent = false;
|
|
408
|
+
}
|
|
453
409
|
|
|
454
|
-
|
|
455
|
-
|
|
410
|
+
if (!this.matchMedia) {
|
|
411
|
+
return;
|
|
412
|
+
}
|
|
456
413
|
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
style: prev === percent ? false : this.getCss(percent)
|
|
460
|
-
};
|
|
461
|
-
},
|
|
414
|
+
const prev = percent;
|
|
415
|
+
percent = ease(uikitUtil.scrolledOver(this.target, this.start, this.end), this.easing);
|
|
462
416
|
|
|
463
|
-
|
|
464
|
-
|
|
417
|
+
return {
|
|
418
|
+
percent,
|
|
419
|
+
style: prev === percent ? false : this.getCss(percent) };
|
|
465
420
|
|
|
421
|
+
},
|
|
466
422
|
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
423
|
+
write(_ref5) {let { style } = _ref5;
|
|
424
|
+
if (!this.matchMedia) {
|
|
425
|
+
this.reset();
|
|
426
|
+
return;
|
|
427
|
+
}
|
|
471
428
|
|
|
472
|
-
|
|
429
|
+
style && uikitUtil.css(this.$el, style);
|
|
430
|
+
},
|
|
473
431
|
|
|
474
|
-
|
|
432
|
+
events: ['scroll', 'resize'] } };
|
|
475
433
|
|
|
476
|
-
events: ['scroll', 'resize']
|
|
477
|
-
}
|
|
478
434
|
|
|
479
|
-
};
|
|
480
435
|
|
|
481
436
|
function ease(percent, easing) {
|
|
482
|
-
|
|
483
|
-
? Math.pow(percent, easing + 1)
|
|
484
|
-
: 1 - Math.pow(1 - percent, -easing + 1);
|
|
437
|
+
return easing >= 0 ? Math.pow(percent, easing + 1) : 1 - Math.pow(1 - percent, -easing + 1);
|
|
485
438
|
}
|
|
486
439
|
|
|
487
440
|
// SVG elements do not inherit from HTMLElement
|
|
488
441
|
function getOffsetElement(el) {
|
|
489
|
-
|
|
490
|
-
? 'offsetTop' in el
|
|
491
|
-
? el
|
|
492
|
-
: getOffsetElement(uikitUtil.parent(el))
|
|
493
|
-
: document.documentElement;
|
|
442
|
+
return el ? 'offsetTop' in el ? el : getOffsetElement(uikitUtil.parent(el)) : document.documentElement;
|
|
494
443
|
}
|
|
495
444
|
|
|
496
445
|
if (typeof window !== 'undefined' && window.UIkit) {
|
|
497
|
-
|
|
446
|
+
window.UIkit.component('parallax', Component);
|
|
498
447
|
}
|
|
499
448
|
|
|
500
449
|
return Component;
|