All files pathfinder.js

15.79% Statements 12/76
17.39% Branches 4/23
0% Functions 0/11
18.46% Lines 12/65

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88  1x                     1x 1x             1x         1x 1x 1x 1x 1x           1x                                 1x                                                       1x              
"use strict";
var __assign = (this && this.__assign) || function () {
    __assign = Object.assign || function(t) {
        for (var s, i = 1, n = arguments.length; i < n; i++) {
            s = arguments[i];
            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
                t[p] = s[p];
        }
        return t;
    };
    return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
var keyframes_1 = require("./keyframes");
function getCirclePoint(radians, radius, center) {
    return {
        x: (center.x + radius * Math.cos(radians)),
        y: (center.y + radius * Math.sin(radians)),
    };
}
var coord = function (x, y) {
    if (x === void 0) { x = 0; }
    if (y === void 0) { y = 0; }
    return { x: x, y: y };
};
var B1 = function (t) { return t * t * t; };
var B2 = function (t) { return 3 * t * t * (1 - t); };
var B3 = function (t) { return 3 * t * (1 - t) * (1 - t); };
var B4 = function (t) { return (1 - t) * (1 - t) * (1 - t); };
var getBezier = function (percent, C1, C2, C3, C4) {
    var pos = coord();
    pos.x = C1.x * B1(percent) + C2.x * B2(percent) + C3.x * B3(percent) + C4.x * B4(percent);
    pos.y = C1.y * B1(percent) + C2.y * B2(percent) + C3.y * B3(percent) + C4.y * B4(percent);
    return pos;
};
exports.bezierPath = function (keyframeOptions, p1, p2, p3, p4) {
    var opts = __assign({ bezierSteps: 100, transform: '' }, keyframeOptions);
    if (p4 == null) {
        p4 = p1;
    }
    var vector1 = coord(p1[0], p1[1]);
    var vector2 = coord(p2[0], p2[1]);
    var vector3 = coord(p3[0], p3[1]);
    var vector4 = coord(p4[0], p4[1]);
    var points = {};
    var step = 1 / opts.bezierSteps;
    for (var i = 0; i <= 1.01; i += step) {
        var newPosition = getBezier(i, vector1, vector4, vector3, vector2);
        points[100 - Math.round(i * 100) + "%"] = { transform: "translate(" + newPosition.x + "px," + newPosition.y + "px) " + opts.transform };
    }
    return Object.assign({}, keyframeOptions, points);
};
exports.circlePath = function (keyframeOptions, center, radius) {
    var opts = __assign({ circleSteps: 100, transform: '' }, keyframeOptions);
    var points = {};
    var newCenter = coord(center[0], center[1]);
    var pieandahalf = 1.5 * Math.PI;
    var notmuchpie = Math.PI / 180;
    var stepPercentage = 100 / opts.circleSteps;
    var stepDegree = 360 / opts.circleSteps;
    for (var i = 0; i <= opts.circleSteps; i += 1) {
        var degree = stepDegree * i;
        var radians = pieandahalf + degree * notmuchpie;
        var newpos = getCirclePoint(radians, radius, newCenter);
        points[Math.round(stepPercentage * i) + "%"] = { transform: "translate(" + newpos.x + "px," + newpos.y + "px) " + opts.transform };
    }
    for (var step in keyframeOptions) {
        var rules = keyframeOptions[step];
        for (var newstep in points) {
            var newrules = points[newstep];
            if (step === newstep) {
                if (newrules.transform && rules.transform) {
                    points[newstep].transform = newrules.transform + " " + rules.transform;
                    break;
                }
            }
        }
    }
    return Object.assign({}, keyframeOptions, points);
};
Iif (keyframes_1.isBrowser) {
    var _window = window;
    if (_window.Keyframes) {
        _window.Keyframes.bezierPath = exports.bezierPath;
        _window.Keyframes.circlePath = exports.circlePath;
    }
}