UNPKG

create-expo-cljs-app

Version:

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

256 lines (230 loc) 6.52 kB
import { EntryAnimationsValues, ExitAnimationsValues, AnimationConfigFunction, IEntryAnimationBuilder, IExitAnimationBuilder, } from '../animationBuilder/commonTypes'; import { Dimensions } from 'react-native'; import { ComplexAnimationBuilder } from '../animationBuilder'; const { width, height } = Dimensions.get('window'); export class SlideInRight extends ComplexAnimationBuilder implements IEntryAnimationBuilder { static createInstance(): SlideInRight { return new SlideInRight(); } build = (): AnimationConfigFunction<EntryAnimationsValues> => { const delayFunction = this.getDelayFunction(); const [animation, config] = this.getAnimationAndConfig(); const delay = this.getDelay(); const callback = this.callbackV; return (values) => { 'worklet'; return { animations: { originX: delayFunction( delay, animation(values.targetOriginX, config) ), }, initialValues: { originX: values.targetOriginX + width, }, callback: callback, }; }; }; } export class SlideInLeft extends ComplexAnimationBuilder implements IEntryAnimationBuilder { static createInstance(): SlideInLeft { return new SlideInLeft(); } build = (): AnimationConfigFunction<EntryAnimationsValues> => { const delayFunction = this.getDelayFunction(); const [animation, config] = this.getAnimationAndConfig(); const delay = this.getDelay(); const callback = this.callbackV; return (values) => { 'worklet'; return { animations: { originX: delayFunction( delay, animation(values.targetOriginX, config) ), }, initialValues: { originX: values.targetOriginX - width, }, callback: callback, }; }; }; } export class SlideOutRight extends ComplexAnimationBuilder implements IExitAnimationBuilder { static createInstance(): SlideOutRight { return new SlideOutRight(); } build = (): AnimationConfigFunction<ExitAnimationsValues> => { const delayFunction = this.getDelayFunction(); const [animation, config] = this.getAnimationAndConfig(); const delay = this.getDelay(); const callback = this.callbackV; return (values) => { 'worklet'; return { animations: { originX: delayFunction( delay, animation(Math.max(values.currentOriginX + width, width), config) ), }, initialValues: { originX: values.currentOriginX, }, callback: callback, }; }; }; } export class SlideOutLeft extends ComplexAnimationBuilder implements IExitAnimationBuilder { static createInstance(): SlideOutLeft { return new SlideOutLeft(); } build = (): AnimationConfigFunction<ExitAnimationsValues> => { const delayFunction = this.getDelayFunction(); const [animation, config] = this.getAnimationAndConfig(); const delay = this.getDelay(); const callback = this.callbackV; return (values) => { 'worklet'; return { animations: { originX: delayFunction( delay, animation(Math.min(values.currentOriginX - width, -width), config) ), }, initialValues: { originX: values.currentOriginX, }, callback: callback, }; }; }; } export class SlideInUp extends ComplexAnimationBuilder implements IEntryAnimationBuilder { static createInstance(): SlideInUp { return new SlideInUp(); } build = (): AnimationConfigFunction<EntryAnimationsValues> => { const delayFunction = this.getDelayFunction(); const [animation, config] = this.getAnimationAndConfig(); const delay = this.getDelay(); const callback = this.callbackV; return (values) => { 'worklet'; return { animations: { originY: delayFunction( delay, animation(values.targetOriginY, config) ), }, initialValues: { originY: -height, }, callback: callback, }; }; }; } export class SlideInDown extends ComplexAnimationBuilder implements IEntryAnimationBuilder { static createInstance(): SlideInDown { return new SlideInDown(); } build = (): AnimationConfigFunction<EntryAnimationsValues> => { const delayFunction = this.getDelayFunction(); const [animation, config] = this.getAnimationAndConfig(); const delay = this.getDelay(); const callback = this.callbackV; return (values) => { 'worklet'; return { animations: { originY: delayFunction( delay, animation(values.targetOriginY, config) ), }, initialValues: { originY: values.targetOriginY + height, }, callback: callback, }; }; }; } export class SlideOutUp extends ComplexAnimationBuilder implements IExitAnimationBuilder { static createInstance(): SlideOutUp { return new SlideOutUp(); } build = (): AnimationConfigFunction<ExitAnimationsValues> => { const delayFunction = this.getDelayFunction(); const [animation, config] = this.getAnimationAndConfig(); const delay = this.getDelay(); const callback = this.callbackV; return (values) => { 'worklet'; return { animations: { originY: delayFunction( delay, animation(Math.min(values.currentOriginY - height, -height), config) ), }, initialValues: { originY: values.currentOriginY }, callback: callback, }; }; }; } export class SlideOutDown extends ComplexAnimationBuilder implements IExitAnimationBuilder { static createInstance(): SlideOutDown { return new SlideOutDown(); } build = (): AnimationConfigFunction<ExitAnimationsValues> => { const delayFunction = this.getDelayFunction(); const [animation, config] = this.getAnimationAndConfig(); const delay = this.getDelay(); const callback = this.callbackV; return (values) => { 'worklet'; return { animations: { originY: delayFunction( delay, animation(Math.max(values.currentOriginY + height, height), config) ), }, initialValues: { originY: values.currentOriginY }, callback: callback, }; }; }; }