UNPKG

react-native-reanimated

Version:

More powerful alternative to Animated library for React Native.

68 lines (57 loc) 1.55 kB
'use strict'; export interface ReanimatedWebTransformProperties { translateX?: string; translateY?: string; rotate?: string; rotateX?: string; rotateY?: string; scale?: number | string; scaleX?: number; scaleY?: number; perspective?: string; skew?: string; skewX?: string; } interface AnimationStyle { opacity?: number; transform?: ReanimatedWebTransformProperties[]; } export interface AnimationData { name: string; style: Record<number, AnimationStyle>; duration: number; } export interface TransitionData { translateX: number; translateY: number; scaleX: number; scaleY: number; reversed?: boolean; } export function convertAnimationObjectToKeyframes( animationObject: AnimationData ) { let keyframe = `@keyframes ${animationObject.name} { `; for (const [timestamp, style] of Object.entries(animationObject.style)) { keyframe += `${timestamp}% { `; for (const [property, values] of Object.entries(style)) { if (property !== 'transform') { keyframe += `${property}: ${values}; `; continue; } keyframe += `transform:`; values.forEach((value: ReanimatedWebTransformProperties) => { for (const [ transformProperty, transformPropertyValue, ] of Object.entries(value)) { keyframe += ` ${transformProperty}(${transformPropertyValue})`; } }); keyframe += `; `; // Property end } keyframe += `} `; // Timestamp end } keyframe += `} `; // Keyframe end return keyframe; }