d4l3k/WebSync

View on GitHub
assets/lib/tween.min.js

Summary

Maintainability
F
3 days
Test Coverage
// tween.js - http://github.com/sole/tween.js
'use strict';
void 0 === Date.now && (Date.now = function() {
    return (new Date).valueOf()
});
var TWEEN = function() {
    var a = [];
    return {
        REVISION: "12",
        getAll: function() {
            return a
        },
        removeAll: function() {
            a = []
        },
        add: function(c) {
            a.push(c)
        },
        remove: function(c) {
            c = a.indexOf(c); - 1 !== c && a.splice(c, 1)
        },
        update: function(c) {
            if (0 === a.length) return !1;
            for (var b = 0, c = void 0 !== c ? c : "undefined" !== typeof window && void 0 !== window.performance && void 0 !== window.performance.now ? window.performance.now() : Date.now(); b < a.length;) a[b].update(c) ? b++ : a.splice(b, 1);
            return !0
        }
    }
}();
TWEEN.Tween = function(a) {
    var c = {}, b = {}, d = {}, e = 1E3,
        g = 0,
        h = !1,
        j = !1,
        q = 0,
        m = null,
        v = TWEEN.Easing.Linear.None,
        w = TWEEN.Interpolation.Linear,
        n = [],
        r = null,
        s = !1,
        t = null,
        u = null,
        k;
    for (k in a) c[k] = parseFloat(a[k], 10);
    this.to = function(a, c) {
        void 0 !== c && (e = c);
        b = a;
        return this
    };
    this.start = function(e) {
        TWEEN.add(this);
        j = !0;
        s = !1;
        m = void 0 !== e ? e : "undefined" !== typeof window && void 0 !== window.performance && void 0 !== window.performance.now ? window.performance.now() : Date.now();
        m += q;
        for (var f in b) {
            if (b[f] instanceof Array) {
                if (0 === b[f].length) continue;
                b[f] = [a[f]].concat(b[f])
            }
            c[f] = a[f];
            !1 === c[f] instanceof Array && (c[f] *= 1);
            d[f] = c[f] || 0
        }
        return this
    };
    this.stop = function() {
        if (!j) return this;
        TWEEN.remove(this);
        j = !1;
        this.stopChainedTweens();
        return this
    };
    this.stopChainedTweens = function() {
        for (var a = 0, b = n.length; a < b; a++) n[a].stop()
    };
    this.delay = function(a) {
        q = a;
        return this
    };
    this.repeat = function(a) {
        g = a;
        return this
    };
    this.yoyo = function(a) {
        h = a;
        return this
    };
    this.easing = function(a) {
        v = a;
        return this
    };
    this.interpolation = function(a) {
        w = a;
        return this
    };
    this.chain = function() {
        n =
            arguments;
        return this
    };
    this.onStart = function(a) {
        r = a;
        return this
    };
    this.onUpdate = function(a) {
        t = a;
        return this
    };
    this.onComplete = function(a) {
        u = a;
        return this
    };
    this.update = function(p) {
        var f;
        if (p < m) return !0;
        !1 === s && (null !== r && r.call(a), s = !0);
        var i = (p - m) / e,
            i = 1 < i ? 1 : i,
            j = v(i);
        for (f in b) {
            var k = c[f] || 0,
                l = b[f];
            l instanceof Array ? a[f] = w(l, j) : ("string" === typeof l && (l = k + parseFloat(l, 10)), "number" === typeof l && (a[f] = k + (l - k) * j))
        }
        null !== t && t.call(a, j);
        if (1 == i)
            if (0 < g) {
                isFinite(g) && g--;
                for (f in d) "string" === typeof b[f] &&
                    (d[f] += parseFloat(b[f], 10)), h && (i = d[f], d[f] = b[f], b[f] = i), c[f] = d[f];
                m = p + q
            } else {
                null !== u && u.call(a);
                f = 0;
                for (i = n.length; f < i; f++) n[f].start(p);
                return !1
            }
        return !0
    }
};
TWEEN.Easing = {
    Linear: {
        None: function(a) {
            return a
        }
    },
    Quadratic: {
        In: function(a) {
            return a * a
        },
        Out: function(a) {
            return a * (2 - a)
        },
        InOut: function(a) {
            return 1 > (a *= 2) ? 0.5 * a * a : -0.5 * (--a * (a - 2) - 1)
        }
    },
    Cubic: {
        In: function(a) {
            return a * a * a
        },
        Out: function(a) {
            return --a * a * a + 1
        },
        InOut: function(a) {
            return 1 > (a *= 2) ? 0.5 * a * a * a : 0.5 * ((a -= 2) * a * a + 2)
        }
    },
    Quartic: {
        In: function(a) {
            return a * a * a * a
        },
        Out: function(a) {
            return 1 - --a * a * a * a
        },
        InOut: function(a) {
            return 1 > (a *= 2) ? 0.5 * a * a * a * a : -0.5 * ((a -= 2) * a * a * a - 2)
        }
    },
    Quintic: {
        In: function(a) {
            return a * a * a *
                a * a
        },
        Out: function(a) {
            return --a * a * a * a * a + 1
        },
        InOut: function(a) {
            return 1 > (a *= 2) ? 0.5 * a * a * a * a * a : 0.5 * ((a -= 2) * a * a * a * a + 2)
        }
    },
    Sinusoidal: {
        In: function(a) {
            return 1 - Math.cos(a * Math.PI / 2)
        },
        Out: function(a) {
            return Math.sin(a * Math.PI / 2)
        },
        InOut: function(a) {
            return 0.5 * (1 - Math.cos(Math.PI * a))
        }
    },
    Exponential: {
        In: function(a) {
            return 0 === a ? 0 : Math.pow(1024, a - 1)
        },
        Out: function(a) {
            return 1 === a ? 1 : 1 - Math.pow(2, -10 * a)
        },
        InOut: function(a) {
            return 0 === a ? 0 : 1 === a ? 1 : 1 > (a *= 2) ? 0.5 * Math.pow(1024, a - 1) : 0.5 * (-Math.pow(2, -10 * (a - 1)) + 2)
        }
    },
    Circular: {
        In: function(a) {
            return 1 -
                Math.sqrt(1 - a * a)
        },
        Out: function(a) {
            return Math.sqrt(1 - --a * a)
        },
        InOut: function(a) {
            return 1 > (a *= 2) ? -0.5 * (Math.sqrt(1 - a * a) - 1) : 0.5 * (Math.sqrt(1 - (a -= 2) * a) + 1)
        }
    },
    Elastic: {
        In: function(a) {
            var c, b = 0.1;
            if (0 === a) return 0;
            if (1 === a) return 1;
            !b || 1 > b ? (b = 1, c = 0.1) : c = 0.4 * Math.asin(1 / b) / (2 * Math.PI);
            return -(b * Math.pow(2, 10 * (a -= 1)) * Math.sin((a - c) * 2 * Math.PI / 0.4))
        },
        Out: function(a) {
            var c, b = 0.1;
            if (0 === a) return 0;
            if (1 === a) return 1;
            !b || 1 > b ? (b = 1, c = 0.1) : c = 0.4 * Math.asin(1 / b) / (2 * Math.PI);
            return b * Math.pow(2, -10 * a) * Math.sin((a - c) *
                2 * Math.PI / 0.4) + 1
        },
        InOut: function(a) {
            var c, b = 0.1;
            if (0 === a) return 0;
            if (1 === a) return 1;
            !b || 1 > b ? (b = 1, c = 0.1) : c = 0.4 * Math.asin(1 / b) / (2 * Math.PI);
            return 1 > (a *= 2) ? -0.5 * b * Math.pow(2, 10 * (a -= 1)) * Math.sin((a - c) * 2 * Math.PI / 0.4) : 0.5 * b * Math.pow(2, -10 * (a -= 1)) * Math.sin((a - c) * 2 * Math.PI / 0.4) + 1
        }
    },
    Back: {
        In: function(a) {
            return a * a * (2.70158 * a - 1.70158)
        },
        Out: function(a) {
            return --a * a * (2.70158 * a + 1.70158) + 1
        },
        InOut: function(a) {
            return 1 > (a *= 2) ? 0.5 * a * a * (3.5949095 * a - 2.5949095) : 0.5 * ((a -= 2) * a * (3.5949095 * a + 2.5949095) + 2)
        }
    },
    Bounce: {
        In: function(a) {
            return 1 -
                TWEEN.Easing.Bounce.Out(1 - a)
        },
        Out: function(a) {
            return a < 1 / 2.75 ? 7.5625 * a * a : a < 2 / 2.75 ? 7.5625 * (a -= 1.5 / 2.75) * a + 0.75 : a < 2.5 / 2.75 ? 7.5625 * (a -= 2.25 / 2.75) * a + 0.9375 : 7.5625 * (a -= 2.625 / 2.75) * a + 0.984375
        },
        InOut: function(a) {
            return 0.5 > a ? 0.5 * TWEEN.Easing.Bounce.In(2 * a) : 0.5 * TWEEN.Easing.Bounce.Out(2 * a - 1) + 0.5
        }
    }
};
TWEEN.Interpolation = {
    Linear: function(a, c) {
        var b = a.length - 1,
            d = b * c,
            e = Math.floor(d),
            g = TWEEN.Interpolation.Utils.Linear;
        return 0 > c ? g(a[0], a[1], d) : 1 < c ? g(a[b], a[b - 1], b - d) : g(a[e], a[e + 1 > b ? b : e + 1], d - e)
    },
    Bezier: function(a, c) {
        var b = 0,
            d = a.length - 1,
            e = Math.pow,
            g = TWEEN.Interpolation.Utils.Bernstein,
            h;
        for (h = 0; h <= d; h++) b += e(1 - c, d - h) * e(c, h) * a[h] * g(d, h);
        return b
    },
    CatmullRom: function(a, c) {
        var b = a.length - 1,
            d = b * c,
            e = Math.floor(d),
            g = TWEEN.Interpolation.Utils.CatmullRom;
        return a[0] === a[b] ? (0 > c && (e = Math.floor(d = b * (1 + c))), g(a[(e -
            1 + b) % b], a[e], a[(e + 1) % b], a[(e + 2) % b], d - e)) : 0 > c ? a[0] - (g(a[0], a[0], a[1], a[1], -d) - a[0]) : 1 < c ? a[b] - (g(a[b], a[b], a[b - 1], a[b - 1], d - b) - a[b]) : g(a[e ? e - 1 : 0], a[e], a[b < e + 1 ? b : e + 1], a[b < e + 2 ? b : e + 2], d - e)
    },
    Utils: {
        Linear: function(a, c, b) {
            return (c - a) * b + a
        },
        Bernstein: function(a, c) {
            var b = TWEEN.Interpolation.Utils.Factorial;
            return b(a) / b(c) / b(a - c)
        },
        Factorial: function() {
            var a = [1];
            return function(c) {
                var b = 1,
                    d;
                if (a[c]) return a[c];
                for (d = c; 1 < d; d--) b *= d;
                return a[c] = b
            }
        }(),
        CatmullRom: function(a, c, b, d, e) {
            var a = 0.5 * (b - a),
                d = 0.5 * (d - c),
                g =
                    e * e;
            return (2 * c - 2 * b + a + d) * e * g + (-3 * c + 3 * b - 2 * a - d) * g + a * e + c
        }
    }
};
window.TWEEN = TWEEN;