| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- import getEasing from './getEasing';
- import presets, { PresetsItem } from './presets';
- import shouldUseBezier from './shouldUseBezier';
- export interface Value {
- easing: string;
- duration: number | string;
- }
- export interface DefaultConfig extends PresetsItem {
- precision: number;
- }
- export interface Config {
- easing?: string;
- duration?: number | string;
- delay?: string;
- }
- export interface Wrapped extends DefaultConfig, Config {
- done: boolean;
- val?: Value;
- }
- const defaultConfig: DefaultConfig = {
- ...presets.default,
- precision: 0.01,
- };
- export default function wrapValue(val: Value, config: Config = {}) {
- if (shouldUseBezier(config)) {
- const easing = getEasing(config.easing);
- const duration = typeof config.duration === 'number' && config.duration > 0 ? config.duration : 1000;
- config = { ...config, easing, duration };
- }
- let wrapped: Wrapped = { ...defaultConfig, ...config, done: false };
- if (val && typeof val === 'object' && 'val' in val) {
- if (shouldUseBezier(val)) {
- const easing = getEasing(val.easing);
- const duration = typeof val.duration === 'number' && val.duration > 0 ?
- val.duration :
- parseInt(config.duration as string) || 1000;
- val = { ...val, easing, duration };
- }
- wrapped = { ...wrapped, ...val };
- } else {
- wrapped = { ...wrapped, val };
- }
- return wrapped;
- }
|