123456789101112131415161718192021222324252627 |
- import { cubicAt, cubicRootAt } from '../core/curve';
- import { trim } from '../core/util';
- const regexp = /cubic-bezier\(([0-9,\.e ]+)\)/;
- export function createCubicEasingFunc(cubicEasingStr: string) {
- const cubic = cubicEasingStr && regexp.exec(cubicEasingStr);
- if (cubic) {
- const points = cubic[1].split(',');
- const a = +trim(points[0]);
- const b = +trim(points[1]);
- const c = +trim(points[2]);
- const d = +trim(points[3]);
- if (isNaN(a + b + c + d)) {
- return;
- }
- const roots: number[] = [];
- return (p: number) => {
- return p <= 0
- ? 0 : p >= 1
- ? 1
- : cubicRootAt(0, a, c, 1, p, roots) && cubicAt(0, b, d, 1, roots[0]);
- };
- }
- }
|