UNPKG

jsdk-offical

Version:

JSDK is the most comprehensive TypeScript framework, like JDK.

1,339 lines 632 kB
//# sourceURL=../dist/jsdk.js //JSDK 2.7.0 MIT var JS; (function (JS) { let an; (function (an) { let AnimState; (function (AnimState) { AnimState[AnimState["STOPPED"] = 0] = "STOPPED"; AnimState[AnimState["RUNNING"] = 1] = "RUNNING"; AnimState[AnimState["PAUSED"] = 2] = "PAUSED"; })(AnimState = an.AnimState || (an.AnimState = {})); class AnimInit { constructor() { this.duration = 1000; this.delay = 0; this.endDelay = 0; this.autoreset = false; this.direction = 'forward'; this.loop = 1; } } an.AnimInit = AnimInit; class Anim { constructor(cfg) { this._timer = null; this._loop = 0; this._targets = []; this._bus = new EventBus(this); this._cfg = Jsons.union(this._cfg, cfg); this.targets(this._cfg.targets); this.direction(this._cfg.direction == 'backward' ? 'backward' : 'forward'); if (this._cfg.on) Jsons.forEach(this._cfg.on, (v, k) => { this.on(k, v); }); } config() { return Jsons.clone(this._cfg); } on(ev, fn) { this._bus.on(ev, fn); return this; } off(ev) { this._bus.off(ev); return this; } _tars(t) { if (Types.isArrayLike(t)) { if (t instanceof NodeList) return Arrays.newArray(t); let as = []; t.forEach((a) => { typeof a == 'string' ? as.add(Arrays.newArray($L(a))) : as.add(a); }); return as; } else if (typeof t == 'string') { return Arrays.newArray($L(t)); } else if (t instanceof HTMLElement) { return [t]; } return t instanceof Object ? [t] : []; } targets(t) { let els = this._tars(t); els.forEach(el => { this._targets.add(el); }); return this; } direction(d) { if (!d) return this._dir; this._dir = d; return this; } getState() { return this._timer ? this._timer.getState() : AnimState.STOPPED; } isRunning() { return this.getState() == AnimState.RUNNING; } getLooped() { return this._loop; } _reset() { let T = this; T._loop = 0; T._dir = T._cfg.direction == 'backward' ? 'backward' : 'forward'; } _resetTargets() { } _setupTimer() { let T = this, r = T._timer, c = T._cfg; r.on('starting', () => { T._reset(); T._bus.fire('starting'); }); r.on('pausing', () => { T._bus.fire('pausing'); }); r.on('paused', () => { T._bus.fire('paused'); }); r.on('updating', (e, t, d, l) => { T._bus.fire('updating', [t, d, l]); }); r.on('updated', (e, t, d, l) => { T._bus.fire('updated', [t, d, l]); }); r.on('finished', () => { T._bus.fire('finished'); if (c.autoreset) T._resetTargets(); }); } pause() { if (this._timer) this._timer.pause(); return this; } stop() { let T = this; if (T._timer) T._timer.stop(); T._reset(); return T; } replay() { this.stop(); this.play(); } } an.Anim = Anim; })(an = JS.an || (JS.an = {})); })(JS || (JS = {})); var AnimState = JS.an.AnimState; var AnimInit = JS.an.AnimInit; var Anim = JS.an.Anim; var JS; (function (JS) { let an; (function (an) { class AnimTimer extends Timer { constructor(tick, cfg) { super(tick, cfg); this._loopEnd = false; } _runTask(t) { let T = this, d = T._cfg.duration; T._bus.fire('updating', [t, d, T._count + 1]); T._task(t); T._bus.fire('updated', [t, d, T._count + 1]); } _loopTick(t) { if (!this.isRunning()) return; var T = this, c = T._cfg, p = c.loop; if (T._count < p) { var d = c.duration, delay = T._count == 0 ? 0 : (c.delay || 0), endDelay = c.endDelay || 0, et = t - T._ts; T._et = et; if (et >= delay && et < (d + delay)) { if (T._loopEnd) { T._loopEnd = false; T._bus.fire('looping', [T._count + 1]); } T._runTask(et - delay); } else if (et >= (d + delay)) { if (!T._loopEnd) { T._runTask(d); T._loopEnd = true; } if (et >= (d + delay + endDelay)) { ++T._count; T._ts = t; T._bus.fire('looped', [T._count]); } } } else { T._finish(); } } _cancelTimer() { if (this._timer) cancelAnimationFrame(this._timer); this._timer = null; } pause() { this._cancelTimer(); super.pause(); return this; } tick(ts) { let T = this; if (this._et == 0) { this._ts0 = ts; this._ts = ts; this._count = 0; this._pt = 0; T._bus.fire('starting'); this._loopEnd = true; T._state(TimerState.RUNNING); } if (T.getState() == TimerState.PAUSED) { let dt = ts - T._pt; T._ts0 += dt; T._ts += dt; T._pt = 0; T._state(TimerState.RUNNING); } if (this.isRunning()) this._loopTick(System.highResTime()); } _loop(t) { this.tick(t); if (this.isRunning()) this._timer = requestAnimationFrame(function (ts) { this._loop(ts); }.bind(this)); } start() { if (this.isRunning()) return; this._timer = requestAnimationFrame((t) => { this._loop(t); }); } } an.AnimTimer = AnimTimer; })(an = JS.an || (JS.an = {})); })(JS || (JS = {})); var AnimTimer = JS.an.AnimTimer; var JS; (function (JS) { let an; (function (an) { const PI = Math.PI, pow = Math.pow, sqrt = Math.sqrt, abs = Math.abs, sin = Math.sin, cos = Math.cos, asin = Math.asin; let minMax = (n, min, max) => { return Math.min(Math.max(n, min), max); }; class Easings { } Easings.LINEAR = function (t, b, c, d) { return c * t / d + b; }; Easings.QUAD_IN = function (t, b, c, d) { return c * (t /= d) * t + b; }; Easings.QUAD_OUT = function (t, b, c, d) { return -c * (t /= d) * (t - 2) + b; }; Easings.QUAD_IN_OUT = function (t, b, c, d) { if ((t /= d / 2) < 1) return c / 2 * t * t + b; return -c / 2 * ((--t) * (t - 2) - 1) + b; }; Easings.CUBIC_IN = function (t, b, c, d) { return c * (t /= d) * t * t + b; }; Easings.CUBIC_OUT = function (t, b, c, d) { return c * ((t = t / d - 1) * t * t + 1) + b; }; Easings.CUBIC_IN_OUT = function (t, b, c, d) { if ((t /= d / 2) < 1) return c / 2 * t * t * t + b; return c / 2 * ((t -= 2) * t * t + 2) + b; }; Easings.QUART_IN = function (t, b, c, d) { return c * (t /= d) * t * t * t + b; }; Easings.QUART_OUT = function (t, b, c, d) { return -c * ((t = t / d - 1) * t * t * t - 1) + b; }; Easings.QUART_IN_OUT = function (t, b, c, d) { if ((t /= d / 2) < 1) return c / 2 * t * t * t * t + b; return -c / 2 * ((t -= 2) * t * t * t - 2) + b; }; Easings.QUINT_IN = function (t, b, c, d) { return c * (t /= d) * t * t * t * t + b; }; Easings.QUINT_OUT = function (t, b, c, d) { return c * ((t = t / d - 1) * t * t * t * t + 1) + b; }; Easings.QUINT_IN_OUT = function (t, b, c, d) { if ((t /= d / 2) < 1) return c / 2 * t * t * t * t * t + b; return c / 2 * ((t -= 2) * t * t * t * t + 2) + b; }; Easings.SINE_IN = function (t, b, c, d) { return -c * cos(t / d * (PI / 2)) + c + b; }; Easings.SINE_OUT = function (t, b, c, d) { return c * sin(t / d * (PI / 2)) + b; }; Easings.SINE_IN_OUT = function (t, b, c, d) { return -c / 2 * (cos(PI * t / d) - 1) + b; }; Easings.EXPO_IN = function (t, b, c, d) { return (t == 0) ? b : c * pow(2, 10 * (t / d - 1)) + b; }; Easings.EXPO_OUT = function (t, b, c, d) { return (t == d) ? b + c : c * (-pow(2, -10 * t / d) + 1) + b; }; Easings.EXPO_IN_OUT = function (t, b, c, d) { if (t == 0) return b; if (t == d) return b + c; if ((t /= d / 2) < 1) return c / 2 * pow(2, 10 * (t - 1)) + b; return c / 2 * (-pow(2, -10 * --t) + 2) + b; }; Easings.CIRC_IN = function (t, b, c, d) { return -c * (sqrt(1 - (t /= d) * t) - 1) + b; }; Easings.CIRC_OUT = function (t, b, c, d) { return c * sqrt(1 - (t = t / d - 1) * t) + b; }; Easings.CIRC_IN_OUT = function (t, b, c, d) { if ((t /= d / 2) < 1) return -c / 2 * (sqrt(1 - t * t) - 1) + b; return c / 2 * (sqrt(1 - (t -= 2) * t) + 1) + b; }; Easings.ELASTIC_IN = function (t, b, c, d) { var s = 1.70158; var p = 0; var a = c; if (t == 0) return b; if ((t /= d) == 1) return b + c; if (!p) p = d * .3; if (a < abs(c)) { a = c; var s = p / 4; } else var s = p / (2 * PI) * asin(c / a); return -(a * pow(2, 10 * (t -= 1)) * sin((t * d - s) * (2 * PI) / p)) + b; }; Easings.ELASTIC_OUT = function (t, b, c, d) { var s = 1.70158; var p = 0; var a = c; if (t == 0) return b; if ((t /= d) == 1) return b + c; if (!p) p = d * .3; if (a < abs(c)) { a = c; var s = p / 4; } else var s = p / (2 * PI) * asin(c / a); return a * pow(2, -10 * t) * sin((t * d - s) * (2 * PI) / p) + c + b; }; Easings.ELASTIC_IN_OUT = function (t, b, c, d) { var s = 1.70158; var p = 0; var a = c; if (t == 0) return b; if ((t /= d / 2) == 2) return b + c; if (!p) p = d * (.3 * 1.5); if (a < abs(c)) { a = c; var s = p / 4; } else var s = p / (2 * PI) * asin(c / a); if (t < 1) return -.5 * (a * pow(2, 10 * (t -= 1)) * sin((t * d - s) * (2 * PI) / p)) + b; return a * pow(2, -10 * (t -= 1)) * sin((t * d - s) * (2 * PI) / p) * .5 + c + b; }; Easings.BACK_IN = function (t, b, c, d, s) { if (s == undefined) s = 1.70158; return c * (t /= d) * t * ((s + 1) * t - s) + b; }; Easings.BACK_OUT = function (t, b, c, d, s) { if (s == undefined) s = 1.70158; return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b; }; Easings.BACK_IN_OUT = function (t, b, c, d, s) { if (s == undefined) s = 1.70158; if ((t /= d / 2) < 1) return c / 2 * (t * t * (((s *= (1.525)) + 1) * t - s)) + b; return c / 2 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2) + b; }; Easings.BOUNCE_IN = function (t, b, c, d) { return c - Easings.BOUNCE_OUT(d - t, 0, c, d) + b; }; Easings.BOUNCE_OUT = function (t, b, c, d) { const n1 = 2.75, n2 = 7.5625; if ((t /= d) < (1 / n1)) { return c * (n2 * t * t) + b; } else if (t < (2 / n1)) { return c * (n2 * (t -= (1.5 / n1)) * t + .75) + b; } else if (t < (2.5 / 2.75)) { return c * (n2 * (t -= (2.25 / n1)) * t + .9375) + b; } else { return c * (n2 * (t -= (2.625 / n1)) * t + .984375) + b; } }; Easings.BOUNCE_IN_OUT = function (t, b, c, d) { if (t < d / 2) return Easings.BOUNCE_IN(t * 2, 0, c, d) * .5 + b; return Easings.BOUNCE_OUT(t * 2 - d, 0, c, d) * .5 + c * .5 + b; }; Easings.STEPS = function (t, b, c, d, steps) { steps = steps == void 0 ? 10 : (steps < 1 ? 1 : steps); let m = Math.ceil((minMax(t / d, 0.000001, 1)) * steps) * (1 / steps); return b + c * m; }; an.Easings = Easings; })(an = JS.an || (JS.an = {})); })(JS || (JS = {})); var Easings = JS.an.Easings; var JS; (function (JS) { let util; (function (util) { class Images { static parseFrames(frames) { let frs = [], items = frames.items, isA = util.Types.isArray(items), len = isA ? items.length : items.total; for (let i = 0; i < len; i++) { let x, y; if (isA) { x = items[0]; y = items[1]; } else { let offs = items, axis = offs.axis, sign = axis.startsWith('-') ? -1 : 1; x = axis.endsWith('x') ? (offs.ox + sign * i * (frames.w + (offs.split || 0))) : offs.ox; y = axis.endsWith('y') ? (offs.oy + sign * i * (frames.h + (offs.split || 0))) : offs.oy; } frs.push({ src: frames.src, w: frames.w, h: frames.h, x: x, y: y }); } return frs; } } util.Images = Images; })(util = JS.util || (JS.util = {})); })(JS || (JS = {})); var Images = JS.util.Images; var JS; (function (JS) { let an; (function (an) { class FrameAnimInit extends an.AnimInit { } an.FrameAnimInit = FrameAnimInit; class FrameAnim extends an.Anim { constructor(cfg) { super(Jsons.union(new FrameAnimInit(), cfg)); this._frames = []; this._fi = -1; this._lt = 0; this._frames = Images.parseFrames(this._cfg.frames); } _updateImage(el, fr) { let json = { backgroundImage: `url("${fr.src}")`, backgroundPosition: `-${fr.x}px -${fr.y}px`, width: fr.w != void 0 ? (fr.w + 'px') : null, height: fr.h != void 0 ? (fr.h + 'px') : null }; el.css(json); } _reset() { super._reset(); this._fi = -1; } _resetTargets() { let fn = this._cfg.onUpdateImage || this._updateImage, i = this._cfg.direction == 'backward' ? this._frames.length - 1 : 0; this._targets.forEach(ta => { fn(ta, this._frames[i]); }); } _updateFrame(dt) { let m = this, c = m._cfg, size = m._frames.length, fn = c.onUpdateImage || m._updateImage; this._targets.forEach(ta => { fn(ta, m._frames[m._fi]); m._dir == 'forward' ? m._fi++ : m._fi--; }); } _setupTimer() { super._setupTimer(); let m = this, c = m._cfg, r = m._timer, size = m._frames.length; r.on('looping', (e, loop) => { if ((loop - 1) % size == 0) { if (loop > 1 && c.direction == 'alternate') m._dir = m._dir == 'backward' ? 'forward' : 'backward'; m._fi = m._dir == 'backward' ? size - 1 : 0; m._lt = e.timeStamp; m._bus.fire('looping', [(loop - 1) / size + 1]); } m._bus.fire('updating', [e.timeStamp - m._lt, c.duration]); }); r.on('looped', (e, loop) => { m._bus.fire('updated', [e.timeStamp - m._lt, c.duration]); if (loop % size == 0) { m._loop = loop / size; m._bus.fire('looped', [m._loop]); } }); } play() { let m = this, c = m._cfg, l = c.loop, maxLoop = l == false || l < 0 ? 0 : (l === true ? Infinity : l), framesSize = m._frames.length; return Promises.create(function () { if (m.isRunning() || m._frames.length == 0) this.resolve(false); m._loop = 0; if (!m._timer) { m._timer = new Timer((t) => { m._updateFrame(t); }, { intervalMode: 'BF', delay: c.delay || 0, loop: maxLoop * framesSize, interval: (c.duration + c.endDelay) / framesSize }); m._setupTimer(); } m._timer.on('finished', () => { this.resolve(true); }); m._timer.start(); }); } } an.FrameAnim = FrameAnim; })(an = JS.an || (JS.an = {})); })(JS || (JS = {})); var FrameAnimInit = JS.an.FrameAnimInit; var FrameAnim = JS.an.FrameAnim; var JS; (function (JS) { let an; (function (an_1) { let J = Jsons, first = (a) => { return a.length == 0 ? null : a[0]; }, last = (a) => { return a.length == 0 ? null : a[a.length - 1]; }; class TimelineInit { constructor() { this.duration = 1000; this.delay = 0; this.endDelay = 0; this.autoreset = false; } } an_1.TimelineInit = TimelineInit; class Timeline { constructor(cfg) { this._seqAnims = []; this._synAnims = []; this._bus = new EventBus(this); this._isRunning = false; this._seqFinished = false; this._synFinished = false; this._cfg = J.union(new TimelineInit(), cfg); this._targets = []; let els = this._tars(this._cfg.targets); els.forEach(el => { this._targets.add(el); }); } on(ev, fn) { this._bus.on(ev, fn); return this; } off(ev) { this._bus.off(ev); return this; } _tars(t) { if (Types.isArrayLike(t)) { if (t instanceof NodeList) return Arrays.newArray(t); let as = []; t.forEach((a) => { typeof a == 'string' ? as.add(Arrays.newArray($L(a))) : as.add(a); }); return as; } else if (typeof t == 'string') { return Arrays.newArray($L(t)); } else if (t instanceof HTMLElement) { return [t]; } return t instanceof Object ? [t] : []; } add(a, start) { let c = this._cfg; a = J.union({ targets: this._targets, duration: c.duration, endDelay: c.endDelay, autoreset: c.autoreset }, a, { delay: (start || 0) + (a.delay || c.delay || 0) }); let anim = (a.type == 'tween' ? new an_1.TweenAnim(a) : new an_1.FrameAnim(a)); if (this._synAnims.length == 0 || start != void 0) { this._synAnims.add(anim); } else { let anims = this._seqAnims, lastAnim; if (anims.length < 1) { lastAnim = first(this._synAnims); } else { lastAnim = anims[anims.length - 1]; } lastAnim.on('finished', () => { anim.play(); }); this._seqAnims.add(anim); } return this; } _resolve(ctx, f) { if (f) this._isRunning = false; ctx.resolve(f); } play() { let m = this; return Promises.create(function () { if (m._isRunning) m._resolve(this, false); m._isRunning = true; m._seqFinished = false; m._synFinished = false; m._bus.fire('starting'); if (m._synAnims.length == 0) { m._bus.fire('finished'); m._resolve(this, false); } let lastAnim = last(m._seqAnims); if (lastAnim) lastAnim.on('finished', () => { m._seqFinished = true; if (m._synFinished) { m._bus.fire('finished'); m._resolve(this, true); } }); let plans = []; m._synAnims.forEach(an => { plans.push(Promises.createPlan(function () { an.play().then(() => { this.resolve(); }); })); }); Promises.all(plans).then(() => { m._synFinished = true; if (m._seqFinished) { m._bus.fire('finished'); m._resolve(this, true); } }); }); } } an_1.Timeline = Timeline; })(an = JS.an || (JS.an = {})); })(JS || (JS = {})); var TimelineInit = JS.an.TimelineInit; var Timeline = JS.an.Timeline; var JS; (function (JS) { let an; (function (an) { let J = Jsons; class TweenAnimInit extends an.AnimInit { constructor() { super(...arguments); this.easing = 'LINEAR'; this.round = 3; } } an.TweenAnimInit = TweenAnimInit; let ValidTransforms = ['translateX', 'translateY', 'translateZ', 'rotate', 'rotateX', 'rotateY', 'rotateZ', 'scale', 'scaleX', 'scaleY', 'scaleZ', 'skew', 'skewX', 'skewY', 'perspective', 'matrix', 'matrix3d'], has = (s, w) => { return s.indexOf(w) > -1; }, isDom = (a) => { return a.nodeType || a instanceof SVGElement; }, parseEasingParameters = (string) => { var match = /\(([^)]+)\)/.exec(string); return match ? match[1].split(',').map(function (p) { return parseFloat(p); }) : []; }, getAnimationType = (el, key) => { if (isDom(el) && el.hasAttribute(key)) return 'attribute'; if (isDom(el) && ValidTransforms.indexOf(key) > -1) return 'transform'; if (isDom(el) && key !== 'transform' && key in el.style) return 'css'; return 'property'; }, getTargetVal = (key, el) => { let type = getAnimationType(el, key), n; if (type == 'property') { n = el[key]; } else if (type == 'attribute') { n = el.attr(key); } else if (type == 'css') { n = el.css(key); } else if (type == 'transform' && ValidTransforms.indexOf(key) > -1) { n = getTransformValue(el, key); } return { key: key, type: type, val: n || '0' }; }, parseTransform = (el) => { if (!isDom(el)) { return; } let str = el.style.transform || '', reg = /(\w+)\(([^)]*)\)/g, transforms = new Map(), m; while (m = reg.exec(str)) { transforms.set(m[1], m[2]); } return transforms; }, getTransformUnit = (key) => { if (has(key, 'translate') || key === 'perspective') return 'px'; if (has(key, 'rotate') || has(key, 'skew')) return 'deg'; return null; }, getTransformValue = (el, key) => { return parseTransform(el).get(key) || defaultTransformValue(key); }, defaultTransformValue = (key) => { return has(key, 'scale') ? '1' : 0 + getTransformUnit(key); }, setTargetVals = (kvs, el) => { let trans = []; kvs.forEach((kv, i) => { let type = kv.type, v = `${kv.val}`; if (type == 'property') { el[kv.key] = kv.val; } else if (type == 'attribute') { el.attr(kv.key, v); } else if (type == 'css') { el.css(kv.key, v); } else if (type == 'transform') { trans.add(i); } }); let s = ''; trans.forEach(j => { let kv = kvs[j]; s += `${kv.key}(${kv.val})`; }); if (s) el.style.transform = s; }, degUnit = (key, v) => { if (typeof v !== 'string') return v + ''; if (key.startsWith('rotate') || key.startsWith('skew')) { if (v.endsWith('rad')) return (parseFloat(v) * 180 / Math.PI) + 'deg'; if (v.endsWith('turn')) return (parseFloat(v) * 360) + 'deg'; return v; } else return v; }, setTargetVal = (val, key, type, el) => { if (type == 'property') { el[key] = val; } else if (type == 'attribute') { el.attr(key, val == void 0 ? val : (val + '')); } else if (type == 'css') { el.css(key, val); } }; class TweenAnim extends an.Anim { constructor(cfg) { super(Jsons.union(new TweenAnimInit(), cfg)); this._iniValues = []; } _getValues(ta) { let a = []; Jsons.forEach(this._cfg.keys, (v, k) => { a.add(getTargetVal(k, ta)); }); return a; } _saveIniValues() { if (this._iniValues.length == 0) { this._iniValues = []; this._targets.forEach(ta => { this._iniValues.push(this._getValues(ta)); }); } } _resetTargets() { if (this._iniValues.length >= this._targets.length) this._targets.forEach((ta, i) => { let kvs = this._iniValues[i]; setTargetVals(kvs, ta); }); } _calc(from, to, t, d, target, i, total) { let cfg = this._cfg, b, c, n; if (this._dir == 'forward') { b = from; c = to - from; } else { b = to; c = from - to; } if (typeof cfg.easing == 'string') { let fn = an.Easings[cfg.easing], args = [t, b, c, d]; if (!Types.isFunction(fn)) { let name = cfg.easing.split('(')[0], a = parseEasingParameters(cfg.easing); fn = an.Easings[name]; args.add(a); } n = fn.apply(null, args); } else { let fn = cfg.easing.call(null, target, i, total); n = fn(t, b, c, d); } return n.round(cfg.round); } _calcColor(el, i, total, key, type, from, to, t, d) { let fromCol = CssTool.convertToRGB(from), toCol = CssTool.convertToRGB(to), newR = this._calc(fromCol.r, toCol.r, t, d, el, i, total), newG = this._calc(fromCol.g, toCol.g, t, d, el, i, total), newB = this._calc(fromCol.b, toCol.b, t, d, el, i, total), newCol = CssTool.rgbString({ r: newR, g: newG, b: newB }); setTargetVal(newCol, key, type, el); } _calcPercent(el, i, total, key, type, from, to, t, d) { let newV = this._calc(parseFloat(from), parseFloat(to), t, d, el, i, total); setTargetVal(newV + '%', key, type, el); } _calcNormal(el, i, total, key, type, from, to, t, d) { setTargetVal(this._calcNormalVal(el, i, total, key, from, to, t, d), key, type, el); } _calcNormalVal(el, i, total, key, from, to, t, d) { let toVal = Types.isNumber(to) ? to : CssTool.numberOf(degUnit(key, CssTool.calcValue(to, from))); return this._calc(CssTool.numberOf(degUnit(key, from)), toVal, t, d, el, i, total); } _updateTargets(t) { let total = this._targets.length, d = this._cfg.duration; this._targets.forEach((ta, i) => { let trans = ''; Jsons.forEach(this._cfg.keys, (v, k) => { let oKV = this._iniValues[i].find((v) => { return v.key == k; }), newVal, oldVal; if (Types.isArray(v)) { oldVal = v[0]; newVal = v[1]; } else if (Types.isFunction(v)) { let rst = v.call(null, ta, i, total); if (Types.isArray(rst)) { oldVal = rst[0]; newVal = rst[1]; } else { oldVal = oKV.val; newVal = rst; } } else { oldVal = oKV.val; newVal = v; } if (CssTool.isColor(newVal)) { this._calcColor(ta, i, total, k, oKV.type, oldVal, newVal, t, d); } else if (Types.isString(newVal) && newVal.endsWith('%')) { this._calcPercent(ta, i, total, k, oKV.type, oldVal, newVal, t, d); } else if (oKV.type == 'transform') { let val = this._calcNormalVal(ta, i, total, k, oldVal, newVal, t, d); v = CssTool.normValue(val, defaultTransformValue(k), getTransformUnit(k)); trans += ` ${k}(${v})`; } else this._calcNormal(ta, i, total, k, oKV.type, oldVal, newVal, t, d); }); if (trans) ta.style.transform = trans; }); } seek(dt) { if (this._iniValues.length == 0) { this._targets.forEach(ta => { this._iniValues.push(this._getValues(ta)); }); } this._updateTargets(dt); } _setupTimer() { super._setupTimer(); let T = this, c = T._cfg, r = T._timer; r.on('looping', (e, loop) => { if (loop > 1 && c.direction == 'alternate') T._dir = T._dir == 'backward' ? 'forward' : 'backward'; T._bus.fire('looping', [loop]); }); r.on('looped', (e, loop) => { T._loop = loop; T._bus.fire('looped', [loop]); }); } _prepare() { let T = this, c = T._cfg; if (!T._timer) { T._timer = new an.AnimTimer((t) => { T._updateTargets(t); }, { delay: c.delay, endDelay: c.endDelay, duration: c.duration, loop: c.loop }); T._setupTimer(); } } play() { let T = this, c = T._cfg; return Promises.create(function () { if (T.isRunning()) this.resolve(false); T._prepare(); T._timer.on('finished', () => { this.resolve(true); }); T._saveIniValues(); T._timer.start(); }); } } an.TweenAnim = TweenAnim; })(an = JS.an || (JS.an = {})); })(JS || (JS = {})); var TweenAnimInit = JS.an.TweenAnimInit; var TweenAnim = JS.an.TweenAnim; Promise.prototype.always = function (fn) { return this.then((t1) => { return fn.call(this, t1, true); }).catch((t2) => { return fn.call(this, t2, false); }); }; var JS; (function (JS) { let core; (function (core) { let AS = Array.prototype.slice, newArray = (a, from) => { return a == void 0 ? [] : AS.apply(a, [from == void 0 ? 0 : from]); }; class Promises { static create(fn, ...args) { return new Promise((resolve, reject) => { fn.apply({ resolve: resolve, reject: reject }, newArray(arguments, 1)); }); } static createPlan(fn) { return function () { return Promises.create.apply(Promises, [fn].concat(Array.prototype.slice.apply(arguments))); }; } static newPlan(p, args, ctx) { return () => { return p.apply(ctx || p, args); }; } static resolvePlan(v) { return () => { return Promise.resolve(v); }; } static rejectPlan(v) { return () => { return Promise.reject(v); }; } static order(ps) { var seq = Promise.resolve(); ps.forEach(plan => { seq = seq.then(plan); }); return seq; } static all(ps) { var a = []; ps.forEach(task => { a.push(task()); }); return Promise.all(a); } static race(ps) { var a = []; ps.forEach(task => { a.push(task()); }); return Promise.race(a); } } core.Promises = Promises; })(core = JS.core || (JS.core = {})); })(JS || (JS = {})); var Promises = JS.core.Promises; var JS; (function (JS) { let core; (function (core) { let D, _head = () => { return D.querySelector('head'); }, _uncached = (u) => { return `${u}${u.indexOf('?') < 0 ? '?' : '&'}_=${new Date().getTime()}`; }, _loading = (k, a, b) => { if (!a) { k['onreadystatechange'] = () => { if (k['readyState'] == 'loaded' || k['readyState'] == 'complete') b(); }; k.onload = k.onerror = b; } }; if (self['HTMLElement']) D = document; class Loader { static css(url, async = false, uncached) { if (!url) return Promise.reject(null); return core.Promises.create(function () { let k = D.createElement('link'), back = () => { k.onload = k.onerror = k['onreadystatechange'] = null; k = null; this.resolve(url); }; k.type = 'text/css'; k.rel = 'stylesheet'; k.charset = 'utf-8'; _loading(k, async, back); k.href = uncached ? _uncached(url) : url; _head().appendChild(k); if (async) back(); }); } static js(url, async = false, uncached) { if (!url) return Promise.reject(null); return core.Promises.create(function () { let s = D.createElement('script'), back = () => { s.onload = s.onerror = s['onreadystatechange'] = null; s = null; this.resolve(url); }; s.type = 'text/javascript'; s.async = async; _loading(s, async, back); s.src = uncached ? _uncached(url) : url; _head().appendChild(s); if (async) back(); }); } } core.Loader = Loader; })(core = JS.core || (JS.core = {})); })(JS || (JS = {})); var Loader = JS.core.Loader; var JS; (function (JS) { JS.version = '2.7.0'; function config(d, v) { let l = arguments.length; if (l == 0) return _cfg; if (!d) return; if (typeof d === 'string') { if (l == 1) { return _cfg[d]; } else { _cfg[d] = v; return; } } else { for (let k in d) { if (d.hasOwnProperty(k)) _cfg[k] = d[k]; } } } JS.config = config; let P = Promises, _cfg = {}, _ldd = {}, _ts = (u) => { let c = JS.config('cachedImport'); if (c === true) return u; let s = '_=' + (c ? c : '' + Date.now()); return u.lastIndexOf('?') > 0 ? `${u}&${s}` : `${u}?${s}`; }, _min = (u, t) => { if (JS.config('minImport')) { if (u.endsWith('.min.' + t)) return u; if (u.endsWith('.' + t)) return u.slice(0, u.length - t.length - 1) + '.min.' + t; } else return u; }, _impLib = (v) => { let a = v.endsWith('#async'), n = a ? v.slice(0, v.length - 6) : v, c = JS.config('libs')[n]; if (c) { let ps = typeof c == 'string' ? [c] : c, tasks = []; ps.forEach(path => { if (path.startsWith('$')) { tasks.push(_impLib(path.slice(1))); } else { tasks.push(_impFile(path + (a ? '#async' : ''))); } }); return P.newPlan(P.order, [tasks]); } else { console.error('Not found the <' + n + '> library in JSDK settings.'); return P.resolvePlan(null); } }, _impFile = (s) => { let u = s; if (s.startsWith('!')) { let jr = JS.config('jsdkRoot'); jr = jr ? jr : (JS.config('libRoot') + '/jsdk/' + JS.version); u = jr + s.slice(1); } else if (s.startsWith('~')) { u = JS.config('libRoot') + s.slice(1); } let us = u.split('#'), len = us.length, u0 = us[0], ayc = len > 1 && us[1] == 'async'; if (_ldd[u0]) return P.resolvePlan(null); _ldd[u0] = 1; if (u0.endsWith('.js')) { return P.newPlan(Loader.js, [_ts(_min(u0, 'js')), ayc]); } else if (u0.endsWith('.css')) { return P.newPlan(Loader.css, [_ts(_min(u0, 'css')), ayc]); } }; function imports(url) { if (JS.config('closeImport')) return Promise.resolve(); let us = typeof url === 'string' ? [url] : url, tasks = []; us.forEach(uri => { tasks.push(uri.startsWith('$') ? _impLib(uri.slice(1)) : _impFile(uri)); }); return P.order(tasks); } JS.imports = imports; })(JS || (JS = {})); var JS; (function (JS) { let lang; (function (lang) { let Type; (function (Type) { Type["null"] = "null"; Type["undefined"] = "undefined"; Type["string"] = "string"; Type["boolean"] = "boolean"; Type["number"] = "number"; Type["date"] = "date"; Type["array"] = "array"; Type["json"] = "json"; Type["object"] = "object"; Type["function"] = "function"; Type["class"] = "class"; Type["symbol"] = "symbol"; })(Type = lang.Type || (lang.Type = {})); })(lang = JS.lang || (JS.lang = {})); })(JS || (JS = {})); var Type = JS.lang.Type; var JS; (function (JS) { let util; (function (util) { let _of = function (a, s) { return typeof a === s; }, _is = function (a, s) { return toString.call(a) === `[object ${s}]`; }, _isKlass = function (obj) { if (typeof obj != 'function') return false; let proto = obj.prototype; if (proto === undefined || proto.constructor !== obj) return false; if (Object.getOwnPropertyNames(proto).length >= 2) return true; var str = obj.toString(); if (str.slice(0, 5) == "class") return true; if (/^function\s+\(|^function\s+anonymous\(/.test(str)) return false; if (/\b\(this\b|\bthis[\.\[]\b/.test(str)) { if (/classCallCheck\(this/.test(str)) return true; return /^function\sdefault_\d+\s*\(/.test(str); } return false; }, _superklass = (klass) => { if (Object === klass) return null; let sup = Object.getPrototypeOf(klass); return Object.getPrototypeOf(Object) === sup ? Object : sup; }; class Types { static isSymbol(o) { return _of(o, 'symbol'); } static isArguments(o) { return _is(o, 'Arguments'); } static isNaN(n) { return n != null && isNaN(n); } static isNumber(n) { return _of(n, 'number'); } static isNumeric(n) { return (this.isNumber(n) || this.isString(n)) && !isNaN(n - parseFloat(n)); } static isFloat(n) { return Number(n).isFloat(); } static isInt(n) { return Number(n).isInt(); } static isBoolean(obj) { return _of(obj, 'boolean'); } static isString(obj) { return _of(obj, 'string'); } static isDate(obj) { return _is(obj, 'Date'); } static isDefined(obj) { return obj != void 0; } static isNull(obj) { return obj === null; } static isUndefined(obj) { return obj === void 0; } static isObject(obj) { return _is(obj, 'Object'); } static isJsonObject(obj) { let OP = Object.prototype; if (!obj || OP.toString.call(obj) !== '[object Object]') return false; let proto = Object.getPrototypeOf(obj); if (!proto) return true; let ctor = OP.hasOwnProperty.call(proto, 'constructor') && proto.constructor, fnToString = Function.prototype.toString; return typeof ctor === 'function' && fnToString.call(ctor) === fnToString.call(Object); } static isArray(obj) { return Array.isArray(obj) || obj instanceof Array; } static isArrayLike(obj) { if (this.isString(obj)) return false; let l = obj && obj['length'] || null; return typeof l == 'number' && l >= 0 && l <= Number.MAX_SAFE_INTEGER; } static isError(obj) { return _of(obj, 'Error'); } static isFile(obj) { return _is(obj, 'File'); } static isFormData(obj) { return _is(obj, 'FormData'); } static isBlob(obj) { return _is(obj, 'Blob'); } static isFunction(fn, pure) { return _of(fn, 'function') && (!pure ? true : !this.equalKlass(fn)); } static isRegExp(obj) { return _is(obj, 'RegExp'); } static isArrayBuffer(obj) { return _is(obj, 'ArrayBuffer'); } static isTypedArray(value) { return value && this.isNumber(value.length) && /^\[object (?:Uint8|Uint8Clamped|Uint16|Uint32|Int8|Int16|Int32|Float32|Float64)Array]$/.test(toString.call(value)); } static isElement(el) { return el && typeof el === 'object' && (el.nodeType === 1 || el.nodeType === 9); } static isWindow(el) { return el != null && el === el.window; } static isKlass(obj, klass) { if (!this.ofKlass(obj, klass)) return false; retur