lwa 0.1.0 → 0.2.0
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/LICENSE +21 -0
- package/README.md +73 -0
- package/dist/lwa.d.ts +293 -0
- package/dist/lwa.es.js +1457 -0
- package/dist/lwa.js +1452 -0
- package/dist/lwa.umd.js +2 -0
- package/package.json +36 -4
package/dist/lwa.es.js
ADDED
|
@@ -0,0 +1,1457 @@
|
|
|
1
|
+
/* lwa 0.2.0 | MIT license | https://github.com/sutras/lwa */
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __pow = Math.pow;
|
|
4
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
5
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
6
|
+
function getAnimationFrameController() {
|
|
7
|
+
if (typeof requestAnimationFrame === "function") {
|
|
8
|
+
return {
|
|
9
|
+
request: requestAnimationFrame,
|
|
10
|
+
cancel: cancelAnimationFrame
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
const fps = 60;
|
|
14
|
+
const callbacks = [];
|
|
15
|
+
let id2 = 1;
|
|
16
|
+
let cursor = 0;
|
|
17
|
+
let timer;
|
|
18
|
+
function playAll() {
|
|
19
|
+
timer = void 0;
|
|
20
|
+
const cloned = callbacks.slice();
|
|
21
|
+
cursor += callbacks.length;
|
|
22
|
+
callbacks.length = 0;
|
|
23
|
+
cloned.forEach((callback) => {
|
|
24
|
+
if (callback !== 0) {
|
|
25
|
+
callback(Date.now());
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
return {
|
|
30
|
+
request(handler) {
|
|
31
|
+
callbacks.push(handler);
|
|
32
|
+
if (!timer) {
|
|
33
|
+
timer = setTimeout(playAll, 1e3 / fps);
|
|
34
|
+
}
|
|
35
|
+
return id2++;
|
|
36
|
+
},
|
|
37
|
+
cancel(id22) {
|
|
38
|
+
callbacks[id22 - cursor] = 0;
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
const { request, cancel } = getAnimationFrameController();
|
|
43
|
+
const ticks = /* @__PURE__ */ new Set();
|
|
44
|
+
let id = 0;
|
|
45
|
+
let paused = true;
|
|
46
|
+
function add(tick) {
|
|
47
|
+
ticks.add(tick);
|
|
48
|
+
run();
|
|
49
|
+
}
|
|
50
|
+
function remove(tick) {
|
|
51
|
+
ticks.delete(tick);
|
|
52
|
+
}
|
|
53
|
+
function step() {
|
|
54
|
+
if (ticks.size === 0) {
|
|
55
|
+
stop();
|
|
56
|
+
} else {
|
|
57
|
+
new Set(ticks).forEach((tick) => tick());
|
|
58
|
+
id = request(step);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
function run() {
|
|
62
|
+
if (paused) {
|
|
63
|
+
paused = false;
|
|
64
|
+
id = request(step);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
function stop() {
|
|
68
|
+
if (!paused) {
|
|
69
|
+
paused = true;
|
|
70
|
+
cancel(id);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
const ticker = {
|
|
74
|
+
add,
|
|
75
|
+
remove
|
|
76
|
+
};
|
|
77
|
+
const easings = {
|
|
78
|
+
linear: () => (p) => p
|
|
79
|
+
};
|
|
80
|
+
const easingStuff = {
|
|
81
|
+
Sine: () => (p) => 1 - Math.cos(p * Math.PI / 2),
|
|
82
|
+
Expo: () => (p) => p ? Math.pow(1024, p - 1) : 0,
|
|
83
|
+
Circ: () => (p) => 1 - Math.sqrt(1 - p * p),
|
|
84
|
+
Elastic: () => (p) => p === 0 || p === 1 ? p : -Math.pow(2, 10 * p - 10) * Math.sin((p * 10 - 10.75) * 2 * Math.PI / 3),
|
|
85
|
+
Back: () => (p) => {
|
|
86
|
+
const s = 1.70158;
|
|
87
|
+
return p * p * ((s + 1) * p - s);
|
|
88
|
+
},
|
|
89
|
+
Bounce: () => (p) => {
|
|
90
|
+
p = 1 - p;
|
|
91
|
+
const s = 7.5625;
|
|
92
|
+
const k = 2.75;
|
|
93
|
+
return 1 - (p < 1 / k ? s * p * p : p < 2 / k ? s * (p -= 1.5 / k) * p + 0.75 : p < 2.5 / k ? s * (p -= 2.25 / k) * p + 0.9375 : s * (p -= 2.625 / k) * p + 0.984375);
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
const powerNames = ["Quad", "Cubic", "Quart", "Quint"];
|
|
97
|
+
powerNames.forEach((name, i) => {
|
|
98
|
+
easingStuff[name] = () => (p) => Math.pow(p, i + 2);
|
|
99
|
+
});
|
|
100
|
+
Object.keys(easingStuff).forEach((name) => {
|
|
101
|
+
const easeIn = easingStuff[name];
|
|
102
|
+
easings["easeIn" + name] = easeIn;
|
|
103
|
+
easings["easeOut" + name] = (a, b) => (p) => 1 - easeIn(a, b)(1 - p);
|
|
104
|
+
easings["easeInOut" + name] = (a, b) => (p) => p < 0.5 ? easeIn(a, b)(p * 2) / 2 : 1 - easeIn(a, b)(2 - 2 * p) / 2;
|
|
105
|
+
});
|
|
106
|
+
const rNum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/;
|
|
107
|
+
const rUnit = /%|px|rpx|em|rem|vw|vh|deg|rad|turn|ex|ch|vmin|vmax|pc|pt|in|cm|mm/;
|
|
108
|
+
const rCssNumVal = new RegExp(
|
|
109
|
+
"^([+\\-*/%]=|)(" + rNum.source + ")(" + rUnit.source + "|)$",
|
|
110
|
+
"i"
|
|
111
|
+
);
|
|
112
|
+
const rNums = new RegExp(rNum.source, "g");
|
|
113
|
+
const rTimelinePos = new RegExp(
|
|
114
|
+
"^([<>]|)([+-]=|)(" + rNum.source + "|)(%|)$"
|
|
115
|
+
);
|
|
116
|
+
function isNumber(target) {
|
|
117
|
+
return typeof target === "number";
|
|
118
|
+
}
|
|
119
|
+
function isString(target) {
|
|
120
|
+
return typeof target === "string";
|
|
121
|
+
}
|
|
122
|
+
function isObject(target) {
|
|
123
|
+
return target !== null && typeof target === "object";
|
|
124
|
+
}
|
|
125
|
+
function isFunction(target) {
|
|
126
|
+
return typeof target === "function";
|
|
127
|
+
}
|
|
128
|
+
function isArrayLike(target) {
|
|
129
|
+
let l;
|
|
130
|
+
return isObject(target) && Number.isInteger(l = target.length) && l < __pow(2, 32);
|
|
131
|
+
}
|
|
132
|
+
function isArray(target) {
|
|
133
|
+
return Array.isArray(target);
|
|
134
|
+
}
|
|
135
|
+
function random(min, max) {
|
|
136
|
+
return Math.floor(Math.random() * (max - min + 1) + min);
|
|
137
|
+
}
|
|
138
|
+
function minmax(n, min, max) {
|
|
139
|
+
return n < min ? min : n > max ? max : n;
|
|
140
|
+
}
|
|
141
|
+
function toArray(target) {
|
|
142
|
+
return Array.isArray(target) ? target : [target];
|
|
143
|
+
}
|
|
144
|
+
const defaultEasing = "easeInOutQuad";
|
|
145
|
+
function getEasing(ease) {
|
|
146
|
+
return isFunction(ease) ? ease : () => (easings[ease] || easings.linear)(0, 0);
|
|
147
|
+
}
|
|
148
|
+
function createEmitter() {
|
|
149
|
+
const events = {};
|
|
150
|
+
function on(type, callback) {
|
|
151
|
+
let callbacks = events[type];
|
|
152
|
+
if (!callbacks) {
|
|
153
|
+
callbacks = events[type] = /* @__PURE__ */ new Set();
|
|
154
|
+
}
|
|
155
|
+
callbacks.add(callback);
|
|
156
|
+
}
|
|
157
|
+
function off(type, callback) {
|
|
158
|
+
if (callback) {
|
|
159
|
+
const callbacks = events[type];
|
|
160
|
+
if (callbacks) {
|
|
161
|
+
callbacks.delete(callback);
|
|
162
|
+
if (callbacks.size === 0) {
|
|
163
|
+
delete events[type];
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
} else {
|
|
167
|
+
delete events[type];
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
function once(type, callback) {
|
|
171
|
+
on(type, function fn(...args) {
|
|
172
|
+
callback(...args);
|
|
173
|
+
off(type, fn);
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
function emit(type, ...args) {
|
|
177
|
+
const callbacks = events[type];
|
|
178
|
+
if (callbacks) {
|
|
179
|
+
callbacks.forEach((callback) => {
|
|
180
|
+
callback(...args);
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
return {
|
|
185
|
+
on,
|
|
186
|
+
off,
|
|
187
|
+
once,
|
|
188
|
+
emit
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
const TERMINATE = Symbol();
|
|
192
|
+
class SpecialValue {
|
|
193
|
+
}
|
|
194
|
+
class WithFromValue extends SpecialValue {
|
|
195
|
+
constructor(from, to) {
|
|
196
|
+
super();
|
|
197
|
+
__publicField(this, "from");
|
|
198
|
+
__publicField(this, "to");
|
|
199
|
+
this.from = from;
|
|
200
|
+
this.to = to;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
class SVGValue extends SpecialValue {
|
|
204
|
+
constructor(el, prop, totalLength) {
|
|
205
|
+
super();
|
|
206
|
+
__publicField(this, "el");
|
|
207
|
+
__publicField(this, "prop");
|
|
208
|
+
__publicField(this, "totalLength");
|
|
209
|
+
this.el = el;
|
|
210
|
+
this.prop = prop;
|
|
211
|
+
this.totalLength = totalLength;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
const plugins = [];
|
|
215
|
+
function parseTarget(target) {
|
|
216
|
+
const result = [];
|
|
217
|
+
if (!isArray(target)) {
|
|
218
|
+
target = [target];
|
|
219
|
+
}
|
|
220
|
+
target.flat().forEach((item) => {
|
|
221
|
+
if (item) {
|
|
222
|
+
if (isString(item)) {
|
|
223
|
+
result.push(...Array.from(document.querySelectorAll(item)));
|
|
224
|
+
} else if (isArrayLike(item)) {
|
|
225
|
+
result.push(...Array.from(item));
|
|
226
|
+
} else if (isObject(item) || isFunction(item)) {
|
|
227
|
+
result.push(item);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
});
|
|
231
|
+
return Array.from(new Set(result));
|
|
232
|
+
}
|
|
233
|
+
function getFuncValue(value, animatedTarget) {
|
|
234
|
+
return isFunction(value) ? value(animatedTarget.target, animatedTarget.index, animatedTarget.total) : value;
|
|
235
|
+
}
|
|
236
|
+
function getTweenValue(position, tween) {
|
|
237
|
+
const { duration, delay, begin, easing, between } = tween;
|
|
238
|
+
function getBetweenValue(between2) {
|
|
239
|
+
const { from, to, round } = between2;
|
|
240
|
+
let value = position <= begin + delay ? from : position >= begin + delay + duration ? to : from + easing((position - begin - delay) / duration) * (to - from);
|
|
241
|
+
if (round) {
|
|
242
|
+
value = Math.round(value * round) / round;
|
|
243
|
+
}
|
|
244
|
+
return value;
|
|
245
|
+
}
|
|
246
|
+
return between.map((item) => getBetweenValue(item));
|
|
247
|
+
}
|
|
248
|
+
function getAnimatedTargets(targets) {
|
|
249
|
+
return targets.map((target, i) => ({
|
|
250
|
+
target,
|
|
251
|
+
index: i,
|
|
252
|
+
total: targets.length
|
|
253
|
+
}));
|
|
254
|
+
}
|
|
255
|
+
function structureValue(value, animatedTarget) {
|
|
256
|
+
value = getFuncValue(value, animatedTarget);
|
|
257
|
+
if (isArray(value)) {
|
|
258
|
+
return value.map((value2) => structureValue(value2, animatedTarget)[0]);
|
|
259
|
+
}
|
|
260
|
+
if (isNumber(value) || isString(value) || value instanceof SpecialValue) {
|
|
261
|
+
value = { value };
|
|
262
|
+
}
|
|
263
|
+
return [value];
|
|
264
|
+
}
|
|
265
|
+
function normalizeTweens(animatedTarget, objectValues, prop, options, beginTime, animationProperties, averageDuration) {
|
|
266
|
+
const l = objectValues.length;
|
|
267
|
+
let endTime = beginTime || 0;
|
|
268
|
+
let prevTween;
|
|
269
|
+
averageDuration = (averageDuration != null ? averageDuration : options.duration) / l;
|
|
270
|
+
function normalizeTween(objectValue, index2, prevTween2) {
|
|
271
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
272
|
+
const duration = getFuncValue(
|
|
273
|
+
(_a = objectValue.duration) != null ? _a : averageDuration,
|
|
274
|
+
animatedTarget
|
|
275
|
+
);
|
|
276
|
+
const delay = getFuncValue(
|
|
277
|
+
(_b = objectValue.delay) != null ? _b : index2 === 0 ? options.delay : 0,
|
|
278
|
+
animatedTarget
|
|
279
|
+
);
|
|
280
|
+
const endDelay = getFuncValue(
|
|
281
|
+
(_c = objectValue.endDelay) != null ? _c : index2 === l - 1 ? options.endDelay : 0,
|
|
282
|
+
animatedTarget
|
|
283
|
+
);
|
|
284
|
+
const easing = getFuncValue(
|
|
285
|
+
getEasing((_d = objectValue.easing) != null ? _d : options.easing),
|
|
286
|
+
animatedTarget
|
|
287
|
+
);
|
|
288
|
+
const round = getFuncValue(
|
|
289
|
+
(_e = objectValue.round) != null ? _e : options.round,
|
|
290
|
+
animatedTarget
|
|
291
|
+
);
|
|
292
|
+
const total = delay + duration + endDelay;
|
|
293
|
+
const begin = endTime;
|
|
294
|
+
const end = begin + total;
|
|
295
|
+
endTime += total;
|
|
296
|
+
if (!prevTween2) {
|
|
297
|
+
let values;
|
|
298
|
+
prevTween2 = (values = animationProperties[prop]) ? values[values.length - 1] : void 0;
|
|
299
|
+
}
|
|
300
|
+
const value = objectValue.value;
|
|
301
|
+
let to;
|
|
302
|
+
let from;
|
|
303
|
+
const withFromValue = value instanceof WithFromValue;
|
|
304
|
+
if (withFromValue) {
|
|
305
|
+
from = getFuncValue(value.from, animatedTarget);
|
|
306
|
+
to = getFuncValue(value.to, animatedTarget);
|
|
307
|
+
} else {
|
|
308
|
+
to = value;
|
|
309
|
+
}
|
|
310
|
+
if (!withFromValue && prevTween2) {
|
|
311
|
+
from = prevTween2.to;
|
|
312
|
+
}
|
|
313
|
+
let withoutFrom = false;
|
|
314
|
+
if (from === void 0) {
|
|
315
|
+
from = animatedTarget.target[prop];
|
|
316
|
+
withoutFrom = true;
|
|
317
|
+
}
|
|
318
|
+
let operator = "";
|
|
319
|
+
let unit = "";
|
|
320
|
+
if (isString(to)) {
|
|
321
|
+
const parts = rCssNumVal.exec(to);
|
|
322
|
+
if (parts) {
|
|
323
|
+
operator = parts[1];
|
|
324
|
+
to = parseFloat(parts[2]) || 0;
|
|
325
|
+
unit = parts[3];
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
const tween = {
|
|
329
|
+
animatedTarget,
|
|
330
|
+
prop,
|
|
331
|
+
duration,
|
|
332
|
+
delay,
|
|
333
|
+
endDelay,
|
|
334
|
+
begin,
|
|
335
|
+
end,
|
|
336
|
+
easing,
|
|
337
|
+
data: {},
|
|
338
|
+
from,
|
|
339
|
+
to,
|
|
340
|
+
withoutFrom,
|
|
341
|
+
round,
|
|
342
|
+
unit,
|
|
343
|
+
operator,
|
|
344
|
+
between: []
|
|
345
|
+
};
|
|
346
|
+
for (let i = 0, l2 = plugins.length; i < l2; i++) {
|
|
347
|
+
const retValue = (_g = (_f = plugins[i]).init) == null ? void 0 : _g.call(_f, tween, TERMINATE);
|
|
348
|
+
if (retValue === TERMINATE) {
|
|
349
|
+
break;
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
return tween;
|
|
353
|
+
}
|
|
354
|
+
const tweens = objectValues.map(
|
|
355
|
+
(objectValue, index2) => prevTween = normalizeTween(objectValue, index2, prevTween)
|
|
356
|
+
).sort((a, b) => a.begin - b.begin);
|
|
357
|
+
return {
|
|
358
|
+
endTime,
|
|
359
|
+
tweens
|
|
360
|
+
};
|
|
361
|
+
}
|
|
362
|
+
function getOneKeyframeTween(animatedTarget, properties, options, beginTime, animationProperties, averageDuration) {
|
|
363
|
+
let props = {};
|
|
364
|
+
for (let p in properties) {
|
|
365
|
+
const value = properties[p];
|
|
366
|
+
if (value !== null && value !== void 0) {
|
|
367
|
+
props[p] = normalizeTweens(
|
|
368
|
+
animatedTarget,
|
|
369
|
+
structureValue(value, animatedTarget),
|
|
370
|
+
p,
|
|
371
|
+
options,
|
|
372
|
+
beginTime,
|
|
373
|
+
animationProperties,
|
|
374
|
+
averageDuration
|
|
375
|
+
);
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
return props;
|
|
379
|
+
}
|
|
380
|
+
function getAnimationProperties(animatedTarget, keyframes, options) {
|
|
381
|
+
const animationProperties = {};
|
|
382
|
+
const averageDuration = getFuncValue(options.duration, animatedTarget) / keyframes.length;
|
|
383
|
+
let endTime = 0;
|
|
384
|
+
keyframes.forEach((properties) => {
|
|
385
|
+
const oneKeyframeTween = getOneKeyframeTween(
|
|
386
|
+
animatedTarget,
|
|
387
|
+
properties,
|
|
388
|
+
options,
|
|
389
|
+
endTime,
|
|
390
|
+
animationProperties,
|
|
391
|
+
averageDuration
|
|
392
|
+
);
|
|
393
|
+
for (let p in oneKeyframeTween) {
|
|
394
|
+
endTime = Math.max(endTime, oneKeyframeTween[p].endTime);
|
|
395
|
+
animationProperties[p] = (animationProperties[p] || []).concat(
|
|
396
|
+
oneKeyframeTween[p].tweens
|
|
397
|
+
);
|
|
398
|
+
}
|
|
399
|
+
});
|
|
400
|
+
return animationProperties;
|
|
401
|
+
}
|
|
402
|
+
function createAnimation$1(tweens) {
|
|
403
|
+
function seek(position) {
|
|
404
|
+
var _a, _b;
|
|
405
|
+
let currTween;
|
|
406
|
+
for (let i = 0, tween; tween = tweens[i++]; ) {
|
|
407
|
+
if (tween.begin <= position && tween.end >= position) {
|
|
408
|
+
currTween = tween;
|
|
409
|
+
break;
|
|
410
|
+
}
|
|
411
|
+
if (position > tween.end) {
|
|
412
|
+
if (!tweens[i + 1] || tweens[i + 1].begin > position) {
|
|
413
|
+
currTween = tween;
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
if (currTween) {
|
|
418
|
+
let value = getTweenValue(position, currTween);
|
|
419
|
+
let currentValue;
|
|
420
|
+
for (let i = plugins.length - 1; i >= 0; i--) {
|
|
421
|
+
currentValue = (_b = (_a = plugins[i]).update) == null ? void 0 : _b.call(_a, currTween, value, TERMINATE);
|
|
422
|
+
if (currentValue === TERMINATE) {
|
|
423
|
+
return;
|
|
424
|
+
}
|
|
425
|
+
if (currentValue !== void 0) {
|
|
426
|
+
value = currentValue;
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
function getDuration() {
|
|
432
|
+
return Math.max(...tweens.map((tween) => tween.end));
|
|
433
|
+
}
|
|
434
|
+
return {
|
|
435
|
+
seek,
|
|
436
|
+
getDuration,
|
|
437
|
+
tweens
|
|
438
|
+
};
|
|
439
|
+
}
|
|
440
|
+
function getAnimations(animationTargets, keyframes, options) {
|
|
441
|
+
return animationTargets.map((animatedTarget) => {
|
|
442
|
+
const animationProperties = getAnimationProperties(
|
|
443
|
+
animatedTarget,
|
|
444
|
+
keyframes,
|
|
445
|
+
options
|
|
446
|
+
);
|
|
447
|
+
return Object.keys(animationProperties).map(
|
|
448
|
+
(p) => createAnimation$1(animationProperties[p])
|
|
449
|
+
);
|
|
450
|
+
}).flat();
|
|
451
|
+
}
|
|
452
|
+
const defaultTweenOptions = {
|
|
453
|
+
duration: 500,
|
|
454
|
+
delay: 0,
|
|
455
|
+
endDelay: 0,
|
|
456
|
+
easing: defaultEasing,
|
|
457
|
+
round: 0
|
|
458
|
+
};
|
|
459
|
+
function createAnimations(target, keyframes, options) {
|
|
460
|
+
const tweenOptions = Object.assign({}, defaultTweenOptions, options);
|
|
461
|
+
return getAnimations(
|
|
462
|
+
getAnimatedTargets(parseTarget(target)),
|
|
463
|
+
isArray(keyframes) ? keyframes : [keyframes],
|
|
464
|
+
tweenOptions
|
|
465
|
+
);
|
|
466
|
+
}
|
|
467
|
+
function withFrom(from, to) {
|
|
468
|
+
return new WithFromValue(from, to);
|
|
469
|
+
}
|
|
470
|
+
function use(plugin) {
|
|
471
|
+
toArray(plugin).forEach((plugin2) => {
|
|
472
|
+
if (!plugins.includes(plugin2)) {
|
|
473
|
+
plugins.push(plugin2);
|
|
474
|
+
plugins.sort((a, b) => b.order - a.order);
|
|
475
|
+
}
|
|
476
|
+
});
|
|
477
|
+
}
|
|
478
|
+
const DIRECTION_ALTERNATE_REVERSE = "alternate-reverse";
|
|
479
|
+
const DIRECTION_REVERSE = "reverse";
|
|
480
|
+
const DIRECTION_ALTERNATE = "alternate";
|
|
481
|
+
function isReverse(direction) {
|
|
482
|
+
return direction === DIRECTION_REVERSE || direction === DIRECTION_ALTERNATE_REVERSE;
|
|
483
|
+
}
|
|
484
|
+
function isAlternate(direction) {
|
|
485
|
+
return direction === DIRECTION_ALTERNATE || direction === DIRECTION_ALTERNATE_REVERSE;
|
|
486
|
+
}
|
|
487
|
+
function isTimelineEventTarget(target) {
|
|
488
|
+
return isObject(target) && "getDuration" in target && "seek" in target;
|
|
489
|
+
}
|
|
490
|
+
const defaultTimelineOptions = {
|
|
491
|
+
externalTicker: false,
|
|
492
|
+
autoplay: true,
|
|
493
|
+
direction: "normal",
|
|
494
|
+
loop: 1
|
|
495
|
+
};
|
|
496
|
+
const callbackNames = [
|
|
497
|
+
"begin",
|
|
498
|
+
"loopBegin",
|
|
499
|
+
"complete",
|
|
500
|
+
"loopComplete",
|
|
501
|
+
"pause",
|
|
502
|
+
"play",
|
|
503
|
+
"update"
|
|
504
|
+
];
|
|
505
|
+
function createTimeline(options) {
|
|
506
|
+
const mergedOptions = Object.assign({}, defaultTimelineOptions, options);
|
|
507
|
+
const { externalTicker, autoplay, direction, loop } = mergedOptions;
|
|
508
|
+
let firstTime = false;
|
|
509
|
+
let paused2 = true;
|
|
510
|
+
let prevTickTime = 0;
|
|
511
|
+
let position = 0;
|
|
512
|
+
let currentLoop = loop;
|
|
513
|
+
let reverse = isReverse(direction);
|
|
514
|
+
let duration = 0;
|
|
515
|
+
let events = [];
|
|
516
|
+
const emitter = createEmitter();
|
|
517
|
+
callbackNames.forEach((name) => {
|
|
518
|
+
if (mergedOptions[name]) {
|
|
519
|
+
emitter.on(name, mergedOptions[name]);
|
|
520
|
+
}
|
|
521
|
+
});
|
|
522
|
+
function isCompleted() {
|
|
523
|
+
return currentLoop === 0 && position === duration;
|
|
524
|
+
}
|
|
525
|
+
function seek(nextPosition) {
|
|
526
|
+
let finished = false;
|
|
527
|
+
if (nextPosition >= duration) {
|
|
528
|
+
nextPosition = duration;
|
|
529
|
+
finished = true;
|
|
530
|
+
} else if (nextPosition < 0) {
|
|
531
|
+
nextPosition = 0;
|
|
532
|
+
}
|
|
533
|
+
position = nextPosition;
|
|
534
|
+
const seekPosition = reverse ? duration - position : position;
|
|
535
|
+
events.forEach(({ target, begin }) => {
|
|
536
|
+
target.seek(seekPosition - begin);
|
|
537
|
+
});
|
|
538
|
+
emitter.emit(
|
|
539
|
+
"update",
|
|
540
|
+
seekPosition,
|
|
541
|
+
duration === 0 ? 0 : position / duration
|
|
542
|
+
);
|
|
543
|
+
if (finished) {
|
|
544
|
+
emitter.emit("loopComplete");
|
|
545
|
+
if (--currentLoop < 0) {
|
|
546
|
+
currentLoop = 0;
|
|
547
|
+
}
|
|
548
|
+
if (currentLoop === 0) {
|
|
549
|
+
pause();
|
|
550
|
+
emitter.emit("complete");
|
|
551
|
+
} else {
|
|
552
|
+
if (!paused2) {
|
|
553
|
+
if (isAlternate(direction)) {
|
|
554
|
+
reverse = !reverse;
|
|
555
|
+
}
|
|
556
|
+
start();
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
}
|
|
561
|
+
function progress(p) {
|
|
562
|
+
seek(minmax(p, 0, 1) * duration);
|
|
563
|
+
}
|
|
564
|
+
function tick() {
|
|
565
|
+
if (!paused2) {
|
|
566
|
+
let currTime = Date.now();
|
|
567
|
+
seek(currTime - prevTickTime + position);
|
|
568
|
+
prevTickTime = currTime;
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
function start() {
|
|
572
|
+
if (!firstTime) {
|
|
573
|
+
firstTime = true;
|
|
574
|
+
emitter.emit("begin");
|
|
575
|
+
} else {
|
|
576
|
+
position = 0;
|
|
577
|
+
}
|
|
578
|
+
emitter.emit("loopBegin");
|
|
579
|
+
play();
|
|
580
|
+
}
|
|
581
|
+
function play() {
|
|
582
|
+
if (!firstTime) {
|
|
583
|
+
start();
|
|
584
|
+
} else {
|
|
585
|
+
if (paused2) {
|
|
586
|
+
paused2 = false;
|
|
587
|
+
if (isCompleted()) {
|
|
588
|
+
if (isAlternate(direction)) {
|
|
589
|
+
reverse = !reverse;
|
|
590
|
+
}
|
|
591
|
+
restart();
|
|
592
|
+
} else {
|
|
593
|
+
prevTickTime = Date.now();
|
|
594
|
+
if (!externalTicker) {
|
|
595
|
+
ticker.add(tick);
|
|
596
|
+
}
|
|
597
|
+
emitter.emit("play");
|
|
598
|
+
}
|
|
599
|
+
}
|
|
600
|
+
}
|
|
601
|
+
}
|
|
602
|
+
function pause() {
|
|
603
|
+
if (!paused2) {
|
|
604
|
+
paused2 = true;
|
|
605
|
+
if (!externalTicker) {
|
|
606
|
+
ticker.remove(tick);
|
|
607
|
+
}
|
|
608
|
+
emitter.emit("pause");
|
|
609
|
+
}
|
|
610
|
+
}
|
|
611
|
+
function restart() {
|
|
612
|
+
pause();
|
|
613
|
+
position = 0;
|
|
614
|
+
firstTime = false;
|
|
615
|
+
currentLoop = loop;
|
|
616
|
+
reverse = isReverse(direction);
|
|
617
|
+
play();
|
|
618
|
+
}
|
|
619
|
+
function finish() {
|
|
620
|
+
if (!isCompleted()) {
|
|
621
|
+
seek(duration);
|
|
622
|
+
}
|
|
623
|
+
}
|
|
624
|
+
function add2(target, positionOrKeyframes, optionsOrPosition, position2) {
|
|
625
|
+
if (isTimelineEventTarget(target)) {
|
|
626
|
+
position2 = positionOrKeyframes != null ? positionOrKeyframes : ">";
|
|
627
|
+
let begin = duration;
|
|
628
|
+
if (isNumber(position2)) {
|
|
629
|
+
begin = position2;
|
|
630
|
+
} else {
|
|
631
|
+
const { begin: prevBegin, end: prevEnd } = events[events.length - 1] || {
|
|
632
|
+
begin: 0,
|
|
633
|
+
end: 0
|
|
634
|
+
};
|
|
635
|
+
const prevDuration = prevEnd - prevBegin;
|
|
636
|
+
const [, bracket, relative, num, unit] = rTimelinePos.exec(
|
|
637
|
+
position2
|
|
638
|
+
) || [, ">", "", "", ""];
|
|
639
|
+
begin = bracket === "<" ? prevBegin : bracket === ">" ? prevEnd : begin;
|
|
640
|
+
let value = +num;
|
|
641
|
+
if (unit === "%") {
|
|
642
|
+
value = (bracket ? prevDuration : duration) / 100 * +num;
|
|
643
|
+
}
|
|
644
|
+
begin += relative === "-=" ? -value : value;
|
|
645
|
+
}
|
|
646
|
+
begin = Math.max(0, begin);
|
|
647
|
+
const end = begin + target.getDuration();
|
|
648
|
+
events.push({ target, position: position2, begin, end });
|
|
649
|
+
duration = Math.max(duration, end);
|
|
650
|
+
} else {
|
|
651
|
+
if (isNumber(optionsOrPosition) || isString(optionsOrPosition)) {
|
|
652
|
+
position2 = optionsOrPosition;
|
|
653
|
+
optionsOrPosition = void 0;
|
|
654
|
+
}
|
|
655
|
+
const animations = createAnimations(
|
|
656
|
+
target,
|
|
657
|
+
positionOrKeyframes,
|
|
658
|
+
optionsOrPosition
|
|
659
|
+
);
|
|
660
|
+
animations.forEach((animation, index2) => {
|
|
661
|
+
add2(animation, index2 === 0 ? position2 : "<");
|
|
662
|
+
});
|
|
663
|
+
}
|
|
664
|
+
return timeline;
|
|
665
|
+
}
|
|
666
|
+
function remove2(target) {
|
|
667
|
+
const index2 = events.findIndex((e) => e.target === target);
|
|
668
|
+
if (index2 !== -1) {
|
|
669
|
+
events.splice(index2, 1);
|
|
670
|
+
update();
|
|
671
|
+
}
|
|
672
|
+
}
|
|
673
|
+
function update() {
|
|
674
|
+
const oldEvents = [...events];
|
|
675
|
+
events = [];
|
|
676
|
+
duration = 0;
|
|
677
|
+
oldEvents.forEach((event) => {
|
|
678
|
+
add2(event.target, event.position);
|
|
679
|
+
});
|
|
680
|
+
}
|
|
681
|
+
function clear() {
|
|
682
|
+
pause();
|
|
683
|
+
duration = 0;
|
|
684
|
+
events = [];
|
|
685
|
+
}
|
|
686
|
+
if (autoplay && loop !== 0) {
|
|
687
|
+
start();
|
|
688
|
+
}
|
|
689
|
+
const timeline = {
|
|
690
|
+
play,
|
|
691
|
+
pause,
|
|
692
|
+
finish,
|
|
693
|
+
restart,
|
|
694
|
+
seek,
|
|
695
|
+
progress,
|
|
696
|
+
tick: () => {
|
|
697
|
+
if (externalTicker) {
|
|
698
|
+
tick();
|
|
699
|
+
}
|
|
700
|
+
},
|
|
701
|
+
getPosition() {
|
|
702
|
+
return position;
|
|
703
|
+
},
|
|
704
|
+
getDuration() {
|
|
705
|
+
return duration;
|
|
706
|
+
},
|
|
707
|
+
getProgress() {
|
|
708
|
+
return duration === 0 ? 0 : position / duration;
|
|
709
|
+
},
|
|
710
|
+
isReverse() {
|
|
711
|
+
return reverse;
|
|
712
|
+
},
|
|
713
|
+
add: add2,
|
|
714
|
+
remove: remove2,
|
|
715
|
+
clear,
|
|
716
|
+
events,
|
|
717
|
+
on: emitter.on,
|
|
718
|
+
off: emitter.off,
|
|
719
|
+
once: emitter.once
|
|
720
|
+
};
|
|
721
|
+
return timeline;
|
|
722
|
+
}
|
|
723
|
+
const staggerOptions = {
|
|
724
|
+
start: 0,
|
|
725
|
+
from: 0,
|
|
726
|
+
direction: "normal",
|
|
727
|
+
easing: "linear",
|
|
728
|
+
grid: null,
|
|
729
|
+
axis: null
|
|
730
|
+
};
|
|
731
|
+
function stagger(value, options) {
|
|
732
|
+
let { direction, grid, axis, from, start, easing } = Object.assign(
|
|
733
|
+
{},
|
|
734
|
+
staggerOptions,
|
|
735
|
+
options
|
|
736
|
+
);
|
|
737
|
+
easing = getEasing(easing);
|
|
738
|
+
let isRange = isArray(value);
|
|
739
|
+
const [min, max] = isRange ? value : [0, value];
|
|
740
|
+
let values = [];
|
|
741
|
+
let maxValue = 0;
|
|
742
|
+
start = start || min;
|
|
743
|
+
return (el, index2, total) => {
|
|
744
|
+
const fromCenter = from === "center";
|
|
745
|
+
const fromIndex = from === "first" ? 0 : fromCenter ? (total - 1) / 2 : from === "last" ? total - 1 : from;
|
|
746
|
+
if (!values.length) {
|
|
747
|
+
for (let i = 0; i < total; i++) {
|
|
748
|
+
if (!grid) {
|
|
749
|
+
values.push(Math.abs(fromIndex - i));
|
|
750
|
+
} else {
|
|
751
|
+
const [rows, columns] = grid;
|
|
752
|
+
const fromX = !fromCenter ? fromIndex % columns : (columns - 1) / 2;
|
|
753
|
+
const fromY = !fromCenter ? ~~(fromIndex / columns) : (rows - 1) / 2;
|
|
754
|
+
const toX = i % columns;
|
|
755
|
+
const toY = ~~(i / columns);
|
|
756
|
+
const distanceX = fromX - toX;
|
|
757
|
+
const distanceY = fromY - toY;
|
|
758
|
+
let value2 = Math.sqrt(distanceX * distanceX + distanceY * distanceY);
|
|
759
|
+
value2 = axis === "x" ? -distanceX : axis === "y" ? -distanceY : value2;
|
|
760
|
+
values.push(value2);
|
|
761
|
+
}
|
|
762
|
+
maxValue = Math.max(...values);
|
|
763
|
+
}
|
|
764
|
+
values = values.map(
|
|
765
|
+
(val) => easing(el, index2, total)(val / maxValue) * maxValue
|
|
766
|
+
);
|
|
767
|
+
if (direction === "reverse") {
|
|
768
|
+
values = values.map((val) => axis ? -val : Math.abs(maxValue - val));
|
|
769
|
+
}
|
|
770
|
+
}
|
|
771
|
+
let spacing = isRange ? (max - min) / maxValue : max;
|
|
772
|
+
if (spacing === Infinity) {
|
|
773
|
+
spacing = 0;
|
|
774
|
+
}
|
|
775
|
+
return start + spacing * (Math.round(values[index2] * 100) / 100);
|
|
776
|
+
};
|
|
777
|
+
}
|
|
778
|
+
function definePlugin(plugin) {
|
|
779
|
+
return plugin;
|
|
780
|
+
}
|
|
781
|
+
const updatePlugin = definePlugin({
|
|
782
|
+
order: 100,
|
|
783
|
+
update(tween, value, terminate) {
|
|
784
|
+
const { animatedTarget, prop, unit } = tween;
|
|
785
|
+
let val = isArray(value) ? value[0] : value;
|
|
786
|
+
if (unit) {
|
|
787
|
+
val += unit;
|
|
788
|
+
}
|
|
789
|
+
animatedTarget.target[prop] = val;
|
|
790
|
+
return terminate;
|
|
791
|
+
}
|
|
792
|
+
});
|
|
793
|
+
const initPlugin = definePlugin({
|
|
794
|
+
order: 0,
|
|
795
|
+
init(tween, terminate) {
|
|
796
|
+
if (tween.between.length === 0) {
|
|
797
|
+
const to = toArray(tween.to);
|
|
798
|
+
const from = toArray(tween.from);
|
|
799
|
+
tween.between = to.map((value, i) => ({
|
|
800
|
+
from: +from[i] || 0,
|
|
801
|
+
to: +value || 0,
|
|
802
|
+
round: tween.round
|
|
803
|
+
}));
|
|
804
|
+
return terminate;
|
|
805
|
+
}
|
|
806
|
+
}
|
|
807
|
+
});
|
|
808
|
+
const cssProps = {};
|
|
809
|
+
const prefixes = ["", "webkit", "Moz"];
|
|
810
|
+
const html = document.documentElement;
|
|
811
|
+
const transformValues = [
|
|
812
|
+
"translateX",
|
|
813
|
+
"translateY",
|
|
814
|
+
"translateZ",
|
|
815
|
+
"scale",
|
|
816
|
+
"scaleX",
|
|
817
|
+
"scaleY",
|
|
818
|
+
"scaleZ",
|
|
819
|
+
"rotate",
|
|
820
|
+
"rotateX",
|
|
821
|
+
"rotateY",
|
|
822
|
+
"rotateZ",
|
|
823
|
+
"skew",
|
|
824
|
+
"skewX",
|
|
825
|
+
"skewY",
|
|
826
|
+
"perspective"
|
|
827
|
+
];
|
|
828
|
+
const transformValuesMap = arrayToObject(transformValues);
|
|
829
|
+
const optionalUnitProperties = arrayToObject([
|
|
830
|
+
"columnCount",
|
|
831
|
+
"fillOpacity",
|
|
832
|
+
"fontSizeAdjust",
|
|
833
|
+
"fontWeight",
|
|
834
|
+
"lineHeight",
|
|
835
|
+
"opacity",
|
|
836
|
+
"orphans",
|
|
837
|
+
"widows",
|
|
838
|
+
"zIndex",
|
|
839
|
+
"zoom",
|
|
840
|
+
"scale",
|
|
841
|
+
"scaleX",
|
|
842
|
+
"scaleY",
|
|
843
|
+
"scaleZ",
|
|
844
|
+
"order",
|
|
845
|
+
"flexGrow",
|
|
846
|
+
"flexShrink",
|
|
847
|
+
"scrollLeft",
|
|
848
|
+
"scrollTop",
|
|
849
|
+
"strokeDashoffset",
|
|
850
|
+
"strokeDasharray"
|
|
851
|
+
]);
|
|
852
|
+
const domDotAttributes = arrayToObject(["value"]);
|
|
853
|
+
function arrayToObject(array) {
|
|
854
|
+
const map = {};
|
|
855
|
+
for (let i = 0, l = array.length; i < l; i++) {
|
|
856
|
+
map[array[i]] = true;
|
|
857
|
+
}
|
|
858
|
+
return map;
|
|
859
|
+
}
|
|
860
|
+
function isElement(target) {
|
|
861
|
+
return target instanceof HTMLElement || target instanceof SVGElement;
|
|
862
|
+
}
|
|
863
|
+
function pascalCase(target) {
|
|
864
|
+
return target.replace(/[-]([^-])/g, (_, g1) => g1.toUpperCase()).replace(/^./, (m) => m.toUpperCase());
|
|
865
|
+
}
|
|
866
|
+
function camalCase(target) {
|
|
867
|
+
return target.replace(/[-]([^-])/g, (_, g1) => g1.toUpperCase()).replace(/^./, (m) => m.toLowerCase());
|
|
868
|
+
}
|
|
869
|
+
function getPrefixedCssProp(name, host) {
|
|
870
|
+
if (cssProps[name]) {
|
|
871
|
+
return cssProps[name];
|
|
872
|
+
}
|
|
873
|
+
host = host || html.style;
|
|
874
|
+
for (let i = 0, l = prefixes.length; i < l; i++) {
|
|
875
|
+
const prefix = prefixes[i];
|
|
876
|
+
let fitName = prefix ? prefix + pascalCase(String(name)) : camalCase(String(name));
|
|
877
|
+
if (fitName in html.style) {
|
|
878
|
+
return cssProps[name] = fitName;
|
|
879
|
+
}
|
|
880
|
+
}
|
|
881
|
+
return "";
|
|
882
|
+
}
|
|
883
|
+
function combinedWithUnit(prop, value) {
|
|
884
|
+
return value + (!Number.isNaN(+value) && !optionalUnitProperties[prop] ? "px" : "");
|
|
885
|
+
}
|
|
886
|
+
function getStyle(elem, prop) {
|
|
887
|
+
return window.getComputedStyle(elem)[getPrefixedCssProp(prop)];
|
|
888
|
+
}
|
|
889
|
+
function setStyle(elem, prop, value) {
|
|
890
|
+
elem.style[getPrefixedCssProp(prop)] = combinedWithUnit(
|
|
891
|
+
String(prop),
|
|
892
|
+
value
|
|
893
|
+
);
|
|
894
|
+
}
|
|
895
|
+
function setStyleIgnoreUnit(elem, prop, value) {
|
|
896
|
+
elem.style[getPrefixedCssProp(prop)] = value;
|
|
897
|
+
}
|
|
898
|
+
function setStyleFromTransformMap(elem, map) {
|
|
899
|
+
let value = "";
|
|
900
|
+
map.forEach((val, key) => value += key + "(" + val + ") ");
|
|
901
|
+
setStyleIgnoreUnit(elem, "transform", value);
|
|
902
|
+
}
|
|
903
|
+
const cssHooks = {
|
|
904
|
+
_default: {
|
|
905
|
+
get(elem, prop) {
|
|
906
|
+
return getStyle(elem, prop);
|
|
907
|
+
},
|
|
908
|
+
set(elem, prop, value) {
|
|
909
|
+
setStyle(elem, prop, value);
|
|
910
|
+
}
|
|
911
|
+
}
|
|
912
|
+
};
|
|
913
|
+
["scrollTop", "scrollLeft"].forEach((item) => {
|
|
914
|
+
cssHooks[item] = {
|
|
915
|
+
get(elem, prop) {
|
|
916
|
+
return elem[prop];
|
|
917
|
+
},
|
|
918
|
+
set(elem, prop, value) {
|
|
919
|
+
elem[prop] = value;
|
|
920
|
+
}
|
|
921
|
+
};
|
|
922
|
+
});
|
|
923
|
+
transformValues.forEach((item) => {
|
|
924
|
+
cssHooks[item] = {
|
|
925
|
+
get(elem, prop) {
|
|
926
|
+
return getTransformValuesMap(elem).get(prop) || "";
|
|
927
|
+
},
|
|
928
|
+
set(elem, prop, value) {
|
|
929
|
+
const transformValuesMap2 = getTransformValuesMap(elem);
|
|
930
|
+
transformValuesMap2.set(prop, combinedWithUnit(prop, value));
|
|
931
|
+
sortTransformValues(transformValuesMap2);
|
|
932
|
+
setStyleFromTransformMap(elem, transformValuesMap2);
|
|
933
|
+
}
|
|
934
|
+
};
|
|
935
|
+
});
|
|
936
|
+
function css(elem, prop, value) {
|
|
937
|
+
if (isObject(prop)) {
|
|
938
|
+
for (let i in prop) {
|
|
939
|
+
css(
|
|
940
|
+
elem,
|
|
941
|
+
i,
|
|
942
|
+
prop[i]
|
|
943
|
+
);
|
|
944
|
+
}
|
|
945
|
+
} else if (value === void 0) {
|
|
946
|
+
return (cssHooks[prop] && cssHooks[prop].get || cssHooks._default.get)(
|
|
947
|
+
elem,
|
|
948
|
+
prop
|
|
949
|
+
);
|
|
950
|
+
} else {
|
|
951
|
+
(cssHooks[prop] && cssHooks[prop].set || cssHooks._default.set)(
|
|
952
|
+
elem,
|
|
953
|
+
prop,
|
|
954
|
+
value
|
|
955
|
+
);
|
|
956
|
+
}
|
|
957
|
+
}
|
|
958
|
+
function getDefaultUnit(prop) {
|
|
959
|
+
return /rotate|skew/.test(prop) ? "deg" : optionalUnitProperties[prop] ? "" : "px";
|
|
960
|
+
}
|
|
961
|
+
function getTransformValuesMap(target) {
|
|
962
|
+
const value = target.style.getPropertyValue(getPrefixedCssProp("transform"));
|
|
963
|
+
const reg = /(\w+)\(([^)]+)\)/g;
|
|
964
|
+
let m;
|
|
965
|
+
const pairs = [];
|
|
966
|
+
while (m = reg.exec(value)) {
|
|
967
|
+
pairs.push([m[1], m[2]]);
|
|
968
|
+
}
|
|
969
|
+
pairs.sort((a, b) => {
|
|
970
|
+
return transformValues.indexOf(a[0]) - transformValues.indexOf(b[0]);
|
|
971
|
+
});
|
|
972
|
+
return new Map(pairs);
|
|
973
|
+
}
|
|
974
|
+
function sortTransformValues(map) {
|
|
975
|
+
const arr = [...map].sort((a, b) => {
|
|
976
|
+
return transformValues.indexOf(a[0]) - transformValues.indexOf(b[0]);
|
|
977
|
+
});
|
|
978
|
+
map.clear();
|
|
979
|
+
arr.forEach(([key, value]) => {
|
|
980
|
+
map.set(key, value);
|
|
981
|
+
});
|
|
982
|
+
}
|
|
983
|
+
function parseUnit(value) {
|
|
984
|
+
var _a;
|
|
985
|
+
return ((_a = rCssNumVal.exec(value)) == null ? void 0 : _a[3]) || "";
|
|
986
|
+
}
|
|
987
|
+
function convertPxToUnit(target, value, unit) {
|
|
988
|
+
const baseline = 100;
|
|
989
|
+
if ([parseUnit(String(value)), "deg", "rad", "turn"].indexOf(unit) !== -1) {
|
|
990
|
+
return value;
|
|
991
|
+
}
|
|
992
|
+
const tempEl = document.createElement(target.tagName);
|
|
993
|
+
tempEl.style.position = "absolute";
|
|
994
|
+
tempEl.style.width = baseline + unit;
|
|
995
|
+
const parentEl = target.parentNode && target.parentNode !== document ? target.parentNode : document.body;
|
|
996
|
+
parentEl.appendChild(tempEl);
|
|
997
|
+
const factor = baseline / tempEl.offsetWidth;
|
|
998
|
+
parentEl.removeChild(tempEl);
|
|
999
|
+
return factor * parseFloat(String(value));
|
|
1000
|
+
}
|
|
1001
|
+
function getCSSOriginalValue(target, prop, unit) {
|
|
1002
|
+
let value = getStyle(target, prop);
|
|
1003
|
+
return unit && isString(value) ? convertPxToUnit(target, value, unit) : value;
|
|
1004
|
+
}
|
|
1005
|
+
function getTransformOriginalValue(target, prop, unit) {
|
|
1006
|
+
let value = getTransformValuesMap(target).get(prop) || (/scale/.test(prop) ? 1 : 0 + getDefaultUnit(prop));
|
|
1007
|
+
return unit ? convertPxToUnit(target, value, unit) : value;
|
|
1008
|
+
}
|
|
1009
|
+
function getAttribute(target, prop) {
|
|
1010
|
+
return target.getAttribute(prop);
|
|
1011
|
+
}
|
|
1012
|
+
function getOriginalValue(target, prop, unit, propType) {
|
|
1013
|
+
switch (propType) {
|
|
1014
|
+
case "trans":
|
|
1015
|
+
return getTransformOriginalValue(target, prop, unit);
|
|
1016
|
+
case "css":
|
|
1017
|
+
return getCSSOriginalValue(target, prop, unit);
|
|
1018
|
+
case "attr":
|
|
1019
|
+
return getAttribute(target, prop);
|
|
1020
|
+
}
|
|
1021
|
+
}
|
|
1022
|
+
function getPropType(target, prop) {
|
|
1023
|
+
return isTransform(prop) ? "trans" : getPrefixedCssProp(prop) ? "css" : !domDotAttributes[prop] && target.hasAttribute(prop) ? "attr" : "";
|
|
1024
|
+
}
|
|
1025
|
+
function isTransform(prop) {
|
|
1026
|
+
return !!transformValuesMap[prop];
|
|
1027
|
+
}
|
|
1028
|
+
const cssPlugin = definePlugin({
|
|
1029
|
+
order: 90,
|
|
1030
|
+
init(tween) {
|
|
1031
|
+
const { animatedTarget, prop, data } = tween;
|
|
1032
|
+
const target = animatedTarget.target;
|
|
1033
|
+
if (isElement(target)) {
|
|
1034
|
+
const propType = getPropType(target, prop);
|
|
1035
|
+
if (propType) {
|
|
1036
|
+
data.css = propType;
|
|
1037
|
+
if (propType === "trans") {
|
|
1038
|
+
if (!animatedTarget.transforms) {
|
|
1039
|
+
animatedTarget.transforms = {
|
|
1040
|
+
map: getTransformValuesMap(target)
|
|
1041
|
+
};
|
|
1042
|
+
}
|
|
1043
|
+
}
|
|
1044
|
+
if (tween.withoutFrom) {
|
|
1045
|
+
tween.from = getOriginalValue(target, prop, tween.unit, propType);
|
|
1046
|
+
const result = rCssNumVal.exec(tween.from);
|
|
1047
|
+
if (result) {
|
|
1048
|
+
tween.from = parseFloat(result[2]);
|
|
1049
|
+
}
|
|
1050
|
+
}
|
|
1051
|
+
if (!tween.unit) {
|
|
1052
|
+
tween.unit = getDefaultUnit(prop);
|
|
1053
|
+
}
|
|
1054
|
+
}
|
|
1055
|
+
}
|
|
1056
|
+
},
|
|
1057
|
+
update(tween, value, terminate) {
|
|
1058
|
+
const propType = tween.data.css;
|
|
1059
|
+
if (propType) {
|
|
1060
|
+
const { animatedTarget, prop, unit } = tween;
|
|
1061
|
+
const target = animatedTarget.target;
|
|
1062
|
+
let val = isArray(value) ? value[0] : value;
|
|
1063
|
+
if (propType !== "attr") {
|
|
1064
|
+
val += unit;
|
|
1065
|
+
}
|
|
1066
|
+
switch (propType) {
|
|
1067
|
+
case "trans":
|
|
1068
|
+
let map = animatedTarget.transforms.map;
|
|
1069
|
+
const has = map.has(prop);
|
|
1070
|
+
map.set(prop, val);
|
|
1071
|
+
if (!has) {
|
|
1072
|
+
sortTransformValues(map);
|
|
1073
|
+
}
|
|
1074
|
+
setStyleFromTransformMap(target, map);
|
|
1075
|
+
break;
|
|
1076
|
+
case "css":
|
|
1077
|
+
setStyleIgnoreUnit(target, prop, val);
|
|
1078
|
+
break;
|
|
1079
|
+
case "attr":
|
|
1080
|
+
target.setAttribute(prop, val);
|
|
1081
|
+
break;
|
|
1082
|
+
}
|
|
1083
|
+
return terminate;
|
|
1084
|
+
}
|
|
1085
|
+
}
|
|
1086
|
+
});
|
|
1087
|
+
const namedColors = {
|
|
1088
|
+
aliceblue: "f0f8ff",
|
|
1089
|
+
antiquewhite: "faebd7",
|
|
1090
|
+
aqua: "00ffff",
|
|
1091
|
+
aquamarine: "7fffd4",
|
|
1092
|
+
azure: "f0ffff",
|
|
1093
|
+
beige: "f5f5dc",
|
|
1094
|
+
bisque: "ffe4c4",
|
|
1095
|
+
black: "000000",
|
|
1096
|
+
blanchedalmond: "ffebcd",
|
|
1097
|
+
blue: "0000ff",
|
|
1098
|
+
blueviolet: "8a2be2",
|
|
1099
|
+
brown: "a52a2a",
|
|
1100
|
+
burlywood: "deb887",
|
|
1101
|
+
cadetblue: "5f9ea0",
|
|
1102
|
+
chartreuse: "7fff00",
|
|
1103
|
+
chocolate: "d2691e",
|
|
1104
|
+
coral: "ff7f50",
|
|
1105
|
+
cornflowerblue: "6495ed",
|
|
1106
|
+
cornsilk: "fff8dc",
|
|
1107
|
+
crimson: "dc143c",
|
|
1108
|
+
cyan: "00ffff",
|
|
1109
|
+
darkblue: "00008b",
|
|
1110
|
+
darkcyan: "008b8b",
|
|
1111
|
+
darkgoldenrod: "b8860b",
|
|
1112
|
+
darkgray: "a9a9a9",
|
|
1113
|
+
darkgreen: "006400",
|
|
1114
|
+
darkgrey: "a9a9a9",
|
|
1115
|
+
darkkhaki: "bdb76b",
|
|
1116
|
+
darkmagenta: "8b008b",
|
|
1117
|
+
darkolivegreen: "556b2f",
|
|
1118
|
+
darkorange: "ff8c00",
|
|
1119
|
+
darkorchid: "9932cc",
|
|
1120
|
+
darkred: "8b0000",
|
|
1121
|
+
darksalmon: "e9967a",
|
|
1122
|
+
darkseagreen: "8fbc8f",
|
|
1123
|
+
darkslateblue: "483d8b",
|
|
1124
|
+
darkslategray: "2f4f4f",
|
|
1125
|
+
darkslategrey: "2f4f4f",
|
|
1126
|
+
darkturquoise: "00ced1",
|
|
1127
|
+
darkviolet: "9400d3",
|
|
1128
|
+
deeppink: "ff1493",
|
|
1129
|
+
deepskyblue: "00bfff",
|
|
1130
|
+
dimgray: "696969",
|
|
1131
|
+
dimgrey: "696969",
|
|
1132
|
+
dodgerblue: "1e90ff",
|
|
1133
|
+
firebrick: "b22222",
|
|
1134
|
+
floralwhite: "fffaf0",
|
|
1135
|
+
forestgreen: "228b22",
|
|
1136
|
+
fuchsia: "ff00ff",
|
|
1137
|
+
gainsboro: "dcdcdc",
|
|
1138
|
+
ghostwhite: "f8f8ff",
|
|
1139
|
+
gold: "ffd700",
|
|
1140
|
+
goldenrod: "daa520",
|
|
1141
|
+
gray: "808080",
|
|
1142
|
+
green: "008000",
|
|
1143
|
+
greenyellow: "adff2f",
|
|
1144
|
+
grey: "808080",
|
|
1145
|
+
honeydew: "f0fff0",
|
|
1146
|
+
hotpink: "ff69b4",
|
|
1147
|
+
indianred: "cd5c5c",
|
|
1148
|
+
indigo: "4b0082",
|
|
1149
|
+
ivory: "fffff0",
|
|
1150
|
+
khaki: "f0e68c",
|
|
1151
|
+
lavender: "e6e6fa",
|
|
1152
|
+
lavenderblush: "fff0f5",
|
|
1153
|
+
lawngreen: "7cfc00",
|
|
1154
|
+
lemonchiffon: "fffacd",
|
|
1155
|
+
lightblue: "add8e6",
|
|
1156
|
+
lightcoral: "f08080",
|
|
1157
|
+
lightcyan: "e0ffff",
|
|
1158
|
+
lightgoldenrodyellow: "fafad2",
|
|
1159
|
+
lightgray: "d3d3d3",
|
|
1160
|
+
lightgreen: "90ee90",
|
|
1161
|
+
lightgrey: "d3d3d3",
|
|
1162
|
+
lightpink: "ffb6c1",
|
|
1163
|
+
lightsalmon: "ffa07a",
|
|
1164
|
+
lightseagreen: "20b2aa",
|
|
1165
|
+
lightskyblue: "87cefa",
|
|
1166
|
+
lightslategray: "778899",
|
|
1167
|
+
lightslategrey: "778899",
|
|
1168
|
+
lightsteelblue: "b0c4de",
|
|
1169
|
+
lightyellow: "ffffe0",
|
|
1170
|
+
lime: "00ff00",
|
|
1171
|
+
limegreen: "32cd32",
|
|
1172
|
+
linen: "faf0e6",
|
|
1173
|
+
magenta: "ff00ff",
|
|
1174
|
+
maroon: "800000",
|
|
1175
|
+
mediumaquamarine: "66cdaa",
|
|
1176
|
+
mediumblue: "0000cd",
|
|
1177
|
+
mediumorchid: "ba55d3",
|
|
1178
|
+
mediumpurple: "9370db",
|
|
1179
|
+
mediumseagreen: "3cb371",
|
|
1180
|
+
mediumslateblue: "7b68ee",
|
|
1181
|
+
mediumspringgreen: "00fa9a",
|
|
1182
|
+
mediumturquoise: "48d1cc",
|
|
1183
|
+
mediumvioletred: "c71585",
|
|
1184
|
+
midnightblue: "191970",
|
|
1185
|
+
mintcream: "f5fffa",
|
|
1186
|
+
mistyrose: "ffe4e1",
|
|
1187
|
+
moccasin: "ffe4b5",
|
|
1188
|
+
navajowhite: "ffdead",
|
|
1189
|
+
navy: "000080",
|
|
1190
|
+
oldlace: "fdf5e6",
|
|
1191
|
+
olive: "808000",
|
|
1192
|
+
olivedrab: "6b8e23",
|
|
1193
|
+
orange: "ffa500",
|
|
1194
|
+
orangered: "ff4500",
|
|
1195
|
+
orchid: "da70d6",
|
|
1196
|
+
palegoldenrod: "eee8aa",
|
|
1197
|
+
palegreen: "98fb98",
|
|
1198
|
+
paleturquoise: "afeeee",
|
|
1199
|
+
palevioletred: "db7093",
|
|
1200
|
+
papayawhip: "ffefd5",
|
|
1201
|
+
peachpuff: "ffdab9",
|
|
1202
|
+
peru: "cd853f",
|
|
1203
|
+
pink: "ffc0cb",
|
|
1204
|
+
plum: "dda0dd",
|
|
1205
|
+
powderblue: "b0e0e6",
|
|
1206
|
+
purple: "800080",
|
|
1207
|
+
rebeccapurple: "663399",
|
|
1208
|
+
red: "ff0000",
|
|
1209
|
+
rosybrown: "bc8f8f",
|
|
1210
|
+
royalblue: "4169e1",
|
|
1211
|
+
saddlebrown: "8b4513",
|
|
1212
|
+
salmon: "fa8072",
|
|
1213
|
+
sandybrown: "f4a460",
|
|
1214
|
+
seagreen: "2e8b57",
|
|
1215
|
+
seashell: "fff5ee",
|
|
1216
|
+
sienna: "a0522d",
|
|
1217
|
+
silver: "c0c0c0",
|
|
1218
|
+
skyblue: "87ceeb",
|
|
1219
|
+
slateblue: "6a5acd",
|
|
1220
|
+
slategray: "708090",
|
|
1221
|
+
slategrey: "708090",
|
|
1222
|
+
snow: "fffafa",
|
|
1223
|
+
springgreen: "00ff7f",
|
|
1224
|
+
steelblue: "4682b4",
|
|
1225
|
+
tan: "d2b48c",
|
|
1226
|
+
teal: "008080",
|
|
1227
|
+
thistle: "d8bfd8",
|
|
1228
|
+
tomato: "ff6347",
|
|
1229
|
+
turquoise: "40e0d0",
|
|
1230
|
+
violet: "ee82ee",
|
|
1231
|
+
wheat: "f5deb3",
|
|
1232
|
+
white: "ffffff",
|
|
1233
|
+
whitesmoke: "f5f5f5",
|
|
1234
|
+
yellow: "ffff00",
|
|
1235
|
+
yellowgreen: "9acd32"
|
|
1236
|
+
};
|
|
1237
|
+
function hexToRgb(hex) {
|
|
1238
|
+
let r = /[0-9a-f]{2}/gi, rgb = [], m;
|
|
1239
|
+
while (m = r.exec(hex)) {
|
|
1240
|
+
rgb.push(parseInt(m[0], 16));
|
|
1241
|
+
}
|
|
1242
|
+
return rgb;
|
|
1243
|
+
}
|
|
1244
|
+
function pickNumToArray(str) {
|
|
1245
|
+
let r = /[.\d]+/g, rgb = [], m;
|
|
1246
|
+
while (m = r.exec(str)) {
|
|
1247
|
+
rgb.push(+m[0]);
|
|
1248
|
+
}
|
|
1249
|
+
return rgb;
|
|
1250
|
+
}
|
|
1251
|
+
function hslToRgb(h, s, l) {
|
|
1252
|
+
let r, g, b;
|
|
1253
|
+
function hueToRgb(p, q, t) {
|
|
1254
|
+
if (t < 0) t += 1;
|
|
1255
|
+
if (t > 1) t -= 1;
|
|
1256
|
+
if (t < 1 / 6) return p + (q - p) * 6 * t;
|
|
1257
|
+
if (t < 1 / 2) return q;
|
|
1258
|
+
if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;
|
|
1259
|
+
return p;
|
|
1260
|
+
}
|
|
1261
|
+
if (s == 0) {
|
|
1262
|
+
r = g = b = l;
|
|
1263
|
+
} else {
|
|
1264
|
+
let q = l < 0.5 ? l * (1 + s) : l + s - l * s;
|
|
1265
|
+
let p = 2 * l - q;
|
|
1266
|
+
r = hueToRgb(p, q, h + 1 / 3);
|
|
1267
|
+
g = hueToRgb(p, q, h);
|
|
1268
|
+
b = hueToRgb(p, q, h - 1 / 3);
|
|
1269
|
+
}
|
|
1270
|
+
return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];
|
|
1271
|
+
}
|
|
1272
|
+
function colorToRgba(val) {
|
|
1273
|
+
let rgba;
|
|
1274
|
+
val = String(val);
|
|
1275
|
+
if (/^#?[0-9a-f]{3}$/i.test(val)) {
|
|
1276
|
+
rgba = hexToRgb(val.replace(/(.)(.)(.)$/, "$1$1$2$2$3$3"));
|
|
1277
|
+
} else if (/^#?([0-9a-f]{6})$/i.test(val)) {
|
|
1278
|
+
rgba = hexToRgb(RegExp.$1);
|
|
1279
|
+
} else if (/^rgb/i.test(val)) {
|
|
1280
|
+
rgba = pickNumToArray(val);
|
|
1281
|
+
} else if (/^hsl/i.test(val)) {
|
|
1282
|
+
const arr = pickNumToArray(val);
|
|
1283
|
+
arr[0] /= 360;
|
|
1284
|
+
arr[1] /= 100;
|
|
1285
|
+
arr[2] /= 100;
|
|
1286
|
+
rgba = hslToRgb(...arr).concat(arr[3]);
|
|
1287
|
+
} else if (namedColors.hasOwnProperty(val = val.toLowerCase())) {
|
|
1288
|
+
rgba = hexToRgb(namedColors[val]);
|
|
1289
|
+
} else {
|
|
1290
|
+
rgba = [0, 0, 0, 1];
|
|
1291
|
+
}
|
|
1292
|
+
if (!isNumber(rgba[3])) {
|
|
1293
|
+
rgba[3] = 1;
|
|
1294
|
+
}
|
|
1295
|
+
return rgba;
|
|
1296
|
+
}
|
|
1297
|
+
function isColor(value) {
|
|
1298
|
+
return namedColors.hasOwnProperty(String(value).toLowerCase()) || /^(?:rgb|hsl|#(?:[0-9a-f]{6}|[0-9a-f]{3})$)/i.test(value);
|
|
1299
|
+
}
|
|
1300
|
+
const colorPlugin = definePlugin({
|
|
1301
|
+
order: 80,
|
|
1302
|
+
init(tween, terminate) {
|
|
1303
|
+
if (isString(tween.to) && isColor(tween.to)) {
|
|
1304
|
+
const data = tween.data;
|
|
1305
|
+
const from = colorToRgba(String(tween.from));
|
|
1306
|
+
const to = colorToRgba(tween.to);
|
|
1307
|
+
tween.between = to.map((value, i) => ({
|
|
1308
|
+
from: from[i],
|
|
1309
|
+
to: value,
|
|
1310
|
+
round: i === 3 ? 0 : 1
|
|
1311
|
+
}));
|
|
1312
|
+
tween.unit = "";
|
|
1313
|
+
data.color = {};
|
|
1314
|
+
return terminate;
|
|
1315
|
+
}
|
|
1316
|
+
},
|
|
1317
|
+
update(tween, value) {
|
|
1318
|
+
if (tween.data.color) {
|
|
1319
|
+
return "rgba(" + value.join(",") + ")";
|
|
1320
|
+
}
|
|
1321
|
+
}
|
|
1322
|
+
});
|
|
1323
|
+
function getRelativeValue(from, to, operator) {
|
|
1324
|
+
switch (operator[0]) {
|
|
1325
|
+
case "+":
|
|
1326
|
+
return from + to;
|
|
1327
|
+
case "-":
|
|
1328
|
+
return from - to;
|
|
1329
|
+
case "*":
|
|
1330
|
+
return from * to;
|
|
1331
|
+
case "/":
|
|
1332
|
+
return from / to;
|
|
1333
|
+
case "%":
|
|
1334
|
+
return from % to;
|
|
1335
|
+
}
|
|
1336
|
+
return 0;
|
|
1337
|
+
}
|
|
1338
|
+
const relativePlugin = definePlugin({
|
|
1339
|
+
order: 70,
|
|
1340
|
+
init(tween) {
|
|
1341
|
+
if (tween.operator) {
|
|
1342
|
+
let from = tween.from;
|
|
1343
|
+
if (!isNumber(from)) {
|
|
1344
|
+
from = Number(from) || 0;
|
|
1345
|
+
}
|
|
1346
|
+
tween.to = getRelativeValue(
|
|
1347
|
+
from,
|
|
1348
|
+
tween.to,
|
|
1349
|
+
tween.operator
|
|
1350
|
+
);
|
|
1351
|
+
tween.from = from;
|
|
1352
|
+
}
|
|
1353
|
+
}
|
|
1354
|
+
});
|
|
1355
|
+
function getRadianByLine(p1, p2) {
|
|
1356
|
+
return Math.atan2(p2.y - p1.y, p2.x - p1.x);
|
|
1357
|
+
}
|
|
1358
|
+
function getAngleByLine(p1, p2) {
|
|
1359
|
+
return getRadianByLine(p1, p2) / Math.PI * 180;
|
|
1360
|
+
}
|
|
1361
|
+
function geometry(elem, percent = 100) {
|
|
1362
|
+
elem = isString(elem) ? document.querySelector(elem) : elem;
|
|
1363
|
+
return (prop) => new SVGValue(elem, prop, elem.getTotalLength() * (percent / 100));
|
|
1364
|
+
}
|
|
1365
|
+
const setDashoffset = (elem) => {
|
|
1366
|
+
if (elem instanceof SVGGeometryElement) {
|
|
1367
|
+
let length = elem.getTotalLength();
|
|
1368
|
+
elem.setAttribute("stroke-dasharray", String(length));
|
|
1369
|
+
return length;
|
|
1370
|
+
}
|
|
1371
|
+
return 0;
|
|
1372
|
+
};
|
|
1373
|
+
const svgPlugin = definePlugin({
|
|
1374
|
+
order: 60,
|
|
1375
|
+
init(tween) {
|
|
1376
|
+
const { data, to } = tween;
|
|
1377
|
+
if (to instanceof SVGValue) {
|
|
1378
|
+
data.svg = to;
|
|
1379
|
+
tween.from = 0;
|
|
1380
|
+
tween.to = to.totalLength;
|
|
1381
|
+
tween.unit = "";
|
|
1382
|
+
}
|
|
1383
|
+
},
|
|
1384
|
+
update(tween, value) {
|
|
1385
|
+
const svgValue = tween.data.svg;
|
|
1386
|
+
if (svgValue) {
|
|
1387
|
+
let getPoint = function(offset) {
|
|
1388
|
+
return svgValue.el.getPointAtLength(val + offset);
|
|
1389
|
+
};
|
|
1390
|
+
const val = isArray(value) ? value[0] : value;
|
|
1391
|
+
const p0 = getPoint(-1);
|
|
1392
|
+
const p1 = getPoint(0);
|
|
1393
|
+
switch (svgValue.prop) {
|
|
1394
|
+
case "x":
|
|
1395
|
+
return p1.x + "px";
|
|
1396
|
+
case "y":
|
|
1397
|
+
return p1.y + "px";
|
|
1398
|
+
case "angle":
|
|
1399
|
+
return getAngleByLine(p0, p1) + "deg";
|
|
1400
|
+
}
|
|
1401
|
+
}
|
|
1402
|
+
}
|
|
1403
|
+
});
|
|
1404
|
+
const interpPlugin = definePlugin({
|
|
1405
|
+
order: 50,
|
|
1406
|
+
init(tween) {
|
|
1407
|
+
let to = tween.to;
|
|
1408
|
+
let toMatch;
|
|
1409
|
+
if (isString(to) && (toMatch = to.match(rNums))) {
|
|
1410
|
+
tween.data.interp = to.split(rNums);
|
|
1411
|
+
let from = tween.from;
|
|
1412
|
+
let fromMatch;
|
|
1413
|
+
if (isString(from) && (fromMatch = from.match(rNums))) {
|
|
1414
|
+
from = fromMatch;
|
|
1415
|
+
} else if (!isArray(from)) {
|
|
1416
|
+
from = [tween.from];
|
|
1417
|
+
}
|
|
1418
|
+
tween.from = from;
|
|
1419
|
+
tween.to = toMatch;
|
|
1420
|
+
}
|
|
1421
|
+
},
|
|
1422
|
+
update(tween, value) {
|
|
1423
|
+
const strings = tween.data.interp;
|
|
1424
|
+
if (strings) {
|
|
1425
|
+
return value.map((num, i) => strings[i] + num).join("");
|
|
1426
|
+
}
|
|
1427
|
+
}
|
|
1428
|
+
});
|
|
1429
|
+
use(updatePlugin);
|
|
1430
|
+
use(initPlugin);
|
|
1431
|
+
function createAnimation(target, keyframes, options) {
|
|
1432
|
+
return createTimeline(options).add(target, keyframes, options);
|
|
1433
|
+
}
|
|
1434
|
+
use([cssPlugin, colorPlugin, relativePlugin, svgPlugin, interpPlugin]);
|
|
1435
|
+
const index = Object.assign(
|
|
1436
|
+
(...args) => {
|
|
1437
|
+
return createAnimation(...args);
|
|
1438
|
+
},
|
|
1439
|
+
{
|
|
1440
|
+
createAnimation,
|
|
1441
|
+
createTimeline,
|
|
1442
|
+
ticker,
|
|
1443
|
+
stagger,
|
|
1444
|
+
easings,
|
|
1445
|
+
withFrom,
|
|
1446
|
+
random,
|
|
1447
|
+
use,
|
|
1448
|
+
css,
|
|
1449
|
+
getPrefixedCssProp,
|
|
1450
|
+
geometry,
|
|
1451
|
+
setDashoffset,
|
|
1452
|
+
timeline: createTimeline
|
|
1453
|
+
}
|
|
1454
|
+
);
|
|
1455
|
+
export {
|
|
1456
|
+
index as default
|
|
1457
|
+
};
|