@launchmenu/core
Version:
An environment for visual keyboard controlled applets
52 lines • 4.15 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.TransitionBezier = void 0;
const bezier_js_1 = __importDefault(require("bezier-js"));
/**
* A simple bezier curve wrapper that can be used for transitions (x axis represents time)
*/
class TransitionBezier {
/**
* Creates a new transition bezier curve with the given easing
* @param data The transition data
*/
constructor({ bezier, start = 0, duration, inEase = 0.5, outEase = 0.5, }) {
this.bezier =
bezier ||
new bezier_js_1.default({ x: 0, y: 0 }, { x: inEase, y: 0 }, { x: 1 - outEase, y: 1 }, { x: 1, y: 1 });
this.duration = duration;
this.start = start;
}
/**
* Retrieves the value for the given time
* @param time The time
* @returns The value
*/
get(time) {
if (time < this.start)
return 0;
if (time > this.start + this.duration)
return 1;
return this.bezier.get((time - this.start) / this.duration).y;
}
/**
* Creates a new bezier that branches from this bezier with the same velocity
* @param time The time to branch at
* @param data The new bezier data
* @returns The created bezier
*/
branch(time, data) {
time -= this.start;
const bezier = this.bezier.split(time / this.duration).right;
const [p1, p2] = bezier.points;
return new TransitionBezier({
bezier: new bezier_js_1.default({ x: 0, y: 0 }, { x: p2.x - p1.x, y: p2.y - p1.y }, { x: 1 - ((data === null || data === void 0 ? void 0 : data.outEase) || 0.5), y: 1 }, { x: 1, y: 1 }),
...data,
});
}
}
exports.TransitionBezier = TransitionBezier;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJhbnNpdGlvbkJlemllci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9UcmFuc2l0aW9uQmV6aWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDBEQUErQjtBQUUvQjs7R0FFRztBQUNILE1BQWEsZ0JBQWdCO0lBS3pCOzs7T0FHRztJQUNILFlBQW1CLEVBQ2YsTUFBTSxFQUNOLEtBQUssR0FBRyxDQUFDLEVBQ1QsUUFBUSxFQUNSLE1BQU0sR0FBRyxHQUFHLEVBQ1osT0FBTyxHQUFHLEdBQUcsR0FZaEI7UUFDRyxJQUFJLENBQUMsTUFBTTtZQUNQLE1BQU07Z0JBQ04sSUFBSSxtQkFBTSxDQUNOLEVBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQ1osRUFBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUMsRUFDakIsRUFBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFDLEVBQ3RCLEVBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFDLENBQ2YsQ0FBQztRQUNOLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksR0FBRyxDQUFDLElBQVk7UUFDbkIsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPLENBQUMsQ0FBQztRQUNoQyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTyxDQUFDLENBQUM7UUFDaEQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQ1QsSUFBWSxFQUNaLElBT0M7UUFFRCxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNuQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUM3RCxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDL0IsT0FBTyxJQUFJLGdCQUFnQixDQUFDO1lBQ3hCLE1BQU0sRUFBRSxJQUFJLG1CQUFNLENBQ2QsRUFBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUMsRUFDWixFQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBQyxFQUNoQyxFQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFBLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxPQUFPLEtBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBQyxFQUNyQyxFQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBQyxDQUNmO1lBQ0QsR0FBRyxJQUFJO1NBQ1YsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNKO0FBaEZELDRDQWdGQyJ9