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]); 
 | 
        }; 
 | 
    } 
 | 
} 
 |