UNPKG

create-expo-cljs-app

Version:

Create a react native application with Expo and Shadow-CLJS!

170 lines (146 loc) 4.67 kB
import { withTiming, withSpring } from '../../animation'; import { AnimationFunction, BaseBuilderAnimationConfig, LayoutAnimationAndConfig, } from './commonTypes'; import { EasingFn } from '../../Easing'; import { BaseAnimationBuilder } from './BaseAnimationBuilder'; export class ComplexAnimationBuilder extends BaseAnimationBuilder { easingV?: EasingFn; rotateV?: string; type?: AnimationFunction; dampingV?: number; massV?: number; stiffnessV?: number; overshootClampingV?: number; restDisplacementThresholdV?: number; restSpeedThresholdV?: number; static createInstance: () => ComplexAnimationBuilder; static easing(easingFunction: EasingFn): ComplexAnimationBuilder { const instance = this.createInstance(); return instance.easing(easingFunction); } easing(easingFunction: EasingFn): ComplexAnimationBuilder { this.easingV = easingFunction; return this; } static rotate(degree: string): ComplexAnimationBuilder { const instance = this.createInstance(); return instance.rotate(degree); } rotate(degree: string): ComplexAnimationBuilder { this.rotateV = degree; return this; } static springify(): ComplexAnimationBuilder { const instance = this.createInstance(); return instance.springify(); } springify(): ComplexAnimationBuilder { this.type = withSpring as AnimationFunction; return this; } static damping(damping: number): ComplexAnimationBuilder { const instance = this.createInstance(); return instance.damping(damping); } damping(damping: number): ComplexAnimationBuilder { this.dampingV = damping; return this; } static mass(mass: number): ComplexAnimationBuilder { const instance = this.createInstance(); return instance.mass(mass); } mass(mass: number): ComplexAnimationBuilder { this.massV = mass; return this; } static stiffness(stiffness: number): ComplexAnimationBuilder { const instance = this.createInstance(); return instance.stiffness(stiffness); } stiffness(stiffness: number): ComplexAnimationBuilder { this.stiffnessV = stiffness; return this; } static overshootClamping(overshootClamping: number): ComplexAnimationBuilder { const instance = this.createInstance(); return instance.overshootClamping(overshootClamping); } overshootClamping(overshootClamping: number): ComplexAnimationBuilder { this.overshootClampingV = overshootClamping; return this; } static restDisplacementThreshold( restDisplacementThreshold: number ): ComplexAnimationBuilder { const instance = this.createInstance(); return instance.restDisplacementThreshold(restDisplacementThreshold); } restDisplacementThreshold( restDisplacementThreshold: number ): ComplexAnimationBuilder { this.restDisplacementThresholdV = restDisplacementThreshold; return this; } static restSpeedThreshold( restSpeedThreshold: number ): ComplexAnimationBuilder { const instance = this.createInstance(); return instance.restSpeedThreshold(restSpeedThreshold); } restSpeedThreshold(restSpeedThreshold: number): ComplexAnimationBuilder { this.restSpeedThresholdV = restSpeedThreshold; return this; } getAnimationAndConfig(): LayoutAnimationAndConfig { const duration = this.durationV; const easing = this.easingV; const rotate = this.rotateV; const type = this.type ? this.type : (withTiming as AnimationFunction); const damping = this.dampingV; const mass = this.massV; const stiffness = this.stiffnessV; const overshootClamping = this.overshootClampingV; const restDisplacementThreshold = this.restDisplacementThresholdV; const restSpeedThreshold = this.restSpeedThresholdV; const animation = type; const config: BaseBuilderAnimationConfig = {}; if (type === withTiming) { if (easing) { config.easing = easing; } if (duration) { config.duration = duration; } if (rotate) { config.rotate = rotate; } } else { if (damping) { config.damping = damping; } if (mass) { config.mass = mass; } if (stiffness) { config.stiffness = stiffness; } if (overshootClamping) { config.overshootClamping = overshootClamping; } if (restDisplacementThreshold) { config.restDisplacementThreshold = restDisplacementThreshold; } if (restSpeedThreshold) { config.restSpeedThreshold = restSpeedThreshold; } if (rotate) { config.rotate = rotate; } } return [animation, config]; } }